<?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>185901</bug_id>
          
          <creation_ts>2018-05-22 21:32:49 -0700</creation_ts>
          <short_desc>Modernize RenderStyleConstants.h - Part 2</short_desc>
          <delta_ts>2018-05-24 18:43:22 -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>
          
          
          <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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1426486</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2018-05-22 21:32:49 -0700</bug_when>
    <thetext>Modernize RenderStyleConstants.h - Part 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426488</commentid>
    <comment_count>1</comment_count>
      <attachid>341069</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2018-05-22 21:43:58 -0700</bug_when>
    <thetext>Created attachment 341069
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426737</commentid>
    <comment_count>2</comment_count>
      <attachid>341130</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2018-05-23 14:30:46 -0700</bug_when>
    <thetext>Created attachment 341130
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426795</commentid>
    <comment_count>3</comment_count>
      <attachid>341150</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2018-05-23 17:02:41 -0700</bug_when>
    <thetext>Created attachment 341150
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426840</commentid>
    <comment_count>4</comment_count>
      <attachid>341163</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2018-05-23 20:20:09 -0700</bug_when>
    <thetext>Created attachment 341163
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426875</commentid>
    <comment_count>5</comment_count>
      <attachid>341176</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2018-05-23 22:36:10 -0700</bug_when>
    <thetext>Created attachment 341176
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427138</commentid>
    <comment_count>6</comment_count>
      <attachid>341176</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-24 18:42:45 -0700</bug_when>
    <thetext>Comment on attachment 341176
Patch

Clearing flags on attachment: 341176

Committed r232178: &lt;https://trac.webkit.org/changeset/232178&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427139</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-24 18:42:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427140</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-24 18:43:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/40542626&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341069</attachid>
            <date>2018-05-22 21:43:58 -0700</date>
            <delta_ts>2018-05-23 14:30:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185901-20180522214356.patch</filename>
            <type>text/plain</type>
            <size>668271</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwMyBAQAorMjAxOC0wNS0yMiAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIE1vZGVybml6ZSBSZW5kZXJTdHlsZUNv
bnN0YW50cy5oIC0gUGFydCAyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODU5MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBWE9iamVjdENhY2hlOjppc05vZGVWaXNpYmxlIGNvbnN0KToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlMaXN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9sOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlz
SWdub3JlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVkaWFUaW1l
RGlzcGxheTo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQgY29uc3QpOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0RPTUhpZGRlbiBjb25zdCk6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRlZmF1bHRPYmplY3RJbmNsdXNpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNVbnZp
c2l0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6aXNWaXNpdGVkIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmlzRGF0
YVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBhbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU0FuaW1hdGlv
bnNGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjp1cGRh
dGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnQpOgorICAgICAgICAqIGFuaW1hdGlvbi9DU1NBbmlt
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQW5pbWF0aW9uOjpzeW5jUHJvcGVydGll
c1dpdGhCYWNraW5nQW5pbWF0aW9uKToKKyAgICAgICAgKiBhbmltYXRpb24vRGVjbGFyYXRpdmVB
bmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVjbGFyYXRpdmVBbmltYXRpb246Omlu
aXRpYWxpemUpOgorICAgICAgICAqIGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdFJlYWRPbmx5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0UmVhZE9ubHk6OmJhY2tpbmdBbmlt
YXRpb25Gb3JDb21wb3NpdGVkUmVuZGVyZXIgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVuZGVyVGV4dERl
Y29yYXRpb25TdHlsZUZsYWdzVG9DU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0
VG9QYWdlQnJlYWspOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvQ29sdW1uQnJlYWspOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6c3R5bGVkRWxlbWVudCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpzdHlsZWRS
ZW5kZXJlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlUmVuZGVyU3R5bGVGb3JQ
cm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpzaGFwZVByb3BlcnR5VmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eWluU3R5
bGUpOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAg
ICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBDYXB0aW9uU2lkZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQ3Vyc29yVHlwZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQ3Vyc29yVmlz
aWJpbGl0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3Bl
cmF0b3IgRGlzcGxheVR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZl
VmFsdWU6Om9wZXJhdG9yIEVtcHR5Q2VsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
cmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgTGlzdFN0eWxlUG9zaXRpb24gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIExpc3RTdHlsZVR5cGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEJyZWFr
QmV0d2VlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3Bl
cmF0b3IgQnJlYWtJbnNpZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZl
VmFsdWU6Om9wZXJhdG9yIFRleHRBbGlnbk1vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRleHRBbGlnbkxhc3QgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRleHRKdXN0aWZ5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0RGVj
b3JhdGlvblN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVl
OjpvcGVyYXRvciBUZXh0VHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
aW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBWaXNpYmlsaXR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBXaGl0ZVNwYWNlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBSdWJ5UG9zaXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRleHRF
bXBoYXNpc0ZpbGwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6
Om9wZXJhdG9yIFRleHRFbXBoYXNpc01hcmsgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFBvaW50ZXJFdmVudHMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEh5cGhlbnMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIExpbmVTbmFwIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBMaW5lQWxp
Z24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9y
IE9yZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVy
YXRvciBCb3JkZXJGaXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFs
dWU6Om9wZXJhdG9yIENvbHVtbkF4aXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJp
bWl0aXZlVmFsdWU6Om9wZXJhdG9yIENvbHVtblByb2dyZXNzaW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBDU1NCb3hUeXBlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0Wm9vbSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUNh
cHRpb25TaWRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2
ZVZhbHVlOjpvcGVyYXRvciBFQ3Vyc29yIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFRGlzcGxheSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUVtcHR5Q2Vs
bCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6
b3BlcmF0b3IgRUxpc3RTdHlsZVBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFTGlzdFN0eWxlVHlwZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3Ig
RVRleHRBbGlnbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRp
dmVWYWx1ZTo6b3BlcmF0b3IgRVRleHRUcmFuc2Zvcm0gY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVWaXNpYmlsaXR5IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRv
ciBFV2hpdGVTcGFjZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmlt
aXRpdmVWYWx1ZTo6b3BlcmF0b3IgRVBvaW50ZXJFdmVudHMgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVCb3JkZXJGaXQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTZWxlY3Rvcjo6cHNldWRvSWQpOgorICAgICAgICAqIGNzcy9DU1NUb1N0eWxl
TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkZp
bGxNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvblBs
YXlTdGF0ZSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW46CisgICAgICAgICog
Y3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRS
dWxlQ29sbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50UnVsZUNvbGxlY3Rvcjo6cnVsZU1hdGNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdCk6CisgICAgICAg
ICogY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmg6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hl
Y2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6Om1hdGNoIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6bWF0Y2hIb3N0UHNldWRvQ2xh
c3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6aGFzU2Nyb2xsYmFyUHNldWRvRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6Om1hdGNoUmVjdXJzaXZlbHkgY29u
c3QpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuaDoKKyAgICAgICAgKiBjc3MvU3R5
bGVCdWlsZGVyQ29udmVydGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRUZXh0QWxpZ24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0Q2xpcFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0U2hhcGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFja0xpc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjc3N0b0xlbmd0aENvbnZlcnNpb25EYXRhV2l0aFRl
eHRab29tRmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydFBhZ2VCcmVha0JldHdlZW4pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0UGFnZUJyZWFrSW5zaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENvbHVtbkJyZWFrQmV0d2Vlbik6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDb2x1bW5CcmVha0luc2lk
ZSk6CisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlSW1hZ2VSZXNvbHV0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbXB1dGVCYXNlU3BlY2lmaWVkRm9udFNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0VGV4dFpvb20pOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjppc1ZhbGlkRGlzcGxheVZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0RGlzcGxh
eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVEaXNw
bGF5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdl
YmtpdFRleHRFbXBoYXNpc1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJD
dXN0b206OmFwcGx5VmFsdWVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRl
ckN1c3RvbTo6ZGV0ZXJtaW5lUnVieVRleHRTaXplTXVsdGlwbGllcik6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVBbHQpOgorICAgICAgICAqIGNzcy9T
dHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxl
Rm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjplcXVpdmFsZW50QmxvY2tEaXNwbGF5KToK
KyAgICAgICAgKFdlYkNvcmU6OmRvZXNOb3RJbmhlcml0VGV4dERlY29yYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YWRqdXN0U3R5bGVGb3JJbnRlckNoYXJhY3RlclJ1
YnkpOgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0RGlzcGxheUNvbnRlbnRzU3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YWRqdXN0U1ZHRWxlbWVudFN0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxlUnVsZXNGb3JFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OmlzQ2FjaGVhYmxlSW5NYXRjaGVkUHJvcGVydGllc0NhY2hlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5TWF0Y2hlZFByb3BlcnRpZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjpQcm9wZXJ0
eTo6YXBwbHkpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJlc29sdmVyOjpTdGF0ZTo6ZWxlbWVudExpbmtTdGF0ZSBjb25zdCk6CisgICAg
ICAgICogY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0b3JDb21waWxlcjo6Y29uc3RydWN0RnJhZ21lbnRzSW50ZXJuYWwpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZVJl
cXVlc3RlZFBzZXVkb0VsZW1lbnRFcXVhbHNUb1NlbGVjdG9yUHNldWRvRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpTZWxlY3RvckNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlTWFya1BzZXVkb1N0eWxlRm9yUHNldWRvRWxlbWVudCk6CisgICAgICAgICogZG9tL0Rv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdHlsZUZvckVsZW1lbnRJ
Z25vcmluZ1BlbmRpbmdTdHlsZXNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
aXNQYWdlQm94VmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VmlzdWFs
bHlPcmRlcmVkKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojppc0ZvY3VzYWJsZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpoYXNEaXNwbGF5Q29udGVudHMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c3RvcmVEaXNwbGF5Q29udGVudHNTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OmJlZm9yZU9yQWZ0ZXJQc2V1ZG9FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OmNvbXB1dGVkU3R5bGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAg
ICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUVkaXRhYmlsaXR5RnJv
bUNvbXB1dGVkU3R5bGUpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjppc1BzZXVkb0VsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
aXNCZWZvcmVQc2V1ZG9FbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Omlz
QWZ0ZXJQc2V1ZG9FbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnBzZXVk
b0lkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmN1c3RvbVBzZXVkb0lkIGNvbnN0
KToKKyAgICAgICAgKiBkb20vUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRp
b246OnVwc3RyZWFtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpkb3duc3Ry
ZWFtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjppc0NhbmRpZGF0ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6cmVuZGVyc0luRGlmZmVyZW50UG9zaXRp
b24gY29uc3QpOgorICAgICAgICAqIGRvbS9Qb3NpdGlvbkl0ZXJhdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBvc2l0aW9uSXRlcmF0b3I6OmlzQ2FuZGlkYXRlIGNvbnN0KToKKyAgICAgICAg
KiBkb20vUHNldWRvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9FbGVtZW50
Ojpwc2V1ZG9FbGVtZW50TmFtZUZvckV2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9F
bGVtZW50OjpQc2V1ZG9FbGVtZW50KToKKyAgICAgICAgKiBkb20vVmlzaXRlZExpbmtTdGF0ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNpdGVkTGlua1N0YXRlOjpkZXRlcm1pbmVMaW5rU3Rh
dGVTbG93Q2FzZSk6CisgICAgICAgICogZG9tL1Zpc2l0ZWRMaW5rU3RhdGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RhdGU6OmRldGVybWluZUxpbmtTdGF0ZSk6CisgICAgICAg
ICogZWRpdGluZy9FZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzU3BlY2lhbEhUTUxF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmlzTm9kZVJlbmRlcmVkKToKKyAgICAgICAgKiBl
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYXNWaXNpYmxlVGV4
dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRCb3gpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlUmVwbGFjZWRFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6c2hvdWxkUmVwcmVzZW50Tm9kZU9mZnNldFpl
cm8pOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6
YWR2YW5jZSk6CisgICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZmluZFN0YXJ0T2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZEVu
ZE9mUGFyYWdyYXBoKToKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9FZGl0b3JJT1MubW06CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRp
bmdEaXJlY3Rpb24pOgorICAgICAgICAqIGh0bWwvSFRNTEFyZWFFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxBcmVhRWxlbWVudDo6aXNGb2N1c2FibGUgY29uc3QpOgorICAgICAg
ICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZUlubmVyVGV4dFN0eWxlKToKKyAgICAg
ICAgKiBodG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE9wdEdyb3VwRWxlbWVudDo6aXNGb2N1c2FibGUgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRN
TE9wdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6
OmlzRm9jdXNhYmxlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6Y3JlYXRlSW5uZXJU
ZXh0U3R5bGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGVj
dGlvblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
OjphZGp1c3RJbm5lclRleHRTdHlsZSBjb25zdCk6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1l
bnRTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmF1
dG9wbGF5UGVybWl0dGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmlzTWFpbkNvbnRlbnRG
b3JQdXJwb3Nlc09mQXV0b3BsYXkpOgorICAgICAgICAqIGh0bWwvUnVieUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UnVieUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6Cisg
ICAgICAgICogaHRtbC9SdWJ5VGV4dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVi
eVRleHRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvc2hh
ZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
Q29udHJvbElubmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmJ1aWxkT2JqZWN0Rm9yRWxlbWVudERhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnBzZXVkb0VsZW1lbnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50
OjpidWlsZE9iamVjdEZvck5vZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTGF5ZXIpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0
cmVlL0xheW91dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6aXNJbmxp
bmVCbG9ja0JveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6aXNCbG9j
a0xldmVsQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94Ojppc0lubGlu
ZUxldmVsQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94Ojppc0Jsb2Nr
Q29udGFpbmVyQm94IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbGVjdEN1cnNvcik6CisgICAgICAgICog
cGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2VhcmNoRm9yTGFiZWxz
QWJvdmVDZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZWFyY2hGb3JMYWJlbHNCZWZv
cmVFbGVtZW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OmNyZWF0ZVNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVZpZXc6OmFkanVzdFNjcm9sbFN0ZXBGb3JGaXhlZENvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0
aW9uL0FuaW1hdGlvbkJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6
cGxheVN0YXRlUGxheWluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNl
Ojp1cGRhdGVQbGF5U3RhdGUpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJh
c2UuaDoKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpibGVuZEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlBbmltYXRpb25XcmFwcGVyTWFwOjpDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXAp
OgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wb3NpdGVBbmltYXRpb246OnVwZGF0ZVRyYW5zaXRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUFuaW1hdGlvbjo6dXBkYXRlS2V5ZnJhbWVBbmltYXRp
b25zKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUFuaW1hdGlvbjo6c3VzcGVuZEFuaW1h
dGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlQW5pbWF0aW9uOjpyZXN1bWVBbmlt
YXRpb25zKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUFuaW1hdGlvbjo6YW5pbWF0ZSk6CisgICAgICAg
ICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6bm9kZVJl
c3BvbmRpbmdUb0NsaWNrRXZlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hbmltYXRpb24vQW5p
bWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbjo6QW5pbWF0aW9uKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjpBbmltYXRpb246OmNsZWFyUGxheVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlv
bjo6ZmlsbE1vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uOjpwbGF5U3Rh
dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uOjpzZXRGaWxsTW9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBbmltYXRpb246OnNldFBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpBbmltYXRpb246OmZpbGxzQmFja3dhcmRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFuaW1hdGlvbjo6ZmlsbHNGb3J3YXJkcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBbmlt
YXRpb246OmluaXRpYWxGaWxsTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb246Omlu
aXRpYWxQbGF5U3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlw
ZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpjcmVhdGVUcmFuc2Zvcm1Bbmlt
YXRpb25zRnJvbUtleWZyYW1lcyk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5k
b3cubW06CisgICAgICAgICgtW1dBS1dpbmRvdyBkdW1wVGlsZXNdKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tOgorICAgICAgICAoV2ViQ29yZTo6aXNMb29r
YWxpa2VDaGFyYWN0ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9DbGlwUGF0aE9wZXJhdGlvbi5o
OgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUJveDo6dmlzaWJsZVRvSGl0VGVzdGluZyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5n
L0lubGluZUZsb3dCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6YWRk
VG9MaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBsYWNlQm94ZXNJbkJs
b2NrRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OmFkZFRleHRC
b3hWaXN1YWxPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWlu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWludEJveERlY29yYXRpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBhaW50TWFzayk6CisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVGbG93Qm94Ojpjb21wdXRlT3ZlckFubm90YXRpb25BZGp1c3RtZW50
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OmNvbXB1dGVVbmRlckFu
bm90YXRpb25BZGp1c3RtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dC
b3g6OmNvbGxlY3RMZWFmQm94ZXNJbkxvZ2ljYWxPcmRlciBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL0lubGluZUZsb3dCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6
OklubGluZUZsb3dCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OmVtcGhhc2lzTWFya0V4aXN0c0FuZElz
QWJvdmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6Y3JlYXRlVGV4dFJ1biBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1BvaW50ZXJFdmVudHNIaXRSdWxlcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQb2ludGVyRXZlbnRzSGl0UnVsZXM6OlBvaW50ZXJFdmVudHNIaXRSdWxlcyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1BvaW50ZXJFdmVudHNIaXRSdWxlcy5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
Y29tcHV0ZVN0YXJ0UG9zaXRpb25EZWx0YUZvckNoaWxkQXZvaWRpbmdGbG9hdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjpwYWludE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6c2hv
dWxkUGFpbnRTZWxlY3Rpb25HYXBzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjphZGp1c3RMb2dpY2FsTGVmdE9mZnNldEZvckxpbmUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OmFkanVzdExvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6aXNDaGlsZEhpdFRlc3RDYW5kaWRhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNvbXB1dGVCbG9ja1ByZWZlcnJlZExvZ2ljYWxXaWR0aHMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmZpcnN0TGluZUJsb2NrIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRGaXJzdExldHRlckJsb2NrKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpnZXRGaXJzdExldHRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6Y3JlYXRlQW5vbnltb3VzQmxvY2tXaXRoU3R5bGVBbmREaXNwbGF5KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjaGlsZEJveElzVW5zcGxpdHRhYmxlRm9y
RnJhZ21lbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29u
c3RydWN0VGV4dFJ1bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0RXhj
bHVkZWRDaGlsZHJlbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRl
cmVyQW5kRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y3JlYXRlQW5v
bnltb3VzQmxvY2sgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojp3aWxsQ3JlYXRlQ29sdW1u
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dEJsb2Nr
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6YXBwbHlCZWZvcmVCcmVhayk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmFwcGx5QWZ0ZXJCcmVhayk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmFkanVzdEZvclVuc3BsaXR0YWJsZUNo
aWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6dXBkYXRlU3R5bGVzRm9y
Q29sdW1uQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojpjb21w
dXRlTG9naWNhbExvY2F0aW9uRm9yRmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2tGbG93Ojpsb3dlc3RJbml0aWFsTGV0dGVyTG9naWNhbEJvdHRvbSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmFkanVzdEZvckJvcmRlckZpdCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmZpdEJvcmRlclRvTGluZXNJZk5lZWRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxpbmVBdEluZGV4IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bGluZUNvdW50IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OmdldEhlaWdodEZvckxpbmVDb3VudCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmNsZWFyVHJ1bmNhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9ja0Zsb3c6OmZpbmRDbG9zZXN0VGV4dEF0QWJzb2x1dGVQb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxpbmVDb3VudEZvclRleHRBdXRvc2l6aW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6c2V0Q29tcHV0ZWRDb2x1bW5D
b3VudEFuZFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6dXBkYXRl
Q29sdW1uUHJvZ3Jlc3Npb25Gcm9tU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2tGbG93Ojppc1RvcExheW91dE92ZXJmbG93QWxsb3dlZCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmlzTGVmdExheW91dE92ZXJmbG93QWxsb3dlZCBjb25zdCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2tGbG93Ojpjb25zdHJ1Y3RMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
Rmxvdzo6dGV4dEFsaWdubWVudEZvckxpbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2tGbG93Ojp1cGRhdGVMb2dpY2FsV2lkdGhGb3JBbGlnbm1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25z
Rm9yTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpleHBhbnNpb25CZWhhdmlvckZvcklubGluZVRl
eHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5l
RGlyZWN0aW9uUG9zaXRpb25zRm9yU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9ja0Zsb3c6OmxheW91dFJ1bnNBbmRGbG9hdHNJblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrRmxvdzo6Y2hlY2tGbG9hdEluQ2xlYW5MaW5lKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrRmxvdzo6ZGVsZXRlRWxsaXBzaXNMaW5lQm94ZXMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpjaGVja0xpbmVzRm9yVGV4dE92ZXJmbG93KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6c3RhcnRBbGlnbmVkT2Zmc2V0Rm9yTGlu
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6Omhhc1ZlcnRpY2FsU2Nyb2xsYmFyV2l0aEF1dG9CZWhhdmlvciBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Omhhc0hvcml6b250YWxTY3JvbGxiYXJXaXRo
QXV0b0JlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmlzQ2FuZGlkYXRlRm9yT3Bh
cXVlbmVzc1Rlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludE1hc2spOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludENsaXBwaW5nTWFzayk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6OnBvc2l0aW9uTGluZUJveCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEluRnJhZ21lbnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9u
TWFyZ2lucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnNraXBDb250YWlu
aW5nQmxvY2tGb3JQZXJjZW50SGVpZ2h0Q2FsY3VsYXRpb24gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94Ojpwb3NpdGlvbkZvclBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6aXNVbnNwbGl0dGFibGVGb3JQYWdpbmF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94TW9kZWxPYmplY3Q6OmxvY2FsQ2FyZXRSZWN0Rm9yRW1wdHlFbGVtZW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQ291bnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwbGFuQ291bnRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJDb3VudGVyOjpvcmlnaW5hbFRleHQgY29uc3QpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y2hpbGREb2VzTm90QWZmZWN0V2lkdGhPckZsZXhpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRIb3Jpem9udGFsQm94
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6bGF5b3V0
VmVydGljYWxCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRldGFpbHNNYXJrZXI6OnBhaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJFbGVtZW50OjpjcmVhdGVGb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6
Y29tcHV0ZUZpcnN0TGluZVN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVs
ZW1lbnQ6OnByb3BhZ2F0ZVN0eWxlVG9Bbm9ueW1vdXNDaGlsZHJlbik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJFbGVtZW50OjpzdHlsZVdpbGxDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJFbGVtZW50Ojp3aWxsQmVSZW1vdmVkRnJvbVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRWxlbWVudDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRWxlbWVudDo6aXNWaXNpYmxlSW5Eb2N1bWVudFJlY3QgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6Z2V0Q2FjaGVkUHNldWRvU3R5bGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6Z2V0VW5jYWNoZWRQc2V1ZG9TdHlsZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzZWxlY3Rpb25Qc2V1ZG9T
dHlsZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnZpc2libGVUb0hpdFRlc3RpbmcgY29uc3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cGFpbnRPYmplY3QpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUZ1bGxTY3JlZW5TdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZUVtcHR5VHJhY2tzRm9yQXV0
b1JlcGVhdCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpyZXBhaW50T3JNYXJrRm9yTGF5b3V0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlcklubGluZTo6d2lsbEJlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVN0
eWxlT2ZBbm9ueW1vdXNCbG9ja0NvbnRpbnVhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW5saW5lOjp1cGRhdGVBbHdheXNDcmVhdGVMaW5lQm94ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW5saW5lOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmFkZEFubm90YXRlZFJlZ2lvbnMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6UmVuZGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVw
ZGF0ZURlc2NlbmRhbnREZXBlbmRlbnRGbGFncyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6Y3JlYXRlU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlUmVxdWlyZXNT
Y3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVEZWZpbmVzQXV0b21hdGljU2Nyb2xs
YmFyKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVSZWZlcmVuY2VCb3gpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyBjb25zdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUFmdGVyRGVzY2VuZGFudHMpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2Ny
b2xsYmFySGFzRGlzcGxheU5vbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUGx1Z2luIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvckZyYW1l
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYWludE9iamVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjppdGVtT2Zmc2V0Rm9yQWxpZ25tZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RC
b3g6OnBhaW50SXRlbUZvcmVncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJv
eDo6cGFpbnRJdGVtQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94
OjpjcmVhdGVTY3JvbGxiYXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0SXRlbTo6Y29tcHV0ZU1hcmtlclN0eWxl
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjplZmZlY3RpdmVMaXN0TWFya2VyVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpsaXN0TWFya2VyU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6Omxpc3RNYXJrZXJUZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnBhaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnVwZGF0ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGlzdE1hcmtlcjo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6dXBkYXRlTWFyZ2lucyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpzdWZmaXggY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6aXNJbnNpZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGlzdE1hcmtlcjo6Z2V0UmVsYXRpdmVNYXJrZXJSZWN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJN
ZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZWRpYVZv
bHVtZVNsaWRlckNvbnRhaW5lcjo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRl
eHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmxheW91dCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0OjphZGp1
c3RJbm5lclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmlmKToKKyAgICAgICAgKFJlbmRlck1l
bnVMaXN0OjppdGVtU3R5bGUgY29uc3QpOgorICAgICAgICAoUmVuZGVyTWVudUxpc3Q6Om1lbnVT
dHlsZSBjb25zdCk6CisgICAgICAgIChSZW5kZXJNZW51TGlzdDo6Y3JlYXRlU2Nyb2xsYmFyKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xk
ZXI6OmNyZWF0ZUFub255bW91cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFkZEFubm90YXRlZFJlZ2lvbnMp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6aXNBbm9ueW1vdXNCbG9jayBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmlzQmVmb3JlQ29udGVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmlzQWZ0ZXJDb250ZW50IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6
OnNob3VsZFBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjbGlwcGVk
T3ZlcmZsb3dSZWN0Rm9yUmVwYWludCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clJ1YnlCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJ1YnlCYXNlOjp0ZXh0QWxp
Z25tZW50Rm9yTGluZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNl
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyUnVieVJ1bjo6Y3JlYXRlUnVieUJhc2UgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyUnVieVJ1bjo6c3RhdGljQ3JlYXRlUnVieVJ1bik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJSdWJ5UnVuOjpsYXlvdXRCbG9jayk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclJ1YnlUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJ1YnlUZXh0Ojp0ZXh0
QWxpZ25tZW50Rm9yTGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSdWJ5VGV4
dDo6YWRqdXN0SW5saW5lRGlyZWN0aW9uTGluZUJvdW5kcyBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclJ1YnlUZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9s
bGJhci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwc2V1ZG9Gb3JTY3JvbGxiYXJQYXJ0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhcjo6dXBkYXRlU2Nyb2xsYmFyUGFydCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNlYXJjaEZpZWxkOjp1cGRhdGVDYW5jZWxCdXR0b25WaXNpYmlsaXR5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJjaEZpZWxkOjp2aXNpYmlsaXR5Rm9yQ2Fu
Y2VsQnV0dG9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJjaEZpZWxkOjpt
ZW51U3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2VhcmNoRmllbGQ6OmNy
ZWF0ZVNjcm9sbGJhcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlOjp3aWxsSW5zZXJ0VGFibGVTZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlOjpsYXlvdXRDYXB0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
YWJsZTo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpwYWludE9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6YWRqdXN0Qm9yZGVyQm94UmVjdEZv
clBhaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpwYWludE1hc2spOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OnJlY2FsY1NlY3Rpb25zIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpjcmVhdGVUYWJsZVdpdGhTdHlsZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUYWJsZUNlbGw6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRhYmxlQ2VsbDo6cGFpbnRDb2xsYXBzZWRCb3JkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRhYmxlQ2VsbDo6cGFpbnRCYWNrZ3JvdW5kc0JlaGluZENlbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGFibGVDZWxsOjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6cGFpbnRNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRhYmxlQ2VsbDo6Y3JlYXRlVGFibGVDZWxsV2l0aFN0eWxlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVD
b2w6OnVwZGF0ZUZyb21FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ29s
Ojppc0NoaWxkQWxsb3dlZCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q29sLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRhYmxlUm93OjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUYWJsZVJvdzo6cGFpbnRPdXRsaW5lRm9yUm93SWZOZWVkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGFibGVSb3c6OmNyZWF0ZVRhYmxlUm93V2l0aFN0eWxlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6YWRkQ2VsbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUYWJsZVNlY3Rpb246OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2Vj
dGlvbjo6Y3JlYXRlVGFibGVTZWN0aW9uV2l0aFN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpzdHlsZURpZENo
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9n
aWNhbFdpZHRocyk6CisgICAgICAgIChXZWJDb3JlOjphcHBseVRleHRUcmFuc2Zvcm0pOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGV4dEZyYWdtZW50OjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUZXh0RnJhZ21lbnQ6OmJsb2NrRm9yQWNjb21wYW55aW5nRmlyc3RMZXR0ZXIpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjphZGp1c3RNZW51TGlz
dFN0eWxlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpyZW5kZXJlck9ic2N1cmVzQmFja2dyb3VuZCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6
OnNldFdpZGdldCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnN0eWxlRGlkQ2hh
bmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSb290SW5saW5lQm94OjpwYWludEVsbGlwc2lzQm94IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OmxpbmVTbmFwQWRqdXN0bWVudCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjpsaW5lU2VsZWN0aW9uR2FwKToKKyAgICAgICAg
KFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OmNvbXB1dGVDYXJldFJlY3QgY29uc3QpOgorICAgICAg
ICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNp
bXBsZUxpbmVMYXlvdXQ6OmNhblVzZUZvckZvbnRBbmRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNpbXBsZUxpbmVMYXlvdXQ6OmNhblVzZUZvclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNp
bXBsZUxpbmVMYXlvdXQ6OmNvbXB1dGVMaW5lTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGVMaW5lTGF5b3V0Ojp1cGRhdGVMaW5lQ29uc3RyYWlucyk6CisgICAgICAgIChXZWJDb3JlOjpT
aW1wbGVMaW5lTGF5b3V0OjpjcmVhdGVMaW5lUnVucyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGVMaW5lTGF5b3V0Ojp0ZXh0QWxpZ25Gb3JMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBs
ZUxpbmVMYXlvdXQ6OmNsb3NlTGluZUVuZGluZ0FuZEFkanVzdFJ1bnMpOgorICAgICAgICAqIHJl
bmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNpbXBsZUxpbmVMYXlvdXQ6OnBhaW50Rmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVM
aW5lTGF5b3V0OjpoaXRUZXN0Rmxvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVM
YXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVM
aW5lTGF5b3V0OjpUZXh0RnJhZ21lbnRJdGVyYXRvcjo6U3R5bGU6OlN0eWxlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp0ZXh0RGVjb3JhdGlvblN0eWxlVG9TdHJva2VTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50VGV4dERlY29yYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6Y29sbGVjdFN0eWxlc0ZvclJlbmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcv
VGV4dERlY29yYXRpb25QYWludGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvQnJlYWtp
bmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OkJyZWFraW5n
Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OmNsZWFyTGluZUJy
ZWFrSWZGaXRzT25MaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkJyZWFraW5nQ29udGV4dDo6aGFu
ZGxlQlIpOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0OjpoYW5kbGVPdXRPZkZs
b3dQb3NpdGlvbmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkJyZWFraW5nQ29udGV4dDo6aGFuZGxl
VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OmNhbkJyZWFrQXRUaGlz
UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0OjpoYW5kbGVFbmRP
ZkxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9saW5lL0xpbmVJbmxpbmVIZWFkZXJzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpzaG91bGRDb2xsYXBzZVdoaXRlU3BhY2UpOgorICAgICAgICAqIHJl
bmRlcmluZy9saW5lL0xpbmVXaWR0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXdGbG9hdFNo
cmlua3NMaW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL01hdGhPcGVyYXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNYXRoT3BlcmF0b3I6OnBhaW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTEZyYWN0aW9uOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxNYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE1h
dGg6OmxheW91dEJsb2NrKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TE1lbmNsb3NlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE1lbmNsb3NlOjpw
YWludCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJvb3Q6OnBhaW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTFRva2VuOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9C
b3hTaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlUm91bmRlZFJlY3RGb3JCb3hT
aGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnJlZmVyZW5jZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFw
ZU91dHNpZGVJbmZvOjpzZXRSZWZlcmVuY2VCb3hMb2dpY2FsU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFwZU91dHNpZGVJbmZvOjpsb2dpY2FsVG9wT2Zmc2V0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXBlT3V0c2lkZUluZm86OmxvZ2ljYWxMZWZ0T2Zmc2V0IGNvbnN0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQ291bnRlckNvbnRlbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvdW50ZXJDb250ZW50OjpDb3VudGVyQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpD
b3VudGVyQ29udGVudDo6bGlzdFN0eWxlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNyZWF0
ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmNyZWF0ZVN0eWxlSW5oZXJpdGluZ0Zyb21Qc2V1ZG9TdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6Omhhc1VuaXF1ZVBzZXVkb1N0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjpnZXRDYWNoZWRQc2V1ZG9TdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6YWRkQ2FjaGVkUHNldWRvU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5b3V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OnJlcXVpcmVzUGFpbnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omh5
cGhlblN0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6dGV4dEVt
cGhhc2lzTWFya1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
dmlzaXRlZERlcGVuZGVudENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjp0ZXh0RW1waGFzaXNNYXJrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjpzZXRDb2x1bW5TdHlsZXNGcm9tUGFnaW5hdGlvbk1vZGUpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OnNldFN0eWxlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0UlRMT3Jk
ZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmRpc3BsYXkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnZpc2liaWxpdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnRleHRBbGlnbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6dGV4dFRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6d2hpdGVTcGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6ZW1wdHlDZWxscyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6Y2FwdGlvblNpZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omxp
c3RTdHlsZVR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omxpc3RT
dHlsZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjdXJz
b3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omluc2lkZUxpbmsgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmJvcmRlckZpdCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6cG9pbnRlckV2ZW50cyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0RGlzcGxheSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6c2V0T3JpZ2luYWxEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjpzZXRWaXNpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxl
OjpzZXRUZXh0QWxpZ24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRleHRU
cmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRleHREZWNvcmF0
aW9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRleHREZWNvcmF0
aW9uU2tpcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0VGV4dFVuZGVybGlu
ZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXREaXJlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRleHRab29tKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRXaGl0ZVNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjpzZXRFbXB0eUNlbGxzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjpzZXRDYXB0aW9uU2lkZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0
TGlzdFN0eWxlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0TGlzdFN0
eWxlUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0Q3Vyc29yVmlzaWJpbGl0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0SW5zaWRlTGluayk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0SHlwaGVucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6c2V0Qm9yZGVyRml0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpz
ZXRDb2x1bW5BeGlzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRDb2x1bW5Q
cm9ncmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0VGV4dEVtcGhh
c2lzRmlsbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0VGV4dEVtcGhhc2lz
TWFyayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0UnVieVBvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRCcmVha0JlZm9yZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0QnJlYWtBZnRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6c2V0QnJlYWtJbnNpZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OnNldEhhbmdpbmdQdW5jdHVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6c2V0TGluZVNuYXApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldExp
bmVBbGlnbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0UG9pbnRlckV2ZW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbERpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxCcmVha0JldHdlZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxCcmVha0luc2lkZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbENhcHRpb25TaWRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjppbml0aWFsQ29sdW1uQXhpcyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6aW5pdGlhbENvbHVtblByb2dyZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjppbml0aWFsRW1wdHlDZWxscyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6aW5pdGlhbExpc3RTdHlsZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjppbml0aWFsTGlzdFN0eWxlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6aW5pdGlhbFRleHRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OmluaXRpYWxWaXNpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxl
Ojppbml0aWFsV2hpdGVTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5p
dGlhbEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRB
bGlnbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHREZWNvcmF0
aW9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0Wm9v
bSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbEh5cGhlbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJGaXQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxSVExPcmRlcmluZyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFBvaW50ZXJFdmVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RW1waGFzaXNDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRFbXBoYXNpc0ZpbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RW1waGFzaXNNYXJrKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsUnVieVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VSZXNvbHV0aW9uU291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VSZXNvbHV0aW9uU25hcCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRBbGlnbkxhc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0SnVzdGlmeSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbEN1cnNvclZpc2liaWxpdHkpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b1JlcGVhdFR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lU25hcCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVBbGlnbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6Omhhc0FueVB1YmxpY1BzZXVkb1N0eWxlcyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6b3JpZ2luYWxEaXNwbGF5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6
aGFzUHNldWRvU3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Ok5v
bkluaGVyaXRlZEZsYWdzOjpzZXRIYXNQc2V1ZG9TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OnNldEhhc1BzZXVkb1N0eWxlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YXV0b1dyYXApOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OnByZXNlcnZlTmV3bGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6Y29sbGFwc2VXaGl0ZVNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxl
OjpicmVha09ubHlBZnRlcldoaXRlU3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU3R5bGU6Omhhc0lubGluZUNvbHVtbkF4aXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmlzRGlzcGxheVJlZ2lvblR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU3R5bGU6OmlzRGlzcGxheVJlcGxhY2VkVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6aXNEaXNwbGF5SW5saW5lVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6aXNEaXNwbGF5RmxleGlibGVCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU3R5bGU6OmlzRGlzcGxheUdyaWRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmlzRGlzcGxheUZsZXhpYmxlT3JHcmlkQm94KToKKyAgICAgICAgKFdlYkNvcmU6OnBzZXVk
b0VsZW1lbnRSZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGVDb25zdGFudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6Cisg
ICAgICAgIChXZWJDb3JlOjphbHdheXNQYWdlQnJlYWspOgorICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6UHNldWRvSWRT
ZXQ6OmhhcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9JZFNldDo6YWRkKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZU11
bHRpQ29sRGF0YTo6U3R5bGVNdWx0aUNvbERhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFy
ZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmg6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHQ29udGFpbmVyOjpwYWludCk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJ
bWFnZTo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6Om5vZGVBdEZs
b2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmVUZXh0OjpzdHlsZURpZENoYW5n
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6Y2hlY2tJbnRlcnNlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmNoZWNrRW5jbG9zdXJl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnJlcXVlc3RQYWludGluZ1Jlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OnBhdGhPbmx5Q2xpcHBpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpjYWxjdWxhdGVD
bGlwQ29udGVudFJlcGFpbnRSZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlTWFza2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNl
TWFza2VyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmNhbGN1bGF0ZU1hc2tDb250ZW50UmVwYWludFJlY3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdSb290OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCBjb25zdCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdTaGFwZTo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHU2hhcGU6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0Ojpub2RlQXRG
bG9hdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb25CYWNr
Z3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OmNvbnN0cnVjdFRleHRSdW4gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6Om5vZGVBdFBvaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUmVuZGVyU3VwcG9ydDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwcm9jZXNzUmVuZGVyU1ZHSW5saW5lVGV4dCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjptZWFzdXJlVGV4dFJlbmRlcmVyKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6QmxvY2s6OmRldGFjaCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyRmlyc3RMZXR0ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVGb3JGaXJzdExldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6Rmlyc3RMZXR0ZXI6OnVwZGF0ZUFmdGVyRGVzY2VuZGFu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6OkZpcnN0TGV0dGVyOjp1
cGRhdGVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6Rmlyc3RM
ZXR0ZXI6OmNyZWF0ZVJlbmRlcmVycyk6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1Jl
bmRlclRyZWVCdWlsZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVC
dWlsZGVyOjpJbmxpbmU6OmF0dGFjaElnbm9yaW5nQ29udGludWF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpJbmxpbmU6Om5ld0NoaWxkSXNJbmxpbmUpOgorICAg
ICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlckxpc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6Okxpc3Q6OnVwZGF0ZUl0ZW1NYXJrZXIp
OgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlck1hdGhNTC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6TWF0aE1MOjpjcmVhdGVN
YXRoTUxPcGVyYXRvcik6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVC
dWlsZGVyTXVsdGlDb2x1bW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxk
ZXI6Ok11bHRpQ29sdW1uOjpjcmVhdGVGcmFnbWVudGVkRmxvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUcmVlQnVpbGRlcjo6TXVsdGlDb2x1bW46OnByb2Nlc3NQb3NzaWJsZVNwYW5uZXJE
ZXNjZW5kYW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxk
ZXJSdWJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzQW5vbnltb3VzUnVieUlubGluZUJsb2Nr
KToKKyAgICAgICAgKFdlYkNvcmU6OmlzUnVieUJlZm9yZUJsb2NrKToKKyAgICAgICAgKFdlYkNv
cmU6OmlzUnVieUFmdGVyQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQW5vbnltb3Vz
UnVieUlubGluZUJsb2NrKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJl
ZUJ1aWxkZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6
VGFibGU6OmZpbmRPckNyZWF0ZVBhcmVudEZvckNoaWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcv
dXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VHJlZVVwZGF0ZXI6OnVwZGF0ZUJlZm9yZURlc2NlbmRhbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVBZnRlckRlc2NlbmRhbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6ZWxlbWVudEltcGxpY2l0VmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpDaGVja0ZvclZpc2liaWxpdHlDaGFuZ2U6OkNoZWNrRm9yVmlzaWJpbGl0eUNoYW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDaGVja0ZvclZpc2liaWxpdHlDaGFuZ2U6On5DaGVja0ZvclZpc2li
aWxpdHlDaGFuZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBk
YXRlckdlbmVyYXRlZENvbnRlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVw
ZGF0ZXI6OkdlbmVyYXRlZENvbnRlbnQ6OnVwZGF0ZVBzZXVkb0VsZW1lbnQpOgorICAgICAgICAq
IHN0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2aXN1YWxP
dmVyZmxvd0ZvckRlY29yYXRpb25zKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZUNoYW5nZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6ZGV0ZXJtaW5lQ2hhbmdlKToKKyAgICAgICAgKiBz
dHlsZS9TdHlsZUZvbnRTaXplRnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
Ojpjb21wdXRlZEZvbnRTaXplRnJvbVNwZWNpZmllZFNpemUpOgorICAgICAgICAqIHN0eWxlL1N0
eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpyZXNv
bHZlRm9yRG9jdW1lbnQpOgorICAgICAgICAqIHN0eWxlL1N0eWxlU2hhcmluZ1Jlc29sdmVyLmNw
cDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6YWZmZWN0c1JlbmRlcmVkU3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlUHNldWRvU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6cGFyZW50Qm94U3R5bGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OmNyZWF0ZUluaGVyaXRlZERpc3BsYXlDb250ZW50c1N0eWxlSWZOZWVk
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6cmVzb2x2ZUNvbXBv
c2VkVHJlZSk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
R0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR0VsZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcik6CisKIDIwMTgtMDUtMjIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxk
QGFwcGxlLmNvbT4KIAogICAgICAgICBUZXh0IGNhbiB3cmFwIGJldHdlZW4gaHlwaGVucyBhbmQg
Y29tbWFzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5jcHAJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Niw3ICsyODYsNyBAQCBi
b29sIEFYT2JqZWN0Q2FjaGU6OmlzTm9kZVZpc2libGUoTm9kZSogCiAgICAgaWYgKCFyZW5kZXJl
cikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9
IHJlbmRlcmVyLT5zdHlsZSgpOwotICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gTk9ORSB8fCBz
dHlsZS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAoc3R5bGUuZGlzcGxheSgpID09
IERpc3BsYXlUeXBlOjpOb25lIHx8IHN0eWxlLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpW
aXNpYmxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgLy8gV2UgYWxzbyBuZWVk
IHRvIGNvbnNpZGVyIGFyaWEgaGlkZGVuIHN0YXR1cy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3QuY3BwCShyZXZpc2lvbiAyMzIx
MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDcgKzE2Myw3IEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFj
Y2Vzc2liaWxpdHlMaXN0OjpkZXQKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gUmVuZGVy
ZWQgbGlzdCBpdGVtcyBhbHdheXMgY291bnQuCiAgICAgICAgICAgICBpZiAobGlzdEl0ZW0tPmlz
TGlzdEl0ZW0oKSkgewotICAgICAgICAgICAgICAgIGlmICghaGFzVmlzaWJsZU1hcmtlcnMgJiYg
KGxpc3RJdGVtLT5zdHlsZSgpLmxpc3RTdHlsZVR5cGUoKSAhPSBOb25lTGlzdFN0eWxlIHx8IGxp
c3RJdGVtLT5zdHlsZSgpLmxpc3RTdHlsZUltYWdlKCkgfHwgY2hpbGRIYXNQc2V1ZG9WaXNpYmxl
TGlzdEl0ZW1NYXJrZXJzKGxpc3RJdGVtKSkpCisgICAgICAgICAgICAgICAgaWYgKCFoYXNWaXNp
YmxlTWFya2VycyAmJiAobGlzdEl0ZW0tPnN0eWxlKCkubGlzdFN0eWxlVHlwZSgpICE9IExpc3RT
dHlsZVR5cGU6Ok5vbmUgfHwgbGlzdEl0ZW0tPnN0eWxlKCkubGlzdFN0eWxlSW1hZ2UoKSB8fCBj
aGlsZEhhc1BzZXVkb1Zpc2libGVMaXN0SXRlbU1hcmtlcnMobGlzdEl0ZW0pKSkKICAgICAgICAg
ICAgICAgICAgICAgaGFzVmlzaWJsZU1hcmtlcnMgPSB0cnVlOwogICAgICAgICAgICAgICAgIGxp
c3RJdGVtQ291bnQrKzsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobGlzdEl0ZW0tPm5vZGUoKSAm
JiBsaXN0SXRlbS0+bm9kZSgpLT5oYXNUYWdOYW1lKGxpVGFnKSkgewpJbmRleDogU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFD
b250cm9scy5jcHAJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzYsNyArMTc2LDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2w6OmhlbHBUZQog
CiBib29sIEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2w6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fcmVuZGVyZXIgfHwgbV9yZW5kZXJlci0+c3R5
bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBjb250cm9sVHlwZSgpID09IE1lZGlhVGlt
ZWxpbmVDb250YWluZXIpCisgICAgaWYgKCFtX3JlbmRlcmVyIHx8IG1fcmVuZGVyZXItPnN0eWxl
KCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgfHwgY29udHJvbFR5cGUoKSA9
PSBNZWRpYVRpbWVsaW5lQ29udGFpbmVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJl
dHVybiBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkQnlEZWZhdWx0KCk7CkBAIC0zMDIsNyArMzAyLDcg
QEAgUmVmPEFjY2Vzc2liaWxpdHlPYmplY3Q+IEFjY2Vzc2liaWxpdHlNZQogCiBib29sIEFjY2Vz
c2liaWxpdHlNZWRpYVRpbWVEaXNwbGF5Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgp
IGNvbnN0CiB7Ci0gICAgaWYgKCFtX3JlbmRlcmVyIHx8IG1fcmVuZGVyZXItPnN0eWxlKCkudmlz
aWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKCFtX3JlbmRlcmVyIHx8IG1fcmVuZGVyZXIt
PnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgaWYgKCFtX3JlbmRlcmVyLT5zdHlsZSgpLndpZHRoKCkudmFsdWUo
KSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI3
NSw3ICszMjc1LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0RPTUhpZGRlbigpIAog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUg
PSByZW5kZXJlci0+c3R5bGUoKTsKLSAgICByZXR1cm4gc3R5bGUuZGlzcGxheSgpID09IE5PTkUg
fHwgc3R5bGUudmlzaWJpbGl0eSgpICE9IFZJU0lCTEU7CisgICAgcmV0dXJuIHN0eWxlLmRpc3Bs
YXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSB8fCBzdHlsZS52aXNpYmlsaXR5KCkgIT0gVmlzaWJp
bGl0eTo6VmlzaWJsZTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1Nob3dpbmdW
YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHJldmlz
aW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNDQsNyArMTE0NCw3IEBAIEFj
Y2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gQWNjZXNzaWJpbGkKICAgICBpZiAoIW1fcmVuZGVy
ZXIpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVP
YmplY3Q7CiAKLSAgICBpZiAobV9yZW5kZXJlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklT
SUJMRSkgeworICAgIGlmIChtX3JlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNp
YmlsaXR5OjpWaXNpYmxlKSB7CiAgICAgICAgIC8vIGFyaWEtaGlkZGVuIGlzIG1lYW50IHRvIG92
ZXJyaWRlIHZpc2liaWxpdHkgYXMgdGhlIGRldGVybWluYW50IGluIEFYIGhpZXJhcmNoeSBpbmNs
dXNpb24uCiAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShnZXRBdHRy
aWJ1dGUoYXJpYV9oaWRkZW5BdHRyKSwgImZhbHNlIikpCiAgICAgICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6RGVmYXVsdEJlaGF2aW9yOwpAQCAtMTU5Niw3ICsx
NTk2LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc1VudmlzaQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIEZJWE1FOiBJcyBpdCBhIHByaXZhY3kgdmlvbGF0aW9u
IHRvIGV4cG9zZSB1bnZpc2l0ZWQgaW5mb3JtYXRpb24gdG8gYWNjZXNzaWJpbGl0eSBBUElzPwot
ICAgIHJldHVybiBtX3JlbmRlcmVyLT5zdHlsZSgpLmlzTGluaygpICYmIG1fcmVuZGVyZXItPnN0
eWxlKCkuaW5zaWRlTGluaygpID09IEluc2lkZVVudmlzaXRlZExpbms7CisgICAgcmV0dXJuIG1f
cmVuZGVyZXItPnN0eWxlKCkuaXNMaW5rKCkgJiYgbV9yZW5kZXJlci0+c3R5bGUoKS5pbnNpZGVM
aW5rKCkgPT0gSW5zaWRlTGluazo6SW5zaWRlVW52aXNpdGVkOwogfQogCiBib29sIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmlzVmlzaXRlZCgpIGNvbnN0CkBAIC0xNjA1LDcgKzE2MDUsNyBA
QCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzVmlzaXRlCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIC8vIEZJWE1FOiBJcyBpdCBhIHByaXZhY3kgdmlvbGF0aW9uIHRvIGV4
cG9zZSB2aXNpdGVkIGluZm9ybWF0aW9uIHRvIGFjY2Vzc2liaWxpdHkgQVBJcz8KLSAgICByZXR1
cm4gbV9yZW5kZXJlci0+c3R5bGUoKS5pc0xpbmsoKSAmJiBtX3JlbmRlcmVyLT5zdHlsZSgpLmlu
c2lkZUxpbmsoKSA9PSBJbnNpZGVWaXNpdGVkTGluazsKKyAgICByZXR1cm4gbV9yZW5kZXJlci0+
c3R5bGUoKS5pc0xpbmsoKSAmJiBtX3JlbmRlcmVyLT5zdHlsZSgpLmluc2lkZUxpbmsoKSA9PSBJ
bnNpZGVMaW5rOjpJbnNpZGVWaXNpdGVkOwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OnNldEVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lLCBib29sIHZhbHVlKQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysg
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNjIsNyArMjYyLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGU6Omlz
RGF0YVRhYmxlKCkgYwogICAgICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHJlbmRlclN0eWxl
ID0gY2VsbC0+c3R5bGUoKTsKIAogICAgICAgICAgICAgLy8gSWYgdGhlIGVtcHR5LWNlbGxzIHN0
eWxlIGlzIHNldCwgd2UnbGwgY2FsbCBpdCBhIGRhdGEgdGFibGUuCi0gICAgICAgICAgICBpZiAo
cmVuZGVyU3R5bGUuZW1wdHlDZWxscygpID09IEhJREUpCisgICAgICAgICAgICBpZiAocmVuZGVy
U3R5bGUuZW1wdHlDZWxscygpID09IEVtcHR5Q2VsbDo6SGlkZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgICAgICAgICAgLy8gSWYgYSBjZWxsIGhhcyBtYXRjaGluZyBib3Jk
ZXJlZCBzaWRlcywgY2FsbCBpdCBhIChmdWxseSkgYm9yZGVyZWQgY2VsbC4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcAkocmV2aXNpb24g
MjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgQW5pbWF0aW9uVGltZWxp
bmU6OnVwZGF0ZUNTU0FuaW1hdGkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gSW4gY2FzZSB0
aGlzIGVsZW1lbnQgaXMgbmV3bHkgZ2V0dGluZyBhICJkaXNwbGF5OiBub25lIiB3ZSBuZWVkIHRv
IGNhbmNlbCBhbGwgb2YgaXRzIGFuaW1hdGlvbnMgYW5kIGRpc3JlZ2FyZCBuZXcgb25lcy4KLSAg
ICBpZiAob2xkU3R5bGUgJiYgb2xkU3R5bGUtPmhhc0FuaW1hdGlvbnMoKSAmJiBvbGRTdHlsZS0+
ZGlzcGxheSgpICE9IE5PTkUgJiYgbmV3U3R5bGUuZGlzcGxheSgpID09IE5PTkUpIHsKKyAgICBp
ZiAob2xkU3R5bGUgJiYgb2xkU3R5bGUtPmhhc0FuaW1hdGlvbnMoKSAmJiBvbGRTdHlsZS0+ZGlz
cGxheSgpICE9IERpc3BsYXlUeXBlOjpOb25lICYmIG5ld1N0eWxlLmRpc3BsYXkoKSA9PSBEaXNw
bGF5VHlwZTo6Tm9uZSkgewogICAgICAgICBpZiAobV9lbGVtZW50VG9DU1NBbmltYXRpb25CeU5h
bWUuY29udGFpbnMoJmVsZW1lbnQpKSB7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNz
c0FuaW1hdGlvbnNCeU5hbWVNYXBJdGVtIDogbV9lbGVtZW50VG9DU1NBbmltYXRpb25CeU5hbWUu
dGFrZSgmZWxlbWVudCkpCiAgICAgICAgICAgICAgICAgY2FuY2VsT3JSZW1vdmVEZWNsYXJhdGl2
ZUFuaW1hdGlvbihjc3NBbmltYXRpb25zQnlOYW1lTWFwSXRlbS52YWx1ZSk7CkBAIC0yMjksNyAr
MjI5LDcgQEAgdm9pZCBBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTVHJhbnNpdAogICAgICAg
ICByZXR1cm47CiAKICAgICAvLyBJbiBjYXNlIHRoaXMgZWxlbWVudCBpcyBuZXdseSBnZXR0aW5n
IGEgImRpc3BsYXk6IG5vbmUiIHdlIG5lZWQgdG8gY2FuY2VsIGFsbCBvZiBpdHMgYW5pbWF0aW9u
cyBhbmQgZGlzcmVnYXJkIG5ldyBvbmVzLgotICAgIGlmIChvbGRTdHlsZSAmJiBvbGRTdHlsZS0+
aGFzVHJhbnNpdGlvbnMoKSAmJiBvbGRTdHlsZS0+ZGlzcGxheSgpICE9IE5PTkUgJiYgbmV3U3R5
bGUuZGlzcGxheSgpID09IE5PTkUpIHsKKyAgICBpZiAob2xkU3R5bGUgJiYgb2xkU3R5bGUtPmhh
c1RyYW5zaXRpb25zKCkgJiYgb2xkU3R5bGUtPmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Tm9u
ZSAmJiBuZXdTdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUpIHsKICAgICAgICAg
aWYgKG1fZWxlbWVudFRvQ1NTVHJhbnNpdGlvbkJ5Q1NTUHJvcGVydHlJRC5jb250YWlucygmZWxl
bWVudCkpIHsKICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgY3NzVHJhbnNpdGlvbnNCeUNT
U1Byb3BlcnR5SURNYXBJdGVtIDogbV9lbGVtZW50VG9DU1NUcmFuc2l0aW9uQnlDU1NQcm9wZXJ0
eUlELnRha2UoJmVsZW1lbnQpKQogICAgICAgICAgICAgICAgIGNhbmNlbE9yUmVtb3ZlRGVjbGFy
YXRpdmVBbmltYXRpb24oY3NzVHJhbnNpdGlvbnNCeUNTU1Byb3BlcnR5SURNYXBJdGVtLnZhbHVl
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NBbmltYXRpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NBbmltYXRpb24uY3BwCShyZXZp
c2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTYgKzU1LDE2IEBAIHZvaWQgQ1NTQW5pbWF0aW9uOjpz
eW5jUHJvcGVydGllc1dpdGhCYWMKICAgICBhdXRvKiB0aW1pbmcgPSBlZmZlY3QoKS0+dGltaW5n
KCk7CiAKICAgICBzd2l0Y2ggKGFuaW1hdGlvbi5maWxsTW9kZSgpKSB7Ci0gICAgY2FzZSBBbmlt
YXRpb25GaWxsTW9kZU5vbmU6CisgICAgY2FzZSBBbmltYXRpb25GaWxsTW9kZTo6Tm9uZToKICAg
ICAgICAgdGltaW5nLT5zZXRGaWxsKEZpbGxNb2RlOjpOb25lKTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBBbmltYXRpb25GaWxsTW9kZUJhY2t3YXJkczoKKyAgICBjYXNlIEFuaW1hdGlvbkZp
bGxNb2RlOjpCYWNrd2FyZHM6CiAgICAgICAgIHRpbWluZy0+c2V0RmlsbChGaWxsTW9kZTo6QmFj
a3dhcmRzKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBbmltYXRpb25GaWxsTW9kZUZvcndh
cmRzOgorICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGU6OkZvcndhcmRzOgogICAgICAgICB0aW1p
bmctPnNldEZpbGwoRmlsbE1vZGU6OkZvcndhcmRzKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBBbmltYXRpb25GaWxsTW9kZUJvdGg6CisgICAgY2FzZSBBbmltYXRpb25GaWxsTW9kZTo6Qm90
aDoKICAgICAgICAgdGltaW5nLT5zZXRGaWxsKEZpbGxNb2RlOjpCb3RoKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQpAQCAtODgsOSArODgsOSBAQCB2b2lkIENTU0FuaW1hdGlvbjo6c3luY1Byb3Bl
cnRpZXNXaXRoQmFjCiAgICAgdGltaW5nLT5zZXRJdGVyYXRpb25zKGl0ZXJhdGlvbkNvdW50ID09
IEFuaW1hdGlvbjo6SXRlcmF0aW9uQ291bnRJbmZpbml0ZSA/IHN0ZDo6bnVtZXJpY19saW1pdHM8
ZG91YmxlPjo6aW5maW5pdHkoKSA6IGl0ZXJhdGlvbkNvdW50KTsKIAogICAgIC8vIFN5bmNocm9u
aXplIHRoZSBwbGF5IHN0YXRlCi0gICAgaWYgKGJhY2tpbmdBbmltYXRpb24oKS5wbGF5U3RhdGUo
KSA9PSBBbmltUGxheVN0YXRlUGxheWluZyAmJiBwbGF5U3RhdGUoKSA9PSBXZWJBbmltYXRpb246
OlBsYXlTdGF0ZTo6UGF1c2VkKQorICAgIGlmIChiYWNraW5nQW5pbWF0aW9uKCkucGxheVN0YXRl
KCkgPT0gQW5pbWF0aW9uUGxheVN0YXRlOjpQbGF5aW5nICYmIHBsYXlTdGF0ZSgpID09IFdlYkFu
aW1hdGlvbjo6UGxheVN0YXRlOjpQYXVzZWQpCiAgICAgICAgIHBsYXkoKTsKLSAgICBlbHNlIGlm
IChiYWNraW5nQW5pbWF0aW9uKCkucGxheVN0YXRlKCkgPT0gQW5pbVBsYXlTdGF0ZVBhdXNlZCAm
JiBwbGF5U3RhdGUoKSA9PSBXZWJBbmltYXRpb246OlBsYXlTdGF0ZTo6UnVubmluZykKKyAgICBl
bHNlIGlmIChiYWNraW5nQW5pbWF0aW9uKCkucGxheVN0YXRlKCkgPT0gQW5pbWF0aW9uUGxheVN0
YXRlOjpQYXVzZWQgJiYgcGxheVN0YXRlKCkgPT0gV2ViQW5pbWF0aW9uOjpQbGF5U3RhdGU6OlJ1
bm5pbmcpCiAgICAgICAgIHBhdXNlKCk7CiAKICAgICB1bnN1c3BlbmRFZmZlY3RJbnZhbGlkYXRp
b24oKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZl
QW5pbWF0aW9uLmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcs
NyBAQCB2b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9uOjppbml0aWFsaXplKGNvCiAgICAgc2V0VGlt
ZWxpbmUoJnRhcmdldC5kb2N1bWVudCgpLnRpbWVsaW5lKCkpOwogICAgIGRvd25jYXN0PEtleWZy
YW1lRWZmZWN0UmVhZE9ubHk+KGVmZmVjdCgpKS0+Y29tcHV0ZURlY2xhcmF0aXZlQW5pbWF0aW9u
QmxlbmRpbmdLZXlmcmFtZXMob2xkU3R5bGUsIG5ld1N0eWxlKTsKICAgICBzeW5jUHJvcGVydGll
c1dpdGhCYWNraW5nQW5pbWF0aW9uKCk7Ci0gICAgaWYgKGJhY2tpbmdBbmltYXRpb24oKS5wbGF5
U3RhdGUoKSA9PSBBbmltUGxheVN0YXRlUGxheWluZykKKyAgICBpZiAoYmFja2luZ0FuaW1hdGlv
bigpLnBsYXlTdGF0ZSgpID09IEFuaW1hdGlvblBsYXlTdGF0ZTo6UGxheWluZykKICAgICAgICAg
cGxheSgpOwogICAgIGVsc2UKICAgICAgICAgcGF1c2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdFJlYWRPbmx5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3RSZWFkT25seS5jcHAJKHJldmlzaW9u
IDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdFJlYWRP
bmx5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI2NSwxNiArMTI2NSwxNiBAQCBSZWY8Y29uc3Qg
QW5pbWF0aW9uPiBLZXlmcmFtZUVmZmVjdFJlYWRPCiAgICAgc3dpdGNoIChlZmZlY3RUaW1pbmct
PmZpbGwoKSkgewogICAgIGNhc2UgRmlsbE1vZGU6Ok5vbmU6CiAgICAgY2FzZSBGaWxsTW9kZTo6
QXV0bzoKLSAgICAgICAgYW5pbWF0aW9uLT5zZXRGaWxsTW9kZShBbmltYXRpb25GaWxsTW9kZU5v
bmUpOworICAgICAgICBhbmltYXRpb24tPnNldEZpbGxNb2RlKEFuaW1hdGlvbkZpbGxNb2RlOjpO
b25lKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGaWxsTW9kZTo6QmFja3dhcmRzOgotICAg
ICAgICBhbmltYXRpb24tPnNldEZpbGxNb2RlKEFuaW1hdGlvbkZpbGxNb2RlQmFja3dhcmRzKTsK
KyAgICAgICAgYW5pbWF0aW9uLT5zZXRGaWxsTW9kZShBbmltYXRpb25GaWxsTW9kZTo6QmFja3dh
cmRzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGaWxsTW9kZTo6Rm9yd2FyZHM6Ci0gICAg
ICAgIGFuaW1hdGlvbi0+c2V0RmlsbE1vZGUoQW5pbWF0aW9uRmlsbE1vZGVGb3J3YXJkcyk7Cisg
ICAgICAgIGFuaW1hdGlvbi0+c2V0RmlsbE1vZGUoQW5pbWF0aW9uRmlsbE1vZGU6OkZvcndhcmRz
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGaWxsTW9kZTo6Qm90aDoKLSAgICAgICAgYW5p
bWF0aW9uLT5zZXRGaWxsTW9kZShBbmltYXRpb25GaWxsTW9kZUJvdGgpOworICAgICAgICBhbmlt
YXRpb24tPnNldEZpbGxNb2RlKEFuaW1hdGlvbkZpbGxNb2RlOjpCb3RoKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE3ODAsMTUgKzE3ODAsMTUgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gcmVuZGVyVGV4dERlY29y
YXRpbwogc3RhdGljIFJlZjxDU1NWYWx1ZT4gcmVuZGVyVGV4dERlY29yYXRpb25TdHlsZUZsYWdz
VG9DU1NWYWx1ZShUZXh0RGVjb3JhdGlvblN0eWxlIHRleHREZWNvcmF0aW9uU3R5bGUpCiB7CiAg
ICAgc3dpdGNoICh0ZXh0RGVjb3JhdGlvblN0eWxlKSB7Ci0gICAgY2FzZSBUZXh0RGVjb3JhdGlv
blN0eWxlU29saWQ6CisgICAgY2FzZSBUZXh0RGVjb3JhdGlvblN0eWxlOjpTb2xpZDoKICAgICAg
ICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlU29saWQpOwotICAgIGNhc2UgVGV4dERlY29yYXRpb25TdHlsZURvdWJsZToKKyAg
ICBjYXNlIFRleHREZWNvcmF0aW9uU3R5bGU6OkRvdWJsZToKICAgICAgICAgcmV0dXJuIENTU1Zh
bHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlRG91Ymxl
KTsKLSAgICBjYXNlIFRleHREZWNvcmF0aW9uU3R5bGVEb3R0ZWQ6CisgICAgY2FzZSBUZXh0RGVj
b3JhdGlvblN0eWxlOjpEb3R0ZWQ6CiAgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmds
ZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZURvdHRlZCk7Ci0gICAgY2FzZSBU
ZXh0RGVjb3JhdGlvblN0eWxlRGFzaGVkOgorICAgIGNhc2UgVGV4dERlY29yYXRpb25TdHlsZTo6
RGFzaGVkOgogICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVEYXNoZWQpOwotICAgIGNhc2UgVGV4dERlY29yYXRpb25T
dHlsZVdhdnk6CisgICAgY2FzZSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5OgogICAgICAgICBy
ZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVXYXZ5KTsKICAgICB9CiAKQEAgLTIyNzIsMzMgKzIyNzIsMzMgQEAgc3RhdGljIGJvb2wg
cG9zaXRpb25PZmZzZXRWYWx1ZUlzUmVuZGVyZQogCiBzdGF0aWMgQ1NTVmFsdWVJRCBjb252ZXJ0
VG9QYWdlQnJlYWsoQnJlYWtCZXR3ZWVuIHZhbHVlKQogewotICAgIGlmICh2YWx1ZSA9PSBQYWdl
QnJlYWtCZXR3ZWVuIHx8IHZhbHVlID09IExlZnRQYWdlQnJlYWtCZXR3ZWVuIHx8IHZhbHVlID09
IFJpZ2h0UGFnZUJyZWFrQmV0d2VlbgotICAgICAgICB8fCB2YWx1ZSA9PSBSZWN0b1BhZ2VCcmVh
a0JldHdlZW4gfHwgdmFsdWUgPT0gVmVyc29QYWdlQnJlYWtCZXR3ZWVuKQorICAgIGlmICh2YWx1
ZSA9PSBCcmVha0JldHdlZW46OlBhZ2UgfHwgdmFsdWUgPT0gQnJlYWtCZXR3ZWVuOjpMZWZ0UGFn
ZSB8fCB2YWx1ZSA9PSBCcmVha0JldHdlZW46OlJpZ2h0UGFnZQorICAgICAgICB8fCB2YWx1ZSA9
PSBCcmVha0JldHdlZW46OlJlY3RvUGFnZSB8fCB2YWx1ZSA9PSBCcmVha0JldHdlZW46OlZlcnNv
UGFnZSkKICAgICAgICAgcmV0dXJuIENTU1ZhbHVlQWx3YXlzOyAvLyBDU1MgMi4xIGFsbG93cyB1
cyB0byBtYXAgdGhlc2UgdG8gYWx3YXlzLgotICAgIGlmICh2YWx1ZSA9PSBBdm9pZEJyZWFrQmV0
d2VlbiB8fCB2YWx1ZSA9PSBBdm9pZFBhZ2VCcmVha0JldHdlZW4pCisgICAgaWYgKHZhbHVlID09
IEJyZWFrQmV0d2Vlbjo6QXZvaWQgfHwgdmFsdWUgPT0gQnJlYWtCZXR3ZWVuOjpBdm9pZFBhZ2Up
CiAgICAgICAgIHJldHVybiBDU1NWYWx1ZUF2b2lkOwogICAgIHJldHVybiBDU1NWYWx1ZUF1dG87
CiB9CiAKIHN0YXRpYyBDU1NWYWx1ZUlEIGNvbnZlcnRUb0NvbHVtbkJyZWFrKEJyZWFrQmV0d2Vl
biB2YWx1ZSkKIHsKLSAgICBpZiAodmFsdWUgPT0gQ29sdW1uQnJlYWtCZXR3ZWVuKQorICAgIGlm
ICh2YWx1ZSA9PSBCcmVha0JldHdlZW46OkNvbHVtbikKICAgICAgICAgcmV0dXJuIENTU1ZhbHVl
QWx3YXlzOwotICAgIGlmICh2YWx1ZSA9PSBBdm9pZEJyZWFrQmV0d2VlbiB8fCB2YWx1ZSA9PSBB
dm9pZENvbHVtbkJyZWFrQmV0d2VlbikKKyAgICBpZiAodmFsdWUgPT0gQnJlYWtCZXR3ZWVuOjpB
dm9pZCB8fCB2YWx1ZSA9PSBCcmVha0JldHdlZW46OkF2b2lkQ29sdW1uKQogICAgICAgICByZXR1
cm4gQ1NTVmFsdWVBdm9pZDsKICAgICByZXR1cm4gQ1NTVmFsdWVBdXRvOwogfQogCiBzdGF0aWMg
Q1NTVmFsdWVJRCBjb252ZXJ0VG9QYWdlQnJlYWsoQnJlYWtJbnNpZGUgdmFsdWUpCiB7Ci0gICAg
aWYgKHZhbHVlID09IEF2b2lkQnJlYWtJbnNpZGUgfHwgdmFsdWUgPT0gQXZvaWRQYWdlQnJlYWtJ
bnNpZGUpCisgICAgaWYgKHZhbHVlID09IEJyZWFrSW5zaWRlOjpBdm9pZCB8fCB2YWx1ZSA9PSBC
cmVha0luc2lkZTo6QXZvaWRQYWdlKQogICAgICAgICByZXR1cm4gQ1NTVmFsdWVBdm9pZDsKICAg
ICByZXR1cm4gQ1NTVmFsdWVBdXRvOwogfQogCiBzdGF0aWMgQ1NTVmFsdWVJRCBjb252ZXJ0VG9D
b2x1bW5CcmVhayhCcmVha0luc2lkZSB2YWx1ZSkKIHsKLSAgICBpZiAodmFsdWUgPT0gQXZvaWRC
cmVha0luc2lkZSB8fCB2YWx1ZSA9PSBBdm9pZENvbHVtbkJyZWFrSW5zaWRlKQorICAgIGlmICh2
YWx1ZSA9PSBCcmVha0luc2lkZTo6QXZvaWQgfHwgdmFsdWUgPT0gQnJlYWtJbnNpZGU6OkF2b2lk
Q29sdW1uKQogICAgICAgICByZXR1cm4gQ1NTVmFsdWVBdm9pZDsKICAgICByZXR1cm4gQ1NTVmFs
dWVBdXRvOwogfQpAQCAtMjM3MCwyMCArMjM3MCwxOSBAQCBFbGVtZW50KiBDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOjpzdHlsZWRFCiAgICAgaWYgKCFtX2VsZW1lbnQpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIFBzZXVkb0VsZW1lbnQqIHBzZXVkb0VsZW1lbnQ7Ci0gICAgaWYgKG1fcHNl
dWRvRWxlbWVudFNwZWNpZmllciA9PSBCRUZPUkUgJiYgKHBzZXVkb0VsZW1lbnQgPSBtX2VsZW1l
bnQtPmJlZm9yZVBzZXVkb0VsZW1lbnQoKSkpCisgICAgaWYgKG1fcHNldWRvRWxlbWVudFNwZWNp
ZmllciA9PSBQc2V1ZG9JZDo6QmVmb3JlICYmIChwc2V1ZG9FbGVtZW50ID0gbV9lbGVtZW50LT5i
ZWZvcmVQc2V1ZG9FbGVtZW50KCkpKQogICAgICAgICByZXR1cm4gcHNldWRvRWxlbWVudDsKLSAg
ICBpZiAobV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyID09IEFGVEVSICYmIChwc2V1ZG9FbGVtZW50
ID0gbV9lbGVtZW50LT5hZnRlclBzZXVkb0VsZW1lbnQoKSkpCisgICAgaWYgKG1fcHNldWRvRWxl
bWVudFNwZWNpZmllciA9PSBQc2V1ZG9JZDo6QWZ0ZXIgJiYgKHBzZXVkb0VsZW1lbnQgPSBtX2Vs
ZW1lbnQtPmFmdGVyUHNldWRvRWxlbWVudCgpKSkKICAgICAgICAgcmV0dXJuIHBzZXVkb0VsZW1l
bnQ7CiAgICAgcmV0dXJuIG1fZWxlbWVudC5nZXQoKTsKIH0KIAotCiBSZW5kZXJFbGVtZW50KiBD
b21wdXRlZFN0eWxlRXh0cmFjdG9yOjpzdHlsZWRSZW5kZXJlcigpIGNvbnN0CiB7CiAgICAgYXV0
byogZWxlbWVudCA9IHN0eWxlZEVsZW1lbnQoKTsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIGlmIChtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIgIT0gTk9Q
U0VVRE8gJiYgZWxlbWVudCA9PSBtX2VsZW1lbnQuZ2V0KCkpCisgICAgaWYgKG1fcHNldWRvRWxl
bWVudFNwZWNpZmllciAhPSBQc2V1ZG9JZDo6Tm9uZSAmJiBlbGVtZW50ID09IG1fZWxlbWVudC5n
ZXQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKGVsZW1lbnQtPmhhc0Rpc3Bs
YXlDb250ZW50cygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI0NzgsMTQgKzI0Nzcs
MTQgQEAgc3RhdGljIGlubGluZSBjb25zdCBSZW5kZXJTdHlsZSogY29tcHV0ZQogICAgICAgICAg
ICAgb3duZWRTdHlsZSA9IHRpbWVsaW5lLT5hbmltYXRlZFN0eWxlRm9yUmVuZGVyZXIoKnJlbmRl
cmVyKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgb3duZWRTdHlsZSA9IHJlbmRlcmVyLT5h
bmltYXRpb24oKS5hbmltYXRlZFN0eWxlRm9yUmVuZGVyZXIoKnJlbmRlcmVyKTsKLSAgICAgICAg
aWYgKHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIgJiYgIWVsZW1lbnQuaXNQc2V1ZG9FbGVtZW50KCkp
IHsKKyAgICAgICAgaWYgKHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIgIT0gUHNldWRvSWQ6Ok5vbmUg
JiYgIWVsZW1lbnQuaXNQc2V1ZG9FbGVtZW50KCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBU
aGlzIGNhY2hlZCBwc2V1ZG8gc3R5bGUgd2lsbCBvbmx5IGV4aXN0IGlmIHRoZSBhbmltYXRpb24g
aGFzIGJlZW4gcnVuIGF0IGxlYXN0IG9uY2UuCiAgICAgICAgICAgICByZXR1cm4gb3duZWRTdHls
ZS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUocHNldWRvRWxlbWVudFNwZWNpZmllcik7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIG93bmVkU3R5bGUuZ2V0KCk7CiAgICAgfQogCi0gICAgcmV0dXJu
IGVsZW1lbnQuY29tcHV0ZWRTdHlsZShlbGVtZW50LmlzUHNldWRvRWxlbWVudCgpID8gTk9QU0VV
RE8gOiBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKTsKKyAgICByZXR1cm4gZWxlbWVudC5jb21wdXRl
ZFN0eWxlKGVsZW1lbnQuaXNQc2V1ZG9FbGVtZW50KCkgPyBQc2V1ZG9JZDo6Tm9uZSA6IHBzZXVk
b0VsZW1lbnRTcGVjaWZpZXIpOwogfQogCiBzdGF0aWMgUmVmPENTU1ZhbHVlPiBzaGFwZVByb3Bl
cnR5VmFsdWUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBTaGFwZVZhbHVlKiBzaGFw
ZVZhbHVlKQpAQCAtMjUwNiw3ICsyNTA1LDcgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gc2hhcGVQ
cm9wZXJ0eVZhbHVlKAogCiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFj
ZVNlcGFyYXRlZCgpOwogICAgIGxpc3QtPmFwcGVuZCh2YWx1ZUZvckJhc2ljU2hhcGUoc3R5bGUs
ICpzaGFwZVZhbHVlLT5zaGFwZSgpKSk7Ci0gICAgaWYgKHNoYXBlVmFsdWUtPmNzc0JveCgpICE9
IEJveE1pc3NpbmcpCisgICAgaWYgKHNoYXBlVmFsdWUtPmNzc0JveCgpICE9IENTU0JveFR5cGU6
OkJveE1pc3NpbmcpCiAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpLmNyZWF0ZVZhbHVlKHNoYXBlVmFsdWUtPmNzc0JveCgpKSk7CiAgICAgcmV0dXJuIFdURk1v
dmUobGlzdCk7CiB9CkBAIC0zMDE2LDcgKzMwMTUsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1
dGVkU3R5bGVFeHRyYWN0b3I6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlPcmRlcjoKICAgICAg
ICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUub3JkZXIoKSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rmxv
YXQ6Ci0gICAgICAgICAgICBpZiAoc3R5bGUuZGlzcGxheSgpICE9IE5PTkUgJiYgc3R5bGUuaGFz
T3V0T2ZGbG93UG9zaXRpb24oKSkKKyAgICAgICAgICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgIT0g
RGlzcGxheVR5cGU6Ok5vbmUgJiYgc3R5bGUuaGFzT3V0T2ZGbG93UG9zaXRpb24oKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZU5vbmUpOwogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShz
dHlsZS5mbG9hdGluZygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnQ6IHsKQEAgLTMx
NDUsNyArMzE0NCw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcjoK
ICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZp
ZXIoQ1NTVmFsdWVOb0xpbWl0KTsKICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKHN0eWxlLmh5cGhlbmF0aW9uTGltaXRMaW5lcygpLCBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX05VTUJFUik7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJGaXQ6
Ci0gICAgICAgICAgICBpZiAoc3R5bGUuYm9yZGVyRml0KCkgPT0gQm9yZGVyRml0Qm9yZGVyKQor
ICAgICAgICAgICAgaWYgKHN0eWxlLmJvcmRlckZpdCgpID09IEJvcmRlckZpdDo6Qm9yZGVyKQog
ICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlQm9yZGVyKTsKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRl
SWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTGluZXMpOwogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJ
RU5UQVRJT04pCkBAIC0zMjAwLDcgKzMxOTksNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVk
U3R5bGVFeHRyYWN0b3I6CiAgICAgICAgICAgICBmbG9hdCB2YWx1ZTsKICAgICAgICAgICAgIGlm
IChtYXJnaW5SaWdodC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkgewogICAgICAgICAgICAgICAg
IC8vIFJlbmRlckJveCBnaXZlcyBhIG1hcmdpblJpZ2h0KCkgdGhhdCBpcyB0aGUgZGlzdGFuY2Ug
YmV0d2VlbiB0aGUgcmlnaHQtZWRnZSBvZiB0aGUgY2hpbGQgYm94Ci0gICAgICAgICAgICAgICAg
Ly8gYW5kIHRoZSByaWdodC1lZGdlIG9mIHRoZSBjb250YWluaW5nIGJveCwgd2hlbiBkaXNwbGF5
ID09IEJMT0NLLiBMZXQncyBjYWxjdWxhdGUgdGhlIGFic29sdXRlCisgICAgICAgICAgICAgICAg
Ly8gYW5kIHRoZSByaWdodC1lZGdlIG9mIHRoZSBjb250YWluaW5nIGJveCwgd2hlbiBkaXNwbGF5
ID09IERpc3BsYXlUeXBlOjpCbG9jay4gTGV0J3MgY2FsY3VsYXRlIHRoZSBhYnNvbHV0ZQogICAg
ICAgICAgICAgICAgIC8vIHZhbHVlIG9mIHRoZSBzcGVjaWZpZWQgbWFyZ2luLXJpZ2h0ICUgaW5z
dGVhZCBvZiByZWx5aW5nIG9uIFJlbmRlckJveCdzIG1hcmdpblJpZ2h0KCkgdmFsdWUuCiAgICAg
ICAgICAgICAgICAgdmFsdWUgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luUmlnaHQsIGRv
d25jYXN0PFJlbmRlckJveD4oKnJlbmRlcmVyKS5jb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhG
b3JDb250ZW50KCkpOwogICAgICAgICAgICAgfSBlbHNlCkBAIC0zMzQ1LDIwICszMzQ0LDIwIEBA
IFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcjoKICAgICAgICAgICAgIHJl
dHVybiByZW5kZXJFbXBoYXNpc1Bvc2l0aW9uRmxhZ3NUb0NTU1ZhbHVlKHN0eWxlLnRleHRFbXBo
YXNpc1Bvc2l0aW9uKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhh
c2lzU3R5bGU6CiAgICAgICAgICAgICBzd2l0Y2ggKHN0eWxlLnRleHRFbXBoYXNpc01hcmsoKSkg
ewotICAgICAgICAgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrTm9uZToKKyAgICAgICAgICAgIGNh
c2UgVGV4dEVtcGhhc2lzTWFyazo6Tm9uZToKICAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFs
dWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwotICAgICAgICAgICAg
Y2FzZSBUZXh0RW1waGFzaXNNYXJrQ3VzdG9tOgorICAgICAgICAgICAgY2FzZSBUZXh0RW1waGFz
aXNNYXJrOjpDdXN0b206CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShzdHlsZS50ZXh0RW1waGFzaXNDdXN0b21NYXJrKCksIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfU1RSSU5HKTsKLSAgICAgICAgICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya0F1dG86Cisg
ICAgICAgICAgICBjYXNlIFRleHRFbXBoYXNpc01hcms6OkF1dG86CiAgICAgICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjaWYgQVNTRVJUX0RJU0FCTEVECiAgICAgICAgICAgICAg
ICAgRkFMTFRIUk9VR0g7CiAjZW5kaWYKLSAgICAgICAgICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFy
a0RvdDoKLSAgICAgICAgICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya0NpcmNsZToKLSAgICAgICAg
ICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya0RvdWJsZUNpcmNsZToKLSAgICAgICAgICAgIGNhc2Ug
VGV4dEVtcGhhc2lzTWFya1RyaWFuZ2xlOgotICAgICAgICAgICAgY2FzZSBUZXh0RW1waGFzaXNN
YXJrU2VzYW1lOgorICAgICAgICAgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrOjpEb3Q6CisgICAg
ICAgICAgICBjYXNlIFRleHRFbXBoYXNpc01hcms6OkNpcmNsZToKKyAgICAgICAgICAgIGNhc2Ug
VGV4dEVtcGhhc2lzTWFyazo6RG91YmxlQ2lyY2xlOgorICAgICAgICAgICAgY2FzZSBUZXh0RW1w
aGFzaXNNYXJrOjpUcmlhbmdsZToKKyAgICAgICAgICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFyazo6
U2VzYW1lOgogICAgICAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRl
U3BhY2VTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKHN0eWxlLnRleHRFbXBoYXNpc0ZpbGwoKSkpOwogICAgICAgICAgICAg
ICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUudGV4dEVtcGhh
c2lzTWFyaygpKSk7CkBAIC0zNTYwLDE2ICszNTU5LDE2IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29t
cHV0ZWRTdHlsZUV4dHJhY3RvcjoKICAgICAgICAgICAgIGlmICh0KSB7CiAgICAgICAgICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0LT5zaXplKCk7ICsraSkgewogICAgICAgICAgICAg
ICAgICAgICBzd2l0Y2ggKHQtPmFuaW1hdGlvbihpKS5maWxsTW9kZSgpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGVOb25lOgorICAgICAgICAgICAgICAgICAg
ICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlOjpOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAg
bGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVO
b25lKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSBBbmltYXRpb25GaWxsTW9kZUZvcndhcmRzOgorICAgICAgICAgICAgICAgICAgICBj
YXNlIEFuaW1hdGlvbkZpbGxNb2RlOjpGb3J3YXJkczoKICAgICAgICAgICAgICAgICAgICAgICAg
IGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
Rm9yd2FyZHMpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlQmFja3dhcmRzOgorICAgICAgICAgICAgICAg
ICAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlOjpCYWNrd2FyZHM6CiAgICAgICAgICAgICAgICAg
ICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZUJhY2t3YXJkcykpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGVCb3RoOgorICAgICAgICAgICAg
ICAgICAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlOjpCb3RoOgogICAgICAgICAgICAgICAgICAg
ICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVCb3RoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgfQpAQCAtMzYwOCwxMSArMzYwNywxNCBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1
dGVkU3R5bGVFeHRyYWN0b3I6CiAgICAgICAgICAgICBjb25zdCBBbmltYXRpb25MaXN0KiB0ID0g
c3R5bGUuYW5pbWF0aW9ucygpOwogICAgICAgICAgICAgaWYgKHQpIHsKICAgICAgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHQtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGludCBwcm9wID0gdC0+YW5pbWF0aW9uKGkpLnBsYXlTdGF0ZSgpOwotICAgICAgICAg
ICAgICAgICAgICBpZiAocHJvcCA9PSBBbmltUGxheVN0YXRlUGxheWluZykKKyAgICAgICAgICAg
ICAgICAgICAgc3dpdGNoICh0LT5hbmltYXRpb24oaSkucGxheVN0YXRlKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSBBbmltYXRpb25QbGF5U3RhdGU6OlBsYXlpbmc6CiAgICAgICAgICAg
ICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShDU1NWYWx1ZVJ1bm5pbmcpKTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQW5pbWF0
aW9uUGxheVN0YXRlOjpQYXVzZWQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVBhdXNlZCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBsaXN0
LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVJ1bm5p
bmcpKTsKQEAgLTM3MDUsNyArMzcwNyw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHls
ZUV4dHJhY3RvcjoKICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSdGxPcmRlcmluZzoKLSAgICAgICAgICAg
IHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKHN0eWxlLnJ0bE9yZGVy
aW5nKCkgPyBDU1NWYWx1ZVZpc3VhbCA6IENTU1ZhbHVlTG9naWNhbCk7CisgICAgICAgICAgICBy
ZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShzdHlsZS5ydGxPcmRlcmlu
ZygpID09IE9yZGVyOjpWaXN1YWwgPyBDU1NWYWx1ZVZpc3VhbCA6IENTU1ZhbHVlTG9naWNhbCk7
CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRhcEhpZ2hsaWdodENvbG9yOgogICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRDb2xvck9yVmFs
aWRDb2xvcigmc3R5bGUsIHN0eWxlLnRhcEhpZ2hsaWdodENvbG9yKCkpOwpAQCAtMzgzMyw3ICsz
ODM1LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOgogICAgICAg
ICAgICAgaWYgKGlzPFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24+KCpvcGVyYXRpb24pKSB7CiAgICAg
ICAgICAgICAgICAgYXV0byYgc2hhcGVPcGVyYXRpb24gPSBkb3duY2FzdDxTaGFwZUNsaXBQYXRo
T3BlcmF0aW9uPigqb3BlcmF0aW9uKTsKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQodmFs
dWVGb3JCYXNpY1NoYXBlKHN0eWxlLCBzaGFwZU9wZXJhdGlvbi5iYXNpY1NoYXBlKCkpKTsKLSAg
ICAgICAgICAgICAgICBpZiAoc2hhcGVPcGVyYXRpb24ucmVmZXJlbmNlQm94KCkgIT0gQm94TWlz
c2luZykKKyAgICAgICAgICAgICAgICBpZiAoc2hhcGVPcGVyYXRpb24ucmVmZXJlbmNlQm94KCkg
IT0gQ1NTQm94VHlwZTo6Qm94TWlzc2luZykKICAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBw
ZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzaGFwZU9wZXJhdGlvbi5yZWZlcmVuY2VCb3go
KSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGlzPEJveENsaXBQYXRoT3BlcmF0
aW9uPigqb3BlcmF0aW9uKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
NTEsOCArNTEsOCBAQCBlbnVtIEFkanVzdFBpeGVsVmFsdWVzRm9yQ29tcHV0ZWRTdHlsZSB7CiAK
IGNsYXNzIENvbXB1dGVkU3R5bGVFeHRyYWN0b3IgewogcHVibGljOgotICAgIENvbXB1dGVkU3R5
bGVFeHRyYWN0b3IoTm9kZSosIGJvb2wgYWxsb3dWaXNpdGVkU3R5bGUgPSBmYWxzZSwgUHNldWRv
SWQgPSBOT1BTRVVETyk7Ci0gICAgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcihFbGVtZW50KiwgYm9v
bCBhbGxvd1Zpc2l0ZWRTdHlsZSA9IGZhbHNlLCBQc2V1ZG9JZCA9IE5PUFNFVURPKTsKKyAgICBD
b21wdXRlZFN0eWxlRXh0cmFjdG9yKE5vZGUqLCBib29sIGFsbG93VmlzaXRlZFN0eWxlID0gZmFs
c2UsIFBzZXVkb0lkID0gUHNldWRvSWQ6Ok5vbmUpOworICAgIENvbXB1dGVkU3R5bGVFeHRyYWN0
b3IoRWxlbWVudCosIGJvb2wgYWxsb3dWaXNpdGVkU3R5bGUgPSBmYWxzZSwgUHNldWRvSWQgPSBQ
c2V1ZG9JZDo6Tm9uZSk7CiAKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHByb3BlcnR5VmFsdWUoQ1NT
UHJvcGVydHlJRCwgRVVwZGF0ZUxheW91dCA9IFVwZGF0ZUxheW91dCk7CiAgICAgUmVmUHRyPENT
U1ZhbHVlPiB2YWx1ZUZvclByb3BlcnR5aW5TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIENTU1By
b3BlcnR5SUQsIFJlbmRlckVsZW1lbnQqID0gbnVsbHB0cik7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgJKHJldmlzaW9uIDIzMjEwNCkK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEwNzMsNDUgKzEwNzMsNDUgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6Om9wZQogICAgIHJldHVybiBCb3hPcmllbnQ6Okhvcml6b250YWw7CiB9CiAK
LXRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShF
Q2FwdGlvblNpZGUgZSkKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQ
cmltaXRpdmVWYWx1ZShDYXB0aW9uU2lkZSBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xh
c3MpCiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsKICAgICBzd2l0
Y2ggKGUpIHsKLSAgICBjYXNlIENBUExFRlQ6CisgICAgY2FzZSBDYXB0aW9uU2lkZTo6TGVmdDoK
ICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVMZWZ0OwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIENBUFJJR0hUOgorICAgIGNhc2UgQ2FwdGlvblNpZGU6OlJpZ2h0OgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVJpZ2h0OwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIENBUFRPUDoKKyAgICBjYXNlIENhcHRpb25TaWRlOjpUb3A6CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlVG9wOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENBUEJPVFRP
TToKKyAgICBjYXNlIENhcHRpb25TaWRlOjpCb3R0b206CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlQm90dG9tOwogICAgICAgICBicmVhazsKICAgICB9CiB9CiAKLXRlbXBsYXRl
PD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFQ2FwdGlvblNpZGUoKSBjb25z
dAordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIENhcHRpb25T
aWRlKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNWYWx1ZUlEKCkpOwogCiAgICAgc3dpdGNoICht
X3ZhbHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlTGVmdDoKLSAgICAgICAgcmV0dXJu
IENBUExFRlQ7CisgICAgICAgIHJldHVybiBDYXB0aW9uU2lkZTo6TGVmdDsKICAgICBjYXNlIENT
U1ZhbHVlUmlnaHQ6Ci0gICAgICAgIHJldHVybiBDQVBSSUdIVDsKKyAgICAgICAgcmV0dXJuIENh
cHRpb25TaWRlOjpSaWdodDsKICAgICBjYXNlIENTU1ZhbHVlVG9wOgotICAgICAgICByZXR1cm4g
Q0FQVE9QOworICAgICAgICByZXR1cm4gQ2FwdGlvblNpZGU6OlRvcDsKICAgICBjYXNlIENTU1Zh
bHVlQm90dG9tOgotICAgICAgICByZXR1cm4gQ0FQQk9UVE9NOworICAgICAgICByZXR1cm4gQ2Fw
dGlvblNpZGU6OkJvdHRvbTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQ0FQVE9QOworICAgIHJldHVy
biBDYXB0aW9uU2lkZTo6VG9wOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoQ2xlYXIgZSkKQEAgLTExNTUsMTQwICsxMTU1LDE0MCBA
QCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlCiAgICAgcmV0dXJuIENs
ZWFyOjpOb25lOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
UHJpbWl0aXZlVmFsdWUoRUN1cnNvciBlKQordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEN1cnNvclR5cGUgZSkKICAgICA6IENTU1ZhbHVlKFBy
aW1pdGl2ZUNsYXNzKQogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7
CiAgICAgc3dpdGNoIChlKSB7Ci0gICAgY2FzZSBDdXJzb3JBdXRvOgorICAgIGNhc2UgQ3Vyc29y
VHlwZTo6QXV0bzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBdXRvOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNvckRlZmF1bHQ6CisgICAgY2FzZSBDdXJzb3JUeXBl
OjpEZWZhdWx0OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZURlZmF1bHQ7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yTm9uZToKKyAgICBjYXNlIEN1cnNvclR5cGU6
Ok5vbmU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTm9uZTsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JDb250ZXh0TWVudToKKyAgICBjYXNlIEN1cnNvclR5cGU6
OkNvbnRleHRNZW51OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUNvbnRleHRN
ZW51OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNvckhlbHA6CisgICAgY2FzZSBDdXJz
b3JUeXBlOjpIZWxwOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUhlbHA7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yUG9pbnRlcjoKKyAgICBjYXNlIEN1cnNvclR5
cGU6OlBvaW50ZXI6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlUG9pbnRlcjsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JQcm9ncmVzczoKKyAgICBjYXNlIEN1cnNv
clR5cGU6OlByb2dyZXNzOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVByb2dy
ZXNzOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNvcldhaXQ6CisgICAgY2FzZSBDdXJz
b3JUeXBlOjpXYWl0OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVdhaXQ7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yQ2VsbDoKKyAgICBjYXNlIEN1cnNvclR5cGU6
OkNlbGw6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQ2VsbDsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JDcm9zc2hhaXI6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpD
cm9zc2hhaXI6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQ3Jvc3NoYWlyOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNvclRleHQ6CisgICAgY2FzZSBDdXJzb3JUeXBl
OjpUZXh0OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVRleHQ7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yVmVydGljYWxUZXh0OgorICAgIGNhc2UgQ3Vyc29yVHlw
ZTo6VmVydGljYWxUZXh0OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVZlcnRp
Y2FsVGV4dDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JBbGlhczoKKyAgICBjYXNl
IEN1cnNvclR5cGU6OkFsaWFzOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUFs
aWFzOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNvckNvcHk6CisgICAgY2FzZSBDdXJz
b3JUeXBlOjpDb3B5OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUNvcHk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yTW92ZToKKyAgICBjYXNlIEN1cnNvclR5cGU6
Ok1vdmU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTW92ZTsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JOb0Ryb3A6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpOb0Ry
b3A6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTm9Ecm9wOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEN1cnNvck5vdEFsbG93ZWQ6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpO
b3RBbGxvd2VkOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5vdEFsbG93ZWQ7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yR3JhYjoKKyAgICBjYXNlIEN1cnNvclR5
cGU6OkdyYWI6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlR3JhYjsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JHcmFiYmluZzoKKyAgICBjYXNlIEN1cnNvclR5cGU6
OkdyYWJiaW5nOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUdyYWJiaW5nOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNvckVSZXNpemU6CisgICAgY2FzZSBDdXJzb3JU
eXBlOjpFUmVzaXplOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUVSZXNpemU7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yTlJlc2l6ZToKKyAgICBjYXNlIEN1cnNv
clR5cGU6Ok5SZXNpemU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTlJlc2l6
ZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JOZVJlc2l6ZToKKyAgICBjYXNlIEN1
cnNvclR5cGU6Ok5FUmVzaXplOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5l
UmVzaXplOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNvck53UmVzaXplOgorICAgIGNh
c2UgQ3Vyc29yVHlwZTo6TldSZXNpemU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlTndSZXNpemU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yU1Jlc2l6ZToKKyAg
ICBjYXNlIEN1cnNvclR5cGU6OlNSZXNpemU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlU1Jlc2l6ZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JTZVJlc2l6ZToK
KyAgICBjYXNlIEN1cnNvclR5cGU6OlNFUmVzaXplOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQg
PSBDU1NWYWx1ZVNlUmVzaXplOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNvclN3UmVz
aXplOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6U1dSZXNpemU6CiAgICAgICAgIG1fdmFsdWUudmFs
dWVJRCA9IENTU1ZhbHVlU3dSZXNpemU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29y
V1Jlc2l6ZToKKyAgICBjYXNlIEN1cnNvclR5cGU6OldSZXNpemU6CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlV1Jlc2l6ZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJz
b3JFd1Jlc2l6ZToKKyAgICBjYXNlIEN1cnNvclR5cGU6OkVXUmVzaXplOgogICAgICAgICBtX3Zh
bHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUV3UmVzaXplOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEN1cnNvck5zUmVzaXplOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6TlNSZXNpemU6CiAgICAgICAg
IG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTnNSZXNpemU7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgQ3Vyc29yTmVzd1Jlc2l6ZToKKyAgICBjYXNlIEN1cnNvclR5cGU6Ok5FU1dSZXNpemU6
CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTmVzd1Jlc2l6ZTsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JOd3NlUmVzaXplOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6
TldTRVJlc2l6ZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOd3NlUmVzaXpl
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNvckNvbFJlc2l6ZToKKyAgICBjYXNlIEN1
cnNvclR5cGU6OkNvbHVtblJlc2l6ZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFs
dWVDb2xSZXNpemU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yUm93UmVzaXplOgor
ICAgIGNhc2UgQ3Vyc29yVHlwZTo6Um93UmVzaXplOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQg
PSBDU1NWYWx1ZVJvd1Jlc2l6ZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JBbGxT
Y3JvbGw6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpBbGxTY3JvbGw6CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlQWxsU2Nyb2xsOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1
cnNvclpvb21JbjoKKyAgICBjYXNlIEN1cnNvclR5cGU6Olpvb21JbjoKICAgICAgICAgbV92YWx1
ZS52YWx1ZUlEID0gQ1NTVmFsdWVab29tSW47CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vy
c29yWm9vbU91dDoKKyAgICBjYXNlIEN1cnNvclR5cGU6Olpvb21PdXQ6CiAgICAgICAgIG1fdmFs
dWUudmFsdWVJRCA9IENTU1ZhbHVlWm9vbU91dDsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQog
Ci10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUN1cnNvcigp
IGNvbnN0Cit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQ3Vy
c29yVHlwZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzVmFsdWVJRCgpKTsKICAgICBzd2l0Y2gg
KG1fdmFsdWUudmFsdWVJRCkgewogICAgIGNhc2UgQ1NTVmFsdWVDb3B5OgotICAgICAgICByZXR1
cm4gQ3Vyc29yQ29weTsKKyAgICAgICAgcmV0dXJuIEN1cnNvclR5cGU6OkNvcHk7CiAgICAgY2Fz
ZSBDU1NWYWx1ZVdlYmtpdEdyYWI6Ci0gICAgICAgIHJldHVybiBDdXJzb3JHcmFiOworICAgICAg
ICByZXR1cm4gQ3Vyc29yVHlwZTo6R3JhYjsKICAgICBjYXNlIENTU1ZhbHVlV2Via2l0R3JhYmJp
bmc6Ci0gICAgICAgIHJldHVybiBDdXJzb3JHcmFiYmluZzsKKyAgICAgICAgcmV0dXJuIEN1cnNv
clR5cGU6OkdyYWJiaW5nOwogICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRab29tSW46Ci0gICAgICAg
IHJldHVybiBDdXJzb3Jab29tSW47CisgICAgICAgIHJldHVybiBDdXJzb3JUeXBlOjpab29tSW47
CiAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdFpvb21PdXQ6Ci0gICAgICAgIHJldHVybiBDdXJzb3Ja
b29tT3V0OworICAgICAgICByZXR1cm4gQ3Vyc29yVHlwZTo6Wm9vbU91dDsKICAgICBjYXNlIENT
U1ZhbHVlTm9uZToKLSAgICAgICAgcmV0dXJuIEN1cnNvck5vbmU7CisgICAgICAgIHJldHVybiBD
dXJzb3JUeXBlOjpOb25lOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxFQ3Vyc29yPihtX3ZhbHVlLnZhbHVlSUQgLSBDU1NWYWx1ZUF1dG8pOworICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Q3Vyc29yVHlwZT4obV92YWx1ZS52YWx1ZUlEIC0gQ1NTVmFsdWVBdXRv
KTsKICAgICB9CiB9CiAKQEAgLTEyOTgsMTAgKzEyOTgsMTAgQEAgdGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTUwogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1Nf
VkFMVUVfSUQ7CiAgICAgc3dpdGNoIChlKSB7Ci0gICAgY2FzZSBDdXJzb3JWaXNpYmlsaXR5QXV0
bzoKKyAgICBjYXNlIEN1cnNvclZpc2liaWxpdHk6OkF1dG86CiAgICAgICAgIG1fdmFsdWUudmFs
dWVJRCA9IENTU1ZhbHVlQXV0bzsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JWaXNp
YmlsaXR5QXV0b0hpZGU6CisgICAgY2FzZSBDdXJzb3JWaXNpYmlsaXR5OjpBdXRvSGlkZToKICAg
ICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBdXRvSGlkZTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQpAQCAtMTMxMiwxMzkgKzEzMTIsMTM5IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1By
aW1pdGl2ZVZhbHVlOjpvcGUKICAgICBBU1NFUlQoaXNWYWx1ZUlEKCkpOwogCiAgICAgaWYgKG1f
dmFsdWUudmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgIHJldHVybiBDdXJzb3JWaXNp
YmlsaXR5QXV0bzsKKyAgICAgICAgcmV0dXJuIEN1cnNvclZpc2liaWxpdHk6OkF1dG87CiAgICAg
aWYgKG1fdmFsdWUudmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG9IaWRlKQotICAgICAgICByZXR1cm4g
Q3Vyc29yVmlzaWJpbGl0eUF1dG9IaWRlOworICAgICAgICByZXR1cm4gQ3Vyc29yVmlzaWJpbGl0
eTo6QXV0b0hpZGU7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQ3Vy
c29yVmlzaWJpbGl0eUF1dG87CisgICAgcmV0dXJuIEN1cnNvclZpc2liaWxpdHk6OkF1dG87CiB9
CiAjZW5kaWYKIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1p
dGl2ZVZhbHVlKEVEaXNwbGF5IGUpCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRGlzcGxheVR5cGUgZSkKICAgICA6IENTU1ZhbHVlKFByaW1p
dGl2ZUNsYXNzKQogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAg
ICAgc3dpdGNoIChlKSB7Ci0gICAgY2FzZSBJTkxJTkU6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6
SW5saW5lOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUlubGluZTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBCTE9DSzoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpCbG9jazoK
ICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVCbG9jazsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBMSVNUX0lURU06CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6TGlzdEl0ZW06CiAg
ICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTGlzdEl0ZW07CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQ09NUEFDVDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpDb21wYWN0OgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUNvbXBhY3Q7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgSU5MSU5FX0JMT0NLOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OklubGluZUJsb2Nr
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUlubGluZUJsb2NrOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFRBQkxFOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlOgog
ICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVRhYmxlOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIElOTElORV9UQUJMRToKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpJbmxpbmVUYWJs
ZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVJbmxpbmVUYWJsZTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBUQUJMRV9ST1dfR1JPVVA6CisgICAgY2FzZSBEaXNwbGF5VHlw
ZTo6VGFibGVSb3dHcm91cDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVUYWJs
ZVJvd0dyb3VwOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRBQkxFX0hFQURFUl9HUk9VUDoK
KyAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZUhlYWRlckdyb3VwOgogICAgICAgICBtX3ZhbHVl
LnZhbHVlSUQgPSBDU1NWYWx1ZVRhYmxlSGVhZGVyR3JvdXA7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgVEFCTEVfRk9PVEVSX0dST1VQOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlRm9v
dGVyR3JvdXA6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVGFibGVGb290ZXJH
cm91cDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUQUJMRV9ST1c6CisgICAgY2FzZSBEaXNw
bGF5VHlwZTo6VGFibGVSb3c6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVGFi
bGVSb3c7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVEFCTEVfQ09MVU1OX0dST1VQOgorICAg
IGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlQ29sdW1uR3JvdXA6CiAgICAgICAgIG1fdmFsdWUudmFs
dWVJRCA9IENTU1ZhbHVlVGFibGVDb2x1bW5Hcm91cDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBUQUJMRV9DT0xVTU46CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1bW46CiAgICAg
ICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVGFibGVDb2x1bW47CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgVEFCTEVfQ0VMTDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZUNlbGw6
CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVGFibGVDZWxsOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFRBQkxFX0NBUFRJT046CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFi
bGVDYXB0aW9uOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVRhYmxlQ2FwdGlv
bjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBCT1g6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6
Qm94OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVdlYmtpdEJveDsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBJTkxJTkVfQk9YOgorICAgIGNhc2UgRGlzcGxheVR5cGU6Oklu
bGluZUJveDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVXZWJraXRJbmxpbmVC
b3g7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRkxFWDoKLSAgICBjYXNlIFdFQktJVF9GTEVY
OgorICAgIGNhc2UgRGlzcGxheVR5cGU6OkZsZXg6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6V2Vi
S2l0RmxleDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVGbGV4OwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIElOTElORV9GTEVYOgotICAgIGNhc2UgV0VCS0lUX0lOTElORV9G
TEVYOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OklubGluZUZsZXg6CisgICAgY2FzZSBEaXNwbGF5
VHlwZTo6V2ViS2l0SW5saW5lRmxleDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFs
dWVJbmxpbmVGbGV4OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEdSSUQ6CisgICAgY2FzZSBE
aXNwbGF5VHlwZTo6R3JpZDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVHcmlk
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIElOTElORV9HUklEOgorICAgIGNhc2UgRGlzcGxh
eVR5cGU6OklubGluZUdyaWQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlSW5s
aW5lR3JpZDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBOT05FOgorICAgIGNhc2UgRGlzcGxh
eVR5cGU6Ok5vbmU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTm9uZTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDT05URU5UUzoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpD
b250ZW50czoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVDb250ZW50czsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVW
YWx1ZTo6b3BlcmF0b3IgRURpc3BsYXkoKSBjb25zdAordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6Om9wZXJhdG9yIERpc3BsYXlUeXBlKCkgY29uc3QKIHsKICAgICBBU1NFUlQo
aXNWYWx1ZUlEKCkpOwogCiAgICAgaWYgKG1fdmFsdWUudmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUp
Ci0gICAgICAgIHJldHVybiBOT05FOworICAgICAgICByZXR1cm4gRGlzcGxheVR5cGU6Ok5vbmU7
CiAKLSAgICBFRGlzcGxheSBkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8RURpc3BsYXk+KG1fdmFsdWUu
dmFsdWVJRCAtIENTU1ZhbHVlSW5saW5lKTsKLSAgICBBU1NFUlQoZGlzcGxheSA+PSBJTkxJTkUg
JiYgZGlzcGxheSA8PSBOT05FKTsKLSAgICBpZiAoZGlzcGxheSA9PSBXRUJLSVRfRkxFWCkKLSAg
ICAgICAgcmV0dXJuIEZMRVg7Ci0gICAgaWYgKGRpc3BsYXkgPT0gV0VCS0lUX0lOTElORV9GTEVY
KQotICAgICAgICByZXR1cm4gSU5MSU5FX0ZMRVg7CisgICAgRGlzcGxheVR5cGUgZGlzcGxheSA9
IHN0YXRpY19jYXN0PERpc3BsYXlUeXBlPihtX3ZhbHVlLnZhbHVlSUQgLSBDU1NWYWx1ZUlubGlu
ZSk7CisgICAgQVNTRVJUKGRpc3BsYXkgPj0gRGlzcGxheVR5cGU6OklubGluZSAmJiBkaXNwbGF5
IDw9IERpc3BsYXlUeXBlOjpOb25lKTsKKyAgICBpZiAoZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6
V2ViS2l0RmxleCkKKyAgICAgICAgcmV0dXJuIERpc3BsYXlUeXBlOjpGbGV4OworICAgIGlmIChk
aXNwbGF5ID09IERpc3BsYXlUeXBlOjpXZWJLaXRJbmxpbmVGbGV4KQorICAgICAgICByZXR1cm4g
RGlzcGxheVR5cGU6OklubGluZUZsZXg7CiAgICAgcmV0dXJuIGRpc3BsYXk7CiB9CiAKLXRlbXBs
YXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShFRW1wdHlD
ZWxsIGUpCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZl
VmFsdWUoRW1wdHlDZWxsIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKICAg
ICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAoZSkgewot
ICAgIGNhc2UgU0hPVzoKKyAgICBjYXNlIEVtcHR5Q2VsbDo6U2hvdzoKICAgICAgICAgbV92YWx1
ZS52YWx1ZUlEID0gQ1NTVmFsdWVTaG93OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEhJREU6
CisgICAgY2FzZSBFbXB0eUNlbGw6OkhpZGU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlSGlkZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCi10ZW1wbGF0ZTw+IGlubGlu
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUVtcHR5Q2VsbCgpIGNvbnN0Cit0ZW1wbGF0
ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRW1wdHlDZWxsKCkgY29uc3QK
IHsKICAgICBBU1NFUlQoaXNWYWx1ZUlEKCkpOwogCiAgICAgc3dpdGNoIChtX3ZhbHVlLnZhbHVl
SUQpIHsKICAgICBjYXNlIENTU1ZhbHVlU2hvdzoKLSAgICAgICAgcmV0dXJuIFNIT1c7CisgICAg
ICAgIHJldHVybiBFbXB0eUNlbGw6OlNob3c7CiAgICAgY2FzZSBDU1NWYWx1ZUhpZGU6Ci0gICAg
ICAgIHJldHVybiBISURFOworICAgICAgICByZXR1cm4gRW1wdHlDZWxsOjpIaWRlOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIHJldHVybiBTSE9XOworICAgIHJldHVybiBFbXB0eUNlbGw6OlNob3c7CiB9CiAKIHRl
bXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShGbGV4
RGlyZWN0aW9uIGUpCkBAIC0xNjgxLDI5NyArMTY4MSwyOTcgQEAgdGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZQogICAgIHJldHVybiBMaW5lQnJlYWs6OkF1dG87CiB9CiAK
LXRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShF
TGlzdFN0eWxlUG9zaXRpb24gZSkKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NQcmltaXRpdmVWYWx1ZShMaXN0U3R5bGVQb3NpdGlvbiBlKQogICAgIDogQ1NTVmFsdWUo
UHJpbWl0aXZlQ2xhc3MpCiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9J
RDsKICAgICBzd2l0Y2ggKGUpIHsKLSAgICBjYXNlIE9VVFNJREU6CisgICAgY2FzZSBMaXN0U3R5
bGVQb3NpdGlvbjo6T3V0c2lkZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVP
dXRzaWRlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIElOU0lERToKKyAgICBjYXNlIExpc3RT
dHlsZVBvc2l0aW9uOjpJbnNpZGU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVl
SW5zaWRlOwogICAgICAgICBicmVhazsKICAgICB9CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFTGlzdFN0eWxlUG9zaXRpb24oKSBjb25zdAordGVt
cGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIExpc3RTdHlsZVBvc2l0
aW9uKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNWYWx1ZUlEKCkpOwogCiAgICAgc3dpdGNoICht
X3ZhbHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlT3V0c2lkZToKLSAgICAgICAgcmV0
dXJuIE9VVFNJREU7CisgICAgICAgIHJldHVybiBMaXN0U3R5bGVQb3NpdGlvbjo6T3V0c2lkZTsK
ICAgICBjYXNlIENTU1ZhbHVlSW5zaWRlOgotICAgICAgICByZXR1cm4gSU5TSURFOworICAgICAg
ICByZXR1cm4gTGlzdFN0eWxlUG9zaXRpb246Okluc2lkZTsKICAgICBkZWZhdWx0OgogICAgICAg
ICBicmVhazsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
T1VUU0lERTsKKyAgICByZXR1cm4gTGlzdFN0eWxlUG9zaXRpb246Ok91dHNpZGU7CiB9CiAKLXRl
bXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShFTGlz
dFN0eWxlVHlwZSBlKQordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1By
aW1pdGl2ZVZhbHVlKExpc3RTdHlsZVR5cGUgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNs
YXNzKQogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dp
dGNoIChlKSB7Ci0gICAgY2FzZSBBZmFyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QWZhcjoK
ICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBZmFyOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIEFtaGFyaWM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBbWhhcmljOgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUFtaGFyaWM7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQW1oYXJpY0FiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBbWhhcmlj
QWJlZ2VkZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBbWhhcmljQWJlZ2Vk
ZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBcmFiaWNJbmRpYzoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OkFyYWJpY0luZGljOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1
ZUFyYWJpY0luZGljOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEFybWVuaWFuOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6QXJtZW5pYW46CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlQXJtZW5pYW47CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQXN0ZXJpc2tzOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6QXN0ZXJpc2tzOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQg
PSBDU1NWYWx1ZUFzdGVyaXNrczsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBCaW5hcnlMaXN0
U3R5bGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpCaW5hcnk6CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlQmluYXJ5OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJlbmdh
bGk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpCZW5nYWxpOgogICAgICAgICBtX3ZhbHVlLnZh
bHVlSUQgPSBDU1NWYWx1ZUJlbmdhbGk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ2FtYm9k
aWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2FtYm9kaWFuOgogICAgICAgICBtX3ZhbHVl
LnZhbHVlSUQgPSBDU1NWYWx1ZUNhbWJvZGlhbjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBD
aXJjbGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDaXJjbGU6CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlQ2lyY2xlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENqa0Vh
cnRobHlCcmFuY2g6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDamtFYXJ0aGx5QnJhbmNoOgog
ICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUNqa0VhcnRobHlCcmFuY2g7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ2prSGVhdmVubHlTdGVtOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6Q2prSGVhdmVubHlTdGVtOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1
ZUNqa0hlYXZlbmx5U3RlbTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDSktJZGVvZ3JhcGhp
YzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNKS0lkZW9ncmFwaGljOgogICAgICAgICBtX3Zh
bHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUNqa0lkZW9ncmFwaGljOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIERlY2ltYWxMZWFkaW5nWmVybzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRlY2lt
YWxMZWFkaW5nWmVybzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVEZWNpbWFs
TGVhZGluZ1plcm87CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGVjaW1hbExpc3RTdHlsZToK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRlY2ltYWw6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlRGVjaW1hbDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEZXZhbmFnYXJp
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGV2YW5hZ2FyaToKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVEZXZhbmFnYXJpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERp
c2M6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEaXNjOgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZURpc2M7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXRoaW9waWM6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpYzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVFdGhpb3BpYzsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFdGhpb3BpY0Fi
ZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGU6CiAgICAgICAg
IG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRXRoaW9waWNBYmVnZWRlOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZUFtRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpFdGhpb3BpY0FiZWdlZGVBbUV0OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1
ZUV0aGlvcGljQWJlZ2VkZUFtRXQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXRoaW9waWNB
YmVnZWRlR2V6OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlR2V6Ogog
ICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUV0aGlvcGljQWJlZ2VkZUdlejsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVUaUVyOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlVGlFcjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVFdGhpb3BpY0FiZWdlZGVUaUVyOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEV0aGlvcGljQWJlZ2VkZVRpRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0Fi
ZWdlZGVUaUV0OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUV0aGlvcGljQWJl
Z2VkZVRpRXQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUFhRXI6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lQWFFcjoKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVFdGhpb3BpY0hhbGVoYW1lQWFFcjsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lQWFFdDoKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVBYUV0OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZUV0aGlvcGljSGFsZWhhbWVBYUV0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV0
aGlvcGljSGFsZWhhbWVBbUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxl
aGFtZUFtRXQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRXRoaW9waWNIYWxl
aGFtZUFtRXQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUdlejoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVHZXo6CiAgICAgICAgIG1f
dmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRXRoaW9waWNIYWxlaGFtZUdlejsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lT21FdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkV0aGlvcGljSGFsZWhhbWVPbUV0OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NW
YWx1ZUV0aGlvcGljSGFsZWhhbWVPbUV0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV0aGlv
cGljSGFsZWhhbWVTaWRFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhh
bWVTaWRFdDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVFdGhpb3BpY0hhbGVo
YW1lU2lkRXQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVNvRXQ6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lU29FdDoKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVFdGhpb3BpY0hhbGVoYW1lU29FdDsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lVGlFcjoKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVUaUVyOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZUV0aGlvcGljSGFsZWhhbWVUaUVyOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV0
aGlvcGljSGFsZWhhbWVUaUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxl
aGFtZVRpRXQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRXRoaW9waWNIYWxl
aGFtZVRpRXQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVRpZzoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVUaWc6CiAgICAgICAgIG1f
dmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRXRoaW9waWNIYWxlaGFtZVRpZzsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBGb290bm90ZXM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpGb290bm90
ZXM6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRm9vdG5vdGVzOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEdlb3JnaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6R2Vv
cmdpYW46CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlR2VvcmdpYW47CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgR3VqYXJhdGk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpH
dWphcmF0aToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVHdWphcmF0aTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHdXJtdWtoaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
Okd1cm11a2hpOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUd1cm11a2hpOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEhhbmd1bDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
Okhhbmd1bDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVIYW5ndWw7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSGFuZ3VsQ29uc29uYW50OgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6SGFuZ3VsQ29uc29uYW50OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1
ZUhhbmd1bENvbnNvbmFudDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIZWJyZXc6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpIZWJyZXc6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlSGVicmV3OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEhpcmFnYW5hOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6SGlyYWdhbmE6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlSGlyYWdhbmE7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSGlyYWdhbmFJcm9oYToK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkhpcmFnYW5hSXJvaGE6CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlSGlyYWdhbmFJcm9oYTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBLYW5uYWRhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6S2FubmFkYToKICAgICAgICAgbV92
YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVLYW5uYWRhOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEthdGFrYW5hOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6S2F0YWthbmE6CiAgICAgICAgIG1f
dmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlS2F0YWthbmE7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgS2F0YWthbmFJcm9oYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkthdGFrYW5hSXJvaGE6
CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlS2F0YWthbmFJcm9oYTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBLaG1lcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OktobWVy
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUtobWVyOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIExhbzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkxhbzoKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVMYW87CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
TG93ZXJBbHBoYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyQWxwaGE6CiAgICAgICAg
IG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTG93ZXJBbHBoYTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBMb3dlckFybWVuaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJBcm1l
bmlhbjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVMb3dlckFybWVuaWFuOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIExvd2VyR3JlZWs6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpMb3dlckdyZWVrOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUxvd2Vy
R3JlZWs7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTG93ZXJIZXhhZGVjaW1hbDoKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6Okxvd2VySGV4YWRlY2ltYWw6CiAgICAgICAgIG1fdmFsdWUudmFs
dWVJRCA9IENTU1ZhbHVlTG93ZXJIZXhhZGVjaW1hbDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBMb3dlckxhdGluOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJMYXRpbjoKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVMb3dlckxhdGluOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIExvd2VyTm9yd2VnaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJO
b3J3ZWdpYW46CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTG93ZXJOb3J3ZWdp
YW47CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTG93ZXJSb21hbjoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6Okxvd2VyUm9tYW46CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVl
TG93ZXJSb21hbjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNYWxheWFsYW06CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpNYWxheWFsYW06CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlTWFsYXlhbGFtOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE1vbmdvbGlhbjoKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6Ok1vbmdvbGlhbjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVNb25nb2xpYW47CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTXlhbm1hcjoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok15YW5tYXI6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlTXlhbm1hcjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBOb25lTGlzdFN0
eWxlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Tm9uZToKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVOb25lOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE9jdGFsOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6T2N0YWw6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlT2N0YWw7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3JpeWE6CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpPcml5YToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVP
cml5YTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPcm9tbzoKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6Ok9yb21vOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU9yb21vOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFBlcnNpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpQZXJzaWFuOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVBlcnNpYW47CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2lkYW1hOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
U2lkYW1hOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVNpZGFtYTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBTb21hbGk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpTb21h
bGk6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlU29tYWxpOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFNxdWFyZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlNxdWFyZToK
ICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVTcXVhcmU7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgVGVsdWd1OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGVsdWd1OgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVRlbHVndTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBUaGFpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGhhaToKICAgICAgICAgbV92
YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVUaGFpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRp
YmV0YW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWJldGFuOgogICAgICAgICBtX3ZhbHVl
LnZhbHVlSUQgPSBDU1NWYWx1ZVRpYmV0YW47CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVGln
cmU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyZToKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVUaWdyZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUaWdyaW55YUVy
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmlueWFFcjoKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVUaWdyaW55YUVyOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRp
Z3JpbnlhRXJBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmlueWFFckFiZWdl
ZGU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVGlncmlueWFFckFiZWdlZGU7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVGlncmlueWFFdDoKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OlRpZ3JpbnlhRXQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVGln
cmlueWFFdDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUaWdyaW55YUV0QWJlZ2VkZToKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXRBYmVnZWRlOgogICAgICAgICBtX3ZhbHVl
LnZhbHVlSUQgPSBDU1NWYWx1ZVRpZ3JpbnlhRXRBYmVnZWRlOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFVwcGVyQWxwaGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckFscGhhOgog
ICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVVwcGVyQWxwaGE7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgVXBwZXJBcm1lbmlhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVw
cGVyQXJtZW5pYW46CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVXBwZXJBcm1l
bmlhbjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBVcHBlckdyZWVrOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6VXBwZXJHcmVlazoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFs
dWVVcHBlckdyZWVrOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFVwcGVySGV4YWRlY2ltYWw6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckhleGFkZWNpbWFsOgogICAgICAgICBtX3Zh
bHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVVwcGVySGV4YWRlY2ltYWw7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgVXBwZXJMYXRpbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyTGF0aW46
CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVXBwZXJMYXRpbjsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBVcHBlck5vcndlZ2lhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
OlVwcGVyTm9yd2VnaWFuOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVVwcGVy
Tm9yd2VnaWFuOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFVwcGVyUm9tYW46CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpVcHBlclJvbWFuOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZVVwcGVyUm9tYW47CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVXJkdToKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OlVyZHU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlVXJkdTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBD
U1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUxpc3RTdHlsZVR5cGUoKSBjb25zdAordGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIExpc3RTdHlsZVR5cGUoKSBj
b25zdAogewogICAgIEFTU0VSVChpc1ZhbHVlSUQoKSk7CiAKICAgICBzd2l0Y2ggKG1fdmFsdWUu
dmFsdWVJRCkgewogICAgIGNhc2UgQ1NTVmFsdWVOb25lOgotICAgICAgICByZXR1cm4gTm9uZUxp
c3RTdHlsZTsKKyAgICAgICAgcmV0dXJuIExpc3RTdHlsZVR5cGU6Ok5vbmU7CiAgICAgZGVmYXVs
dDoKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVMaXN0U3R5bGVUeXBlPihtX3ZhbHVlLnZh
bHVlSUQgLSBDU1NWYWx1ZURpc2MpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TGlzdFN0
eWxlVHlwZT4obV92YWx1ZS52YWx1ZUlEIC0gQ1NTVmFsdWVEaXNjKTsKICAgICB9CiB9CiAKQEAg
LTIyMDIsMzQgKzIyMDIsMzQgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTUwogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dp
dGNoIChlKSB7Ci0gICAgY2FzZSBBdXRvQnJlYWtCZXR3ZWVuOgorICAgIGNhc2UgQnJlYWtCZXR3
ZWVuOjpBdXRvOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUF1dG87CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQXZvaWRCcmVha0JldHdlZW46CisgICAgY2FzZSBCcmVha0Jl
dHdlZW46OkF2b2lkOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUF2b2lkOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEF2b2lkQ29sdW1uQnJlYWtCZXR3ZWVuOgorICAgIGNh
c2UgQnJlYWtCZXR3ZWVuOjpBdm9pZENvbHVtbjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0g
Q1NTVmFsdWVBdm9pZENvbHVtbjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBdm9pZFBhZ2VC
cmVha0JldHdlZW46CisgICAgY2FzZSBCcmVha0JldHdlZW46OkF2b2lkUGFnZToKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBdm9pZFBhZ2U7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgQ29sdW1uQnJlYWtCZXR3ZWVuOgorICAgIGNhc2UgQnJlYWtCZXR3ZWVuOjpDb2x1bW46
CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQ29sdW1uOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIFBhZ2VCcmVha0JldHdlZW46CisgICAgY2FzZSBCcmVha0JldHdlZW46OlBh
Z2U6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlUGFnZTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBMZWZ0UGFnZUJyZWFrQmV0d2VlbjoKKyAgICBjYXNlIEJyZWFrQmV0d2Vl
bjo6TGVmdFBhZ2U6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTGVmdDsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSaWdodFBhZ2VCcmVha0JldHdlZW46CisgICAgY2FzZSBC
cmVha0JldHdlZW46OlJpZ2h0UGFnZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFs
dWVSaWdodDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSZWN0b1BhZ2VCcmVha0JldHdlZW46
CisgICAgY2FzZSBCcmVha0JldHdlZW46OlJlY3RvUGFnZToKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVSZWN0bzsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBWZXJzb1BhZ2VC
cmVha0JldHdlZW46CisgICAgY2FzZSBCcmVha0JldHdlZW46OlZlcnNvUGFnZToKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVWZXJzbzsKICAgICAgICAgYnJlYWs7CiAgICAgfQpA
QCAtMjI0MSwzMSArMjI0MSwzMSBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6b3BlCiAKICAgICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkgewogICAgIGNhc2UgQ1NTVmFs
dWVBdXRvOgotICAgICAgICByZXR1cm4gQXV0b0JyZWFrQmV0d2VlbjsKKyAgICAgICAgcmV0dXJu
IEJyZWFrQmV0d2Vlbjo6QXV0bzsKICAgICBjYXNlIENTU1ZhbHVlQXZvaWQ6Ci0gICAgICAgIHJl
dHVybiBBdm9pZEJyZWFrQmV0d2VlbjsKKyAgICAgICAgcmV0dXJuIEJyZWFrQmV0d2Vlbjo6QXZv
aWQ7CiAgICAgY2FzZSBDU1NWYWx1ZUF2b2lkQ29sdW1uOgotICAgICAgICByZXR1cm4gQXZvaWRD
b2x1bW5CcmVha0JldHdlZW47CisgICAgICAgIHJldHVybiBCcmVha0JldHdlZW46OkF2b2lkQ29s
dW1uOwogICAgIGNhc2UgQ1NTVmFsdWVBdm9pZFBhZ2U6Ci0gICAgICAgIHJldHVybiBBdm9pZFBh
Z2VCcmVha0JldHdlZW47CisgICAgICAgIHJldHVybiBCcmVha0JldHdlZW46OkF2b2lkUGFnZTsK
ICAgICBjYXNlIENTU1ZhbHVlQ29sdW1uOgotICAgICAgICByZXR1cm4gQ29sdW1uQnJlYWtCZXR3
ZWVuOworICAgICAgICByZXR1cm4gQnJlYWtCZXR3ZWVuOjpDb2x1bW47CiAgICAgY2FzZSBDU1NW
YWx1ZVBhZ2U6Ci0gICAgICAgIHJldHVybiBQYWdlQnJlYWtCZXR3ZWVuOworICAgICAgICByZXR1
cm4gQnJlYWtCZXR3ZWVuOjpQYWdlOwogICAgIGNhc2UgQ1NTVmFsdWVMZWZ0OgotICAgICAgICBy
ZXR1cm4gTGVmdFBhZ2VCcmVha0JldHdlZW47CisgICAgICAgIHJldHVybiBCcmVha0JldHdlZW46
OkxlZnRQYWdlOwogICAgIGNhc2UgQ1NTVmFsdWVSaWdodDoKLSAgICAgICAgcmV0dXJuIFJpZ2h0
UGFnZUJyZWFrQmV0d2VlbjsKKyAgICAgICAgcmV0dXJuIEJyZWFrQmV0d2Vlbjo6UmlnaHRQYWdl
OwogICAgIGNhc2UgQ1NTVmFsdWVSZWN0bzoKLSAgICAgICAgcmV0dXJuIFJlY3RvUGFnZUJyZWFr
QmV0d2VlbjsKKyAgICAgICAgcmV0dXJuIEJyZWFrQmV0d2Vlbjo6UmVjdG9QYWdlOwogICAgIGNh
c2UgQ1NTVmFsdWVWZXJzbzoKLSAgICAgICAgcmV0dXJuIFZlcnNvUGFnZUJyZWFrQmV0d2VlbjsK
KyAgICAgICAgcmV0dXJuIEJyZWFrQmV0d2Vlbjo6VmVyc29QYWdlOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJl
dHVybiBBdXRvQnJlYWtCZXR3ZWVuOworICAgIHJldHVybiBCcmVha0JldHdlZW46OkF1dG87CiB9
CiAKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1
ZShCcmVha0luc2lkZSBlKQpAQCAtMjI3MywxNiArMjI3MywxNiBAQCB0ZW1wbGF0ZTw+IGlubGlu
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTCiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENT
U19WQUxVRV9JRDsKICAgICBzd2l0Y2ggKGUpIHsKLSAgICBjYXNlIEF1dG9CcmVha0luc2lkZToK
KyAgICBjYXNlIEJyZWFrSW5zaWRlOjpBdXRvOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZUF1dG87CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQXZvaWRCcmVha0luc2lkZToK
KyAgICBjYXNlIEJyZWFrSW5zaWRlOjpBdm9pZDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0g
Q1NTVmFsdWVBdm9pZDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBdm9pZENvbHVtbkJyZWFr
SW5zaWRlOgorICAgIGNhc2UgQnJlYWtJbnNpZGU6OkF2b2lkQ29sdW1uOgogICAgICAgICBtX3Zh
bHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUF2b2lkQ29sdW1uOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIEF2b2lkUGFnZUJyZWFrSW5zaWRlOgorICAgIGNhc2UgQnJlYWtJbnNpZGU6OkF2b2lkUGFn
ZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBdm9pZFBhZ2U7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KQEAgLTIyOTQsMTkgKzIyOTQsMTkgQEAgdGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZQogICAgIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlE
KSB7CiAgICAgY2FzZSBDU1NWYWx1ZUF1dG86Ci0gICAgICAgIHJldHVybiBBdXRvQnJlYWtJbnNp
ZGU7CisgICAgICAgIHJldHVybiBCcmVha0luc2lkZTo6QXV0bzsKICAgICBjYXNlIENTU1ZhbHVl
QXZvaWQ6Ci0gICAgICAgIHJldHVybiBBdm9pZEJyZWFrSW5zaWRlOworICAgICAgICByZXR1cm4g
QnJlYWtJbnNpZGU6OkF2b2lkOwogICAgIGNhc2UgQ1NTVmFsdWVBdm9pZENvbHVtbjoKLSAgICAg
ICAgcmV0dXJuIEF2b2lkQ29sdW1uQnJlYWtJbnNpZGU7CisgICAgICAgIHJldHVybiBCcmVha0lu
c2lkZTo6QXZvaWRDb2x1bW47CiAgICAgY2FzZSBDU1NWYWx1ZUF2b2lkUGFnZToKLSAgICAgICAg
cmV0dXJuIEF2b2lkUGFnZUJyZWFrSW5zaWRlOworICAgICAgICByZXR1cm4gQnJlYWtJbnNpZGU6
OkF2b2lkUGFnZTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQXV0b0JyZWFrSW5zaWRlOworICAgIHJl
dHVybiBCcmVha0luc2lkZTo6QXV0bzsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFBvc2l0aW9uVHlwZSBlKQpAQCAtMjQzMCw1MyAr
MjQzMCw1MyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlCiAgICAg
cmV0dXJuIFRhYmxlTGF5b3V0VHlwZTo6QXV0bzsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVUZXh0QWxpZ24gZSkKK3RlbXBsYXRl
PD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShUZXh0QWxpZ25N
b2RlIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKICAgICBtX3ByaW1pdGl2
ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAoZSkgewotICAgIGNhc2UgVEFT
VEFSVDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlN0YXJ0OgogICAgICAgICBtX3ZhbHVlLnZh
bHVlSUQgPSBDU1NWYWx1ZVN0YXJ0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRBRU5EOgor
ICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6RW5kOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZUVuZDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMRUZUOgorICAgIGNhc2UgVGV4
dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVMZWZ0
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFJJR0hUOgorICAgIGNhc2UgVGV4dEFsaWduTW9k
ZTo6UmlnaHQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlUmlnaHQ7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ0VOVEVSOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6Q2Vu
dGVyOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUNlbnRlcjsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBKVVNUSUZZOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlm
eToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVKdXN0aWZ5OwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFdFQktJVF9MRUZUOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2Vi
S2l0TGVmdDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVXZWJraXRMZWZ0Owog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFdFQktJVF9SSUdIVDoKKyAgICBjYXNlIFRleHRBbGln
bk1vZGU6OldlYktpdFJpZ2h0OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVdl
YmtpdFJpZ2h0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFdFQktJVF9DRU5URVI6CisgICAg
Y2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRDZW50ZXI6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlV2Via2l0Q2VudGVyOwogICAgICAgICBicmVhazsKICAgICB9CiB9CiAKLXRl
bXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFVGV4dEFsaWduKCkg
Y29uc3QKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0
QWxpZ25Nb2RlKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNWYWx1ZUlEKCkpOwogCiAgICAgc3dp
dGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlV2Via2l0QXV0bzogLy8g
TGVnYWN5IC13ZWJraXQtYXV0by4gRXFpdXZhbGVudCB0byBzdGFydC4KICAgICBjYXNlIENTU1Zh
bHVlU3RhcnQ6Ci0gICAgICAgIHJldHVybiBUQVNUQVJUOworICAgICAgICByZXR1cm4gVGV4dEFs
aWduTW9kZTo6U3RhcnQ7CiAgICAgY2FzZSBDU1NWYWx1ZUVuZDoKLSAgICAgICAgcmV0dXJuIFRB
RU5EOworICAgICAgICByZXR1cm4gVGV4dEFsaWduTW9kZTo6RW5kOwogICAgIGRlZmF1bHQ6Ci0g
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxFVGV4dEFsaWduPihtX3ZhbHVlLnZhbHVlSUQgLSBD
U1NWYWx1ZUxlZnQpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEFsaWduTW9kZT4o
bV92YWx1ZS52YWx1ZUlEIC0gQ1NTVmFsdWVMZWZ0KTsKICAgICB9CiB9CiAKQEAgLTI0ODYsMjUg
KzI0ODYsMjUgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTUwogewog
ICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoIChlKSB7
Ci0gICAgY2FzZSBUZXh0QWxpZ25MYXN0U3RhcnQ6CisgICAgY2FzZSBUZXh0QWxpZ25MYXN0OjpT
dGFydDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVTdGFydDsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBUZXh0QWxpZ25MYXN0RW5kOgorICAgIGNhc2UgVGV4dEFsaWduTGFz
dDo6RW5kOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUVuZDsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBUZXh0QWxpZ25MYXN0TGVmdDoKKyAgICBjYXNlIFRleHRBbGlnbkxh
c3Q6OkxlZnQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTGVmdDsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBUZXh0QWxpZ25MYXN0UmlnaHQ6CisgICAgY2FzZSBUZXh0QWxp
Z25MYXN0OjpSaWdodDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVSaWdodDsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUZXh0QWxpZ25MYXN0Q2VudGVyOgorICAgIGNhc2Ug
VGV4dEFsaWduTGFzdDo6Q2VudGVyOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1
ZUNlbnRlcjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUZXh0QWxpZ25MYXN0SnVzdGlmeToK
KyAgICBjYXNlIFRleHRBbGlnbkxhc3Q6Okp1c3RpZnk6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlSnVzdGlmeTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUZXh0QWxpZ25M
YXN0QXV0bzoKKyAgICBjYXNlIFRleHRBbGlnbkxhc3Q6OkF1dG86CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlQXV0bzsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjUxNiwy
NSArMjUxNiwyNSBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlCiAK
ICAgICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkgewogICAgIGNhc2UgQ1NTVmFsdWVBdXRvOgot
ICAgICAgICByZXR1cm4gVGV4dEFsaWduTGFzdEF1dG87CisgICAgICAgIHJldHVybiBUZXh0QWxp
Z25MYXN0OjpBdXRvOwogICAgIGNhc2UgQ1NTVmFsdWVTdGFydDoKLSAgICAgICAgcmV0dXJuIFRl
eHRBbGlnbkxhc3RTdGFydDsKKyAgICAgICAgcmV0dXJuIFRleHRBbGlnbkxhc3Q6OlN0YXJ0Owog
ICAgIGNhc2UgQ1NTVmFsdWVFbmQ6Ci0gICAgICAgIHJldHVybiBUZXh0QWxpZ25MYXN0RW5kOwor
ICAgICAgICByZXR1cm4gVGV4dEFsaWduTGFzdDo6RW5kOwogICAgIGNhc2UgQ1NTVmFsdWVMZWZ0
OgotICAgICAgICByZXR1cm4gVGV4dEFsaWduTGFzdExlZnQ7CisgICAgICAgIHJldHVybiBUZXh0
QWxpZ25MYXN0OjpMZWZ0OwogICAgIGNhc2UgQ1NTVmFsdWVSaWdodDoKLSAgICAgICAgcmV0dXJu
IFRleHRBbGlnbkxhc3RSaWdodDsKKyAgICAgICAgcmV0dXJuIFRleHRBbGlnbkxhc3Q6OlJpZ2h0
OwogICAgIGNhc2UgQ1NTVmFsdWVDZW50ZXI6Ci0gICAgICAgIHJldHVybiBUZXh0QWxpZ25MYXN0
Q2VudGVyOworICAgICAgICByZXR1cm4gVGV4dEFsaWduTGFzdDo6Q2VudGVyOwogICAgIGNhc2Ug
Q1NTVmFsdWVKdXN0aWZ5OgotICAgICAgICByZXR1cm4gVGV4dEFsaWduTGFzdEp1c3RpZnk7Cisg
ICAgICAgIHJldHVybiBUZXh0QWxpZ25MYXN0OjpKdXN0aWZ5OwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBUZXh0QWxpZ25MYXN0QXV0bzsKKyAgICByZXR1cm4gVGV4dEFsaWduTGFzdDo6QXV0bzsKIH0K
IAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVl
KFRleHRKdXN0aWZ5IGUpCkBAIC0yNTQyLDE2ICsyNTQyLDE2IEBAIHRlbXBsYXRlPD4gaW5saW5l
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1MKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NT
X1ZBTFVFX0lEOwogICAgIHN3aXRjaCAoZSkgewotICAgIGNhc2UgVGV4dEp1c3RpZnlBdXRvOgor
ICAgIGNhc2UgVGV4dEp1c3RpZnk6OkF1dG86CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlQXV0bzsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUZXh0SnVzdGlmeU5vbmU6Cisg
ICAgY2FzZSBUZXh0SnVzdGlmeTo6Tm9uZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NT
VmFsdWVOb25lOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRleHRKdXN0aWZ5SW50ZXJXb3Jk
OgorICAgIGNhc2UgVGV4dEp1c3RpZnk6OkludGVyV29yZDoKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVJbnRlcldvcmQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVGV4dEp1
c3RpZnlEaXN0cmlidXRlOgorICAgIGNhc2UgVGV4dEp1c3RpZnk6OkRpc3RyaWJ1dGU6CiAgICAg
ICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRGlzdHJpYnV0ZTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQpAQCAtMjU2MywxOSArMjU2MywxOSBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6b3BlCiAKICAgICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkgewogICAgIGNh
c2UgQ1NTVmFsdWVBdXRvOgotICAgICAgICByZXR1cm4gVGV4dEp1c3RpZnlBdXRvOworICAgICAg
ICByZXR1cm4gVGV4dEp1c3RpZnk6OkF1dG87CiAgICAgY2FzZSBDU1NWYWx1ZU5vbmU6Ci0gICAg
ICAgIHJldHVybiBUZXh0SnVzdGlmeU5vbmU7CisgICAgICAgIHJldHVybiBUZXh0SnVzdGlmeTo6
Tm9uZTsKICAgICBjYXNlIENTU1ZhbHVlSW50ZXJXb3JkOgotICAgICAgICByZXR1cm4gVGV4dEp1
c3RpZnlJbnRlcldvcmQ7CisgICAgICAgIHJldHVybiBUZXh0SnVzdGlmeTo6SW50ZXJXb3JkOwog
ICAgIGNhc2UgQ1NTVmFsdWVEaXN0cmlidXRlOgotICAgICAgICByZXR1cm4gVGV4dEp1c3RpZnlE
aXN0cmlidXRlOworICAgICAgICByZXR1cm4gVGV4dEp1c3RpZnk6OkRpc3RyaWJ1dGU7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIFRleHRKdXN0aWZ5QXV0bzsKKyAgICByZXR1cm4gVGV4dEp1c3RpZnk6
OkF1dG87CiB9CiAjZW5kaWYgLy8gQ1NTM19URVhUCiAKQEAgLTI2MTIsMjEgKzI2MTIsMjEgQEAg
dGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZQogCiAgICAgc3dpdGNoICht
X3ZhbHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlU29saWQ6Ci0gICAgICAgIHJldHVy
biBUZXh0RGVjb3JhdGlvblN0eWxlU29saWQ7CisgICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlv
blN0eWxlOjpTb2xpZDsKICAgICBjYXNlIENTU1ZhbHVlRG91YmxlOgotICAgICAgICByZXR1cm4g
VGV4dERlY29yYXRpb25TdHlsZURvdWJsZTsKKyAgICAgICAgcmV0dXJuIFRleHREZWNvcmF0aW9u
U3R5bGU6OkRvdWJsZTsKICAgICBjYXNlIENTU1ZhbHVlRG90dGVkOgotICAgICAgICByZXR1cm4g
VGV4dERlY29yYXRpb25TdHlsZURvdHRlZDsKKyAgICAgICAgcmV0dXJuIFRleHREZWNvcmF0aW9u
U3R5bGU6OkRvdHRlZDsKICAgICBjYXNlIENTU1ZhbHVlRGFzaGVkOgotICAgICAgICByZXR1cm4g
VGV4dERlY29yYXRpb25TdHlsZURhc2hlZDsKKyAgICAgICAgcmV0dXJuIFRleHREZWNvcmF0aW9u
U3R5bGU6OkRhc2hlZDsKICAgICBjYXNlIENTU1ZhbHVlV2F2eToKLSAgICAgICAgcmV0dXJuIFRl
eHREZWNvcmF0aW9uU3R5bGVXYXZ5OworICAgICAgICByZXR1cm4gVGV4dERlY29yYXRpb25TdHls
ZTo6V2F2eTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGV4dERlY29yYXRpb25TdHlsZVNvbGlkOwor
ICAgIHJldHVybiBUZXh0RGVjb3JhdGlvblN0eWxlOjpTb2xpZDsKIH0KIAogdGVtcGxhdGU8PiBp
bmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFRleHRVbmRlcmxpbmVQ
b3NpdGlvbiBlKQpAQCAtMjcxMCw0NSArMjcxMCw0NSBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6b3BlCiAgICAgcmV0dXJuIFRleHRTZWN1cml0eTo6Tm9uZTsKIH0KIAot
dGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVU
ZXh0VHJhbnNmb3JtIGUpCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
UHJpbWl0aXZlVmFsdWUoVGV4dFRyYW5zZm9ybSBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZl
Q2xhc3MpCiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsKICAgICBz
d2l0Y2ggKGUpIHsKLSAgICBjYXNlIENBUElUQUxJWkU6CisgICAgY2FzZSBUZXh0VHJhbnNmb3Jt
OjpDYXBpdGFsaXplOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUNhcGl0YWxp
emU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVVBQRVJDQVNFOgorICAgIGNhc2UgVGV4dFRy
YW5zZm9ybTo6VXBwZXJjYXNlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVVw
cGVyY2FzZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMT1dFUkNBU0U6CisgICAgY2FzZSBU
ZXh0VHJhbnNmb3JtOjpMb3dlcmNhc2U6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlTG93ZXJjYXNlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRUTk9ORToKKyAgICBjYXNl
IFRleHRUcmFuc2Zvcm06Ok5vbmU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVl
Tm9uZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRVRleHRUcmFuc2Zvcm0oKSBjb25zdAordGVtcGxhdGU8
PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRleHRUcmFuc2Zvcm0oKSBjb25z
dAogewogICAgIEFTU0VSVChpc1ZhbHVlSUQoKSk7CiAKICAgICBzd2l0Y2ggKG1fdmFsdWUudmFs
dWVJRCkgewogICAgIGNhc2UgQ1NTVmFsdWVDYXBpdGFsaXplOgotICAgICAgICByZXR1cm4gQ0FQ
SVRBTElaRTsKKyAgICAgICAgcmV0dXJuIFRleHRUcmFuc2Zvcm06OkNhcGl0YWxpemU7CiAgICAg
Y2FzZSBDU1NWYWx1ZVVwcGVyY2FzZToKLSAgICAgICAgcmV0dXJuIFVQUEVSQ0FTRTsKKyAgICAg
ICAgcmV0dXJuIFRleHRUcmFuc2Zvcm06OlVwcGVyY2FzZTsKICAgICBjYXNlIENTU1ZhbHVlTG93
ZXJjYXNlOgotICAgICAgICByZXR1cm4gTE9XRVJDQVNFOworICAgICAgICByZXR1cm4gVGV4dFRy
YW5zZm9ybTo6TG93ZXJjYXNlOwogICAgIGNhc2UgQ1NTVmFsdWVOb25lOgotICAgICAgICByZXR1
cm4gVFROT05FOworICAgICAgICByZXR1cm4gVGV4dFRyYW5zZm9ybTo6Tm9uZTsKICAgICBkZWZh
dWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gVFROT05FOworICAgIHJldHVybiBUZXh0VHJhbnNmb3JtOjpOb25lOwogfQog
CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUo
RVVuaWNvZGVCaWRpIGUpCkBAIC0yOTg1LDkxICsyOTg1LDkxIEBAIHRlbXBsYXRlPD4gaW5saW5l
IENTU1ByaW1pdGl2ZVZhbHVlOjpvcGUKICAgICByZXR1cm4gVmVydGljYWxBbGlnbjo6VG9wOwog
fQogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFs
dWUoRVZpc2liaWxpdHkgZSkKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NQcmltaXRpdmVWYWx1ZShWaXNpYmlsaXR5IGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVD
bGFzcykKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3
aXRjaCAoZSkgewotICAgIGNhc2UgVklTSUJMRToKKyAgICBjYXNlIFZpc2liaWxpdHk6OlZpc2li
bGU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVmlzaWJsZTsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBISURERU46CisgICAgY2FzZSBWaXNpYmlsaXR5OjpIaWRkZW46CiAg
ICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlSGlkZGVuOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIENPTExBUFNFOgorICAgIGNhc2UgVmlzaWJpbGl0eTo6Q29sbGFwc2U6CiAgICAg
ICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQ29sbGFwc2U7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9y
IEVWaXNpYmlsaXR5KCkgY29uc3QKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVl
OjpvcGVyYXRvciBWaXNpYmlsaXR5KCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNWYWx1ZUlEKCkp
OwogCiAgICAgc3dpdGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlSGlk
ZGVuOgotICAgICAgICByZXR1cm4gSElEREVOOworICAgICAgICByZXR1cm4gVmlzaWJpbGl0eTo6
SGlkZGVuOwogICAgIGNhc2UgQ1NTVmFsdWVWaXNpYmxlOgotICAgICAgICByZXR1cm4gVklTSUJM
RTsKKyAgICAgICAgcmV0dXJuIFZpc2liaWxpdHk6OlZpc2libGU7CiAgICAgY2FzZSBDU1NWYWx1
ZUNvbGxhcHNlOgotICAgICAgICByZXR1cm4gQ09MTEFQU0U7CisgICAgICAgIHJldHVybiBWaXNp
YmlsaXR5OjpDb2xsYXBzZTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVklTSUJMRTsKKyAgICByZXR1
cm4gVmlzaWJpbGl0eTo6VmlzaWJsZTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVXaGl0ZVNwYWNlIGUpCit0ZW1wbGF0ZTw+IGlu
bGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoV2hpdGVTcGFjZSBlKQog
ICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlw
ZSA9IENTU19WQUxVRV9JRDsKICAgICBzd2l0Y2ggKGUpIHsKLSAgICBjYXNlIE5PUk1BTDoKKyAg
ICBjYXNlIFdoaXRlU3BhY2U6Ok5vcm1hbDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NT
VmFsdWVOb3JtYWw7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJFOgorICAgIGNhc2UgV2hp
dGVTcGFjZTo6UHJlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVByZTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUkVfV1JBUDoKKyAgICBjYXNlIFdoaXRlU3BhY2U6OlBy
ZVdyYXA6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlUHJlV3JhcDsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBQUkVfTElORToKKyAgICBjYXNlIFdoaXRlU3BhY2U6OlByZUxp
bmU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlUHJlTGluZTsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBOT1dSQVA6CisgICAgY2FzZSBXaGl0ZVNwYWNlOjpOb1dyYXA6CiAg
ICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTm93cmFwOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIEtIVE1MX05PV1JBUDoKKyAgICBjYXNlIFdoaXRlU3BhY2U6OktIVE1MTm9XcmFw
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVdlYmtpdE5vd3JhcDsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6b3BlcmF0b3IgRVdoaXRlU3BhY2UoKSBjb25zdAordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6Om9wZXJhdG9yIFdoaXRlU3BhY2UoKSBjb25zdAogewogICAgIEFTU0VSVChp
c1ZhbHVlSUQoKSk7CiAKICAgICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkgewogICAgIGNhc2Ug
Q1NTVmFsdWVXZWJraXROb3dyYXA6Ci0gICAgICAgIHJldHVybiBLSFRNTF9OT1dSQVA7CisgICAg
ICAgIHJldHVybiBXaGl0ZVNwYWNlOjpLSFRNTE5vV3JhcDsKICAgICBjYXNlIENTU1ZhbHVlTm93
cmFwOgotICAgICAgICByZXR1cm4gTk9XUkFQOworICAgICAgICByZXR1cm4gV2hpdGVTcGFjZTo6
Tm9XcmFwOwogICAgIGNhc2UgQ1NTVmFsdWVQcmU6Ci0gICAgICAgIHJldHVybiBQUkU7CisgICAg
ICAgIHJldHVybiBXaGl0ZVNwYWNlOjpQcmU7CiAgICAgY2FzZSBDU1NWYWx1ZVByZVdyYXA6Ci0g
ICAgICAgIHJldHVybiBQUkVfV1JBUDsKKyAgICAgICAgcmV0dXJuIFdoaXRlU3BhY2U6OlByZVdy
YXA7CiAgICAgY2FzZSBDU1NWYWx1ZVByZUxpbmU6Ci0gICAgICAgIHJldHVybiBQUkVfTElORTsK
KyAgICAgICAgcmV0dXJuIFdoaXRlU3BhY2U6OlByZUxpbmU7CiAgICAgY2FzZSBDU1NWYWx1ZU5v
cm1hbDoKLSAgICAgICAgcmV0dXJuIE5PUk1BTDsKKyAgICAgICAgcmV0dXJuIFdoaXRlU3BhY2U6
Ok5vcm1hbDsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gTk9STUFMOworICAgIHJldHVybiBXaGl0ZVNw
YWNlOjpOb3JtYWw7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NQcmltaXRpdmVWYWx1ZShXb3JkQnJlYWsgZSkKQEAgLTMyNTgsMTMgKzMyNTgsMTMgQEAgdGVt
cGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTUwogewogICAgIG1fcHJpbWl0aXZl
VW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoIChwb3NpdGlvbikgewotICAgIGNh
c2UgUnVieVBvc2l0aW9uQmVmb3JlOgorICAgIGNhc2UgUnVieVBvc2l0aW9uOjpCZWZvcmU6CiAg
ICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQmVmb3JlOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIFJ1YnlQb3NpdGlvbkFmdGVyOgorICAgIGNhc2UgUnVieVBvc2l0aW9uOjpBZnRl
cjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBZnRlcjsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBSdWJ5UG9zaXRpb25JbnRlckNoYXJhY3RlcjoKKyAgICBjYXNlIFJ1YnlQ
b3NpdGlvbjo6SW50ZXJDaGFyYWN0ZXI6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlSW50ZXJDaGFyYWN0ZXI7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTMyNzYsMTcgKzMy
NzYsMTcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZQogCiAgICAg
c3dpdGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlQmVmb3JlOgotICAg
ICAgICByZXR1cm4gUnVieVBvc2l0aW9uQmVmb3JlOworICAgICAgICByZXR1cm4gUnVieVBvc2l0
aW9uOjpCZWZvcmU7CiAgICAgY2FzZSBDU1NWYWx1ZUFmdGVyOgotICAgICAgICByZXR1cm4gUnVi
eVBvc2l0aW9uQWZ0ZXI7CisgICAgICAgIHJldHVybiBSdWJ5UG9zaXRpb246OkFmdGVyOwogICAg
IGNhc2UgQ1NTVmFsdWVJbnRlckNoYXJhY3RlcjoKLSAgICAgICAgcmV0dXJuIFJ1YnlQb3NpdGlv
bkludGVyQ2hhcmFjdGVyOworICAgICAgICByZXR1cm4gUnVieVBvc2l0aW9uOjpJbnRlckNoYXJh
Y3RlcjsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gUnVieVBvc2l0aW9uQmVmb3JlOworICAgIHJldHVy
biBSdWJ5UG9zaXRpb246OkJlZm9yZTsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFRleHRPdmVyZmxvdyBvdmVyZmxvdykKQEAgLTMz
MjUsMTAgKzMzMjUsMTAgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
UwogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNo
IChmaWxsKSB7Ci0gICAgY2FzZSBUZXh0RW1waGFzaXNGaWxsRmlsbGVkOgorICAgIGNhc2UgVGV4
dEVtcGhhc2lzRmlsbDo6RmlsbGVkOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1
ZUZpbGxlZDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUZXh0RW1waGFzaXNGaWxsT3BlbjoK
KyAgICBjYXNlIFRleHRFbXBoYXNpc0ZpbGw6Ok9wZW46CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlT3BlbjsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzM0MCwxNSArMzM0
MCwxNSBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlCiAKICAgICBz
d2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkgewogICAgIGNhc2UgQ1NTVmFsdWVGaWxsZWQ6Ci0gICAg
ICAgIHJldHVybiBUZXh0RW1waGFzaXNGaWxsRmlsbGVkOworICAgICAgICByZXR1cm4gVGV4dEVt
cGhhc2lzRmlsbDo6RmlsbGVkOwogICAgIGNhc2UgQ1NTVmFsdWVPcGVuOgotICAgICAgICByZXR1
cm4gVGV4dEVtcGhhc2lzRmlsbE9wZW47CisgICAgICAgIHJldHVybiBUZXh0RW1waGFzaXNGaWxs
OjpPcGVuOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBUZXh0RW1waGFzaXNGaWxsRmlsbGVkOworICAg
IHJldHVybiBUZXh0RW1waGFzaXNGaWxsOjpGaWxsZWQ7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5l
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShUZXh0RW1waGFzaXNNYXJrIG1h
cmspCkBAIC0zMzU2LDI0ICszMzU2LDI0IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1MKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwog
ICAgIHN3aXRjaCAobWFyaykgewotICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya0RvdDoKKyAgICBj
YXNlIFRleHRFbXBoYXNpc01hcms6OkRvdDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NT
VmFsdWVEb3Q7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya0NpcmNs
ZToKKyAgICBjYXNlIFRleHRFbXBoYXNpc01hcms6OkNpcmNsZToKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVDaXJjbGU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVGV4dEVt
cGhhc2lzTWFya0RvdWJsZUNpcmNsZToKKyAgICBjYXNlIFRleHRFbXBoYXNpc01hcms6OkRvdWJs
ZUNpcmNsZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVEb3VibGVDaXJjbGU7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya1RyaWFuZ2xlOgorICAg
IGNhc2UgVGV4dEVtcGhhc2lzTWFyazo6VHJpYW5nbGU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlVHJpYW5nbGU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVGV4dEVtcGhh
c2lzTWFya1Nlc2FtZToKKyAgICBjYXNlIFRleHRFbXBoYXNpc01hcms6OlNlc2FtZToKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVTZXNhbWU7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgVGV4dEVtcGhhc2lzTWFya05vbmU6Ci0gICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrQXV0
bzoKLSAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtDdXN0b206CisgICAgY2FzZSBUZXh0RW1waGFz
aXNNYXJrOjpOb25lOgorICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFyazo6QXV0bzoKKyAgICBjYXNl
IFRleHRFbXBoYXNpc01hcms6OkN1c3RvbToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTm9uZTsKICAgICAgICAgYnJlYWs7
CkBAIC0zMzg2LDIzICszMzg2LDIzIEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpvcGUKIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NW
YWx1ZU5vbmU6Ci0gICAgICAgIHJldHVybiBUZXh0RW1waGFzaXNNYXJrTm9uZTsKKyAgICAgICAg
cmV0dXJuIFRleHRFbXBoYXNpc01hcms6Ok5vbmU7CiAgICAgY2FzZSBDU1NWYWx1ZURvdDoKLSAg
ICAgICAgcmV0dXJuIFRleHRFbXBoYXNpc01hcmtEb3Q7CisgICAgICAgIHJldHVybiBUZXh0RW1w
aGFzaXNNYXJrOjpEb3Q7CiAgICAgY2FzZSBDU1NWYWx1ZUNpcmNsZToKLSAgICAgICAgcmV0dXJu
IFRleHRFbXBoYXNpc01hcmtDaXJjbGU7CisgICAgICAgIHJldHVybiBUZXh0RW1waGFzaXNNYXJr
OjpDaXJjbGU7CiAgICAgY2FzZSBDU1NWYWx1ZURvdWJsZUNpcmNsZToKLSAgICAgICAgcmV0dXJu
IFRleHRFbXBoYXNpc01hcmtEb3VibGVDaXJjbGU7CisgICAgICAgIHJldHVybiBUZXh0RW1waGFz
aXNNYXJrOjpEb3VibGVDaXJjbGU7CiAgICAgY2FzZSBDU1NWYWx1ZVRyaWFuZ2xlOgotICAgICAg
ICByZXR1cm4gVGV4dEVtcGhhc2lzTWFya1RyaWFuZ2xlOworICAgICAgICByZXR1cm4gVGV4dEVt
cGhhc2lzTWFyazo6VHJpYW5nbGU7CiAgICAgY2FzZSBDU1NWYWx1ZVNlc2FtZToKLSAgICAgICAg
cmV0dXJuIFRleHRFbXBoYXNpc01hcmtTZXNhbWU7CisgICAgICAgIHJldHVybiBUZXh0RW1waGFz
aXNNYXJrOjpTZXNhbWU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRleHRFbXBoYXNpc01hcmtOb25l
OworICAgIHJldHVybiBUZXh0RW1waGFzaXNNYXJrOjpOb25lOwogfQogCiB0ZW1wbGF0ZTw+IGlu
bGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoVGV4dE9yaWVudGF0aW9u
IGUpCkBAIC0zNDQ1LDc1ICszNDQ1LDc1IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2
ZVZhbHVlOjpvcGUKICAgICByZXR1cm4gVGV4dE9yaWVudGF0aW9uOjpNaXhlZDsKIH0KIAotdGVt
cGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVQb2lu
dGVyRXZlbnRzIGUpCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJp
bWl0aXZlVmFsdWUoUG9pbnRlckV2ZW50cyBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xh
c3MpCiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsKICAgICBzd2l0
Y2ggKGUpIHsKLSAgICBjYXNlIFBFX05PTkU6CisgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpOb25l
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5vbmU7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgUEVfU1RST0tFOgorICAgIGNhc2UgUG9pbnRlckV2ZW50czo6U3Ryb2tlOgog
ICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVN0cm9rZTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBQRV9GSUxMOgorICAgIGNhc2UgUG9pbnRlckV2ZW50czo6RmlsbDoKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVGaWxsOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFBFX1BBSU5URUQ6CisgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpQYWludGVkOgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVBhaW50ZWQ7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgUEVfVklTSUJMRToKKyAgICBjYXNlIFBvaW50ZXJFdmVudHM6OlZpc2libGU6CiAgICAg
ICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVmlzaWJsZTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBQRV9WSVNJQkxFX1NUUk9LRToKKyAgICBjYXNlIFBvaW50ZXJFdmVudHM6OlZpc2li
bGVTdHJva2U6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVmlzaWJsZVN0cm9r
ZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQRV9WSVNJQkxFX0ZJTEw6CisgICAgY2FzZSBQ
b2ludGVyRXZlbnRzOjpWaXNpYmxlRmlsbDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NT
VmFsdWVWaXNpYmxlRmlsbDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQRV9WSVNJQkxFX1BB
SU5URUQ6CisgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpWaXNpYmxlUGFpbnRlZDoKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVWaXNpYmxlUGFpbnRlZDsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBQRV9BVVRPOgorICAgIGNhc2UgUG9pbnRlckV2ZW50czo6QXV0bzoKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBdXRvOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFBFX0FMTDoKKyAgICBjYXNlIFBvaW50ZXJFdmVudHM6OkFsbDoKICAgICAgICAgbV92YWx1
ZS52YWx1ZUlEID0gQ1NTVmFsdWVBbGw7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAotdGVt
cGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVQb2ludGVyRXZlbnRz
KCkgY29uc3QKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBQ
b2ludGVyRXZlbnRzKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNWYWx1ZUlEKCkpOwogCiAgICAg
c3dpdGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlQWxsOgotICAgICAg
ICByZXR1cm4gUEVfQUxMOworICAgICAgICByZXR1cm4gUG9pbnRlckV2ZW50czo6QWxsOwogICAg
IGNhc2UgQ1NTVmFsdWVBdXRvOgotICAgICAgICByZXR1cm4gUEVfQVVUTzsKKyAgICAgICAgcmV0
dXJuIFBvaW50ZXJFdmVudHM6OkF1dG87CiAgICAgY2FzZSBDU1NWYWx1ZU5vbmU6Ci0gICAgICAg
IHJldHVybiBQRV9OT05FOworICAgICAgICByZXR1cm4gUG9pbnRlckV2ZW50czo6Tm9uZTsKICAg
ICBjYXNlIENTU1ZhbHVlVmlzaWJsZVBhaW50ZWQ6Ci0gICAgICAgIHJldHVybiBQRV9WSVNJQkxF
X1BBSU5URUQ7CisgICAgICAgIHJldHVybiBQb2ludGVyRXZlbnRzOjpWaXNpYmxlUGFpbnRlZDsK
ICAgICBjYXNlIENTU1ZhbHVlVmlzaWJsZUZpbGw6Ci0gICAgICAgIHJldHVybiBQRV9WSVNJQkxF
X0ZJTEw7CisgICAgICAgIHJldHVybiBQb2ludGVyRXZlbnRzOjpWaXNpYmxlRmlsbDsKICAgICBj
YXNlIENTU1ZhbHVlVmlzaWJsZVN0cm9rZToKLSAgICAgICAgcmV0dXJuIFBFX1ZJU0lCTEVfU1RS
T0tFOworICAgICAgICByZXR1cm4gUG9pbnRlckV2ZW50czo6VmlzaWJsZVN0cm9rZTsKICAgICBj
YXNlIENTU1ZhbHVlVmlzaWJsZToKLSAgICAgICAgcmV0dXJuIFBFX1ZJU0lCTEU7CisgICAgICAg
IHJldHVybiBQb2ludGVyRXZlbnRzOjpWaXNpYmxlOwogICAgIGNhc2UgQ1NTVmFsdWVQYWludGVk
OgotICAgICAgICByZXR1cm4gUEVfUEFJTlRFRDsKKyAgICAgICAgcmV0dXJuIFBvaW50ZXJFdmVu
dHM6OlBhaW50ZWQ7CiAgICAgY2FzZSBDU1NWYWx1ZUZpbGw6Ci0gICAgICAgIHJldHVybiBQRV9G
SUxMOworICAgICAgICByZXR1cm4gUG9pbnRlckV2ZW50czo6RmlsbDsKICAgICBjYXNlIENTU1Zh
bHVlU3Ryb2tlOgotICAgICAgICByZXR1cm4gUEVfU1RST0tFOworICAgICAgICByZXR1cm4gUG9p
bnRlckV2ZW50czo6U3Ryb2tlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBQRV9BTEw7CisgICAgcmV0
dXJuIFBvaW50ZXJFdmVudHM6OkFsbDsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEtlcm5pbmcga2VybmluZykKQEAgLTM3MjIsMTMg
KzM3MjIsMTMgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTUwogewog
ICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoIChoeXBo
ZW5zKSB7Ci0gICAgY2FzZSBIeXBoZW5zTm9uZToKKyAgICBjYXNlIEh5cGhlbnM6Ok5vbmU6CiAg
ICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTm9uZTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBIeXBoZW5zTWFudWFsOgorICAgIGNhc2UgSHlwaGVuczo6TWFudWFsOgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU1hbnVhbDsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBIeXBoZW5zQXV0bzoKKyAgICBjYXNlIEh5cGhlbnM6OkF1dG86CiAgICAgICAgIG1fdmFs
dWUudmFsdWVJRCA9IENTU1ZhbHVlQXV0bzsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzc0
MCwxNyArMzc0MCwxNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3Bl
CiAKICAgICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkgewogICAgIGNhc2UgQ1NTVmFsdWVOb25l
OgotICAgICAgICByZXR1cm4gSHlwaGVuc05vbmU7CisgICAgICAgIHJldHVybiBIeXBoZW5zOjpO
b25lOwogICAgIGNhc2UgQ1NTVmFsdWVNYW51YWw6Ci0gICAgICAgIHJldHVybiBIeXBoZW5zTWFu
dWFsOworICAgICAgICByZXR1cm4gSHlwaGVuczo6TWFudWFsOwogICAgIGNhc2UgQ1NTVmFsdWVB
dXRvOgotICAgICAgICByZXR1cm4gSHlwaGVuc0F1dG87CisgICAgICAgIHJldHVybiBIeXBoZW5z
OjpBdXRvOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBIeXBoZW5zQXV0bzsKKyAgICByZXR1cm4gSHlw
aGVuczo6QXV0bzsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U1ByaW1pdGl2ZVZhbHVlKExpbmVTbmFwIGdyaWRTbmFwKQpAQCAtMzc1OCwxMyArMzc1OCwxMyBA
QCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTCiB7CiAgICAgbV9wcmlt
aXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsKICAgICBzd2l0Y2ggKGdyaWRTbmFwKSB7Ci0g
ICAgY2FzZSBMaW5lU25hcE5vbmU6CisgICAgY2FzZSBMaW5lU25hcDo6Tm9uZToKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb25lOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IExpbmVTbmFwQmFzZWxpbmU6CisgICAgY2FzZSBMaW5lU25hcDo6QmFzZWxpbmU6CiAgICAgICAg
IG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQmFzZWxpbmU7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgTGluZVNuYXBDb250YWluOgorICAgIGNhc2UgTGluZVNuYXA6OkNvbnRhaW46CiAgICAg
ICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQ29udGFpbjsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQpAQCAtMzc3NiwxNyArMzc3NiwxNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRp
dmVWYWx1ZTo6b3BlCiAKICAgICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkgewogICAgIGNhc2Ug
Q1NTVmFsdWVOb25lOgotICAgICAgICByZXR1cm4gTGluZVNuYXBOb25lOworICAgICAgICByZXR1
cm4gTGluZVNuYXA6Ok5vbmU7CiAgICAgY2FzZSBDU1NWYWx1ZUJhc2VsaW5lOgotICAgICAgICBy
ZXR1cm4gTGluZVNuYXBCYXNlbGluZTsKKyAgICAgICAgcmV0dXJuIExpbmVTbmFwOjpCYXNlbGlu
ZTsKICAgICBjYXNlIENTU1ZhbHVlQ29udGFpbjoKLSAgICAgICAgcmV0dXJuIExpbmVTbmFwQ29u
dGFpbjsKKyAgICAgICAgcmV0dXJuIExpbmVTbmFwOjpDb250YWluOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJl
dHVybiBMaW5lU25hcE5vbmU7CisgICAgcmV0dXJuIExpbmVTbmFwOjpOb25lOwogfQogCiB0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoTGluZUFs
aWduIGxpbmVBbGlnbikKQEAgLTM3OTQsMTAgKzM3OTQsMTAgQEAgdGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTUwogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1Nf
VkFMVUVfSUQ7CiAgICAgc3dpdGNoIChsaW5lQWxpZ24pIHsKLSAgICBjYXNlIExpbmVBbGlnbk5v
bmU6CisgICAgY2FzZSBMaW5lQWxpZ246Ok5vbmU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9
IENTU1ZhbHVlTm9uZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMaW5lQWxpZ25FZGdlczoK
KyAgICBjYXNlIExpbmVBbGlnbjo6RWRnZXM6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlRWRnZXM7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTM4MDksMTUgKzM4MDksMTUg
QEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZQogCiAgICAgc3dpdGNo
IChtX3ZhbHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlTm9uZToKLSAgICAgICAgcmV0
dXJuIExpbmVBbGlnbk5vbmU7CisgICAgICAgIHJldHVybiBMaW5lQWxpZ246Ok5vbmU7CiAgICAg
Y2FzZSBDU1NWYWx1ZUVkZ2VzOgotICAgICAgICByZXR1cm4gTGluZUFsaWduRWRnZXM7CisgICAg
ICAgIHJldHVybiBMaW5lQWxpZ246OkVkZ2VzOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFr
OwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBMaW5lQWxp
Z25Ob25lOworICAgIHJldHVybiBMaW5lQWxpZ246Ok5vbmU7CiB9CiAKIHRlbXBsYXRlPD4gaW5s
aW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShFU3BlYWtBcyBlKQpAQCAt
Mzg0OSwxNSArMzg0OSwxNSBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6
b3BlCiAKICAgICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkgewogICAgIGNhc2UgQ1NTVmFsdWVM
b2dpY2FsOgotICAgICAgICByZXR1cm4gTG9naWNhbE9yZGVyOworICAgICAgICByZXR1cm4gT3Jk
ZXI6OkxvZ2ljYWw7CiAgICAgY2FzZSBDU1NWYWx1ZVZpc3VhbDoKLSAgICAgICAgcmV0dXJuIFZp
c3VhbE9yZGVyOworICAgICAgICByZXR1cm4gT3JkZXI6OlZpc3VhbDsKICAgICBkZWZhdWx0Ogog
ICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gTG9naWNhbE9yZGVyOworICAgIHJldHVybiBPcmRlcjo6TG9naWNhbDsKIH0KIAogdGVt
cGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKE9yZGVy
IGUpCkBAIC0zODY1LDEwICszODY1LDEwIEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1MKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwog
ICAgIHN3aXRjaCAoZSkgewotICAgIGNhc2UgTG9naWNhbE9yZGVyOgorICAgIGNhc2UgT3JkZXI6
OkxvZ2ljYWw6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTG9naWNhbDsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBWaXN1YWxPcmRlcjoKKyAgICBjYXNlIE9yZGVyOjpWaXN1
YWw6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVmlzdWFsOwogICAgICAgICBi
cmVhazsKICAgICB9CkBAIC00MjU2LDM1ICs0MjU2LDM1IEBAIHRlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpvcGUKICAgICByZXR1cm4gQm9yZGVyQ29sbGFwc2U6OlNlcGFyYXRl
OwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZl
VmFsdWUoRUJvcmRlckZpdCBlKQordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU1ByaW1pdGl2ZVZhbHVlKEJvcmRlckZpdCBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZl
Q2xhc3MpCiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsKICAgICBz
d2l0Y2ggKGUpIHsKLSAgICBjYXNlIEJvcmRlckZpdEJvcmRlcjoKKyAgICBjYXNlIEJvcmRlckZp
dDo6Qm9yZGVyOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUJvcmRlcjsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBCb3JkZXJGaXRMaW5lczoKKyAgICBjYXNlIEJvcmRlckZp
dDo6TGluZXM6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTGluZXM7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFs
dWU6Om9wZXJhdG9yIEVCb3JkZXJGaXQoKSBjb25zdAordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6Om9wZXJhdG9yIEJvcmRlckZpdCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlz
VmFsdWVJRCgpKTsKIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBD
U1NWYWx1ZUJvcmRlcjoKLSAgICAgICAgcmV0dXJuIEJvcmRlckZpdEJvcmRlcjsKKyAgICAgICAg
cmV0dXJuIEJvcmRlckZpdDo6Qm9yZGVyOwogICAgIGNhc2UgQ1NTVmFsdWVMaW5lczoKLSAgICAg
ICAgcmV0dXJuIEJvcmRlckZpdExpbmVzOworICAgICAgICByZXR1cm4gQm9yZGVyRml0OjpMaW5l
czsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQm9yZGVyRml0TGluZXM7CisgICAgcmV0dXJuIEJvcmRl
ckZpdDo6TGluZXM7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NQcmltaXRpdmVWYWx1ZShJbWFnZVJlbmRlcmluZyBpbWFnZVJlbmRlcmluZykKQEAgLTQ0MDcs
MTMgKzQ0MDcsMTMgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTUwog
ewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoIChl
KSB7Ci0gICAgY2FzZSBIb3Jpem9udGFsQ29sdW1uQXhpczoKKyAgICBjYXNlIENvbHVtbkF4aXM6
Okhvcml6b250YWw6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlSG9yaXpvbnRh
bDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBWZXJ0aWNhbENvbHVtbkF4aXM6CisgICAgY2Fz
ZSBDb2x1bW5BeGlzOjpWZXJ0aWNhbDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFs
dWVWZXJ0aWNhbDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBdXRvQ29sdW1uQXhpczoKKyAg
ICBjYXNlIENvbHVtbkF4aXM6OkF1dG86CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlQXV0bzsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNDQyNSwxNyArNDQyNSwxNyBAQCB0
ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlCiAKICAgICBzd2l0Y2ggKG1f
dmFsdWUudmFsdWVJRCkgewogICAgIGNhc2UgQ1NTVmFsdWVIb3Jpem9udGFsOgotICAgICAgICBy
ZXR1cm4gSG9yaXpvbnRhbENvbHVtbkF4aXM7CisgICAgICAgIHJldHVybiBDb2x1bW5BeGlzOjpI
b3Jpem9udGFsOwogICAgIGNhc2UgQ1NTVmFsdWVWZXJ0aWNhbDoKLSAgICAgICAgcmV0dXJuIFZl
cnRpY2FsQ29sdW1uQXhpczsKKyAgICAgICAgcmV0dXJuIENvbHVtbkF4aXM6OlZlcnRpY2FsOwog
ICAgIGNhc2UgQ1NTVmFsdWVBdXRvOgotICAgICAgICByZXR1cm4gQXV0b0NvbHVtbkF4aXM7Cisg
ICAgICAgIHJldHVybiBDb2x1bW5BeGlzOjpBdXRvOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBdXRv
Q29sdW1uQXhpczsKKyAgICByZXR1cm4gQ29sdW1uQXhpczo6QXV0bzsKIH0KIAogdGVtcGxhdGU8
PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKENvbHVtblByb2dy
ZXNzaW9uIGUpCkBAIC00NDQzLDEwICs0NDQzLDEwIEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1MKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVF
X0lEOwogICAgIHN3aXRjaCAoZSkgewotICAgIGNhc2UgTm9ybWFsQ29sdW1uUHJvZ3Jlc3Npb246
CisgICAgY2FzZSBDb2x1bW5Qcm9ncmVzc2lvbjo6Tm9ybWFsOgogICAgICAgICBtX3ZhbHVlLnZh
bHVlSUQgPSBDU1NWYWx1ZU5vcm1hbDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSZXZlcnNl
Q29sdW1uUHJvZ3Jlc3Npb246CisgICAgY2FzZSBDb2x1bW5Qcm9ncmVzc2lvbjo6UmV2ZXJzZToK
ICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVSZXZlcnNlOwogICAgICAgICBicmVh
azsKICAgICB9CkBAIC00NDU4LDE1ICs0NDU4LDE1IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1By
aW1pdGl2ZVZhbHVlOjpvcGUKIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAg
Y2FzZSBDU1NWYWx1ZU5vcm1hbDoKLSAgICAgICAgcmV0dXJuIE5vcm1hbENvbHVtblByb2dyZXNz
aW9uOworICAgICAgICByZXR1cm4gQ29sdW1uUHJvZ3Jlc3Npb246Ok5vcm1hbDsKICAgICBjYXNl
IENTU1ZhbHVlUmV2ZXJzZToKLSAgICAgICAgcmV0dXJuIFJldmVyc2VDb2x1bW5Qcm9ncmVzc2lv
bjsKKyAgICAgICAgcmV0dXJuIENvbHVtblByb2dyZXNzaW9uOjpSZXZlcnNlOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiBOb3JtYWxDb2x1bW5Qcm9ncmVzc2lvbjsKKyAgICByZXR1cm4gQ29sdW1uUHJv
Z3Jlc3Npb246Ok5vcm1hbDsKIH0KIAogZW51bSBMZW5ndGhDb252ZXJzaW9uIHsKQEAgLTQ5MDUs
MjggKzQ5MDUsMjggQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTUwog
ewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoIChj
c3NCb3gpIHsKLSAgICBjYXNlIE1hcmdpbkJveDoKKyAgICBjYXNlIENTU0JveFR5cGU6Ok1hcmdp
bkJveDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVNYXJnaW5Cb3g7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQm9yZGVyQm94OgorICAgIGNhc2UgQ1NTQm94VHlwZTo6Qm9y
ZGVyQm94OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUJvcmRlckJveDsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQYWRkaW5nQm94OgorICAgIGNhc2UgQ1NTQm94VHlwZTo6
UGFkZGluZ0JveDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVQYWRkaW5nQm94
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENvbnRlbnRCb3g6CisgICAgY2FzZSBDU1NCb3hU
eXBlOjpDb250ZW50Qm94OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUNvbnRl
bnRCb3g7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmlsbDoKKyAgICBjYXNlIENTU0JveFR5
cGU6OkZpbGw6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRmlsbDsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBTdHJva2U6CisgICAgY2FzZSBDU1NCb3hUeXBlOjpTdHJva2U6
CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlU3Ryb2tlOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIFZpZXdCb3g6CisgICAgY2FzZSBDU1NCb3hUeXBlOjpWaWV3Qm94OgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVZpZXdCb3g7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQm94TWlzc2luZzoKKyAgICBjYXNlIENTU0JveFR5cGU6OkJveE1pc3Npbmc6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZU5vbmU7CiAgICAgICAgIGJyZWFrOwpAQCAtNDkzNywyNSArNDkzNywyNSBAQCB0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlCiB7CiAgICAgc3dpdGNoICh2YWx1
ZUlEKCkpIHsKICAgICBjYXNlIENTU1ZhbHVlTWFyZ2luQm94OgotICAgICAgICByZXR1cm4gTWFy
Z2luQm94OworICAgICAgICByZXR1cm4gQ1NTQm94VHlwZTo6TWFyZ2luQm94OwogICAgIGNhc2Ug
Q1NTVmFsdWVCb3JkZXJCb3g6Ci0gICAgICAgIHJldHVybiBCb3JkZXJCb3g7CisgICAgICAgIHJl
dHVybiBDU1NCb3hUeXBlOjpCb3JkZXJCb3g7CiAgICAgY2FzZSBDU1NWYWx1ZVBhZGRpbmdCb3g6
Ci0gICAgICAgIHJldHVybiBQYWRkaW5nQm94OworICAgICAgICByZXR1cm4gQ1NTQm94VHlwZTo6
UGFkZGluZ0JveDsKICAgICBjYXNlIENTU1ZhbHVlQ29udGVudEJveDoKLSAgICAgICAgcmV0dXJu
IENvbnRlbnRCb3g7CisgICAgICAgIHJldHVybiBDU1NCb3hUeXBlOjpDb250ZW50Qm94OwogICAg
IC8vIFRoZSBmb2xsb3dpbmcgYXJlIHVzZWQgaW4gYW4gU1ZHIGNvbnRleHQuCiAgICAgY2FzZSBD
U1NWYWx1ZUZpbGw6Ci0gICAgICAgIHJldHVybiBGaWxsOworICAgICAgICByZXR1cm4gQ1NTQm94
VHlwZTo6RmlsbDsKICAgICBjYXNlIENTU1ZhbHVlU3Ryb2tlOgotICAgICAgICByZXR1cm4gU3Ry
b2tlOworICAgICAgICByZXR1cm4gQ1NTQm94VHlwZTo6U3Ryb2tlOwogICAgIGNhc2UgQ1NTVmFs
dWVWaWV3Qm94OgotICAgICAgICByZXR1cm4gVmlld0JveDsKKyAgICAgICAgcmV0dXJuIENTU0Jv
eFR5cGU6OlZpZXdCb3g7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBCb3hNaXNzaW5nOworICAgIHJldHVy
biBDU1NCb3hUeXBlOjpCb3hNaXNzaW5nOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoSXRlbVBvc2l0aW9uIGl0ZW1Qb3NpdGlvbikK
QEAgLTUyMDEsMTUgKzUyMDEsMTUgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFs
dWU6Om9wZQogCiAgICAgc3dpdGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1Zh
bHVlTm9ybWFsOgotICAgICAgICByZXR1cm4gVGV4dFpvb21Ob3JtYWw7CisgICAgICAgIHJldHVy
biBUZXh0Wm9vbTo6Tm9ybWFsOwogICAgIGNhc2UgQ1NTVmFsdWVSZXNldDoKLSAgICAgICAgcmV0
dXJuIFRleHRab29tUmVzZXQ7CisgICAgICAgIHJldHVybiBUZXh0Wm9vbTo6UmVzZXQ7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIFRleHRab29tTm9ybWFsOworICAgIHJldHVybiBUZXh0Wm9vbTo6Tm9y
bWFsOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0
aXZlVmFsdWUoVGV4dFpvb20gdGV4dFpvb20pCkBAIC01MjE3LDEwICs1MjE3LDEwIEBAIHRlbXBs
YXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1MKIHsKICAgICBtX3ByaW1pdGl2ZVVu
aXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAodGV4dFpvb20pIHsKLSAgICBjYXNl
IFRleHRab29tTm9ybWFsOgorICAgIGNhc2UgVGV4dFpvb206Ok5vcm1hbDoKICAgICAgICAgbV92
YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb3JtYWw7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNl
IFRleHRab29tUmVzZXQ6CisgICAgY2FzZSBUZXh0Wm9vbTo6UmVzZXQ6CiAgICAgICAgIG1fdmFs
dWUudmFsdWVJRCA9IENTU1ZhbHVlUmVzZXQ7CiAgICAgICAgIHJldHVybjsKICAgICB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MCwzMSAr
MjcwLDMxIEBAIFBzZXVkb0lkIENTU1NlbGVjdG9yOjpwc2V1ZG9JZChQc2V1ZG9FbGUKIHsKICAg
ICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBzZXVkb0VsZW1lbnRGaXJzdExpbmU6Ci0gICAg
ICAgIHJldHVybiBGSVJTVF9MSU5FOworICAgICAgICByZXR1cm4gUHNldWRvSWQ6OkZpcnN0TGlu
ZTsKICAgICBjYXNlIFBzZXVkb0VsZW1lbnRGaXJzdExldHRlcjoKLSAgICAgICAgcmV0dXJuIEZJ
UlNUX0xFVFRFUjsKKyAgICAgICAgcmV0dXJuIFBzZXVkb0lkOjpGaXJzdExldHRlcjsKICAgICBj
YXNlIFBzZXVkb0VsZW1lbnRTZWxlY3Rpb246Ci0gICAgICAgIHJldHVybiBTRUxFQ1RJT047Cisg
ICAgICAgIHJldHVybiBQc2V1ZG9JZDo6U2VsZWN0aW9uOwogICAgIGNhc2UgUHNldWRvRWxlbWVu
dE1hcmtlcjoKLSAgICAgICAgcmV0dXJuIE1BUktFUjsKKyAgICAgICAgcmV0dXJuIFBzZXVkb0lk
OjpNYXJrZXI7CiAgICAgY2FzZSBQc2V1ZG9FbGVtZW50QmVmb3JlOgotICAgICAgICByZXR1cm4g
QkVGT1JFOworICAgICAgICByZXR1cm4gUHNldWRvSWQ6OkJlZm9yZTsKICAgICBjYXNlIFBzZXVk
b0VsZW1lbnRBZnRlcjoKLSAgICAgICAgcmV0dXJuIEFGVEVSOworICAgICAgICByZXR1cm4gUHNl
dWRvSWQ6OkFmdGVyOwogICAgIGNhc2UgUHNldWRvRWxlbWVudFNjcm9sbGJhcjoKLSAgICAgICAg
cmV0dXJuIFNDUk9MTEJBUjsKKyAgICAgICAgcmV0dXJuIFBzZXVkb0lkOjpTY3JvbGxiYXI7CiAg
ICAgY2FzZSBQc2V1ZG9FbGVtZW50U2Nyb2xsYmFyQnV0dG9uOgotICAgICAgICByZXR1cm4gU0NS
T0xMQkFSX0JVVFRPTjsKKyAgICAgICAgcmV0dXJuIFBzZXVkb0lkOjpTY3JvbGxiYXJCdXR0b247
CiAgICAgY2FzZSBQc2V1ZG9FbGVtZW50U2Nyb2xsYmFyQ29ybmVyOgotICAgICAgICByZXR1cm4g
U0NST0xMQkFSX0NPUk5FUjsKKyAgICAgICAgcmV0dXJuIFBzZXVkb0lkOjpTY3JvbGxiYXJDb3Ju
ZXI7CiAgICAgY2FzZSBQc2V1ZG9FbGVtZW50U2Nyb2xsYmFyVGh1bWI6Ci0gICAgICAgIHJldHVy
biBTQ1JPTExCQVJfVEhVTUI7CisgICAgICAgIHJldHVybiBQc2V1ZG9JZDo6U2Nyb2xsYmFyVGh1
bWI7CiAgICAgY2FzZSBQc2V1ZG9FbGVtZW50U2Nyb2xsYmFyVHJhY2s6Ci0gICAgICAgIHJldHVy
biBTQ1JPTExCQVJfVFJBQ0s7CisgICAgICAgIHJldHVybiBQc2V1ZG9JZDo6U2Nyb2xsYmFyVHJh
Y2s7CiAgICAgY2FzZSBQc2V1ZG9FbGVtZW50U2Nyb2xsYmFyVHJhY2tQaWVjZToKLSAgICAgICAg
cmV0dXJuIFNDUk9MTEJBUl9UUkFDS19QSUVDRTsKKyAgICAgICAgcmV0dXJuIFBzZXVkb0lkOjpT
Y3JvbGxiYXJUcmFja1BpZWNlOwogICAgIGNhc2UgUHNldWRvRWxlbWVudFJlc2l6ZXI6Ci0gICAg
ICAgIHJldHVybiBSRVNJWkVSOworICAgICAgICByZXR1cm4gUHNldWRvSWQ6OlJlc2l6ZXI7CiAj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGNhc2UgUHNldWRvRWxlbWVudEN1ZToKICNlbmRp
ZgpAQCAtMzAzLDExICszMDMsMTEgQEAgUHNldWRvSWQgQ1NTU2VsZWN0b3I6OnBzZXVkb0lkKFBz
ZXVkb0VsZQogICAgIGNhc2UgUHNldWRvRWxlbWVudFVzZXJBZ2VudEN1c3RvbToKICAgICBjYXNl
IFBzZXVkb0VsZW1lbnRXZWJLaXRDdXN0b206CiAgICAgY2FzZSBQc2V1ZG9FbGVtZW50V2ViS2l0
Q3VzdG9tTGVnYWN5UHJlZml4ZWQ6Ci0gICAgICAgIHJldHVybiBOT1BTRVVETzsKKyAgICAgICAg
cmV0dXJuIFBzZXVkb0lkOjpOb25lOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIHJldHVybiBOT1BTRVVETzsKKyAgICByZXR1cm4gUHNldWRvSWQ6Ok5vbmU7CiB9CiAK
IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50VHlwZSBDU1NTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9F
bGVtZW50VHlwZShjb25zdCBTdHJpbmcmIG5hbWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVG9TdHlsZU1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Rv
U3R5bGVNYXAuY3BwCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VG9TdHlsZU1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2MywxNiArMzYzLDE2IEBAIHZvaWQg
Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uRmlsbE1vZGUKIAogICAgIHN3aXRjaCAoZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkpIHsKICAgICBjYXNlIENTU1Zh
bHVlTm9uZToKLSAgICAgICAgbGF5ZXIuc2V0RmlsbE1vZGUoQW5pbWF0aW9uRmlsbE1vZGVOb25l
KTsKKyAgICAgICAgbGF5ZXIuc2V0RmlsbE1vZGUoQW5pbWF0aW9uRmlsbE1vZGU6Ok5vbmUpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1ZhbHVlRm9yd2FyZHM6Ci0gICAgICAgIGxheWVy
LnNldEZpbGxNb2RlKEFuaW1hdGlvbkZpbGxNb2RlRm9yd2FyZHMpOworICAgICAgICBsYXllci5z
ZXRGaWxsTW9kZShBbmltYXRpb25GaWxsTW9kZTo6Rm9yd2FyZHMpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIENTU1ZhbHVlQmFja3dhcmRzOgotICAgICAgICBsYXllci5zZXRGaWxsTW9kZShB
bmltYXRpb25GaWxsTW9kZUJhY2t3YXJkcyk7CisgICAgICAgIGxheWVyLnNldEZpbGxNb2RlKEFu
aW1hdGlvbkZpbGxNb2RlOjpCYWNrd2FyZHMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENT
U1ZhbHVlQm90aDoKLSAgICAgICAgbGF5ZXIuc2V0RmlsbE1vZGUoQW5pbWF0aW9uRmlsbE1vZGVC
b3RoKTsKKyAgICAgICAgbGF5ZXIuc2V0RmlsbE1vZGUoQW5pbWF0aW9uRmlsbE1vZGU6OkJvdGgp
OwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTQyMyw3
ICs0MjMsNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvblBsYXlTdGF0CiAgICAg
aWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBFQW5pbVBsYXlTdGF0ZSBwbGF5U3RhdGUgPSAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVQYXVzZWQpID8gQW5pbVBsYXlTdGF0ZVBhdXNl
ZCA6IEFuaW1QbGF5U3RhdGVQbGF5aW5nOworICAgIEFuaW1hdGlvblBsYXlTdGF0ZSBwbGF5U3Rh
dGUgPSAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NT
VmFsdWVQYXVzZWQpID8gQW5pbWF0aW9uUGxheVN0YXRlOjpQYXVzZWQgOiBBbmltYXRpb25QbGF5
U3RhdGU6OlBsYXlpbmc7CiAgICAgbGF5ZXIuc2V0UGxheVN0YXRlKHBsYXlTdGF0ZSk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCShyZXZpc2lvbiAyMzIx
MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgkod29ya2luZyBj
b3B5KQpAQCAtMjg3LDcgKzI4Nyw3IEBAIGJvdHRvbQogLXdlYmtpdC1iYXNlbGluZS1taWRkbGUK
IC8vCiAvLyBDU1NfUFJPUF9URVhUX0FMSUdOOgotLy8gVGhlIG9yZGVyIGhlcmUgbXVzdCBtYXRj
aCB0aGUgb3JkZXIgb2YgdGhlIEVUZXh0QWxpZ24gZW51bSBpbiBSZW5kZXJTdHlsZUNvbnN0YW50
cy5oLgorLy8gVGhlIG9yZGVyIGhlcmUgbXVzdCBtYXRjaCB0aGUgb3JkZXIgb2YgdGhlIFRleHRB
bGlnbk1vZGUgZW51bSBpbiBSZW5kZXJTdHlsZUNvbnN0YW50cy5oLgogLy8KIC13ZWJraXQtYXV0
bwogbGVmdApAQCAtMzEyLDcgKzMxMiw3IEBAIG91dHNpZGUKIGluc2lkZQogLy8KIC8vIENTU19Q
Uk9QX0xJU1RfU1RZTEVfVFlQRToKLS8vIFRoZSBvcmRlciBoZXJlIG11c3QgbWF0Y2ggdGhlIG9y
ZGVyIG9mIHRoZSBFTGlzdFN0eWxlVHlwZSBlbnVtIGluIFJlbmRlclN0eWxlQ29uc3RhbnRzLmgu
CisvLyBUaGUgb3JkZXIgaGVyZSBtdXN0IG1hdGNoIHRoZSBvcmRlciBvZiB0aGUgTGlzdFN0eWxl
VHlwZSBlbnVtIGluIFJlbmRlclN0eWxlQ29uc3RhbnRzLmguCiAvLwogZGlzYwogY2lyY2xlCkBA
IC0zOTcsNyArMzk3LDcgQEAga2F0YWthbmEtaXJvaGEKIC8vbm9uZQogLy8KIC8vIENTU19QUk9Q
X0RJU1BMQVk6Ci0vLyBUaGUgb3JkZXIgaGVyZSBtdXN0IG1hdGNoIHRoZSBvcmRlciBvZiB0aGUg
RURpc3BsYXkgZW51bSBpbiBSZW5kZXJTdHlsZUNvbnN0YW50cy5oLgorLy8gVGhlIG9yZGVyIGhl
cmUgbXVzdCBtYXRjaCB0aGUgb3JkZXIgb2YgdGhlIERpc3BsYXlUeXBlIGVudW0gaW4gUmVuZGVy
U3R5bGVDb25zdGFudHMuaC4KIC8vCiBpbmxpbmUKIGJsb2NrCkBAIC00MjYsNyArNDI2LDcgQEAg
aW5saW5lLWdyaWQKIC8vbm9uZQogLy8KIC8vIENTU19QUk9QX0NVUlNPUjoKLS8vIFRoZSBvcmRl
ciBoZXJlIG11c3QgbWF0Y2ggdGhlIG9yZGVyIG9mIHRoZSBFQ3Vyc29yIGVudW0gaW4gUmVuZGVy
U3R5bGVDb25zdGFudHMuaC4KKy8vIFRoZSBvcmRlciBoZXJlIG11c3QgbWF0Y2ggdGhlIG9yZGVy
IG9mIHRoZSBDdXJzb3JUeXBlIGVudW0gaW4gUmVuZGVyU3R5bGVDb25zdGFudHMuaC4KIC8vCiBh
dXRvCiBkZWZhdWx0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxl
Y3Rvci5jcHAJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50
UnVsZUNvbGxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw3ICsxNDAsNyBAQCBpbmxp
bmUgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6YWRkRWxlCiB2b2lkIEVsZW1lbnRSdWxlQ29s
bGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcyhjb25zdCBNYXRjaFJlcXVlc3QmIG1hdGNoUmVx
dWVzdCwgU3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdlJiBydWxlUmFuZ2UpCiB7CiAgICAgQVNTRVJU
KG1hdGNoUmVxdWVzdC5ydWxlU2V0KTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCEobV9tb2Rl
ID09IFNlbGVjdG9yQ2hlY2tlcjo6TW9kZTo6Q29sbGVjdGluZ1J1bGVzSWdub3JpbmdWaXJ0dWFs
UHNldWRvRWxlbWVudHMgJiYgbV9wc2V1ZG9TdHlsZVJlcXVlc3QucHNldWRvSWQgIT0gTk9QU0VV
RE8pLCAiV2hlbiBpbiBTdHlsZUludmFsaWRhdGlvbiBvciBTaGFyaW5nUnVsZXMsIFNlbGVjdG9y
Q2hlY2tlciBkb2VzIG5vdCB0cnkgdG8gbWF0Y2ggdGhlIHBzZXVkbyBJRC4gV2hpbGUgRWxlbWVu
dFJ1bGVDb2xsZWN0b3Igc3VwcG9ydHMgbWF0Y2hpbmcgYSBwYXJ0aWN1bGFyIHBzZXVkb0lkIGlu
IHRoaXMgY2FzZSwgdGhpcyB3b3VsZCBpbmRpY2F0ZSBhIGVycm9yIGF0IHRoZSBjYWxsIHNpdGUg
c2luY2UgbWF0Y2hpbmcgYSBwYXJ0aWN1bGFyIGVsZW1lbnQgc2hvdWxkIGJlIHVubmVjZXNzYXJ5
LiIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIShtX21vZGUgPT0gU2VsZWN0b3JDaGVja2Vy
OjpNb2RlOjpDb2xsZWN0aW5nUnVsZXNJZ25vcmluZ1ZpcnR1YWxQc2V1ZG9FbGVtZW50cyAmJiBt
X3BzZXVkb1N0eWxlUmVxdWVzdC5wc2V1ZG9JZCAhPSBQc2V1ZG9JZDo6Tm9uZSksICJXaGVuIGlu
IFN0eWxlSW52YWxpZGF0aW9uIG9yIFNoYXJpbmdSdWxlcywgU2VsZWN0b3JDaGVja2VyIGRvZXMg
bm90IHRyeSB0byBtYXRjaCB0aGUgcHNldWRvIElELiBXaGlsZSBFbGVtZW50UnVsZUNvbGxlY3Rv
ciBzdXBwb3J0cyBtYXRjaGluZyBhIHBhcnRpY3VsYXIgcHNldWRvSWQgaW4gdGhpcyBjYXNlLCB0
aGlzIHdvdWxkIGluZGljYXRlIGEgZXJyb3IgYXQgdGhlIGNhbGwgc2l0ZSBzaW5jZSBtYXRjaGlu
ZyBhIHBhcnRpY3VsYXIgZWxlbWVudCBzaG91bGQgYmUgdW5uZWNlc3NhcnkuIik7CiAKICAgICBh
dXRvKiBzaGFkb3dSb290ID0gbV9lbGVtZW50LmNvbnRhaW5pbmdTaGFkb3dSb290KCk7CiAgICAg
aWYgKHNoYWRvd1Jvb3QgJiYgc2hhZG93Um9vdC0+bW9kZSgpID09IFNoYWRvd1Jvb3RNb2RlOjpV
c2VyQWdlbnQpCkBAIC0zNjAsNyArMzYwLDcgQEAgaW5saW5lIGJvb2wgRWxlbWVudFJ1bGVDb2xs
ZWN0b3I6OnJ1bGVNYQogICAgIC8vIFRoaXMgaXMgbGltaXRlZCB0byBIVE1MIG9ubHkgc28gd2Ug
ZG9uJ3QgbmVlZCB0byBjaGVjayB0aGUgbmFtZXNwYWNlIChiZWNhdXNlIG9mIHRhZyBuYW1lIG1h
dGNoKS4KICAgICBNYXRjaEJhc2VkT25SdWxlSGFzaCBtYXRjaEJhc2VkT25SdWxlSGFzaCA9IHJ1
bGVEYXRhLm1hdGNoQmFzZWRPblJ1bGVIYXNoKCk7CiAgICAgaWYgKG1hdGNoQmFzZWRPblJ1bGVI
YXNoICE9IE1hdGNoQmFzZWRPblJ1bGVIYXNoOjpOb25lICYmIG1fZWxlbWVudC5pc0hUTUxFbGVt
ZW50KCkpIHsKLSAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3BzZXVkb1N0eWxlUmVxdWVz
dC5wc2V1ZG9JZCA9PSBOT1BTRVVETywgIklmIHdlIG1hdGNoIGJhc2VkIG9uIHRoZSBydWxlIGhh
c2ggd2hpbGUgY29sbGVjdGluZyBmb3IgYSBwYXJ0aWN1bGFyIHBzZXVkbyBlbGVtZW50IElELCB3
ZSB3b3VsZCBhZGQgaW5jb3JyZWN0IHJ1bGVzIGZvciB0aGF0IHBzZXVkbyBlbGVtZW50IElELiBX
ZSBzaG91bGQgbmV2ZXIgZW5kIGluIHJ1bGVNYXRjaGVzKCkgd2l0aCBhIHBzZXVkbyBlbGVtZW50
IGlmIHRoZSBydWxlRGF0YSBjYW5ub3QgbWF0Y2ggYW55IHBzZXVkbyBlbGVtZW50LiIpOworICAg
ICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fcHNldWRvU3R5bGVSZXF1ZXN0LnBzZXVkb0lkID09
IFBzZXVkb0lkOjpOb25lLCAiSWYgd2UgbWF0Y2ggYmFzZWQgb24gdGhlIHJ1bGUgaGFzaCB3aGls
ZSBjb2xsZWN0aW5nIGZvciBhIHBhcnRpY3VsYXIgcHNldWRvIGVsZW1lbnQgSUQsIHdlIHdvdWxk
IGFkZCBpbmNvcnJlY3QgcnVsZXMgZm9yIHRoYXQgcHNldWRvIGVsZW1lbnQgSUQuIFdlIHNob3Vs
ZCBuZXZlciBlbmQgaW4gcnVsZU1hdGNoZXMoKSB3aXRoIGEgcHNldWRvIGVsZW1lbnQgaWYgdGhl
IHJ1bGVEYXRhIGNhbm5vdCBtYXRjaCBhbnkgcHNldWRvIGVsZW1lbnQuIik7CiAKICAgICAgICAg
c3dpdGNoIChtYXRjaEJhc2VkT25SdWxlSGFzaCkgewogICAgICAgICBjYXNlIE1hdGNoQmFzZWRP
blJ1bGVIYXNoOjpOb25lOgpAQCAtMzk1LDcgKzM5NSw3IEBAIGlubGluZSBib29sIEVsZW1lbnRS
dWxlQ29sbGVjdG9yOjpydWxlTWEKICAgICAgICAgYXV0byBzZWxlY3RvckNoZWNrZXIgPSBTZWxl
Y3RvckNvbXBpbGVyOjpydWxlQ29sbGVjdG9yU2ltcGxlU2VsZWN0b3JDaGVja2VyRnVuY3Rpb24o
Y29tcGlsZWRTZWxlY3RvckNoZWNrZXIsIGNvbXBpbGVkU2VsZWN0b3Iuc3RhdHVzKTsKICNpZiAh
QVNTRVJUX01TR19ESVNBQkxFRAogICAgICAgICB1bnNpZ25lZCBpZ25vcmVTcGVjaWZpY2l0eTsK
LSAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc2VsZWN0b3JDaGVja2VyKCZtX2VsZW1lbnQs
ICZpZ25vcmVTcGVjaWZpY2l0eSkgfHwgbV9wc2V1ZG9TdHlsZVJlcXVlc3QucHNldWRvSWQgPT0g
Tk9QU0VVRE8sICJXaGVuIG1hdGNoaW5nIHBzZXVkbyBlbGVtZW50cywgd2Ugc2hvdWxkIG5ldmVy
IGNvbXBpbGUgYSBzZWxlY3RvciBjaGVja2VyIHdpdGhvdXQgY29udGV4dCB1bmxlc3MgaXQgY2Fu
bm90IG1hdGNoIGFueXRoaW5nLiIpOworICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzZWxl
Y3RvckNoZWNrZXIoJm1fZWxlbWVudCwgJmlnbm9yZVNwZWNpZmljaXR5KSB8fCBtX3BzZXVkb1N0
eWxlUmVxdWVzdC5wc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6Tm9uZSwgIldoZW4gbWF0Y2hpbmcgcHNl
dWRvIGVsZW1lbnRzLCB3ZSBzaG91bGQgbmV2ZXIgY29tcGlsZSBhIHNlbGVjdG9yIGNoZWNrZXIg
d2l0aG91dCBjb250ZXh0IHVubGVzcyBpdCBjYW5ub3QgbWF0Y2ggYW55dGhpbmcuIik7CiAjZW5k
aWYKICNpZiBDU1NfU0VMRUNUT1JfSklUX1BST0ZJTElORwogICAgICAgICBydWxlRGF0YS5jb21w
aWxlZFNlbGVjdG9yVXNlZCgpOwpAQCAtNDU4LDcgKzQ1OCw3IEBAIHZvaWQgRWxlbWVudFJ1bGVD
b2xsZWN0b3I6OmNvbGxlY3RNYXRjaGkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBzaXplID0g
cnVsZXMtPnNpemUoKTsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBjb25zdCBSdWxlRGF0YSYg
cnVsZURhdGEgPSBydWxlcy0+ZGF0YSgpW2ldOwogCi0gICAgICAgIGlmICghcnVsZURhdGEuY2Fu
TWF0Y2hQc2V1ZG9FbGVtZW50KCkgJiYgbV9wc2V1ZG9TdHlsZVJlcXVlc3QucHNldWRvSWQgIT0g
Tk9QU0VVRE8pCisgICAgICAgIGlmICghcnVsZURhdGEuY2FuTWF0Y2hQc2V1ZG9FbGVtZW50KCkg
JiYgbV9wc2V1ZG9TdHlsZVJlcXVlc3QucHNldWRvSWQgIT0gUHNldWRvSWQ6Ok5vbmUpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAobV9zZWxlY3RvckZpbHRlciAmJiBtX3Nl
bGVjdG9yRmlsdGVyLT5mYXN0UmVqZWN0U2VsZWN0b3IocnVsZURhdGEuZGVzY2VuZGFudFNlbGVj
dG9ySWRlbnRpZmllckhhc2hlcygpKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50
UnVsZUNvbGxlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50
UnVsZUNvbGxlY3Rvci5oCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
RWxlbWVudFJ1bGVDb2xsZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCBw
cml2YXRlOgogICAgIGNvbnN0IFNlbGVjdG9yRmlsdGVyKiBtX3NlbGVjdG9yRmlsdGVyIHsgbnVs
bHB0ciB9OwogCiAgICAgYm9vbCBtX2lzUHJpbnRTdHlsZSB7IGZhbHNlIH07Ci0gICAgUHNldWRv
U3R5bGVSZXF1ZXN0IG1fcHNldWRvU3R5bGVSZXF1ZXN0IHsgTk9QU0VVRE8gfTsKKyAgICBQc2V1
ZG9TdHlsZVJlcXVlc3QgbV9wc2V1ZG9TdHlsZVJlcXVlc3QgeyBQc2V1ZG9JZDo6Tm9uZSB9Owog
ICAgIFNlbGVjdG9yQ2hlY2tlcjo6TW9kZSBtX21vZGUgeyBTZWxlY3RvckNoZWNrZXI6Ok1vZGU6
OlJlc29sdmluZ1N0eWxlIH07CiAgICAgYm9vbCBtX2lzTWF0Y2hpbmdTbG90dGVkUHNldWRvRWxl
bWVudHMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc01hdGNoaW5nSG9zdFBzZXVkb0NsYXNzIHsg
ZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCShyZXZp
c2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTg1LDE1ICsxODUsMTUgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6
Om1hdGNoKGNvbnN0IENTU1NlbAogICAgIE1hdGNoUmVzdWx0IHJlc3VsdCA9IG1hdGNoUmVjdXJz
aXZlbHkoY2hlY2tpbmdDb250ZXh0LCBjb250ZXh0LCBwc2V1ZG9JZFNldCwgc3BlY2lmaWNpdHkp
OwogICAgIGlmIChyZXN1bHQubWF0Y2ggIT0gTWF0Y2g6OlNlbGVjdG9yTWF0Y2hlcykKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChjaGVja2luZ0NvbnRleHQucHNldWRvSWQgIT0gTk9Q
U0VVRE8gJiYgIXBzZXVkb0lkU2V0LmhhcyhjaGVja2luZ0NvbnRleHQucHNldWRvSWQpKQorICAg
IGlmIChjaGVja2luZ0NvbnRleHQucHNldWRvSWQgIT0gUHNldWRvSWQ6Ok5vbmUgJiYgIXBzZXVk
b0lkU2V0LmhhcyhjaGVja2luZ0NvbnRleHQucHNldWRvSWQpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBpZiAoY2hlY2tpbmdDb250ZXh0LnBzZXVkb0lkID09IE5PUFNFVURPICYmIHBz
ZXVkb0lkU2V0KSB7Ci0gICAgICAgIFBzZXVkb0lkU2V0IHB1YmxpY1BzZXVkb0lkU2V0ID0gcHNl
dWRvSWRTZXQgJiBQc2V1ZG9JZFNldDo6ZnJvbU1hc2soUFVCTElDX1BTRVVET0lEX01BU0spOwor
ICAgIGlmIChjaGVja2luZ0NvbnRleHQucHNldWRvSWQgPT0gUHNldWRvSWQ6Ok5vbmUgJiYgcHNl
dWRvSWRTZXQpIHsKKyAgICAgICAgUHNldWRvSWRTZXQgcHVibGljUHNldWRvSWRTZXQgPSBwc2V1
ZG9JZFNldCAmIFBzZXVkb0lkU2V0Ojpmcm9tTWFzayhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHNl
dWRvSWQ6OlB1YmxpY1BzZXVkb0lkTWFzaykpOwogICAgICAgICBpZiAoY2hlY2tpbmdDb250ZXh0
LnJlc29sdmluZ01vZGUgPT0gTW9kZTo6UmVzb2x2aW5nU3R5bGUgJiYgcHVibGljUHNldWRvSWRT
ZXQpCiAgICAgICAgICAgICBjaGVja2luZ0NvbnRleHQucHNldWRvSURTZXQgPSBwdWJsaWNQc2V1
ZG9JZFNldDsKIAotICAgICAgICAvLyBXaGVuIGlnbm9yaW5nIHZpcnR1YWwgcHNldWRvIGVsZW1l
bnRzLCB0aGUgY29udGV4dCdzIHBzZXVkbyBzaG91bGQgYWxzbyBiZSBOT1BTRVVETyBidXQgdGhh
dCBkb2VzCisgICAgICAgIC8vIFdoZW4gaWdub3JpbmcgdmlydHVhbCBwc2V1ZG8gZWxlbWVudHMs
IHRoZSBjb250ZXh0J3MgcHNldWRvIHNob3VsZCBhbHNvIGJlIFBzZXVkb0lkOjpOb25lIGJ1dCB0
aGF0IGRvZXMKICAgICAgICAgLy8gbm90IGNhdXNlIGEgZmFpbHVyZS4KICAgICAgICAgcmV0dXJu
IGNoZWNraW5nQ29udGV4dC5yZXNvbHZpbmdNb2RlID09IE1vZGU6OkNvbGxlY3RpbmdSdWxlc0ln
bm9yaW5nVmlydHVhbFBzZXVkb0VsZW1lbnRzIHx8IHJlc3VsdC5tYXRjaFR5cGUgPT0gTWF0Y2hU
eXBlOjpFbGVtZW50OwogICAgIH0KQEAgLTIwOCw3ICsyMDgsNyBAQCBib29sIFNlbGVjdG9yQ2hl
Y2tlcjo6bWF0Y2hIb3N0UHNldWRvQ2xhCiAgICAgc3BlY2lmaWNpdHkgPSBzZWxlY3Rvci5zaW1w
bGVTZWxlY3RvclNwZWNpZmljaXR5KCk7CiAKICAgICBpZiAoYXV0byogc2VsZWN0b3JMaXN0ID0g
c2VsZWN0b3Iuc2VsZWN0b3JMaXN0KCkpIHsKLSAgICAgICAgTG9jYWxDb250ZXh0IGNvbnRleHQo
KnNlbGVjdG9yTGlzdC0+Zmlyc3QoKSwgZWxlbWVudCwgVmlzaXRlZE1hdGNoVHlwZTo6RW5hYmxl
ZCwgTk9QU0VVRE8pOworICAgICAgICBMb2NhbENvbnRleHQgY29udGV4dCgqc2VsZWN0b3JMaXN0
LT5maXJzdCgpLCBlbGVtZW50LCBWaXNpdGVkTWF0Y2hUeXBlOjpFbmFibGVkLCBQc2V1ZG9JZDo6
Tm9uZSk7CiAgICAgICAgIGNvbnRleHQuaW5GdW5jdGlvbmFsUHNldWRvQ2xhc3MgPSB0cnVlOwog
ICAgICAgICBjb250ZXh0LnBzZXVkb0VsZW1lbnRFZmZlY3RpdmUgPSBmYWxzZTsKICAgICAgICAg
UHNldWRvSWRTZXQgaWdub3JlRHluYW1pY1BzZXVkbzsKQEAgLTIyMiwxMyArMjIyLDEzIEBAIGJv
b2wgU2VsZWN0b3JDaGVja2VyOjptYXRjaEhvc3RQc2V1ZG9DbGEKIAogaW5saW5lIHN0YXRpYyBi
b29sIGhhc1Njcm9sbGJhclBzZXVkb0VsZW1lbnQoY29uc3QgUHNldWRvSWRTZXQmIGR5bmFtaWNQ
c2V1ZG9JZFNldCkKIHsKLSAgICBQc2V1ZG9JZFNldCBzY3JvbGxiYXJJZFNldCA9IHsgU0NST0xM
QkFSLCBTQ1JPTExCQVJfVEhVTUIsIFNDUk9MTEJBUl9CVVRUT04sIFNDUk9MTEJBUl9UUkFDSywg
U0NST0xMQkFSX1RSQUNLX1BJRUNFLCBTQ1JPTExCQVJfQ09STkVSIH07CisgICAgUHNldWRvSWRT
ZXQgc2Nyb2xsYmFySWRTZXQgPSB7IFBzZXVkb0lkOjpTY3JvbGxiYXIsIFBzZXVkb0lkOjpTY3Jv
bGxiYXJUaHVtYiwgUHNldWRvSWQ6OlNjcm9sbGJhckJ1dHRvbiwgUHNldWRvSWQ6OlNjcm9sbGJh
clRyYWNrLCBQc2V1ZG9JZDo6U2Nyb2xsYmFyVHJhY2tQaWVjZSwgUHNldWRvSWQ6OlNjcm9sbGJh
ckNvcm5lciB9OwogICAgIGlmIChkeW5hbWljUHNldWRvSWRTZXQgJiBzY3JvbGxiYXJJZFNldCkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAvLyBSRVNJWkVSIGRvZXMgbm90IGFsd2F5cyBo
YXZlIGEgc2Nyb2xsYmFyIGJ1dCBpdCBpcyBhIHNjcm9sbGJhci1saWtlIHBzZXVkbyBlbGVtZW50
CisgICAgLy8gUHNldWRvSWQ6OlJlc2l6ZXIgZG9lcyBub3QgYWx3YXlzIGhhdmUgYSBzY3JvbGxi
YXIgYnV0IGl0IGlzIGEgc2Nyb2xsYmFyLWxpa2UgcHNldWRvIGVsZW1lbnQKICAgICAvLyBiZWNh
dXNlIGl0IGNhbiBoYXZlIG1vcmUgdGhhbiBvbmUgcHNldWRvIGVsZW1lbnQuCi0gICAgcmV0dXJu
IGR5bmFtaWNQc2V1ZG9JZFNldC5oYXMoUkVTSVpFUik7CisgICAgcmV0dXJuIGR5bmFtaWNQc2V1
ZG9JZFNldC5oYXMoUHNldWRvSWQ6OlJlc2l6ZXIpOwogfQogCiBzdGF0aWMgU2VsZWN0b3JDaGVj
a2VyOjpMb2NhbENvbnRleHQgbG9jYWxDb250ZXh0Rm9yUGFyZW50KGNvbnN0IFNlbGVjdG9yQ2hl
Y2tlcjo6TG9jYWxDb250ZXh0JiBjb250ZXh0KQpAQCAtMjkzLDcgKzI5Myw3IEBAIFNlbGVjdG9y
Q2hlY2tlcjo6TWF0Y2hSZXN1bHQgU2VsZWN0b3JDaGUKICAgICAgICAgICAgICAgICByZXR1cm4g
TWF0Y2hSZXN1bHQ6OmZhaWxzKE1hdGNoOjpTZWxlY3RvckZhaWxzQ29tcGxldGVseSk7CiAKICAg
ICAgICAgICAgIFBzZXVkb0lkIHBzZXVkb0lkID0gQ1NTU2VsZWN0b3I6OnBzZXVkb0lkKGNvbnRl
eHQuc2VsZWN0b3ItPnBzZXVkb0VsZW1lbnRUeXBlKCkpOwotICAgICAgICAgICAgaWYgKHBzZXVk
b0lkICE9IE5PUFNFVURPKQorICAgICAgICAgICAgaWYgKHBzZXVkb0lkICE9IFBzZXVkb0lkOjpO
b25lKQogICAgICAgICAgICAgICAgIGR5bmFtaWNQc2V1ZG9JZFNldC5hZGQocHNldWRvSWQpOwog
ICAgICAgICAgICAgbWF0Y2hUeXBlID0gTWF0Y2hUeXBlOjpWaXJ0dWFsUHNldWRvRWxlbWVudE9u
bHk7CiAgICAgICAgIH0KQEAgLTMxMiwxNCArMzEyLDE0IEBAIFNlbGVjdG9yQ2hlY2tlcjo6TWF0
Y2hSZXN1bHQgU2VsZWN0b3JDaGUKIAogICAgIGlmIChyZWxhdGlvbiAhPSBDU1NTZWxlY3Rvcjo6
U3Vic2VsZWN0b3IpIHsKICAgICAgICAgLy8gQmFpbC1vdXQgaWYgdGhpcyBzZWxlY3RvciBpcyBp
cnJlbGV2YW50IGZvciB0aGUgcHNldWRvSWQKLSAgICAgICAgaWYgKGNvbnRleHQucHNldWRvSWQg
IT0gTk9QU0VVRE8gJiYgIWR5bmFtaWNQc2V1ZG9JZFNldC5oYXMoY29udGV4dC5wc2V1ZG9JZCkp
CisgICAgICAgIGlmIChjb250ZXh0LnBzZXVkb0lkICE9IFBzZXVkb0lkOjpOb25lICYmICFkeW5h
bWljUHNldWRvSWRTZXQuaGFzKGNvbnRleHQucHNldWRvSWQpKQogICAgICAgICAgICAgcmV0dXJu
IE1hdGNoUmVzdWx0OjpmYWlscyhNYXRjaDo6U2VsZWN0b3JGYWlsc0NvbXBsZXRlbHkpOwogCiAg
ICAgICAgIC8vIERpc2FibGUgOnZpc2l0ZWQgbWF0Y2hpbmcgd2hlbiB3ZSB0cnkgdG8gbWF0Y2gg
YW55dGhpbmcgZWxzZSB0aGFuIGFuIGFuY2VzdG9ycy4KICAgICAgICAgaWYgKCFjb250ZXh0LnNl
bGVjdG9yLT5oYXNEZXNjZW5kYW50T3JDaGlsZFJlbGF0aW9uKCkpCiAgICAgICAgICAgICBuZXh0
Q29udGV4dC52aXNpdGVkTWF0Y2hUeXBlID0gVmlzaXRlZE1hdGNoVHlwZTo6RGlzYWJsZWQ7CiAK
LSAgICAgICAgbmV4dENvbnRleHQucHNldWRvSWQgPSBOT1BTRVVETzsKKyAgICAgICAgbmV4dENv
bnRleHQucHNldWRvSWQgPSBQc2V1ZG9JZDo6Tm9uZTsKICAgICAgICAgLy8gVmlydHVhbCBwc2V1
ZG8gZWxlbWVudCBpcyBvbmx5IGVmZmVjdGl2ZSBpbiB0aGUgcmlnaHRtb3N0IGZyYWdtZW50Lgog
ICAgICAgICBuZXh0Q29udGV4dC5wc2V1ZG9FbGVtZW50RWZmZWN0aXZlID0gZmFsc2U7CiAgICAg
ICAgIG5leHRDb250ZXh0LmlzTWF0Y2hFbGVtZW50ID0gZmFsc2U7CkBAIC00MTMsNyArNDEzLDcg
QEAgU2VsZWN0b3JDaGVja2VyOjpNYXRjaFJlc3VsdCBTZWxlY3RvckNoZQogICAgICAgICAgICAg
Ly8gV2UgbWFrZSBhbiBleGNlcHRpb24gZm9yIHNjcm9sbGJhciBwc2V1ZG8gZWxlbWVudHMgYW5k
IGFsbG93IGEgc2V0IG9mIHBzZXVkbyBjbGFzc2VzIChidXQgbm90aGluZyBlbHNlKQogICAgICAg
ICAgICAgLy8gdG8gZm9sbG93IHRoZSBwc2V1ZG8gZWxlbWVudHMuCiAgICAgICAgICAgICBuZXh0
Q29udGV4dC5oYXNTY3JvbGxiYXJQc2V1ZG8gPSBoYXNTY3JvbGxiYXJQc2V1ZG9FbGVtZW50KGR5
bmFtaWNQc2V1ZG9JZFNldCk7Ci0gICAgICAgICAgICBuZXh0Q29udGV4dC5oYXNTZWxlY3Rpb25Q
c2V1ZG8gPSBkeW5hbWljUHNldWRvSWRTZXQuaGFzKFNFTEVDVElPTik7CisgICAgICAgICAgICBu
ZXh0Q29udGV4dC5oYXNTZWxlY3Rpb25Qc2V1ZG8gPSBkeW5hbWljUHNldWRvSWRTZXQuaGFzKFBz
ZXVkb0lkOjpTZWxlY3Rpb24pOwogICAgICAgICAgICAgaWYgKChjb250ZXh0LmlzTWF0Y2hFbGVt
ZW50IHx8IGNoZWNraW5nQ29udGV4dC5yZXNvbHZpbmdNb2RlID09IE1vZGU6OkNvbGxlY3RpbmdS
dWxlcykgJiYgZHluYW1pY1BzZXVkb0lkU2V0CiAgICAgICAgICAgICAgICAgJiYgIW5leHRDb250
ZXh0Lmhhc1NlbGVjdGlvblBzZXVkbwogICAgICAgICAgICAgICAgICYmICEobmV4dENvbnRleHQu
aGFzU2Nyb2xsYmFyUHNldWRvICYmIG5leHRDb250ZXh0LnNlbGVjdG9yLT5tYXRjaCgpID09IENT
U1NlbGVjdG9yOjpQc2V1ZG9DbGFzcykpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0
b3JDaGVja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hl
Y2tlci5oCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JD
aGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgICAg
ICB7IH0KIAogICAgICAgICBjb25zdCBTZWxlY3RvckNoZWNrZXI6Ok1vZGUgcmVzb2x2aW5nTW9k
ZTsKLSAgICAgICAgUHNldWRvSWQgcHNldWRvSWQgeyBOT1BTRVVETyB9OworICAgICAgICBQc2V1
ZG9JZCBwc2V1ZG9JZCB7IFBzZXVkb0lkOjpOb25lIH07CiAgICAgICAgIFJlbmRlclNjcm9sbGJh
ciogc2Nyb2xsYmFyIHsgbnVsbHB0ciB9OwogICAgICAgICBTY3JvbGxiYXJQYXJ0IHNjcm9sbGJh
clBhcnQgeyBOb1BhcnQgfTsKICAgICAgICAgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUgeyBu
dWxscHRyIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRl
ci5oCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVy
Q29udmVydGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBTdHJpbmcgY29udmVydFN0cmluZ09yQXV0byhTdHlsZVJlc29sdmVyJiwgY29uc3Qg
Q1NTVmFsdWUmKTsKICAgICBzdGF0aWMgU3RyaW5nIGNvbnZlcnRTdHJpbmdPck5vbmUoU3R5bGVS
ZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIFRleHRFbXBoYXNpc1Bvc2l0
aW9uIGNvbnZlcnRUZXh0RW1waGFzaXNQb3NpdGlvbihTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NT
VmFsdWUmKTsKLSAgICBzdGF0aWMgRVRleHRBbGlnbiBjb252ZXJ0VGV4dEFsaWduKFN0eWxlUmVz
b2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBUZXh0QWxpZ25Nb2RlIGNvbnZl
cnRUZXh0QWxpZ24oU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGlj
IFJlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4gY29udmVydENsaXBQYXRoKFN0eWxlUmVzb2x2ZXIm
LCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBSZXNpemUgY29udmVydFJlc2l6ZShTdHls
ZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgaW50IGNvbnZlcnRNYXJx
dWVlUmVwZXRpdGlvbihTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKQEAgLTUwMiw3
ICs1MDIsNyBAQCBpbmxpbmUgVGV4dEVtcGhhc2lzUG9zaXRpb24gU3R5bGVCdWlsZGVyCiAgICAg
cmV0dXJuIHBvc2l0aW9uOwogfQogCi1pbmxpbmUgRVRleHRBbGlnbiBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRUZXh0QWxpZ24oU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgY29u
c3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFRleHRBbGlnbk1vZGUgU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0VGV4dEFsaWduKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNv
bnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgQVNTRVJUKHByaW1pdGl2ZVZhbHVl
LmlzVmFsdWVJRCgpKTsKQEAgLTUxMSwxMCArNTExLDEwIEBAIGlubGluZSBFVGV4dEFsaWduIFN0
eWxlQnVpbGRlckNvbnZlcnRlcjoKICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlOwogCiAg
ICAgYXV0byogcGFyZW50U3R5bGUgPSBzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCk7Ci0gICAg
aWYgKHBhcmVudFN0eWxlLT50ZXh0QWxpZ24oKSA9PSBUQVNUQVJUKQotICAgICAgICByZXR1cm4g
cGFyZW50U3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IExFRlQgOiBSSUdIVDsKLSAg
ICBpZiAocGFyZW50U3R5bGUtPnRleHRBbGlnbigpID09IFRBRU5EKQotICAgICAgICByZXR1cm4g
cGFyZW50U3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IFJJR0hUIDogTEVGVDsKKyAg
ICBpZiAocGFyZW50U3R5bGUtPnRleHRBbGlnbigpID09IFRleHRBbGlnbk1vZGU6OlN0YXJ0KQor
ICAgICAgICByZXR1cm4gcGFyZW50U3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IFRl
eHRBbGlnbk1vZGU6OkxlZnQgOiBUZXh0QWxpZ25Nb2RlOjpSaWdodDsKKyAgICBpZiAocGFyZW50
U3R5bGUtPnRleHRBbGlnbigpID09IFRleHRBbGlnbk1vZGU6OkVuZCkKKyAgICAgICAgcmV0dXJu
IHBhcmVudFN0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBUZXh0QWxpZ25Nb2RlOjpS
aWdodCA6IFRleHRBbGlnbk1vZGU6OkxlZnQ7CiAgICAgcmV0dXJuIHBhcmVudFN0eWxlLT50ZXh0
QWxpZ24oKTsKIH0KIApAQCAtNTMyLDcgKzUzMiw3IEBAIGlubGluZSBSZWZQdHI8Q2xpcFBhdGhP
cGVyYXRpb24+IFN0eWxlQnUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAg
Q1NTQm94VHlwZSByZWZlcmVuY2VCb3ggPSBCb3hNaXNzaW5nOworICAgIENTU0JveFR5cGUgcmVm
ZXJlbmNlQm94ID0gQ1NTQm94VHlwZTo6Qm94TWlzc2luZzsKICAgICBSZWZQdHI8Q2xpcFBhdGhP
cGVyYXRpb24+IG9wZXJhdGlvbjsKIAogICAgIGZvciAoYXV0byYgY3VycmVudFZhbHVlIDogZG93
bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKQEAgLTU0OCwxNCArNTQ4LDE0IEBAIGlubGlu
ZSBSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+IFN0eWxlQnUKICAgICAgICAgICAgICAgICB8fCBw
cmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVGaWxsCiAgICAgICAgICAgICAgICAg
fHwgcHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlU3Ryb2tlCiAgICAgICAgICAg
ICAgICAgfHwgcHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlVmlld0JveCk7Ci0g
ICAgICAgICAgICBBU1NFUlQocmVmZXJlbmNlQm94ID09IEJveE1pc3NpbmcpOworICAgICAgICAg
ICAgQVNTRVJUKHJlZmVyZW5jZUJveCA9PSBDU1NCb3hUeXBlOjpCb3hNaXNzaW5nKTsKICAgICAg
ICAgICAgIHJlZmVyZW5jZUJveCA9IHByaW1pdGl2ZVZhbHVlOwogICAgICAgICB9CiAgICAgfQog
ICAgIGlmIChvcGVyYXRpb24pCiAgICAgICAgIGRvd25jYXN0PFNoYXBlQ2xpcFBhdGhPcGVyYXRp
b24+KCpvcGVyYXRpb24pLnNldFJlZmVyZW5jZUJveChyZWZlcmVuY2VCb3gpOwogICAgIGVsc2Ug
ewotICAgICAgICBBU1NFUlQocmVmZXJlbmNlQm94ICE9IEJveE1pc3NpbmcpOworICAgICAgICBB
U1NFUlQocmVmZXJlbmNlQm94ICE9IENTU0JveFR5cGU6OkJveE1pc3NpbmcpOwogICAgICAgICBv
cGVyYXRpb24gPSBCb3hDbGlwUGF0aE9wZXJhdGlvbjo6Y3JlYXRlKHJlZmVyZW5jZUJveCk7CiAg
ICAgfQogCkBAIC03NzUsNyArNzc1LDcgQEAgaW5saW5lIFJlZlB0cjxTaGFwZVZhbHVlPiBTdHls
ZUJ1aWxkZXJDbwogICAgICAgICByZXR1cm4gU2hhcGVWYWx1ZTo6Y3JlYXRlKHN0eWxlUmVzb2x2
ZXIuc3R5bGVJbWFnZSh2YWx1ZSkucmVsZWFzZU5vbk51bGwoKSk7CiAKICAgICBSZWZQdHI8QmFz
aWNTaGFwZT4gc2hhcGU7Ci0gICAgQ1NTQm94VHlwZSByZWZlcmVuY2VCb3ggPSBCb3hNaXNzaW5n
OworICAgIENTU0JveFR5cGUgcmVmZXJlbmNlQm94ID0gQ1NTQm94VHlwZTo6Qm94TWlzc2luZzsK
ICAgICBmb3IgKGF1dG8mIGN1cnJlbnRWYWx1ZSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFs
dWUpKSB7CiAgICAgICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSk7CiAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1
ZS5pc1NoYXBlKCkpCkBAIC03OTQsNyArNzk0LDcgQEAgaW5saW5lIFJlZlB0cjxTaGFwZVZhbHVl
PiBTdHlsZUJ1aWxkZXJDbwogICAgIGlmIChzaGFwZSkKICAgICAgICAgcmV0dXJuIFNoYXBlVmFs
dWU6OmNyZWF0ZShzaGFwZS5yZWxlYXNlTm9uTnVsbCgpLCByZWZlcmVuY2VCb3gpOwogCi0gICAg
aWYgKHJlZmVyZW5jZUJveCAhPSBCb3hNaXNzaW5nKQorICAgIGlmIChyZWZlcmVuY2VCb3ggIT0g
Q1NTQm94VHlwZTo6Qm94TWlzc2luZykKICAgICAgICAgcmV0dXJuIFNoYXBlVmFsdWU6OmNyZWF0
ZShyZWZlcmVuY2VCb3gpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC05MjMsNyAr
OTIzLDcgQEAgaW5saW5lIGJvb2wgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjcmVhdAogICAgICAg
ICAgICAgdW5zaWduZWQgYXV0b1JlcGVhdEluZGV4ID0gMDsKICAgICAgICAgICAgIENTU1ZhbHVl
SUQgYXV0b1JlcGVhdElEID0gZG93bmNhc3Q8Q1NTR3JpZEF1dG9SZXBlYXRWYWx1ZT4oY3VycmVu
dFZhbHVlLmdldCgpKS5hdXRvUmVwZWF0SUQoKTsKICAgICAgICAgICAgIEFTU0VSVChhdXRvUmVw
ZWF0SUQgPT0gQ1NTVmFsdWVBdXRvRmlsbCB8fCBhdXRvUmVwZWF0SUQgPT0gQ1NTVmFsdWVBdXRv
Rml0KTsKLSAgICAgICAgICAgIHRyYWNrc0RhdGEubV9hdXRvUmVwZWF0VHlwZSA9IGF1dG9SZXBl
YXRJRCA9PSBDU1NWYWx1ZUF1dG9GaWxsID8gQXV0b0ZpbGwgOiBBdXRvRml0OworICAgICAgICAg
ICAgdHJhY2tzRGF0YS5tX2F1dG9SZXBlYXRUeXBlID0gYXV0b1JlcGVhdElEID09IENTU1ZhbHVl
QXV0b0ZpbGwgPyBBdXRvUmVwZWF0VHlwZTo6RmlsbCA6IEF1dG9SZXBlYXRUeXBlOjpGaXQ7CiAg
ICAgICAgICAgICBmb3IgKGF1dG8mIGF1dG9SZXBlYXRWYWx1ZSA6IGRvd25jYXN0PENTU1ZhbHVl
TGlzdD4oY3VycmVudFZhbHVlLmdldCgpKSkgewogICAgICAgICAgICAgICAgIGlmIChpczxDU1NH
cmlkTGluZU5hbWVzVmFsdWU+KGF1dG9SZXBlYXRWYWx1ZSkpIHsKICAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlR3JpZExpbmVOYW1lc0xpc3QoYXV0b1JlcGVhdFZhbHVlLmdldCgpLCBhdXRvUmVw
ZWF0SW5kZXgsIHRyYWNrc0RhdGEubV9hdXRvUmVwZWF0TmFtZWRHcmlkTGluZXMsIHRyYWNrc0Rh
dGEubV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZExpbmVzKTsKQEAgLTEwNzgsNyArMTA3OCw3
IEBAIGlubGluZSBHcmlkQXV0b0Zsb3cgU3R5bGVCdWlsZGVyQ29udmVydGUKIGlubGluZSBDU1NU
b0xlbmd0aENvbnZlcnNpb25EYXRhIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3NzdG9MZW5ndGhD
b252ZXJzaW9uRGF0YVdpdGhUZXh0Wm9vbUZhY3RvcihTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29s
dmVyKQogewogICAgIGlmIChhdXRvKiBmcmFtZSA9IHN0eWxlUmVzb2x2ZXIuZG9jdW1lbnQoKS5m
cmFtZSgpKSB7Ci0gICAgICAgIGZsb2F0IHRleHRab29tRmFjdG9yID0gc3R5bGVSZXNvbHZlci5z
dHlsZSgpLT50ZXh0Wm9vbSgpICE9IFRleHRab29tUmVzZXQgPyBmcmFtZS0+dGV4dFpvb21GYWN0
b3IoKSA6IDEuMGY7CisgICAgICAgIGZsb2F0IHRleHRab29tRmFjdG9yID0gc3R5bGVSZXNvbHZl
ci5zdHlsZSgpLT50ZXh0Wm9vbSgpICE9IFRleHRab29tOjpSZXNldCA/IGZyYW1lLT50ZXh0Wm9v
bUZhY3RvcigpIDogMS4wZjsKICAgICAgICAgcmV0dXJuIHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5j
c3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkuY29weVdpdGhBZGp1c3RlZFpvb20oc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCkgKiB0ZXh0Wm9vbUZhY3Rvcik7CiAgICAgfQog
ICAgIHJldHVybiBzdHlsZVJlc29sdmVyLnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0
YSgpOwpAQCAtMTQ2OCw5ICsxNDY4LDkgQEAgaW5saW5lIEJyZWFrQmV0d2VlbiBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09
IENTU1ZhbHVlQWx3YXlzKQotICAgICAgICByZXR1cm4gUGFnZUJyZWFrQmV0d2VlbjsKKyAgICAg
ICAgcmV0dXJuIEJyZWFrQmV0d2Vlbjo6UGFnZTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFs
dWVJRCgpID09IENTU1ZhbHVlQXZvaWQpCi0gICAgICAgIHJldHVybiBBdm9pZFBhZ2VCcmVha0Jl
dHdlZW47CisgICAgICAgIHJldHVybiBCcmVha0JldHdlZW46OkF2b2lkUGFnZTsKICAgICByZXR1
cm4gcHJpbWl0aXZlVmFsdWU7CiB9CiAKQEAgLTE0NzgsNyArMTQ3OCw3IEBAIGlubGluZSBCcmVh
a0luc2lkZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1
ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgaWYgKHByaW1pdGl2
ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF2b2lkKQotICAgICAgICByZXR1cm4gQXZvaWRQ
YWdlQnJlYWtJbnNpZGU7CisgICAgICAgIHJldHVybiBCcmVha0luc2lkZTo6QXZvaWRQYWdlOwog
ICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZTsKIH0KIApAQCAtMTQ4Niw5ICsxNDg2LDkgQEAgaW5s
aW5lIEJyZWFrQmV0d2VlbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZQogewogICAgIGF1dG8mIHByaW1p
dGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAo
cHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlQWx3YXlzKQotICAgICAgICByZXR1
cm4gQ29sdW1uQnJlYWtCZXR3ZWVuOworICAgICAgICByZXR1cm4gQnJlYWtCZXR3ZWVuOjpDb2x1
bW47CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF2b2lkKQot
ICAgICAgICByZXR1cm4gQXZvaWRDb2x1bW5CcmVha0JldHdlZW47CisgICAgICAgIHJldHVybiBC
cmVha0JldHdlZW46OkF2b2lkQ29sdW1uOwogICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZTsKIH0K
IApAQCAtMTQ5Niw3ICsxNDk2LDcgQEAgaW5saW5lIEJyZWFrSW5zaWRlIFN0eWxlQnVpbGRlckNv
bnZlcnRlcgogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENT
U1ZhbHVlQXZvaWQpCi0gICAgICAgIHJldHVybiBBdm9pZENvbHVtbkJyZWFrSW5zaWRlOworICAg
ICAgICByZXR1cm4gQnJlYWtJbnNpZGU6OkF2b2lkQ29sdW1uOwogICAgIHJldHVybiBwcmltaXRp
dmVWYWx1ZTsKIH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJD
dXN0b20uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3Vz
dG9tLmgJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxk
ZXJDdXN0b20uaAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDcgKzE1Niw3IEBAIHByaXZhdGU6CiAK
ICAgICB0ZW1wbGF0ZSA8Q1NTUHJvcGVydHlJRCBpZD4KICAgICBzdGF0aWMgdm9pZCBhcHBseVRl
eHRPckJveFNoYWRvd1ZhbHVlKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwotICAgIHN0YXRp
YyBib29sIGlzVmFsaWREaXNwbGF5VmFsdWUoU3R5bGVSZXNvbHZlciYsIEVEaXNwbGF5KTsKKyAg
ICBzdGF0aWMgYm9vbCBpc1ZhbGlkRGlzcGxheVZhbHVlKFN0eWxlUmVzb2x2ZXImLCBEaXNwbGF5
VHlwZSk7CiAKICAgICBlbnVtIENvdW50ZXJCZWhhdmlvciB7SW5jcmVtZW50ID0gMCwgUmVzZXR9
OwogICAgIHRlbXBsYXRlIDxDb3VudGVyQmVoYXZpb3IgY291bnRlckJlaGF2aW9yPgpAQCAtMzk0
LDkgKzM5NCw5IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWwKICAg
ICBmb3IgKGF1dG8mIGl0ZW0gOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgewogICAg
ICAgICBDU1NQcmltaXRpdmVWYWx1ZSYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4oaXRlbS5nZXQoKSk7CiAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1
ZUlEKCkgPT0gQ1NTVmFsdWVGcm9tSW1hZ2UpCi0gICAgICAgICAgICBzb3VyY2UgPSBJbWFnZVJl
c29sdXRpb25Gcm9tSW1hZ2U7CisgICAgICAgICAgICBzb3VyY2UgPSBJbWFnZVJlc29sdXRpb25T
b3VyY2U6OkZyb21JbWFnZTsKICAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJ
RCgpID09IENTU1ZhbHVlU25hcCkKLSAgICAgICAgICAgIHNuYXAgPSBJbWFnZVJlc29sdXRpb25T
bmFwUGl4ZWxzOworICAgICAgICAgICAgc25hcCA9IEltYWdlUmVzb2x1dGlvblNuYXA6OlBpeGVs
czsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzb2x1dGlvbiA9IHByaW1pdGl2ZVZhbHVl
LmRvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRFBQWCk7CiAgICAgfQpAQCAtNjU2
LDcgKzY1Niw3IEBAIHN0YXRpYyBpbmxpbmUgZmxvYXQgY29tcHV0ZUJhc2VTcGVjaWZpZWQKIHsK
ICAgICBmbG9hdCByZXN1bHQgPSBzdHlsZS5zcGVjaWZpZWRGb250U2l6ZSgpOwogICAgIGF1dG8q
IGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsKLSAgICBpZiAoZnJhbWUgJiYgc3R5bGUudGV4dFpv
b20oKSAhPSBUZXh0Wm9vbVJlc2V0KQorICAgIGlmIChmcmFtZSAmJiBzdHlsZS50ZXh0Wm9vbSgp
ICE9IFRleHRab29tOjpSZXNldCkKICAgICAgICAgcmVzdWx0ICo9IGZyYW1lLT50ZXh0Wm9vbUZh
Y3RvcigpOwogICAgIHJlc3VsdCAqPSBzdHlsZS5lZmZlY3RpdmVab29tKCk7CiAgICAgaWYgKHBl
cmNlbnRhZ2VBdXRvc2l6aW5nRW5hYmxlZCkKQEAgLTgxNSw5ICs4MTUsOSBAQCBpbmxpbmUgdm9p
ZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFs
dWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGlmIChwcmltaXRp
dmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpCi0gICAgICAgIHN0eWxlUmVzb2x2
ZXIuc3R5bGUoKS0+c2V0VGV4dFpvb20oVGV4dFpvb21Ob3JtYWwpOworICAgICAgICBzdHlsZVJl
c29sdmVyLnN0eWxlKCktPnNldFRleHRab29tKFRleHRab29tOjpOb3JtYWwpOwogICAgIGVsc2Ug
aWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZVJlc2V0KQotICAgICAgICBz
dHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRab29tKFRleHRab29tUmVzZXQpOworICAgICAg
ICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRab29tKFRleHRab29tOjpSZXNldCk7CiAg
ICAgc3R5bGVSZXNvbHZlci5zdGF0ZSgpLnNldEZvbnREaXJ0eSh0cnVlKTsKIH0KIApAQCAtMTAw
NCwyMyArMTAwNCwyMyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFs
CiAgICAgc3R5bGVSZXNvbHZlci5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsK
IH0KIAotaW5saW5lIGJvb2wgU3R5bGVCdWlsZGVyQ3VzdG9tOjppc1ZhbGlkRGlzcGxheVZhbHVl
KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIEVEaXNwbGF5IGRpc3BsYXkpCitpbmxpbmUg
Ym9vbCBTdHlsZUJ1aWxkZXJDdXN0b206OmlzVmFsaWREaXNwbGF5VmFsdWUoU3R5bGVSZXNvbHZl
ciYgc3R5bGVSZXNvbHZlciwgRGlzcGxheVR5cGUgZGlzcGxheSkKIHsKLSAgICBpZiAoaXM8U1ZH
RWxlbWVudD4oc3R5bGVSZXNvbHZlci5lbGVtZW50KCkpICYmIHN0eWxlUmVzb2x2ZXIuc3R5bGUo
KS0+c3R5bGVUeXBlKCkgPT0gTk9QU0VVRE8pCi0gICAgICAgIHJldHVybiBkaXNwbGF5ID09IElO
TElORSB8fCBkaXNwbGF5ID09IEJMT0NLIHx8IGRpc3BsYXkgPT0gTk9ORTsKKyAgICBpZiAoaXM8
U1ZHRWxlbWVudD4oc3R5bGVSZXNvbHZlci5lbGVtZW50KCkpICYmIHN0eWxlUmVzb2x2ZXIuc3R5
bGUoKS0+c3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6Ok5vbmUpCisgICAgICAgIHJldHVybiBkaXNw
bGF5ID09IERpc3BsYXlUeXBlOjpJbmxpbmUgfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6Qmxv
Y2sgfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6Tm9uZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXREaXNwbGF5KFN0
eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCiB7Ci0gICAgRURpc3BsYXkgZGlzcGxheSA9IHN0
eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+ZGlzcGxheSgpOworICAgIERpc3BsYXlUeXBlIGRp
c3BsYXkgPSBzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPmRpc3BsYXkoKTsKICAgICBpZiAo
aXNWYWxpZERpc3BsYXlWYWx1ZShzdHlsZVJlc29sdmVyLCBkaXNwbGF5KSkKICAgICAgICAgc3R5
bGVSZXNvbHZlci5zdHlsZSgpLT5zZXREaXNwbGF5KGRpc3BsYXkpOwogfQogCiBpbmxpbmUgdm9p
ZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVEaXNwbGF5KFN0eWxlUmVzb2x2ZXImIHN0
eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBFRGlzcGxheSBkaXNwbGF5ID0g
ZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKKyAgICBEaXNwbGF5VHlwZSBkaXNw
bGF5ID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAoaXNWYWxp
ZERpc3BsYXlWYWx1ZShzdHlsZVJlc29sdmVyLCBkaXNwbGF5KSkKICAgICAgICAgc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5zZXREaXNwbGF5KGRpc3BsYXkpOwogfQpAQCAtMTExOCw4ICsxMTE4LDgg
QEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbAogCiAgICAgYXV0byYg
cHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAg
IGlmIChwcmltaXRpdmVWYWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAgIHN0eWxlUmVzb2x2ZXIu
c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzRmlsbChUZXh0RW1waGFzaXNGaWxsRmlsbGVkKTsKLSAg
ICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNNYXJrKFRleHRFbXBo
YXNpc01hcmtDdXN0b20pOworICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRF
bXBoYXNpc0ZpbGwoVGV4dEVtcGhhc2lzRmlsbDo6RmlsbGVkKTsKKyAgICAgICAgc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNNYXJrKFRleHRFbXBoYXNpc01hcms6OkN1c3Rv
bSk7CiAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzQ3VzdG9t
TWFyayhwcmltaXRpdmVWYWx1ZS5zdHJpbmdWYWx1ZSgpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTExMjgsOSArMTEyOCw5IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6
YXBwbHlWYWwKIAogICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVG
aWxsZWQgfHwgcHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlT3BlbikgewogICAg
ICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRFbXBoYXNpc0ZpbGwocHJpbWl0aXZl
VmFsdWUpOwotICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRFbXBoYXNpc01h
cmsoVGV4dEVtcGhhc2lzTWFya0F1dG8pOworICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCkt
PnNldFRleHRFbXBoYXNpc01hcmsoVGV4dEVtcGhhc2lzTWFyazo6QXV0byk7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNGaWxsKFRl
eHRFbXBoYXNpc0ZpbGxGaWxsZWQpOworICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNl
dFRleHRFbXBoYXNpc0ZpbGwoVGV4dEVtcGhhc2lzRmlsbDo6RmlsbGVkKTsKICAgICAgICAgc3R5
bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNNYXJrKHByaW1pdGl2ZVZhbHVlKTsK
ICAgICB9CiB9CkBAIC0xMjE5LDEzICsxMjE5LDEzIEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWwKIHsKICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPmNsZWFyQ3Vy
c29yTGlzdCgpOwogICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7Ci0gICAg
ICAgIEVDdXJzb3IgY3Vyc29yID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsK
KyAgICAgICAgQ3Vyc29yVHlwZSBjdXJzb3IgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFsdWUpOwogICAgICAgICBpZiAoc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5jdXJzb3IoKSAhPSBj
dXJzb3IpCiAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEN1cnNvcihjdXJz
b3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc3R5bGVSZXNvbHZlci5zdHlsZSgp
LT5zZXRDdXJzb3IoQ3Vyc29yQXV0byk7CisgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRD
dXJzb3IoQ3Vyc29yVHlwZTo6QXV0byk7CiAgICAgYXV0byYgbGlzdCA9IGRvd25jYXN0PENTU1Zh
bHVlTGlzdD4odmFsdWUpOwogICAgIGZvciAoYXV0byYgaXRlbSA6IGxpc3QpIHsKICAgICAgICAg
aWYgKGlzPENTU0N1cnNvckltYWdlVmFsdWU+KGl0ZW0pKSB7CkBAIC0xNDE0LDcgKzE0MTQsNyBA
QCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsCiAgICAgICAgICAgICBk
aWRTZXQgPSB0cnVlOwogICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnRWYWx1ZS5pc0F0dHIoKSkg
ewogICAgICAgICAgICAgLy8gRklYTUU6IENhbiBhIG5hbWVzcGFjZSBiZSBzcGVjaWZpZWQgZm9y
IGFuIGF0dHIoZm9vKT8KLSAgICAgICAgICAgIGlmIChzdHlsZVJlc29sdmVyLnN0eWxlKCktPnN0
eWxlVHlwZSgpID09IE5PUFNFVURPKQorICAgICAgICAgICAgaWYgKHN0eWxlUmVzb2x2ZXIuc3R5
bGUoKS0+c3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6Ok5vbmUpCiAgICAgICAgICAgICAgICAgc3R5
bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRIYXNBdHRyQ29udGVudCgpOwogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8UmVuZGVyU3R5bGUqPihzdHlsZVJlc29sdmVy
LnBhcmVudFN0eWxlKCkpLT5zZXRIYXNBdHRyQ29udGVudCgpOwpAQCAtMTQyNiwxMCArMTQyNiwx
MCBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsCiAgICAgICAgICAg
ICBzdHlsZVJlc29sdmVyLnJ1bGVTZXRzKCkubXV0YWJsZUZlYXR1cmVzKCkucmVnaXN0ZXJDb250
ZW50QXR0cmlidXRlKGF0dHIubG9jYWxOYW1lKCkpOwogICAgICAgICB9IGVsc2UgaWYgKGNvbnRl
bnRWYWx1ZS5pc0NvdW50ZXIoKSkgewogICAgICAgICAgICAgYXV0byogY291bnRlclZhbHVlID0g
Y29udGVudFZhbHVlLmNvdW50ZXJWYWx1ZSgpOwotICAgICAgICAgICAgRUxpc3RTdHlsZVR5cGUg
bGlzdFN0eWxlVHlwZSA9IE5vbmVMaXN0U3R5bGU7CisgICAgICAgICAgICBMaXN0U3R5bGVUeXBl
IGxpc3RTdHlsZVR5cGUgPSBMaXN0U3R5bGVUeXBlOjpOb25lOwogICAgICAgICAgICAgQ1NTVmFs
dWVJRCBsaXN0U3R5bGVJZGVudCA9IGNvdW50ZXJWYWx1ZS0+bGlzdFN0eWxlSWRlbnQoKTsKICAg
ICAgICAgICAgIGlmIChsaXN0U3R5bGVJZGVudCAhPSBDU1NWYWx1ZU5vbmUpCi0gICAgICAgICAg
ICAgICAgbGlzdFN0eWxlVHlwZSA9IHN0YXRpY19jYXN0PEVMaXN0U3R5bGVUeXBlPihsaXN0U3R5
bGVJZGVudCAtIENTU1ZhbHVlRGlzYyk7CisgICAgICAgICAgICAgICAgbGlzdFN0eWxlVHlwZSA9
IHN0YXRpY19jYXN0PExpc3RTdHlsZVR5cGU+KGxpc3RTdHlsZUlkZW50IC0gQ1NTVmFsdWVEaXNj
KTsKICAgICAgICAgICAgIGF1dG8gY291bnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlckNv
bnRlbnQ+KGNvdW50ZXJWYWx1ZS0+aWRlbnRpZmllcigpLCBsaXN0U3R5bGVUeXBlLCBjb3VudGVy
VmFsdWUtPnNlcGFyYXRvcigpKTsKICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+
c2V0Q29udGVudChXVEZNb3ZlKGNvdW50ZXIpLCBkaWRTZXQpOwogICAgICAgICAgICAgZGlkU2V0
ID0gdHJ1ZTsKQEAgLTE2MDAsNyArMTYwMCw3IEBAIGlubGluZSBmbG9hdCBTdHlsZUJ1aWxkZXJD
dXN0b206OnNtYWxsZXIKIAogaW5saW5lIGZsb2F0IFN0eWxlQnVpbGRlckN1c3RvbTo6ZGV0ZXJt
aW5lUnVieVRleHRTaXplTXVsdGlwbGllcihTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQog
ewotICAgIGlmIChzdHlsZVJlc29sdmVyLnN0eWxlKCktPnJ1YnlQb3NpdGlvbigpICE9IFJ1YnlQ
b3NpdGlvbkludGVyQ2hhcmFjdGVyKQorICAgIGlmIChzdHlsZVJlc29sdmVyLnN0eWxlKCktPnJ1
YnlQb3NpdGlvbigpICE9IFJ1YnlQb3NpdGlvbjo6SW50ZXJDaGFyYWN0ZXIpCiAgICAgICAgIHJl
dHVybiAwLjVmOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaGFjayBpcyB0byBlbnN1cmUgdG9uZSBt
YXJrcyBhcmUgdGhlIHNhbWUgc2l6ZSBhcwpAQCAtMTgxMCw3ICsxODEwLDcgQEAgdm9pZCBTdHls
ZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVBbHQoUwogICAgICAgICBzdHlsZVJlc29sdmVyLnN0
eWxlKCktPnNldENvbnRlbnRBbHRUZXh0KHByaW1pdGl2ZVZhbHVlLnN0cmluZ1ZhbHVlKCkpOwog
ICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLmlzQXR0cigpKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBDYW4gYSBuYW1lc3BhY2UgYmUgc3BlY2lmaWVkIGZvciBhbiBhdHRyKGZvbyk/Ci0gICAgICAg
IGlmIChzdHlsZVJlc29sdmVyLnN0eWxlKCktPnN0eWxlVHlwZSgpID09IE5PUFNFVURPKQorICAg
ICAgICBpZiAoc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zdHlsZVR5cGUoKSA9PSBQc2V1ZG9JZDo6
Tm9uZSkKICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VW5pcXVlKCk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8UmVuZGVyU3R5bGUqPihzdHlsZVJl
c29sdmVyLnBhcmVudFN0eWxlKCkpLT5zZXRVbmlxdWUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5jcHAJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU5LDExICszNTksMTEgQEAg
RWxlbWVudFN0eWxlIFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yRWxlbQogCiAgICAgaWYgKGVsZW1l
bnQuaXNMaW5rKCkpIHsKICAgICAgICAgc3R5bGUuc2V0SXNMaW5rKHRydWUpOwotICAgICAgICBF
SW5zaWRlTGluayBsaW5rU3RhdGUgPSBzdGF0ZS5lbGVtZW50TGlua1N0YXRlKCk7Ci0gICAgICAg
IGlmIChsaW5rU3RhdGUgIT0gTm90SW5zaWRlTGluaykgeworICAgICAgICBJbnNpZGVMaW5rIGxp
bmtTdGF0ZSA9IHN0YXRlLmVsZW1lbnRMaW5rU3RhdGUoKTsKKyAgICAgICAgaWYgKGxpbmtTdGF0
ZSAhPSBJbnNpZGVMaW5rOjpOb3RJbnNpZGUpIHsKICAgICAgICAgICAgIGJvb2wgZm9yY2VWaXNp
dGVkID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmb3JjZVBzZXVkb1N0YXRlKGVsZW1lbnQs
IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1Zpc2l0ZWQpOwogICAgICAgICAgICAgaWYgKGZvcmNl
VmlzaXRlZCkKLSAgICAgICAgICAgICAgICBsaW5rU3RhdGUgPSBJbnNpZGVWaXNpdGVkTGluazsK
KyAgICAgICAgICAgICAgICBsaW5rU3RhdGUgPSBJbnNpZGVMaW5rOjpJbnNpZGVWaXNpdGVkOwog
ICAgICAgICB9CiAgICAgICAgIHN0eWxlLnNldEluc2lkZUxpbmsobGlua1N0YXRlKTsKICAgICB9
CkBAIC02NzMsNTMgKzY3Myw1MyBAQCBzdGF0aWMgdm9pZCBhZGRJbnRyaW5zaWNNYXJnaW5zKFJl
bmRlclN0CiAgICAgfQogfQogCi1zdGF0aWMgRURpc3BsYXkgZXF1aXZhbGVudEJsb2NrRGlzcGxh
eShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKK3N0
YXRpYyBEaXNwbGF5VHlwZSBlcXVpdmFsZW50QmxvY2tEaXNwbGF5KGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSwgY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHN3aXRjaCAoYXV0byBk
aXNwbGF5ID0gc3R5bGUuZGlzcGxheSgpKSB7Ci0gICAgY2FzZSBCTE9DSzoKLSAgICBjYXNlIFRB
QkxFOgotICAgIGNhc2UgQk9YOgotICAgIGNhc2UgRkxFWDoKLSAgICBjYXNlIFdFQktJVF9GTEVY
OgotICAgIGNhc2UgR1JJRDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpCbG9jazoKKyAgICBjYXNl
IERpc3BsYXlUeXBlOjpUYWJsZToKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpCb3g6CisgICAgY2Fz
ZSBEaXNwbGF5VHlwZTo6RmxleDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpXZWJLaXRGbGV4Ogor
ICAgIGNhc2UgRGlzcGxheVR5cGU6OkdyaWQ6CiAgICAgICAgIHJldHVybiBkaXNwbGF5OwogCi0g
ICAgY2FzZSBMSVNUX0lURU06CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6TGlzdEl0ZW06CiAgICAg
ICAgIC8vIEl0IGlzIGEgV2luSUUgYnVnIHRoYXQgZmxvYXRlZCBsaXN0IGl0ZW1zIGxvc2UgdGhl
aXIgYnVsbGV0cywgc28gd2UnbGwgZW11bGF0ZSB0aGUgcXVpcmssIGJ1dCBvbmx5IGluIHF1aXJr
cyBtb2RlLgogICAgICAgICBpZiAoZG9jdW1lbnQuaW5RdWlya3NNb2RlKCkgJiYgc3R5bGUuaXNG
bG9hdGluZygpKQotICAgICAgICAgICAgcmV0dXJuIEJMT0NLOworICAgICAgICAgICAgcmV0dXJu
IERpc3BsYXlUeXBlOjpCbG9jazsKICAgICAgICAgcmV0dXJuIGRpc3BsYXk7Ci0gICAgY2FzZSBJ
TkxJTkVfVEFCTEU6Ci0gICAgICAgIHJldHVybiBUQUJMRTsKLSAgICBjYXNlIElOTElORV9CT1g6
Ci0gICAgICAgIHJldHVybiBCT1g7Ci0gICAgY2FzZSBJTkxJTkVfRkxFWDoKLSAgICBjYXNlIFdF
QktJVF9JTkxJTkVfRkxFWDoKLSAgICAgICAgcmV0dXJuIEZMRVg7Ci0gICAgY2FzZSBJTkxJTkVf
R1JJRDoKLSAgICAgICAgcmV0dXJuIEdSSUQ7Ci0KLSAgICBjYXNlIElOTElORToKLSAgICBjYXNl
IENPTVBBQ1Q6Ci0gICAgY2FzZSBJTkxJTkVfQkxPQ0s6Ci0gICAgY2FzZSBUQUJMRV9ST1dfR1JP
VVA6Ci0gICAgY2FzZSBUQUJMRV9IRUFERVJfR1JPVVA6Ci0gICAgY2FzZSBUQUJMRV9GT09URVJf
R1JPVVA6Ci0gICAgY2FzZSBUQUJMRV9ST1c6Ci0gICAgY2FzZSBUQUJMRV9DT0xVTU5fR1JPVVA6
Ci0gICAgY2FzZSBUQUJMRV9DT0xVTU46Ci0gICAgY2FzZSBUQUJMRV9DRUxMOgotICAgIGNhc2Ug
VEFCTEVfQ0FQVElPTjoKLSAgICAgICAgcmV0dXJuIEJMT0NLOwotICAgIGNhc2UgQ09OVEVOVFM6
CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6SW5saW5lVGFibGU6CisgICAgICAgIHJldHVybiBEaXNw
bGF5VHlwZTo6VGFibGU7CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6SW5saW5lQm94OgorICAgICAg
ICByZXR1cm4gRGlzcGxheVR5cGU6OkJveDsKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpJbmxpbmVG
bGV4OgorICAgIGNhc2UgRGlzcGxheVR5cGU6OldlYktpdElubGluZUZsZXg6CisgICAgICAgIHJl
dHVybiBEaXNwbGF5VHlwZTo6RmxleDsKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpJbmxpbmVHcmlk
OgorICAgICAgICByZXR1cm4gRGlzcGxheVR5cGU6OkdyaWQ7CisKKyAgICBjYXNlIERpc3BsYXlU
eXBlOjpJbmxpbmU6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6Q29tcGFjdDoKKyAgICBjYXNlIERp
c3BsYXlUeXBlOjpJbmxpbmVCbG9jazoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZVJvd0dy
b3VwOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlSGVhZGVyR3JvdXA6CisgICAgY2FzZSBE
aXNwbGF5VHlwZTo6VGFibGVGb290ZXJHcm91cDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJs
ZVJvdzoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZUNvbHVtbkdyb3VwOgorICAgIGNhc2Ug
RGlzcGxheVR5cGU6OlRhYmxlQ29sdW1uOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlQ2Vs
bDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZUNhcHRpb246CisgICAgICAgIHJldHVybiBE
aXNwbGF5VHlwZTo6QmxvY2s7CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6Q29udGVudHM6CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gQ09OVEVOVFM7Ci0gICAg
Y2FzZSBOT05FOgorICAgICAgICByZXR1cm4gRGlzcGxheVR5cGU6OkNvbnRlbnRzOworICAgIGNh
c2UgRGlzcGxheVR5cGU6Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICByZXR1cm4gTk9ORTsKKyAgICAgICAgcmV0dXJuIERpc3BsYXlUeXBlOjpOb25lOwogICAg
IH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQkxPQ0s7CisgICAgcmV0
dXJuIERpc3BsYXlUeXBlOjpCbG9jazsKIH0KIAogLy8gQ1NTIHJlcXVpcmVzIHRleHQtZGVjb3Jh
dGlvbiB0byBiZSByZXNldCBhdCBlYWNoIERPTSBlbGVtZW50IGZvciB0YWJsZXMsIApAQCAtNzI3
LDggKzcyNyw4IEBAIHN0YXRpYyBFRGlzcGxheSBlcXVpdmFsZW50QmxvY2tEaXNwbGF5KGMKIC8v
IGFuZCBhYnNvbHV0ZSBvciByZWxhdGl2ZWx5IHBvc2l0aW9uZWQgZWxlbWVudHMuCiBzdGF0aWMg
Ym9vbCBkb2VzTm90SW5oZXJpdFRleHREZWNvcmF0aW9uKGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSwgY29uc3QgRWxlbWVudCogZWxlbWVudCkKIHsKLSAgICByZXR1cm4gc3R5bGUuZGlzcGxheSgp
ID09IFRBQkxFIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBJTkxJTkVfVEFCTEUKLSAgICAgICAgfHwg
c3R5bGUuZGlzcGxheSgpID09IElOTElORV9CTE9DSyB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gSU5M
SU5FX0JPWCB8fCAoZWxlbWVudCAmJiBpc0F0U2hhZG93Qm91bmRhcnkoKmVsZW1lbnQpKQorICAg
IHJldHVybiBzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxlIHx8IHN0eWxlLmRp
c3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lVGFibGUKKyAgICAgICAgfHwgc3R5bGUuZGlz
cGxheSgpID09IERpc3BsYXlUeXBlOjpJbmxpbmVCbG9jayB8fCBzdHlsZS5kaXNwbGF5KCkgPT0g
RGlzcGxheVR5cGU6OklubGluZUJveCB8fCAoZWxlbWVudCAmJiBpc0F0U2hhZG93Qm91bmRhcnko
KmVsZW1lbnQpKQogICAgICAgICB8fCBzdHlsZS5pc0Zsb2F0aW5nKCkgfHwgc3R5bGUuaGFzT3V0
T2ZGbG93UG9zaXRpb24oKTsKIH0KIApAQCAtNzQyLDkgKzc0Miw5IEBAIHN0YXRpYyBib29sIGlz
U2Nyb2xsYWJsZU92ZXJmbG93KE92ZXJmbG8KIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRqdXN0U3R5
bGVGb3JJbnRlckNoYXJhY3RlclJ1YnkoKQogewogICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IG1f
c3RhdGUuc3R5bGUoKTsKLSAgICBpZiAoc3R5bGUtPnJ1YnlQb3NpdGlvbigpICE9IFJ1YnlQb3Np
dGlvbkludGVyQ2hhcmFjdGVyIHx8ICFtX3N0YXRlLmVsZW1lbnQoKSB8fCAhbV9zdGF0ZS5lbGVt
ZW50KCktPmhhc1RhZ05hbWUocnRUYWcpKQorICAgIGlmIChzdHlsZS0+cnVieVBvc2l0aW9uKCkg
IT0gUnVieVBvc2l0aW9uOjpJbnRlckNoYXJhY3RlciB8fCAhbV9zdGF0ZS5lbGVtZW50KCkgfHwg
IW1fc3RhdGUuZWxlbWVudCgpLT5oYXNUYWdOYW1lKHJ0VGFnKSkKICAgICAgICAgcmV0dXJuOwot
ICAgIHN0eWxlLT5zZXRUZXh0QWxpZ24oQ0VOVEVSKTsKKyAgICBzdHlsZS0+c2V0VGV4dEFsaWdu
KFRleHRBbGlnbk1vZGU6OkNlbnRlcik7CiAgICAgaWYgKHN0eWxlLT5pc0hvcml6b250YWxXcml0
aW5nTW9kZSgpKQogICAgICAgICBzdHlsZS0+c2V0V3JpdGluZ01vZGUoTGVmdFRvUmlnaHRXcml0
aW5nTW9kZSk7CiB9CkBAIC03OTYsMjAgKzc5NiwyMCBAQCBzdGF0aWMgdm9pZCBhZGp1c3REaXNw
bGF5Q29udGVudHNTdHlsZShSCiB7CiAgICAgYm9vbCBkaXNwbGF5Q29udGVudHNFbmFibGVkID0g
aXM8SFRNTFNsb3RFbGVtZW50PihlbGVtZW50KSB8fCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRGZWF0dXJlcygpLmRpc3BsYXlDb250ZW50c0VuYWJsZWQoKTsKICAgICBpZiAoIWRpc3Bs
YXlDb250ZW50c0VuYWJsZWQpIHsKLSAgICAgICAgc3R5bGUuc2V0RGlzcGxheShJTkxJTkUpOwor
ICAgICAgICBzdHlsZS5zZXREaXNwbGF5KERpc3BsYXlUeXBlOjpJbmxpbmUpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIGlmICghZWxlbWVudCkgewotICAgICAgICBpZiAoc3R5bGUuc3R5
bGVUeXBlKCkgIT0gQkVGT1JFICYmIHN0eWxlLnN0eWxlVHlwZSgpICE9IEFGVEVSKQotICAgICAg
ICAgICAgc3R5bGUuc2V0RGlzcGxheShOT05FKTsKKyAgICAgICAgaWYgKHN0eWxlLnN0eWxlVHlw
ZSgpICE9IFBzZXVkb0lkOjpCZWZvcmUgJiYgc3R5bGUuc3R5bGVUeXBlKCkgIT0gUHNldWRvSWQ6
OkFmdGVyKQorICAgICAgICAgICAgc3R5bGUuc2V0RGlzcGxheShEaXNwbGF5VHlwZTo6Tm9uZSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGVsZW1lbnQtPmRvY3VtZW50KCkuZG9j
dW1lbnRFbGVtZW50KCkgPT0gZWxlbWVudCkgewotICAgICAgICBzdHlsZS5zZXREaXNwbGF5KEJM
T0NLKTsKKyAgICAgICAgc3R5bGUuc2V0RGlzcGxheShEaXNwbGF5VHlwZTo6QmxvY2spOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChoYXNFZmZlY3RpdmVEaXNwbGF5Tm9uZUZvckRp
c3BsYXlDb250ZW50cygqZWxlbWVudCkpCi0gICAgICAgIHN0eWxlLnNldERpc3BsYXkoTk9ORSk7
CisgICAgICAgIHN0eWxlLnNldERpc3BsYXkoRGlzcGxheVR5cGU6Ok5vbmUpOwogfQogCiB2b2lk
IFN0eWxlUmVzb2x2ZXI6OmFkanVzdFNWR0VsZW1lbnRTdHlsZShjb25zdCBTVkdFbGVtZW50JiBz
dmdFbGVtZW50LCBSZW5kZXJTdHlsZSYgc3R5bGUpCkBAIC04MjYsNyArODI2LDcgQEAgdm9pZCBT
dHlsZVJlc29sdmVyOjphZGp1c3RTVkdFbGVtZW50U3R5bAogCiAgICAgLy8gU1ZHIHRleHQgbGF5
b3V0IGNvZGUgZXhwZWN0cyB1cyB0byBiZSBhIGJsb2NrLWxldmVsIHN0eWxlIGVsZW1lbnQuCiAg
ICAgaWYgKChzdmdFbGVtZW50Lmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZvcmVpZ25PYmplY3RUYWcp
IHx8IHN2Z0VsZW1lbnQuaGFzVGFnTmFtZShTVkdOYW1lczo6dGV4dFRhZykpICYmIHN0eWxlLmlz
RGlzcGxheUlubGluZVR5cGUoKSkKLSAgICAgICAgc3R5bGUuc2V0RGlzcGxheShCTE9DSyk7Cisg
ICAgICAgIHN0eWxlLnNldERpc3BsYXkoRGlzcGxheVR5cGU6OkJsb2NrKTsKIH0KIAogdm9pZCBT
dHlsZVJlc29sdmVyOjphZGp1c3RSZW5kZXJTdHlsZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0
IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEJveFN0
eWxlLCBjb25zdCBFbGVtZW50KiBlbGVtZW50KQpAQCAtODM5LDEwICs4MzksMTAgQEAgdm9pZCBT
dHlsZVJlc29sdmVyOjphZGp1c3RSZW5kZXJTdHlsZShSZQogICAgIC8vIENhY2hlIG91ciBvcmln
aW5hbCBkaXNwbGF5LgogICAgIHN0eWxlLnNldE9yaWdpbmFsRGlzcGxheShzdHlsZS5kaXNwbGF5
KCkpOwogCi0gICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBDT05URU5UUykKKyAgICBpZiAoc3R5
bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpDb250ZW50cykKICAgICAgICAgYWRqdXN0RGlz
cGxheUNvbnRlbnRzU3R5bGUoc3R5bGUsIGVsZW1lbnQpOwogCi0gICAgaWYgKHN0eWxlLmRpc3Bs
YXkoKSAhPSBOT05FICYmIHN0eWxlLmRpc3BsYXkoKSAhPSBDT05URU5UUykgeworICAgIGlmIChz
dHlsZS5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6Ok5vbmUgJiYgc3R5bGUuZGlzcGxheSgpICE9
IERpc3BsYXlUeXBlOjpDb250ZW50cykgewogICAgICAgICBpZiAoZWxlbWVudCkgewogICAgICAg
ICAgICAgLy8gSWYgd2UgaGF2ZSBhIDx0ZD4gdGhhdCBzcGVjaWZpZXMgYSBmbG9hdCBwcm9wZXJ0
eSwgaW4gcXVpcmtzIG1vZGUgd2UganVzdCBkcm9wIHRoZSBmbG9hdAogICAgICAgICAgICAgLy8g
cHJvcGVydHkuCkBAIC04NTAsMzMgKzg1MCwzMyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkanVz
dFJlbmRlclN0eWxlKFJlCiAgICAgICAgICAgICAvLyB0aGVzZSB0YWdzIHRvIHJldGFpbiB0aGVp
ciBkaXNwbGF5IHR5cGVzLgogICAgICAgICAgICAgaWYgKGRvY3VtZW50KCkuaW5RdWlya3NNb2Rl
KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZSh0ZFRhZykpIHsK
LSAgICAgICAgICAgICAgICAgICAgc3R5bGUuc2V0RGlzcGxheShUQUJMRV9DRUxMKTsKKyAgICAg
ICAgICAgICAgICAgICAgc3R5bGUuc2V0RGlzcGxheShEaXNwbGF5VHlwZTo6VGFibGVDZWxsKTsK
ICAgICAgICAgICAgICAgICAgICAgc3R5bGUuc2V0RmxvYXRpbmcoRmxvYXQ6Ok5vKTsKICAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKGlzPEhUTUxUYWJsZUVsZW1lbnQ+KCplbGVtZW50KSkKLSAg
ICAgICAgICAgICAgICAgICAgc3R5bGUuc2V0RGlzcGxheShzdHlsZS5pc0Rpc3BsYXlJbmxpbmVU
eXBlKCkgPyBJTkxJTkVfVEFCTEUgOiBUQUJMRSk7CisgICAgICAgICAgICAgICAgICAgIHN0eWxl
LnNldERpc3BsYXkoc3R5bGUuaXNEaXNwbGF5SW5saW5lVHlwZSgpID8gRGlzcGxheVR5cGU6Oklu
bGluZVRhYmxlIDogRGlzcGxheVR5cGU6OlRhYmxlKTsKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUodGRUYWcpIHx8IGVsZW1lbnQtPmhhc1RhZ05h
bWUodGhUYWcpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHN0eWxlLndoaXRlU3BhY2UoKSA9PSBL
SFRNTF9OT1dSQVApIHsKKyAgICAgICAgICAgICAgICBpZiAoc3R5bGUud2hpdGVTcGFjZSgpID09
IFdoaXRlU3BhY2U6OktIVE1MTm9XcmFwKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIEZpZ3Vy
ZSBvdXQgaWYgd2UgYXJlIHJlYWxseSBub3dyYXBwaW5nIG9yIGlmIHdlIHNob3VsZCBqdXN0CiAg
ICAgICAgICAgICAgICAgICAgIC8vIHVzZSBub3JtYWwgaW5zdGVhZC4gSWYgdGhlIHdpZHRoIG9m
IHRoZSBjZWxsIGlzIGZpeGVkLCB0aGVuCi0gICAgICAgICAgICAgICAgICAgIC8vIHdlIGRvbid0
IGFjdHVhbGx5IHVzZSBOT1dSQVAuCisgICAgICAgICAgICAgICAgICAgIC8vIHdlIGRvbid0IGFj
dHVhbGx5IHVzZSBXaGl0ZVNwYWNlOjpOb1dyYXAuCiAgICAgICAgICAgICAgICAgICAgIGlmIChz
dHlsZS53aWR0aCgpLmlzRml4ZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLnNl
dFdoaXRlU3BhY2UoTk9STUFMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLnNldFdo
aXRlU3BhY2UoV2hpdGVTcGFjZTo6Tm9ybWFsKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUuc2V0V2hpdGVTcGFjZShOT1dSQVApOworICAg
ICAgICAgICAgICAgICAgICAgICAgc3R5bGUuc2V0V2hpdGVTcGFjZShXaGl0ZVNwYWNlOjpOb1dy
YXApOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8g
VGFibGVzIG5ldmVyIHN1cHBvcnQgdGhlIC13ZWJraXQtKiB2YWx1ZXMgZm9yIHRleHQtYWxpZ24g
YW5kIHdpbGwgcmVzZXQgYmFjayB0byB0aGUgZGVmYXVsdC4KLSAgICAgICAgICAgIGlmIChpczxI
VE1MVGFibGVFbGVtZW50PigqZWxlbWVudCkgJiYgKHN0eWxlLnRleHRBbGlnbigpID09IFdFQktJ
VF9MRUZUIHx8IHN0eWxlLnRleHRBbGlnbigpID09IFdFQktJVF9DRU5URVIgfHwgc3R5bGUudGV4
dEFsaWduKCkgPT0gV0VCS0lUX1JJR0hUKSkKLSAgICAgICAgICAgICAgICBzdHlsZS5zZXRUZXh0
QWxpZ24oVEFTVEFSVCk7CisgICAgICAgICAgICBpZiAoaXM8SFRNTFRhYmxlRWxlbWVudD4oKmVs
ZW1lbnQpICYmIChzdHlsZS50ZXh0QWxpZ24oKSA9PSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0
IHx8IHN0eWxlLnRleHRBbGlnbigpID09IFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlciB8fCBz
dHlsZS50ZXh0QWxpZ24oKSA9PSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRSaWdodCkpCisgICAgICAg
ICAgICAgICAgc3R5bGUuc2V0VGV4dEFsaWduKFRleHRBbGlnbk1vZGU6OlN0YXJ0KTsKIAogICAg
ICAgICAgICAgLy8gRnJhbWVzIGFuZCBmcmFtZXNldHMgbmV2ZXIgaG9ub3IgcG9zaXRpb246cmVs
YXRpdmUgb3IgcG9zaXRpb246YWJzb2x1dGUuIFRoaXMgaXMgbmVjZXNzYXJ5IHRvCiAgICAgICAg
ICAgICAvLyBmaXggYSBjcmFzaCB3aGVyZSBhIHNpdGUgdHJpZXMgdG8gcG9zaXRpb24gdGhlc2Ug
b2JqZWN0cy4gVGhleSBhbHNvIG5ldmVyIGhvbm9yIGRpc3BsYXkuCiAgICAgICAgICAgICBpZiAo
ZWxlbWVudC0+aGFzVGFnTmFtZShmcmFtZVRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShmcmFt
ZXNldFRhZykpIHsKICAgICAgICAgICAgICAgICBzdHlsZS5zZXRQb3NpdGlvbihQb3NpdGlvblR5
cGU6OlN0YXRpYyk7Ci0gICAgICAgICAgICAgICAgc3R5bGUuc2V0RGlzcGxheShCTE9DSyk7Cisg
ICAgICAgICAgICAgICAgc3R5bGUuc2V0RGlzcGxheShEaXNwbGF5VHlwZTo6QmxvY2spOwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBSdWJ5IHRleHQgZG9lcyBub3Qgc3VwcG9ydCBm
bG9hdCBvciBwb3NpdGlvbi4gVGhpcyBtaWdodCBjaGFuZ2Ugd2l0aCBldm9sdXRpb24gb2YgdGhl
IHNwZWNpZmljYXRpb24uCkBAIC04OTAsMTAgKzg5MCwxMCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6
OmFkanVzdFJlbmRlclN0eWxlKFJlCiAgICAgICAgICAgICAvLyBqdXN0IGEgc2luZ2xlIGRlY2xh
cmF0aW9uIHRoYXQgc2V0cyB0aGUgJ3RleHQtYWxpZ24nIHByb3BlcnR5IHRvIHRoZSB2YWx1ZSAn
Y2VudGVyJy4KICAgICAgICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVs
dGlwYWdlL3JlbmRlcmluZy5odG1sI3JlbmRlcmluZwogICAgICAgICAgICAgaWYgKGVsZW1lbnQt
Pmhhc1RhZ05hbWUodGhUYWcpICYmICFzdHlsZS5oYXNFeHBsaWNpdGx5U2V0VGV4dEFsaWduKCkg
JiYgcGFyZW50U3R5bGUudGV4dEFsaWduKCkgPT0gUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0QWxp
Z24oKSkKLSAgICAgICAgICAgICAgICBzdHlsZS5zZXRUZXh0QWxpZ24oQ0VOVEVSKTsKKyAgICAg
ICAgICAgICAgICBzdHlsZS5zZXRUZXh0QWxpZ24oVGV4dEFsaWduTW9kZTo6Q2VudGVyKTsKIAog
ICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUobGVnZW5kVGFnKSkKLSAgICAgICAg
ICAgICAgICBzdHlsZS5zZXREaXNwbGF5KEJMT0NLKTsKKyAgICAgICAgICAgICAgICBzdHlsZS5z
ZXREaXNwbGF5KERpc3BsYXlUeXBlOjpCbG9jayk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBB
YnNvbHV0ZS9maXhlZCBwb3NpdGlvbmVkIGVsZW1lbnRzLCBmbG9hdGluZyBlbGVtZW50cyBhbmQg
dGhlIGRvY3VtZW50IGVsZW1lbnQgbmVlZCBibG9jay1saWtlIG91dHNpZGUgZGlzcGxheS4KQEAg
LTkwMiwyOCArOTAyLDI4IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRqdXN0UmVuZGVyU3R5bGUo
UmUKIAogICAgICAgICAvLyBGSVhNRTogRG9uJ3Qgc3VwcG9ydCB0aGlzIG11dGF0aW9uIGZvciBw
c2V1ZG8gc3R5bGVzIGxpa2UgZmlyc3QtbGV0dGVyIG9yIGZpcnN0LWxpbmUsIHNpbmNlIGl0J3Mg
bm90IGNvbXBsZXRlbHkKICAgICAgICAgLy8gY2xlYXIgaG93IHRoYXQgc2hvdWxkIHdvcmsuCi0g
ICAgICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gSU5MSU5FICYmIHN0eWxlLnN0eWxlVHlwZSgp
ID09IE5PUFNFVURPICYmIHN0eWxlLndyaXRpbmdNb2RlKCkgIT0gcGFyZW50U3R5bGUud3JpdGlu
Z01vZGUoKSkKLSAgICAgICAgICAgIHN0eWxlLnNldERpc3BsYXkoSU5MSU5FX0JMT0NLKTsKKyAg
ICAgICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lICYmIHN0eWxl
LnN0eWxlVHlwZSgpID09IFBzZXVkb0lkOjpOb25lICYmIHN0eWxlLndyaXRpbmdNb2RlKCkgIT0g
cGFyZW50U3R5bGUud3JpdGluZ01vZGUoKSkKKyAgICAgICAgICAgIHN0eWxlLnNldERpc3BsYXko
RGlzcGxheVR5cGU6OklubGluZUJsb2NrKTsKIAogICAgICAgICAvLyBBZnRlciBwZXJmb3JtaW5n
IHRoZSBkaXNwbGF5IG11dGF0aW9uLCBjaGVjayB0YWJsZSByb3dzLiBXZSBkbyBub3QgaG9ub3Ig
cG9zaXRpb246cmVsYXRpdmUgb3IgcG9zaXRpb246c3RpY2t5IG9uCiAgICAgICAgIC8vIHRhYmxl
IHJvd3Mgb3IgY2VsbHMuIFRoaXMgaGFzIGJlZW4gZXN0YWJsaXNoZWQgZm9yIHBvc2l0aW9uOnJl
bGF0aXZlIGluIENTUzIuMSAoYW5kIGNhdXNlZCBhIGNyYXNoIGluIGNvbnRhaW5pbmdCbG9jaygp
CiAgICAgICAgIC8vIG9uIHNvbWUgc2l0ZXMpLgotICAgICAgICBpZiAoKHN0eWxlLmRpc3BsYXko
KSA9PSBUQUJMRV9IRUFERVJfR1JPVVAgfHwgc3R5bGUuZGlzcGxheSgpID09IFRBQkxFX1JPV19H
Uk9VUAotICAgICAgICAgICAgfHwgc3R5bGUuZGlzcGxheSgpID09IFRBQkxFX0ZPT1RFUl9HUk9V
UCB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gVEFCTEVfUk9XKQorICAgICAgICBpZiAoKHN0eWxlLmRp
c3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGVIZWFkZXJHcm91cCB8fCBzdHlsZS5kaXNwbGF5
KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxlUm93R3JvdXAKKyAgICAgICAgICAgIHx8IHN0eWxlLmRp
c3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGVGb290ZXJHcm91cCB8fCBzdHlsZS5kaXNwbGF5
KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxlUm93KQogICAgICAgICAgICAgJiYgc3R5bGUucG9zaXRp
b24oKSA9PSBQb3NpdGlvblR5cGU6OlJlbGF0aXZlKQogICAgICAgICAgICAgc3R5bGUuc2V0UG9z
aXRpb24oUG9zaXRpb25UeXBlOjpTdGF0aWMpOwogCiAgICAgICAgIC8vIHdyaXRpbmctbW9kZSBk
b2VzIG5vdCBhcHBseSB0byB0YWJsZSByb3cgZ3JvdXBzLCB0YWJsZSBjb2x1bW4gZ3JvdXBzLCB0
YWJsZSByb3dzLCBhbmQgdGFibGUgY29sdW1ucy4KICAgICAgICAgLy8gRklYTUU6IFRhYmxlIGNl
bGxzIHNob3VsZCBiZSBhbGxvd2VkIHRvIGJlIHBlcnBlbmRpY3VsYXIgb3IgZmxpcHBlZCB3aXRo
IHJlc3BlY3QgdG8gdGhlIHRhYmxlLCB0aG91Z2guCi0gICAgICAgIGlmIChzdHlsZS5kaXNwbGF5
KCkgPT0gVEFCTEVfQ09MVU1OIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBUQUJMRV9DT0xVTU5fR1JP
VVAgfHwgc3R5bGUuZGlzcGxheSgpID09IFRBQkxFX0ZPT1RFUl9HUk9VUAotICAgICAgICAgICAg
fHwgc3R5bGUuZGlzcGxheSgpID09IFRBQkxFX0hFQURFUl9HUk9VUCB8fCBzdHlsZS5kaXNwbGF5
KCkgPT0gVEFCTEVfUk9XIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBUQUJMRV9ST1dfR1JPVVAKLSAg
ICAgICAgICAgIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBUQUJMRV9DRUxMKQorICAgICAgICBpZiAo
c3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpUYWJsZUNvbHVtbiB8fCBzdHlsZS5kaXNw
bGF5KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxlQ29sdW1uR3JvdXAgfHwgc3R5bGUuZGlzcGxheSgp
ID09IERpc3BsYXlUeXBlOjpUYWJsZUZvb3Rlckdyb3VwCisgICAgICAgICAgICB8fCBzdHlsZS5k
aXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxlSGVhZGVyR3JvdXAgfHwgc3R5bGUuZGlzcGxh
eSgpID09IERpc3BsYXlUeXBlOjpUYWJsZVJvdyB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxh
eVR5cGU6OlRhYmxlUm93R3JvdXAKKyAgICAgICAgICAgIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBE
aXNwbGF5VHlwZTo6VGFibGVDZWxsKQogICAgICAgICAgICAgc3R5bGUuc2V0V3JpdGluZ01vZGUo
cGFyZW50U3R5bGUud3JpdGluZ01vZGUoKSk7CiAKICAgICAgICAgLy8gRklYTUU6IFNpbmNlIHdl
IGRvbid0IHN1cHBvcnQgYmxvY2stZmxvdyBvbiBmbGV4aWJsZSBib3hlcyB5ZXQsIGRpc2FsbG93
IHNldHRpbmcKICAgICAgICAgLy8gb2YgYmxvY2stZmxvdyB0byBhbnl0aGluZyBvdGhlciB0aGFu
IFRvcFRvQm90dG9tV3JpdGluZ01vZGUuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NjQxOCAtIEZsZXhpYmxlIGJveCBzdXBwb3J0LgotICAgICAg
ICBpZiAoc3R5bGUud3JpdGluZ01vZGUoKSAhPSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlICYmIChz
dHlsZS5kaXNwbGF5KCkgPT0gQk9YIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBJTkxJTkVfQk9YKSkK
KyAgICAgICAgaWYgKHN0eWxlLndyaXRpbmdNb2RlKCkgIT0gVG9wVG9Cb3R0b21Xcml0aW5nTW9k
ZSAmJiAoc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpCb3ggfHwgc3R5bGUuZGlzcGxh
eSgpID09IERpc3BsYXlUeXBlOjpJbmxpbmVCb3gpKQogICAgICAgICAgICAgc3R5bGUuc2V0V3Jp
dGluZ01vZGUoVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSk7CiAKICAgICAgICAgLy8gaHR0cHM6Ly93
d3cudzMub3JnL1RSL2Nzcy1kaXNwbGF5LyN0cmFuc2Zvcm1hdGlvbnMKQEAgLTk3OSw4ICs5Nzks
OCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0eWxlKFJlCiAgICAgICAgICAg
ICBib29sIGlzVmVydGljYWwgPSBzdHlsZS5tYXJxdWVlRGlyZWN0aW9uKCkgPT0gTWFycXVlZURp
cmVjdGlvbjo6VXAgfHwgc3R5bGUubWFycXVlZURpcmVjdGlvbigpID09IE1hcnF1ZWVEaXJlY3Rp
b246OkRvd247CiAgICAgICAgICAgICAvLyBNYWtlIGhvcml6b250YWwgbWFycXVlZXMgbm90IHdy
YXAuCiAgICAgICAgICAgICBpZiAoIWlzVmVydGljYWwpIHsKLSAgICAgICAgICAgICAgICBzdHls
ZS5zZXRXaGl0ZVNwYWNlKE5PV1JBUCk7Ci0gICAgICAgICAgICAgICAgc3R5bGUuc2V0VGV4dEFs
aWduKFRBU1RBUlQpOworICAgICAgICAgICAgICAgIHN0eWxlLnNldFdoaXRlU3BhY2UoV2hpdGVT
cGFjZTo6Tm9XcmFwKTsKKyAgICAgICAgICAgICAgICBzdHlsZS5zZXRUZXh0QWxpZ24oVGV4dEFs
aWduTW9kZTo6U3RhcnQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gQXBwYXJlbnRs
eSB0aGlzIGlzIHRoZSBleHBlY3RlZCBsZWdhY3kgYmVoYXZpb3IuCiAgICAgICAgICAgICBpZiAo
aXNWZXJ0aWNhbCAmJiBzdHlsZS5oZWlnaHQoKS5pc0F1dG8oKSkKQEAgLTEwMTAsOCArMTAxMCw4
IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRqdXN0UmVuZGVyU3R5bGUoUmUKIAogICAgIC8vIFRh
YmxlIHJvd3MsIHNlY3Rpb25zIGFuZCB0aGUgdGFibGUgaXRzZWxmIHdpbGwgc3VwcG9ydCBvdmVy
ZmxvdzpoaWRkZW4gYW5kIHdpbGwgaWdub3JlIHNjcm9sbC9hdXRvLgogICAgIC8vIEZJWE1FOiBF
dmVudHVhbGx5IHRhYmxlIHNlY3Rpb25zIHdpbGwgc3VwcG9ydCBhdXRvIGFuZCBzY3JvbGwuCi0g
ICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBUQUJMRSB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gSU5M
SU5FX1RBQkxFCi0gICAgICAgIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBUQUJMRV9ST1dfR1JPVVAg
fHwgc3R5bGUuZGlzcGxheSgpID09IFRBQkxFX1JPVykgeworICAgIGlmIChzdHlsZS5kaXNwbGF5
KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxlIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlw
ZTo6SW5saW5lVGFibGUKKyAgICAgICAgfHwgc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBl
OjpUYWJsZVJvd0dyb3VwIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGVS
b3cpIHsKICAgICAgICAgaWYgKHN0eWxlLm92ZXJmbG93WCgpICE9IE92ZXJmbG93OjpWaXNpYmxl
ICYmIHN0eWxlLm92ZXJmbG93WCgpICE9IE92ZXJmbG93OjpIaWRkZW4pCiAgICAgICAgICAgICBz
dHlsZS5zZXRPdmVyZmxvd1goT3ZlcmZsb3c6OlZpc2libGUpOwogICAgICAgICBpZiAoc3R5bGUu
b3ZlcmZsb3dZKCkgIT0gT3ZlcmZsb3c6OlZpc2libGUgJiYgc3R5bGUub3ZlcmZsb3dZKCkgIT0g
T3ZlcmZsb3c6OkhpZGRlbikKQEAgLTEwNTIsNyArMTA1Miw3IEBAIHZvaWQgU3R5bGVSZXNvbHZl
cjo6YWRqdXN0UmVuZGVyU3R5bGUoUmUKICAgICAgICAgUmVuZGVyVGhlbWU6OnNpbmdsZXRvbigp
LmFkanVzdFN0eWxlKCp0aGlzLCBzdHlsZSwgZWxlbWVudCwgbV9zdGF0ZS5oYXNVQUFwcGVhcmFu
Y2UoKSwgbV9zdGF0ZS5ib3JkZXJEYXRhKCksIG1fc3RhdGUuYmFja2dyb3VuZERhdGEoKSwgbV9z
dGF0ZS5iYWNrZ3JvdW5kQ29sb3IoKSk7CiAKICAgICAvLyBJZiB3ZSBoYXZlIGZpcnN0LWxldHRl
ciBwc2V1ZG8gc3R5bGUsIGRvIG5vdCBzaGFyZSB0aGlzIHN0eWxlLgotICAgIGlmIChzdHlsZS5o
YXNQc2V1ZG9TdHlsZShGSVJTVF9MRVRURVIpKQorICAgIGlmIChzdHlsZS5oYXNQc2V1ZG9TdHls
ZShQc2V1ZG9JZDo6Rmlyc3RMZXR0ZXIpKQogICAgICAgICBzdHlsZS5zZXRVbmlxdWUoKTsKIAog
ICAgIC8vIEZJWE1FOiB3aGVuIGRyb3BwaW5nIHRoZSAtd2Via2l0IHByZWZpeCBvbiB0cmFuc2Zv
cm0tc3R5bGUsIHdlIHNob3VsZCBhbHNvIGhhdmUgb3BhY2l0eSA8IDEgY2F1c2UgZmxhdHRlbmlu
Zy4KQEAgLTExMTIsNyArMTExMiw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6dXBkYXRlRm9udCgp
CiAKIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4gU3R5bGVSZXNvbHZlcjo6c3R5bGVSdWxlc0Zv
ckVsZW1lbnQoY29uc3QgRWxlbWVudCogZWxlbWVudCwgdW5zaWduZWQgcnVsZXNUb0luY2x1ZGUp
CiB7Ci0gICAgcmV0dXJuIHBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQsIE5PUFNF
VURPLCBydWxlc1RvSW5jbHVkZSk7CisgICAgcmV0dXJuIHBzZXVkb1N0eWxlUnVsZXNGb3JFbGVt
ZW50KGVsZW1lbnQsIFBzZXVkb0lkOjpOb25lLCBydWxlc1RvSW5jbHVkZSk7CiB9CiAKIFZlY3Rv
cjxSZWZQdHI8U3R5bGVSdWxlPj4gU3R5bGVSZXNvbHZlcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVs
ZW1lbnQoY29uc3QgRWxlbWVudCogZWxlbWVudCwgUHNldWRvSWQgcHNldWRvSWQsIHVuc2lnbmVk
IHJ1bGVzVG9JbmNsdWRlKQpAQCAtMTI3OSw3ICsxMjc5LDcgQEAgc3RhdGljIGJvb2wgaXNDYWNo
ZWFibGVJbk1hdGNoZWRQcm9wZXJ0aQogICAgIGlmICgmZWxlbWVudCA9PSBlbGVtZW50LmRvY3Vt
ZW50KCkuZG9jdW1lbnRFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBj
b250ZW50OmF0dHIoKSB2YWx1ZSBkZXBlbmRzIG9uIHRoZSBlbGVtZW50IGl0IGlzIGJlaW5nIGFw
cGxpZWQgdG8uCi0gICAgaWYgKHN0eWxlLT5oYXNBdHRyQ29udGVudCgpIHx8IChzdHlsZS0+c3R5
bGVUeXBlKCkgIT0gTk9QU0VVRE8gJiYgcGFyZW50U3R5bGUtPmhhc0F0dHJDb250ZW50KCkpKQor
ICAgIGlmIChzdHlsZS0+aGFzQXR0ckNvbnRlbnQoKSB8fCAoc3R5bGUtPnN0eWxlVHlwZSgpICE9
IFBzZXVkb0lkOjpOb25lICYmIHBhcmVudFN0eWxlLT5oYXNBdHRyQ29udGVudCgpKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChzdHlsZS0+aGFzQXBwZWFyYW5jZSgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0xMzM5LDcgKzEzMzksNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6
OmFwcGx5TWF0Y2hlZFByb3BlcnRpCiAgICAgICAgIC8vIGVsZW1lbnQgY29udGV4dC4gVGhpcyBp
cyBmYXN0IGFuZCBzYXZlcyBtZW1vcnkgYnkgcmV1c2luZyB0aGUgc3R5bGUgZGF0YSBzdHJ1Y3R1
cmVzLgogICAgICAgICBzdGF0ZS5zdHlsZSgpLT5jb3B5Tm9uSW5oZXJpdGVkRnJvbSgqY2FjaGVJ
dGVtLT5yZW5kZXJTdHlsZSk7CiAgICAgICAgIGlmIChzdGF0ZS5wYXJlbnRTdHlsZSgpLT5pbmhl
cml0ZWREYXRhU2hhcmVkKGNhY2hlSXRlbS0+cGFyZW50UmVuZGVyU3R5bGUuZ2V0KCkpICYmICFp
c0F0U2hhZG93Qm91bmRhcnkoZWxlbWVudCkpIHsKLSAgICAgICAgICAgIEVJbnNpZGVMaW5rIGxp
bmtTdGF0dXMgPSBzdGF0ZS5zdHlsZSgpLT5pbnNpZGVMaW5rKCk7CisgICAgICAgICAgICBJbnNp
ZGVMaW5rIGxpbmtTdGF0dXMgPSBzdGF0ZS5zdHlsZSgpLT5pbnNpZGVMaW5rKCk7CiAgICAgICAg
ICAgICAvLyBJZiB0aGUgY2FjaGUgaXRlbSBwYXJlbnQgc3R5bGUgaGFzIGlkZW50aWNhbCBpbmhl
cml0ZWQgcHJvcGVydGllcyB0byB0aGUgY3VycmVudCBwYXJlbnQgc3R5bGUgdGhlbiB0aGUKICAg
ICAgICAgICAgIC8vIHJlc3VsdGluZyBzdHlsZSB3aWxsIGJlIGlkZW50aWNhbCB0b28uIFdlIGNv
cHkgdGhlIGluaGVyaXRlZCBwcm9wZXJ0aWVzIG92ZXIgZnJvbSB0aGUgY2FjaGUgYW5kIGFyZSBk
b25lLgogICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+aW5oZXJpdEZyb20oKmNhY2hlSXRlbS0+
cmVuZGVyU3R5bGUpOwpAQCAtMjIzNyw3ICsyMjM3LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpD
YXNjYWRlZFByb3BlcnRpZXM6OgogICAgICAgICByZXNvbHZlci5hcHBseVByb3BlcnR5KGlkLCBj
c3NWYWx1ZVtTZWxlY3RvckNoZWNrZXI6Ok1hdGNoRGVmYXVsdF0sIFNlbGVjdG9yQ2hlY2tlcjo6
TWF0Y2hEZWZhdWx0LCBtYXRjaFJlc3VsdCk7CiAgICAgfQogCi0gICAgaWYgKHN0YXRlLnN0eWxl
KCktPmluc2lkZUxpbmsoKSA9PSBOb3RJbnNpZGVMaW5rKQorICAgIGlmIChzdGF0ZS5zdHlsZSgp
LT5pbnNpZGVMaW5rKCkgPT0gSW5zaWRlTGluazo6Tm90SW5zaWRlKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoY3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaExpbmtdKSB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1Nyw3ICsz
NTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50U3R5bGU7IH0KICAgICAgICAgY29uc3QgUmVuZGVyU3R5
bGUqIHJvb3RFbGVtZW50U3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RFbGVtZW50U3R5bGU7
IH0KIAotICAgICAgICBFSW5zaWRlTGluayBlbGVtZW50TGlua1N0YXRlKCkgY29uc3QgeyByZXR1
cm4gbV9lbGVtZW50TGlua1N0YXRlOyB9CisgICAgICAgIEluc2lkZUxpbmsgZWxlbWVudExpbmtT
dGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudExpbmtTdGF0ZTsgfQogCiAgICAgICAgIHZv
aWQgc2V0QXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKGJvb2wgaXNBcHBseSkgeyBtX2FwcGx5
UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSA9IGlzQXBwbHk7IH0KICAgICAgICAgdm9pZCBzZXRBcHBs
eVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKGJvb2wgaXNBcHBseSkgeyBtX2FwcGx5UHJvcGVy
dHlUb1Zpc2l0ZWRMaW5rU3R5bGUgPSBpc0FwcGx5OyB9CkBAIC00MDksNyArNDA5LDcgQEAgcHVi
bGljOgogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IG1fb3duZWRQYXJlbnRT
dHlsZTsKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUqIG1fcm9vdEVsZW1lbnRTdHlsZSB7IG51
bGxwdHIgfTsKIAotICAgICAgICBFSW5zaWRlTGluayBtX2VsZW1lbnRMaW5rU3RhdGUgeyBOb3RJ
bnNpZGVMaW5rIH07CisgICAgICAgIEluc2lkZUxpbmsgbV9lbGVtZW50TGlua1N0YXRlIHsgSW5z
aWRlTGluazo6Tm90SW5zaWRlIH07CiAKICAgICAgICAgYm9vbCBtX2FwcGx5UHJvcGVydHlUb1Jl
Z3VsYXJTdHlsZSB7IHRydWUgfTsKICAgICAgICAgYm9vbCBtX2FwcGx5UHJvcGVydHlUb1Zpc2l0
ZWRMaW5rU3R5bGUgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVj
dG9yQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxl
Y3RvckNvbXBpbGVyLmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvY3Nz
aml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NjAsNyArOTYwLDcg
QEAgc3RhdGljIEZ1bmN0aW9uVHlwZSBjb25zdHJ1Y3RGcmFnbWVudHNJbgogICAgICAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudFVua25vd246CiAgICAgICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uVHlw
ZTo6Q2Fubm90TWF0Y2hBbnl0aGluZzsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IFJF
U0laRVIsIFNFTEVDVElPTiBldGMuCisgICAgICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBQc2V1
ZG9JZDo6UmVzaXplciwgUHNldWRvSWQ6OlNlbGVjdGlvbiBldGMuCiAgICAgICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgICAgIC8vIFRoaXMgYnJhbmNoIGluY2x1ZGVzIGN1c3RvbSBwc2V1
ZG8gZWxlbWVudHMuCiAgICAgICAgICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uVHlwZTo6Q2Fubm90
Q29tcGlsZTsKQEAgLTM3NjIsMTQgKzM3NjIsMTQgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0
b3I6OmdlbmVyYXRlUmVxdQogICAgIEFTU0VSVChtX3NlbGVjdG9yQ29udGV4dCAhPSBTZWxlY3Rv
ckNvbnRleHQ6OlF1ZXJ5U2VsZWN0b3IpOwogCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIHJl
cXVlc3RlZCBwc2V1ZG9JZCBlcXVhbHMgdG8gdGhlIHBzZXVkbyBlbGVtZW50IG9mIHRoZSByaWdo
dG1vc3QgZnJhZ21lbnQuCi0gICAgLy8gSWYgdGhlIHJpZ2h0bW9zdCBmcmFnbWVudCBkb2Vzbid0
IGhhdmUgYSBwc2V1ZG8gZWxlbWVudCwgdGhlIHJlcXVlc3RlZCBwc2V1ZG9JZCBuZWVkIHRvIGJl
IE5PUFNFVURPIHRvIHN1Y2NlZWQgdGhlIG1hdGNoaW5nLgotICAgIC8vIE90aGVyd2lzZSwgaWYg
dGhlIHJlcXVlc3RlZCBwc2V1ZG9JZCBpcyBub3QgTk9QU0VVRE8sIHRoZSByZXF1ZXN0ZWQgcHNl
dWRvSWQgbmVlZCB0byBlcXVhbCB0byB0aGUgcHNldWRvIGVsZW1lbnQgb2YgdGhlIHJpZ2h0bW9z
dCBmcmFnbWVudC4KKyAgICAvLyBJZiB0aGUgcmlnaHRtb3N0IGZyYWdtZW50IGRvZXNuJ3QgaGF2
ZSBhIHBzZXVkbyBlbGVtZW50LCB0aGUgcmVxdWVzdGVkIHBzZXVkb0lkIG5lZWQgdG8gYmUgUHNl
dWRvSWQ6Ok5vbmUgdG8gc3VjY2VlZCB0aGUgbWF0Y2hpbmcuCisgICAgLy8gT3RoZXJ3aXNlLCBp
ZiB0aGUgcmVxdWVzdGVkIHBzZXVkb0lkIGlzIG5vdCBQc2V1ZG9JZDo6Tm9uZSwgdGhlIHJlcXVl
c3RlZCBwc2V1ZG9JZCBuZWVkIHRvIGVxdWFsIHRvIHRoZSBwc2V1ZG8gZWxlbWVudCBvZiB0aGUg
cmlnaHRtb3N0IGZyYWdtZW50LgogICAgIGlmIChmcmFnbWVudE1hdGNoZXNUaGVSaWdodG1vc3RF
bGVtZW50KGZyYWdtZW50KSkgewogICAgICAgICBpZiAoIWZyYWdtZW50LnBzZXVkb0VsZW1lbnRT
ZWxlY3RvcikKLSAgICAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQobV9hc3NlbWJsZXIuYnJh
bmNoOChBc3NlbWJsZXI6Ok5vdEVxdWFsLCBBc3NlbWJsZXI6OkFkZHJlc3MoY2hlY2tpbmdDb250
ZXh0LCBPQkpFQ1RfT0ZGU0VUT0YoU2VsZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRleHQsIHBz
ZXVkb0lkKSksIEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE5PUFNFVURPKSkpOworICAgICAgICAg
ICAgZmFpbHVyZUNhc2VzLmFwcGVuZChtX2Fzc2VtYmxlci5icmFuY2g4KEFzc2VtYmxlcjo6Tm90
RXF1YWwsIEFzc2VtYmxlcjo6QWRkcmVzcyhjaGVja2luZ0NvbnRleHQsIE9CSkVDVF9PRkZTRVRP
RihTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5nQ29udGV4dCwgcHNldWRvSWQpKSwgQXNzZW1ibGVy
OjpUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBzZXVkb0lkOjpOb25lKSkpKTsK
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBBc3NlbWJsZXI6Okp1bXAgc2tpcCA9IG1fYXNz
ZW1ibGVyLmJyYW5jaDgoQXNzZW1ibGVyOjpFcXVhbCwgQXNzZW1ibGVyOjpBZGRyZXNzKGNoZWNr
aW5nQ29udGV4dCwgT0JKRUNUX09GRlNFVE9GKFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250
ZXh0LCBwc2V1ZG9JZCkpLCBBc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihOT1BTRVVETykpOwotICAg
ICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChtX2Fzc2VtYmxlci5icmFuY2g4KEFzc2VtYmxl
cjo6Tm90RXF1YWwsIEFzc2VtYmxlcjo6QWRkcmVzcyhjaGVja2luZ0NvbnRleHQsIE9CSkVDVF9P
RkZTRVRPRihTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5nQ29udGV4dCwgcHNldWRvSWQpKSwgQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tMzIoQ1NTU2VsZWN0b3I6OnBzZXVkb0lkKGZyYWdtZW50LnBzZXVk
b0VsZW1lbnRTZWxlY3Rvci0+cHNldWRvRWxlbWVudFR5cGUoKSkpKSk7CisgICAgICAgICAgICBB
c3NlbWJsZXI6Okp1bXAgc2tpcCA9IG1fYXNzZW1ibGVyLmJyYW5jaDgoQXNzZW1ibGVyOjpFcXVh
bCwgQXNzZW1ibGVyOjpBZGRyZXNzKGNoZWNraW5nQ29udGV4dCwgT0JKRUNUX09GRlNFVE9GKFNl
bGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0LCBwc2V1ZG9JZCkpLCBBc3NlbWJsZXI6OlRy
dXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHNldWRvSWQ6Ok5vbmUpKSk7CisgICAg
ICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKG1fYXNzZW1ibGVyLmJyYW5jaDgoQXNzZW1ibGVy
OjpOb3RFcXVhbCwgQXNzZW1ibGVyOjpBZGRyZXNzKGNoZWNraW5nQ29udGV4dCwgT0JKRUNUX09G
RlNFVE9GKFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0LCBwc2V1ZG9JZCkpLCBBc3Nl
bWJsZXI6OlRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTU2VsZWN0b3I6OnBz
ZXVkb0lkKGZyYWdtZW50LnBzZXVkb0VsZW1lbnRTZWxlY3Rvci0+cHNldWRvRWxlbWVudFR5cGUo
KSkpKSkpOwogICAgICAgICAgICAgc2tpcC5saW5rKCZtX2Fzc2VtYmxlcik7CiAgICAgICAgIH0K
ICAgICB9CkBAIC0zODUyLDE1ICszODUyLDE1IEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9y
OjpnZW5lcmF0ZU1hcmsKIAogICAgIEFzc2VtYmxlcjo6SnVtcExpc3Qgc3VjY2Vzc0Nhc2VzOwog
Ci0gICAgLy8gV2hlbiB0aGUgcmVxdWVzdGVkIHBzZXVkb0lkIGlzbid0IE5PUFNFVURPLCB0aGVy
ZSdzIG5vIG5lZWQgdG8gbWFyayB0aGUgcHNldWRvIGVsZW1lbnQgc3R5bGUuCi0gICAgc3VjY2Vz
c0Nhc2VzLmFwcGVuZChtX2Fzc2VtYmxlci5icmFuY2g4KEFzc2VtYmxlcjo6Tm90RXF1YWwsIEFz
c2VtYmxlcjo6QWRkcmVzcyhjaGVja2luZ0NvbnRleHQsIE9CSkVDVF9PRkZTRVRPRihTZWxlY3Rv
ckNoZWNrZXI6OkNoZWNraW5nQ29udGV4dCwgcHNldWRvSWQpKSwgQXNzZW1ibGVyOjpUcnVzdGVk
SW1tMzIoTk9QU0VVRE8pKSk7CisgICAgLy8gV2hlbiB0aGUgcmVxdWVzdGVkIHBzZXVkb0lkIGlz
bid0IFBzZXVkb0lkOjpOb25lLCB0aGVyZSdzIG5vIG5lZWQgdG8gbWFyayB0aGUgcHNldWRvIGVs
ZW1lbnQgc3R5bGUuCisgICAgc3VjY2Vzc0Nhc2VzLmFwcGVuZChtX2Fzc2VtYmxlci5icmFuY2g4
KEFzc2VtYmxlcjo6Tm90RXF1YWwsIEFzc2VtYmxlcjo6QWRkcmVzcyhjaGVja2luZ0NvbnRleHQs
IE9CSkVDVF9PRkZTRVRPRihTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5nQ29udGV4dCwgcHNldWRv
SWQpKSwgQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBzZXVk
b0lkOjpOb25lKSkpKTsKIAogICAgIC8vIFdoZW4gcmVzb2x2aW5nIG1vZGUgaXMgQ29sbGVjdGlu
Z1J1bGVzSWdub3JpbmdWaXJ0dWFsUHNldWRvRWxlbWVudHMsIHRoZXJlJ3Mgbm8gbmVlZCB0byBt
YXJrIHRoZSBwc2V1ZG8gZWxlbWVudCBzdHlsZS4KICAgICBzdWNjZXNzQ2FzZXMuYXBwZW5kKGJy
YW5jaE9uUmVzb2x2aW5nTW9kZVdpdGhDaGVja2luZ0NvbnRleHQoQXNzZW1ibGVyOjpFcXVhbCwg
U2VsZWN0b3JDaGVja2VyOjpNb2RlOjpDb2xsZWN0aW5nUnVsZXNJZ25vcmluZ1ZpcnR1YWxQc2V1
ZG9FbGVtZW50cywgY2hlY2tpbmdDb250ZXh0KSk7CiAKICAgICAvLyBXaGVuIHJlc29sdmluZyBt
b2RlIGlzIFJlc29sdmluZ1N0eWxlLCBtYXJrIHRoZSBwc2V1ZG8gc3R5bGUgZm9yIHBzZXVkbyBl
bGVtZW50LgogICAgIFBzZXVkb0lkIGR5bmFtaWNQc2V1ZG8gPSBDU1NTZWxlY3Rvcjo6cHNldWRv
SWQoZnJhZ21lbnQucHNldWRvRWxlbWVudFNlbGVjdG9yLT5wc2V1ZG9FbGVtZW50VHlwZSgpKTsK
LSAgICBpZiAoZHluYW1pY1BzZXVkbyA8IEZJUlNUX0lOVEVSTkFMX1BTRVVET0lEKSB7CisgICAg
aWYgKGR5bmFtaWNQc2V1ZG8gPCBQc2V1ZG9JZDo6Rmlyc3RJbnRlcm5hbFBzZXVkb0lkKSB7CiAg
ICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoYnJhbmNoT25SZXNvbHZpbmdNb2RlV2l0aENoZWNr
aW5nQ29udGV4dChBc3NlbWJsZXI6Ok5vdEVxdWFsLCBTZWxlY3RvckNoZWNrZXI6Ok1vZGU6OlJl
c29sdmluZ1N0eWxlLCBjaGVja2luZ0NvbnRleHQpKTsKIAogICAgICAgICBBc3NlbWJsZXI6OkFk
ZHJlc3MgcHNldWRvSURTZXRBZGRyZXNzKGNoZWNraW5nQ29udGV4dCwgT0JKRUNUX09GRlNFVE9G
KFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0LCBwc2V1ZG9JRFNldCkpOwpAQCAtMzg3
MCw3ICszODcwLDcgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlTWFyawog
ICAgIH0KIAogICAgIC8vIFdlIGhhdmUgYSBwc2V1ZG9FbGVtZW50U2VsZWN0b3IsIHdlIGFyZSBu
b3QgaW4gQ29sbGVjdGluZ1J1bGVzSWdub3JpbmdWaXJ0dWFsUHNldWRvRWxlbWVudHMgc28KLSAg
ICAvLyB3ZSBtdXN0IG1hdGNoIHRoYXQgcHNldWRvIGVsZW1lbnQuIFNpbmNlIHRoZSBjb250ZXh0
J3MgcHNldWRvIHNlbGVjdG9yIGlzIE5PUFNFVURPLCB3ZSBmYWlsIG1hdGNoaW5nCisgICAgLy8g
d2UgbXVzdCBtYXRjaCB0aGF0IHBzZXVkbyBlbGVtZW50LiBTaW5jZSB0aGUgY29udGV4dCdzIHBz
ZXVkbyBzZWxlY3RvciBpcyBQc2V1ZG9JZDo6Tm9uZSwgd2UgZmFpbCBtYXRjaGluZwogICAgIC8v
IGFmdGVyIHRoZSBtYXJraW5nLgogICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQobV9hc3NlbWJsZXIu
anVtcCgpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyMzIxMDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MDA2LDggKzIwMDYsOCBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5n
CiBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IERvY3VtZW50OjpzdHlsZUZvckVsZW1lbnRJ
Z25vcmluZ1BlbmRpbmdTdHlsZXNoZWV0cyhFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJT
dHlsZSogcGFyZW50U3R5bGUsIFBzZXVkb0lkIHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpCiB7CiAg
ICAgQVNTRVJUKCZlbGVtZW50LmRvY3VtZW50KCkgPT0gdGhpcyk7Ci0gICAgQVNTRVJUKCFlbGVt
ZW50LmlzUHNldWRvRWxlbWVudCgpIHx8ICFwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKTsKLSAgICBB
U1NFUlQoIXBzZXVkb0VsZW1lbnRTcGVjaWZpZXIgfHwgcGFyZW50U3R5bGUpOworICAgIEFTU0VS
VCghZWxlbWVudC5pc1BzZXVkb0VsZW1lbnQoKSB8fCBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyID09
IFBzZXVkb0lkOjpOb25lKTsKKyAgICBBU1NFUlQocHNldWRvRWxlbWVudFNwZWNpZmllciA9PSBQ
c2V1ZG9JZDo6Tm9uZSB8fCBwYXJlbnRTdHlsZSk7CiAKICAgICAvLyBPbiBpT1MgcmVxdWVzdCBk
ZWxlZ2F0ZXMgY2FsbGVkIGR1cmluZyBzdHlsZUZvckVsZW1lbnQgbWF5IHJlc3VsdCBpbiByZS1l
bnRlcmluZyBXZWJLaXQgYW5kIGtpbGxpbmcgdGhlIHN0eWxlIHJlc29sdmVyLgogICAgIFN0eWxl
OjpQb3N0UmVzb2x1dGlvbkNhbGxiYWNrRGlzYWJsZXIgZGlzYWJsZXIoKnRoaXMpOwpAQCAtMjAx
NSw3ICsyMDE1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBEb2N1bWVudDo6cwog
ICAgIFNldEZvclNjb3BlPGJvb2w+IGNoYW5nZShtX2lnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cywg
dHJ1ZSk7CiAgICAgYXV0byYgcmVzb2x2ZXIgPSBlbGVtZW50LnN0eWxlUmVzb2x2ZXIoKTsKIAot
ICAgIGlmIChwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKQorICAgIGlmIChwc2V1ZG9FbGVtZW50U3Bl
Y2lmaWVyICE9IFBzZXVkb0lkOjpOb25lKQogICAgICAgICByZXR1cm4gcmVzb2x2ZXIucHNldWRv
U3R5bGVGb3JFbGVtZW50KGVsZW1lbnQsIFBzZXVkb1N0eWxlUmVxdWVzdChwc2V1ZG9FbGVtZW50
U3BlY2lmaWVyKSwgKnBhcmVudFN0eWxlKTsKIAogICAgIGF1dG8gZWxlbWVudFN0eWxlID0gcmVz
b2x2ZXIuc3R5bGVGb3JFbGVtZW50KGVsZW1lbnQsIHBhcmVudFN0eWxlKTsKQEAgLTIxMzMsNyAr
MjEzMyw3IEBAIGJvb2wgRG9jdW1lbnQ6OmlzUGFnZUJveFZpc2libGUoaW50IHBhZ2UKIHsKICAg
ICB1cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiBwYWdlU3R5bGUoc3R5bGVTY29wZSgpLnJlc29sdmVyKCkuc3R5bGVGb3JQYWdlKHBhZ2VJbmRl
eCkpOwotICAgIHJldHVybiBwYWdlU3R5bGUtPnZpc2liaWxpdHkoKSAhPSBISURERU47IC8vIGRp
c3BsYXkgcHJvcGVydHkgZG9lc24ndCBhcHBseSB0byBAcGFnZS4KKyAgICByZXR1cm4gcGFnZVN0
eWxlLT52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6SGlkZGVuOyAvLyBkaXNwbGF5IHByb3Bl
cnR5IGRvZXNuJ3QgYXBwbHkgdG8gQHBhZ2UuCiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnBhZ2VTaXpl
QW5kTWFyZ2luc0luUGl4ZWxzKGludCBwYWdlSW5kZXgsIEludFNpemUmIHBhZ2VTaXplLCBpbnQm
IG1hcmdpblRvcCwgaW50JiBtYXJnaW5SaWdodCwgaW50JiBtYXJnaW5Cb3R0b20sIGludCYgbWFy
Z2luTGVmdCkKQEAgLTI1NjYsNyArMjU2Niw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFZpc3VhbGx5
T3JkZXJlZCgpCiB7CiAgICAgbV92aXN1YWxseU9yZGVyZWQgPSB0cnVlOwogICAgIGlmIChyZW5k
ZXJWaWV3KCkpCi0gICAgICAgIHJlbmRlclZpZXcoKS0+bXV0YWJsZVN0eWxlKCkuc2V0UlRMT3Jk
ZXJpbmcoVmlzdWFsT3JkZXIpOworICAgICAgICByZW5kZXJWaWV3KCktPm11dGFibGVTdHlsZSgp
LnNldFJUTE9yZGVyaW5nKE9yZGVyOjpWaXN1YWwpOwogfQogCiBSZWY8RG9jdW1lbnRQYXJzZXI+
IERvY3VtZW50OjpjcmVhdGVQYXJzZXIoKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlz
aW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NzksNyArNTc5LDcgQEAgcHVibGljOgogICAgIH07CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB1cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoUnVuUG9zdExheW91
dFRhc2tzID0gUnVuUG9zdExheW91dFRhc2tzOjpBc3luY2hyb25vdXNseSk7CiAKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9yRWxlbWVudElnbm9yaW5nUGVuZGluZ1N0
eWxlc2hlZXRzKEVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIFBzZXVk
b0lkID0gTk9QU0VVRE8pOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGVG
b3JFbGVtZW50SWdub3JpbmdQZW5kaW5nU3R5bGVzaGVldHMoRWxlbWVudCYsIGNvbnN0IFJlbmRl
clN0eWxlKiBwYXJlbnRTdHlsZSwgUHNldWRvSWQgPSBQc2V1ZG9JZDo6Tm9uZSk7CiAKICAgICAv
LyBSZXR1cm5zIHRydWUgaWYgcGFnZSBib3ggKG1hcmdpbiBib3hlcyBhbmQgcGFnZSBib3JkZXJz
KSBpcyB2aXNpYmxlLgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNQYWdlQm94VmlzaWJsZShp
bnQgcGFnZUluZGV4KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzMjEw
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTIyLDEyICs1MjIsMTIgQEAgYm9vbCBFbGVtZW50Ojppc0ZvY3VzYWJsZSgpIGNvbnN0CiAgICAg
ICAgIC8vIEVsZW1lbnRzIGluIGNhbnZhcyBmYWxsYmFjayBjb250ZW50IGFyZSBub3QgcmVuZGVy
ZWQsIGJ1dCB0aGV5IGFyZSBhbGxvd2VkIHRvIGJlCiAgICAgICAgIC8vIGZvY3VzYWJsZSBhcyBs
b25nIGFzIHRoZWlyIGNhbnZhcyBpcyBkaXNwbGF5ZWQgYW5kIHZpc2libGUuCiAgICAgICAgIGlm
IChhdXRvKiBjYW52YXMgPSBhbmNlc3RvcnNPZlR5cGU8SFRNTENhbnZhc0VsZW1lbnQ+KCp0aGlz
KS5maXJzdCgpKQotICAgICAgICAgICAgcmV0dXJuIGNhbnZhcy0+cmVuZGVyZXIoKSAmJiBjYW52
YXMtPnJlbmRlcmVyKCktPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEU7CisgICAgICAg
ICAgICByZXR1cm4gY2FudmFzLT5yZW5kZXJlcigpICYmIGNhbnZhcy0+cmVuZGVyZXIoKS0+c3R5
bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZTsKICAgICB9CiAKICAgICAv
LyBGSVhNRTogRXZlbiBpZiB3ZSBhcmUgbm90IHZpc2libGUsIHdlIG1pZ2h0IGhhdmUgYSBjaGls
ZCB0aGF0IGlzIHZpc2libGUuCiAgICAgLy8gSHlhdHQgd2FudHMgdG8gZml4IHRoYXQgc29tZSBk
YXkgd2l0aCBhICJoYXMgdmlzaWJsZSBjb250ZW50IiBmbGFnIG9yIHRoZSBsaWtlLgotICAgIGlm
ICghcmVuZGVyZXIoKSB8fCByZW5kZXJlcigpLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJ
QkxFKQorICAgIGlmICghcmVuZGVyZXIoKSB8fCByZW5kZXJlcigpLT5zdHlsZSgpLnZpc2liaWxp
dHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTE1NDgsMTIgKzE1NDgsMTIgQEAgYm9vbCBFbGVtZW50OjpoYXNE
aXNwbGF5Q29udGVudHMoKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjb25z
dCBSZW5kZXJTdHlsZSogc3R5bGUgPSBlbGVtZW50UmFyZURhdGEoKS0+Y29tcHV0ZWRTdHlsZSgp
OwotICAgIHJldHVybiBzdHlsZSAmJiBzdHlsZS0+ZGlzcGxheSgpID09IENPTlRFTlRTOworICAg
IHJldHVybiBzdHlsZSAmJiBzdHlsZS0+ZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpDb250ZW50
czsKIH0KIAogdm9pZCBFbGVtZW50OjpzdG9yZURpc3BsYXlDb250ZW50c1N0eWxlKHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCiB7Ci0gICAgQVNTRVJUKHN0eWxlICYmIHN0eWxl
LT5kaXNwbGF5KCkgPT0gQ09OVEVOVFMpOworICAgIEFTU0VSVChzdHlsZSAmJiBzdHlsZS0+ZGlz
cGxheSgpID09IERpc3BsYXlUeXBlOjpDb250ZW50cyk7CiAgICAgQVNTRVJUKCFyZW5kZXJlcigp
IHx8IGlzUHNldWRvRWxlbWVudCgpKTsKICAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS5zZXRD
b21wdXRlZFN0eWxlKFdURk1vdmUoc3R5bGUpKTsKIH0KQEAgLTE2NjksNyArMTY2OSw3IEBAIGNv
bnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6aW1hZ2VTb3VyY2UKIAogYm9vbCBFbGVtZW50Ojpy
ZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICByZXR1cm4g
c3R5bGUuZGlzcGxheSgpICE9IE5PTkUgJiYgc3R5bGUuZGlzcGxheSgpICE9IENPTlRFTlRTOwor
ICAgIHJldHVybiBzdHlsZS5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6Ok5vbmUgJiYgc3R5bGUu
ZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpDb250ZW50czsKIH0KIAogUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0
eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQpAQCAtMjcyMiw5ICsyNzIyLDkgQEAgdm9p
ZCBFbGVtZW50Ojp3aWxsQmVjb21lRnVsbHNjcmVlbkVsZW1lbgogc3RhdGljIFBzZXVkb0VsZW1l
bnQqIGJlZm9yZU9yQWZ0ZXJQc2V1ZG9FbGVtZW50KEVsZW1lbnQmIGhvc3QsIFBzZXVkb0lkIHBz
ZXVkb0VsZW1lbnRTcGVjaWZpZXIpCiB7CiAgICAgc3dpdGNoIChwc2V1ZG9FbGVtZW50U3BlY2lm
aWVyKSB7Ci0gICAgY2FzZSBCRUZPUkU6CisgICAgY2FzZSBQc2V1ZG9JZDo6QmVmb3JlOgogICAg
ICAgICByZXR1cm4gaG9zdC5iZWZvcmVQc2V1ZG9FbGVtZW50KCk7Ci0gICAgY2FzZSBBRlRFUjoK
KyAgICBjYXNlIFBzZXVkb0lkOjpBZnRlcjoKICAgICAgICAgcmV0dXJuIGhvc3QuYWZ0ZXJQc2V1
ZG9FbGVtZW50KCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0y
ODAyLDcgKzI4MDIsNyBAQCBjb25zdCBSZW5kZXJTdHlsZSogRWxlbWVudDo6Y29tcHV0ZWRTdHls
CiAgICAgaWYgKCFzdHlsZSkKICAgICAgICAgc3R5bGUgPSAmcmVzb2x2ZUNvbXB1dGVkU3R5bGUo
KTsKIAotICAgIGlmIChwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKSB7CisgICAgaWYgKHBzZXVkb0Vs
ZW1lbnRTcGVjaWZpZXIgIT0gUHNldWRvSWQ6Ok5vbmUpIHsKICAgICAgICAgaWYgKGF1dG8qIGNh
Y2hlZFBzZXVkb1N0eWxlID0gc3R5bGUtPmdldENhY2hlZFBzZXVkb1N0eWxlKHBzZXVkb0VsZW1l
bnRTcGVjaWZpZXIpKQogICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFBzZXVkb1N0eWxlOwogICAg
ICAgICByZXR1cm4gJnJlc29sdmVQc2V1ZG9FbGVtZW50U3R5bGUocHNldWRvRWxlbWVudFNwZWNp
Zmllcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyMCw3ICszMjAsNyBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gaW5zZXJ0QWRq
YWNlbnRIVE1MKGNvbnN0IFN0cmluZyYgd2hlcmUsIGNvbnN0IFN0cmluZyYgaHRtbCk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gaW5zZXJ0QWRqYWNlbnRUZXh0KGNvbnN0
IFN0cmluZyYgd2hlcmUsIGNvbnN0IFN0cmluZyYgdGV4dCk7CiAKLSAgICBjb25zdCBSZW5kZXJT
dHlsZSogY29tcHV0ZWRTdHlsZShQc2V1ZG9JZCA9IE5PUFNFVURPKSBvdmVycmlkZTsKKyAgICBj
b25zdCBSZW5kZXJTdHlsZSogY29tcHV0ZWRTdHlsZShQc2V1ZG9JZCA9IFBzZXVkb0lkOjpOb25l
KSBvdmVycmlkZTsKIAogICAgIGJvb2wgbmVlZHNTdHlsZUludmFsaWRhdGlvbigpIGNvbnN0Owog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4MCw3ICs2ODAsNyBAQCBzdGF0aWMg
Tm9kZTo6RWRpdGFiaWxpdHkgY29tcHV0ZUVkaXRhYmlsCiAgICAgICAgIGF1dG8qIHN0eWxlID0g
bm9kZS0+aXNEb2N1bWVudE5vZGUoKSA/IG5vZGUtPnJlbmRlclN0eWxlKCkgOiBjb25zdF9jYXN0
PE5vZGUqPihub2RlKS0+Y29tcHV0ZWRTdHlsZSgpOwogICAgICAgICBpZiAoIXN0eWxlKQogICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChzdHlsZS0+ZGlzcGxheSgpID09IE5PTkUp
CisgICAgICAgIGlmIChzdHlsZS0+ZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpOb25lKQogICAg
ICAgICAgICAgY29udGludWU7CiAjaWYgRU5BQkxFKFVTRVJTRUxFQ1RfQUxMKQogICAgICAgICAv
LyBFbGVtZW50cyB3aXRoIHVzZXItc2VsZWN0OiBhbGwgc3R5bGUgYXJlIGNvbnNpZGVyZWQgYXRv
bWljCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMiwxMCArMjAyLDEwIEBAIHB1YmxpYzoK
ICAgICBib29sIGlzU1ZHRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNTVkdGbGFn
KTsgfQogICAgIGJvb2wgaXNNYXRoTUxFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJ
c01hdGhNTEZsYWcpOyB9CiAKLSAgICBib29sIGlzUHNldWRvRWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIHBzZXVkb0lkKCkgIT0gTk9QU0VVRE87IH0KLSAgICBib29sIGlzQmVmb3JlUHNldWRvRWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIHBzZXVkb0lkKCkgPT0gQkVGT1JFOyB9Ci0gICAgYm9vbCBp
c0FmdGVyUHNldWRvRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHBzZXVkb0lkKCkgPT0gQUZURVI7
IH0KLSAgICBQc2V1ZG9JZCBwc2V1ZG9JZCgpIGNvbnN0IHsgcmV0dXJuIChpc0VsZW1lbnROb2Rl
KCkgJiYgaGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCkpID8gY3VzdG9tUHNldWRvSWQo
KSA6IE5PUFNFVURPOyB9CisgICAgYm9vbCBpc1BzZXVkb0VsZW1lbnQoKSBjb25zdCB7IHJldHVy
biBwc2V1ZG9JZCgpICE9IFBzZXVkb0lkOjpOb25lOyB9CisgICAgYm9vbCBpc0JlZm9yZVBzZXVk
b0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBwc2V1ZG9JZCgpID09IFBzZXVkb0lkOjpCZWZvcmU7
IH0KKyAgICBib29sIGlzQWZ0ZXJQc2V1ZG9FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gcHNldWRv
SWQoKSA9PSBQc2V1ZG9JZDo6QWZ0ZXI7IH0KKyAgICBQc2V1ZG9JZCBwc2V1ZG9JZCgpIGNvbnN0
IHsgcmV0dXJuIChpc0VsZW1lbnROb2RlKCkgJiYgaGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJh
Y2tzKCkpID8gY3VzdG9tUHNldWRvSWQoKSA6IFBzZXVkb0lkOjpOb25lOyB9CiAKICAgICB2aXJ0
dWFsIGJvb2wgaXNNZWRpYUNvbnRyb2xFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYUNvbnRyb2xzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KQEAgLTQzMiw3ICs0MzIsNyBAQCBwdWJsaWM6CiAgICAgLy8gV3JhcHBlciBmb3Igbm9kZXMg
dGhhdCBkb24ndCBoYXZlIGEgcmVuZGVyZXIsIGJ1dCBzdGlsbCBjYWNoZSB0aGUgc3R5bGUgKGxp
a2UgSFRNTE9wdGlvbkVsZW1lbnQpLgogICAgIGNvbnN0IFJlbmRlclN0eWxlKiByZW5kZXJTdHls
ZSgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBjb25zdCBSZW5kZXJTdHlsZSogY29tcHV0ZWRTdHls
ZShQc2V1ZG9JZCBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyID0gTk9QU0VVRE8pOworICAgIHZpcnR1
YWwgY29uc3QgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUoUHNldWRvSWQgcHNldWRvRWxlbWVu
dFNwZWNpZmllciA9IFBzZXVkb0lkOjpOb25lKTsKIAogICAgIGVudW0gY2xhc3MgSW5zZXJ0ZWRJ
bnRvQW5jZXN0b3JSZXN1bHQgewogICAgICAgICBEb25lLApAQCAtNjQzLDcgKzY0Myw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBQc2V1ZG9JZCBjdXN0b21Qc2V1ZG9JZCgpIGNvbnN0CiAgICAg
ewogICAgICAgICBBU1NFUlQoaGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCkpOwotICAg
ICAgICByZXR1cm4gTk9QU0VVRE87CisgICAgICAgIHJldHVybiBQc2V1ZG9JZDo6Tm9uZTsKICAg
ICB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZWRMYXN0UmVmKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9Qb3NpdGlvbi5jcHAJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Qb3NpdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4NSw3ICs2ODUsNyBAQCBQb3Np
dGlvbiBQb3NpdGlvbjo6dXBzdHJlYW0oRWRpdGluZ0JvdW5kCiAKICAgICAgICAgLy8gc2tpcCBw
b3NpdGlvbiBpbiB1bnJlbmRlcmVkIG9yIGludmlzaWJsZSBub2RlCiAgICAgICAgIFJlbmRlck9i
amVjdCogcmVuZGVyZXIgPSBjdXJyZW50Tm9kZS5yZW5kZXJlcigpOwotICAgICAgICBpZiAoIXJl
bmRlcmVyIHx8IHJlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAg
ICAgICBpZiAoIXJlbmRlcmVyIHx8IHJlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBW
aXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGVuc3Vy
ZUxpbmVCb3hlc0lmTmVlZGVkKCpyZW5kZXJlcik7CiAgICAgICAgIGlmIChydWxlID09IENhbkNy
b3NzRWRpdGluZ0JvdW5kYXJ5ICYmIGJvdW5kYXJ5Q3Jvc3NlZCkgewpAQCAtODIwLDcgKzgyMCw3
IEBAIFBvc2l0aW9uIFBvc2l0aW9uOjpkb3duc3RyZWFtKEVkaXRpbmdCb3UKIAogICAgICAgICAv
LyBza2lwIHBvc2l0aW9uIGluIHVucmVuZGVyZWQgb3IgaW52aXNpYmxlIG5vZGUKICAgICAgICAg
YXV0byogcmVuZGVyZXIgPSBjdXJyZW50Tm9kZS5yZW5kZXJlcigpOwotICAgICAgICBpZiAoIXJl
bmRlcmVyIHx8IHJlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAg
ICAgICBpZiAoIXJlbmRlcmVyIHx8IHJlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBW
aXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGVuc3Vy
ZUxpbmVCb3hlc0lmTmVlZGVkKCpyZW5kZXJlcik7CiAgICAgICAgIGlmIChydWxlID09IENhbkNy
b3NzRWRpdGluZ0JvdW5kYXJ5ICYmIGJvdW5kYXJ5Q3Jvc3NlZCkgewpAQCAtOTk1LDcgKzk5NSw3
IEBAIGJvb2wgUG9zaXRpb246OmlzQ2FuZGlkYXRlKCkgY29uc3QKICAgICBpZiAoIXJlbmRlcmVy
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkudmlz
aWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxp
dHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBpZiAocmVuZGVyZXItPmlzQlIoKSkgewpAQCAtMTA1OCw3ICsxMDU4LDcgQEAgYm9vbCBQb3Np
dGlvbjo6cmVuZGVyc0luRGlmZmVyZW50UG9zaXRpbwogICAgIGlmICghcG9zaXRpb25SZW5kZXJl
cikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLnZp
c2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8IHBvc2l0aW9uUmVuZGVyZXItPnN0eWxlKCkudmlzaWJp
bGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHko
KSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlIHx8IHBvc2l0aW9uUmVuZGVyZXItPnN0eWxlKCkudmlz
aWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAKICAgICBpZiAoZGVwcmVjYXRlZE5vZGUoKSA9PSBwb3NpdGlvbi5kZXByZWNhdGVkTm9k
ZSgpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb25JdGVyYXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwCShyZXZp
c2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb25JdGVyYXRvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1Miw3ICsxNTIsNyBAQCBib29sIFBvc2l0aW9uSXRlcmF0b3I6
OmlzQ2FuZGlkYXRlKCkgY29uCiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIAotICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklT
SUJMRSkKKyAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxp
dHk6OlZpc2libGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChyZW5kZXJlci0+
aXNCUigpKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAkocmV2aXNpb24g
MjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NCw5ICs1NCw5IEBAIFN0cmluZyBQc2V1ZG9FbGVtZW50Ojpwc2V1ZG9FbGVt
ZW50TmFtZUYKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBhZnRlcihN
QUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiOjphZnRlciIpKTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgU3RyaW5nPiBiZWZvcmUoTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIjo6YmVm
b3JlIikpOwogICAgIHN3aXRjaCAocHNldWRvSWQpIHsKLSAgICBjYXNlIEFGVEVSOgorICAgIGNh
c2UgUHNldWRvSWQ6OkFmdGVyOgogICAgICAgICByZXR1cm4gYWZ0ZXI7Ci0gICAgY2FzZSBCRUZP
UkU6CisgICAgY2FzZSBQc2V1ZG9JZDo6QmVmb3JlOgogICAgICAgICByZXR1cm4gYmVmb3JlOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwpAQCAtNjgsNyArNjgs
NyBAQCBQc2V1ZG9FbGVtZW50OjpQc2V1ZG9FbGVtZW50KEVsZW1lbnQmIGhvCiAgICAgLCBtX2hv
c3RFbGVtZW50KCZob3N0KQogICAgICwgbV9wc2V1ZG9JZChwc2V1ZG9JZCkKIHsKLSAgICBBU1NF
UlQocHNldWRvSWQgPT0gQkVGT1JFIHx8IHBzZXVkb0lkID09IEFGVEVSKTsKKyAgICBBU1NFUlQo
cHNldWRvSWQgPT0gUHNldWRvSWQ6OkJlZm9yZSB8fCBwc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6QWZ0
ZXIpOwogICAgIHNldEhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vVmlzaXRlZExpbmtTdGF0ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL1Zpc2l0ZWRMaW5rU3RhdGUuY3BwCShyZXZpc2lvbiAyMzIxMDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVmlzaXRlZExpbmtTdGF0ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg1LDE4ICs4NSwxOCBAQCB2b2lkIFZpc2l0ZWRMaW5rU3RhdGU6OmludmFsaWRhdGVT
dHlsZUZvCiAgICAgfQogfQogCi1FSW5zaWRlTGluayBWaXNpdGVkTGlua1N0YXRlOjpkZXRlcm1p
bmVMaW5rU3RhdGVTbG93Q2FzZShjb25zdCBFbGVtZW50JiBlbGVtZW50KQorSW5zaWRlTGluayBW
aXNpdGVkTGlua1N0YXRlOjpkZXRlcm1pbmVMaW5rU3RhdGVTbG93Q2FzZShjb25zdCBFbGVtZW50
JiBlbGVtZW50KQogewogICAgIEFTU0VSVChlbGVtZW50LmlzTGluaygpKTsKIAogICAgIGNvbnN0
IEF0b21pY1N0cmluZyogYXR0cmlidXRlID0gbGlua0F0dHJpYnV0ZShlbGVtZW50KTsKICAgICBp
ZiAoIWF0dHJpYnV0ZSB8fCBhdHRyaWJ1dGUtPmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gTm90
SW5zaWRlTGluazsKKyAgICAgICAgcmV0dXJuIEluc2lkZUxpbms6Ok5vdEluc2lkZTsKIAogICAg
IC8vIEFuIGVtcHR5IGhyZWYgcmVmZXJzIHRvIHRoZSBkb2N1bWVudCBpdHNlbGYgd2hpY2ggaXMg
YWx3YXlzIHZpc2l0ZWQuIEl0IGlzIHVzZWZ1bCB0byBjaGVjayB0aGlzIGV4cGxpY2l0bHkgc28K
ICAgICAvLyB0aGF0IHZpc2l0ZWQgbGlua3MgY2FuIGJlIHRlc3RlZCBpbiBwbGF0Zm9ybSBpbmRl
cGVuZGVudCBtYW5uZXIsIHdpdGhvdXQgZXhwbGljaXQgc3VwcG9ydCBpbiB0aGUgdGVzdCBoYXJu
ZXNzLgogICAgIGlmIChhdHRyaWJ1dGUtPmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIEluc2lk
ZVZpc2l0ZWRMaW5rOworICAgICAgICByZXR1cm4gSW5zaWRlTGluazo6SW5zaWRlVmlzaXRlZDsK
IAogICAgIFNoYXJlZFN0cmluZ0hhc2ggaGFzaDsKICAgICBpZiAoaXM8SFRNTEFuY2hvckVsZW1l
bnQ+KGVsZW1lbnQpKQpAQCAtMTA1LDIyICsxMDUsMjIgQEAgRUluc2lkZUxpbmsgVmlzaXRlZExp
bmtTdGF0ZTo6ZGV0ZXJtaW5lTAogICAgICAgICBoYXNoID0gY29tcHV0ZVZpc2l0ZWRMaW5rSGFz
aChlbGVtZW50LmRvY3VtZW50KCkuYmFzZVVSTCgpLCAqYXR0cmlidXRlKTsKIAogICAgIGlmICgh
aGFzaCkKLSAgICAgICAgcmV0dXJuIEluc2lkZVVudmlzaXRlZExpbms7CisgICAgICAgIHJldHVy
biBJbnNpZGVMaW5rOjpJbnNpZGVVbnZpc2l0ZWQ7CiAKICAgICBGcmFtZSogZnJhbWUgPSBlbGVt
ZW50LmRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4g
SW5zaWRlVW52aXNpdGVkTGluazsKKyAgICAgICAgcmV0dXJuIEluc2lkZUxpbms6Okluc2lkZVVu
dmlzaXRlZDsKIAogICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOwogICAgIGlmICghcGFn
ZSkKLSAgICAgICAgcmV0dXJuIEluc2lkZVVudmlzaXRlZExpbms7CisgICAgICAgIHJldHVybiBJ
bnNpZGVMaW5rOjpJbnNpZGVVbnZpc2l0ZWQ7CiAKICAgICBtX2xpbmtzQ2hlY2tlZEZvclZpc2l0
ZWRTdGF0ZS5hZGQoaGFzaCk7CiAKICAgICBpZiAoIXBhZ2UtPnZpc2l0ZWRMaW5rU3RvcmUoKS5p
c0xpbmtWaXNpdGVkKCpwYWdlLCBoYXNoLCBlbGVtZW50LmRvY3VtZW50KCkuYmFzZVVSTCgpLCAq
YXR0cmlidXRlKSkKLSAgICAgICAgcmV0dXJuIEluc2lkZVVudmlzaXRlZExpbms7CisgICAgICAg
IHJldHVybiBJbnNpZGVMaW5rOjpJbnNpZGVVbnZpc2l0ZWQ7CiAKLSAgICByZXR1cm4gSW5zaWRl
VmlzaXRlZExpbms7CisgICAgcmV0dXJuIEluc2lkZUxpbms6Okluc2lkZVZpc2l0ZWQ7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9WaXNpdGVk
TGlua1N0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Zpc2l0ZWRMaW5r
U3RhdGUuaAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Zpc2l0ZWRM
aW5rU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTkgKzQ0LDE5IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgaW52YWxpZGF0ZVN0eWxlRm9yQWxsTGlua3MoKTsKICAgICB2b2lkIGludmFsaWRh
dGVTdHlsZUZvckxpbmsoU2hhcmVkU3RyaW5nSGFzaCk7Ci0gICAgRUluc2lkZUxpbmsgZGV0ZXJt
aW5lTGlua1N0YXRlKGNvbnN0IEVsZW1lbnQmKTsKKyAgICBJbnNpZGVMaW5rIGRldGVybWluZUxp
bmtTdGF0ZShjb25zdCBFbGVtZW50Jik7CiAKIHByaXZhdGU6Ci0gICAgRUluc2lkZUxpbmsgZGV0
ZXJtaW5lTGlua1N0YXRlU2xvd0Nhc2UoY29uc3QgRWxlbWVudCYpOworICAgIEluc2lkZUxpbmsg
ZGV0ZXJtaW5lTGlua1N0YXRlU2xvd0Nhc2UoY29uc3QgRWxlbWVudCYpOwogCiAgICAgRG9jdW1l
bnQmIG1fZG9jdW1lbnQ7CiAgICAgSGFzaFNldDxTaGFyZWRTdHJpbmdIYXNoLCBTaGFyZWRTdHJp
bmdIYXNoSGFzaD4gbV9saW5rc0NoZWNrZWRGb3JWaXNpdGVkU3RhdGU7CiB9OwogCi1pbmxpbmUg
RUluc2lkZUxpbmsgVmlzaXRlZExpbmtTdGF0ZTo6ZGV0ZXJtaW5lTGlua1N0YXRlKGNvbnN0IEVs
ZW1lbnQmIGVsZW1lbnQpCitpbmxpbmUgSW5zaWRlTGluayBWaXNpdGVkTGlua1N0YXRlOjpkZXRl
cm1pbmVMaW5rU3RhdGUoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAoIWVsZW1l
bnQuaXNMaW5rKCkpCi0gICAgICAgIHJldHVybiBOb3RJbnNpZGVMaW5rOworICAgICAgICByZXR1
cm4gSW5zaWRlTGluazo6Tm90SW5zaWRlOwogICAgIHJldHVybiBkZXRlcm1pbmVMaW5rU3RhdGVT
bG93Q2FzZShlbGVtZW50KTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3Bw
CShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NTYsNyArNDU2LDcgQEAgc3RhdGljIGJvb2wgaXNTcGVjaWFs
SFRNTEVsZW1lbnQoY29uc3QgTgogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS5kaXNwbGF5KCkgPT0gVEFCTEUgfHwg
cmVuZGVyZXItPnN0eWxlKCkuZGlzcGxheSgpID09IElOTElORV9UQUJMRSkKKyAgICBpZiAocmVu
ZGVyZXItPnN0eWxlKCkuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpUYWJsZSB8fCByZW5kZXJl
ci0+c3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OklubGluZVRhYmxlKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS5pc0Zsb2F0aW5nKCkp
CkBAIC05MzMsNyArOTMzLDcgQEAgUmVmPEVsZW1lbnQ+IGNyZWF0ZVRhYlNwYW5FbGVtZW50KERv
Y3VtZQogYm9vbCBpc05vZGVSZW5kZXJlZChjb25zdCBOb2RlJiBub2RlKQogewogICAgIGF1dG8q
IHJlbmRlcmVyID0gbm9kZS5yZW5kZXJlcigpOwotICAgIHJldHVybiByZW5kZXJlciAmJiByZW5k
ZXJlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRTsKKyAgICByZXR1cm4gcmVuZGVy
ZXIgJiYgcmVuZGVyZXItPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2li
bGU7CiB9CiAKIHVuc2lnbmVkIG51bUVuY2xvc2luZ01haWxCbG9ja3F1b3Rlcyhjb25zdCBQb3Np
dGlvbiYgcG9zaXRpb24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3Iu
Y3BwCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2MCwxMSArNTYwLDExIEBAIHZvaWQgVGV4dEl0
ZXJhdG9yOjphZHZhbmNlKCkKIAogc3RhdGljIGJvb2wgaGFzVmlzaWJsZVRleHROb2RlKFJlbmRl
clRleHQmIHJlbmRlcmVyKQogewotICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLnZpc2liaWxpdHko
KSA9PSBWSVNJQkxFKQorICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBW
aXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoaXM8UmVu
ZGVyVGV4dEZyYWdtZW50PihyZW5kZXJlcikpIHsKICAgICAgICAgaWYgKGF1dG8gZmlyc3RMZXR0
ZXIgPSBkb3duY2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQ+KHJlbmRlcmVyKS5maXJzdExldHRlcigp
KSB7Ci0gICAgICAgICAgICBpZiAoZmlyc3RMZXR0ZXItPnN0eWxlKCkudmlzaWJpbGl0eSgpID09
IFZJU0lCTEUpCisgICAgICAgICAgICBpZiAoZmlyc3RMZXR0ZXItPnN0eWxlKCkudmlzaWJpbGl0
eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KICAgICB9CkBAIC02MTgsNyArNjE4LDcgQEAgYm9vbCBUZXh0SXRlcmF0b3I6
OmhhbmRsZVRleHROb2RlKCkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHJlbmRlcmVyLnN0eWxlKCkudmlzaWJpbGl0
eSgpICE9IFZJU0lCTEUgJiYgIShtX2JlaGF2aW9yICYgVGV4dEl0ZXJhdG9ySWdub3Jlc1N0eWxl
VmlzaWJpbGl0eSkpCisgICAgICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLnZpc2liaWxpdHkoKSAh
PSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICEobV9iZWhhdmlvciAmIFRleHRJdGVyYXRvcklnbm9y
ZXNTdHlsZVZpc2liaWxpdHkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBp
bnQgcmVuZGVyZXJUZXh0TGVuZ3RoID0gcmVuZGVyZXJUZXh0Lmxlbmd0aCgpOwogICAgICAgICBp
bnQgZW5kID0gKCZ0ZXh0Tm9kZSA9PSBtX2VuZENvbnRhaW5lcikgPyBtX2VuZE9mZnNldCA6IElO
VF9NQVg7CkBAIC02MzIsNyArNjMyLDcgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRO
b2RlKCkKICAgICB9CiAKICAgICBpZiAoY29uc3QgYXV0byogbGF5b3V0ID0gcmVuZGVyZXIuc2lt
cGxlTGluZUxheW91dCgpKSB7Ci0gICAgICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLnZpc2liaWxp
dHkoKSAhPSBWSVNJQkxFICYmICEobV9iZWhhdmlvciAmIFRleHRJdGVyYXRvcklnbm9yZXNTdHls
ZVZpc2liaWxpdHkpKQorICAgICAgICBpZiAocmVuZGVyZXIuc3R5bGUoKS52aXNpYmlsaXR5KCkg
IT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhKG1fYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JJZ25v
cmVzU3R5bGVWaXNpYmlsaXR5KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBB
U1NFUlQocmVuZGVyZXIucGFyZW50KCkpOwogICAgICAgICBBU1NFUlQoaXM8UmVuZGVyQmxvY2tG
bG93PigqcmVuZGVyZXIucGFyZW50KCkpKTsKQEAgLTcyNyw3ICs3MjcsNyBAQCBib29sIFRleHRJ
dGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogICAgICAgICBoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0
dGVyKGRvd25jYXN0PFJlbmRlclRleHRGcmFnbWVudD4ocmVuZGVyZXIpKTsKIAogICAgIGlmICgh
cmVuZGVyZXIuZmlyc3RUZXh0Qm94KCkgJiYgcmVuZGVyZXJUZXh0Lmxlbmd0aCgpICYmICFzaG91
bGRIYW5kbGVGaXJzdExldHRlcikgewotICAgICAgICBpZiAocmVuZGVyZXIuc3R5bGUoKS52aXNp
YmlsaXR5KCkgIT0gVklTSUJMRSAmJiAhKG1fYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JJZ25vcmVz
U3R5bGVWaXNpYmlsaXR5KSkKKyAgICAgICAgaWYgKHJlbmRlcmVyLnN0eWxlKCkudmlzaWJpbGl0
eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgJiYgIShtX2JlaGF2aW9yICYgVGV4dEl0ZXJhdG9y
SWdub3Jlc1N0eWxlVmlzaWJpbGl0eSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIG1fbGFzdFRleHROb2RlRW5kZWRXaXRoQ29sbGFwc2VkU3BhY2UgPSB0cnVlOyAvLyBlbnRp
cmUgYmxvY2sgaXMgY29sbGFwc2VkIHNwYWNlCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNzUz
LDcgKzc1Myw3IEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Qm94KCkKICAgICBUZXh0
JiB0ZXh0Tm9kZSA9IGRvd25jYXN0PFRleHQ+KCptX25vZGUpOwogCiAgICAgYXV0byYgcmVuZGVy
ZXIgPSBtX2ZpcnN0TGV0dGVyVGV4dCA/ICptX2ZpcnN0TGV0dGVyVGV4dCA6ICp0ZXh0Tm9kZS5y
ZW5kZXJlcigpOwotICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJ
QkxFICYmICEobV9iZWhhdmlvciAmIFRleHRJdGVyYXRvcklnbm9yZXNTdHlsZVZpc2liaWxpdHkp
KSB7CisgICAgaWYgKHJlbmRlcmVyLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6
OlZpc2libGUgJiYgIShtX2JlaGF2aW9yICYgVGV4dEl0ZXJhdG9ySWdub3Jlc1N0eWxlVmlzaWJp
bGl0eSkpIHsKICAgICAgICAgbV90ZXh0Qm94ID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTg0OCw3ICs4NDgsNyBAQCBzdGF0aWMgaW5saW5lIFJlbmRlclRleHQqIGZpcnN0
UmVuZGVyVGV4CiB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGVGaXJzdExldHRlcihS
ZW5kZXJUZXh0RnJhZ21lbnQmIHJlbmRlcmVyKQogewogICAgIGlmIChhdXRvKiBmaXJzdExldHRl
ciA9IHJlbmRlcmVyLmZpcnN0TGV0dGVyKCkpIHsKLSAgICAgICAgaWYgKGZpcnN0TGV0dGVyLT5z
dHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFICYmICEobV9iZWhhdmlvciAmIFRleHRJdGVy
YXRvcklnbm9yZXNTdHlsZVZpc2liaWxpdHkpKQorICAgICAgICBpZiAoZmlyc3RMZXR0ZXItPnN0
eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgJiYgIShtX2JlaGF2aW9y
ICYgVGV4dEl0ZXJhdG9ySWdub3Jlc1N0eWxlVmlzaWJpbGl0eSkpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIGlmIChhdXRvKiBmaXJzdExldHRlclRleHQgPSBmaXJzdFJlbmRlclRleHRJ
bkZpcnN0TGV0dGVyKGZpcnN0TGV0dGVyKSkgewogICAgICAgICAgICAgbV9oYW5kbGVkRmlyc3RM
ZXR0ZXIgPSB0cnVlOwpAQCAtODY3LDcgKzg2Nyw3IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5k
bGVSZXBsYWNlZEVsZW1lbnQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYXV0byYgcmVu
ZGVyZXIgPSAqbV9ub2RlLT5yZW5kZXJlcigpOwotICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLnZp
c2liaWxpdHkoKSAhPSBWSVNJQkxFICYmICEobV9iZWhhdmlvciAmIFRleHRJdGVyYXRvcklnbm9y
ZXNTdHlsZVZpc2liaWxpdHkpKQorICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLnZpc2liaWxpdHko
KSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICEobV9iZWhhdmlvciAmIFRleHRJdGVyYXRvckln
bm9yZXNTdHlsZVZpc2liaWxpdHkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAo
bV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFjZSkgewpAQCAtMTExNSw3ICsxMTE1
LDcgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OnNob3VsZFJlcHJlc2VudE5vZGVPZgogICAgIC8vIElm
IHRoaXMgbm9kZSBpcyB1bnJlbmRlcmVkIG9yIGludmlzaWJsZSB0aGUgVmlzaWJsZVBvc2l0aW9u
IGNoZWNrcyBiZWxvdyB3b24ndCBoYXZlIG11Y2ggbWVhbmluZy4KICAgICAvLyBBZGRpdGlvbmFs
bHksIGlmIHRoZSByYW5nZSB3ZSBhcmUgaXRlcmF0aW5nIG92ZXIgY29udGFpbnMgaHVnZSBzZWN0
aW9ucyBvZiB1bnJlbmRlcmVkIGNvbnRlbnQsIAogICAgIC8vIHdlIHdvdWxkIGNyZWF0ZSBWaXNp
YmxlUG9zaXRpb25zIG9uIGV2ZXJ5IGNhbGwgdG8gdGhpcyBmdW5jdGlvbiB3aXRob3V0IHRoaXMg
Y2hlY2suCi0gICAgaWYgKCFtX25vZGUtPnJlbmRlcmVyKCkgfHwgbV9ub2RlLT5yZW5kZXJlcigp
LT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFCisgICAgaWYgKCFtX25vZGUtPnJlbmRl
cmVyKCkgfHwgbV9ub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNp
YmlsaXR5OjpWaXNpYmxlCiAgICAgICAgIHx8IChpczxSZW5kZXJCbG9ja0Zsb3c+KCptX25vZGUt
PnJlbmRlcmVyKCkpICYmICFkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KCptX25vZGUtPnJlbmRl
cmVyKCkpLmhlaWdodCgpICYmICFpczxIVE1MQm9keUVsZW1lbnQ+KCptX25vZGUpKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMzMxLDEwICsxMzMxLDEwIEBAIHZvaWQgU2ltcGxpZmll
ZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6YWQKICAgICAgICAgaWYgKCFtX2hhbmRsZWROb2RlICYm
ICEobV9ub2RlID09IG1fZW5kQ29udGFpbmVyICYmICFtX2VuZE9mZnNldCkpIHsKICAgICAgICAg
ICAgIGF1dG8qIHJlbmRlcmVyID0gbV9ub2RlLT5yZW5kZXJlcigpOwogICAgICAgICAgICAgaWYg
KHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc1RleHQoKSAmJiBtX25vZGUtPmlzVGV4dE5vZGUoKSkg
ewotICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0g
VklTSUJMRSAmJiBtX29mZnNldCA+IDApCisgICAgICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5z
dHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmIG1fb2Zmc2V0ID4g
MCkKICAgICAgICAgICAgICAgICAgICAgbV9oYW5kbGVkTm9kZSA9IGhhbmRsZVRleHROb2RlKCk7
CiAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlbmRlcmVyICYmIChyZW5kZXJlci0+aXNJbWFnZSgp
IHx8IHJlbmRlcmVyLT5pc1dpZGdldCgpKSkgewotICAgICAgICAgICAgICAgIGlmIChyZW5kZXJl
ci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSAmJiBtX29mZnNldCA+IDApCisgICAg
ICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmls
aXR5OjpWaXNpYmxlICYmIG1fb2Zmc2V0ID4gMCkKICAgICAgICAgICAgICAgICAgICAgbV9oYW5k
bGVkTm9kZSA9IGhhbmRsZVJlcGxhY2VkRWxlbWVudCgpOwogICAgICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICAgICAgbV9oYW5kbGVkTm9kZSA9IGhhbmRsZU5vblRleHROb2RlKCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCShyZXZpc2lvbiAyMzIxMDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExODEsNyArMTE4MSw3IEBAIE5vZGUqIGZpbmRTdGFydE9mUGFyYWdyYXBoKE5vZGUq
IHN0YXJ0Tm8KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSA9IHItPnN0eWxlKCk7Ci0gICAgICAgIGlmIChzdHlsZS52aXNp
YmlsaXR5KCkgIT0gVklTSUJMRSkgeworICAgICAgICBpZiAoc3R5bGUudmlzaWJpbGl0eSgpICE9
IFZpc2liaWxpdHk6OlZpc2libGUpIHsKICAgICAgICAgICAgIG4gPSBOb2RlVHJhdmVyc2FsOjpw
cmV2aW91c1Bvc3RPcmRlcigqbiwgc3RhcnRCbG9jayk7CiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgfQpAQCAtMTI0Myw3ICsxMjQzLDcgQEAgTm9kZSogZmluZEVuZE9mUGFyYWdyYXBo
KE5vZGUqIHN0YXJ0Tm9kZQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAg
ICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gci0+c3R5bGUoKTsKLSAgICAgICAgaWYgKHN0
eWxlLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKSB7CisgICAgICAgIGlmIChzdHlsZS52aXNpYmls
aXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkgewogICAgICAgICAgICAgbiA9IE5vZGVUcmF2
ZXJzYWw6Om5leHQoKm4sIHN0YXlJbnNpZGVCbG9jayk7CiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQko
cmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9T
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MiwzNyArOTIsMzYgQEAgdm9pZCBFZGl0b3I6OnNldFRl
eHRBbGlnbm1lbnRGb3JDaGFuZ2VkQgogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNv
bnN0IGNoYXIgKm5ld1ZhbHVlID0gbnVsbHB0cjsKLSAgICBFVGV4dEFsaWduIHRleHRBbGlnbiA9
ICp2YWx1ZTsKKyAgICBUZXh0QWxpZ25Nb2RlIHRleHRBbGlnbiA9ICp2YWx1ZTsKICAgICBzd2l0
Y2ggKHRleHRBbGlnbikgewotICAgICAgICBjYXNlIFRBU1RBUlQ6Ci0gICAgICAgIGNhc2UgVEFF
TkQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgICAg
ICAgICAgICAgY2FzZSBOYXR1cmFsV3JpdGluZ0RpcmVjdGlvbjoKLSAgICAgICAgICAgICAgICAg
ICAgLy8gbm8tb3AKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Y2FzZSBMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb246Ci0gICAgICAgICAgICAgICAgICAgIG5l
d1ZhbHVlID0gImxlZnQiOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICBjYXNlIFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbjoKLSAgICAgICAgICAgICAgICAg
ICAgbmV3VmFsdWUgPSAicmlnaHQiOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgTEVG
VDoKLSAgICAgICAgY2FzZSBXRUJLSVRfTEVGVDoKLSAgICAgICAgICAgIG5ld1ZhbHVlID0gInJp
Z2h0IjsKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlN0YXJ0OgorICAgIGNhc2UgVGV4dEFsaWdu
TW9kZTo6RW5kOiB7CisgICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CisgICAgICAgIGNhc2Ug
TmF0dXJhbFdyaXRpbmdEaXJlY3Rpb246CisgICAgICAgICAgICAvLyBuby1vcAogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUklHSFQ6Ci0gICAgICAgIGNhc2UgV0VCS0lUX1JJR0hU
OgorICAgICAgICBjYXNlIExlZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlvbjoKICAgICAgICAgICAg
IG5ld1ZhbHVlID0gImxlZnQiOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ0VO
VEVSOgotICAgICAgICBjYXNlIFdFQktJVF9DRU5URVI6Ci0gICAgICAgIGNhc2UgSlVTVElGWToK
LSAgICAgICAgICAgIC8vIG5vLW9wCisgICAgICAgIGNhc2UgUmlnaHRUb0xlZnRXcml0aW5nRGly
ZWN0aW9uOgorICAgICAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOwogICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgVGV4dEFsaWdu
TW9kZTo6TGVmdDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdExlZnQ6CisgICAgICAg
IG5ld1ZhbHVlID0gInJpZ2h0IjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUZXh0QWxpZ25N
b2RlOjpSaWdodDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0OgorICAgICAg
ICBuZXdWYWx1ZSA9ICJsZWZ0IjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUZXh0QWxpZ25N
b2RlOjpDZW50ZXI6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRDZW50ZXI6CisgICAg
Y2FzZSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5OgorICAgICAgICAvLyBuby1vcAorICAgICAgICBi
cmVhazsKICAgICB9CiAKICAgICBpZiAoIW5ld1ZhbHVlKQpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFyZWFFbGVtZW50LmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTAsNyArMjEw
LDcgQEAgYm9vbCBIVE1MQXJlYUVsZW1lbnQ6OmlzTW91c2VGb2N1c2FibGUoKQogYm9vbCBIVE1M
QXJlYUVsZW1lbnQ6OmlzRm9jdXNhYmxlKCkgY29uc3QKIHsKICAgICBSZWZQdHI8SFRNTEltYWdl
RWxlbWVudD4gaW1hZ2UgPSBpbWFnZUVsZW1lbnQoKTsKLSAgICBpZiAoIWltYWdlIHx8ICFpbWFn
ZS0+cmVuZGVyZXIoKSB8fCBpbWFnZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS52aXNpYmlsaXR5KCkg
IT0gVklTSUJMRSkKKyAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+cmVuZGVyZXIoKSB8fCBpbWFn
ZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJs
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHN1cHBvcnRzRm9jdXMoKSAm
JiBFbGVtZW50Ojp0YWJJbmRleCgpID49IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiwxMSArMTE2LDExIEBA
IGJvb2wgSFRNTEZvcm1FbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGMKICAgICBpZiAoIXBhcmVu
dElzVGFibGVFbGVtZW50UGFydCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBFRGlzcGxh
eSBkaXNwbGF5ID0gc3R5bGUuZGlzcGxheSgpOwotICAgIGJvb2wgZm9ybUlzVGFibGVQYXJ0ID0g
ZGlzcGxheSA9PSBUQUJMRSB8fCBkaXNwbGF5ID09IElOTElORV9UQUJMRSB8fCBkaXNwbGF5ID09
IFRBQkxFX1JPV19HUk9VUAotICAgICAgICB8fCBkaXNwbGF5ID09IFRBQkxFX0hFQURFUl9HUk9V
UCB8fCBkaXNwbGF5ID09IFRBQkxFX0ZPT1RFUl9HUk9VUCB8fCBkaXNwbGF5ID09IFRBQkxFX1JP
VwotICAgICAgICB8fCBkaXNwbGF5ID09IFRBQkxFX0NPTFVNTl9HUk9VUCB8fCBkaXNwbGF5ID09
IFRBQkxFX0NPTFVNTiB8fCBkaXNwbGF5ID09IFRBQkxFX0NFTEwKLSAgICAgICAgfHwgZGlzcGxh
eSA9PSBUQUJMRV9DQVBUSU9OOworICAgIERpc3BsYXlUeXBlIGRpc3BsYXkgPSBzdHlsZS5kaXNw
bGF5KCk7CisgICAgYm9vbCBmb3JtSXNUYWJsZVBhcnQgPSBkaXNwbGF5ID09IERpc3BsYXlUeXBl
OjpUYWJsZSB8fCBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpJbmxpbmVUYWJsZSB8fCBkaXNwbGF5
ID09IERpc3BsYXlUeXBlOjpUYWJsZVJvd0dyb3VwCisgICAgICAgIHx8IGRpc3BsYXkgPT0gRGlz
cGxheVR5cGU6OlRhYmxlSGVhZGVyR3JvdXAgfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6VGFi
bGVGb290ZXJHcm91cCB8fCBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpUYWJsZVJvdworICAgICAg
ICB8fCBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpUYWJsZUNvbHVtbkdyb3VwIHx8IGRpc3BsYXkg
PT0gRGlzcGxheVR5cGU6OlRhYmxlQ29sdW1uIHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OlRh
YmxlQ2VsbAorICAgICAgICB8fCBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpUYWJsZUNhcHRpb247
CiAKICAgICByZXR1cm4gZm9ybUlzVGFibGVQYXJ0OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQs
NyArMTA0LDcgQEAgdm9pZCBIVE1MSUZyYW1lRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYwogCiBi
b29sIEhUTUxJRnJhbWVFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSkKIHsKLSAgICByZXR1cm4gaXNVUkxBbGxvd2VkKCkgJiYgc3R5bGUuZGlzcGxheSgp
ICE9IE5PTkU7CisgICAgcmV0dXJuIGlzVVJMQWxsb3dlZCgpICYmIHN0eWxlLmRpc3BsYXkoKSAh
PSBEaXNwbGF5VHlwZTo6Tm9uZTsKIH0KIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxJ
RnJhbWVFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA2MCwxMyArMjA2MCwx
MyBAQCBSZW5kZXJTdHlsZSBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVJbm5lCiAgICAgdGV4dEJs
b2NrU3R5bGUuaW5oZXJpdEZyb20oc3R5bGUpOwogICAgIGFkanVzdElubmVyVGV4dFN0eWxlKHN0
eWxlLCB0ZXh0QmxvY2tTdHlsZSk7CiAKLSAgICB0ZXh0QmxvY2tTdHlsZS5zZXRXaGl0ZVNwYWNl
KFBSRSk7CisgICAgdGV4dEJsb2NrU3R5bGUuc2V0V2hpdGVTcGFjZShXaGl0ZVNwYWNlOjpQcmUp
OwogICAgIHRleHRCbG9ja1N0eWxlLnNldE92ZXJmbG93V3JhcChPdmVyZmxvd1dyYXA6Ok5vcm1h
bCk7CiAgICAgdGV4dEJsb2NrU3R5bGUuc2V0T3ZlcmZsb3dYKE92ZXJmbG93OjpIaWRkZW4pOwog
ICAgIHRleHRCbG9ja1N0eWxlLnNldE92ZXJmbG93WShPdmVyZmxvdzo6SGlkZGVuKTsKICAgICB0
ZXh0QmxvY2tTdHlsZS5zZXRUZXh0T3ZlcmZsb3coc2hvdWxkVHJ1bmNhdGVUZXh0KHN0eWxlKSA/
IFRleHRPdmVyZmxvdzo6RWxsaXBzaXMgOiBUZXh0T3ZlcmZsb3c6OkNsaXApOwogCi0gICAgdGV4
dEJsb2NrU3R5bGUuc2V0RGlzcGxheShCTE9DSyk7CisgICAgdGV4dEJsb2NrU3R5bGUuc2V0RGlz
cGxheShEaXNwbGF5VHlwZTo6QmxvY2spOwogCiAgICAgaWYgKGhhc0F1dG9GaWxsU3Ryb25nUGFz
c3dvcmRCdXR0b24oKSkgewogICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXRDb2xvcih7IDAuMGYs
IDAuMGYsIDAuMGYsIDAuNmYgfSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRH
cm91cEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9w
dEdyb3VwRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcg
QEAgYm9vbCBIVE1MT3B0R3JvdXBFbGVtZW50Ojppc0ZvY3VzYWJsZSgpIAogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgLy8gT3B0Z3JvdXAgZWxlbWVudHMgZG8gbm90IGhhdmUgYSByZW5kZXJl
ci4KICAgICBhdXRvKiBzdHlsZSA9IGNvbnN0X2Nhc3Q8SFRNTE9wdEdyb3VwRWxlbWVudCY+KCp0
aGlzKS5jb21wdXRlZFN0eWxlKCk7Ci0gICAgcmV0dXJuIHN0eWxlICYmIHN0eWxlLT5kaXNwbGF5
KCkgIT0gTk9ORTsKKyAgICByZXR1cm4gc3R5bGUgJiYgc3R5bGUtPmRpc3BsYXkoKSAhPSBEaXNw
bGF5VHlwZTo6Tm9uZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MT3B0R3JvdXBFbGVt
ZW50Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3B0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3B0aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3
IEBAIGJvb2wgSFRNTE9wdGlvbkVsZW1lbnQ6OmlzRm9jdXNhYmxlKCkgY28KICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIC8vIE9wdGlvbiBlbGVtZW50cyBkbyBub3QgaGF2ZSBhIHJlbmRlcmVy
LgogICAgIGF1dG8qIHN0eWxlID0gY29uc3RfY2FzdDxIVE1MT3B0aW9uRWxlbWVudCY+KCp0aGlz
KS5jb21wdXRlZFN0eWxlKCk7Ci0gICAgcmV0dXJuIHN0eWxlICYmIHN0eWxlLT5kaXNwbGF5KCkg
IT0gTk9ORTsKKyAgICByZXR1cm4gc3R5bGUgJiYgc3R5bGUtPmRpc3BsYXkoKSAhPSBEaXNwbGF5
VHlwZTo6Tm9uZTsKIH0KIAogYm9vbCBIVE1MT3B0aW9uRWxlbWVudDo6bWF0Y2hlc0RlZmF1bHRQ
c2V1ZG9DbGFzcygpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJl
YUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRB
cmVhRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1MSw3ICs1NTEsNyBA
QCBSZW5kZXJTdHlsZSBIVE1MVGV4dEFyZWFFbGVtZW50OjpjcmVhdGVJCiAgICAgYXV0byB0ZXh0
QmxvY2tTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKICAgICB0ZXh0QmxvY2tTdHlsZS5p
bmhlcml0RnJvbShzdHlsZSk7CiAgICAgYWRqdXN0SW5uZXJUZXh0U3R5bGUoc3R5bGUsIHRleHRC
bG9ja1N0eWxlKTsKLSAgICB0ZXh0QmxvY2tTdHlsZS5zZXREaXNwbGF5KEJMT0NLKTsKKyAgICB0
ZXh0QmxvY2tTdHlsZS5zZXREaXNwbGF5KERpc3BsYXlUeXBlOjpCbG9jayk7CiAKICNpZiBQTEFU
Rk9STShJT1MpCiAgICAgLy8gV2UncmUgYWRkaW5nIHRocmVlIGV4dHJhIHBpeGVscyBvZiBwYWRk
aW5nIHRvIGxpbmUgdGV4dGFyZWFzIHVwIHdpdGggdGV4dCBmaWVsZHMuICAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA0LDcgKzMwNCw3IEBAIHZvaWQgSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGUKICAgICAgICAgYXV0byogcmVuZGVyZXJU
ZXh0Q29udHJvbCA9IHJlbmRlcmVyKCk7CiAKICAgICAgICAgaWYgKGlubmVyVGV4dCAmJiByZW5k
ZXJlclRleHRDb250cm9sKSB7Ci0gICAgICAgICAgICBpZiAocmVuZGVyZXJUZXh0Q29udHJvbC0+
c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gSElEREVOIHx8ICFpbm5lclRleHQtPnJlbmRlckJveCgp
IHx8ICFpbm5lclRleHQtPnJlbmRlckJveCgpLT5oZWlnaHQoKSkgeworICAgICAgICAgICAgaWYg
KHJlbmRlcmVyVGV4dENvbnRyb2wtPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6
OkhpZGRlbiB8fCAhaW5uZXJUZXh0LT5yZW5kZXJCb3goKSB8fCAhaW5uZXJUZXh0LT5yZW5kZXJC
b3goKS0+aGVpZ2h0KCkpIHsKICAgICAgICAgICAgICAgICBjYWNoZVNlbGVjdGlvbihzdGFydCwg
ZW5kLCBkaXJlY3Rpb24pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
QEAgLTgyMSwxOSArODIxLDE5IEBAIHZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmFk
anVzdEkKICAgICAgICAgLy8gKHdoaWNoIGNhbm5vdCBoYXZlIFJUTCBkaXJlY3Rpb25hbGl0eSkg
d2lsbCBhcHBlYXIgdG8gdGhlIHJpZ2h0IG9mIHRoZSBtYXNrZWQgY2hhcmFjdGVycy4gU2VlIDxy
ZGFyOi8vcHJvYmxlbS83MDI0Mzc1Pi4KICAgICAgICAgCiAgICAgICAgIHN3aXRjaCAodGV4dEJs
b2NrU3R5bGUudGV4dEFsaWduKCkpIHsKLSAgICAgICAgY2FzZSBUQVNUQVJUOgotICAgICAgICBj
YXNlIEpVU1RJRlk6Ci0gICAgICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXRUZXh0QWxpZ24oUklH
SFQpOworICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlN0YXJ0OgorICAgICAgICBjYXNlIFRl
eHRBbGlnbk1vZGU6Okp1c3RpZnk6CisgICAgICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXRUZXh0
QWxpZ24oVGV4dEFsaWduTW9kZTo6UmlnaHQpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgVEFFTkQ6Ci0gICAgICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXRUZXh0QWxpZ24oTEVG
VCk7CisgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6RW5kOgorICAgICAgICAgICAgdGV4dEJs
b2NrU3R5bGUuc2V0VGV4dEFsaWduKFRleHRBbGlnbk1vZGU6OkxlZnQpOwogICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgTEVGVDoKLSAgICAgICAgY2FzZSBSSUdIVDoKLSAgICAgICAg
Y2FzZSBDRU5URVI6Ci0gICAgICAgIGNhc2UgV0VCS0lUX0xFRlQ6Ci0gICAgICAgIGNhc2UgV0VC
S0lUX1JJR0hUOgotICAgICAgICBjYXNlIFdFQktJVF9DRU5URVI6CisgICAgICAgIGNhc2UgVGV4
dEFsaWduTW9kZTo6TGVmdDoKKyAgICAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpSaWdodDoKKyAg
ICAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpDZW50ZXI6CisgICAgICAgIGNhc2UgVGV4dEFsaWdu
TW9kZTo6V2ViS2l0TGVmdDoKKyAgICAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRSaWdo
dDoKKyAgICAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRDZW50ZXI6CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxl
bWVudFNlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFF
bGVtZW50U2Vzc2lvbi5jcHAJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyOSw3ICszMjks
NyBAQCBib29sIE1lZGlhRWxlbWVudFNlc3Npb246OmF1dG9wbGF5UGVybWl0CiAgICAgICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUiwgIlJldHVybmluZyBGQUxTRSBiZWNhdXNlIGVsZW1lbnQg
aGFzIG5vIHJlbmRlcmVyIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYg
KHJlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKSB7CisgICAgaWYgKHJl
bmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKSB7CiAg
ICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIlJldHVybmluZyBGQUxTRSBiZWNhdXNl
IGVsZW1lbnQgaXMgbm90IHZpc2libGUiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
QEAgLTgxMSw3ICs4MTEsNyBAQCBzdGF0aWMgYm9vbCBpc01haW5Db250ZW50Rm9yUHVycG9zZXNP
ZkF1CiAgICAgLy8gRWxlbWVudHMgd2hpY2ggYXJlIGhpZGRlbiBieSBzdHlsZSwgb3IgaGF2ZSBi
ZWVuIHNjcm9sbGVkIG91dCBvZiB2aWV3LCBjYW5ub3QgYmUgbWFpbiBjb250ZW50LgogICAgIC8v
IEJ1dCBlbGVtZW50cyB3aGljaCBoYXZlIGF1ZGlvICYgdmlkZW8gYW5kIGFyZSBhbHJlYWR5IHBs
YXlpbmcgc2hvdWxkIG5vdCBzdG9wIHBsYXlpbmcgYmVjYXVzZQogICAgIC8vIHRoZXkgYXJlIHNj
cm9sbGVkIG9mZiB0aGUgcGFnZS4KLSAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkudmlzaWJpbGl0
eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAh
PSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKHJl
bmRlcmVyLT52aXNpYmxlSW5WaWV3cG9ydFN0YXRlKCkgIT0gVmlzaWJsZUluVmlld3BvcnRTdGF0
ZTo6WWVzICYmICFlbGVtZW50LmlzUGxheWluZygpKQogICAgICAgICByZXR1cm4gZmFsc2U7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1J1YnlFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL1J1YnlFbGVtZW50LmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9SdWJ5RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUz
LDkgKzUzLDkgQEAgUmVmPFJ1YnlFbGVtZW50PiBSdWJ5RWxlbWVudDo6Y3JlYXRlKERvYwogCiBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gUnVieUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mIGluc2VydGlv
blBvc2l0aW9uKQogewotICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gSU5MSU5FKQorICAgIGlm
IChzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OklubGluZSkKICAgICAgICAgcmV0dXJu
IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclJ1YnlBc0lubGluZT4oKnRoaXMsIFdURk1vdmUoc3R5bGUp
KTsKLSAgICBpZiAoc3R5bGUuZGlzcGxheSgpID09IEJMT0NLIHx8IHN0eWxlLmRpc3BsYXkoKSA9
PSBJTkxJTkVfQkxPQ0spCisgICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6
QmxvY2sgfHwgc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpJbmxpbmVCbG9jaykKICAg
ICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclJ1YnlBc0Jsb2NrPigqdGhpcywgV1RG
TW92ZShzdHlsZSkpOwogICAgIHJldHVybiBIVE1MRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKFdURk1vdmUoc3R5bGUpLCBpbnNlcnRpb25Qb3NpdGlvbik7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL1J1YnlUZXh0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9SdWJ5VGV4dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL1J1YnlUZXh0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2
LDcgKzU2LDcgQEAgUmVmPFJ1YnlUZXh0RWxlbWVudD4gUnVieVRleHRFbGVtZW50OjpjcgogUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFJ1YnlUZXh0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYgaW5zZXJ0
aW9uUG9zaXRpb24pCiB7CiAgICAgLy8gUmVuZGVyUnVieVRleHQgcmVxdWlyZXMgaXRzIHBhcmVu
dCB0byBiZSBSZW5kZXJSdWJ5UnVuLgotICAgIGlmIChpc1J1YnkoaW5zZXJ0aW9uUG9zaXRpb24u
cGFyZW50KCkpICYmIHN0eWxlLmRpc3BsYXkoKSA9PSBCTE9DSykKKyAgICBpZiAoaXNSdWJ5KGlu
c2VydGlvblBvc2l0aW9uLnBhcmVudCgpKSAmJiBzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5
cGU6OkJsb2NrKQogICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyUnVieVRleHQ+
KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiAgICAgcmV0dXJuIEhUTUxFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoV1RGTW92ZShzdHlsZSksIGluc2VydGlvblBvc2l0aW9uKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzLmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTA4LDcgKzEwOCw3IEBAIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbEkK
ICAgICBuZXdTdHlsZS0+aW5oZXJpdEZyb20oKnNoYWRvd0hvc3RTdHlsZSk7CiAgICAgbmV3U3R5
bGUtPnNldEZsZXhHcm93KDEpOwogICAgIG5ld1N0eWxlLT5zZXRNaW5XaWR0aChMZW5ndGggeyAw
LCBGaXhlZCB9KTsgLy8gTmVlZGVkIGZvciBjb3JyZWN0IHNocmlua2luZy4KLSAgICBuZXdTdHls
ZS0+c2V0RGlzcGxheShCTE9DSyk7CisgICAgbmV3U3R5bGUtPnNldERpc3BsYXkoRGlzcGxheVR5
cGU6OkJsb2NrKTsKICAgICBuZXdTdHlsZS0+c2V0RGlyZWN0aW9uKExUUik7CiAgICAgLy8gV2Ug
ZG9uJ3Qgd2FudCB0aGUgc2hhZG93IERPTSB0byBiZSBlZGl0YWJsZSwgc28gd2Ugc2V0IHRoaXMg
YmxvY2sgdG8gcmVhZC1vbmx5IGluIGNhc2UgdGhlIGlucHV0IGl0c2VsZiBpcyBlZGl0YWJsZS4K
ICAgICBuZXdTdHlsZS0+c2V0VXNlck1vZGlmeShVc2VyTW9kaWZ5OjpSZWFkT25seSk7CkBAIC0x
OTcsNyArMTk3LDcgQEAgc3RkOjpvcHRpb25hbDxFbGVtZW50U3R5bGU+IFRleHRDb250cm9sUAog
ICAgIGF1dG8gc3R5bGUgPSByZXNvbHZlU3R5bGUoJnBhcmVudFN0eWxlKTsKIAogICAgIGF1dG8m
IGNvbnRyb2xFbGVtZW50ID0gZG93bmNhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KCpj
b250YWluaW5nU2hhZG93Um9vdCgpLT5ob3N0KCkpOwotICAgIHN0eWxlLnJlbmRlclN0eWxlLT5z
ZXREaXNwbGF5KGNvbnRyb2xFbGVtZW50LmlzUGxhY2Vob2xkZXJWaXNpYmxlKCkgPyBCTE9DSyA6
IE5PTkUpOworICAgIHN0eWxlLnJlbmRlclN0eWxlLT5zZXREaXNwbGF5KGNvbnRyb2xFbGVtZW50
LmlzUGxhY2Vob2xkZXJWaXNpYmxlKCkgPyBEaXNwbGF5VHlwZTo6QmxvY2sgOiBEaXNwbGF5VHlw
ZTo6Tm9uZSk7CiAKICAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4oY29udHJvbEVsZW1lbnQp
KSB7CiAgICAgICAgIGF1dG8mIGlucHV0RWxlbWVudCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1l
bnQ+KGNvbnRyb2xFbGVtZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JPdmVybGF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yT3ZlcmxheS5jcHAJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTg2LDkg
KzU4Niw5IEBAIHN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmwKICAgICB9
CiAKICAgICBpZiAobm9kZS0+aXNQc2V1ZG9FbGVtZW50KCkpIHsKLSAgICAgICAgaWYgKG5vZGUt
PnBzZXVkb0lkKCkgPT0gQkVGT1JFKQorICAgICAgICBpZiAobm9kZS0+cHNldWRvSWQoKSA9PSBQ
c2V1ZG9JZDo6QmVmb3JlKQogICAgICAgICAgICAgZWxlbWVudERhdGEtPnNldFBzZXVkb0VsZW1l
bnQoImJlZm9yZSIpOwotICAgICAgICBlbHNlIGlmIChub2RlLT5wc2V1ZG9JZCgpID09IEFGVEVS
KQorICAgICAgICBlbHNlIGlmIChub2RlLT5wc2V1ZG9JZCgpID09IFBzZXVkb0lkOjpBZnRlcikK
ICAgICAgICAgICAgIGVsZW1lbnREYXRhLT5zZXRQc2V1ZG9FbGVtZW50KCJhZnRlciIpOwogICAg
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NB
Z2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDU1NBZ2VudC5jcHAJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MzgsNyArNDM4LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxl
cwogCiAgICAgRWxlbWVudCogb3JpZ2luYWxFbGVtZW50ID0gZWxlbWVudDsKICAgICBQc2V1ZG9J
ZCBlbGVtZW50UHNldWRvSWQgPSBlbGVtZW50LT5wc2V1ZG9JZCgpOwotICAgIGlmIChlbGVtZW50
UHNldWRvSWQpIHsKKyAgICBpZiAoZWxlbWVudFBzZXVkb0lkICE9IFBzZXVkb0lkOjpOb25lKSB7
CiAgICAgICAgIGVsZW1lbnQgPSBkb3duY2FzdDxQc2V1ZG9FbGVtZW50PigqZWxlbWVudCkuaG9z
dEVsZW1lbnQoKTsKICAgICAgICAgaWYgKCFlbGVtZW50KSB7CiAgICAgICAgICAgICBlcnJvclN0
cmluZyA9IEFTQ0lJTGl0ZXJhbCgiUHNldWRvIGVsZW1lbnQgaGFzIG5vIHBhcmVudCIpOwpAQCAt
NDU1LDcgKzQ1NSw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXMK
ICAgICAgICAgLy8gUHNldWRvIGVsZW1lbnRzLgogICAgICAgICBpZiAoIWluY2x1ZGVQc2V1ZG8g
fHwgKmluY2x1ZGVQc2V1ZG8pIHsKICAgICAgICAgICAgIGF1dG8gcHNldWRvRWxlbWVudHMgPSBK
U09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UHNldWRvSWRNYXRjaGVzPjo6
Y3JlYXRlKCk7Ci0gICAgICAgICAgICBmb3IgKFBzZXVkb0lkIHBzZXVkb0lkID0gRklSU1RfUFVC
TElDX1BTRVVET0lEOyBwc2V1ZG9JZCA8IEFGVEVSX0xBU1RfSU5URVJOQUxfUFNFVURPSUQ7IHBz
ZXVkb0lkID0gc3RhdGljX2Nhc3Q8UHNldWRvSWQ+KHBzZXVkb0lkICsgMSkpIHsKKyAgICAgICAg
ICAgIGZvciAoUHNldWRvSWQgcHNldWRvSWQgPSBQc2V1ZG9JZDo6Rmlyc3RQdWJsaWNQc2V1ZG9J
ZDsgcHNldWRvSWQgPCBQc2V1ZG9JZDo6QWZ0ZXJMYXN0SW50ZXJuYWxQc2V1ZG9JZDsgcHNldWRv
SWQgPSBzdGF0aWNfY2FzdDxQc2V1ZG9JZD4oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBzZXVkb0lk
KSArIDEpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBtYXRjaGVkUnVsZXMgPSBzdHlsZVJlc29s
dmVyLnBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQsIHBzZXVkb0lkLCBTdHlsZVJl
c29sdmVyOjpBbGxDU1NSdWxlcyk7CiAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaGVkUnVsZXMu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gbWF0Y2hlcyA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6UHNldWRvSWRNYXRjaGVzOjpjcmVhdGUoKQpAQCAtNDc3LDcgKzQ3
Nyw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXMKICAgICAgICAg
ICAgICAgICBTdHlsZVJlc29sdmVyJiBwYXJlbnRTdHlsZVJlc29sdmVyID0gcGFyZW50RWxlbWVu
dC0+c3R5bGVSZXNvbHZlcigpOwogICAgICAgICAgICAgICAgIGF1dG8gcGFyZW50TWF0Y2hlZFJ1
bGVzID0gcGFyZW50U3R5bGVSZXNvbHZlci5zdHlsZVJ1bGVzRm9yRWxlbWVudChwYXJlbnRFbGVt
ZW50LCBTdHlsZVJlc29sdmVyOjpBbGxDU1NSdWxlcyk7CiAgICAgICAgICAgICAgICAgYXV0byBl
bnRyeSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeTo6Y3Jl
YXRlKCkKLSAgICAgICAgICAgICAgICAgICAgLnNldE1hdGNoZWRDU1NSdWxlcyhidWlsZEFycmF5
Rm9yTWF0Y2hlZFJ1bGVMaXN0KHBhcmVudE1hdGNoZWRSdWxlcywgc3R5bGVSZXNvbHZlciwgKnBh
cmVudEVsZW1lbnQsIE5PUFNFVURPKSkKKyAgICAgICAgICAgICAgICAgICAgLnNldE1hdGNoZWRD
U1NSdWxlcyhidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KHBhcmVudE1hdGNoZWRSdWxlcywg
c3R5bGVSZXNvbHZlciwgKnBhcmVudEVsZW1lbnQsIFBzZXVkb0lkOjpOb25lKSkKICAgICAgICAg
ICAgICAgICAgICAgLnJlbGVhc2UoKTsKICAgICAgICAgICAgICAgICBpZiAoaXM8U3R5bGVkRWxl
bWVudD4oKnBhcmVudEVsZW1lbnQpICYmIGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KCpwYXJlbnRF
bGVtZW50KS5jc3NvbVN0eWxlKCkubGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0
byYgc3R5bGVTaGVldCA9IGFzSW5zcGVjdG9yU3R5bGVTaGVldChkb3duY2FzdDxTdHlsZWRFbGVt
ZW50PigqcGFyZW50RWxlbWVudCkpOwpAQCAtODkzLDcgKzg5Myw3IEBAIFJlZlB0cjxKU09OOjpB
cnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2wKICAgICBhdXRvIHJlc3VsdCA9IEpTT046OkFycmF5
T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+OjpjcmVhdGUoKTsKIAogICAg
IFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0IGNvbnRleHQoU2VsZWN0b3JDaGVja2Vy
OjpNb2RlOjpDb2xsZWN0aW5nUnVsZXMpOwotICAgIGNvbnRleHQucHNldWRvSWQgPSBwc2V1ZG9J
ZCA/IHBzZXVkb0lkIDogZWxlbWVudC5wc2V1ZG9JZCgpOworICAgIGNvbnRleHQucHNldWRvSWQg
PSBwc2V1ZG9JZCAhPSBQc2V1ZG9JZDo6Tm9uZSA/IHBzZXVkb0lkIDogZWxlbWVudC5wc2V1ZG9J
ZCgpOwogICAgIFNlbGVjdG9yQ2hlY2tlciBzZWxlY3RvckNoZWNrZXIoZWxlbWVudC5kb2N1bWVu
dCgpKTsKIAogICAgIGZvciAoYXV0byYgbWF0Y2hlZFJ1bGUgOiBtYXRjaGVkUnVsZXMpIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM3Miwx
MCArMTM3MiwxMCBAQCBzdGF0aWMgU3RyaW5nIGRvY3VtZW50QmFzZVVSTFN0cmluZyhEb2N1CiBz
dGF0aWMgYm9vbCBwc2V1ZG9FbGVtZW50VHlwZShQc2V1ZG9JZCBwc2V1ZG9JZCwgSW5zcGVjdG9y
OjpQcm90b2NvbDo6RE9NOjpQc2V1ZG9UeXBlKiB0eXBlKQogewogICAgIHN3aXRjaCAocHNldWRv
SWQpIHsKLSAgICBjYXNlIEJFRk9SRToKKyAgICBjYXNlIFBzZXVkb0lkOjpCZWZvcmU6CiAgICAg
ICAgICp0eXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpQc2V1ZG9UeXBlOjpCZWZvcmU7
CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgQUZURVI6CisgICAgY2FzZSBQc2V1ZG9J
ZDo6QWZ0ZXI6CiAgICAgICAgICp0eXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpQc2V1
ZG9UeXBlOjpBZnRlcjsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKQEAgLTE1
MDAsNyArMTUwMCw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+IEluc3AK
ICAgICAgICAgaWYgKHN0YXRlICE9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Q3VzdG9tRWxl
bWVudFN0YXRlOjpCdWlsdGluKQogICAgICAgICAgICAgdmFsdWUtPnNldEN1c3RvbUVsZW1lbnRT
dGF0ZShzdGF0ZSk7CiAKLSAgICAgICAgaWYgKGVsZW1lbnQucHNldWRvSWQoKSkgeworICAgICAg
ICBpZiAoZWxlbWVudC5wc2V1ZG9JZCgpICE9IFBzZXVkb0lkOjpOb25lKSB7CiAgICAgICAgICAg
ICBJbnNwZWN0b3I6OlByb3RvY29sOjpET006OlBzZXVkb1R5cGUgcHNldWRvVHlwZTsKICAgICAg
ICAgICAgIGlmIChwc2V1ZG9FbGVtZW50VHlwZShlbGVtZW50LnBzZXVkb0lkKCksICZwc2V1ZG9U
eXBlKSkKICAgICAgICAgICAgICAgICB2YWx1ZS0+c2V0UHNldWRvVHlwZShwc2V1ZG9UeXBlKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTkxLDkgKzE5MSw5IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpM
YXllclRyZWU6OkxheWUKICAgICBpZiAoaXNBbm9ueW1vdXMgJiYgIXJlbmRlcmVyLT5pc1JlbmRl
clZpZXcoKSkgewogICAgICAgICBsYXllck9iamVjdC0+c2V0SXNBbm9ueW1vdXModHJ1ZSk7CiAg
ICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOwotICAg
ICAgICBpZiAoc3R5bGUuc3R5bGVUeXBlKCkgPT0gRklSU1RfTEVUVEVSKQorICAgICAgICBpZiAo
c3R5bGUuc3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6OkZpcnN0TGV0dGVyKQogICAgICAgICAgICAg
bGF5ZXJPYmplY3QtPnNldFBzZXVkb0VsZW1lbnQoImZpcnN0LWxldHRlciIpOwotICAgICAgICBl
bHNlIGlmIChzdHlsZS5zdHlsZVR5cGUoKSA9PSBGSVJTVF9MSU5FKQorICAgICAgICBlbHNlIGlm
IChzdHlsZS5zdHlsZVR5cGUoKSA9PSBQc2V1ZG9JZDo6Rmlyc3RMaW5lKQogICAgICAgICAgICAg
bGF5ZXJPYmplY3QtPnNldFBzZXVkb0VsZW1lbnQoImZpcnN0LWxpbmUiKTsKICAgICB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcAko
cmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDI4ICsxNTIsMjggQEAgYm9vbCBCb3g6
OmlzRGVzY2VuZGFudE9mKENvbnRhaW5lciYgY29udAogCiBib29sIEJveDo6aXNJbmxpbmVCbG9j
a0JveCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3R5bGUuZGlzcGxheSgpID09IElOTElORV9C
TE9DSzsKKyAgICByZXR1cm4gbV9zdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OklubGlu
ZUJsb2NrOwogfQogCiBib29sIEJveDo6aXNCbG9ja0xldmVsQm94KCkgY29uc3QKIHsKICAgICAv
LyBCbG9jayBsZXZlbCBlbGVtZW50cyBnZW5lcmF0ZSBibG9jayBsZXZlbCBib3hlcy4KICAgICBh
dXRvIGRpc3BsYXkgPSBtX3N0eWxlLmRpc3BsYXkoKTsKLSAgICByZXR1cm4gZGlzcGxheSA9PSBC
TE9DSyB8fCBkaXNwbGF5ID09IExJU1RfSVRFTSB8fCBkaXNwbGF5ID09IFRBQkxFOworICAgIHJl
dHVybiBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpCbG9jayB8fCBkaXNwbGF5ID09IERpc3BsYXlU
eXBlOjpMaXN0SXRlbSB8fCBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpUYWJsZTsKIH0KIAogYm9v
bCBCb3g6OmlzSW5saW5lTGV2ZWxCb3goKSBjb25zdAogewogICAgIC8vIElubGluZSBsZXZlbCBl
bGVtZW50cyBnZW5lcmF0ZSBpbmxpbmUgbGV2ZWwgYm94ZXMuCiAgICAgYXV0byBkaXNwbGF5ID0g
bV9zdHlsZS5kaXNwbGF5KCk7Ci0gICAgcmV0dXJuIGRpc3BsYXkgPT0gSU5MSU5FIHx8IGRpc3Bs
YXkgPT0gSU5MSU5FX0JMT0NLIHx8IGRpc3BsYXkgPT0gSU5MSU5FX1RBQkxFOworICAgIHJldHVy
biBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpJbmxpbmUgfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlw
ZTo6SW5saW5lQmxvY2sgfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lVGFibGU7CiB9
CiAKIGJvb2wgQm94Ojppc0Jsb2NrQ29udGFpbmVyQm94KCkgY29uc3QKIHsKICAgICAvLyBJbmxp
bmUgbGV2ZWwgZWxlbWVudHMgZ2VuZXJhdGUgaW5saW5lIGxldmVsIGJveGVzLgogICAgIGF1dG8g
ZGlzcGxheSA9IG1fc3R5bGUuZGlzcGxheSgpOwotICAgIHJldHVybiBkaXNwbGF5ID09IEJMT0NL
IHx8IGRpc3BsYXkgPT0gTElTVF9JVEVNIHx8IGRpc3BsYXkgPT0gSU5MSU5FX0JMT0NLIHx8IGRp
c3BsYXkgPT0gVEFCTEVfQ0VMTCB8fCBkaXNwbGF5ID09IFRBQkxFX0NBUFRJT047IC8vIFRPRE8g
JiYgIXJlcGxhY2VkIGVsZW1lbnQKKyAgICByZXR1cm4gZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6
QmxvY2sgfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6TGlzdEl0ZW0gfHwgZGlzcGxheSA9PSBE
aXNwbGF5VHlwZTo6SW5saW5lQmxvY2sgfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6VGFibGVD
ZWxsIHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OlRhYmxlQ2FwdGlvbjsgLy8gVE9ETyAmJiAh
cmVwbGFjZWQgZWxlbWVudAogfQogCiBib29sIEJveDo6aXNJbml0aWFsQ29udGFpbmluZ0Jsb2Nr
KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHJldmlzaW9u
IDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQxMCw3ICsxNDEwLDcgQEAgc3RkOjpvcHRpb25hbDxDdXJzb3I+IEV2ZW50
SGFuZGxlcjo6c2VsZQogICAgIGNvbnN0IEN1cnNvciYgaUJlYW0gPSBob3Jpem9udGFsVGV4dCA/
IGlCZWFtQ3Vyc29yKCkgOiB2ZXJ0aWNhbFRleHRDdXJzb3IoKTsKIAogI2lmIEVOQUJMRShDVVJT
T1JfVklTSUJJTElUWSkKLSAgICBpZiAoc3R5bGUgJiYgc3R5bGUtPmN1cnNvclZpc2liaWxpdHko
KSA9PSBDdXJzb3JWaXNpYmlsaXR5QXV0b0hpZGUpCisgICAgaWYgKHN0eWxlICYmIHN0eWxlLT5j
dXJzb3JWaXNpYmlsaXR5KCkgPT0gQ3Vyc29yVmlzaWJpbGl0eTo6QXV0b0hpZGUpCiAgICAgICAg
IHN0YXJ0QXV0b0hpZGVDdXJzb3JUaW1lcigpOwogICAgIGVsc2UKICAgICAgICAgY2FuY2VsQXV0
b0hpZGVDdXJzb3JUaW1lcigpOwpAQCAtMTQ3Myw4ICsxNDczLDggQEAgc3RkOjpvcHRpb25hbDxD
dXJzb3I+IEV2ZW50SGFuZGxlcjo6c2VsZQogICAgICAgICAmJiAhbV9jYXB0dXJpbmdNb3VzZUV2
ZW50c0VsZW1lbnQpCiAgICAgICAgIHJldHVybiBpQmVhbTsKIAotICAgIHN3aXRjaCAoc3R5bGUg
PyBzdHlsZS0+Y3Vyc29yKCkgOiBDdXJzb3JBdXRvKSB7Ci0gICAgY2FzZSBDdXJzb3JBdXRvOiB7
CisgICAgc3dpdGNoIChzdHlsZSA/IHN0eWxlLT5jdXJzb3IoKSA6IEN1cnNvclR5cGU6OkF1dG8p
IHsKKyAgICBjYXNlIEN1cnNvclR5cGU6OkF1dG86IHsKICAgICAgICAgYm9vbCBlZGl0YWJsZSA9
IG5vZGUtPmhhc0VkaXRhYmxlU3R5bGUoKTsKIAogICAgICAgICBpZiAodXNlSGFuZEN1cnNvcihu
b2RlLCByZXN1bHQuaXNPdmVyTGluaygpLCBzaGlmdEtleSkpCkBAIC0xNDkyLDc1ICsxNDkyLDc1
IEBAIHN0ZDo6b3B0aW9uYWw8Q3Vyc29yPiBFdmVudEhhbmRsZXI6OnNlbGUKICAgICAgICAgICAg
IHJldHVybiBpQmVhbTsKICAgICAgICAgcmV0dXJuIHBvaW50ZXJDdXJzb3IoKTsKICAgICB9Ci0g
ICAgY2FzZSBDdXJzb3JEZWZhdWx0OgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6RGVmYXVsdDoKICAg
ICAgICAgcmV0dXJuIHBvaW50ZXJDdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNvck5vbmU6CisgICAg
Y2FzZSBDdXJzb3JUeXBlOjpOb25lOgogICAgICAgICByZXR1cm4gbm9uZUN1cnNvcigpOwotICAg
IGNhc2UgQ3Vyc29yQ29udGV4dE1lbnU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpDb250ZXh0TWVu
dToKICAgICAgICAgcmV0dXJuIGNvbnRleHRNZW51Q3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JI
ZWxwOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6SGVscDoKICAgICAgICAgcmV0dXJuIGhlbHBDdXJz
b3IoKTsKLSAgICBjYXNlIEN1cnNvclBvaW50ZXI6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpQb2lu
dGVyOgogICAgICAgICByZXR1cm4gaGFuZEN1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29yUHJvZ3Jl
c3M6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpQcm9ncmVzczoKICAgICAgICAgcmV0dXJuIHByb2dy
ZXNzQ3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JXYWl0OgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6
V2FpdDoKICAgICAgICAgcmV0dXJuIHdhaXRDdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNvckNlbGw6
CisgICAgY2FzZSBDdXJzb3JUeXBlOjpDZWxsOgogICAgICAgICByZXR1cm4gY2VsbEN1cnNvcigp
OwotICAgIGNhc2UgQ3Vyc29yQ3Jvc3NoYWlyOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6Q3Jvc3No
YWlyOgogICAgICAgICByZXR1cm4gY3Jvc3NDdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNvclRleHQ6
CisgICAgY2FzZSBDdXJzb3JUeXBlOjpUZXh0OgogICAgICAgICByZXR1cm4gaUJlYW1DdXJzb3Io
KTsKLSAgICBjYXNlIEN1cnNvclZlcnRpY2FsVGV4dDoKKyAgICBjYXNlIEN1cnNvclR5cGU6OlZl
cnRpY2FsVGV4dDoKICAgICAgICAgcmV0dXJuIHZlcnRpY2FsVGV4dEN1cnNvcigpOwotICAgIGNh
c2UgQ3Vyc29yQWxpYXM6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpBbGlhczoKICAgICAgICAgcmV0
dXJuIGFsaWFzQ3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JDb3B5OgorICAgIGNhc2UgQ3Vyc29y
VHlwZTo6Q29weToKICAgICAgICAgcmV0dXJuIGNvcHlDdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNv
ck1vdmU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpNb3ZlOgogICAgICAgICByZXR1cm4gbW92ZUN1
cnNvcigpOwotICAgIGNhc2UgQ3Vyc29yTm9Ecm9wOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6Tm9E
cm9wOgogICAgICAgICByZXR1cm4gbm9Ecm9wQ3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JOb3RB
bGxvd2VkOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6Tm90QWxsb3dlZDoKICAgICAgICAgcmV0dXJu
IG5vdEFsbG93ZWRDdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNvckdyYWI6CisgICAgY2FzZSBDdXJz
b3JUeXBlOjpHcmFiOgogICAgICAgICByZXR1cm4gZ3JhYkN1cnNvcigpOwotICAgIGNhc2UgQ3Vy
c29yR3JhYmJpbmc6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpHcmFiYmluZzoKICAgICAgICAgcmV0
dXJuIGdyYWJiaW5nQ3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JFUmVzaXplOgorICAgIGNhc2Ug
Q3Vyc29yVHlwZTo6RVJlc2l6ZToKICAgICAgICAgcmV0dXJuIGVhc3RSZXNpemVDdXJzb3IoKTsK
LSAgICBjYXNlIEN1cnNvck5SZXNpemU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpOUmVzaXplOgog
ICAgICAgICByZXR1cm4gbm9ydGhSZXNpemVDdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNvck5lUmVz
aXplOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6TkVSZXNpemU6CiAgICAgICAgIHJldHVybiBub3J0
aEVhc3RSZXNpemVDdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNvck53UmVzaXplOgorICAgIGNhc2Ug
Q3Vyc29yVHlwZTo6TldSZXNpemU6CiAgICAgICAgIHJldHVybiBub3J0aFdlc3RSZXNpemVDdXJz
b3IoKTsKLSAgICBjYXNlIEN1cnNvclNSZXNpemU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpTUmVz
aXplOgogICAgICAgICByZXR1cm4gc291dGhSZXNpemVDdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNv
clNlUmVzaXplOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6U0VSZXNpemU6CiAgICAgICAgIHJldHVy
biBzb3V0aEVhc3RSZXNpemVDdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNvclN3UmVzaXplOgorICAg
IGNhc2UgQ3Vyc29yVHlwZTo6U1dSZXNpemU6CiAgICAgICAgIHJldHVybiBzb3V0aFdlc3RSZXNp
emVDdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNvcldSZXNpemU6CisgICAgY2FzZSBDdXJzb3JUeXBl
OjpXUmVzaXplOgogICAgICAgICByZXR1cm4gd2VzdFJlc2l6ZUN1cnNvcigpOwotICAgIGNhc2Ug
Q3Vyc29yRXdSZXNpemU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpFV1Jlc2l6ZToKICAgICAgICAg
cmV0dXJuIGVhc3RXZXN0UmVzaXplQ3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JOc1Jlc2l6ZToK
KyAgICBjYXNlIEN1cnNvclR5cGU6Ok5TUmVzaXplOgogICAgICAgICByZXR1cm4gbm9ydGhTb3V0
aFJlc2l6ZUN1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29yTmVzd1Jlc2l6ZToKKyAgICBjYXNlIEN1
cnNvclR5cGU6Ok5FU1dSZXNpemU6CiAgICAgICAgIHJldHVybiBub3J0aEVhc3RTb3V0aFdlc3RS
ZXNpemVDdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNvck53c2VSZXNpemU6CisgICAgY2FzZSBDdXJz
b3JUeXBlOjpOV1NFUmVzaXplOgogICAgICAgICByZXR1cm4gbm9ydGhXZXN0U291dGhFYXN0UmVz
aXplQ3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JDb2xSZXNpemU6CisgICAgY2FzZSBDdXJzb3JU
eXBlOjpDb2x1bW5SZXNpemU6CiAgICAgICAgIHJldHVybiBjb2x1bW5SZXNpemVDdXJzb3IoKTsK
LSAgICBjYXNlIEN1cnNvclJvd1Jlc2l6ZToKKyAgICBjYXNlIEN1cnNvclR5cGU6OlJvd1Jlc2l6
ZToKICAgICAgICAgcmV0dXJuIHJvd1Jlc2l6ZUN1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29yQWxs
U2Nyb2xsOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6QWxsU2Nyb2xsOgogICAgICAgICByZXR1cm4g
bW92ZUN1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29yWm9vbUluOgorICAgIGNhc2UgQ3Vyc29yVHlw
ZTo6Wm9vbUluOgogICAgICAgICByZXR1cm4gem9vbUluQ3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJz
b3Jab29tT3V0OgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6Wm9vbU91dDoKICAgICAgICAgcmV0dXJu
IHpvb21PdXRDdXJzb3IoKTsKICAgICB9CiAgICAgcmV0dXJuIHBvaW50ZXJDdXJzb3IoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzg0LDcgKzM4NCw3IEBAIFN0cmlu
ZyBGcmFtZTo6c2VhcmNoRm9yTGFiZWxzQWJvdmVDZWxsKGMKICAgICAgICAgLy8gc2VhcmNoIHdp
dGhpbiB0aGUgYWJvdmUgY2VsbCB3ZSBmb3VuZCBmb3IgYSBtYXRjaAogICAgICAgICBzaXplX3Qg
bGVuZ3RoU2VhcmNoZWQgPSAwOyAgICAKICAgICAgICAgZm9yIChUZXh0KiB0ZXh0Tm9kZSA9IFRl
eHROb2RlVHJhdmVyc2FsOjpmaXJzdFdpdGhpbigqYWJvdmVDZWxsKTsgdGV4dE5vZGU7IHRleHRO
b2RlID0gVGV4dE5vZGVUcmF2ZXJzYWw6Om5leHQoKnRleHROb2RlLCBhYm92ZUNlbGwpKSB7Ci0g
ICAgICAgICAgICBpZiAoIXRleHROb2RlLT5yZW5kZXJlcigpIHx8IHRleHROb2RlLT5yZW5kZXJl
cigpLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgICAgICAgICAgaWYgKCF0
ZXh0Tm9kZS0+cmVuZGVyZXIoKSB8fCB0ZXh0Tm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS52aXNp
YmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIC8vIEZvciBlYWNoIHRleHQgY2h1bmssIHJ1biB0aGUgcmVnZXhwCiAg
ICAgICAgICAgICBTdHJpbmcgbm9kZVN0cmluZyA9IHRleHROb2RlLT5kYXRhKCk7CkBAIC00NDEs
NyArNDQxLDcgQEAgU3RyaW5nIEZyYW1lOjpzZWFyY2hGb3JMYWJlbHNCZWZvcmVFbGVtZQogICAg
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBz
ZWFyY2hlZENlbGxBYm92ZSA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAobi0+aXNUZXh0Tm9k
ZSgpICYmIG4tPnJlbmRlcmVyKCkgJiYgbi0+cmVuZGVyZXIoKS0+c3R5bGUoKS52aXNpYmlsaXR5
KCkgPT0gVklTSUJMRSkgeworICAgICAgICB9IGVsc2UgaWYgKG4tPmlzVGV4dE5vZGUoKSAmJiBu
LT5yZW5kZXJlcigpICYmIG4tPnJlbmRlcmVyKCktPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZp
c2liaWxpdHk6OlZpc2libGUpIHsKICAgICAgICAgICAgIC8vIEZvciBlYWNoIHRleHQgY2h1bmss
IHJ1biB0aGUgcmVnZXhwCiAgICAgICAgICAgICBTdHJpbmcgbm9kZVN0cmluZyA9IG4tPm5vZGVW
YWx1ZSgpOwogICAgICAgICAgICAgLy8gYWRkIDEwMCBmb3Igc2xvcCwgdG8gbWFrZSBpdCBtb3Jl
IGxpa2VseSB0aGF0IHdlJ2xsIHNlYXJjaCB3aG9sZSBub2RlcwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDksMTcgKzU0OSwxNyBAQCBSZWY8U2Ny
b2xsYmFyPiBGcmFtZVZpZXc6OmNyZWF0ZVNjcm9sbGJhCiAKICAgICAvLyBUcnkgdGhlIDxib2R5
PiBlbGVtZW50IGZpcnN0IGFzIGEgc2Nyb2xsYmFyIHNvdXJjZS4KICAgICBIVE1MRWxlbWVudCog
Ym9keSA9IGRvYyA/IGRvYy0+Ym9keU9yRnJhbWVzZXQoKSA6IG51bGxwdHI7Ci0gICAgaWYgKGJv
ZHkgJiYgYm9keS0+cmVuZGVyZXIoKSAmJiBib2R5LT5yZW5kZXJlcigpLT5zdHlsZSgpLmhhc1Bz
ZXVkb1N0eWxlKFNDUk9MTEJBUikpCisgICAgaWYgKGJvZHkgJiYgYm9keS0+cmVuZGVyZXIoKSAm
JiBib2R5LT5yZW5kZXJlcigpLT5zdHlsZSgpLmhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkOjpTY3Jv
bGxiYXIpKQogICAgICAgICByZXR1cm4gUmVuZGVyU2Nyb2xsYmFyOjpjcmVhdGVDdXN0b21TY3Jv
bGxiYXIoKnRoaXMsIG9yaWVudGF0aW9uLCBib2R5KTsKICAgICAKICAgICAvLyBJZiB0aGUgPGJv
ZHk+IGRpZG4ndCBoYXZlIGEgY3VzdG9tIHN0eWxlLCB0aGVuIHRoZSByb290IGVsZW1lbnQgbWln
aHQuCiAgICAgRWxlbWVudCogZG9jRWxlbWVudCA9IGRvYyA/IGRvYy0+ZG9jdW1lbnRFbGVtZW50
KCkgOiBudWxscHRyOwotICAgIGlmIChkb2NFbGVtZW50ICYmIGRvY0VsZW1lbnQtPnJlbmRlcmVy
KCkgJiYgZG9jRWxlbWVudC0+cmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShTQ1JP
TExCQVIpKQorICAgIGlmIChkb2NFbGVtZW50ICYmIGRvY0VsZW1lbnQtPnJlbmRlcmVyKCkgJiYg
ZG9jRWxlbWVudC0+cmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6
U2Nyb2xsYmFyKSkKICAgICAgICAgcmV0dXJuIFJlbmRlclNjcm9sbGJhcjo6Y3JlYXRlQ3VzdG9t
U2Nyb2xsYmFyKCp0aGlzLCBvcmllbnRhdGlvbiwgZG9jRWxlbWVudCk7Ci0gICAgICAgIAorCiAg
ICAgLy8gSWYgd2UgaGF2ZSBhbiBvd25pbmcgaWZyYW1lL2ZyYW1lIGVsZW1lbnQsIHRoZW4gaXQg
Y2FuIHNldCB0aGUgY3VzdG9tIHNjcm9sbGJhciBhbHNvLgogICAgIFJlbmRlcldpZGdldCogZnJh
bWVSZW5kZXJlciA9IGZyYW1lKCkub3duZXJSZW5kZXJlcigpOwotICAgIGlmIChmcmFtZVJlbmRl
cmVyICYmIGZyYW1lUmVuZGVyZXItPnN0eWxlKCkuaGFzUHNldWRvU3R5bGUoU0NST0xMQkFSKSkK
KyAgICBpZiAoZnJhbWVSZW5kZXJlciAmJiBmcmFtZVJlbmRlcmVyLT5zdHlsZSgpLmhhc1BzZXVk
b1N0eWxlKFBzZXVkb0lkOjpTY3JvbGxiYXIpKQogICAgICAgICByZXR1cm4gUmVuZGVyU2Nyb2xs
YmFyOjpjcmVhdGVDdXN0b21TY3JvbGxiYXIoKnRoaXMsIG9yaWVudGF0aW9uLCBudWxscHRyLCAm
ZnJhbWUoKSk7CiAgICAgCiAgICAgLy8gTm9ib2R5IHNldCBhIGN1c3RvbSBzdHlsZSwgc28gd2Ug
anVzdCB1c2UgYSBuYXRpdmUgc2Nyb2xsYmFyLgpAQCAtMzYwNCw3ICszNjA0LDcgQEAgZmxvYXQg
RnJhbWVWaWV3OjphZGp1c3RTY3JvbGxTdGVwRm9yRml4ZQogICAgIGZsb2F0IGJvdHRvbU9ic2N1
cmVkQXJlYSA9IDA7CiAgICAgZm9yIChjb25zdCBhdXRvJiBwb3NpdGlvbmVkT2JqZWN0IDogKnBv
c2l0aW9uZWRPYmplY3RzKSB7CiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHBv
c2l0aW9uZWRPYmplY3QtPnN0eWxlKCk7Ci0gICAgICAgIGlmIChzdHlsZS5wb3NpdGlvbigpICE9
IFBvc2l0aW9uVHlwZTo6Rml4ZWQgfHwgc3R5bGUudmlzaWJpbGl0eSgpID09IEhJRERFTiB8fCAh
c3R5bGUub3BhY2l0eSgpKQorICAgICAgICBpZiAoc3R5bGUucG9zaXRpb24oKSAhPSBQb3NpdGlv
blR5cGU6OkZpeGVkIHx8IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4g
fHwgIXN0eWxlLm9wYWNpdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIEZs
b2F0UXVhZCBjb250ZW50UXVhZCA9IHBvc2l0aW9uZWRPYmplY3QtPmFic29sdXRlQ29udGVudFF1
YWQoKTsKQEAgLTM4MTMsNyArMzgxMyw3IEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxD
b3JuZXIoKQogICAgICAgICBFbGVtZW50KiBib2R5ID0gZG9jID8gZG9jLT5ib2R5T3JGcmFtZXNl
dCgpIDogbnVsbHB0cjsKICAgICAgICAgaWYgKGJvZHkgJiYgYm9keS0+cmVuZGVyZXIoKSkgewog
ICAgICAgICAgICAgcmVuZGVyZXIgPSBib2R5LT5yZW5kZXJlcigpOwotICAgICAgICAgICAgY29y
bmVyU3R5bGUgPSByZW5kZXJlci0+Z2V0VW5jYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9TdHlsZVJl
cXVlc3QoU0NST0xMQkFSX0NPUk5FUiksICZyZW5kZXJlci0+c3R5bGUoKSk7CisgICAgICAgICAg
ICBjb3JuZXJTdHlsZSA9IHJlbmRlcmVyLT5nZXRVbmNhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb1N0
eWxlUmVxdWVzdChQc2V1ZG9JZDo6U2Nyb2xsYmFyQ29ybmVyKSwgJnJlbmRlcmVyLT5zdHlsZSgp
KTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKCFjb3JuZXJTdHlsZSkgewpAQCAt
MzgyMSwxNCArMzgyMSwxNCBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlU2Nyb2xsQ29ybmVyKCkK
ICAgICAgICAgICAgIEVsZW1lbnQqIGRvY0VsZW1lbnQgPSBkb2MgPyBkb2MtPmRvY3VtZW50RWxl
bWVudCgpIDogbnVsbHB0cjsKICAgICAgICAgICAgIGlmIChkb2NFbGVtZW50ICYmIGRvY0VsZW1l
bnQtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgICAgICByZW5kZXJlciA9IGRvY0VsZW1lbnQt
PnJlbmRlcmVyKCk7Ci0gICAgICAgICAgICAgICAgY29ybmVyU3R5bGUgPSByZW5kZXJlci0+Z2V0
VW5jYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9TdHlsZVJlcXVlc3QoU0NST0xMQkFSX0NPUk5FUiks
ICZyZW5kZXJlci0+c3R5bGUoKSk7CisgICAgICAgICAgICAgICAgY29ybmVyU3R5bGUgPSByZW5k
ZXJlci0+Z2V0VW5jYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9TdHlsZVJlcXVlc3QoUHNldWRvSWQ6
OlNjcm9sbGJhckNvcm5lciksICZyZW5kZXJlci0+c3R5bGUoKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmICghY29ybmVyU3R5bGUpIHsKICAgICAgICAg
ICAgIC8vIElmIHdlIGhhdmUgYW4gb3duaW5nIGlmcmFtZS9mcmFtZSBlbGVtZW50LCB0aGVuIGl0
IGNhbiBzZXQgdGhlIGN1c3RvbSBzY3JvbGxiYXIgYWxzby4KICAgICAgICAgICAgIGlmIChSZW5k
ZXJXaWRnZXQqIHJlbmRlcmVyID0gZnJhbWUoKS5vd25lclJlbmRlcmVyKCkpCi0gICAgICAgICAg
ICAgICAgY29ybmVyU3R5bGUgPSByZW5kZXJlci0+Z2V0VW5jYWNoZWRQc2V1ZG9TdHlsZShQc2V1
ZG9TdHlsZVJlcXVlc3QoU0NST0xMQkFSX0NPUk5FUiksICZyZW5kZXJlci0+c3R5bGUoKSk7Cisg
ICAgICAgICAgICAgICAgY29ybmVyU3R5bGUgPSByZW5kZXJlci0+Z2V0VW5jYWNoZWRQc2V1ZG9T
dHlsZShQc2V1ZG9TdHlsZVJlcXVlc3QoUHNldWRvSWQ6OlNjcm9sbGJhckNvcm5lciksICZyZW5k
ZXJlci0+c3R5bGUoKSk7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCShyZXZpc2lvbiAyMzIxMDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3IEBAIGRvdWJsZSBBbmltYXRpb25CYXNlOjpkdXJh
dGlvbigpIGNvbnN0CiAKIGJvb2wgQW5pbWF0aW9uQmFzZTo6cGxheVN0YXRlUGxheWluZygpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fYW5pbWF0aW9uLT5wbGF5U3RhdGUoKSA9PSBBbmltUGxheVN0
YXRlUGxheWluZzsKKyAgICByZXR1cm4gbV9hbmltYXRpb24tPnBsYXlTdGF0ZSgpID09IEFuaW1h
dGlvblBsYXlTdGF0ZTo6UGxheWluZzsKIH0KIAogYm9vbCBBbmltYXRpb25CYXNlOjphbmltYXRp
b25zTWF0Y2goY29uc3QgQW5pbWF0aW9uJiBhbmltYXRpb24pIGNvbnN0CkBAIC01NTIsNyArNTUy
LDcgQEAgdm9pZCBBbmltYXRpb25CYXNlOjpmaXJlQW5pbWF0aW9uRXZlbnRzSQogICAgIH0KIH0K
IAotdm9pZCBBbmltYXRpb25CYXNlOjp1cGRhdGVQbGF5U3RhdGUoRUFuaW1QbGF5U3RhdGUgcGxh
eVN0YXRlKQordm9pZCBBbmltYXRpb25CYXNlOjp1cGRhdGVQbGF5U3RhdGUoQW5pbWF0aW9uUGxh
eVN0YXRlIHBsYXlTdGF0ZSkKIHsKICAgICBpZiAoIW1fY29tcG9zaXRlQW5pbWF0aW9uKQogICAg
ICAgICByZXR1cm47CkBAIC01NjAsNyArNTYwLDcgQEAgdm9pZCBBbmltYXRpb25CYXNlOjp1cGRh
dGVQbGF5U3RhdGUoRUFuaQogICAgIC8vIFdoZW4gd2UgZ2V0IGhlcmUsIHdlIGNhbiBoYXZlIG9u
ZSBvZiA0IGRlc2lyZWQgc3RhdGVzOiBydW5uaW5nLCBwYXVzZWQsIHN1c3BlbmRlZCwgcGF1c2Vk
ICYgc3VzcGVuZGVkLgogICAgIC8vIFRoZSBzdGF0ZSBtYWNoaW5lIGNhbiBiZSBpbiBvbmUgb2Yg
dHdvIHN0YXRlczogcnVubmluZywgcGF1c2VkLgogICAgIC8vIFNldCB0aGUgc3RhdGUgbWFjaGlu
ZSB0byB0aGUgZGVzaXJlZCBzdGF0ZS4KLSAgICBib29sIHBhdXNlID0gcGxheVN0YXRlID09IEFu
aW1QbGF5U3RhdGVQYXVzZWQgfHwgbV9jb21wb3NpdGVBbmltYXRpb24tPmlzU3VzcGVuZGVkKCk7
CisgICAgYm9vbCBwYXVzZSA9IHBsYXlTdGF0ZSA9PSBBbmltYXRpb25QbGF5U3RhdGU6OlBhdXNl
ZCB8fCBtX2NvbXBvc2l0ZUFuaW1hdGlvbi0+aXNTdXNwZW5kZWQoKTsKIAogICAgIGlmIChwYXVz
ZSA9PSBwYXVzZWQoKSAmJiAhaXNOZXcoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuaAkocmV2aXNpb24gMjMy
MTA0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8v
IENhbGxlZCB0byBjaGFuZ2UgdG8gb3IgZnJvbSBwYXVzZWQgc3RhdGUKLSAgICB2b2lkIHVwZGF0
ZVBsYXlTdGF0ZShFQW5pbVBsYXlTdGF0ZSk7CisgICAgdm9pZCB1cGRhdGVQbGF5U3RhdGUoQW5p
bWF0aW9uUGxheVN0YXRlKTsKICAgICBib29sIHBsYXlTdGF0ZVBsYXlpbmcoKSBjb25zdDsKIAog
ICAgIGJvb2wgd2FpdGluZ1RvU3RhcnQoKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGlvblN0YXRl
ID09IEFuaW1hdGlvblN0YXRlOjpOZXcgfHwgbV9hbmltYXRpb25TdGF0ZSA9PSBBbmltYXRpb25T
dGF0ZTo6U3RhcnRXYWl0VGltZXIgfHwgbV9hbmltYXRpb25TdGF0ZSA9PSBBbmltYXRpb25TdGF0
ZTo6UGF1c2VkTmV3OyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQ
cm9wZXJ0eUFuaW1hdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9h
bmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCShyZXZpc2lvbiAyMzIxMDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI0NywxNiArMjQ3LDE2IEBAIHN0YXRpYyBpbmxpbmUgUmVmUHRyPFN0
eWxlSW1hZ2U+IGJsZW5kRmkKICAgICByZXR1cm4gU3R5bGVHZW5lcmF0ZWRJbWFnZTo6Y3JlYXRl
KFdURk1vdmUocmVzdWx0KSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgRVZpc2liaWxpdHkgYmxlbmRG
dW5jKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQqIGFuaW0sIEVWaXNpYmlsaXR5IGZy
b20sIEVWaXNpYmlsaXR5IHRvLCBkb3VibGUgcHJvZ3Jlc3MpCitzdGF0aWMgaW5saW5lIFZpc2li
aWxpdHkgYmxlbmRGdW5jKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQqIGFuaW0sIFZp
c2liaWxpdHkgZnJvbSwgVmlzaWJpbGl0eSB0bywgZG91YmxlIHByb2dyZXNzKQogewogICAgIC8v
IEFueSBub24temVybyByZXN1bHQgbWVhbnMgd2UgY29uc2lkZXIgdGhlIG9iamVjdCB0byBiZSB2
aXNpYmxlLiBPbmx5IGF0IDAgZG8gd2UgY29uc2lkZXIgdGhlIG9iamVjdCB0byBiZQotICAgIC8v
IGludmlzaWJsZS4gVGhlIGludmlzaWJsZSB2YWx1ZSB3ZSB1c2UgKEhJRERFTiB2cy4gQ09MTEFQ
U0UpIGRlcGVuZHMgb24gdGhlIHNwZWNpZmllZCBmcm9tL3RvIHZhbHVlcy4KLSAgICBkb3VibGUg
ZnJvbVZhbCA9IGZyb20gPT0gVklTSUJMRSA/IDEuIDogMC47Ci0gICAgZG91YmxlIHRvVmFsID0g
dG8gPT0gVklTSUJMRSA/IDEuIDogMC47CisgICAgLy8gaW52aXNpYmxlLiBUaGUgaW52aXNpYmxl
IHZhbHVlIHdlIHVzZSAoVmlzaWJpbGl0eTo6SGlkZGVuIHZzLiBWaXNpYmlsaXR5OjpDb2xsYXBz
ZSkgZGVwZW5kcyBvbiB0aGUgc3BlY2lmaWVkIGZyb20vdG8gdmFsdWVzLgorICAgIGRvdWJsZSBm
cm9tVmFsID0gZnJvbSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlID8gMS4gOiAwLjsKKyAgICBkb3Vi
bGUgdG9WYWwgPSB0byA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlID8gMS4gOiAwLjsKICAgICBpZiAo
ZnJvbVZhbCA9PSB0b1ZhbCkKICAgICAgICAgcmV0dXJuIHRvOwogICAgIGRvdWJsZSByZXN1bHQg
PSBibGVuZEZ1bmMoYW5pbSwgZnJvbVZhbCwgdG9WYWwsIHByb2dyZXNzKTsKLSAgICByZXR1cm4g
cmVzdWx0ID4gMC4gPyBWSVNJQkxFIDogKHRvICE9IFZJU0lCTEUgPyB0byA6IGZyb20pOworICAg
IHJldHVybiByZXN1bHQgPiAwLiA/IFZpc2liaWxpdHk6OlZpc2libGUgOiAodG8gIT0gVmlzaWJp
bGl0eTo6VmlzaWJsZSA/IHRvIDogZnJvbSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgTGVuZ3RoQm94
IGJsZW5kRnVuYyhjb25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ2xpZW50KiBhbmltLCBjb25zdCBM
ZW5ndGhCb3gmIGZyb20sIGNvbnN0IExlbmd0aEJveCYgdG8sIGRvdWJsZSBwcm9ncmVzcykKQEAg
LTE1NTIsNyArMTU1Miw3IEBAIENTU1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcDo6Q1NTUHJv
cGUKICAgICAgICAgbmV3IExlbmd0aFByb3BlcnR5V3JhcHBlcjxMZW5ndGhTaXplPihDU1NQcm9w
ZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzLCAmUmVuZGVyU3R5bGU6OmJvcmRlclRvcFJpZ2h0UmFk
aXVzLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlclRvcFJpZ2h0UmFkaXVzKSwKICAgICAgICAgbmV3
IExlbmd0aFByb3BlcnR5V3JhcHBlcjxMZW5ndGhTaXplPihDU1NQcm9wZXJ0eUJvcmRlckJvdHRv
bUxlZnRSYWRpdXMsICZSZW5kZXJTdHlsZTo6Ym9yZGVyQm90dG9tTGVmdFJhZGl1cywgJlJlbmRl
clN0eWxlOjpzZXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVzKSwKICAgICAgICAgbmV3IExlbmd0aFBy
b3BlcnR5V3JhcHBlcjxMZW5ndGhTaXplPihDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFk
aXVzLCAmUmVuZGVyU3R5bGU6OmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzLCAmUmVuZGVyU3R5bGU6
OnNldEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKSwKLSAgICAgICAgbmV3IFByb3BlcnR5V3JhcHBl
cjxFVmlzaWJpbGl0eT4oQ1NTUHJvcGVydHlWaXNpYmlsaXR5LCAmUmVuZGVyU3R5bGU6OnZpc2li
aWxpdHksICZSZW5kZXJTdHlsZTo6c2V0VmlzaWJpbGl0eSksCisgICAgICAgIG5ldyBQcm9wZXJ0
eVdyYXBwZXI8VmlzaWJpbGl0eT4oQ1NTUHJvcGVydHlWaXNpYmlsaXR5LCAmUmVuZGVyU3R5bGU6
OnZpc2liaWxpdHksICZSZW5kZXJTdHlsZTo6c2V0VmlzaWJpbGl0eSksCiAgICAgICAgIG5ldyBQ
cm9wZXJ0eVdyYXBwZXI8ZmxvYXQ+KENTU1Byb3BlcnR5Wm9vbSwgJlJlbmRlclN0eWxlOjp6b29t
LCAmUmVuZGVyU3R5bGU6OnNldFpvb21XaXRob3V0UmV0dXJuVmFsdWUpLAogCiAgICAgICAgIG5l
dyBMZW5ndGhQcm9wZXJ0eVdyYXBwZXI8TGVuZ3RoQm94PihDU1NQcm9wZXJ0eUNsaXAsICZSZW5k
ZXJTdHlsZTo6Y2xpcCwgJlJlbmRlclN0eWxlOjpzZXRDbGlwKSwKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcAkocmV2
aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRl
QW5pbWF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgQ29t
cG9zaXRlQW5pbWF0aW9uOjp1cGRhdGVUcmFuc2l0aW8KICAgICAgICAgICAgICAgICAgICAgLy8g
QWRkIHRoZSBuZXcgdHJhbnNpdGlvbgogICAgICAgICAgICAgICAgICAgICBhdXRvIGltcGxpY2l0
QW5pbWF0aW9uID0gSW1wbGljaXRBbmltYXRpb246OmNyZWF0ZShhbmltYXRpb24sIHByb3AsIGVs
ZW1lbnQsICp0aGlzLCBtb2RpZmllZEN1cnJlbnRTdHlsZSA/ICptb2RpZmllZEN1cnJlbnRTdHls
ZSA6ICpmcm9tU3R5bGUpOwogICAgICAgICAgICAgICAgICAgICBpZiAobV9zdXNwZW5kZWQgJiYg
aW1wbGljaXRBbmltYXRpb24tPmhhc1N0eWxlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBp
bXBsaWNpdEFuaW1hdGlvbi0+dXBkYXRlUGxheVN0YXRlKEFuaW1QbGF5U3RhdGVQYXVzZWQpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaW1wbGljaXRBbmltYXRpb24tPnVwZGF0ZVBsYXlTdGF0
ZShBbmltYXRpb25QbGF5U3RhdGU6OlBhdXNlZCk7CiAKICAgICAgICAgICAgICAgICAgICAgTE9H
KEFuaW1hdGlvbnMsICJDcmVhdGVkIEltcGxpY2l0QW5pbWF0aW9uICVwIG9uIGVsZW1lbnQgJXAg
Zm9yIHByb3BlcnR5ICVzIGR1cmF0aW9uICUuMmYgZGVsYXkgJS4yZiIsIGltcGxpY2l0QW5pbWF0
aW9uLnB0cigpLCAmZWxlbWVudCwgZ2V0UHJvcGVydHlOYW1lKHByb3ApLCBhbmltYXRpb24uZHVy
YXRpb24oKSwgYW5pbWF0aW9uLmRlbGF5KCkpOwogICAgICAgICAgICAgICAgICAgICBtX3RyYW5z
aXRpb25zLnNldChwcm9wLCBXVEZNb3ZlKGltcGxpY2l0QW5pbWF0aW9uKSk7CkBAIC0yNTMsNyAr
MjUzLDcgQEAgdm9pZCBDb21wb3NpdGVBbmltYXRpb246OnVwZGF0ZUtleWZyYW1lQQogICAgICAg
ICAgICAgICAgIExPRyhBbmltYXRpb25zLCAiQ3JlYXRpbmcgS2V5ZnJhbWVBbmltYXRpb24gJXAg
b24gZWxlbWVudCAlcCB3aXRoIGtleWZyYW1lcyAlcywgZHVyYXRpb24gJS4yZiwgZGVsYXkgJS4y
ZiwgaXRlcmF0aW9ucyAlLjJmIiwga2V5ZnJhbWVBbmltLmdldCgpLCAmZWxlbWVudCwgYW5pbWF0
aW9uLm5hbWUoKS51dGY4KCkuZGF0YSgpLCBhbmltYXRpb24uZHVyYXRpb24oKSwgYW5pbWF0aW9u
LmRlbGF5KCksIGFuaW1hdGlvbi5pdGVyYXRpb25Db3VudCgpKTsKIAogICAgICAgICAgICAgICAg
IGlmIChtX3N1c3BlbmRlZCkgewotICAgICAgICAgICAgICAgICAgICBrZXlmcmFtZUFuaW0tPnVw
ZGF0ZVBsYXlTdGF0ZShBbmltUGxheVN0YXRlUGF1c2VkKTsKKyAgICAgICAgICAgICAgICAgICAg
a2V5ZnJhbWVBbmltLT51cGRhdGVQbGF5U3RhdGUoQW5pbWF0aW9uUGxheVN0YXRlOjpQYXVzZWQp
OwogICAgICAgICAgICAgICAgICAgICBMT0coQW5pbWF0aW9ucywgIiAgKGNyZWF0ZWQgaW4gc3Vz
cGVuZGVkL3BhdXNlZCBzdGF0ZSkiKTsKICAgICAgICAgICAgICAgICB9CiAjaWYgIUxPR19ESVNB
QkxFRApAQCAtNDY0LDEzICs0NjQsMTMgQEAgdm9pZCBDb21wb3NpdGVBbmltYXRpb246OnN1c3Bl
bmRBbmltYXRpbwogICAgIGlmICghbV9rZXlmcmFtZUFuaW1hdGlvbnMuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIG1fa2V5ZnJhbWVBbmltYXRpb25zLmNoZWNrQ29uc2lzdGVuY3koKTsKICAgICAgICAg
Zm9yIChhdXRvJiBhbmltYXRpb24gOiBtX2tleWZyYW1lQW5pbWF0aW9ucy52YWx1ZXMoKSkKLSAg
ICAgICAgICAgIGFuaW1hdGlvbi0+dXBkYXRlUGxheVN0YXRlKEFuaW1QbGF5U3RhdGVQYXVzZWQp
OworICAgICAgICAgICAgYW5pbWF0aW9uLT51cGRhdGVQbGF5U3RhdGUoQW5pbWF0aW9uUGxheVN0
YXRlOjpQYXVzZWQpOwogICAgIH0KIAogICAgIGlmICghbV90cmFuc2l0aW9ucy5pc0VtcHR5KCkp
IHsKICAgICAgICAgZm9yIChhdXRvJiB0cmFuc2l0aW9uIDogbV90cmFuc2l0aW9ucy52YWx1ZXMo
KSkgewogICAgICAgICAgICAgaWYgKHRyYW5zaXRpb24tPmhhc1N0eWxlKCkpCi0gICAgICAgICAg
ICAgICAgdHJhbnNpdGlvbi0+dXBkYXRlUGxheVN0YXRlKEFuaW1QbGF5U3RhdGVQYXVzZWQpOwor
ICAgICAgICAgICAgICAgIHRyYW5zaXRpb24tPnVwZGF0ZVBsYXlTdGF0ZShBbmltYXRpb25QbGF5
U3RhdGU6OlBhdXNlZCk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC00ODYsMTQgKzQ4NiwxNCBA
QCB2b2lkIENvbXBvc2l0ZUFuaW1hdGlvbjo6cmVzdW1lQW5pbWF0aW9uCiAgICAgICAgIG1fa2V5
ZnJhbWVBbmltYXRpb25zLmNoZWNrQ29uc2lzdGVuY3koKTsKICAgICAgICAgZm9yIChhdXRvJiBh
bmltYXRpb24gOiBtX2tleWZyYW1lQW5pbWF0aW9ucy52YWx1ZXMoKSkgewogICAgICAgICAgICAg
aWYgKGFuaW1hdGlvbi0+cGxheVN0YXRlUGxheWluZygpKQotICAgICAgICAgICAgICAgIGFuaW1h
dGlvbi0+dXBkYXRlUGxheVN0YXRlKEFuaW1QbGF5U3RhdGVQbGF5aW5nKTsKKyAgICAgICAgICAg
ICAgICBhbmltYXRpb24tPnVwZGF0ZVBsYXlTdGF0ZShBbmltYXRpb25QbGF5U3RhdGU6OlBsYXlp
bmcpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKCFtX3RyYW5zaXRpb25zLmlzRW1wdHko
KSkgewogICAgICAgICBmb3IgKGF1dG8mIHRyYW5zaXRpb24gOiBtX3RyYW5zaXRpb25zLnZhbHVl
cygpKSB7CiAgICAgICAgICAgICBpZiAodHJhbnNpdGlvbi0+aGFzU3R5bGUoKSkKLSAgICAgICAg
ICAgICAgICB0cmFuc2l0aW9uLT51cGRhdGVQbGF5U3RhdGUoQW5pbVBsYXlTdGF0ZVBsYXlpbmcp
OworICAgICAgICAgICAgICAgIHRyYW5zaXRpb24tPnVwZGF0ZVBsYXlTdGF0ZShBbmltYXRpb25Q
bGF5U3RhdGU6OlBsYXlpbmcpOwogICAgICAgICB9CiAgICAgfQogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcAkocmV2
aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVB
bmltYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsOSArMTYzLDkgQEAgYm9vbCBLZXlm
cmFtZUFuaW1hdGlvbjo6YW5pbWF0ZShDb21wb3NpdAogICAgIAogICAgIC8vIElmIHdlIGhhdmUg
bm90IHlldCBzdGFydGVkLCB3ZSB3aWxsIG5vdCBoYXZlIGEgdmFsaWQgc3RhcnQgdGltZSwgc28g
anVzdCBzdGFydCB0aGUgYW5pbWF0aW9uIGlmIG5lZWRlZC4KICAgICBpZiAoaXNOZXcoKSkgewot
ICAgICAgICBpZiAobV9hbmltYXRpb24tPnBsYXlTdGF0ZSgpID09IEFuaW1QbGF5U3RhdGVQbGF5
aW5nICYmICFjb21wb3NpdGVBbmltYXRpb24uaXNTdXNwZW5kZWQoKSkKKyAgICAgICAgaWYgKG1f
YW5pbWF0aW9uLT5wbGF5U3RhdGUoKSA9PSBBbmltYXRpb25QbGF5U3RhdGU6OlBsYXlpbmcgJiYg
IWNvbXBvc2l0ZUFuaW1hdGlvbi5pc1N1c3BlbmRlZCgpKQogICAgICAgICAgICAgdXBkYXRlU3Rh
dGVNYWNoaW5lKEFuaW1hdGlvblN0YXRlSW5wdXQ6OlN0YXJ0QW5pbWF0aW9uLCAtMSk7Ci0gICAg
ICAgIGVsc2UgaWYgKG1fYW5pbWF0aW9uLT5wbGF5U3RhdGUoKSA9PSBBbmltUGxheVN0YXRlUGF1
c2VkKQorICAgICAgICBlbHNlIGlmIChtX2FuaW1hdGlvbi0+cGxheVN0YXRlKCkgPT0gQW5pbWF0
aW9uUGxheVN0YXRlOjpQYXVzZWQpCiAgICAgICAgICAgICB1cGRhdGVTdGF0ZU1hY2hpbmUoQW5p
bWF0aW9uU3RhdGVJbnB1dDo6UGxheVN0YXRlUGF1c2VkLCAtMSk7CiAgICAgfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTQxOCw3ICs0
MTgsNyBAQCBOb2RlKiBGcmFtZTo6bm9kZVJlc3BvbmRpbmdUb0NsaWNrRXZlbnRzCiAgICAgICAg
ICAgICAgICAgcG9pbnRlckN1cnNvclN0aWxsVmFsaWQgPSBmYWxzZTsKIAogICAgICAgICAgICAg
Ly8gSWYgd2UgaGF2ZW4ndCByZWFjaGVkIHRoZSBib2R5LCBhbmQgd2UgYXJlIHN0aWxsIHBheWlu
ZyBhdHRlbnRpb24gdG8gcG9pbnRlciBjdXJzb3JzLCBhbmQgdGhlIG5vZGUgaGFzIGEgcG9pbnRl
ciBjdXJzb3IuLi4KLSAgICAgICAgICAgIGlmIChwb2ludGVyQ3Vyc29yU3RpbGxWYWxpZCAmJiBu
b2RlLT5yZW5kZXJTdHlsZSgpICYmIG5vZGUtPnJlbmRlclN0eWxlKCktPmN1cnNvcigpID09IEN1
cnNvclBvaW50ZXIpCisgICAgICAgICAgICBpZiAocG9pbnRlckN1cnNvclN0aWxsVmFsaWQgJiYg
bm9kZS0+cmVuZGVyU3R5bGUoKSAmJiBub2RlLT5yZW5kZXJTdHlsZSgpLT5jdXJzb3IoKSA9PSBD
dXJzb3JUeXBlOjpQb2ludGVyKQogICAgICAgICAgICAgICAgIHBvaW50ZXJDdXJzb3JOb2RlID0g
bm9kZTsKICAgICAgICAgICAgIC8vIFdlIHdhbnQgdGhlIGxvd2VzdCB1bmJyb2tlbiBjaGFpbiBv
ZiBwb2ludGVyIGN1cnNvcnMuCiAgICAgICAgICAgICBlbHNlIGlmIChwb2ludGVyQ3Vyc29yTm9k
ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRp
b24uY3BwCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmlt
YXRpb24vQW5pbWF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsOCArMzgsOCBAQCBBbmlt
YXRpb246OkFuaW1hdGlvbigpCiAgICAgLCBtX3RyaWdnZXIoaW5pdGlhbFRyaWdnZXIoKSkKICNl
bmRpZgogICAgICwgbV9kaXJlY3Rpb24oaW5pdGlhbERpcmVjdGlvbigpKQotICAgICwgbV9maWxs
TW9kZShpbml0aWFsRmlsbE1vZGUoKSkKLSAgICAsIG1fcGxheVN0YXRlKGluaXRpYWxQbGF5U3Rh
dGUoKSkKKyAgICAsIG1fZmlsbE1vZGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxGaWxs
TW9kZSgpKSkKKyAgICAsIG1fcGxheVN0YXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFs
UGxheVN0YXRlKCkpKQogICAgICwgbV9kZWxheVNldChmYWxzZSkKICAgICAsIG1fZGlyZWN0aW9u
U2V0KGZhbHNlKQogICAgICwgbV9kdXJhdGlvblNldChmYWxzZSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmgJKHJldmlzaW9uIDIzMjEwNCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckZpbGxNb2Rl
KCkgeyBtX2ZpbGxNb2RlU2V0ID0gZmFsc2U7IH0KICAgICB2b2lkIGNsZWFySXRlcmF0aW9uQ291
bnQoKSB7IG1faXRlcmF0aW9uQ291bnRTZXQgPSBmYWxzZTsgfQogICAgIHZvaWQgY2xlYXJOYW1l
KCkgeyBtX25hbWVTZXQgPSBmYWxzZTsgfQotICAgIHZvaWQgY2xlYXJQbGF5U3RhdGUoKSB7IG1f
cGxheVN0YXRlU2V0ID0gQW5pbVBsYXlTdGF0ZVBsYXlpbmc7IH0KKyAgICB2b2lkIGNsZWFyUGxh
eVN0YXRlKCkgeyBtX3BsYXlTdGF0ZVNldCA9IGZhbHNlOyB9CiAgICAgdm9pZCBjbGVhclByb3Bl
cnR5KCkgeyBtX3Byb3BlcnR5U2V0ID0gZmFsc2U7IH0KICAgICB2b2lkIGNsZWFyVGltaW5nRnVu
Y3Rpb24oKSB7IG1fdGltaW5nRnVuY3Rpb25TZXQgPSBmYWxzZTsgfQogI2lmIEVOQUJMRShDU1Nf
QU5JTUFUSU9OU19MRVZFTF8yKQpAQCAtMTA5LDcgKzEwOSwxMiBAQCBwdWJsaWM6CiAKICAgICBk
b3VibGUgZGVsYXkoKSBjb25zdCB7IHJldHVybiBtX2RlbGF5OyB9CiAKLSAgICBlbnVtIEFuaW1h
dGlvbk1vZGUgeyBBbmltYXRlQWxsLCBBbmltYXRlTm9uZSwgQW5pbWF0ZVNpbmdsZVByb3BlcnR5
LCBBbmltYXRlVW5rbm93blByb3BlcnR5IH07CisgICAgZW51bSBBbmltYXRpb25Nb2RlIHsKKyAg
ICAgICAgQW5pbWF0ZUFsbCwKKyAgICAgICAgQW5pbWF0ZU5vbmUsCisgICAgICAgIEFuaW1hdGVT
aW5nbGVQcm9wZXJ0eSwKKyAgICAgICAgQW5pbWF0ZVVua25vd25Qcm9wZXJ0eQorICAgIH07CiAK
ICAgICBlbnVtIEFuaW1hdGlvbkRpcmVjdGlvbiB7CiAgICAgICAgIEFuaW1hdGlvbkRpcmVjdGlv
bk5vcm1hbCwKQEAgLTExNywxMCArMTIyLDExIEBAIHB1YmxpYzoKICAgICAgICAgQW5pbWF0aW9u
RGlyZWN0aW9uUmV2ZXJzZSwKICAgICAgICAgQW5pbWF0aW9uRGlyZWN0aW9uQWx0ZXJuYXRlUmV2
ZXJzZQogICAgIH07CisKICAgICBBbmltYXRpb25EaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8QW5pbWF0aW9uRGlyZWN0aW9uPihtX2RpcmVjdGlvbik7IH0K
ICAgICBib29sIGRpcmVjdGlvbklzRm9yd2FyZHMoKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlv
biA9PSBBbmltYXRpb25EaXJlY3Rpb25Ob3JtYWwgfHwgbV9kaXJlY3Rpb24gPT0gQW5pbWF0aW9u
RGlyZWN0aW9uQWx0ZXJuYXRlOyB9CiAKLSAgICB1bnNpZ25lZCBmaWxsTW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZmlsbE1vZGU7IH0KKyAgICBBbmltYXRpb25GaWxsTW9kZSBmaWxsTW9kZSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFuaW1hdGlvbkZpbGxNb2RlPihtX2ZpbGxNb2RlKTsg
fQogCiAgICAgZG91YmxlIGR1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kdXJhdGlvbjsgfQog
CkBAIC0xMjgsNyArMTM0LDcgQEAgcHVibGljOgogICAgIGRvdWJsZSBpdGVyYXRpb25Db3VudCgp
IGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0aW9uQ291bnQ7IH0KICAgICBjb25zdCBTdHJpbmcmIG5h
bWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAgICBTdHlsZTo6U2NvcGVPcmRpbmFsIG5h
bWVTdHlsZVNjb3BlT3JkaW5hbCgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZVN0eWxlU2NvcGVPcmRp
bmFsOyB9Ci0gICAgRUFuaW1QbGF5U3RhdGUgcGxheVN0YXRlKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8RUFuaW1QbGF5U3RhdGU+KG1fcGxheVN0YXRlKTsgfQorICAgIEFuaW1hdGlvblBs
YXlTdGF0ZSBwbGF5U3RhdGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBbmltYXRpb25Q
bGF5U3RhdGU+KG1fcGxheVN0YXRlKTsgfQogICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHkoKSBj
b25zdCB7IHJldHVybiBtX3Byb3BlcnR5OyB9CiAgICAgY29uc3QgU3RyaW5nJiB1bmtub3duUHJv
cGVydHkoKSBjb25zdCB7IHJldHVybiBtX3Vua25vd25Qcm9wZXJ0eTsgfQogICAgIFRpbWluZ0Z1
bmN0aW9uKiB0aW1pbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGltaW5nRnVuY3Rpb24u
Z2V0KCk7IH0KQEAgLTE0MCw3ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREZWxheShk
b3VibGUgYykgeyBtX2RlbGF5ID0gYzsgbV9kZWxheVNldCA9IHRydWU7IH0KICAgICB2b2lkIHNl
dERpcmVjdGlvbihBbmltYXRpb25EaXJlY3Rpb24gZCkgeyBtX2RpcmVjdGlvbiA9IGQ7IG1fZGly
ZWN0aW9uU2V0ID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0RHVyYXRpb24oZG91YmxlIGQpIHsgQVNT
RVJUKGQgPj0gMCk7IG1fZHVyYXRpb24gPSBkOyBtX2R1cmF0aW9uU2V0ID0gdHJ1ZTsgfQotICAg
IHZvaWQgc2V0RmlsbE1vZGUodW5zaWduZWQgZikgeyBtX2ZpbGxNb2RlID0gZjsgbV9maWxsTW9k
ZVNldCA9IHRydWU7IH0KKyAgICB2b2lkIHNldEZpbGxNb2RlKEFuaW1hdGlvbkZpbGxNb2RlIGYp
IHsgbV9maWxsTW9kZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihmKTsgbV9maWxsTW9kZVNldCA9
IHRydWU7IH0KICAgICB2b2lkIHNldEl0ZXJhdGlvbkNvdW50KGRvdWJsZSBjKSB7IG1faXRlcmF0
aW9uQ291bnQgPSBjOyBtX2l0ZXJhdGlvbkNvdW50U2V0ID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0
TmFtZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0eWxlOjpTY29wZU9yZGluYWwgc2NvcGUgPSBTdHls
ZTo6U2NvcGVPcmRpbmFsOjpFbGVtZW50KQogICAgIHsKQEAgLTE0OCw3ICsxNTQsNyBAQCBwdWJs
aWM6CiAgICAgICAgIG1fbmFtZVN0eWxlU2NvcGVPcmRpbmFsID0gc2NvcGU7CiAgICAgICAgIG1f
bmFtZVNldCA9IHRydWU7CiAgICAgfQotICAgIHZvaWQgc2V0UGxheVN0YXRlKEVBbmltUGxheVN0
YXRlIGQpIHsgbV9wbGF5U3RhdGUgPSBkOyBtX3BsYXlTdGF0ZVNldCA9IHRydWU7IH0KKyAgICB2
b2lkIHNldFBsYXlTdGF0ZShBbmltYXRpb25QbGF5U3RhdGUgZCkgeyBtX3BsYXlTdGF0ZSA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihkKTsgbV9wbGF5U3RhdGVTZXQgPSB0cnVlOyB9CiAgICAgdm9p
ZCBzZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHQpIHsgbV9wcm9wZXJ0eSA9IHQ7IG1fcHJvcGVy
dHlTZXQgPSB0cnVlOyB9CiAgICAgdm9pZCBzZXRVbmtub3duUHJvcGVydHkoY29uc3QgU3RyaW5n
JiBwcm9wZXJ0eSkgeyBtX3Vua25vd25Qcm9wZXJ0eSA9IHByb3BlcnR5OyB9CiAgICAgdm9pZCBz
ZXRUaW1pbmdGdW5jdGlvbihSZWZQdHI8VGltaW5nRnVuY3Rpb24+JiYgZnVuY3Rpb24pIHsgbV90
aW1pbmdGdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pOyBtX3RpbWluZ0Z1bmN0aW9uU2V0ID0g
dHJ1ZTsgfQpAQCAtMTY4LDggKzE3NCw4IEBAIHB1YmxpYzoKICAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgQW5pbWF0aW9uJiBvKSBjb25zdCB7IHJldHVybiBhbmltYXRpb25zTWF0Y2gobyk7IH0K
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQW5pbWF0aW9uJiBvKSBjb25zdCB7IHJldHVybiAh
KCp0aGlzID09IG8pOyB9CiAKLSAgICBib29sIGZpbGxzQmFja3dhcmRzKCkgY29uc3QgeyByZXR1
cm4gbV9maWxsTW9kZVNldCAmJiAobV9maWxsTW9kZSA9PSBBbmltYXRpb25GaWxsTW9kZUJhY2t3
YXJkcyB8fCBtX2ZpbGxNb2RlID09IEFuaW1hdGlvbkZpbGxNb2RlQm90aCk7IH0KLSAgICBib29s
IGZpbGxzRm9yd2FyZHMoKSBjb25zdCB7IHJldHVybiBtX2ZpbGxNb2RlU2V0ICYmIChtX2ZpbGxN
b2RlID09IEFuaW1hdGlvbkZpbGxNb2RlRm9yd2FyZHMgfHwgbV9maWxsTW9kZSA9PSBBbmltYXRp
b25GaWxsTW9kZUJvdGgpOyB9CisgICAgYm9vbCBmaWxsc0JhY2t3YXJkcygpIGNvbnN0IHsgcmV0
dXJuIG1fZmlsbE1vZGVTZXQgJiYgKGZpbGxNb2RlKCkgPT0gQW5pbWF0aW9uRmlsbE1vZGU6OkJh
Y2t3YXJkcyB8fCBmaWxsTW9kZSgpID09IEFuaW1hdGlvbkZpbGxNb2RlOjpCb3RoKTsgfQorICAg
IGJvb2wgZmlsbHNGb3J3YXJkcygpIGNvbnN0IHsgcmV0dXJuIG1fZmlsbE1vZGVTZXQgJiYgKGZp
bGxNb2RlKCkgPT0gQW5pbWF0aW9uRmlsbE1vZGU6OkZvcndhcmRzIHx8IGZpbGxNb2RlKCkgPT0g
QW5pbWF0aW9uRmlsbE1vZGU6OkJvdGgpOyB9CiAKIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBP
UlQgQW5pbWF0aW9uKCk7CkBAIC0yMTIsMTAgKzIxOCwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IGRvdWJsZSBpbml0aWFsRGVsYXkoKSB7IHJldHVybiAwOyB9CiAgICAgc3RhdGljIEFuaW1hdGlv
bkRpcmVjdGlvbiBpbml0aWFsRGlyZWN0aW9uKCkgeyByZXR1cm4gQW5pbWF0aW9uRGlyZWN0aW9u
Tm9ybWFsOyB9CiAgICAgc3RhdGljIGRvdWJsZSBpbml0aWFsRHVyYXRpb24oKSB7IHJldHVybiAw
OyB9Ci0gICAgc3RhdGljIHVuc2lnbmVkIGluaXRpYWxGaWxsTW9kZSgpIHsgcmV0dXJuIEFuaW1h
dGlvbkZpbGxNb2RlTm9uZTsgfQorICAgIHN0YXRpYyBBbmltYXRpb25GaWxsTW9kZSBpbml0aWFs
RmlsbE1vZGUoKSB7IHJldHVybiBBbmltYXRpb25GaWxsTW9kZTo6Tm9uZTsgfQogICAgIHN0YXRp
YyBkb3VibGUgaW5pdGlhbEl0ZXJhdGlvbkNvdW50KCkgeyByZXR1cm4gMS4wOyB9CiAgICAgc3Rh
dGljIGNvbnN0IFN0cmluZyYgaW5pdGlhbE5hbWUoKTsKLSAgICBzdGF0aWMgRUFuaW1QbGF5U3Rh
dGUgaW5pdGlhbFBsYXlTdGF0ZSgpIHsgcmV0dXJuIEFuaW1QbGF5U3RhdGVQbGF5aW5nOyB9Cisg
ICAgc3RhdGljIEFuaW1hdGlvblBsYXlTdGF0ZSBpbml0aWFsUGxheVN0YXRlKCkgeyByZXR1cm4g
QW5pbWF0aW9uUGxheVN0YXRlOjpQbGF5aW5nOyB9CiAgICAgc3RhdGljIENTU1Byb3BlcnR5SUQg
aW5pdGlhbFByb3BlcnR5KCkgeyByZXR1cm4gQ1NTUHJvcGVydHlJbnZhbGlkOyB9CiAgICAgc3Rh
dGljIFJlZjxUaW1pbmdGdW5jdGlvbj4gaW5pdGlhbFRpbWluZ0Z1bmN0aW9uKCkgeyByZXR1cm4g
Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKCk7IH0KICNpZiBFTkFCTEUoQ1NTX0FO
SU1BVElPTlNfTEVWRUxfMikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc1R5cGVzLmgJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
ODYsMTUgKzg2LDQwIEBAIGVudW0gSW50ZXJwb2xhdGlvblF1YWxpdHkgewogICAgIEludGVycG9s
YXRpb25IaWdoCiB9OwogCi1lbnVtIExpbmVDYXAgeyBCdXR0Q2FwLCBSb3VuZENhcCwgU3F1YXJl
Q2FwIH07CitlbnVtIExpbmVDYXAgeworICAgIEJ1dHRDYXAsCisgICAgUm91bmRDYXAsCisgICAg
U3F1YXJlQ2FwCit9OwogCi1lbnVtIExpbmVKb2luIHsgTWl0ZXJKb2luLCBSb3VuZEpvaW4sIEJl
dmVsSm9pbiB9OworZW51bSBMaW5lSm9pbiB7CisgICAgTWl0ZXJKb2luLAorICAgIFJvdW5kSm9p
biwKKyAgICBCZXZlbEpvaW4KK307CiAKLWVudW0gSG9yaXpvbnRhbEFsaWdubWVudCB7IEFsaWdu
TGVmdCwgQWxpZ25SaWdodCwgQWxpZ25IQ2VudGVyIH07CitlbnVtIEhvcml6b250YWxBbGlnbm1l
bnQgeworICAgIEFsaWduTGVmdCwKKyAgICBBbGlnblJpZ2h0LAorICAgIEFsaWduSENlbnRlcgor
fTsKIAotZW51bSBUZXh0QmFzZWxpbmUgeyBBbHBoYWJldGljVGV4dEJhc2VsaW5lLCBUb3BUZXh0
QmFzZWxpbmUsIE1pZGRsZVRleHRCYXNlbGluZSwgQm90dG9tVGV4dEJhc2VsaW5lLCBJZGVvZ3Jh
cGhpY1RleHRCYXNlbGluZSwgSGFuZ2luZ1RleHRCYXNlbGluZSB9OworZW51bSBUZXh0QmFzZWxp
bmUgeworICAgIEFscGhhYmV0aWNUZXh0QmFzZWxpbmUsCisgICAgVG9wVGV4dEJhc2VsaW5lLAor
ICAgIE1pZGRsZVRleHRCYXNlbGluZSwKKyAgICBCb3R0b21UZXh0QmFzZWxpbmUsCisgICAgSWRl
b2dyYXBoaWNUZXh0QmFzZWxpbmUsCisgICAgSGFuZ2luZ1RleHRCYXNlbGluZQorfTsKIAotZW51
bSBUZXh0QWxpZ24geyBTdGFydFRleHRBbGlnbiwgRW5kVGV4dEFsaWduLCBMZWZ0VGV4dEFsaWdu
LCBDZW50ZXJUZXh0QWxpZ24sIFJpZ2h0VGV4dEFsaWduIH07CitlbnVtIFRleHRBbGlnbiB7Cisg
ICAgU3RhcnRUZXh0QWxpZ24sCisgICAgRW5kVGV4dEFsaWduLAorICAgIExlZnRUZXh0QWxpZ24s
CisgICAgQ2VudGVyVGV4dEFsaWduLAorICAgIFJpZ2h0VGV4dEFsaWduCit9OwogCiBlbnVtIFJl
bmRlcmluZ01vZGUgewogICAgIFVuYWNjZWxlcmF0ZWQsCkBAIC0xMTIsMTIgKzEzNyw2IEBAIFN0
cmluZyBibGVuZE1vZGVOYW1lKEJsZW5kTW9kZSk7CiBib29sIHBhcnNlQmxlbmRNb2RlKGNvbnN0
IFN0cmluZyYsIEJsZW5kTW9kZSYpOwogYm9vbCBwYXJzZUNvbXBvc2l0ZUFuZEJsZW5kT3BlcmF0
b3IoY29uc3QgU3RyaW5nJiwgQ29tcG9zaXRlT3BlcmF0b3ImLCBCbGVuZE1vZGUmKTsKIAotU3Ry
aW5nIHRleHRBbGlnbk5hbWUoVGV4dEFsaWduKTsKLWJvb2wgcGFyc2VUZXh0QWxpZ24oY29uc3Qg
U3RyaW5nJiwgVGV4dEFsaWduJik7Ci0KLVN0cmluZyB0ZXh0QmFzZWxpbmVOYW1lKFRleHRCYXNl
bGluZSk7Ci1ib29sIHBhcnNlVGV4dEJhc2VsaW5lKGNvbnN0IFN0cmluZyYsIFRleHRCYXNlbGlu
ZSYpOwotCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpU
ZXh0U3RyZWFtJiwgQmxlbmRNb2RlKTsKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBDb21wb3NpdGVPcGVyYXRvcik7CiBXRUJDT1JF
X0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgV2lu
ZFJ1bGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMTg3LDE2ICszMTg3LDE2IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXR1
cEFuaW1hdGlvbihQbGEKIAogICAgIFBsYXRmb3JtQ0FBbmltYXRpb246OkZpbGxNb2RlVHlwZSBm
aWxsTW9kZSA9IFBsYXRmb3JtQ0FBbmltYXRpb246Ok5vRmlsbE1vZGU7CiAgICAgc3dpdGNoIChh
bmltLT5maWxsTW9kZSgpKSB7Ci0gICAgY2FzZSBBbmltYXRpb25GaWxsTW9kZU5vbmU6CisgICAg
Y2FzZSBBbmltYXRpb25GaWxsTW9kZTo6Tm9uZToKICAgICAgICAgZmlsbE1vZGUgPSBQbGF0Zm9y
bUNBQW5pbWF0aW9uOjpGb3J3YXJkczsgLy8gVXNlICJmb3J3YXJkcyIgcmF0aGVyIHRoYW4gInJl
bW92ZWQiIGJlY2F1c2UgdGhlIHN0eWxlIHN5c3RlbSB3aWxsIHJlbW92ZSB0aGUgYW5pbWF0aW9u
IHdoZW4gaXQgaXMgZmluaXNoZWQuIFRoaXMgYXZvaWRzIGEgZmxhc2guCiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGVCYWNrd2FyZHM6CisgICAgY2FzZSBBbmltYXRp
b25GaWxsTW9kZTo6QmFja3dhcmRzOgogICAgICAgICBmaWxsTW9kZSA9IFBsYXRmb3JtQ0FBbmlt
YXRpb246OkJvdGg7IC8vIFVzZSAiYm90aCIgcmF0aGVyIHRoYW4gImJhY2t3YXJkcyIgYmVjYXVz
ZSB0aGUgc3R5bGUgc3lzdGVtIHdpbGwgcmVtb3ZlIHRoZSBhbmltYXRpb24gd2hlbiBpdCBpcyBm
aW5pc2hlZC4gVGhpcyBhdm9pZHMgYSBmbGFzaC4KICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBB
bmltYXRpb25GaWxsTW9kZUZvcndhcmRzOgorICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGU6OkZv
cndhcmRzOgogICAgICAgICBmaWxsTW9kZSA9IFBsYXRmb3JtQ0FBbmltYXRpb246OkZvcndhcmRz
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlQm90aDoKKyAgICBj
YXNlIEFuaW1hdGlvbkZpbGxNb2RlOjpCb3RoOgogICAgICAgICBmaWxsTW9kZSA9IFBsYXRmb3Jt
Q0FBbmltYXRpb246OkJvdGg7CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lm1tCShyZXZpc2lvbiAyMzIxMDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1dpbmRvdy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNjgyLDcgKzY4Miw3IEBAIC0gKHZvaWQpZHVtcFRpbGVzCiAgICAgQ0dSZWN0
IHNhdmVkRnJvemVuVmlzaWJsZVJlY3QgPSBfZnJvemVuVmlzaWJsZVJlY3Q7CiAgICAgTlNMb2co
QCI9PT09PT09PT09PT09PT09PSIpOwogICAgIGlmICghQ0dSZWN0SXNOdWxsKF9mcm96ZW5WaXNp
YmxlUmVjdCkpIHsKLSAgICAgICAgTlNMb2coQCJWSVNJQkxFIFJFQ1QgSVMgQ0FDSEVEOiBbJTYu
MWYgJTYuMWYgJTYuMWYgJTYuMWZdIiwgX2Zyb3plblZpc2libGVSZWN0Lm9yaWdpbi54LCBfZnJv
emVuVmlzaWJsZVJlY3Qub3JpZ2luLnksIF9mcm96ZW5WaXNpYmxlUmVjdC5zaXplLndpZHRoLCBf
ZnJvemVuVmlzaWJsZVJlY3Quc2l6ZS5oZWlnaHQpOworICAgICAgICBOU0xvZyhAIlZpc2liaWxp
dHk6OlZpc2libGUgUkVDVCBJUyBDQUNIRUQ6IFslNi4xZiAlNi4xZiAlNi4xZiAlNi4xZl0iLCBf
ZnJvemVuVmlzaWJsZVJlY3Qub3JpZ2luLngsIF9mcm96ZW5WaXNpYmxlUmVjdC5vcmlnaW4ueSwg
X2Zyb3plblZpc2libGVSZWN0LnNpemUud2lkdGgsIF9mcm96ZW5WaXNpYmxlUmVjdC5zaXplLmhl
aWdodCk7CiAgICAgICAgIF9mcm96ZW5WaXNpYmxlUmVjdCA9IENHUmVjdE51bGw7CiAgICAgfQog
ICAgIENHUmVjdCB2aXNpYmxlUmVjdCA9IFtzZWxmIHZpc2libGVSZWN0XTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQkocmV2
aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VS
TEV4dHJhcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTc3LDggKzE3Nyw4IEBAIHN0YXRpYyBCT09M
IGlzTG9va2FsaWtlQ2hhcmFjdGVyKHN0ZDo6b3AKICAgICAgICAgY2FzZSAweDIzM0Y6IC8qIEFQ
TCBGVU5DVElPTkFMIFNZTUJPTCBTTEFTSCBCQVIgKi8KICAgICAgICAgY2FzZSAweDIzQUU6IC8q
IElOVEVHUkFMIEVYVEVOU0lPTiAqLwogICAgICAgICBjYXNlIDB4MjQ0QTogLyogT0NSIERPVUJM
RSBCQUNLU0xBU0ggKi8KLSAgICAgICAgY2FzZSAweDI1NzE6IC8qIEJPWCBEUkFXSU5HUyBMSUdI
VCBESUFHT05BTCBVUFBFUiBSSUdIVCBUTyBMT1dFUiBMRUZUICovCi0gICAgICAgIGNhc2UgMHgy
NTcyOiAvKiBCT1ggRFJBV0lOR1MgTElHSFQgRElBR09OQUwgVVBQRVIgTEVGVCBUTyBMT1dFUiBS
SUdIVCAqLworICAgICAgICBjYXNlIDB4MjU3MTogLyogRGlzcGxheVR5cGU6OkJveCBEUkFXSU5H
UyBMSUdIVCBESUFHT05BTCBVUFBFUiBSSUdIVCBUTyBMT1dFUiBMRUZUICovCisgICAgICAgIGNh
c2UgMHgyNTcyOiAvKiBEaXNwbGF5VHlwZTo6Qm94IERSQVdJTkdTIExJR0hUIERJQUdPTkFMIFVQ
UEVSIExFRlQgVE8gTE9XRVIgUklHSFQgKi8KICAgICAgICAgY2FzZSAweDI5RjY6IC8qIFNPTElE
VVMgV0lUSCBPVkVSQkFSICovCiAgICAgICAgIGNhc2UgMHgyOUY4OiAvKiBCSUcgU09MSURVUyAq
LwogICAgICAgICBjYXNlIDB4MkFGQjogLyogVFJJUExFIFNPTElEVVMgQklOQVJZIFJFTEFUSU9O
ICovCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24u
aAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NsaXBQYXRo
T3BlcmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBAQCBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24oUmVmPEJhc2ljU2hhcGU+JiYgc2hh
cGUpCiAgICAgICAgIDogQ2xpcFBhdGhPcGVyYXRpb24oU2hhcGUpCiAgICAgICAgICwgbV9zaGFw
ZShXVEZNb3ZlKHNoYXBlKSkKLSAgICAgICAgLCBtX3JlZmVyZW5jZUJveChCb3hNaXNzaW5nKQor
ICAgICAgICAsIG1fcmVmZXJlbmNlQm94KENTU0JveFR5cGU6OkJveE1pc3NpbmcpCiAgICAgewog
ICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guaAkocmV2aXNpb24g
MjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNDEsNyArMjQxLDcgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZVBh
cmVudENoaWxkTGlzdCgpOwogI2VuZGlmCiAKLSAgICBib29sIHZpc2libGVUb0hpdFRlc3Rpbmco
KSBjb25zdCB7IHJldHVybiByZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lC
TEUgJiYgcmVuZGVyZXIoKS5zdHlsZSgpLnBvaW50ZXJFdmVudHMoKSAhPSBQRV9OT05FOyB9Cisg
ICAgYm9vbCB2aXNpYmxlVG9IaXRUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gcmVuZGVyZXIoKS5z
dHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmIHJlbmRlcmVyKCku
c3R5bGUoKS5wb2ludGVyRXZlbnRzKCkgIT0gUG9pbnRlckV2ZW50czo6Tm9uZTsgfQogCiAgICAg
Y29uc3QgUmVuZGVyU3R5bGUmIGxpbmVTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRz
LmZpcnN0TGluZSgpID8gcmVuZGVyZXIoKS5maXJzdExpbmVTdHlsZSgpIDogcmVuZGVyZXIoKS5z
dHlsZSgpOyB9CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxv
d0JveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZs
b3dCb3guY3BwCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lRmxvd0JveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lk
IElubGluZUZsb3dCb3g6OmFkZFRvTGluZShJbmxpbmVCb3gqCiAgICAgICAgICAgICAgICAgICAg
IHx8IChwYXJlbnRTdHlsZS52ZXJ0aWNhbEFsaWduKCkgIT0gVmVydGljYWxBbGlnbjo6QmFzZWxp
bmUgJiYgIWlzUm9vdElubGluZUJveCgpKSB8fCBjaGlsZFN0eWxlLnZlcnRpY2FsQWxpZ24oKSAh
PSBWZXJ0aWNhbEFsaWduOjpCYXNlbGluZSkKICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQ2xl
YXJEZXNjZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFuZEJhc2VsaW5lID0gdHJ1ZTsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjaGlsZFN0eWxlLmhhc1RleHRDb21iaW5lKCkgfHwg
Y2hpbGRTdHlsZS50ZXh0RW1waGFzaXNNYXJrKCkgIT0gVGV4dEVtcGhhc2lzTWFya05vbmUpCisg
ICAgICAgICAgICBpZiAoY2hpbGRTdHlsZS5oYXNUZXh0Q29tYmluZSgpIHx8IGNoaWxkU3R5bGUu
dGV4dEVtcGhhc2lzTWFyaygpICE9IFRleHRFbXBoYXNpc01hcms6Ok5vbmUpCiAgICAgICAgICAg
ICAgICAgc2hvdWxkQ2xlYXJEZXNjZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFuZEJhc2VsaW5l
ID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChjaGlsZC0+cmVuZGVy
ZXIoKS5pc0xpbmVCcmVhaygpKSB7CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBJbmxpbmVGbG93
Qm94OjphZGRUb0xpbmUoSW5saW5lQm94KgogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgY2hp
bGRTdHlsZSA9IGNoaWxkLT5saW5lU3R5bGUoKTsKICAgICAgICAgaWYgKGNoaWxkLT5iZWhhdmVz
TGlrZVRleHQoKSkgewogICAgICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUg
PSAmY2hpbGQtPmxpbmVTdHlsZSgpOwotICAgICAgICAgICAgaWYgKGNoaWxkU3R5bGUtPmxldHRl
clNwYWNpbmcoKSA8IDAgfHwgY2hpbGRTdHlsZS0+dGV4dFNoYWRvdygpIHx8IGNoaWxkU3R5bGUt
PnRleHRFbXBoYXNpc01hcmsoKSAhPSBUZXh0RW1waGFzaXNNYXJrTm9uZSB8fCBjaGlsZFN0eWxl
LT5oYXNQb3NpdGl2ZVN0cm9rZVdpZHRoKCkpCisgICAgICAgICAgICBpZiAoY2hpbGRTdHlsZS0+
bGV0dGVyU3BhY2luZygpIDwgMCB8fCBjaGlsZFN0eWxlLT50ZXh0U2hhZG93KCkgfHwgY2hpbGRT
dHlsZS0+dGV4dEVtcGhhc2lzTWFyaygpICE9IFRleHRFbXBoYXNpc01hcms6Ok5vbmUgfHwgY2hp
bGRTdHlsZS0+aGFzUG9zaXRpdmVTdHJva2VXaWR0aCgpKQogICAgICAgICAgICAgICAgIGNoaWxk
LT5jbGVhcktub3duVG9IYXZlTm9PdmVyZmxvdygpOwogICAgICAgICB9IGVsc2UgaWYgKGNoaWxk
LT5yZW5kZXJlcigpLmlzUmVwbGFjZWQoKSkgewogICAgICAgICAgICAgY29uc3QgUmVuZGVyQm94
JiBib3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KGNoaWxkLT5yZW5kZXJlcigpKTsKQEAgLTY4NCw3
ICs2ODQsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBsYWNlQm94ZXNJbkJsb2NrRGlyCiAgICAg
ICAgICAgICAgICAgLy8gVHJlYXQgdGhlIGxlYWRpbmcgb24gdGhlIGZpcnN0IGFuZCBsYXN0IGxp
bmVzIG9mIHJ1YnkgcnVucyBhcyBub3QgYmVpbmcgcGFydCBvZiB0aGUgb3ZlcmFsbCBsaW5lVG9w
L2xpbmVCb3R0b20uCiAgICAgICAgICAgICAgICAgLy8gUmVhbGx5IHRoaXMgaXMgYSB3b3JrYXJv
dW5kIGhhY2sgZm9yIHRoZSBmYWN0IHRoYXQgcnVieSBzaG91bGQgaGF2ZSBiZWVuIGRvbmUgYXMg
bGluZSBsYXlvdXQgYW5kIG5vdCBkb25lIHVzaW5nCiAgICAgICAgICAgICAgICAgLy8gaW5saW5l
LWJsb2NrLgotICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCkuaXNGbGlwcGVk
TGluZXNXcml0aW5nTW9kZSgpID09IChjaGlsZC0+cmVuZGVyZXIoKS5zdHlsZSgpLnJ1YnlQb3Np
dGlvbigpID09IFJ1YnlQb3NpdGlvbkFmdGVyKSkKKyAgICAgICAgICAgICAgICBpZiAocmVuZGVy
ZXIoKS5zdHlsZSgpLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSA9PSAoY2hpbGQtPnJlbmRl
cmVyKCkuc3R5bGUoKS5ydWJ5UG9zaXRpb24oKSA9PSBSdWJ5UG9zaXRpb246OkFmdGVyKSkKICAg
ICAgICAgICAgICAgICAgICAgaGFzQW5ub3RhdGlvbnNCZWZvcmUgPSB0cnVlOwogICAgICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgaGFzQW5ub3RhdGlvbnNBZnRlciA9IHRy
dWU7CkBAIC04OTUsNyArODk1LDcgQEAgaW5saW5lIHZvaWQgSW5saW5lRmxvd0JveDo6YWRkVGV4
dEJveFZpcwogICAgIGludCByaWdodEdseXBoT3ZlcmZsb3cgPSBzdHJva2VPdmVyZmxvdyArIHJp
Z2h0R2x5cGhFZGdlOwogCiAgICAgYm9vbCBlbXBoYXNpc01hcmtJc0Fib3ZlOwotICAgIGlmIChs
aW5lU3R5bGUudGV4dEVtcGhhc2lzTWFyaygpICE9IFRleHRFbXBoYXNpc01hcmtOb25lICYmIHRl
eHRCb3guZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92ZShsaW5lU3R5bGUsIGVtcGhhc2lzTWFy
a0lzQWJvdmUpKSB7CisgICAgaWYgKGxpbmVTdHlsZS50ZXh0RW1waGFzaXNNYXJrKCkgIT0gVGV4
dEVtcGhhc2lzTWFyazo6Tm9uZSAmJiB0ZXh0Qm94LmVtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJv
dmUobGluZVN0eWxlLCBlbXBoYXNpc01hcmtJc0Fib3ZlKSkgewogICAgICAgICBpbnQgZW1waGFz
aXNNYXJrSGVpZ2h0ID0gbGluZVN0eWxlLmZvbnRDYXNjYWRlKCkuZW1waGFzaXNNYXJrSGVpZ2h0
KGxpbmVTdHlsZS50ZXh0RW1waGFzaXNNYXJrU3RyaW5nKCkpOwogICAgICAgICBpZiAoZW1waGFz
aXNNYXJrSXNBYm92ZSA9PSAhbGluZVN0eWxlLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSkK
ICAgICAgICAgICAgIHRvcEdseXBoT3ZlcmZsb3cgPSBzdGQ6Om1pbih0b3BHbHlwaE92ZXJmbG93
LCAtZW1waGFzaXNNYXJrSGVpZ2h0KTsKQEAgLTExNTUsNyArMTE1NSw3IEBAIHZvaWQgSW5saW5l
Rmxvd0JveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWkKICAgICAgICAgaWYgKHBhaW50SW5mby5waGFz
ZSA9PSBQYWludFBoYXNlT3V0bGluZSB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNl
bGZPdXRsaW5lKSB7CiAgICAgICAgICAgICAvLyBBZGQgb3Vyc2VsdmVzIHRvIHRoZSBwYWludCBp
bmZvIHN0cnVjdCdzIGxpc3Qgb2YgaW5saW5lcyB0aGF0IG5lZWQgdG8gcGFpbnQgdGhlaXIKICAg
ICAgICAgICAgIC8vIG91dGxpbmVzLgotICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUo
KS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSAmJiByZW5kZXJlcigpLmhhc091dGxpbmUoKSAmJiAh
aXNSb290SW5saW5lQm94KCkpIHsKKyAgICAgICAgICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCku
dmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUgJiYgcmVuZGVyZXIoKS5oYXNPdXRs
aW5lKCkgJiYgIWlzUm9vdElubGluZUJveCgpKSB7CiAgICAgICAgICAgICAgICAgUmVuZGVySW5s
aW5lJiBpbmxpbmVGbG93ID0gZG93bmNhc3Q8UmVuZGVySW5saW5lPihyZW5kZXJlcigpKTsKIAog
ICAgICAgICAgICAgICAgIFJlbmRlckJsb2NrKiBjb250YWluaW5nQmxvY2sgPSBudWxscHRyOwpA
QCAtMTMzNSw3ICsxMzM1LDcgQEAgc3RhdGljIExheW91dFJlY3QgY2xpcFJlY3RGb3JOaW5lUGll
Y2VJbQogCiB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKLSAgICBpZiAo
IXBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QocmVuZGVyZXIoKSkgfHwgcmVuZGVyZXIo
KS5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8IHBhaW50SW5mby5waGFzZSAhPSBQ
YWludFBoYXNlRm9yZWdyb3VuZCkKKyAgICBpZiAoIXBhaW50SW5mby5zaG91bGRQYWludFdpdGhp
blJvb3QocmVuZGVyZXIoKSkgfHwgcmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBW
aXNpYmlsaXR5OjpWaXNpYmxlIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdy
b3VuZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTGF5b3V0UmVjdCBmcmFtZVJlY3QodGhpcy0+
ZnJhbWVSZWN0KCkpOwpAQCAtMTQwNyw3ICsxNDA3LDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94Ojpw
YWludEJveERlY29yYXRpb25zKAogCiB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50TWFzayhQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewotICAg
IGlmICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdChyZW5kZXJlcigpKSB8fCByZW5k
ZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgcGFpbnRJbmZvLnBoYXNl
ICE9IFBhaW50UGhhc2VNYXNrKQorICAgIGlmICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGlu
Um9vdChyZW5kZXJlcigpKSB8fCByZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZp
c2liaWxpdHk6OlZpc2libGUgfHwgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VNYXNrKQog
ICAgICAgICByZXR1cm47CiAKICAgICBMYXlvdXRSZWN0IGZyYW1lUmVjdCh0aGlzLT5mcmFtZVJl
Y3QoKSk7CkBAIC0xNTUyLDcgKzE1NTIsNyBAQCBMYXlvdXRVbml0IElubGluZUZsb3dCb3g6OmNv
bXB1dGVPdmVyQW5uCiAgICAgICAgIGlmIChpczxJbmxpbmVGbG93Qm94PigqY2hpbGQpKQogICAg
ICAgICAgICAgcmVzdWx0ID0gc3RkOjptYXgocmVzdWx0LCBkb3duY2FzdDxJbmxpbmVGbG93Qm94
PigqY2hpbGQpLmNvbXB1dGVPdmVyQW5ub3RhdGlvbkFkanVzdG1lbnQoYWxsb3dlZFBvc2l0aW9u
KSk7CiAgICAgICAgIAotICAgICAgICBpZiAoY2hpbGQtPnJlbmRlcmVyKCkuaXNSZXBsYWNlZCgp
ICYmIGlzPFJlbmRlclJ1YnlSdW4+KGNoaWxkLT5yZW5kZXJlcigpKSAmJiBjaGlsZC0+cmVuZGVy
ZXIoKS5zdHlsZSgpLnJ1YnlQb3NpdGlvbigpID09IFJ1YnlQb3NpdGlvbkJlZm9yZSkgeworICAg
ICAgICBpZiAoY2hpbGQtPnJlbmRlcmVyKCkuaXNSZXBsYWNlZCgpICYmIGlzPFJlbmRlclJ1YnlS
dW4+KGNoaWxkLT5yZW5kZXJlcigpKSAmJiBjaGlsZC0+cmVuZGVyZXIoKS5zdHlsZSgpLnJ1YnlQ
b3NpdGlvbigpID09IFJ1YnlQb3NpdGlvbjo6QmVmb3JlKSB7CiAgICAgICAgICAgICBhdXRvJiBy
dWJ5UnVuID0gZG93bmNhc3Q8UmVuZGVyUnVieVJ1bj4oY2hpbGQtPnJlbmRlcmVyKCkpOwogICAg
ICAgICAgICAgUmVuZGVyUnVieVRleHQqIHJ1YnlUZXh0ID0gcnVieVJ1bi5ydWJ5VGV4dCgpOwog
ICAgICAgICAgICAgaWYgKCFydWJ5VGV4dCkKQEAgLTE1NzYsNyArMTU3Niw3IEBAIExheW91dFVu
aXQgSW5saW5lRmxvd0JveDo6Y29tcHV0ZU92ZXJBbm4KICAgICAgICAgaWYgKGlzPElubGluZVRl
eHRCb3g+KCpjaGlsZCkpIHsKICAgICAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBjaGlsZExp
bmVTdHlsZSA9IGNoaWxkLT5saW5lU3R5bGUoKTsKICAgICAgICAgICAgIGJvb2wgZW1waGFzaXNN
YXJrSXNBYm92ZTsKLSAgICAgICAgICAgIGlmIChjaGlsZExpbmVTdHlsZS50ZXh0RW1waGFzaXNN
YXJrKCkgIT0gVGV4dEVtcGhhc2lzTWFya05vbmUgJiYgZG93bmNhc3Q8SW5saW5lVGV4dEJveD4o
KmNoaWxkKS5lbXBoYXNpc01hcmtFeGlzdHNBbmRJc0Fib3ZlKGNoaWxkTGluZVN0eWxlLCBlbXBo
YXNpc01hcmtJc0Fib3ZlKSAmJiBlbXBoYXNpc01hcmtJc0Fib3ZlKSB7CisgICAgICAgICAgICBp
ZiAoY2hpbGRMaW5lU3R5bGUudGV4dEVtcGhhc2lzTWFyaygpICE9IFRleHRFbXBoYXNpc01hcms6
Ok5vbmUgJiYgZG93bmNhc3Q8SW5saW5lVGV4dEJveD4oKmNoaWxkKS5lbXBoYXNpc01hcmtFeGlz
dHNBbmRJc0Fib3ZlKGNoaWxkTGluZVN0eWxlLCBlbXBoYXNpc01hcmtJc0Fib3ZlKSAmJiBlbXBo
YXNpc01hcmtJc0Fib3ZlKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFjaGlsZExpbmVTdHlsZS5p
c0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgaW50IHRv
cE9mRW1waGFzaXNNYXJrID0gY2hpbGQtPmxvZ2ljYWxUb3AoKSAtIGNoaWxkTGluZVN0eWxlLmZv
bnRDYXNjYWRlKCkuZW1waGFzaXNNYXJrSGVpZ2h0KGNoaWxkTGluZVN0eWxlLnRleHRFbXBoYXNp
c01hcmtTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWF4KHJl
c3VsdCwgYWxsb3dlZFBvc2l0aW9uIC0gdG9wT2ZFbXBoYXNpc01hcmspOwpAQCAtMTYwMCw3ICsx
NjAwLDcgQEAgTGF5b3V0VW5pdCBJbmxpbmVGbG93Qm94Ojpjb21wdXRlVW5kZXJBbgogICAgICAg
ICBpZiAoaXM8SW5saW5lRmxvd0JveD4oKmNoaWxkKSkKICAgICAgICAgICAgIHJlc3VsdCA9IHN0
ZDo6bWF4KHJlc3VsdCwgZG93bmNhc3Q8SW5saW5lRmxvd0JveD4oKmNoaWxkKS5jb21wdXRlVW5k
ZXJBbm5vdGF0aW9uQWRqdXN0bWVudChhbGxvd2VkUG9zaXRpb24pKTsKIAotICAgICAgICBpZiAo
Y2hpbGQtPnJlbmRlcmVyKCkuaXNSZXBsYWNlZCgpICYmIGlzPFJlbmRlclJ1YnlSdW4+KGNoaWxk
LT5yZW5kZXJlcigpKSAmJiBjaGlsZC0+cmVuZGVyZXIoKS5zdHlsZSgpLnJ1YnlQb3NpdGlvbigp
ID09IFJ1YnlQb3NpdGlvbkFmdGVyKSB7CisgICAgICAgIGlmIChjaGlsZC0+cmVuZGVyZXIoKS5p
c1JlcGxhY2VkKCkgJiYgaXM8UmVuZGVyUnVieVJ1bj4oY2hpbGQtPnJlbmRlcmVyKCkpICYmIGNo
aWxkLT5yZW5kZXJlcigpLnN0eWxlKCkucnVieVBvc2l0aW9uKCkgPT0gUnVieVBvc2l0aW9uOjpB
ZnRlcikgewogICAgICAgICAgICAgYXV0byYgcnVieVJ1biA9IGRvd25jYXN0PFJlbmRlclJ1YnlS
dW4+KGNoaWxkLT5yZW5kZXJlcigpKTsKICAgICAgICAgICAgIFJlbmRlclJ1YnlUZXh0KiBydWJ5
VGV4dCA9IHJ1YnlSdW4ucnVieVRleHQoKTsKICAgICAgICAgICAgIGlmICghcnVieVRleHQpCkBA
IC0xNjI1LDcgKzE2MjUsNyBAQCBMYXlvdXRVbml0IElubGluZUZsb3dCb3g6OmNvbXB1dGVVbmRl
ckFuCiAgICAgICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgY2hpbGRMaW5lU3R5bGUgPSBjaGls
ZC0+bGluZVN0eWxlKCk7CiAgICAgICAgICAgICBib29sIGVtcGhhc2lzTWFya0lzQWJvdmU7CiAg
ICAgICAgICAgICBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PigqY2hpbGQpLmVtcGhhc2lzTWFya0V4
aXN0c0FuZElzQWJvdmUoY2hpbGRMaW5lU3R5bGUsIGVtcGhhc2lzTWFya0lzQWJvdmUpOwotICAg
ICAgICAgICAgaWYgKGNoaWxkTGluZVN0eWxlLnRleHRFbXBoYXNpc01hcmsoKSAhPSBUZXh0RW1w
aGFzaXNNYXJrTm9uZSAmJiAhZW1waGFzaXNNYXJrSXNBYm92ZSkgeworICAgICAgICAgICAgaWYg
KGNoaWxkTGluZVN0eWxlLnRleHRFbXBoYXNpc01hcmsoKSAhPSBUZXh0RW1waGFzaXNNYXJrOjpO
b25lICYmICFlbXBoYXNpc01hcmtJc0Fib3ZlKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFjaGls
ZExpbmVTdHlsZS5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgTGF5b3V0VW5pdCBib3R0b21PZkVtcGhhc2lzTWFyayA9IGNoaWxkLT5sb2dpY2FsQm90
dG9tKCkgKyBjaGlsZExpbmVTdHlsZS5mb250Q2FzY2FkZSgpLmVtcGhhc2lzTWFya0hlaWdodChj
aGlsZExpbmVTdHlsZS50ZXh0RW1waGFzaXNNYXJrU3RyaW5nKCkpOwogICAgICAgICAgICAgICAg
ICAgICByZXN1bHQgPSBzdGQ6Om1heChyZXN1bHQsIGJvdHRvbU9mRW1waGFzaXNNYXJrIC0gYWxs
b3dlZFBvc2l0aW9uKTsKQEAgLTE2NTUsNyArMTY1NSw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6
Y29sbGVjdExlYWZCb3hlc0luTG8KICAgICAgICAgbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIuYXBw
ZW5kKGxlYWYpOwogICAgIH0KIAotICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCkucnRsT3JkZXJp
bmcoKSA9PSBWaXN1YWxPcmRlcikKKyAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLnJ0bE9yZGVy
aW5nKCkgPT0gT3JkZXI6OlZpc3VhbCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gUmV2ZXJz
ZSBvZiByZW9yZGVyaW5nIG9mIHRoZSBsaW5lIChMMiBhY2NvcmRpbmcgdG8gQmlkaSBzcGVjKToK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaAkocmV2aXNpb24g
MjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaAkod29y
a2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGFuIGludmlz
aWJsZSBtYXJrZXIgZXhpc3RzLiAgVGhlIHNpZGUgZWZmZWN0IG9mIGhhdmluZyBhbiBpbnZpc2li
bGUgbWFya2VyIGlzIHRoYXQgdGhlIHF1aXJrcyBtb2RlIGJlaGF2aW9yIG9mIHNocmlua2luZyBs
aW5lcyB3aXRoIG5vCiAgICAgICAgIC8vIHRleHQgY2hpbGRyZW4gbXVzdCBub3QgYXBwbHkuICBU
aGlzIGNoYW5nZSBhbHNvIG1lYW5zIHRoYXQgZ2FwcyB3aWxsIGV4aXN0IGJldHdlZW4gaW1hZ2Ug
YnVsbGV0IGxpc3QgaXRlbXMuICBFdmVuIHdoZW4gdGhlIGxpc3QgYnVsbGV0CiAgICAgICAgIC8v
IGlzIGFuIGltYWdlLCB0aGUgbGluZSBpcyBzdGlsbCBjb25zaWRlcmVkIHRvIGJlIGltbXVuZSBm
cm9tIHRoZSBxdWlyay4KLSAgICAgICAgbV9oYXNUZXh0Q2hpbGRyZW4gPSByZW5kZXJlci5zdHls
ZSgpLmRpc3BsYXkoKSA9PSBMSVNUX0lURU07CisgICAgICAgIG1faGFzVGV4dENoaWxkcmVuID0g
cmVuZGVyZXIuc3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6Okxpc3RJdGVtOwogICAg
ICAgICBtX2hhc1RleHREZXNjZW5kYW50cyA9IG1faGFzVGV4dENoaWxkcmVuOwogICAgIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAkocmV2aXNp
b24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNjEsNyArMzYxLDcgQEAgc3RhdGljIGlubGluZSBib29sIGVt
cGhhc2lzUG9zaXRpb25IYXNOZQogYm9vbCBJbmxpbmVUZXh0Qm94OjplbXBoYXNpc01hcmtFeGlz
dHNBbmRJc0Fib3ZlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgYm9vbCYgYWJvdmUpIGNvbnN0
CiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUgaWYgdGhlcmUgYXJlIHRleHQg
ZW1waGFzaXMgbWFya3MgYW5kIHRoZXkgYXJlIHN1cHByZXNzZWQgYnkgcnVieSB0ZXh0LgotICAg
IGlmIChzdHlsZS50ZXh0RW1waGFzaXNNYXJrKCkgPT0gVGV4dEVtcGhhc2lzTWFya05vbmUpCisg
ICAgaWYgKHN0eWxlLnRleHRFbXBoYXNpc01hcmsoKSA9PSBUZXh0RW1waGFzaXNNYXJrOjpOb25l
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBUZXh0RW1waGFzaXNQb3NpdGlvbiBlbXBo
YXNpc1Bvc2l0aW9uID0gc3R5bGUudGV4dEVtcGhhc2lzUG9zaXRpb24oKTsKQEAgLTQzNCw3ICs0
MzQsNyBAQCBzdGF0aWMgTWFya2VkVGV4dCBjcmVhdGVNYXJrZWRUZXh0RnJvbVNlCiAKIHZvaWQg
SW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mZnNldCwgTGF5b3V0VW5pdCAvKmxpbmVUb3AqLywgTGF5b3V0VW5pdCAvKmxp
bmVCb3R0b20qLykKIHsKLSAgICBpZiAoaXNMaW5lQnJlYWsoKSB8fCAhcGFpbnRJbmZvLnNob3Vs
ZFBhaW50V2l0aGluUm9vdChyZW5kZXJlcigpKSB8fCByZW5kZXJlcigpLnN0eWxlKCkudmlzaWJp
bGl0eSgpICE9IFZJU0lCTEUKKyAgICBpZiAoaXNMaW5lQnJlYWsoKSB8fCAhcGFpbnRJbmZvLnNo
b3VsZFBhaW50V2l0aGluUm9vdChyZW5kZXJlcigpKSB8fCByZW5kZXJlcigpLnN0eWxlKCkudmlz
aWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUKICAgICAgICAgfHwgbV90cnVuY2F0aW9u
ID09IGNGdWxsVHJ1bmNhdGlvbiB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZU91dGxp
bmUgfHwgIW1fbGVuKQogICAgICAgICByZXR1cm47CiAKQEAgLTEyMzUsNyArMTIzNSw3IEBAIGZs
b2F0IElubGluZVRleHRCb3g6OnBvc2l0aW9uRm9yT2Zmc2V0KHUKIFRleHRSdW4gSW5saW5lVGV4
dEJveDo6Y3JlYXRlVGV4dFJ1bihib29sIGlnbm9yZUNvbWJpbmVkVGV4dCwgYm9vbCBpZ25vcmVI
eXBoZW4pIGNvbnN0CiB7CiAgICAgY29uc3QgYXV0byYgc3R5bGUgPSBsaW5lU3R5bGUoKTsKLSAg
ICBUZXh0UnVuIHRleHRSdW4geyB0ZXh0KGlnbm9yZUNvbWJpbmVkVGV4dCwgaWdub3JlSHlwaGVu
KSwgdGV4dFBvcygpLCBleHBhbnNpb24oKSwgZXhwYW5zaW9uQmVoYXZpb3IoKSwgZGlyZWN0aW9u
KCksIGRpck92ZXJyaWRlKCkgfHwgc3R5bGUucnRsT3JkZXJpbmcoKSA9PSBWaXN1YWxPcmRlciwg
IXJlbmRlcmVyKCkuY2FuVXNlU2ltcGxlRm9udENvZGVQYXRoKCkgfTsKKyAgICBUZXh0UnVuIHRl
eHRSdW4geyB0ZXh0KGlnbm9yZUNvbWJpbmVkVGV4dCwgaWdub3JlSHlwaGVuKSwgdGV4dFBvcygp
LCBleHBhbnNpb24oKSwgZXhwYW5zaW9uQmVoYXZpb3IoKSwgZGlyZWN0aW9uKCksIGRpck92ZXJy
aWRlKCkgfHwgc3R5bGUucnRsT3JkZXJpbmcoKSA9PSBPcmRlcjo6VmlzdWFsLCAhcmVuZGVyZXIo
KS5jYW5Vc2VTaW1wbGVGb250Q29kZVBhdGgoKSB9OwogICAgIHRleHRSdW4uc2V0VGFiU2l6ZSgh
c3R5bGUuY29sbGFwc2VXaGl0ZVNwYWNlKCksIHN0eWxlLnRhYlNpemUoKSk7CiAgICAgcmV0dXJu
IHRleHRSdW47CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUG9pbnRlckV2ZW50
c0hpdFJ1bGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUG9p
bnRlckV2ZW50c0hpdFJ1bGVzLmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1BvaW50ZXJFdmVudHNIaXRSdWxlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIyLDcgKzIyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Qb2ludGVyRXZlbnRzSGl0
UnVsZXM6OlBvaW50ZXJFdmVudHNIaXRSdWxlcyhFSGl0VGVzdGluZyBoaXRUZXN0aW5nLCBjb25z
dCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgRVBvaW50ZXJFdmVudHMgcG9pbnRlckV2ZW50cykK
K1BvaW50ZXJFdmVudHNIaXRSdWxlczo6UG9pbnRlckV2ZW50c0hpdFJ1bGVzKEVIaXRUZXN0aW5n
IGhpdFRlc3RpbmcsIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBQb2ludGVyRXZlbnRz
IHBvaW50ZXJFdmVudHMpCiAgICAgOiByZXF1aXJlVmlzaWJsZShmYWxzZSkKICAgICAsIHJlcXVp
cmVGaWxsKGZhbHNlKQogICAgICwgcmVxdWlyZVN0cm9rZShmYWxzZSkKQEAgLTMwLDc4ICszMCw3
OCBAQCBQb2ludGVyRXZlbnRzSGl0UnVsZXM6OlBvaW50ZXJFdmVudHNIaXRSCiAgICAgLCBjYW5I
aXRGaWxsKGZhbHNlKQogewogICAgIGlmIChyZXF1ZXN0LnN2Z0NsaXBDb250ZW50KCkpCi0gICAg
ICAgIHBvaW50ZXJFdmVudHMgPSBQRV9GSUxMOworICAgICAgICBwb2ludGVyRXZlbnRzID0gUG9p
bnRlckV2ZW50czo6RmlsbDsKIAogICAgIGlmIChoaXRUZXN0aW5nID09IFNWR19QQVRIX0hJVFRF
U1RJTkcpIHsKICAgICAgICAgc3dpdGNoIChwb2ludGVyRXZlbnRzKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjYXNlIFBFX1ZJU0lCTEVfUEFJTlRFRDoKLSAgICAgICAgICAgIGNhc2UgUEVfQVVU
TzogLy8gImF1dG8iIGlzIGxpa2UgInZpc2libGVQYWludGVkIiB3aGVuIGluIFNWRyBjb250ZW50
CisgICAgICAgICAgICBjYXNlIFBvaW50ZXJFdmVudHM6OlZpc2libGVQYWludGVkOgorICAgICAg
ICAgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpBdXRvOiAvLyAiYXV0byIgaXMgbGlrZSAidmlzaWJs
ZVBhaW50ZWQiIHdoZW4gaW4gU1ZHIGNvbnRlbnQKICAgICAgICAgICAgICAgICByZXF1aXJlRmls
bCA9IHRydWU7CiAgICAgICAgICAgICAgICAgcmVxdWlyZVN0cm9rZSA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgICAgICAgICBjYXNlIFBFX1ZJU0lCTEU6CisgICAg
ICAgICAgICBjYXNlIFBvaW50ZXJFdmVudHM6OlZpc2libGU6CiAgICAgICAgICAgICAgICAgcmVx
dWlyZVZpc2libGUgPSB0cnVlOwogICAgICAgICAgICAgICAgIGNhbkhpdEZpbGwgPSB0cnVlOwog
ICAgICAgICAgICAgICAgIGNhbkhpdFN0cm9rZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlIFBFX1ZJU0lCTEVfRklMTDoKKyAgICAgICAgICAgIGNhc2Ug
UG9pbnRlckV2ZW50czo6VmlzaWJsZUZpbGw6CiAgICAgICAgICAgICAgICAgcmVxdWlyZVZpc2li
bGUgPSB0cnVlOwogICAgICAgICAgICAgICAgIGNhbkhpdEZpbGwgPSB0cnVlOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBQRV9WSVNJQkxFX1NUUk9LRToKKyAgICAg
ICAgICAgIGNhc2UgUG9pbnRlckV2ZW50czo6VmlzaWJsZVN0cm9rZToKICAgICAgICAgICAgICAg
ICByZXF1aXJlVmlzaWJsZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgY2FuSGl0U3Ryb2tlID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgUEVfUEFJTlRF
RDoKKyAgICAgICAgICAgIGNhc2UgUG9pbnRlckV2ZW50czo6UGFpbnRlZDoKICAgICAgICAgICAg
ICAgICByZXF1aXJlRmlsbCA9IHRydWU7CiAgICAgICAgICAgICAgICAgcmVxdWlyZVN0cm9rZSA9
IHRydWU7CiAgICAgICAgICAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgICAgICAgICBjYXNlIFBF
X0FMTDoKKyAgICAgICAgICAgIGNhc2UgUG9pbnRlckV2ZW50czo6QWxsOgogICAgICAgICAgICAg
ICAgIGNhbkhpdEZpbGwgPSB0cnVlOwogICAgICAgICAgICAgICAgIGNhbkhpdFN0cm9rZSA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFBFX0ZJTEw6Cisg
ICAgICAgICAgICBjYXNlIFBvaW50ZXJFdmVudHM6OkZpbGw6CiAgICAgICAgICAgICAgICAgY2Fu
SGl0RmlsbCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNl
IFBFX1NUUk9LRToKKyAgICAgICAgICAgIGNhc2UgUG9pbnRlckV2ZW50czo6U3Ryb2tlOgogICAg
ICAgICAgICAgICAgIGNhbkhpdFN0cm9rZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBjYXNlIFBFX05PTkU6CisgICAgICAgICAgICBjYXNlIFBvaW50ZXJFdmVu
dHM6Ok5vbmU6CiAgICAgICAgICAgICAgICAgLy8gbm90aGluZyB0byBkbyBoZXJlLCBkZWZhdWx0
cyBhcmUgYWxsIGZhbHNlLgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
fSBlbHNlIHsKICAgICAgICAgc3dpdGNoIChwb2ludGVyRXZlbnRzKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjYXNlIFBFX1ZJU0lCTEVfUEFJTlRFRDoKLSAgICAgICAgICAgIGNhc2UgUEVfQVVU
TzogLy8gImF1dG8iIGlzIGxpa2UgInZpc2libGVQYWludGVkIiB3aGVuIGluIFNWRyBjb250ZW50
CisgICAgICAgICAgICBjYXNlIFBvaW50ZXJFdmVudHM6OlZpc2libGVQYWludGVkOgorICAgICAg
ICAgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpBdXRvOiAvLyAiYXV0byIgaXMgbGlrZSAidmlzaWJs
ZVBhaW50ZWQiIHdoZW4gaW4gU1ZHIGNvbnRlbnQKICAgICAgICAgICAgICAgICByZXF1aXJlVmlz
aWJsZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgcmVxdWlyZUZpbGwgPSB0cnVlOwogICAgICAg
ICAgICAgICAgIHJlcXVpcmVTdHJva2UgPSB0cnVlOwogICAgICAgICAgICAgICAgIGNhbkhpdEZp
bGwgPSB0cnVlOwogICAgICAgICAgICAgICAgIGNhbkhpdFN0cm9rZSA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFBFX1ZJU0lCTEVfRklMTDoKLSAgICAg
ICAgICAgIGNhc2UgUEVfVklTSUJMRV9TVFJPS0U6Ci0gICAgICAgICAgICBjYXNlIFBFX1ZJU0lC
TEU6CisgICAgICAgICAgICBjYXNlIFBvaW50ZXJFdmVudHM6OlZpc2libGVGaWxsOgorICAgICAg
ICAgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpWaXNpYmxlU3Ryb2tlOgorICAgICAgICAgICAgY2Fz
ZSBQb2ludGVyRXZlbnRzOjpWaXNpYmxlOgogICAgICAgICAgICAgICAgIHJlcXVpcmVWaXNpYmxl
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBjYW5IaXRGaWxsID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICBjYW5IaXRTdHJva2UgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSBQRV9QQUlOVEVEOgorICAgICAgICAgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpQ
YWludGVkOgogICAgICAgICAgICAgICAgIHJlcXVpcmVGaWxsID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICByZXF1aXJlU3Ryb2tlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBjYW5IaXRGaWxsID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICBjYW5IaXRTdHJva2UgPSB0cnVlOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBQRV9GSUxMOgotICAgICAgICAgICAgY2FzZSBQ
RV9TVFJPS0U6Ci0gICAgICAgICAgICBjYXNlIFBFX0FMTDoKKyAgICAgICAgICAgIGNhc2UgUG9p
bnRlckV2ZW50czo6RmlsbDoKKyAgICAgICAgICAgIGNhc2UgUG9pbnRlckV2ZW50czo6U3Ryb2tl
OgorICAgICAgICAgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpBbGw6CiAgICAgICAgICAgICAgICAg
Y2FuSGl0RmlsbCA9IHRydWU7CiAgICAgICAgICAgICAgICAgY2FuSGl0U3Ryb2tlID0gdHJ1ZTsK
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgUEVfTk9ORToKKyAgICAg
ICAgICAgIGNhc2UgUG9pbnRlckV2ZW50czo6Tm9uZToKICAgICAgICAgICAgICAgICAvLyBub3Ro
aW5nIHRvIGRvIGhlcmUsIGRlZmF1bHRzIGFyZSBhbGwgZmFsc2UuCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Qb2ludGVy
RXZlbnRzSGl0UnVsZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UG9pbnRlckV2ZW50c0hpdFJ1bGVzLmgJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9Qb2ludGVyRXZlbnRzSGl0UnVsZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MzIsNyArMzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIFNWR19URVhUX0hJVFRFU1RJTkcKICAgICB9
OwogCi0gICAgUG9pbnRlckV2ZW50c0hpdFJ1bGVzKEVIaXRUZXN0aW5nLCBjb25zdCBIaXRUZXN0
UmVxdWVzdCYsIEVQb2ludGVyRXZlbnRzKTsKKyAgICBQb2ludGVyRXZlbnRzSGl0UnVsZXMoRUhp
dFRlc3RpbmcsIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgUG9pbnRlckV2ZW50cyk7CiAKICAgICBi
b29sIHJlcXVpcmVWaXNpYmxlOwogICAgIGJvb2wgcmVxdWlyZUZpbGw7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc2MCw3ICs3NjAsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjpjb21wdXRlU3RhcnRQb3Np
CiAKICAgICBMYXlvdXRVbml0IHN0YXJ0T2ZmID0gc3RhcnRPZmZzZXRGb3JMaW5lSW5GcmFnbWVu
dChibG9ja09mZnNldCwgRG9Ob3RJbmRlbnRUZXh0LCBmcmFnbWVudCwgbG9naWNhbEhlaWdodEZv
ckNoaWxkKGNoaWxkKSk7CiAKLSAgICBpZiAoc3R5bGUoKS50ZXh0QWxpZ24oKSAhPSBXRUJLSVRf
Q0VOVEVSICYmICFjaGlsZC5zdHlsZSgpLm1hcmdpblN0YXJ0VXNpbmcoJnN0eWxlKCkpLmlzQXV0
bygpKSB7CisgICAgaWYgKHN0eWxlKCkudGV4dEFsaWduKCkgIT0gVGV4dEFsaWduTW9kZTo6V2Vi
S2l0Q2VudGVyICYmICFjaGlsZC5zdHlsZSgpLm1hcmdpblN0YXJ0VXNpbmcoJnN0eWxlKCkpLmlz
QXV0bygpKSB7CiAgICAgICAgIGlmIChjaGlsZE1hcmdpblN0YXJ0IDwgMCkKICAgICAgICAgICAg
IHN0YXJ0T2ZmICs9IGNoaWxkTWFyZ2luU3RhcnQ7CiAgICAgICAgIG5ld1Bvc2l0aW9uID0gc3Rk
OjptYXgobmV3UG9zaXRpb24sIHN0YXJ0T2ZmKTsgLy8gTGV0IHRoZSBmbG9hdCBzaXQgaW4gdGhl
IGNoaWxkJ3MgbWFyZ2luIGlmIGl0IGNhbiBmaXQuCkBAIC0xMTA5LDcgKzExMDksNyBAQCB2b2lk
IFJlbmRlckJsb2NrOjpwYWludChQYWludEluZm8mIHBhaW50CiAgICAgLy8gei1pbmRleC4gV2Ug
cGFpbnQgYWZ0ZXIgd2UgcGFpbnRlZCB0aGUgYmFja2dyb3VuZC9ib3JkZXIsIHNvIHRoYXQgdGhl
IHNjcm9sbGJhcnMgd2lsbAogICAgIC8vIHNpdCBhYm92ZSB0aGUgYmFja2dyb3VuZC9ib3JkZXIu
CiAgICAgaWYgKChwaGFzZSA9PSBQYWludFBoYXNlQmxvY2tCYWNrZ3JvdW5kIHx8IHBoYXNlID09
IFBhaW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZCkgJiYgaGFzT3ZlcmZsb3dDbGlwKCkgJiYg
bGF5ZXIoKQotICAgICAgICAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFICYmIHBh
aW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QoKnRoaXMpICYmICFwYWludEluZm8ucGFpbnRS
b290QmFja2dyb3VuZE9ubHkoKSkKKyAgICAgICAgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0g
VmlzaWJpbGl0eTo6VmlzaWJsZSAmJiBwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KCp0
aGlzKSAmJiAhcGFpbnRJbmZvLnBhaW50Um9vdEJhY2tncm91bmRPbmx5KCkpCiAgICAgICAgIGxh
eWVyKCktPnBhaW50T3ZlcmZsb3dDb250cm9scyhwYWludEluZm8uY29udGV4dCgpLCByb3VuZGVk
SW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldCksIHNuYXBwZWRJbnRSZWN0KHBhaW50SW5mby5y
ZWN0KSk7CiB9CiAKQEAgLTEyMTksNyArMTIxOSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50
T2JqZWN0KFBhaW50SW5mbyYKICAgICBQYWludFBoYXNlIHBhaW50UGhhc2UgPSBwYWludEluZm8u
cGhhc2U7CiAKICAgICAvLyAxLiBwYWludCBiYWNrZ3JvdW5kLCBib3JkZXJzIGV0YwotICAgIGlm
ICgocGFpbnRQaGFzZSA9PSBQYWludFBoYXNlQmxvY2tCYWNrZ3JvdW5kIHx8IHBhaW50UGhhc2Ug
PT0gUGFpbnRQaGFzZUNoaWxkQmxvY2tCYWNrZ3JvdW5kKSAmJiBzdHlsZSgpLnZpc2liaWxpdHko
KSA9PSBWSVNJQkxFKSB7CisgICAgaWYgKChwYWludFBoYXNlID09IFBhaW50UGhhc2VCbG9ja0Jh
Y2tncm91bmQgfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlQ2hpbGRCbG9ja0JhY2tncm91bmQp
ICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUpIHsKICAgICAg
ICAgaWYgKGhhc1Zpc2libGVCb3hEZWNvcmF0aW9ucygpKQogICAgICAgICAgICAgcGFpbnRCb3hE
ZWNvcmF0aW9ucyhwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKICAgICB9CkBAIC0xMjI4LDEyICsx
MjI4LDEyIEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYKICAgICBp
ZiAocGFpbnRQaGFzZSA9PSBQYWludFBoYXNlQmxvY2tCYWNrZ3JvdW5kIHx8IHBhaW50UGhhc2Ug
PT0gUGFpbnRQaGFzZUNoaWxkQmxvY2tCYWNrZ3JvdW5kIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQ
aGFzZVNlbGVjdGlvbikKICAgICAgICAgcGFpbnRFeGNsdWRlZENoaWxkcmVuSW5Cb3JkZXIocGFp
bnRJbmZvLCBwYWludE9mZnNldCk7CiAgICAgCi0gICAgaWYgKHBhaW50UGhhc2UgPT0gUGFpbnRQ
aGFzZU1hc2sgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkgeworICAgIGlmIChw
YWludFBoYXNlID09IFBhaW50UGhhc2VNYXNrICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZp
c2liaWxpdHk6OlZpc2libGUpIHsKICAgICAgICAgcGFpbnRNYXNrKHBhaW50SW5mbywgcGFpbnRP
ZmZzZXQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHBhaW50UGhhc2UgPT0g
UGFpbnRQaGFzZUNsaXBwaW5nTWFzayAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxF
KSB7CisgICAgaWYgKHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZUNsaXBwaW5nTWFzayAmJiBzdHls
ZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlKSB7CiAgICAgICAgIHBhaW50
Q2xpcHBpbmdNYXNrKHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMTI0OSw3ICsxMjQ5LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRPYmplY3Qo
UGFpbnRJbmZvJgogICAgIC8vIENvbHVtbiBydWxlcyBuZWVkIHRvIGFjY291bnQgZm9yIHNjcm9s
bGluZyBhbmQgY2xpcHBpbmcuCiAgICAgLy8gRklYTUU6IENsaXBwaW5nIG9mIGNvbHVtbiBydWxl
cyBkb2VzIG5vdCB3b3JrLiBXZSB3aWxsIG5lZWQgYSBzZXBhcmF0ZSBwYWludCBwaGFzZSBmb3Ig
Y29sdW1uIHJ1bGVzIEkgc3VzcGVjdCBpbiBvcmRlciB0byBnZXQKICAgICAvLyBjbGlwcGluZyBj
b3JyZWN0IChzaW5jZSBpdCBoYXMgdG8gcGFpbnQgYXMgYmFja2dyb3VuZCBidXQgaXMgc3RpbGwg
Y29uc2lkZXJlZCAiY29udGVudHMiKS4KLSAgICBpZiAoKHBhaW50UGhhc2UgPT0gUGFpbnRQaGFz
ZUJsb2NrQmFja2dyb3VuZCB8fCBwYWludFBoYXNlID09IFBhaW50UGhhc2VDaGlsZEJsb2NrQmFj
a2dyb3VuZCkgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkKKyAgICBpZiAoKHBh
aW50UGhhc2UgPT0gUGFpbnRQaGFzZUJsb2NrQmFja2dyb3VuZCB8fCBwYWludFBoYXNlID09IFBh
aW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZCkgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0g
VmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcGFpbnRDb2x1bW5SdWxlcyhwYWludEluZm8s
IHNjcm9sbGVkT2Zmc2V0KTsKIAogICAgIC8vIERvbmUgd2l0aCBiYWNrZ3JvdW5kcywgYm9yZGVy
cyBhbmQgY29sdW1uIHJ1bGVzLgpAQCAtMTI3MSwxMyArMTI3MSwxMyBAQCB2b2lkIFJlbmRlckJs
b2NrOjpwYWludE9iamVjdChQYWludEluZm8mCiAgICAgICAgIHBhaW50RmxvYXRzKHBhaW50SW5m
bywgc2Nyb2xsZWRPZmZzZXQsIHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZVNlbGVjdGlvbiB8fCBw
YWludFBoYXNlID09IFBhaW50UGhhc2VUZXh0Q2xpcCk7CiAKICAgICAvLyA1LiBwYWludCBvdXRs
aW5lLgotICAgIGlmICgocGFpbnRQaGFzZSA9PSBQYWludFBoYXNlT3V0bGluZSB8fCBwYWludFBo
YXNlID09IFBhaW50UGhhc2VTZWxmT3V0bGluZSkgJiYgaGFzT3V0bGluZSgpICYmIHN0eWxlKCku
dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpCisgICAgaWYgKChwYWludFBoYXNlID09IFBhaW50UGhh
c2VPdXRsaW5lIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKSAmJiBoYXNP
dXRsaW5lKCkgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkK
ICAgICAgICAgcGFpbnRPdXRsaW5lKHBhaW50SW5mbywgTGF5b3V0UmVjdChwYWludE9mZnNldCwg
c2l6ZSgpKSk7CiAKICAgICAvLyA2LiBwYWludCBjb250aW51YXRpb24gb3V0bGluZXMuCiAgICAg
aWYgKChwYWludFBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IHBhaW50UGhhc2UgPT0gUGFp
bnRQaGFzZUNoaWxkT3V0bGluZXMpKSB7CiAgICAgICAgIFJlbmRlcklubGluZSogaW5saW5lQ29u
dCA9IGlubGluZUNvbnRpbnVhdGlvbigpOwotICAgICAgICBpZiAoaW5saW5lQ29udCAmJiBpbmxp
bmVDb250LT5oYXNPdXRsaW5lKCkgJiYgaW5saW5lQ29udC0+c3R5bGUoKS52aXNpYmlsaXR5KCkg
PT0gVklTSUJMRSkgeworICAgICAgICBpZiAoaW5saW5lQ29udCAmJiBpbmxpbmVDb250LT5oYXNP
dXRsaW5lKCkgJiYgaW5saW5lQ29udC0+c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0
eTo6VmlzaWJsZSkgewogICAgICAgICAgICAgUmVuZGVySW5saW5lKiBpbmxpbmVSZW5kZXJlciA9
IGRvd25jYXN0PFJlbmRlcklubGluZT4oaW5saW5lQ29udC0+ZWxlbWVudCgpLT5yZW5kZXJlcigp
KTsKICAgICAgICAgICAgIFJlbmRlckJsb2NrKiBjb250YWluaW5nQmxvY2sgPSB0aGlzLT5jb250
YWluaW5nQmxvY2soKTsKIApAQCAtMTM3Myw3ICsxMzczLDcgQEAgYm9vbCBSZW5kZXJCbG9jazo6
c2hvdWxkUGFpbnRTZWxlY3Rpb25HYQogICAgIGlmIChzZXR0aW5ncygpLnNlbGVjdGlvblBhaW50
aW5nV2l0aG91dFNlbGVjdGlvbkdhcHNFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIHJldHVybiBzZWxlY3Rpb25TdGF0ZSgpICE9IFNlbGVjdGlvbk5vbmUgJiYgc3R5bGUo
KS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSAmJiBpc1NlbGVjdGlvblJvb3QoKTsKKyAgICByZXR1
cm4gc2VsZWN0aW9uU3RhdGUoKSAhPSBTZWxlY3Rpb25Ob25lICYmIHN0eWxlKCkudmlzaWJpbGl0
eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUgJiYgaXNTZWxlY3Rpb25Sb290KCk7CiB9CiAKIGJv
b2wgUmVuZGVyQmxvY2s6OmlzU2VsZWN0aW9uUm9vdCgpIGNvbnN0CkBAIC0xODY2LDcgKzE4NjYs
NyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjphZGp1c3RMb2dpY2FsTGVmCiAgICAgaWYgKGFw
cGx5VGV4dEluZGVudCAmJiBzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKICAgICAg
ICAgbGVmdCArPSB0ZXh0SW5kZW50T2Zmc2V0KCk7CiAKLSAgICBpZiAoc3R5bGUoKS5saW5lQWxp
Z24oKSA9PSBMaW5lQWxpZ25Ob25lKQorICAgIGlmIChzdHlsZSgpLmxpbmVBbGlnbigpID09IExp
bmVBbGlnbjo6Tm9uZSkKICAgICAgICAgcmV0dXJuIGxlZnQ7CiAgICAgCiAgICAgLy8gUHVzaCBp
biBvdXIgbGVmdCBvZmZzZXQgc28gdGhhdCBpdCBpcyBhbGlnbmVkIHdpdGggdGhlIGNoYXJhY3Rl
ciBncmlkLgpAQCAtMTkwNiw3ICsxOTA2LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6YWRq
dXN0TG9naWNhbFJpZwogICAgIGlmIChhcHBseVRleHRJbmRlbnQgJiYgIXN0eWxlKCkuaXNMZWZ0
VG9SaWdodERpcmVjdGlvbigpKQogICAgICAgICByaWdodCAtPSB0ZXh0SW5kZW50T2Zmc2V0KCk7
CiAgICAgCi0gICAgaWYgKHN0eWxlKCkubGluZUFsaWduKCkgPT0gTGluZUFsaWduTm9uZSkKKyAg
ICBpZiAoc3R5bGUoKS5saW5lQWxpZ24oKSA9PSBMaW5lQWxpZ246Ok5vbmUpCiAgICAgICAgIHJl
dHVybiByaWdodDsKICAgICAKICAgICAvLyBQdXNoIGluIG91ciByaWdodCBvZmZzZXQgc28gdGhh
dCBpdCBpcyBhbGlnbmVkIHdpdGggdGhlIGNoYXJhY3RlciBncmlkLgpAQCAtMjEzNCw3ICsyMTM0
LDcgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlckJsb2NrOjpwb3NpdGlvbkZvcgogCiBzdGF0aWMg
aW5saW5lIGJvb2wgaXNDaGlsZEhpdFRlc3RDYW5kaWRhdGUoY29uc3QgUmVuZGVyQm94JiBib3gp
CiB7Ci0gICAgcmV0dXJuIGJveC5oZWlnaHQoKSAmJiBib3guc3R5bGUoKS52aXNpYmlsaXR5KCkg
PT0gVklTSUJMRSAmJiAhYm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmICFib3guaXNJbkZs
b3dSZW5kZXJGcmFnbWVudGVkRmxvdygpOworICAgIHJldHVybiBib3guaGVpZ2h0KCkgJiYgYm94
LnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUgJiYgIWJveC5pc091
dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAhYm94LmlzSW5GbG93UmVuZGVyRnJhZ21lbnRlZEZsb3co
KTsKIH0KIAogLy8gVmFsaWQgY2FuZGlkYXRlcyBpbiBhIEZyYWdtZW50ZWRGbG93IG11c3QgYmUg
cmVuZGVyZWQgYnkgdGhlIGZyYWdtZW50LgpAQCAtMjI1OCw3ICsyMjU4LDcgQEAgdm9pZCBSZW5k
ZXJCbG9jazo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYQogdm9pZCBSZW5kZXJCbG9jazo6Y29tcHV0
ZUJsb2NrUHJlZmVycmVkTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgs
IExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3QKIHsKICAgICBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGVUb1VzZSA9IHN0eWxlKCk7Ci0gICAgYm9vbCBub3dyYXAgPSBzdHlsZVRvVXNl
LndoaXRlU3BhY2UoKSA9PSBOT1dSQVA7CisgICAgYm9vbCBub3dyYXAgPSBzdHlsZVRvVXNlLndo
aXRlU3BhY2UoKSA9PSBXaGl0ZVNwYWNlOjpOb1dyYXA7CiAKICAgICBSZW5kZXJPYmplY3QqIGNo
aWxkID0gZmlyc3RDaGlsZCgpOwogICAgIFJlbmRlckJsb2NrKiBjb250YWluaW5nQmxvY2sgPSB0
aGlzLT5jb250YWluaW5nQmxvY2soKTsKQEAgLTI1NTAsNyArMjU1MCw3IEBAIFJlbmRlckJsb2Nr
KiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmxvY2sKICAgICBSZW5kZXJCbG9jayogZmlyc3RMaW5l
QmxvY2sgPSBjb25zdF9jYXN0PFJlbmRlckJsb2NrKj4odGhpcyk7CiAgICAgYm9vbCBoYXNQc2V1
ZG8gPSBmYWxzZTsKICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBoYXNQc2V1ZG8gPSBmaXJz
dExpbmVCbG9jay0+c3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShGSVJTVF9MSU5FKTsKKyAgICAgICAg
aGFzUHNldWRvID0gZmlyc3RMaW5lQmxvY2stPnN0eWxlKCkuaGFzUHNldWRvU3R5bGUoUHNldWRv
SWQ6OkZpcnN0TGluZSk7CiAgICAgICAgIGlmIChoYXNQc2V1ZG8pCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgUmVuZGVyRWxlbWVudCogcGFyZW50QmxvY2sgPSBmaXJzdExpbmVCbG9jay0+
cGFyZW50KCk7CkBAIC0yNTcwLDcgKzI1NzAsNyBAQCBzdGF0aWMgaW5saW5lIFJlbmRlckJsb2Nr
KiBmaW5kRmlyc3RMZXR0CiB7CiAgICAgUmVuZGVyQmxvY2sqIGZpcnN0TGV0dGVyQmxvY2sgPSBz
dGFydDsKICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBib29sIGNhbkhhdmVGaXJzdExldHRl
clJlbmRlcmVyID0gZmlyc3RMZXR0ZXJCbG9jay0+c3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShGSVJT
VF9MRVRURVIpCisgICAgICAgIGJvb2wgY2FuSGF2ZUZpcnN0TGV0dGVyUmVuZGVyZXIgPSBmaXJz
dExldHRlckJsb2NrLT5zdHlsZSgpLmhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkOjpGaXJzdExldHRl
cikKICAgICAgICAgICAgICYmIGZpcnN0TGV0dGVyQmxvY2stPmNhbkhhdmVHZW5lcmF0ZWRDaGls
ZHJlbigpCiAgICAgICAgICAgICAmJiBpc1JlbmRlckJsb2NrRmxvd09yUmVuZGVyQnV0dG9uKCpm
aXJzdExldHRlckJsb2NrKTsKICAgICAgICAgaWYgKGNhbkhhdmVGaXJzdExldHRlclJlbmRlcmVy
KQpAQCAtMjU5NSw3ICsyNTk1LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6Z2V0Rmlyc3RMZXR0ZXIo
UmVuZGVyTwogICAgICAgICByZXR1cm47CiAKICAgICAvLyBEb24ndCByZWN1cgotICAgIGlmIChz
dHlsZSgpLnN0eWxlVHlwZSgpID09IEZJUlNUX0xFVFRFUikKKyAgICBpZiAoc3R5bGUoKS5zdHls
ZVR5cGUoKSA9PSBQc2V1ZG9JZDo6Rmlyc3RMZXR0ZXIpCiAgICAgICAgIHJldHVybjsKICAgICAK
ICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBkZXN0cm95IHRoZSBmaXJzdC1sZXR0ZXIgb2JqZWN0
IGlmIGl0IGlzIG5vIGxvbmdlciB0aGUgZmlyc3QgY2hpbGQuIE5lZWQgdG8gZmluZApAQCAtMjYy
MCw3ICsyNjIwLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6Z2V0Rmlyc3RMZXR0ZXIoUmVuZGVyTwog
ICAgICAgICBpZiAoaXM8UmVuZGVyTGlzdE1hcmtlcj4oY3VycmVudCkpCiAgICAgICAgICAgICBm
aXJzdExldHRlciA9IGN1cnJlbnQubmV4dFNpYmxpbmcoKTsKICAgICAgICAgZWxzZSBpZiAoY3Vy
cmVudC5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKLSAgICAgICAgICAgIGlm
IChjdXJyZW50LnN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gRklSU1RfTEVUVEVSKSB7CisgICAgICAg
ICAgICBpZiAoY3VycmVudC5zdHlsZSgpLnN0eWxlVHlwZSgpID09IFBzZXVkb0lkOjpGaXJzdExl
dHRlcikgewogICAgICAgICAgICAgICAgIGZpcnN0TGV0dGVyID0gY3VycmVudC5maXJzdENoaWxk
KCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0yNjI5LDcgKzI2
MjksNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpnZXRGaXJzdExldHRlcihSZW5kZXJPCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgZWxzZSBpZiAoY3VycmVudC5pc0ZsZXhpYmxlQm94SW5jbHVk
aW5nRGVwcmVjYXRlZCgpIHx8IGN1cnJlbnQuaXNSZW5kZXJHcmlkKCkpCiAgICAgICAgICAgICBm
aXJzdExldHRlciA9IGN1cnJlbnQubmV4dFNpYmxpbmcoKTsKLSAgICAgICAgZWxzZSBpZiAoY3Vy
cmVudC5zdHlsZSgpLmhhc1BzZXVkb1N0eWxlKEZJUlNUX0xFVFRFUikgJiYgY3VycmVudC5jYW5I
YXZlR2VuZXJhdGVkQ2hpbGRyZW4oKSkgIHsKKyAgICAgICAgZWxzZSBpZiAoY3VycmVudC5zdHls
ZSgpLmhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkOjpGaXJzdExldHRlcikgJiYgY3VycmVudC5jYW5I
YXZlR2VuZXJhdGVkQ2hpbGRyZW4oKSkgIHsKICAgICAgICAgICAgIC8vIFdlIGZvdW5kIGEgbG93
ZXItbGV2ZWwgbm9kZSB3aXRoIGZpcnN0LWxldHRlciwgd2hpY2ggc3VwZXJzZWRlcyB0aGUgaGln
aGVyLWxldmVsIHN0eWxlCiAgICAgICAgICAgICBmaXJzdExldHRlckNvbnRhaW5lciA9ICZjdXJy
ZW50OwogICAgICAgICAgICAgZmlyc3RMZXR0ZXIgPSBjdXJyZW50LmZpcnN0Q2hpbGQoKTsKQEAg
LTI4NjgsMTQgKzI4NjgsMTQgQEAgdm9pZCBSZW5kZXJCbG9jazo6YWRkRm9jdXNSaW5nUmVjdHMo
VmVjdAogICAgICAgICBpbmxpbmVDb250aW51YXRpb24tPmFkZEZvY3VzUmluZ1JlY3RzKHJlY3Rz
LCBmbG9vcmVkTGF5b3V0UG9pbnQoTGF5b3V0UG9pbnQoYWRkaXRpb25hbE9mZnNldCArIGlubGlu
ZUNvbnRpbnVhdGlvbi0+Y29udGFpbmluZ0Jsb2NrKCktPmxvY2F0aW9uKCkgLSBsb2NhdGlvbigp
KSksIHBhaW50Q29udGFpbmVyKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckJsb2NrPiBSZW5kZXJC
bG9jazo6Y3JlYXRlQW5vbnltb3VzQmxvY2tXaXRoU3R5bGVBbmREaXNwbGF5KERvY3VtZW50JiBk
b2N1bWVudCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFRGlzcGxheSBkaXNwbGF5KQorUmVu
ZGVyUHRyPFJlbmRlckJsb2NrPiBSZW5kZXJCbG9jazo6Y3JlYXRlQW5vbnltb3VzQmxvY2tXaXRo
U3R5bGVBbmREaXNwbGF5KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlLCBEaXNwbGF5VHlwZSBkaXNwbGF5KQogewogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRv
IGNvbnZlcnQgYWxsIG91ciBpbmxpbmUgZGlzcGxheXMgdG8gYmxvY2stdHlwZSBpbiB0aGUgYW5v
bnltb3VzIGxvZ2ljID8KICAgICBSZW5kZXJQdHI8UmVuZGVyQmxvY2s+IG5ld0JveDsKLSAgICBp
ZiAoZGlzcGxheSA9PSBGTEVYIHx8IGRpc3BsYXkgPT0gSU5MSU5FX0ZMRVgpCi0gICAgICAgIG5l
d0JveCA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlckZsZXhpYmxlQm94Pihkb2N1bWVudCwgUmVuZGVy
U3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUsIEZMRVgpKTsKKyAg
ICBpZiAoZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6RmxleCB8fCBkaXNwbGF5ID09IERpc3BsYXlU
eXBlOjpJbmxpbmVGbGV4KQorICAgICAgICBuZXdCb3ggPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJG
bGV4aWJsZUJveD4oZG9jdW1lbnQsIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdp
dGhEaXNwbGF5KHN0eWxlLCBEaXNwbGF5VHlwZTo6RmxleCkpOwogICAgIGVsc2UKLSAgICAgICAg
bmV3Qm94ID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyQmxvY2tGbG93Pihkb2N1bWVudCwgUmVuZGVy
U3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUsIEJMT0NLKSk7Cisg
ICAgICAgIG5ld0JveCA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlckJsb2NrRmxvdz4oZG9jdW1lbnQs
IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlLCBEaXNw
bGF5VHlwZTo6QmxvY2spKTsKICAgICAKICAgICBuZXdCb3gtPmluaXRpYWxpemVTdHlsZSgpOwog
ICAgIHJldHVybiBuZXdCb3g7CkBAIC0yOTMwLDkgKzI5MzAsOSBAQCBib29sIFJlbmRlckJsb2Nr
OjpjaGlsZEJveElzVW5zcGxpdHRhYmxlCiAgICAgUmVuZGVyRnJhZ21lbnRlZEZsb3cqIGZyYWdt
ZW50ZWRGbG93ID0gZW5jbG9zaW5nRnJhZ21lbnRlZEZsb3coKTsKICAgICBib29sIGNoZWNrQ29s
dW1uQnJlYWtzID0gZnJhZ21lbnRlZEZsb3cgJiYgZnJhZ21lbnRlZEZsb3ctPnNob3VsZENoZWNr
Q29sdW1uQnJlYWtzKCk7CiAgICAgYm9vbCBjaGVja1BhZ2VCcmVha3MgPSAhY2hlY2tDb2x1bW5C
cmVha3MgJiYgdmlldygpLmZyYW1lVmlldygpLmxheW91dENvbnRleHQoKS5sYXlvdXRTdGF0ZSgp
LT5wYWdlTG9naWNhbEhlaWdodCgpOwotICAgIHJldHVybiBjaGlsZC5pc1Vuc3BsaXR0YWJsZUZv
clBhZ2luYXRpb24oKSB8fCBjaGlsZC5zdHlsZSgpLmJyZWFrSW5zaWRlKCkgPT0gQXZvaWRCcmVh
a0luc2lkZQotICAgICAgICB8fCAoY2hlY2tDb2x1bW5CcmVha3MgJiYgY2hpbGQuc3R5bGUoKS5i
cmVha0luc2lkZSgpID09IEF2b2lkQ29sdW1uQnJlYWtJbnNpZGUpCi0gICAgICAgIHx8IChjaGVj
a1BhZ2VCcmVha3MgJiYgY2hpbGQuc3R5bGUoKS5icmVha0luc2lkZSgpID09IEF2b2lkUGFnZUJy
ZWFrSW5zaWRlKTsKKyAgICByZXR1cm4gY2hpbGQuaXNVbnNwbGl0dGFibGVGb3JQYWdpbmF0aW9u
KCkgfHwgY2hpbGQuc3R5bGUoKS5icmVha0luc2lkZSgpID09IEJyZWFrSW5zaWRlOjpBdm9pZAor
ICAgICAgICB8fCAoY2hlY2tDb2x1bW5CcmVha3MgJiYgY2hpbGQuc3R5bGUoKS5icmVha0luc2lk
ZSgpID09IEJyZWFrSW5zaWRlOjpBdm9pZENvbHVtbikKKyAgICAgICAgfHwgKGNoZWNrUGFnZUJy
ZWFrcyAmJiBjaGlsZC5zdHlsZSgpLmJyZWFrSW5zaWRlKCkgPT0gQnJlYWtJbnNpZGU6OkF2b2lk
UGFnZSk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVGcmFnbWVudFJhbmdlRm9yQm94
Q2hpbGQoY29uc3QgUmVuZGVyQm94JiBib3gpIGNvbnN0CkBAIC0zMDk2LDcgKzMwOTYsNyBAQCBj
b25zdCBjaGFyKiBSZW5kZXJCbG9jazo6cmVuZGVyTmFtZSgpIGNvCiBUZXh0UnVuIFJlbmRlckJs
b2NrOjpjb25zdHJ1Y3RUZXh0UnVuKFN0cmluZ1ZpZXcgc3RyaW5nVmlldywgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb24sIFRleHRSdW5GbGFncyBm
bGFncykKIHsKICAgICBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24gPSBMVFI7Ci0gICAgYm9v
bCBkaXJlY3Rpb25hbE92ZXJyaWRlID0gc3R5bGUucnRsT3JkZXJpbmcoKSA9PSBWaXN1YWxPcmRl
cjsKKyAgICBib29sIGRpcmVjdGlvbmFsT3ZlcnJpZGUgPSBzdHlsZS5ydGxPcmRlcmluZygpID09
IE9yZGVyOjpWaXN1YWw7CiAgICAgaWYgKGZsYWdzICE9IERlZmF1bHRUZXh0UnVuRmxhZ3MpIHsK
ICAgICAgICAgaWYgKGZsYWdzICYgUmVzcGVjdERpcmVjdGlvbikKICAgICAgICAgICAgIHRleHRE
aXJlY3Rpb24gPSBzdHlsZS5kaXJlY3Rpb24oKTsKQEAgLTMyMzEsMTAgKzMyMzEsMTAgQEAgdm9p
ZCBSZW5kZXJCbG9jazo6bGF5b3V0RXhjbHVkZWRDaGlsZHJlbgogICAgIExheW91dFVuaXQgbG9n
aWNhbExlZnQ7CiAgICAgaWYgKHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSB7CiAg
ICAgICAgIHN3aXRjaCAobGVnZW5kLnN0eWxlKCkudGV4dEFsaWduKCkpIHsKLSAgICAgICAgY2Fz
ZSBDRU5URVI6CisgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6Q2VudGVyOgogICAgICAgICAg
ICAgbG9naWNhbExlZnQgPSAobG9naWNhbFdpZHRoKCkgLSBsb2dpY2FsV2lkdGhGb3JDaGlsZChs
ZWdlbmQpKSAvIDI7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBSSUdIVDoKKyAg
ICAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpSaWdodDoKICAgICAgICAgICAgIGxvZ2ljYWxMZWZ0
ID0gbG9naWNhbFdpZHRoKCkgLSBib3JkZXJFbmQoKSAtIHBhZGRpbmdFbmQoKSAtIGxvZ2ljYWxX
aWR0aEZvckNoaWxkKGxlZ2VuZCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVs
dDoKQEAgLTMyNDMsMTAgKzMyNDMsMTAgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0RXhjbHVk
ZWRDaGlsZHJlbgogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgc3dpdGNoIChsZWdl
bmQuc3R5bGUoKS50ZXh0QWxpZ24oKSkgewotICAgICAgICBjYXNlIExFRlQ6CisgICAgICAgIGNh
c2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgICAgIGxvZ2ljYWxMZWZ0ID0gYm9yZGVy
U3RhcnQoKSArIHBhZGRpbmdTdGFydCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgQ0VOVEVSOiB7CisgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6Q2VudGVyOiB7CiAgICAg
ICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgZXh0cmEgcGl4ZWwgZ29lcyB0byB0aGUgZW5k
IHNpZGUgaW4gUlRMIChzaW5jZSBpdCB3ZW50IHRvIHRoZSBlbmQgc2lkZQogICAgICAgICAgICAg
Ly8gaW4gTFRSKS4KICAgICAgICAgICAgIExheW91dFVuaXQgY2VudGVyZWRXaWR0aCA9IGxvZ2lj
YWxXaWR0aCgpIC0gbG9naWNhbFdpZHRoRm9yQ2hpbGQobGVnZW5kKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTg2LDgg
KzE4Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZENvbnRpbnVhdGlvbldpdGhPdXRsaW5lKFJl
bmRlcklubGluZSopOwogICAgIGJvb2wgcGFpbnRzQ29udGludWF0aW9uT3V0bGluZShSZW5kZXJJ
bmxpbmUqKTsKIAotICAgIHN0YXRpYyBSZW5kZXJQdHI8UmVuZGVyQmxvY2s+IGNyZWF0ZUFub255
bW91c1dpdGhQYXJlbnRSZW5kZXJlckFuZERpc3BsYXkoY29uc3QgUmVuZGVyQm94JiBwYXJlbnQs
IEVEaXNwbGF5ID0gQkxPQ0spOwotICAgIFJlbmRlclB0cjxSZW5kZXJCbG9jaz4gY3JlYXRlQW5v
bnltb3VzQmxvY2soRURpc3BsYXkgPSBCTE9DSykgY29uc3Q7CisgICAgc3RhdGljIFJlbmRlclB0
cjxSZW5kZXJCbG9jaz4gY3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyQW5kRGlzcGxh
eShjb25zdCBSZW5kZXJCb3gmIHBhcmVudCwgRGlzcGxheVR5cGUgPSBEaXNwbGF5VHlwZTo6Qmxv
Y2spOworICAgIFJlbmRlclB0cjxSZW5kZXJCbG9jaz4gY3JlYXRlQW5vbnltb3VzQmxvY2soRGlz
cGxheVR5cGUgPSBEaXNwbGF5VHlwZTo6QmxvY2spIGNvbnN0OwogCiAgICAgUmVuZGVyUHRyPFJl
bmRlckJveD4gY3JlYXRlQW5vbnltb3VzQm94V2l0aFNhbWVUeXBlQXMoY29uc3QgUmVuZGVyQm94
JikgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTQxOCw3ICs0MTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCBibG9ja1dpbGxCZURlc3Ryb3llZCgpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBSZW5k
ZXJQdHI8UmVuZGVyQmxvY2s+IGNyZWF0ZUFub255bW91c0Jsb2NrV2l0aFN0eWxlQW5kRGlzcGxh
eShEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgRURpc3BsYXkpOworICAgIHN0YXRpYyBS
ZW5kZXJQdHI8UmVuZGVyQmxvY2s+IGNyZWF0ZUFub255bW91c0Jsb2NrV2l0aFN0eWxlQW5kRGlz
cGxheShEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgRGlzcGxheVR5cGUpOwogCiAgICAg
Ly8gRklYTUUtQkxPQ0tGTE9XOiBSZW1vdmUgdmlydHVhbGl6YWlvbiB3aGVuIGFsbCBjYWxsZXJz
IGhhdmUgbW92ZWQgdG8gUmVuZGVyQmxvY2tGbG93CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IGxv
Z2ljYWxSaWdodEZsb2F0T2Zmc2V0Rm9yTGluZShMYXlvdXRVbml0LCBMYXlvdXRVbml0IGZpeGVk
T2Zmc2V0LCBMYXlvdXRVbml0KSBjb25zdCB7IHJldHVybiBmaXhlZE9mZnNldDsgfTsKQEAgLTUy
NSw3ICs1MjUsNyBAQCBMYXlvdXRVbml0IGJsb2NrRGlyZWN0aW9uT2Zmc2V0KFJlbmRlckJsCiBM
YXlvdXRVbml0IGlubGluZURpcmVjdGlvbk9mZnNldChSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBj
b25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdEJsb2NrKTsKIFZpc2libGVQb3NpdGlvbiBw
b3NpdGlvbkZvclBvaW50UmVzcGVjdGluZ0VkaXRpbmdCb3VuZGFyaWVzKFJlbmRlckJsb2NrJiwg
UmVuZGVyQm94JiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKIAotaW5saW5lIFJlbmRlclB0cjxSZW5k
ZXJCbG9jaz4gUmVuZGVyQmxvY2s6OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlckFu
ZERpc3BsYXkoY29uc3QgUmVuZGVyQm94JiBwYXJlbnQsIEVEaXNwbGF5IGRpc3BsYXkpCitpbmxp
bmUgUmVuZGVyUHRyPFJlbmRlckJsb2NrPiBSZW5kZXJCbG9jazo6Y3JlYXRlQW5vbnltb3VzV2l0
aFBhcmVudFJlbmRlcmVyQW5kRGlzcGxheShjb25zdCBSZW5kZXJCb3gmIHBhcmVudCwgRGlzcGxh
eVR5cGUgZGlzcGxheSkKIHsKICAgICByZXR1cm4gY3JlYXRlQW5vbnltb3VzQmxvY2tXaXRoU3R5
bGVBbmREaXNwbGF5KHBhcmVudC5kb2N1bWVudCgpLCBwYXJlbnQuc3R5bGUoKSwgZGlzcGxheSk7
CiB9CkBAIC01MzUsNyArNTM1LDcgQEAgaW5saW5lIFJlbmRlclB0cjxSZW5kZXJCb3g+IFJlbmRl
ckJsb2NrOgogICAgIHJldHVybiBjcmVhdGVBbm9ueW1vdXNCbG9ja1dpdGhTdHlsZUFuZERpc3Bs
YXkoZG9jdW1lbnQoKSwgcmVuZGVyZXIuc3R5bGUoKSwgc3R5bGUoKS5kaXNwbGF5KCkpOwogfQog
Ci1pbmxpbmUgUmVuZGVyUHRyPFJlbmRlckJsb2NrPiBSZW5kZXJCbG9jazo6Y3JlYXRlQW5vbnlt
b3VzQmxvY2soRURpc3BsYXkgZGlzcGxheSkgY29uc3QKK2lubGluZSBSZW5kZXJQdHI8UmVuZGVy
QmxvY2s+IFJlbmRlckJsb2NrOjpjcmVhdGVBbm9ueW1vdXNCbG9jayhEaXNwbGF5VHlwZSBkaXNw
bGF5KSBjb25zdAogewogICAgIHJldHVybiBjcmVhdGVBbm9ueW1vdXNCbG9ja1dpdGhTdHlsZUFu
ZERpc3BsYXkoZG9jdW1lbnQoKSwgc3R5bGUoKSwgZGlzcGxheSk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAkocmV2aXNpb24gMjMyMTA0
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQxOCw3ICs0MTgsNyBAQCBib29sIFJlbmRlckJsb2NrRmxvdzo6d2lsbENy
ZWF0ZUNvbHVtbnMoCiAgICAgaWYgKCFmaXJzdENoaWxkKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGlmIChzdHlsZSgpLnN0eWxlVHlwZSgpICE9IE5PUFNFVURPKQorICAgIGlmIChz
dHlsZSgpLnN0eWxlVHlwZSgpICE9IFBzZXVkb0lkOjpOb25lKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICAvLyBJZiBvdmVyZmxvdy15IGlzIHNldCB0byBwYWdlZC14IG9yIHBhZ2VkLXkg
b24gdGhlIGJvZHkgb3IgaHRtbCBlbGVtZW50LCB3ZSdsbCBoYW5kbGUgdGhlIHBhZ2luYXRpbmcg
aW4gdGhlIFJlbmRlclZpZXcgaW5zdGVhZC4KQEAgLTU2OCw3ICs1NjgsNyBAQCB2b2lkIFJlbmRl
ckJsb2NrRmxvdzo6bGF5b3V0QmxvY2soYm9vbCByCiAgICAgLy8gRklYTUU6IFRoaXMgcmVwYWlu
dCBsb2dpYyBzaG91bGQgYmUgbW92ZWQgaW50byBhIHNlcGFyYXRlIGhlbHBlciBmdW5jdGlvbiEK
ICAgICAvLyBSZXBhaW50IHdpdGggb3VyIG5ldyBib3VuZHMgaWYgdGhleSBhcmUgZGlmZmVyZW50
IGZyb20gb3VyIG9sZCBib3VuZHMuCiAgICAgYm9vbCBkaWRGdWxsUmVwYWludCA9IHJlcGFpbnRl
ci5yZXBhaW50QWZ0ZXJMYXlvdXQoKTsKLSAgICBpZiAoIWRpZEZ1bGxSZXBhaW50ICYmIHJlcGFp
bnRMb2dpY2FsVG9wICE9IHJlcGFpbnRMb2dpY2FsQm90dG9tICYmIChzdHlsZVRvVXNlLnZpc2li
aWxpdHkoKSA9PSBWSVNJQkxFIHx8IGVuY2xvc2luZ0xheWVyKCktPmhhc1Zpc2libGVDb250ZW50
KCkpKSB7CisgICAgaWYgKCFkaWRGdWxsUmVwYWludCAmJiByZXBhaW50TG9naWNhbFRvcCAhPSBy
ZXBhaW50TG9naWNhbEJvdHRvbSAmJiAoc3R5bGVUb1VzZS52aXNpYmlsaXR5KCkgPT0gVmlzaWJp
bGl0eTo6VmlzaWJsZSB8fCBlbmNsb3NpbmdMYXllcigpLT5oYXNWaXNpYmxlQ29udGVudCgpKSkg
ewogICAgICAgICAvLyBGSVhNRTogV2UgY291bGQgdGlnaHRlbiB1cCB0aGUgbGVmdCBhbmQgcmln
aHQgaW52YWxpZGF0aW9uIHBvaW50cyBpZiB3ZSBsZXQgbGF5b3V0SW5saW5lQ2hpbGRyZW4gZmls
bCB0aGVtIGluIGJhc2VkIG9mZiB0aGUgcGFydGljdWxhciBsaW5lcwogICAgICAgICAvLyBpdCBo
YWQgdG8gbGF5IG91dC4gV2Ugd291bGRuJ3QgbmVlZCB0aGUgaGFzT3ZlcmZsb3dDbGlwKCkgaGFj
ayBpbiB0aGF0IGNhc2UgZWl0aGVyLgogICAgICAgICBMYXlvdXRVbml0IHJlcGFpbnRMb2dpY2Fs
TGVmdCA9IGxvZ2ljYWxMZWZ0VmlzdWFsT3ZlcmZsb3coKTsKQEAgLTE1MDEsNyArMTUwMSw3IEBA
IExheW91dFVuaXQgUmVuZGVyQmxvY2tGbG93OjphcHBseUJlZm9yZUIKICAgICBib29sIGNoZWNr
Q29sdW1uQnJlYWtzID0gZnJhZ21lbnRlZEZsb3cgJiYgZnJhZ21lbnRlZEZsb3ctPnNob3VsZENo
ZWNrQ29sdW1uQnJlYWtzKCk7CiAgICAgYm9vbCBjaGVja1BhZ2VCcmVha3MgPSAhY2hlY2tDb2x1
bW5CcmVha3MgJiYgdmlldygpLmZyYW1lVmlldygpLmxheW91dENvbnRleHQoKS5sYXlvdXRTdGF0
ZSgpLT5wYWdlTG9naWNhbEhlaWdodCgpOyAvLyBGSVhNRTogT25jZSBjb2x1bW5zIGNhbiBwcmlu
dCB3ZSBoYXZlIHRvIGNoZWNrIHRoaXMuCiAgICAgYm9vbCBjaGVja0ZyYWdtZW50QnJlYWtzID0g
ZmFsc2U7Ci0gICAgYm9vbCBjaGVja0JlZm9yZUFsd2F5cyA9IChjaGVja0NvbHVtbkJyZWFrcyAm
JiBjaGlsZC5zdHlsZSgpLmJyZWFrQmVmb3JlKCkgPT0gQ29sdW1uQnJlYWtCZXR3ZWVuKQorICAg
IGJvb2wgY2hlY2tCZWZvcmVBbHdheXMgPSAoY2hlY2tDb2x1bW5CcmVha3MgJiYgY2hpbGQuc3R5
bGUoKS5icmVha0JlZm9yZSgpID09IEJyZWFrQmV0d2Vlbjo6Q29sdW1uKQogICAgICAgICB8fCAo
Y2hlY2tQYWdlQnJlYWtzICYmIGFsd2F5c1BhZ2VCcmVhayhjaGlsZC5zdHlsZSgpLmJyZWFrQmVm
b3JlKCkpKTsKICAgICBpZiAoY2hlY2tCZWZvcmVBbHdheXMgJiYgaW5Ob3JtYWxGbG93KGNoaWxk
KSAmJiBoYXNOZXh0UGFnZShsb2dpY2FsT2Zmc2V0LCBJbmNsdWRlUGFnZUJvdW5kYXJ5KSkgewog
ICAgICAgICBpZiAoY2hlY2tDb2x1bW5CcmVha3MpIHsKQEAgLTE1MjYsNyArMTUyNiw3IEBAIExh
eW91dFVuaXQgUmVuZGVyQmxvY2tGbG93OjphcHBseUFmdGVyQnIKICAgICBib29sIGNoZWNrQ29s
dW1uQnJlYWtzID0gZnJhZ21lbnRlZEZsb3cgJiYgZnJhZ21lbnRlZEZsb3ctPnNob3VsZENoZWNr
Q29sdW1uQnJlYWtzKCk7CiAgICAgYm9vbCBjaGVja1BhZ2VCcmVha3MgPSAhY2hlY2tDb2x1bW5C
cmVha3MgJiYgdmlldygpLmZyYW1lVmlldygpLmxheW91dENvbnRleHQoKS5sYXlvdXRTdGF0ZSgp
LT5wYWdlTG9naWNhbEhlaWdodCgpOyAvLyBGSVhNRTogT25jZSBjb2x1bW5zIGNhbiBwcmludCB3
ZSBoYXZlIHRvIGNoZWNrIHRoaXMuCiAgICAgYm9vbCBjaGVja0ZyYWdtZW50QnJlYWtzID0gZmFs
c2U7Ci0gICAgYm9vbCBjaGVja0FmdGVyQWx3YXlzID0gKGNoZWNrQ29sdW1uQnJlYWtzICYmIGNo
aWxkLnN0eWxlKCkuYnJlYWtBZnRlcigpID09IENvbHVtbkJyZWFrQmV0d2VlbikKKyAgICBib29s
IGNoZWNrQWZ0ZXJBbHdheXMgPSAoY2hlY2tDb2x1bW5CcmVha3MgJiYgY2hpbGQuc3R5bGUoKS5i
cmVha0FmdGVyKCkgPT0gQnJlYWtCZXR3ZWVuOjpDb2x1bW4pCiAgICAgICAgIHx8IChjaGVja1Bh
Z2VCcmVha3MgJiYgYWx3YXlzUGFnZUJyZWFrKGNoaWxkLnN0eWxlKCkuYnJlYWtBZnRlcigpKSk7
CiAgICAgaWYgKGNoZWNrQWZ0ZXJBbHdheXMgJiYgaW5Ob3JtYWxGbG93KGNoaWxkKSAmJiBoYXNO
ZXh0UGFnZShsb2dpY2FsT2Zmc2V0LCBJbmNsdWRlUGFnZUJvdW5kYXJ5KSkgewogICAgICAgICBM
YXlvdXRVbml0IG1hcmdpbk9mZnNldCA9IG1hcmdpbkluZm8uY2FuQ29sbGFwc2VXaXRoTWFyZ2lu
QmVmb3JlKCkgPyBMYXlvdXRVbml0KCkgOiBtYXJnaW5JbmZvLm1hcmdpbigpOwpAQCAtMTg1NCw3
ICsxODU0LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9ja0Zsb3c6OmFkanVzdEZvclVucwogICAg
ICAgICBpZiAoIWhhc1VuaWZvcm1QYWdlTG9naWNhbEhlaWdodCAmJiAhcHVzaFRvTmV4dFBhZ2VX
aXRoTWluaW11bUxvZ2ljYWxIZWlnaHQocmVtYWluaW5nTG9naWNhbEhlaWdodCwgbG9naWNhbE9m
ZnNldCwgY2hpbGRMb2dpY2FsSGVpZ2h0KSkKICAgICAgICAgICAgIHJldHVybiBsb2dpY2FsT2Zm
c2V0OwogICAgICAgICBhdXRvIHJlc3VsdCA9IGxvZ2ljYWxPZmZzZXQgKyByZW1haW5pbmdMb2dp
Y2FsSGVpZ2h0OwotICAgICAgICBib29sIGlzSW5pdGlhbExldHRlciA9IGNoaWxkLmlzRmxvYXRp
bmcoKSAmJiBjaGlsZC5zdHlsZSgpLnN0eWxlVHlwZSgpID09IEZJUlNUX0xFVFRFUiAmJiBjaGls
ZC5zdHlsZSgpLmluaXRpYWxMZXR0ZXJEcm9wKCkgPiAwOworICAgICAgICBib29sIGlzSW5pdGlh
bExldHRlciA9IGNoaWxkLmlzRmxvYXRpbmcoKSAmJiBjaGlsZC5zdHlsZSgpLnN0eWxlVHlwZSgp
ID09IFBzZXVkb0lkOjpGaXJzdExldHRlciAmJiBjaGlsZC5zdHlsZSgpLmluaXRpYWxMZXR0ZXJE
cm9wKCkgPiAwOwogICAgICAgICBpZiAoaXNJbml0aWFsTGV0dGVyKSB7CiAgICAgICAgICAgICAv
LyBJbmNyZWFzZSBvdXIgbG9naWNhbCBoZWlnaHQgdG8gZW5zdXJlIHRoYXQgbGluZXMgYWxsIGdl
dCBwdXNoZWQgYWxvbmcgd2l0aCB0aGUgbGV0dGVyLgogICAgICAgICAgICAgc2V0TG9naWNhbEhl
aWdodChsb2dpY2FsT2Zmc2V0ICsgcmVtYWluaW5nTG9naWNhbEhlaWdodCk7CkBAIC0yMDM1LDcg
KzIwMzUsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6c3R5bGVEaWRDaGFuZ2UoU3R5CiB2b2lk
IFJlbmRlckJsb2NrRmxvdzo6dXBkYXRlU3R5bGVzRm9yQ29sdW1uQ2hpbGRyZW4oKQogewogICAg
IGZvciAoYXV0byogY2hpbGQgPSBmaXJzdENoaWxkQm94KCk7IGNoaWxkICYmIChjaGlsZC0+aXNJ
bkZsb3dSZW5kZXJGcmFnbWVudGVkRmxvdygpIHx8IGNoaWxkLT5pc1JlbmRlck11bHRpQ29sdW1u
U2V0KCkpOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZ0JveCgpKQotICAgICAgICBjaGlsZC0+
c2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5
bGUoKSwgQkxPQ0spKTsKKyAgICAgICAgY2hpbGQtPnNldFN0eWxlKFJlbmRlclN0eWxlOjpjcmVh
dGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlKCksIERpc3BsYXlUeXBlOjpCbG9jaykp
OwogfQogCiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVy
ZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpCkBAIC0yMzQ1LDcgKzIzNDUs
NyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUxvZ2ljYWxMb2NhCiAgICAgTGF5b3V0
VW5pdCBmbG9hdExvZ2ljYWxMZWZ0OwogCiAgICAgYm9vbCBpbnNpZGVGcmFnbWVudGVkRmxvdyA9
IGVuY2xvc2luZ0ZyYWdtZW50ZWRGbG93KCk7Ci0gICAgYm9vbCBpc0luaXRpYWxMZXR0ZXIgPSBj
aGlsZEJveC5zdHlsZSgpLnN0eWxlVHlwZSgpID09IEZJUlNUX0xFVFRFUiAmJiBjaGlsZEJveC5z
dHlsZSgpLmluaXRpYWxMZXR0ZXJEcm9wKCkgPiAwOworICAgIGJvb2wgaXNJbml0aWFsTGV0dGVy
ID0gY2hpbGRCb3guc3R5bGUoKS5zdHlsZVR5cGUoKSA9PSBQc2V1ZG9JZDo6Rmlyc3RMZXR0ZXIg
JiYgY2hpbGRCb3guc3R5bGUoKS5pbml0aWFsTGV0dGVyRHJvcCgpID4gMDsKICAgICAKICAgICBp
ZiAoaXNJbml0aWFsTGV0dGVyKSB7CiAgICAgICAgIGludCBsZXR0ZXJDbGVhcmFuY2UgPSBsb3dl
c3RJbml0aWFsTGV0dGVyTG9naWNhbEJvdHRvbSgpIC0gbG9naWNhbFRvcE9mZnNldDsKQEAgLTI2
MTUsNyArMjYxNSw3IEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2tGbG93Ojpsb3dlc3RJbml0aWEK
ICAgICBhdXRvIGVuZCA9IGZsb2F0aW5nT2JqZWN0U2V0LmVuZCgpOwogICAgIGZvciAoYXV0byBp
dCA9IGZsb2F0aW5nT2JqZWN0U2V0LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAg
ICBjb25zdCBhdXRvJiBmbG9hdGluZ09iamVjdCA9ICppdC0+Z2V0KCk7Ci0gICAgICAgIGlmIChm
bG9hdGluZ09iamVjdC5pc1BsYWNlZCgpICYmIGZsb2F0aW5nT2JqZWN0LnJlbmRlcmVyKCkuc3R5
bGUoKS5zdHlsZVR5cGUoKSA9PSBGSVJTVF9MRVRURVIgJiYgZmxvYXRpbmdPYmplY3QucmVuZGVy
ZXIoKS5zdHlsZSgpLmluaXRpYWxMZXR0ZXJEcm9wKCkgPiAwKQorICAgICAgICBpZiAoZmxvYXRp
bmdPYmplY3QuaXNQbGFjZWQoKSAmJiBmbG9hdGluZ09iamVjdC5yZW5kZXJlcigpLnN0eWxlKCku
c3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6OkZpcnN0TGV0dGVyICYmIGZsb2F0aW5nT2JqZWN0LnJl
bmRlcmVyKCkuc3R5bGUoKS5pbml0aWFsTGV0dGVyRHJvcCgpID4gMCkKICAgICAgICAgICAgIGxv
d2VzdEZsb2F0Qm90dG9tID0gc3RkOjptYXgobG93ZXN0RmxvYXRCb3R0b20sIGxvZ2ljYWxCb3R0
b21Gb3JGbG9hdChmbG9hdGluZ09iamVjdCkpOwogICAgIH0KICAgICByZXR1cm4gbG93ZXN0Rmxv
YXRCb3R0b207CkBAIC0yOTA3LDcgKzI5MDcsNyBAQCBib29sIFJlbmRlckJsb2NrRmxvdzo6aGl0
VGVzdElubGluZUNoaWxkCiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93OjphZGp1c3RGb3JCb3JkZXJG
aXQoTGF5b3V0VW5pdCB4LCBMYXlvdXRVbml0JiBsZWZ0LCBMYXlvdXRVbml0JiByaWdodCkgY29u
c3QKIHsKLSAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAo
c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gV2UgZG9uJ3QgZGVhbCB3aXRoIHJlbGF0aXZlIHBvc2l0aW9uaW5nLiAg
T3VyIGFzc3VtcHRpb24gaXMgdGhhdCB5b3Ugc2hyaW5rIHRvIGZpdCB0aGUgbGluZXMgd2l0aG91
dCBhY2NvdW50aW5nCkBAIC0yOTI2LDcgKzI5MjYsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6
YWRqdXN0Rm9yQm9yZGVyRml0CiAgICAgICAgICAgICBpZiAoIW9iai0+aXNGbG9hdGluZ09yT3V0
T2ZGbG93UG9zaXRpb25lZCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGlzPFJlbmRlckJsb2Nr
Rmxvdz4oKm9iaikgJiYgIW9iai0+aGFzT3ZlcmZsb3dDbGlwKCkpCiAgICAgICAgICAgICAgICAg
ICAgIGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKm9iaikuYWRqdXN0Rm9yQm9yZGVyRml0KHgg
KyBvYmotPngoKSwgbGVmdCwgcmlnaHQpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9iai0+
c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkgeworICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKG9iai0+c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkgewog
ICAgICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgYSByZXBsYWNlZCBlbGVtZW50IG9yIHNvbWUg
a2luZCBvZiBub24tYmxvY2stZmxvdyBvYmplY3QuCiAgICAgICAgICAgICAgICAgICAgIGxlZnQg
PSBzdGQ6Om1pbihsZWZ0LCB4ICsgb2JqLT54KCkpOwogICAgICAgICAgICAgICAgICAgICByaWdo
dCA9IHN0ZDo6bWF4KHJpZ2h0LCB4ICsgb2JqLT54KCkgKyBvYmotPndpZHRoKCkpOwpAQCAtMjk1
Myw3ICsyOTUzLDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmFkanVzdEZvckJvcmRlckZpdAog
CiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Zml0Qm9yZGVyVG9MaW5lc0lmTmVlZGVkKCkKIHsKLSAg
ICBpZiAoc3R5bGUoKS5ib3JkZXJGaXQoKSA9PSBCb3JkZXJGaXRCb3JkZXIgfHwgaGFzT3ZlcnJp
ZGVDb250ZW50TG9naWNhbFdpZHRoKCkpCisgICAgaWYgKHN0eWxlKCkuYm9yZGVyRml0KCkgPT0g
Qm9yZGVyRml0OjpCb3JkZXIgfHwgaGFzT3ZlcnJpZGVDb250ZW50TG9naWNhbFdpZHRoKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIFdhbGsgYW55IG5vcm1hbCBmbG93IGxpbmVzIHRvIHNu
dWdseSBmaXQuCkBAIC0zMTUzLDcgKzMxNTMsNyBAQCBSb290SW5saW5lQm94KiBSZW5kZXJCbG9j
a0Zsb3c6OmxpbmVBdEluCiB7CiAgICAgQVNTRVJUKGkgPj0gMCk7CiAKLSAgICBpZiAoc3R5bGUo
KS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkg
IT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBp
ZiAoY2hpbGRyZW5JbmxpbmUoKSkgewpAQCAtMzE3Niw3ICszMTc2LDcgQEAgUm9vdElubGluZUJv
eCogUmVuZGVyQmxvY2tGbG93OjpsaW5lQXRJbgogCiBpbnQgUmVuZGVyQmxvY2tGbG93OjpsaW5l
Q291bnQoY29uc3QgUm9vdElubGluZUJveCogc3RvcFJvb3RJbmxpbmVCb3gsIGJvb2wqIGZvdW5k
KSBjb25zdAogewotICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAg
IGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAg
ICByZXR1cm4gMDsKIAogICAgIGludCBjb3VudCA9IDA7CkBAIC0zMjE0LDcgKzMyMTQsNyBAQCBp
bnQgUmVuZGVyQmxvY2tGbG93OjpsaW5lQ291bnQoY29uc3QgUm9vCiAKIHN0YXRpYyBpbnQgZ2V0
SGVpZ2h0Rm9yTGluZUNvdW50KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgYmxvY2ssIGludCBsaW5l
Q291bnQsIGJvb2wgaW5jbHVkZUVkZ2VCb3JkZXJQYWRkaW5nLCBib29sIGZvcndhcmQsIGludCYg
Y291bnQpCiB7Ci0gICAgaWYgKGJsb2NrLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUp
CisgICAgaWYgKGJsb2NrLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2li
bGUpCiAgICAgICAgIHJldHVybiAtMTsKIAogICAgIC8vIEZJWE1FOiBPcnRob2dvbmFsIHdyaXRp
bmcgbW9kZXMgZG9uJ3Qgd29yayBoZXJlLCBidXQgaXQncyBub3QgZXZlbiBjbGVhciBob3cgdGhl
eSBzaG91bGQgYmVoYXZlIGFueXdheS4KQEAgLTMyNjQsNyArMzI2NCw3IEBAIGludCBSZW5kZXJC
bG9ja0Zsb3c6OmxvZ2ljYWxIZWlnaHRFeGNsdWQKIAogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNs
ZWFyVHJ1bmNhdGlvbigpCiB7Ci0gICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lC
TEUpCisgICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChjaGlsZHJlbklubGluZSgpICYmIGhhc01hcmt1
cFRydW5jYXRpb24oKSkgewpAQCAtMzMyMyw3ICszMzIzLDcgQEAgUmVuZGVyVGV4dCogUmVuZGVy
QmxvY2tGbG93OjpmaW5kQ2xvc2VzdAogICAgIGlmICghYmxvY2stPmNoaWxkcmVuSW5saW5lKCkp
IHsKICAgICAgICAgLy8gTG9vayBhbW9uZyBvdXIgaW1tZWRpYXRlIGNoaWxkcmVuIGZvciBhbiBh
bHRlcm5hdGUgYm94IHRoYXQgY29udGFpbnMgdGhlIHBvaW50LgogICAgICAgICBmb3IgKFJlbmRl
ckJveCogY2hpbGQgPSBibG9jay0+Zmlyc3RDaGlsZEJveCgpOyBjaGlsZDsgY2hpbGQgPSBjaGls
ZC0+bmV4dFNpYmxpbmdCb3goKSkgewotICAgICAgICAgICAgaWYgKCFjaGlsZC0+aGVpZ2h0KCkg
fHwgY2hpbGQtPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFdlYkNvcmU6OlZJU0lCTEUgfHwgY2hp
bGQtPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgICAgIGlmICgh
Y2hpbGQtPmhlaWdodCgpIHx8IGNoaWxkLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBXZWJDb3Jl
OjpWaXNpYmlsaXR5OjpWaXNpYmxlIHx8IGNoaWxkLT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3Np
dGlvbmVkKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBmbG9hdCB0
b3AgPSBjaGlsZC0+eSgpOwogICAgICAgICAgICAgCkBAIC0zNzA3LDcgKzM3MDcsNyBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgcmVzaXplVGV4dFBlcm1pdHRlZChjCiAKIGludCBSZW5kZXJCbG9ja0Zs
b3c6OmxpbmVDb3VudEZvclRleHRBdXRvc2l6aW5nKCkKIHsKLSAgICBpZiAoc3R5bGUoKS52aXNp
YmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlz
aWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKGNoaWxkcmVuSW5s
aW5lKCkpCiAgICAgICAgIHJldHVybiBsaW5lQ291bnQoKTsKQEAgLTM4ODgsNyArMzg4OCw3IEBA
IHZvaWQgUmVuZGVyQmxvY2tGbG93OjpzZXRDb21wdXRlZENvbHVtbkMKICAgICAgICAgcmV0dXJu
OwogICAgIG11bHRpQ29sdW1uRmxvdygpLT5zZXRDb2x1bW5Db3VudEFuZFdpZHRoKGNvdW50LCB3
aWR0aCk7CiAgICAgbXVsdGlDb2x1bW5GbG93KCktPnNldFByb2dyZXNzaW9uSXNJbmxpbmUoc3R5
bGUoKS5oYXNJbmxpbmVDb2x1bW5BeGlzKCkpOwotICAgIG11bHRpQ29sdW1uRmxvdygpLT5zZXRQ
cm9ncmVzc2lvbklzUmV2ZXJzZWQoc3R5bGUoKS5jb2x1bW5Qcm9ncmVzc2lvbigpID09IFJldmVy
c2VDb2x1bW5Qcm9ncmVzc2lvbik7CisgICAgbXVsdGlDb2x1bW5GbG93KCktPnNldFByb2dyZXNz
aW9uSXNSZXZlcnNlZChzdHlsZSgpLmNvbHVtblByb2dyZXNzaW9uKCkgPT0gQ29sdW1uUHJvZ3Jl
c3Npb246OlJldmVyc2UpOwogfQogCiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6dXBkYXRlQ29sdW1u
UHJvZ3Jlc3Npb25Gcm9tU3R5bGUoUmVuZGVyU3R5bGUmIHN0eWxlKQpAQCAtMzkwNSw3ICszOTA1
LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnVwZGF0ZUNvbHVtblByb2dyZQogICAgIH0KIAog
ICAgIGJvb2wgb2xkUHJvZ3Jlc3Npb25Jc1JldmVyc2VkID0gbXVsdGlDb2x1bW5GbG93KCktPnBy
b2dyZXNzaW9uSXNSZXZlcnNlZCgpOwotICAgIGJvb2wgbmV3UHJvZ3Jlc3Npb25Jc1JldmVyc2Vk
ID0gc3R5bGUuY29sdW1uUHJvZ3Jlc3Npb24oKSA9PSBSZXZlcnNlQ29sdW1uUHJvZ3Jlc3Npb247
CisgICAgYm9vbCBuZXdQcm9ncmVzc2lvbklzUmV2ZXJzZWQgPSBzdHlsZS5jb2x1bW5Qcm9ncmVz
c2lvbigpID09IENvbHVtblByb2dyZXNzaW9uOjpSZXZlcnNlOwogICAgIGlmIChvbGRQcm9ncmVz
c2lvbklzUmV2ZXJzZWQgIT0gbmV3UHJvZ3Jlc3Npb25Jc1JldmVyc2VkKSB7CiAgICAgICAgIG11
bHRpQ29sdW1uRmxvdygpLT5zZXRQcm9ncmVzc2lvbklzUmV2ZXJzZWQobmV3UHJvZ3Jlc3Npb25J
c1JldmVyc2VkKTsKICAgICAgICAgbmVlZHNMYXlvdXQgPSB0cnVlOwpAQCAtMzkzMyw3ICszOTMz
LDcgQEAgdW5zaWduZWQgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlZENvbHVtbgogYm9vbCBSZW5k
ZXJCbG9ja0Zsb3c6OmlzVG9wTGF5b3V0T3ZlcmZsb3dBbGxvd2VkKCkgY29uc3QKIHsKICAgICBi
b29sIGhhc1RvcE92ZXJmbG93ID0gUmVuZGVyQmxvY2s6OmlzVG9wTGF5b3V0T3ZlcmZsb3dBbGxv
d2VkKCk7Ci0gICAgaWYgKCFtdWx0aUNvbHVtbkZsb3coKSB8fCBzdHlsZSgpLmNvbHVtblByb2dy
ZXNzaW9uKCkgPT0gTm9ybWFsQ29sdW1uUHJvZ3Jlc3Npb24pCisgICAgaWYgKCFtdWx0aUNvbHVt
bkZsb3coKSB8fCBzdHlsZSgpLmNvbHVtblByb2dyZXNzaW9uKCkgPT0gQ29sdW1uUHJvZ3Jlc3Np
b246Ok5vcm1hbCkKICAgICAgICAgcmV0dXJuIGhhc1RvcE92ZXJmbG93OwogICAgIAogICAgIGlm
ICghKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgXiAhc3R5bGUoKS5oYXNJbmxpbmVDb2x1bW5B
eGlzKCkpKQpAQCAtMzk0NSw3ICszOTQ1LDcgQEAgYm9vbCBSZW5kZXJCbG9ja0Zsb3c6OmlzVG9w
TGF5b3V0T3ZlcmZsbwogYm9vbCBSZW5kZXJCbG9ja0Zsb3c6OmlzTGVmdExheW91dE92ZXJmbG93
QWxsb3dlZCgpIGNvbnN0CiB7CiAgICAgYm9vbCBoYXNMZWZ0T3ZlcmZsb3cgPSBSZW5kZXJCbG9j
azo6aXNMZWZ0TGF5b3V0T3ZlcmZsb3dBbGxvd2VkKCk7Ci0gICAgaWYgKCFtdWx0aUNvbHVtbkZs
b3coKSB8fCBzdHlsZSgpLmNvbHVtblByb2dyZXNzaW9uKCkgPT0gTm9ybWFsQ29sdW1uUHJvZ3Jl
c3Npb24pCisgICAgaWYgKCFtdWx0aUNvbHVtbkZsb3coKSB8fCBzdHlsZSgpLmNvbHVtblByb2dy
ZXNzaW9uKCkgPT0gQ29sdW1uUHJvZ3Jlc3Npb246Ok5vcm1hbCkKICAgICAgICAgcmV0dXJuIGhh
c0xlZnRPdmVyZmxvdzsKICAgICAKICAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSBe
ICFzdHlsZSgpLmhhc0lubGluZUNvbHVtbkF4aXMoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAkod29ya2luZyBjb3B5KQpAQCAtNTMy
LDcgKzUzMiw3IEBAIHB1YmxpYzoKICAgICBSb290SW5saW5lQm94KiBjcmVhdGVBbmRBcHBlbmRS
b290SW5saW5lQm94KCk7CiAKICAgICBMYXlvdXRVbml0IHN0YXJ0QWxpZ25lZE9mZnNldEZvckxp
bmUoTGF5b3V0VW5pdCBwb3NpdGlvbiwgSW5kZW50VGV4dE9yTm90IHNob3VsZEluZGVudFRleHQp
OwotICAgIHZpcnR1YWwgRVRleHRBbGlnbiB0ZXh0QWxpZ25tZW50Rm9yTGluZShib29sIGVuZHNX
aXRoU29mdEJyZWFrKSBjb25zdDsKKyAgICB2aXJ0dWFsIFRleHRBbGlnbk1vZGUgdGV4dEFsaWdu
bWVudEZvckxpbmUoYm9vbCBlbmRzV2l0aFNvZnRCcmVhaykgY29uc3Q7CiAgICAgdmlydHVhbCB2
b2lkIGFkanVzdElubGluZURpcmVjdGlvbkxpbmVCb3VuZHMoaW50IC8qIGV4cGFuc2lvbk9wcG9y
dHVuaXR5Q291bnQgKi8sIGZsb2F0JiAvKiBsb2dpY2FsTGVmdCAqLywgZmxvYXQmIC8qIGxvZ2lj
YWxXaWR0aCAqLykgY29uc3QgeyB9CiAgICAgUm9vdElubGluZUJveCogY29uc3RydWN0TGluZShC
aWRpUnVuTGlzdDxCaWRpUnVuPiYsIGNvbnN0IExpbmVJbmZvJik7CiAKQEAgLTU0OCw3ICs1NDgs
NyBAQCBwcml2YXRlOiAgICAgICAgCiAgICAgdm9pZCBjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9z
aXRpb25zRm9yTGluZShSb290SW5saW5lQm94KiwgY29uc3QgTGluZUluZm8mLCBCaWRpUnVuKiBm
aXJzdFJ1biwgQmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1biwgYm9vbCByZWFjaGVkRW5kLCBHbHlw
aE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYsIFZlcnRpY2FsUG9zaXRpb25DYWNoZSYsIFdv
cmRNZWFzdXJlbWVudHMmKTsKICAgICB2b2lkIHVwZGF0ZVJ1YnlGb3JKdXN0aWZpZWRUZXh0KFJl
bmRlclJ1YnlSdW4mLCBCaWRpUnVuJiwgY29uc3QgVmVjdG9yPHVuc2lnbmVkLCAxNj4mIGV4cGFu
c2lvbk9wcG9ydHVuaXRpZXMsIHVuc2lnbmVkJiBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50LCBm
bG9hdCYgdG90YWxMb2dpY2FsV2lkdGgsIGZsb2F0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgc2l6
ZV90JiBleHBhbnNpb25JbmRleCk7CiAgICAgdm9pZCBjb21wdXRlRXhwYW5zaW9uRm9ySnVzdGlm
aWVkVGV4dChCaWRpUnVuKiBmaXJzdFJ1biwgQmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1biwgY29u
c3QgVmVjdG9yPHVuc2lnbmVkLCAxNj4mIGV4cGFuc2lvbk9wcG9ydHVuaXRpZXMsIHVuc2lnbmVk
IGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQsIGZsb2F0IHRvdGFsTG9naWNhbFdpZHRoLCBmbG9h
dCBhdmFpbGFibGVMb2dpY2FsV2lkdGgpOwotICAgIEJpZGlSdW4qIGNvbXB1dGVJbmxpbmVEaXJl
Y3Rpb25Qb3NpdGlvbnNGb3JTZWdtZW50KFJvb3RJbmxpbmVCb3gqLCBjb25zdCBMaW5lSW5mbyYs
IEVUZXh0QWxpZ24sIGZsb2F0JiBsb2dpY2FsTGVmdCwKKyAgICBCaWRpUnVuKiBjb21wdXRlSW5s
aW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yU2VnbWVudChSb290SW5saW5lQm94KiwgY29uc3QgTGlu
ZUluZm8mLCBUZXh0QWxpZ25Nb2RlLCBmbG9hdCYgbG9naWNhbExlZnQsCiAgICAgICAgIGZsb2F0
JiBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIEJpZGlSdW4qIGZpcnN0UnVuLCBCaWRpUnVuKiB0cmFp
bGluZ1NwYWNlUnVuLCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYgdGV4dEJveERh
dGFNYXAsIFZlcnRpY2FsUG9zaXRpb25DYWNoZSYsIFdvcmRNZWFzdXJlbWVudHMmKTsKICAgICB2
b2lkIGNvbXB1dGVCbG9ja0RpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmUoUm9vdElubGluZUJveCos
IEJpZGlSdW4qLCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYsIFZlcnRpY2FsUG9z
aXRpb25DYWNoZSYpOwogICAgIEJpZGlSdW4qIGhhbmRsZVRyYWlsaW5nU3BhY2VzKEJpZGlSdW5M
aXN0PEJpZGlSdW4+JiwgQmlkaUNvbnRleHQqKTsKQEAgLTU3NSw3ICs1NzUsNyBAQCBwcml2YXRl
OiAgICAgICAgCiAgICAgLy8gcGFnZS9jb2x1bW4gdGhhdCBoYXMgYSBkaWZmZXJlbnQgYXZhaWxh
YmxlIGxpbmUgd2lkdGggdGhhbiB0aGUgb2xkIG9uZS4gVXNlZCB0byBrbm93IHdoZW4geW91IGhh
dmUgdG8gZGlydHkgYQogICAgIC8vIGxpbmUsIGkuZS4sIHRoYXQgaXQgY2FuJ3QgYmUgcmUtdXNl
ZC4KICAgICBib29sIGxpbmVXaWR0aEZvclBhZ2luYXRlZExpbmVDaGFuZ2VkKFJvb3RJbmxpbmVC
b3gqLCBMYXlvdXRVbml0IGxpbmVEZWx0YSwgUmVuZGVyRnJhZ21lbnRlZEZsb3cqKSBjb25zdDsK
LSAgICB2b2lkIHVwZGF0ZUxvZ2ljYWxXaWR0aEZvckFsaWdubWVudChjb25zdCBFVGV4dEFsaWdu
JiwgY29uc3QgUm9vdElubGluZUJveCosIEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4sIGZsb2F0
JiBsb2dpY2FsTGVmdCwgZmxvYXQmIHRvdGFsTG9naWNhbFdpZHRoLCBmbG9hdCYgYXZhaWxhYmxl
TG9naWNhbFdpZHRoLCBpbnQgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCk7CisgICAgdm9pZCB1
cGRhdGVMb2dpY2FsV2lkdGhGb3JBbGlnbm1lbnQoY29uc3QgVGV4dEFsaWduTW9kZSYsIGNvbnN0
IFJvb3RJbmxpbmVCb3gqLCBCaWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVuLCBmbG9hdCYgbG9naWNh
bExlZnQsIGZsb2F0JiB0b3RhbExvZ2ljYWxXaWR0aCwgZmxvYXQmIGF2YWlsYWJsZUxvZ2ljYWxX
aWR0aCwgaW50IGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQpOwogLy8gRU5EIE1FVEhPRFMgREVG
SU5FRCBJTiBSZW5kZXJCbG9ja0xpbmVMYXlvdXQKIAogICAgIHZvaWQgY29tcHV0ZUlubGluZVBy
ZWZlcnJlZExvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRV
bml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAJKHJldmlzaW9uIDIzMjEwNCkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMDYsNyArMzA2LDcgQEAgUm9vdElubGluZUJveCogUmVuZGVyQmxv
Y2tGbG93Ojpjb25zdHJ1YwogICAgICAgICAgICAgcGFyZW50Qm94LT5hZGRUb0xpbmUoYm94KTsK
ICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgdmlzdWFsbHlPcmRlcmVkID0gci0+cmVuZGVyZXIo
KS5zdHlsZSgpLnJ0bE9yZGVyaW5nKCkgPT0gVmlzdWFsT3JkZXI7CisgICAgICAgIGJvb2wgdmlz
dWFsbHlPcmRlcmVkID0gci0+cmVuZGVyZXIoKS5zdHlsZSgpLnJ0bE9yZGVyaW5nKCkgPT0gT3Jk
ZXI6OlZpc3VhbDsKICAgICAgICAgYm94LT5zZXRCaWRpTGV2ZWwoci0+bGV2ZWwoKSk7CiAKICAg
ICAgICAgaWYgKGlzPElubGluZVRleHRCb3g+KCpib3gpKSB7CkBAIC0zNDIsNDIgKzM0Miw0MiBA
QCBSb290SW5saW5lQm94KiBSZW5kZXJCbG9ja0Zsb3c6OmNvbnN0cnVjCiAgICAgcmV0dXJuIGxh
c3RSb290Qm94KCk7CiB9CiAKLUVUZXh0QWxpZ24gUmVuZGVyQmxvY2tGbG93Ojp0ZXh0QWxpZ25t
ZW50Rm9yTGluZShib29sIGVuZHNXaXRoU29mdEJyZWFrKSBjb25zdAorVGV4dEFsaWduTW9kZSBS
ZW5kZXJCbG9ja0Zsb3c6OnRleHRBbGlnbm1lbnRGb3JMaW5lKGJvb2wgZW5kc1dpdGhTb2Z0QnJl
YWspIGNvbnN0CiB7Ci0gICAgRVRleHRBbGlnbiBhbGlnbm1lbnQgPSBzdHlsZSgpLnRleHRBbGln
bigpOworICAgIFRleHRBbGlnbk1vZGUgYWxpZ25tZW50ID0gc3R5bGUoKS50ZXh0QWxpZ24oKTsK
ICNpZiBFTkFCTEUoQ1NTM19URVhUKQogICAgIFRleHRKdXN0aWZ5IHRleHRKdXN0aWZ5ID0gc3R5
bGUoKS50ZXh0SnVzdGlmeSgpOwotICAgIGlmIChhbGlnbm1lbnQgPT0gSlVTVElGWSAmJiB0ZXh0
SnVzdGlmeSA9PSBUZXh0SnVzdGlmeU5vbmUpCi0gICAgICAgIHJldHVybiBzdHlsZSgpLmRpcmVj
dGlvbigpID09IExUUiA/IExFRlQgOiBSSUdIVDsKKyAgICBpZiAoYWxpZ25tZW50ID09IFRleHRB
bGlnbk1vZGU6Okp1c3RpZnkgJiYgdGV4dEp1c3RpZnkgPT0gVGV4dEp1c3RpZnk6Ok5vbmUpCisg
ICAgICAgIHJldHVybiBzdHlsZSgpLmRpcmVjdGlvbigpID09IExUUiA/IFRleHRBbGlnbk1vZGU6
OkxlZnQgOiBUZXh0QWxpZ25Nb2RlOjpSaWdodDsKICNlbmRpZgogCiAgICAgaWYgKGVuZHNXaXRo
U29mdEJyZWFrKQogICAgICAgICByZXR1cm4gYWxpZ25tZW50OwogCiAjaWYgIUVOQUJMRShDU1Mz
X1RFWFQpCi0gICAgcmV0dXJuIChhbGlnbm1lbnQgPT0gSlVTVElGWSkgPyBUQVNUQVJUIDogYWxp
Z25tZW50OworICAgIHJldHVybiAoYWxpZ25tZW50ID09IFRleHRBbGlnbk1vZGU6Okp1c3RpZnkp
ID8gVGV4dEFsaWduTW9kZTo6U3RhcnQgOiBhbGlnbm1lbnQ7CiAjZWxzZQotICAgIGlmIChhbGln
bm1lbnQgIT0gSlVTVElGWSkKKyAgICBpZiAoYWxpZ25tZW50ICE9IFRleHRBbGlnbk1vZGU6Okp1
c3RpZnkpCiAgICAgICAgIHJldHVybiBhbGlnbm1lbnQ7CiAKICAgICBUZXh0QWxpZ25MYXN0IGFs
aWdubWVudExhc3QgPSBzdHlsZSgpLnRleHRBbGlnbkxhc3QoKTsKICAgICBzd2l0Y2ggKGFsaWdu
bWVudExhc3QpIHsKLSAgICBjYXNlIFRleHRBbGlnbkxhc3RTdGFydDoKLSAgICAgICAgcmV0dXJu
IFRBU1RBUlQ7Ci0gICAgY2FzZSBUZXh0QWxpZ25MYXN0RW5kOgotICAgICAgICByZXR1cm4gVEFF
TkQ7Ci0gICAgY2FzZSBUZXh0QWxpZ25MYXN0TGVmdDoKLSAgICAgICAgcmV0dXJuIExFRlQ7Ci0g
ICAgY2FzZSBUZXh0QWxpZ25MYXN0UmlnaHQ6Ci0gICAgICAgIHJldHVybiBSSUdIVDsKLSAgICBj
YXNlIFRleHRBbGlnbkxhc3RDZW50ZXI6Ci0gICAgICAgIHJldHVybiBDRU5URVI7Ci0gICAgY2Fz
ZSBUZXh0QWxpZ25MYXN0SnVzdGlmeToKLSAgICAgICAgcmV0dXJuIEpVU1RJRlk7Ci0gICAgY2Fz
ZSBUZXh0QWxpZ25MYXN0QXV0bzoKLSAgICAgICAgaWYgKHRleHRKdXN0aWZ5ID09IFRleHRKdXN0
aWZ5RGlzdHJpYnV0ZSkKLSAgICAgICAgICAgIHJldHVybiBKVVNUSUZZOwotICAgICAgICByZXR1
cm4gVEFTVEFSVDsKKyAgICBjYXNlIFRleHRBbGlnbkxhc3Q6OlN0YXJ0OgorICAgICAgICByZXR1
cm4gVGV4dEFsaWduTW9kZTo6U3RhcnQ7CisgICAgY2FzZSBUZXh0QWxpZ25MYXN0OjpFbmQ6Cisg
ICAgICAgIHJldHVybiBUZXh0QWxpZ25Nb2RlOjpFbmQ7CisgICAgY2FzZSBUZXh0QWxpZ25MYXN0
OjpMZWZ0OgorICAgICAgICByZXR1cm4gVGV4dEFsaWduTW9kZTo6TGVmdDsKKyAgICBjYXNlIFRl
eHRBbGlnbkxhc3Q6OlJpZ2h0OgorICAgICAgICByZXR1cm4gVGV4dEFsaWduTW9kZTo6UmlnaHQ7
CisgICAgY2FzZSBUZXh0QWxpZ25MYXN0OjpDZW50ZXI6CisgICAgICAgIHJldHVybiBUZXh0QWxp
Z25Nb2RlOjpDZW50ZXI7CisgICAgY2FzZSBUZXh0QWxpZ25MYXN0OjpKdXN0aWZ5OgorICAgICAg
ICByZXR1cm4gVGV4dEFsaWduTW9kZTo6SnVzdGlmeTsKKyAgICBjYXNlIFRleHRBbGlnbkxhc3Q6
OkF1dG86CisgICAgICAgIGlmICh0ZXh0SnVzdGlmeSA9PSBUZXh0SnVzdGlmeTo6RGlzdHJpYnV0
ZSkKKyAgICAgICAgICAgIHJldHVybiBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5OworICAgICAgICBy
ZXR1cm4gVGV4dEFsaWduTW9kZTo6U3RhcnQ7CiAgICAgfQogICAgIHJldHVybiBhbGlnbm1lbnQ7
CiAjZW5kaWYKQEAgLTYxNCw3ICs2MTQsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0
ZUV4cGFuc2lvbkZvCiAgICAgfQogfQogCi12b2lkIFJlbmRlckJsb2NrRmxvdzo6dXBkYXRlTG9n
aWNhbFdpZHRoRm9yQWxpZ25tZW50KGNvbnN0IEVUZXh0QWxpZ24mIHRleHRBbGlnbiwgY29uc3Qg
Um9vdElubGluZUJveCogcm9vdElubGluZUJveCwgQmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1biwg
ZmxvYXQmIGxvZ2ljYWxMZWZ0LCBmbG9hdCYgdG90YWxMb2dpY2FsV2lkdGgsIGZsb2F0JiBhdmFp
bGFibGVMb2dpY2FsV2lkdGgsIGludCBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KQordm9pZCBS
ZW5kZXJCbG9ja0Zsb3c6OnVwZGF0ZUxvZ2ljYWxXaWR0aEZvckFsaWdubWVudChjb25zdCBUZXh0
QWxpZ25Nb2RlJiB0ZXh0QWxpZ24sIGNvbnN0IFJvb3RJbmxpbmVCb3gqIHJvb3RJbmxpbmVCb3gs
IEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4sIGZsb2F0JiBsb2dpY2FsTGVmdCwgZmxvYXQmIHRv
dGFsTG9naWNhbFdpZHRoLCBmbG9hdCYgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBpbnQgZXhwYW5z
aW9uT3Bwb3J0dW5pdHlDb3VudCkKIHsKICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbjsKICAg
ICBpZiAocm9vdElubGluZUJveCAmJiBzdHlsZSgpLnVuaWNvZGVCaWRpKCkgPT0gUGxhaW50ZXh0
KQpAQCAtNjI3LDE5ICs2MjcsMTkgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnVwZGF0ZUxvZ2lj
YWxXaWR0aAogICAgIC8vIG9iamVjdHMgaG9yaXpvbnRhbGx5LiBUaGUgdG90YWwgd2lkdGggb2Yg
dGhlIGxpbmUgY2FuIGJlIGluY3JlYXNlZCBpZiB3ZSBlbmQgdXAKICAgICAvLyBqdXN0aWZ5aW5n
IHRleHQuCiAgICAgc3dpdGNoICh0ZXh0QWxpZ24pIHsKLSAgICBjYXNlIExFRlQ6Ci0gICAgY2Fz
ZSBXRUJLSVRfTEVGVDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CisgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgogICAgICAgICB1cGRhdGVMb2dpY2FsV2lkdGhGb3JM
ZWZ0QWxpZ25lZEJsb2NrKHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpLCB0cmFpbGlu
Z1NwYWNlUnVuLCBsb2dpY2FsTGVmdCwgdG90YWxMb2dpY2FsV2lkdGgsIGF2YWlsYWJsZUxvZ2lj
YWxXaWR0aCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUklHSFQ6Ci0gICAgY2FzZSBXRUJL
SVRfUklHSFQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpSaWdodDoKKyAgICBjYXNlIFRleHRB
bGlnbk1vZGU6OldlYktpdFJpZ2h0OgogICAgICAgICB1cGRhdGVMb2dpY2FsV2lkdGhGb3JSaWdo
dEFsaWduZWRCbG9jayhzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSwgdHJhaWxpbmdT
cGFjZVJ1biwgbG9naWNhbExlZnQsIHRvdGFsTG9naWNhbFdpZHRoLCBhdmFpbGFibGVMb2dpY2Fs
V2lkdGgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENFTlRFUjoKLSAgICBjYXNlIFdFQktJ
VF9DRU5URVI6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpDZW50ZXI6CisgICAgY2FzZSBUZXh0
QWxpZ25Nb2RlOjpXZWJLaXRDZW50ZXI6CiAgICAgICAgIHVwZGF0ZUxvZ2ljYWxXaWR0aEZvckNl
bnRlckFsaWduZWRCbG9jayhzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSwgdHJhaWxp
bmdTcGFjZVJ1biwgbG9naWNhbExlZnQsIHRvdGFsTG9naWNhbFdpZHRoLCBhdmFpbGFibGVMb2dp
Y2FsV2lkdGgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEpVU1RJRlk6CisgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5OgogICAgICAgICBhZGp1c3RJbmxpbmVEaXJlY3Rpb25MaW5l
Qm91bmRzKGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQsIGxvZ2ljYWxMZWZ0LCBhdmFpbGFibGVM
b2dpY2FsV2lkdGgpOwogICAgICAgICBpZiAoZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCkgewog
ICAgICAgICAgICAgaWYgKHRyYWlsaW5nU3BhY2VSdW4pIHsKQEAgLTY0OSwxMyArNjQ5LDEzIEBA
IHZvaWQgUmVuZGVyQmxvY2tGbG93Ojp1cGRhdGVMb2dpY2FsV2lkdGgKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIEZBTExUSFJPVUdIOwotICAgIGNhc2UgVEFTVEFSVDoK
KyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlN0YXJ0OgogICAgICAgICBpZiAoZGlyZWN0aW9uID09
IExUUikKICAgICAgICAgICAgIHVwZGF0ZUxvZ2ljYWxXaWR0aEZvckxlZnRBbGlnbmVkQmxvY2so
c3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCksIHRyYWlsaW5nU3BhY2VSdW4sIGxvZ2lj
YWxMZWZ0LCB0b3RhbExvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgdXBkYXRlTG9naWNhbFdpZHRoRm9yUmlnaHRBbGlnbmVkQmxv
Y2soc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCksIHRyYWlsaW5nU3BhY2VSdW4sIGxv
Z2ljYWxMZWZ0LCB0b3RhbExvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUQUVORDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkVu
ZDoKICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBMVFIpCiAgICAgICAgICAgICB1cGRhdGVMb2dp
Y2FsV2lkdGhGb3JSaWdodEFsaWduZWRCbG9jayhzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oKSwgdHJhaWxpbmdTcGFjZVJ1biwgbG9naWNhbExlZnQsIHRvdGFsTG9naWNhbFdpZHRoLCBh
dmFpbGFibGVMb2dpY2FsV2lkdGgpOwogICAgICAgICBlbHNlCkBAIC02NzUsNyArNjc1LDcgQEAg
c3RhdGljIHZvaWQgdXBkYXRlTG9naWNhbElubGluZVBvc2l0aW9ucwogCiB2b2lkIFJlbmRlckJs
b2NrRmxvdzo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmUoUm9vdElubGlu
ZUJveCogbGluZUJveCwgY29uc3QgTGluZUluZm8mIGxpbmVJbmZvLCBCaWRpUnVuKiBmaXJzdFJ1
biwgQmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1biwgYm9vbCByZWFjaGVkRW5kLCBHbHlwaE92ZXJm
bG93QW5kRmFsbGJhY2tGb250c01hcCYgdGV4dEJveERhdGFNYXAsIFZlcnRpY2FsUG9zaXRpb25D
YWNoZSYgdmVydGljYWxQb3NpdGlvbkNhY2hlLCBXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3Vy
ZW1lbnRzKQogewotICAgIEVUZXh0QWxpZ24gdGV4dEFsaWduID0gdGV4dEFsaWdubWVudEZvckxp
bmUoIXJlYWNoZWRFbmQgJiYgIWxpbmVCb3gtPmVuZHNXaXRoQnJlYWsoKSk7CisgICAgVGV4dEFs
aWduTW9kZSB0ZXh0QWxpZ24gPSB0ZXh0QWxpZ25tZW50Rm9yTGluZSghcmVhY2hlZEVuZCAmJiAh
bGluZUJveC0+ZW5kc1dpdGhCcmVhaygpKTsKICAgICAKICAgICAvLyBDU1MgMi4xOiAiJ1RleHQt
aW5kZW50JyBvbmx5IGFmZmVjdHMgYSBsaW5lIGlmIGl0IGlzIHRoZSBmaXJzdCBmb3JtYXR0ZWQg
bGluZSBvZiBhbiBlbGVtZW50LiBGb3IgZXhhbXBsZSwgdGhlIGZpcnN0IGxpbmUgb2YgYW4gYW5v
bnltb3VzIGJsb2NrIAogICAgIC8vIGJveCBpcyBvbmx5IGFmZmVjdGVkIGlmIGl0IGlzIHRoZSBm
aXJzdCBjaGlsZCBvZiBpdHMgcGFyZW50IGVsZW1lbnQuIgpAQCAtNzAyLDcgKzcwMiw3IEBAIHZv
aWQgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5lRGlyZWMKICAgICBsaW5lQm94LT5wbGFj
ZUJveGVzSW5JbmxpbmVEaXJlY3Rpb24obGluZUxvZ2ljYWxMZWZ0LCBuZWVkc1dvcmRTcGFjaW5n
KTsKIH0KIAotc3RhdGljIGlubGluZSBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlv
ckZvcklubGluZVRleHRCb3goUmVuZGVyQmxvY2tGbG93JiBibG9jaywgSW5saW5lVGV4dEJveCYg
dGV4dEJveCwgQmlkaVJ1biogcHJldmlvdXNSdW4sIEJpZGlSdW4qIG5leHRSdW4sIEVUZXh0QWxp
Z24gdGV4dEFsaWduLCBib29sIGlzQWZ0ZXJFeHBhbnNpb24pCitzdGF0aWMgaW5saW5lIEV4cGFu
c2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yRm9ySW5saW5lVGV4dEJveChSZW5kZXJCbG9j
a0Zsb3cmIGJsb2NrLCBJbmxpbmVUZXh0Qm94JiB0ZXh0Qm94LCBCaWRpUnVuKiBwcmV2aW91c1J1
biwgQmlkaVJ1biogbmV4dFJ1biwgVGV4dEFsaWduTW9kZSB0ZXh0QWxpZ24sIGJvb2wgaXNBZnRl
ckV4cGFuc2lvbikKIHsKICAgICAvLyBUYXRlY2h1eW9rbyBpcyBtb2RlbGVkIGFzIHRoZSBPYmpl
Y3QgUmVwbGFjZW1lbnQgQ2hhcmFjdGVyIChVK0ZGRkMpLCB3aGljaCBjYW4gbmV2ZXIgaGF2ZSBl
eHBhbnNpb24gb3Bwb3J0dW5pdGllcyBpbnNpZGUgbm9yIGludHJpbnNpY2FsbHkgYWRqYWNlbnQg
dG8gaXQuCiAgICAgaWYgKHRleHRCb3gucmVuZGVyZXIoKS5zdHlsZSgpLnRleHRDb21iaW5lKCkg
PT0gVGV4dENvbWJpbmU6Okhvcml6b250YWwpCkBAIC03MTEsNyArNzExLDcgQEAgc3RhdGljIGlu
bGluZSBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpbwogICAgIEV4cGFuc2lvbkJlaGF2aW9yIHJl
c3VsdCA9IDA7CiAgICAgYm9vbCBzZXRMZWFkaW5nRXhwYW5zaW9uID0gZmFsc2U7CiAgICAgYm9v
bCBzZXRUcmFpbGluZ0V4cGFuc2lvbiA9IGZhbHNlOwotICAgIGlmICh0ZXh0QWxpZ24gPT0gSlVT
VElGWSkgeworICAgIGlmICh0ZXh0QWxpZ24gPT0gVGV4dEFsaWduTW9kZTo6SnVzdGlmeSkgewog
ICAgICAgICAvLyBJZiB0aGUgbmV4dCBib3ggaXMgcnVieSwgYW5kIHdlJ3JlIGp1c3RpZnlpbmcs
IGFuZCB0aGUgZmlyc3QgYm94IGluIHRoZSBydWJ5IGJhc2UgaGFzIGEgbGVhZGluZyBleHBhbnNp
b24sIGFuZCB3ZSBhcmUgYSB0ZXh0IGJveCwgdGhlbiBmb3JjZSBhIHRyYWlsaW5nIGV4cGFuc2lv
bi4KICAgICAgICAgaWYgKG5leHRSdW4gJiYgaXM8UmVuZGVyUnVieVJ1bj4obmV4dFJ1bi0+cmVu
ZGVyZXIoKSkgJiYgZG93bmNhc3Q8UmVuZGVyUnVieVJ1bj4obmV4dFJ1bi0+cmVuZGVyZXIoKSku
cnVieUJhc2UoKSAmJiBuZXh0UnVuLT5yZW5kZXJlcigpLnN0eWxlKCkuY29sbGFwc2VXaGl0ZVNw
YWNlKCkpIHsKICAgICAgICAgICAgIGF1dG8mIHJ1YnlCYXNlID0gKmRvd25jYXN0PFJlbmRlclJ1
YnlSdW4+KG5leHRSdW4tPnJlbmRlcmVyKCkpLnJ1YnlCYXNlKCk7CkBAIC04MjUsNyArODI1LDcg
QEAgc3RhdGljIGJvb2wgaXNMYXN0SW5GbG93UnVuKEJpZGlSdW4mIHJ1bgogICAgIHJldHVybiB0
cnVlOwogfQogICAgIAotQmlkaVJ1biogUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5lRGly
ZWN0aW9uUG9zaXRpb25zRm9yU2VnbWVudChSb290SW5saW5lQm94KiBsaW5lQm94LCBjb25zdCBM
aW5lSW5mbyYgbGluZUluZm8sIEVUZXh0QWxpZ24gdGV4dEFsaWduLCBmbG9hdCYgbG9naWNhbExl
ZnQsIAorQmlkaVJ1biogUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9z
aXRpb25zRm9yU2VnbWVudChSb290SW5saW5lQm94KiBsaW5lQm94LCBjb25zdCBMaW5lSW5mbyYg
bGluZUluZm8sIFRleHRBbGlnbk1vZGUgdGV4dEFsaWduLCBmbG9hdCYgbG9naWNhbExlZnQsIAog
ICAgIGZsb2F0JiBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIEJpZGlSdW4qIGZpcnN0UnVuLCBCaWRp
UnVuKiB0cmFpbGluZ1NwYWNlUnVuLCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYg
dGV4dEJveERhdGFNYXAsIFZlcnRpY2FsUG9zaXRpb25DYWNoZSYgdmVydGljYWxQb3NpdGlvbkNh
Y2hlLAogICAgIFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVudHMpCiB7CkBAIC04ODIs
NyArODgyLDcgQEAgQmlkaVJ1biogUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5lRAogICAg
ICAgICAgICAgICAgIGNhbkhhbmdQdW5jdHVhdGlvbkF0RW5kID0gZmFsc2U7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh0ZXh0QWxpZ24gPT0gSlVTVElGWSAm
JiBydW4gIT0gdHJhaWxpbmdTcGFjZVJ1bikKKyAgICAgICAgICAgIGlmICh0ZXh0QWxpZ24gPT0g
VGV4dEFsaWduTW9kZTo6SnVzdGlmeSAmJiBydW4gIT0gdHJhaWxpbmdTcGFjZVJ1bikKICAgICAg
ICAgICAgICAgICBjb21wdXRlRXhwYW5zaW9uT3Bwb3J0dW5pdGllcygqdGhpcywgdGV4dEJveCwg
cHJldmlvdXNSdW4sIHJ1bi0+bmV4dCgpLCByZW5kZXJUZXh0LnN0cmluZ1ZpZXcocnVuLT5tX3N0
YXJ0LCBydW4tPm1fc3RvcCksIHJ1bi0+Ym94KCktPmRpcmVjdGlvbigpKTsKIAogICAgICAgICAg
ICAgaWYgKHVuc2lnbmVkIGxlbmd0aCA9IHJlbmRlclRleHQudGV4dCgpLmxlbmd0aCgpKSB7CkBA
IC04OTcsNyArODk3LDcgQEAgQmlkaVJ1biogUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5l
RAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgY2FuSGFuZ1B1bmN0dWF0aW9uQXRTdGFy
dCA9IGZhbHNlOwogICAgICAgICAgICAgYm9vbCBlbmNvdW50ZXJlZEp1c3RpZmllZFJ1YnkgPSBm
YWxzZTsKLSAgICAgICAgICAgIGlmIChpczxSZW5kZXJSdWJ5UnVuPihydW4tPnJlbmRlcmVyKCkp
ICYmIHRleHRBbGlnbiA9PSBKVVNUSUZZICYmIHJ1biAhPSB0cmFpbGluZ1NwYWNlUnVuICYmIGRv
d25jYXN0PFJlbmRlclJ1YnlSdW4+KHJ1bi0+cmVuZGVyZXIoKSkucnVieUJhc2UoKSkgeworICAg
ICAgICAgICAgaWYgKGlzPFJlbmRlclJ1YnlSdW4+KHJ1bi0+cmVuZGVyZXIoKSkgJiYgdGV4dEFs
aWduID09IFRleHRBbGlnbk1vZGU6Okp1c3RpZnkgJiYgcnVuICE9IHRyYWlsaW5nU3BhY2VSdW4g
JiYgZG93bmNhc3Q8UmVuZGVyUnVieVJ1bj4ocnVuLT5yZW5kZXJlcigpKS5ydWJ5QmFzZSgpKSB7
CiAgICAgICAgICAgICAgICAgYXV0byogcnVieUJhc2UgPSBkb3duY2FzdDxSZW5kZXJSdWJ5UnVu
PihydW4tPnJlbmRlcmVyKCkpLnJ1YnlCYXNlKCk7CiAgICAgICAgICAgICAgICAgaWYgKHJ1YnlC
YXNlLT5maXJzdFJvb3RCb3goKSAmJiAhcnVieUJhc2UtPmZpcnN0Um9vdEJveCgpLT5uZXh0Um9v
dEJveCgpICYmIHJ1bi0+cmVuZGVyZXIoKS5zdHlsZSgpLmNvbGxhcHNlV2hpdGVTcGFjZSgpKSB7
CiAgICAgICAgICAgICAgICAgICAgIHJ1YnlCYXNlLT5zZXRJc0FmdGVyRXhwYW5zaW9uKGlzQWZ0
ZXJFeHBhbnNpb24pOwpAQCAtOTQwLDcgKzk0MCw3IEBAIEJpZGlSdW4qIFJlbmRlckJsb2NrRmxv
dzo6Y29tcHV0ZUlubGluZUQKICAgICB9CiAKICAgICBpZiAoaXM8UmVuZGVyUnVieUJhc2U+KCp0
aGlzKSAmJiAhZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCkKLSAgICAgICAgdGV4dEFsaWduID0g
Q0VOVEVSOworICAgICAgICB0ZXh0QWxpZ24gPSBUZXh0QWxpZ25Nb2RlOjpDZW50ZXI7CiAKICAg
ICB1cGRhdGVMb2dpY2FsV2lkdGhGb3JBbGlnbm1lbnQodGV4dEFsaWduLCBsaW5lQm94LCB0cmFp
bGluZ1NwYWNlUnVuLCBsb2dpY2FsTGVmdCwgdG90YWxMb2dpY2FsV2lkdGgsIGF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCwgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCk7CiAKQEAgLTEzNzgsNyArMTM3
OCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRSdW5zQW5kRmxvYXQKICAgICAgICAg
ICAgIGlmIChsYXN0Um9vdEJveCgpKQogICAgICAgICAgICAgICAgIGxhc3RSb290Qm94KCktPnNl
dExpbmVCcmVha0luZm8oZW5kLnJlbmRlcmVyKCksIGVuZC5vZmZzZXQoKSwgcmVzb2x2ZXIuc3Rh
dHVzKCkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgVmlzdWFsRGlyZWN0aW9uT3Zl
cnJpZGUgb3ZlcnJpZGUgPSAoc3R5bGVUb1VzZS5ydGxPcmRlcmluZygpID09IFZpc3VhbE9yZGVy
ID8gKHN0eWxlVG9Vc2UuZGlyZWN0aW9uKCkgPT0gTFRSID8gVmlzdWFsTGVmdFRvUmlnaHRPdmVy
cmlkZSA6IFZpc3VhbFJpZ2h0VG9MZWZ0T3ZlcnJpZGUpIDogTm9WaXN1YWxPdmVycmlkZSk7Cisg
ICAgICAgICAgICBWaXN1YWxEaXJlY3Rpb25PdmVycmlkZSBvdmVycmlkZSA9IChzdHlsZVRvVXNl
LnJ0bE9yZGVyaW5nKCkgPT0gT3JkZXI6OlZpc3VhbCA/IChzdHlsZVRvVXNlLmRpcmVjdGlvbigp
ID09IExUUiA/IFZpc3VhbExlZnRUb1JpZ2h0T3ZlcnJpZGUgOiBWaXN1YWxSaWdodFRvTGVmdE92
ZXJyaWRlKSA6IE5vVmlzdWFsT3ZlcnJpZGUpOwogCiAgICAgICAgICAgICBpZiAoaXNOZXdVQkFQ
YXJhZ3JhcGggJiYgc3R5bGVUb1VzZS51bmljb2RlQmlkaSgpID09IFBsYWludGV4dCAmJiAhcmVz
b2x2ZXIuY29udGV4dCgpLT5wYXJlbnQoKSkgewogICAgICAgICAgICAgICAgIFRleHREaXJlY3Rp
b24gZGlyZWN0aW9uID0gc3R5bGVUb1VzZS5kaXJlY3Rpb24oKTsKQEAgLTE3NjMsNyArMTc2Myw3
IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpjaGVja0Zsb2F0SW5DbGVhbkwKICAgICAgICAgZmxv
YXRCb3hPbkNsZWFuTGluZS5oZWlnaHQoKSArIGZsb2F0Qm94T25DbGVhbkxpbmUudmVydGljYWxN
YXJnaW5FeHRlbnQoKSk7CiAgICAgCiAgICAgLy8gV2UgaGF2ZSB0byByZXNldCB0aGUgY2FwLWhl
aWdodCBhbGlnbm1lbnQgZG9uZSBieSB0aGUgZmlyc3QtbGV0dGVyIGZsb2F0cyB3aGVuIGluaXRp
YWwtbGV0dGVyIGlzIHNldCwgc28ganVzdCBhbHdheXMgdHJlYXQgZmlyc3QtbGV0dGVyIGZsb2F0
cyBhcyBkaXJ0eS4KLSAgICBpZiAob3JpZ2luYWxGbG9hdFJlY3Quc2l6ZSgpID09IG5ld1NpemUg
JiYgKGZsb2F0Qm94T25DbGVhbkxpbmUuc3R5bGUoKS5zdHlsZVR5cGUoKSAhPSBGSVJTVF9MRVRU
RVIgfHwgIWZsb2F0Qm94T25DbGVhbkxpbmUuc3R5bGUoKS5pbml0aWFsTGV0dGVyRHJvcCgpKSkK
KyAgICBpZiAob3JpZ2luYWxGbG9hdFJlY3Quc2l6ZSgpID09IG5ld1NpemUgJiYgKGZsb2F0Qm94
T25DbGVhbkxpbmUuc3R5bGUoKS5zdHlsZVR5cGUoKSAhPSBQc2V1ZG9JZDo6Rmlyc3RMZXR0ZXIg
fHwgIWZsb2F0Qm94T25DbGVhbkxpbmUuc3R5bGUoKS5pbml0aWFsTGV0dGVyRHJvcCgpKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgTGF5b3V0VW5pdCBmbG9hdFRvcCA9IGlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgPyBvcmlnaW5hbEZsb2F0UmVjdC55KCkgOiBvcmlnaW5hbEZsb2F0UmVjdC54
KCk7CkBAIC0yMDg5LDcgKzIwODksNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6YWRkT3ZlcmZs
b3dGcm9tSW5sCiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpkZWxldGVFbGxpcHNpc0xpbmVCb3hl
cygpCiB7Ci0gICAgRVRleHRBbGlnbiB0ZXh0QWxpZ24gPSBzdHlsZSgpLnRleHRBbGlnbigpOwor
ICAgIFRleHRBbGlnbk1vZGUgdGV4dEFsaWduID0gc3R5bGUoKS50ZXh0QWxpZ24oKTsKICAgICBi
b29sIGx0ciA9IHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpOwogICAgIEluZGVudFRl
eHRPck5vdCBzaG91bGRJbmRlbnRUZXh0ID0gSW5kZW50VGV4dDsKICAgICBmb3IgKFJvb3RJbmxp
bmVCb3gqIGN1cnIgPSBmaXJzdFJvb3RCb3goKTsgY3VycjsgY3VyciA9IGN1cnItPm5leHRSb290
Qm94KCkpIHsKQEAgLTIxMjYsNyArMjEyNiw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpjaGVj
a0xpbmVzRm9yVGV4dE8KICAgICAvLyBjaGVjayB0aGUgbGVmdCBlZGdlIG9mIHRoZSBsaW5lIGJv
eCB0byBzZWUgaWYgaXQgaXMgbGVzcwogICAgIC8vIEluY2x1ZGUgdGhlIHNjcm9sbGJhciBmb3Ig
b3ZlcmZsb3cgYmxvY2tzLCB3aGljaCBtZWFucyB3ZSB3YW50IHRvIHVzZSAiY29udGVudFdpZHRo
KCkiCiAgICAgYm9vbCBsdHIgPSBzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKLSAg
ICBFVGV4dEFsaWduIHRleHRBbGlnbiA9IHN0eWxlKCkudGV4dEFsaWduKCk7CisgICAgVGV4dEFs
aWduTW9kZSB0ZXh0QWxpZ24gPSBzdHlsZSgpLnRleHRBbGlnbigpOwogICAgIGJvb2wgZmlyc3RM
aW5lID0gdHJ1ZTsKICAgICBmb3IgKFJvb3RJbmxpbmVCb3gqIGN1cnIgPSBmaXJzdFJvb3RCb3go
KTsgY3VycjsgY3VyciA9IGN1cnItPm5leHRSb290Qm94KCkpIHsKICAgICAgICAgSW5kZW50VGV4
dE9yTm90IHNob3VsZEluZGVudFRleHQgPSBmaXJzdExpbmUgPyBJbmRlbnRUZXh0IDogRG9Ob3RJ
bmRlbnRUZXh0OwpAQCAtMjIxNCwxOCArMjIxNCwxOCBAQCBib29sIFJlbmRlckJsb2NrRmxvdzo6
cG9zaXRpb25OZXdGbG9hdE9uCiAKIExheW91dFVuaXQgUmVuZGVyQmxvY2tGbG93OjpzdGFydEFs
aWduZWRPZmZzZXRGb3JMaW5lKExheW91dFVuaXQgcG9zaXRpb24sIEluZGVudFRleHRPck5vdCBz
aG91bGRJbmRlbnRUZXh0KQogewotICAgIEVUZXh0QWxpZ24gdGV4dEFsaWduID0gc3R5bGUoKS50
ZXh0QWxpZ24oKTsKKyAgICBUZXh0QWxpZ25Nb2RlIHRleHRBbGlnbiA9IHN0eWxlKCkudGV4dEFs
aWduKCk7CiAgICAgYm9vbCBzaG91bGRBcHBseUluZGVudFRleHQgPSBmYWxzZTsKICAgICBzd2l0
Y2ggKHRleHRBbGlnbikgewotICAgIGNhc2UgTEVGVDoKLSAgICBjYXNlIFdFQktJVF9MRUZUOgor
ICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6Oldl
YktpdExlZnQ6CiAgICAgICAgIHNob3VsZEFwcGx5SW5kZW50VGV4dCA9IHN0eWxlKCkuaXNMZWZ0
VG9SaWdodERpcmVjdGlvbigpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFJJR0hUOgotICAg
IGNhc2UgV0VCS0lUX1JJR0hUOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CisgICAg
Y2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRSaWdodDoKICAgICAgICAgc2hvdWxkQXBwbHlJbmRl
bnRUZXh0ID0gIXN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIFRBU1RBUlQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpTdGFydDoKICAg
ICAgICAgc2hvdWxkQXBwbHlJbmRlbnRUZXh0ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAg
ZGVmYXVsdDoKQEAgLTIyMzUsNyArMjIzNSw3IEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2tGbG93
OjpzdGFydEFsaWduZWQKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI0NTIyCiAgICAgLy8gVGhpcyBxdWlyayBpcyBmb3IgbGVnYWN5IGNvbnRlbnQgdGhh
dCBkb2Vzbid0IHdvcmsgcHJvcGVybHkgd2l0aCB0aGUgY2VudGVyIHBvc2l0aW9uaW5nIHNjaGVt
ZQogICAgIC8vIGJlaW5nIGhvbm9yZWQgKGUuZy4sIGVwdWJzKS4KLSAgICBpZiAoc2hvdWxkQXBw
bHlJbmRlbnRUZXh0IHx8IHNldHRpbmdzKCkudXNlTGVnYWN5VGV4dEFsaWduUG9zaXRpb25lZEVs
ZW1lbnRCZWhhdmlvcigpKSAvLyBGSVhNRTogSGFuZGxlIFRBRU5EIGhlcmUKKyAgICBpZiAoc2hv
dWxkQXBwbHlJbmRlbnRUZXh0IHx8IHNldHRpbmdzKCkudXNlTGVnYWN5VGV4dEFsaWduUG9zaXRp
b25lZEVsZW1lbnRCZWhhdmlvcigpKSAvLyBGSVhNRTogSGFuZGxlIFRleHRBbGlnbk1vZGU6OkVu
ZCBoZXJlCiAgICAgICAgIHJldHVybiBzdGFydE9mZnNldEZvckxpbmUocG9zaXRpb24sIHNob3Vs
ZEluZGVudFRleHQpOwogCiAgICAgLy8gdXBkYXRlTG9naWNhbFdpZHRoRm9yQWxpZ25tZW50KCkg
aGFuZGxlcyB0aGUgZGlyZWN0aW9uIG9mIHRoZSBibG9jayBzbyBubyBuZWVkIHRvIGNvbnNpZGVy
IGl0IGhlcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCShyZXZp
c2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTQwLDEzICs5NDAsMTMgQEAgdm9pZCBSZW5kZXJCb3g6OnBhblNj
cm9sbChjb25zdCBJbnRQb2ludAogCiBib29sIFJlbmRlckJveDo6aGFzVmVydGljYWxTY3JvbGxi
YXJXaXRoQXV0b0JlaGF2aW9yKCkgY29uc3QKIHsKLSAgICBib29sIG92ZXJmbG93U2Nyb2xsQWN0
c0xpa2VBdXRvID0gc3R5bGUoKS5vdmVyZmxvd1koKSA9PSBPdmVyZmxvdzo6U2Nyb2xsICYmICFz
dHlsZSgpLmhhc1BzZXVkb1N0eWxlKFNDUk9MTEJBUikgJiYgU2Nyb2xsYmFyVGhlbWU6OnRoZW1l
KCkudXNlc092ZXJsYXlTY3JvbGxiYXJzKCk7CisgICAgYm9vbCBvdmVyZmxvd1Njcm9sbEFjdHNM
aWtlQXV0byA9IHN0eWxlKCkub3ZlcmZsb3dZKCkgPT0gT3ZlcmZsb3c6OlNjcm9sbCAmJiAhc3R5
bGUoKS5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6U2Nyb2xsYmFyKSAmJiBTY3JvbGxiYXJUaGVt
ZTo6dGhlbWUoKS51c2VzT3ZlcmxheVNjcm9sbGJhcnMoKTsKICAgICByZXR1cm4gaGFzT3ZlcmZs
b3dDbGlwKCkgJiYgKHN0eWxlKCkub3ZlcmZsb3dZKCkgPT0gT3ZlcmZsb3c6OkF1dG8gfHwgc3R5
bGUoKS5vdmVyZmxvd1koKSA9PSBPdmVyZmxvdzo6T3ZlcmxheSB8fCBvdmVyZmxvd1Njcm9sbEFj
dHNMaWtlQXV0byk7CiB9CiAKIGJvb2wgUmVuZGVyQm94OjpoYXNIb3Jpem9udGFsU2Nyb2xsYmFy
V2l0aEF1dG9CZWhhdmlvcigpIGNvbnN0CiB7Ci0gICAgYm9vbCBvdmVyZmxvd1Njcm9sbEFjdHNM
aWtlQXV0byA9IHN0eWxlKCkub3ZlcmZsb3dYKCkgPT0gT3ZlcmZsb3c6OlNjcm9sbCAmJiAhc3R5
bGUoKS5oYXNQc2V1ZG9TdHlsZShTQ1JPTExCQVIpICYmIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgp
LnVzZXNPdmVybGF5U2Nyb2xsYmFycygpOworICAgIGJvb2wgb3ZlcmZsb3dTY3JvbGxBY3RzTGlr
ZUF1dG8gPSBzdHlsZSgpLm92ZXJmbG93WCgpID09IE92ZXJmbG93OjpTY3JvbGwgJiYgIXN0eWxl
KCkuaGFzUHNldWRvU3R5bGUoUHNldWRvSWQ6OlNjcm9sbGJhcikgJiYgU2Nyb2xsYmFyVGhlbWU6
OnRoZW1lKCkudXNlc092ZXJsYXlTY3JvbGxiYXJzKCk7CiAgICAgcmV0dXJuIGhhc092ZXJmbG93
Q2xpcCgpICYmIChzdHlsZSgpLm92ZXJmbG93WCgpID09IE92ZXJmbG93OjpBdXRvIHx8IHN0eWxl
KCkub3ZlcmZsb3dYKCkgPT0gT3ZlcmZsb3c6Ok92ZXJsYXkgfHwgb3ZlcmZsb3dTY3JvbGxBY3Rz
TGlrZUF1dG8pOwogfQogCkBAIC0xMzk4LDcgKzEzOTgsNyBAQCBzdGF0aWMgYm9vbCBpc0NhbmRp
ZGF0ZUZvck9wYXF1ZW5lc3NUZXN0CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGNoaWxkU3R5bGUg
PSBjaGlsZEJveC5zdHlsZSgpOwogICAgIGlmIChjaGlsZFN0eWxlLnBvc2l0aW9uKCkgIT0gUG9z
aXRpb25UeXBlOjpTdGF0aWMgJiYgY2hpbGRCb3guY29udGFpbmluZ0Jsb2NrKCkgIT0gY2hpbGRC
b3gucGFyZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoY2hpbGRTdHlsZS52
aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAoY2hpbGRTdHlsZS52aXNpYmlsaXR5KCkg
IT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChj
aGlsZFN0eWxlLnNoYXBlT3V0c2lkZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDky
LDcgKzE0OTIsNyBAQCBib29sIFJlbmRlckJveDo6YmFja2dyb3VuZEhhc09wYXF1ZVRvcExhCiAK
IHZvaWQgUmVuZGVyQm94OjpwYWludE1hc2soUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKLSAgICBpZiAoIXBhaW50SW5mby5zaG91bGRQYWlu
dFdpdGhpblJvb3QoKnRoaXMpIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgfHwg
cGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VNYXNrIHx8IHBhaW50SW5mby5jb250ZXh0KCku
cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGlu
Um9vdCgqdGhpcykgfHwgc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJs
ZSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZU1hc2sgfHwgcGFpbnRJbmZvLmNvbnRl
eHQoKS5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIExheW91dFJl
Y3QgcGFpbnRSZWN0ID0gTGF5b3V0UmVjdChwYWludE9mZnNldCwgc2l6ZSgpKTsKQEAgLTE1MDIs
NyArMTUwMiw3IEBAIHZvaWQgUmVuZGVyQm94OjpwYWludE1hc2soUGFpbnRJbmZvJiBwYWkKIAog
dm9pZCBSZW5kZXJCb3g6OnBhaW50Q2xpcHBpbmdNYXNrKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7Ci0gICAgaWYgKCFwYWludEluZm8uc2hv
dWxkUGFpbnRXaXRoaW5Sb290KCp0aGlzKSB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJ
QkxFIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlQ2xpcHBpbmdNYXNrIHx8IHBhaW50
SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmICghcGFpbnRJbmZvLnNo
b3VsZFBhaW50V2l0aGluUm9vdCgqdGhpcykgfHwgc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlz
aWJpbGl0eTo6VmlzaWJsZSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUNsaXBwaW5n
TWFzayB8fCBwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgTGF5b3V0UmVjdCBwYWludFJlY3QgPSBMYXlvdXRSZWN0KHBhaW50T2Zm
c2V0LCBzaXplKCkpOwpAQCAtMjA2NSw3ICsyMDY1LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmRpcnR5
TGluZUJveGVzKGJvb2wgZnVsbAogdm9pZCBSZW5kZXJCb3g6OnBvc2l0aW9uTGluZUJveChJbmxp
bmVFbGVtZW50Qm94JiBib3gpCiB7CiAgICAgaWYgKGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKSB7
Ci0gICAgICAgIC8vIENhY2hlIHRoZSB4IHBvc2l0aW9uIG9ubHkgaWYgd2Ugd2VyZSBhbiBJTkxJ
TkUgdHlwZSBvcmlnaW5hbGx5LgorICAgICAgICAvLyBDYWNoZSB0aGUgeCBwb3NpdGlvbiBvbmx5
IGlmIHdlIHdlcmUgYW4gRGlzcGxheVR5cGU6OklubGluZSB0eXBlIG9yaWdpbmFsbHkuCiAgICAg
ICAgIGJvb2wgd2FzSW5saW5lID0gc3R5bGUoKS5pc09yaWdpbmFsRGlzcGxheUlubGluZVR5cGUo
KTsKICAgICAgICAgaWYgKHdhc0lubGluZSkgewogICAgICAgICAgICAgLy8gVGhlIHZhbHVlIGlz
IGNhY2hlZCBpbiB0aGUgeFBvcyBvZiB0aGUgYm94LiAgV2Ugb25seSBuZWVkIHRoaXMgdmFsdWUg
aWYKQEAgLTIxMDYsNyArMjEwNiw3IEBAIHZvaWQgUmVuZGVyQm94OjpkZWxldGVMaW5lQm94V3Jh
cHBlcigpCiAKIExheW91dFJlY3QgUmVuZGVyQm94OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVw
YWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25z
dAogewotICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFICYmICFlbmNsb3Np
bmdMYXllcigpLT5oYXNWaXNpYmxlQ29udGVudCgpKQorICAgIGlmIChzdHlsZSgpLnZpc2liaWxp
dHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICFlbmNsb3NpbmdMYXllcigpLT5oYXNWaXNp
YmxlQ29udGVudCgpKQogICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwogICAgIExheW91dFJl
Y3QgciA9IHZpc3VhbE92ZXJmbG93UmVjdCgpOwogICAgIC8vIEZJWE1FOiBsYXlvdXREZWx0YSBu
ZWVkcyB0byBiZSBhcHBsaWVkIGluIHBhcnRzIGJlZm9yZS9hZnRlciB0cmFuc2Zvcm1zIGFuZApA
QCAtMjMxMiw3ICsyMzEyLDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGhJ
bkZyYQogICAgIC8vIHdpZHRoLiAgVXNlIHRoZSB3aWR0aCBmcm9tIHRoZSBzdHlsZSBjb250ZXh0
LgogICAgIC8vIEZJWE1FOiBBY2NvdW50IGZvciBibG9jay1mbG93IGluIGZsZXhpYmxlIGJveGVz
LgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjQxOAot
ICAgIGlmIChoYXNPdmVycmlkZUNvbnRlbnRMb2dpY2FsV2lkdGgoKSAmJiAoaXNSdWJ5UnVuKCkg
fHwgc3R5bGUoKS5ib3JkZXJGaXQoKSA9PSBCb3JkZXJGaXRMaW5lcyB8fCAocGFyZW50KCktPmlz
RmxleGlibGVCb3hJbmNsdWRpbmdEZXByZWNhdGVkKCkpKSkgeworICAgIGlmIChoYXNPdmVycmlk
ZUNvbnRlbnRMb2dpY2FsV2lkdGgoKSAmJiAoaXNSdWJ5UnVuKCkgfHwgc3R5bGUoKS5ib3JkZXJG
aXQoKSA9PSBCb3JkZXJGaXQ6OkxpbmVzIHx8IChwYXJlbnQoKS0+aXNGbGV4aWJsZUJveEluY2x1
ZGluZ0RlcHJlY2F0ZWQoKSkpKSB7CiAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ID0g
b3ZlcnJpZGVDb250ZW50TG9naWNhbFdpZHRoKCkgKyBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdp
ZHRoKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNTgwLDcgKzI1ODAsNyBAQCB2b2lk
IFJlbmRlckJveDo6Y29tcHV0ZUlubGluZURpcmVjdGlvbk1hCiAKICAgICAvLyBDYXNlIE9uZTog
VGhlIG9iamVjdCBpcyBiZWluZyBjZW50ZXJlZCBpbiB0aGUgY29udGFpbmluZyBibG9jaydzIGF2
YWlsYWJsZSBsb2dpY2FsIHdpZHRoLgogICAgIGlmICgobWFyZ2luU3RhcnRMZW5ndGguaXNBdXRv
KCkgJiYgbWFyZ2luRW5kTGVuZ3RoLmlzQXV0bygpICYmIGNoaWxkV2lkdGggPCBjb250YWluZXJX
aWR0aCkKLSAgICAgICAgfHwgKCFtYXJnaW5TdGFydExlbmd0aC5pc0F1dG8oKSAmJiAhbWFyZ2lu
RW5kTGVuZ3RoLmlzQXV0bygpICYmIGNvbnRhaW5pbmdCbG9jay5zdHlsZSgpLnRleHRBbGlnbigp
ID09IFdFQktJVF9DRU5URVIpKSB7CisgICAgICAgIHx8ICghbWFyZ2luU3RhcnRMZW5ndGguaXNB
dXRvKCkgJiYgIW1hcmdpbkVuZExlbmd0aC5pc0F1dG8oKSAmJiBjb250YWluaW5nQmxvY2suc3R5
bGUoKS50ZXh0QWxpZ24oKSA9PSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRDZW50ZXIpKSB7CiAgICAg
ICAgIC8vIE90aGVyIGJyb3dzZXJzIGNlbnRlciB0aGUgbWFyZ2luIGJveCBmb3IgYWxpZ249Y2Vu
dGVyIGVsZW1lbnRzIHNvIHdlIG1hdGNoIHRoZW0gaGVyZS4KICAgICAgICAgTGF5b3V0VW5pdCBt
YXJnaW5TdGFydFdpZHRoID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1hcmdpblN0YXJ0TGVuZ3Ro
LCBjb250YWluZXJXaWR0aCk7CiAgICAgICAgIExheW91dFVuaXQgbWFyZ2luRW5kV2lkdGggPSBt
aW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luRW5kTGVuZ3RoLCBjb250YWluZXJXaWR0aCk7CkBA
IC0yNTk4LDggKzI1OTgsOCBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUlubGluZURpcmVjdGlv
bk1hCiAgICAgfSAKICAgICAKICAgICAvLyBDYXNlIFRocmVlOiBUaGUgb2JqZWN0IGlzIGJlaW5n
IHB1c2hlZCB0byB0aGUgZW5kIG9mIHRoZSBjb250YWluaW5nIGJsb2NrJ3MgYXZhaWxhYmxlIGxv
Z2ljYWwgd2lkdGguCi0gICAgYm9vbCBwdXNoVG9FbmRGcm9tVGV4dEFsaWduID0gIW1hcmdpbkVu
ZExlbmd0aC5pc0F1dG8oKSAmJiAoKCFjb250YWluaW5nQmxvY2tTdHlsZS5pc0xlZnRUb1JpZ2h0
RGlyZWN0aW9uKCkgJiYgY29udGFpbmluZ0Jsb2NrU3R5bGUudGV4dEFsaWduKCkgPT0gV0VCS0lU
X0xFRlQpCi0gICAgICAgIHx8IChjb250YWluaW5nQmxvY2tTdHlsZS5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkgJiYgY29udGFpbmluZ0Jsb2NrU3R5bGUudGV4dEFsaWduKCkgPT0gV0VCS0lUX1JJ
R0hUKSk7CisgICAgYm9vbCBwdXNoVG9FbmRGcm9tVGV4dEFsaWduID0gIW1hcmdpbkVuZExlbmd0
aC5pc0F1dG8oKSAmJiAoKCFjb250YWluaW5nQmxvY2tTdHlsZS5pc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKCkgJiYgY29udGFpbmluZ0Jsb2NrU3R5bGUudGV4dEFsaWduKCkgPT0gVGV4dEFsaWduTW9k
ZTo6V2ViS2l0TGVmdCkKKyAgICAgICAgfHwgKGNvbnRhaW5pbmdCbG9ja1N0eWxlLmlzTGVmdFRv
UmlnaHREaXJlY3Rpb24oKSAmJiBjb250YWluaW5nQmxvY2tTdHlsZS50ZXh0QWxpZ24oKSA9PSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRSaWdodCkpOwogICAgIGlmICgobWFyZ2luU3RhcnRMZW5ndGgu
aXNBdXRvKCkgfHwgcHVzaFRvRW5kRnJvbVRleHRBbGlnbikgJiYgY2hpbGRXaWR0aCA8IGNvbnRh
aW5lcldpZHRoKSB7CiAgICAgICAgIG1hcmdpbkVuZCA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkVu
ZExlbmd0aCwgY29udGFpbmVyV2lkdGgpOwogICAgICAgICBtYXJnaW5TdGFydCA9IGNvbnRhaW5l
cldpZHRoIC0gY2hpbGRXaWR0aCAtIG1hcmdpbkVuZDsKQEAgLTI4NTcsNyArMjg1Nyw3IEBAIGJv
b2wgUmVuZGVyQm94Ojpza2lwQ29udGFpbmluZ0Jsb2NrRm9yUGUKICAgICAvLyBvYmplY3RzLCBz
dWNoIGFzIHRhYmxlLWNlbGxzIGFuZCBmbGV4Ym94ZXMsIHdpbGwgYmUgdHJlYXRlZCBhcyBpZiB0
aGV5IHdlcmUKICAgICAvLyBub24tYW5vbnltb3VzLgogICAgIGlmIChjb250YWluaW5nQmxvY2su
aXNBbm9ueW1vdXMoKSkKLSAgICAgICAgcmV0dXJuIGNvbnRhaW5pbmdCbG9jay5zdHlsZSgpLmRp
c3BsYXkoKSA9PSBCTE9DSyB8fCBjb250YWluaW5nQmxvY2suc3R5bGUoKS5kaXNwbGF5KCkgPT0g
SU5MSU5FX0JMT0NLOworICAgICAgICByZXR1cm4gY29udGFpbmluZ0Jsb2NrLnN0eWxlKCkuZGlz
cGxheSgpID09IERpc3BsYXlUeXBlOjpCbG9jayB8fCBjb250YWluaW5nQmxvY2suc3R5bGUoKS5k
aXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OklubGluZUJsb2NrOwogICAgIAogICAgIC8vIEZvciBx
dWlya3MgbW9kZSwgd2Ugc2tpcCBtb3N0IGF1dG8taGVpZ2h0IGNvbnRhaW5pbmcgYmxvY2tzIHdo
ZW4gY29tcHV0aW5nCiAgICAgLy8gcGVyY2VudGFnZXMuCkBAIC00Mzg2LDcgKzQzODYsNyBAQCBW
aXNpYmxlUG9zaXRpb24gUmVuZGVyQm94Ojpwb3NpdGlvbkZvclBvCiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoKCFyZW5kZXJlci5maXJzdENoaWxkKCkgJiYgIXJlbmRlcmVyLmlzSW5saW5lKCkg
JiYgIWlzPFJlbmRlckJsb2NrRmxvdz4ocmVuZGVyZXIpKQotICAgICAgICAgICAgfHwgcmVuZGVy
ZXIuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICAgICAgICAgIHx8IHJlbmRl
cmVyLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAogICAgICAgICBMYXlvdXRVbml0IHRvcCA9IHJlbmRlcmVyLmJvcmRl
clRvcCgpICsgcmVuZGVyZXIucGFkZGluZ1RvcCgpICsgKGlzPFJlbmRlclRhYmxlUm93PigqdGhp
cykgPyBMYXlvdXRVbml0KCkgOiByZW5kZXJlci55KCkpOwpAQCAtNDYzNCw3ICs0NjM0LDcgQEAg
Ym9vbCBSZW5kZXJCb3g6OmlzVW5zcGxpdHRhYmxlRm9yUGFnaW5hdAogICAgIHJldHVybiBpc1Jl
cGxhY2VkKCkKICAgICAgICAgfHwgaGFzVW5zcGxpdHRhYmxlU2Nyb2xsaW5nT3ZlcmZsb3coKQog
ICAgICAgICB8fCAocGFyZW50KCkgJiYgaXNXcml0aW5nTW9kZVJvb3QoKSkKLSAgICAgICAgfHwg
KGlzRmxvYXRpbmcoKSAmJiBzdHlsZSgpLnN0eWxlVHlwZSgpID09IEZJUlNUX0xFVFRFUiAmJiBz
dHlsZSgpLmluaXRpYWxMZXR0ZXJEcm9wKCkgPiAwKTsKKyAgICAgICAgfHwgKGlzRmxvYXRpbmco
KSAmJiBzdHlsZSgpLnN0eWxlVHlwZSgpID09IFBzZXVkb0lkOjpGaXJzdExldHRlciAmJiBzdHls
ZSgpLmluaXRpYWxMZXR0ZXJEcm9wKCkgPiAwKTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJCb3g6
OmxpbmVIZWlnaHQoYm9vbCAvKmZpcnN0TGluZSovLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rp
b24sIExpbmVQb3NpdGlvbk1vZGUgLypsaW5lUG9zaXRpb25Nb2RlKi8pIGNvbnN0CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJ
KHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1ODAsMjMgKzI1ODAsMjMgQEAgTGF5
b3V0UmVjdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6bG9jYWxDYQogICAgIENhcmV0QWxpZ25tZW50
IGFsaWdubWVudCA9IGFsaWduTGVmdDsKIAogICAgIHN3aXRjaCAoY3VycmVudFN0eWxlLnRleHRB
bGlnbigpKSB7Ci0gICAgY2FzZSBMRUZUOgotICAgIGNhc2UgV0VCS0lUX0xFRlQ6CisgICAgY2Fz
ZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0TGVm
dDoKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDRU5URVI6Ci0gICAgY2FzZSBXRUJLSVRfQ0VO
VEVSOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6Q2VudGVyOgorICAgIGNhc2UgVGV4dEFsaWdu
TW9kZTo6V2ViS2l0Q2VudGVyOgogICAgICAgICBhbGlnbm1lbnQgPSBhbGlnbkNlbnRlcjsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSSUdIVDoKLSAgICBjYXNlIFdFQktJVF9SSUdIVDoKKyAg
ICBjYXNlIFRleHRBbGlnbk1vZGU6OlJpZ2h0OgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2Vi
S2l0UmlnaHQ6CiAgICAgICAgIGFsaWdubWVudCA9IGFsaWduUmlnaHQ7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSlVTVElGWToKLSAgICBjYXNlIFRBU1RBUlQ6CisgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpKdXN0aWZ5OgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CiAgICAgICAg
IGlmICghY3VycmVudFN0eWxlLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKICAgICAgICAgICAg
IGFsaWdubWVudCA9IGFsaWduUmlnaHQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVEFFTkQ6
CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpFbmQ6CiAgICAgICAgIGlmIChjdXJyZW50U3R5bGUu
aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQogICAgICAgICAgICAgYWxpZ25tZW50ID0gYWxpZ25S
aWdodDsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3MSw3ICsyNzEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9k
ZUZvckltYWdlRHJhdyhjb25zdCBJbWFnZSYsIGNvbnN0IFBhaW50SW5mbyYpIGNvbnN0OwogCiBw
dWJsaWM6Ci0gICAgLy8gRm9yIFJlbmRlckJsb2NrcyBhbmQgUmVuZGVySW5saW5lcyB3aXRoIG1f
c3R5bGUtPnN0eWxlVHlwZSgpID09IEZJUlNUX0xFVFRFUiwgdGhpcyB0cmFja3MgdGhlaXIgcmVt
YWluaW5nIHRleHQgZnJhZ21lbnRzCisgICAgLy8gRm9yIFJlbmRlckJsb2NrcyBhbmQgUmVuZGVy
SW5saW5lcyB3aXRoIG1fc3R5bGUtPnN0eWxlVHlwZSgpID09IFBzZXVkb0lkOjpGaXJzdExldHRl
ciwgdGhpcyB0cmFja3MgdGhlaXIgcmVtYWluaW5nIHRleHQgZnJhZ21lbnRzCiAgICAgUmVuZGVy
VGV4dEZyYWdtZW50KiBmaXJzdExldHRlclJlbWFpbmluZ1RleHQoKSBjb25zdDsKICAgICB2b2lk
IHNldEZpcnN0TGV0dGVyUmVtYWluaW5nVGV4dChSZW5kZXJUZXh0RnJhZ21lbnQmKTsKICAgICB2
b2lkIGNsZWFyRmlyc3RMZXR0ZXJSZW1haW5pbmdUZXh0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0MCwxNCArMTQwLDE0IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENvdW50ZXJQbGFuPiBwbGFu
Q28KICAgICBhdXRvJiBzdHlsZSA9IHJlbmRlcmVyLnN0eWxlKCk7CiAKICAgICBzd2l0Y2ggKHN0
eWxlLnN0eWxlVHlwZSgpKSB7Ci0gICAgY2FzZSBOT1BTRVVETzoKKyAgICBjYXNlIFBzZXVkb0lk
OjpOb25lOgogICAgICAgICAvLyBTb21ldGltZXMgZWxlbWVudHMgaGF2ZSBtb3JlIHRoZW4gb25l
IHJlbmRlcmVyLiBPbmx5IHRoZSBmaXJzdCBvbmUgZ2V0cyB0aGUgY291bnRlcgogICAgICAgICAv
LyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9jb3VudGVyLWNyYXNoLmh0bWwKICAgICAgICAg
aWYgKGdlbmVyYXRpbmdFbGVtZW50LT5yZW5kZXJlcigpICE9ICZyZW5kZXJlcikKICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQkVGT1JF
OgotICAgIGNhc2UgQUZURVI6CisgICAgY2FzZSBQc2V1ZG9JZDo6QmVmb3JlOgorICAgIGNhc2Ug
UHNldWRvSWQ6OkFmdGVyOgogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OyAvLyBDb3VudGVycyBhcmUgZm9yYmlkZGVuIGZyb20gYWxsIG90
aGVyIHBzZXVkbyBlbGVtZW50cy4KQEAgLTM4NCw3ICszODQsNyBAQCBTdHJpbmcgUmVuZGVyQ291
bnRlcjo6b3JpZ2luYWxUZXh0KCkgY29uCiAgICAgICAgICAgICBpZiAoIWJlZm9yZUFmdGVyQ29u
dGFpbmVyLT5pc0Fub255bW91cygpICYmICFiZWZvcmVBZnRlckNvbnRhaW5lci0+aXNQc2V1ZG9F
bGVtZW50KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOyAvLyBSZW5kZXJDb3Vu
dGVycyBhcmUgcmVzdHJpY3RlZCB0byBiZWZvcmUgYW5kIGFmdGVyIHBzZXVkbyBlbGVtZW50cwog
ICAgICAgICAgICAgUHNldWRvSWQgY29udGFpbmVyU3R5bGUgPSBiZWZvcmVBZnRlckNvbnRhaW5l
ci0+c3R5bGUoKS5zdHlsZVR5cGUoKTsKLSAgICAgICAgICAgIGlmICgoY29udGFpbmVyU3R5bGUg
PT0gQkVGT1JFKSB8fCAoY29udGFpbmVyU3R5bGUgPT0gQUZURVIpKQorICAgICAgICAgICAgaWYg
KChjb250YWluZXJTdHlsZSA9PSBQc2V1ZG9JZDo6QmVmb3JlKSB8fCAoY29udGFpbmVyU3R5bGUg
PT0gUHNldWRvSWQ6OkFmdGVyKSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGJlZm9yZUFmdGVyQ29udGFpbmVyID0gYmVmb3JlQWZ0ZXJDb250YWluZXItPnBhcmVudCgpOwog
ICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRl
ZEZsZXhpYmxlQm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE0Nyw3ICsxNDcsNyBAQCBzdGF0aWMgTGF5b3V0VW5pdCBtYXJnaW5X
aWR0aEZvckNoaWxkKFJlCiBzdGF0aWMgYm9vbCBjaGlsZERvZXNOb3RBZmZlY3RXaWR0aE9yRmxl
eGluZyhSZW5kZXJPYmplY3QqIGNoaWxkKQogewogICAgIC8vIFBvc2l0aW9uZWQgY2hpbGRyZW4g
YW5kIGNvbGxhcHNlZCBjaGlsZHJlbiBkb24ndCBhZmZlY3QgdGhlIG1pbi9tYXggd2lkdGguCi0g
ICAgcmV0dXJuIGNoaWxkLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSB8fCBjaGlsZC0+c3R5bGUo
KS52aXNpYmlsaXR5KCkgPT0gQ09MTEFQU0U7CisgICAgcmV0dXJuIGNoaWxkLT5pc091dE9mRmxv
d1Bvc2l0aW9uZWQoKSB8fCBjaGlsZC0+c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0
eTo6Q29sbGFwc2U7CiB9CiAKIHN0YXRpYyBMYXlvdXRVbml0IGNvbnRlbnRXaWR0aEZvckNoaWxk
KFJlbmRlckJveCogY2hpbGQpCkBAIC00ODMsNyArNDgzLDcgQEAgdm9pZCBSZW5kZXJEZXByZWNh
dGVkRmxleGlibGVCb3g6OmxheW91dAogICAgICAgICAgICAgCiAgICAgICAgICAgICBMYXlvdXRT
aXplJiBjaGlsZExheW91dERlbHRhID0gY2hpbGRMYXlvdXREZWx0YXNbY2hpbGRJbmRleCsrXTsK
ICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGNoaWxkLT5zdHlsZSgpLnZpc2liaWxpdHko
KSA9PSBDT0xMQVBTRSkgeworICAgICAgICAgICAgaWYgKGNoaWxkLT5zdHlsZSgpLnZpc2liaWxp
dHkoKSA9PSBWaXNpYmlsaXR5OjpDb2xsYXBzZSkgewogICAgICAgICAgICAgICAgIC8vIHZpc2li
aWxpdHk6IGNvbGxhcHNlZCBjaGlsZHJlbiBkbyBub3QgcGFydGljaXBhdGUgaW4gb3VyIHBvc2l0
aW9uaW5nLgogICAgICAgICAgICAgICAgIC8vIEJ1dCB3ZSBuZWVkIHRvIGxheSB0aGVtIG91dC4K
ICAgICAgICAgICAgICAgICBsYXlvdXRDaGlsZElmTmVlZGVkQXBwbHlpbmdEZWx0YShjaGlsZCwg
Y2hpbGRMYXlvdXREZWx0YSk7CkBAIC01NzcsNyArNTc3LDcgQEAgdm9pZCBSZW5kZXJEZXByZWNh
dGVkRmxleGlibGVCb3g6OmxheW91dAogCiAgICAgICAgICAgICAgICAgICAgIC8vIE5vdyBkaXN0
cmlidXRlIHRoZSBzcGFjZSB0byBvYmplY3RzLgogICAgICAgICAgICAgICAgICAgICBmb3IgKFJl
bmRlckJveCogY2hpbGQgPSBpdGVyYXRvci5maXJzdCgpOyBjaGlsZCAmJiBzcGFjZUF2YWlsYWJs
ZVRoaXNQYXNzICYmIHRvdGFsRmxleDsgY2hpbGQgPSBpdGVyYXRvci5uZXh0KCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZC0+c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gQ09M
TEFQU0UpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQtPnN0eWxlKCkudmlzaWJp
bGl0eSgpID09IFZpc2liaWxpdHk6OkNvbGxhcHNlKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWxsb3dlZENoaWxk
RmxleChjaGlsZCwgZXhwYW5kaW5nLCBpKSkgewpAQCAtNzI3LDcgKzcyNyw3IEBAIHZvaWQgUmVu
ZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXQKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgTGF5b3V0U2l6ZSYgY2hpbGRMYXlvdXREZWx0YSA9IGNoaWxkTGF5b3V0RGVsdGFzW2NoaWxk
SW5kZXgrK107CiAKLSAgICAgICAgICAgIGlmIChjaGlsZC0+c3R5bGUoKS52aXNpYmlsaXR5KCkg
PT0gQ09MTEFQU0UpIHsKKyAgICAgICAgICAgIGlmIChjaGlsZC0+c3R5bGUoKS52aXNpYmlsaXR5
KCkgPT0gVmlzaWJpbGl0eTo6Q29sbGFwc2UpIHsKICAgICAgICAgICAgICAgICAvLyB2aXNpYmls
aXR5OiBjb2xsYXBzZWQgY2hpbGRyZW4gZG8gbm90IHBhcnRpY2lwYXRlIGluIG91ciBwb3NpdGlv
bmluZy4KICAgICAgICAgICAgICAgICAvLyBCdXQgd2UgbmVlZCB0byBsYXkgdGhlbSBkb3duLgog
ICAgICAgICAgICAgICAgIGxheW91dENoaWxkSWZOZWVkZWRBcHBseWluZ0RlbHRhKGNoaWxkLCBj
aGlsZExheW91dERlbHRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJE
ZXRhaWxzTWFya2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRGV0YWlsc01hcmtlci5jcHAJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTE4LDcgKzExOCw3IEBAIFBhdGggUmVuZGVyRGV0YWlsc01hcmtlcjo6Z2V0UGF0aChjb25zdCAK
IAogdm9pZCBSZW5kZXJEZXRhaWxzTWFya2VyOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewotICAgIGlmIChwYWludEluZm8ucGhh
c2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQgfHwgc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklT
SUJMRSkgeworICAgIGlmIChwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQg
fHwgc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkgewogICAgICAg
ICBSZW5kZXJCbG9ja0Zsb3c6OnBhaW50KHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTEsNDkgKzE1MSw0OSBAQCBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gUmVuZGVyRWxlbWVudDo6CiAgICAgfQogCiAgICAgc3dp
dGNoIChzdHlsZS5kaXNwbGF5KCkpIHsKLSAgICBjYXNlIE5PTkU6Ci0gICAgY2FzZSBDT05URU5U
UzoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpOb25lOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OkNv
bnRlbnRzOgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjYXNlIElOTElORToKKyAgICBj
YXNlIERpc3BsYXlUeXBlOjpJbmxpbmU6CiAgICAgICAgIGlmIChjcmVhdGlvblR5cGUgPT0gQ3Jl
YXRlQWxsUmVuZGVyZXJzKQogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRl
cklubGluZT4oZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpOwogICAgICAgICBGQUxMVEhST1VHSDsg
Ly8gRmllbGRzZXRzIHNob3VsZCBtYWtlIGEgYmxvY2sgZmxvdyBpZiBkaXNwbGF5OmlubGluZSBp
cyBzZXQuCi0gICAgY2FzZSBCTE9DSzoKLSAgICBjYXNlIElOTElORV9CTE9DSzoKLSAgICBjYXNl
IENPTVBBQ1Q6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6QmxvY2s6CisgICAgY2FzZSBEaXNwbGF5
VHlwZTo6SW5saW5lQmxvY2s6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6Q29tcGFjdDoKICAgICAg
ICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckJsb2NrRmxvdz4oZWxlbWVudCwgV1RGTW92
ZShzdHlsZSkpOwotICAgIGNhc2UgTElTVF9JVEVNOgorICAgIGNhc2UgRGlzcGxheVR5cGU6Okxp
c3RJdGVtOgogICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTGlzdEl0ZW0+KGVs
ZW1lbnQsIFdURk1vdmUoc3R5bGUpKTsKLSAgICBjYXNlIEZMRVg6Ci0gICAgY2FzZSBJTkxJTkVf
RkxFWDoKLSAgICBjYXNlIFdFQktJVF9GTEVYOgotICAgIGNhc2UgV0VCS0lUX0lOTElORV9GTEVY
OgorICAgIGNhc2UgRGlzcGxheVR5cGU6OkZsZXg6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6SW5s
aW5lRmxleDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpXZWJLaXRGbGV4OgorICAgIGNhc2UgRGlz
cGxheVR5cGU6OldlYktpdElubGluZUZsZXg6CiAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJl
cjxSZW5kZXJGbGV4aWJsZUJveD4oZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpOwotICAgIGNhc2Ug
R1JJRDoKLSAgICBjYXNlIElOTElORV9HUklEOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OkdyaWQ6
CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6SW5saW5lR3JpZDoKICAgICAgICAgcmV0dXJuIGNyZWF0
ZVJlbmRlcmVyPFJlbmRlckdyaWQ+KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKTsKLSAgICBjYXNl
IEJPWDoKLSAgICBjYXNlIElOTElORV9CT1g6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6Qm94Ogor
ICAgIGNhc2UgRGlzcGxheVR5cGU6OklubGluZUJveDoKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJl
bmRlcmVyPFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveD4oZWxlbWVudCwgV1RGTW92ZShzdHls
ZSkpOwogICAgIGRlZmF1bHQ6IHsKICAgICAgICAgaWYgKGNyZWF0aW9uVHlwZSA9PSBPbmx5Q3Jl
YXRlQmxvY2tBbmRGbGV4Ym94UmVuZGVyZXJzKQogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJl
bmRlcmVyPFJlbmRlckJsb2NrRmxvdz4oZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpOwogICAgICAg
ICBzd2l0Y2ggKHN0eWxlLmRpc3BsYXkoKSkgewotICAgICAgICBjYXNlIFRBQkxFOgotICAgICAg
ICBjYXNlIElOTElORV9UQUJMRToKKyAgICAgICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFibGU6Cisg
ICAgICAgIGNhc2UgRGlzcGxheVR5cGU6OklubGluZVRhYmxlOgogICAgICAgICAgICAgcmV0dXJu
IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclRhYmxlPihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSk7Ci0g
ICAgICAgIGNhc2UgVEFCTEVfQ0VMTDoKKyAgICAgICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFibGVD
ZWxsOgogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclRhYmxlQ2VsbD4o
ZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpOwotICAgICAgICBjYXNlIFRBQkxFX0NBUFRJT046Cisg
ICAgICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlQ2FwdGlvbjoKICAgICAgICAgICAgIHJldHVy
biBjcmVhdGVSZW5kZXJlcjxSZW5kZXJUYWJsZUNhcHRpb24+KGVsZW1lbnQsIFdURk1vdmUoc3R5
bGUpKTsKLSAgICAgICAgY2FzZSBUQUJMRV9ST1dfR1JPVVA6Ci0gICAgICAgIGNhc2UgVEFCTEVf
SEVBREVSX0dST1VQOgotICAgICAgICBjYXNlIFRBQkxFX0ZPT1RFUl9HUk9VUDoKKyAgICAgICAg
Y2FzZSBEaXNwbGF5VHlwZTo6VGFibGVSb3dHcm91cDoKKyAgICAgICAgY2FzZSBEaXNwbGF5VHlw
ZTo6VGFibGVIZWFkZXJHcm91cDoKKyAgICAgICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFibGVGb290
ZXJHcm91cDoKICAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJUYWJsZVNl
Y3Rpb24+KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKTsKLSAgICAgICAgY2FzZSBUQUJMRV9ST1c6
CisgICAgICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlUm93OgogICAgICAgICAgICAgcmV0dXJu
IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclRhYmxlUm93PihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSk7
Ci0gICAgICAgIGNhc2UgVEFCTEVfQ09MVU1OX0dST1VQOgotICAgICAgICBjYXNlIFRBQkxFX0NP
TFVNTjoKKyAgICAgICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1bW5Hcm91cDoKKyAgICAg
ICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1bW46CiAgICAgICAgICAgICByZXR1cm4gY3Jl
YXRlUmVuZGVyZXI8UmVuZGVyVGFibGVDb2w+KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKTsKICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjE1LDcgKzIxNSw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVyRWxlbWUKICAgICAgICAgUmVuZGVyQmxv
Y2sqIGZpcnN0TGluZUJsb2NrID0gcmVuZGVyZXJGb3JGaXJzdExpbmVTdHlsZS5maXJzdExpbmVC
bG9jaygpOwogICAgICAgICBpZiAoIWZpcnN0TGluZUJsb2NrKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgICAgIGF1dG8qIGZpcnN0TGluZVN0eWxlID0gZmlyc3RMaW5lQmxvY2st
PmdldENhY2hlZFBzZXVkb1N0eWxlKEZJUlNUX0xJTkUsICZzdHlsZSgpKTsKKyAgICAgICAgYXV0
byogZmlyc3RMaW5lU3R5bGUgPSBmaXJzdExpbmVCbG9jay0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUo
UHNldWRvSWQ6OkZpcnN0TGluZSwgJnN0eWxlKCkpOwogICAgICAgICBpZiAoIWZpcnN0TGluZVN0
eWxlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiBSZW5kZXJT
dHlsZTo6Y2xvbmVQdHIoKmZpcnN0TGluZVN0eWxlKTsKQEAgLTIzNyw3ICsyMzcsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRlckVsZW1lCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgICAgICBhdXRvIHN0eWxlID0gY29tcG9zZWRUcmVlUGFyZW50RWxlbWVu
dC0+c3R5bGVSZXNvbHZlcigpLnN0eWxlRm9yRWxlbWVudCgqY29tcG9zZWRUcmVlUGFyZW50RWxl
bWVudCwgJnBhcmVudFN0eWxlKS5yZW5kZXJTdHlsZTsKLSAgICAgICAgQVNTRVJUKHN0eWxlLT5k
aXNwbGF5KCkgPT0gQ09OVEVOVFMpOworICAgICAgICBBU1NFUlQoc3R5bGUtPmRpc3BsYXkoKSA9
PSBEaXNwbGF5VHlwZTo6Q29udGVudHMpOwogCiAgICAgICAgIC8vIFdlIGFjdCBhcyBpZiB0aGVy
ZSB3YXMgYW4gdW5zdHlsZWQgPHNwYW4+IGFyb3VuZCB0aGUgdGV4dCBub2RlLiBPbmx5IHN0eWxp
bmcgaGFwcGVucyB2aWEgaW5oZXJpdGFuY2UuCiAgICAgICAgIGF1dG8gZmlyc3RMaW5lU3R5bGUg
PSBSZW5kZXJTdHlsZTo6Y3JlYXRlUHRyKCk7CkBAIC02NTAsNyArNjUwLDcgQEAgdm9pZCBSZW5k
ZXJFbGVtZW50Ojpwcm9wYWdhdGVTdHlsZVRvQW5vbgogewogICAgIC8vIEZJWE1FOiBXZSBjb3Vs
ZCBzYXZlIHRoaXMgY2FsbCB3aGVuIHRoZSBjaGFuZ2Ugb25seSBhZmZlY3RlZCBub24taW5oZXJp
dGVkIHByb3BlcnRpZXMuCiAgICAgZm9yIChhdXRvJiBlbGVtZW50Q2hpbGQgOiBjaGlsZHJlbk9m
VHlwZTxSZW5kZXJFbGVtZW50PigqdGhpcykpIHsKLSAgICAgICAgaWYgKCFlbGVtZW50Q2hpbGQu
aXNBbm9ueW1vdXMoKSB8fCBlbGVtZW50Q2hpbGQuc3R5bGUoKS5zdHlsZVR5cGUoKSAhPSBOT1BT
RVVETykKKyAgICAgICAgaWYgKCFlbGVtZW50Q2hpbGQuaXNBbm9ueW1vdXMoKSB8fCBlbGVtZW50
Q2hpbGQuc3R5bGUoKS5zdHlsZVR5cGUoKSAhPSBQc2V1ZG9JZDo6Tm9uZSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChwcm9wYWdhdGlvblR5cGUgPT0gUHJvcGFnYXRlVG9C
bG9ja0NoaWxkcmVuT25seSAmJiAhaXM8UmVuZGVyQmxvY2s+KGVsZW1lbnRDaGlsZCkpCkBAIC03
MjQsOSArNzI0LDkgQEAgdm9pZCBSZW5kZXJFbGVtZW50OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bAog
ICAgICAgICAvLyBLZWVwIGxheWVyIGhpZXJhcmNoeSB2aXNpYmlsaXR5IGJpdHMgdXAgdG8gZGF0
ZSBpZiB2aXNpYmlsaXR5IGNoYW5nZXMuCiAgICAgICAgIGlmIChtX3N0eWxlLnZpc2liaWxpdHko
KSAhPSBuZXdTdHlsZS52aXNpYmlsaXR5KCkpIHsKICAgICAgICAgICAgIGlmIChSZW5kZXJMYXll
ciogbGF5ZXIgPSBlbmNsb3NpbmdMYXllcigpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG5ld1N0
eWxlLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKQorICAgICAgICAgICAgICAgIGlmIChuZXdTdHls
ZS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgICAgICAgICAg
ICAgbGF5ZXItPnNldEhhc1Zpc2libGVDb250ZW50KCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBp
ZiAobGF5ZXItPmhhc1Zpc2libGVDb250ZW50KCkgJiYgKHRoaXMgPT0gJmxheWVyLT5yZW5kZXJl
cigpIHx8IGxheWVyLT5yZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUp
KSB7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAobGF5ZXItPmhhc1Zpc2libGVDb250ZW50KCkg
JiYgKHRoaXMgPT0gJmxheWVyLT5yZW5kZXJlcigpIHx8IGxheWVyLT5yZW5kZXJlcigpLnN0eWxl
KCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGxheWVyLT5kaXJ0eVZpc2libGVDb250ZW50U3RhdHVzKCk7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChkaWZmID4gU3R5bGVEaWZmZXJlbmNlOjpSZXBhaW50TGF5ZXIpCiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXBhaW50KCk7CkBAIC03NTEsNyArNzUxLDcgQEAgdm9pZCBSZW5k
ZXJFbGVtZW50OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bAogICAgICAgICAgICAgc2V0RmxvYXRpbmco
ZmFsc2UpOwogICAgICAgICAgICAgY2xlYXJQb3NpdGlvbmVkU3RhdGUoKTsKICAgICAgICAgfQot
ICAgICAgICBpZiAobmV3U3R5bGUuaGFzUHNldWRvU3R5bGUoRklSU1RfTElORSkgfHwgb2xkU3R5
bGUtPmhhc1BzZXVkb1N0eWxlKEZJUlNUX0xJTkUpKQorICAgICAgICBpZiAobmV3U3R5bGUuaGFz
UHNldWRvU3R5bGUoUHNldWRvSWQ6OkZpcnN0TGluZSkgfHwgb2xkU3R5bGUtPmhhc1BzZXVkb1N0
eWxlKFBzZXVkb0lkOjpGaXJzdExpbmUpKQogICAgICAgICAgICAgaW52YWxpZGF0ZUNhY2hlZEZp
cnN0TGluZVN0eWxlKCk7CiAKICAgICAgICAgc2V0SG9yaXpvbnRhbFdyaXRpbmdNb2RlKHRydWUp
OwpAQCAtODUzLDcgKzg1Myw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJl
ZSgpCiAKICAgICAvLyBJZiB8dGhpc3wgaXMgdmlzaWJsZSBidXQgdGhpcyBvYmplY3Qgd2FzIG5v
dCwgdGVsbCB0aGUgbGF5ZXIgaXQgaGFzIHNvbWUgdmlzaWJsZSBjb250ZW50CiAgICAgLy8gdGhh
dCBuZWVkcyB0byBiZSBkcmF3biBhbmQgbGF5ZXIgdmlzaWJpbGl0eSBvcHRpbWl6YXRpb24gY2Fu
J3QgYmUgdXNlZAotICAgIGlmIChwYXJlbnQoKS0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklT
SUJMRSAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFICYmICFoYXNMYXllcigpKSB7
CisgICAgaWYgKHBhcmVudCgpLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpW
aXNpYmxlICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUgJiYg
IWhhc0xheWVyKCkpIHsKICAgICAgICAgaWYgKCFsYXllcikKICAgICAgICAgICAgIGxheWVyID0g
cGFyZW50KCktPmVuY2xvc2luZ0xheWVyKCk7CiAgICAgICAgIGlmIChsYXllcikKQEAgLTg2Nyw3
ICs4NjcsNyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OndpbGxCZVJlbW92ZWRGcm9tVHJlCiB7CiAg
ICAgLy8gSWYgd2UgcmVtb3ZlIGEgdmlzaWJsZSBjaGlsZCBmcm9tIGFuIGludmlzaWJsZSBwYXJl
bnQsIHdlIGRvbid0IGtub3cgdGhlIGxheWVyIHZpc2liaWxpdHkgYW55IG1vcmUuCiAgICAgUmVu
ZGVyTGF5ZXIqIGxheWVyID0gbnVsbHB0cjsKLSAgICBpZiAocGFyZW50KCktPnN0eWxlKCkudmlz
aWJpbGl0eSgpICE9IFZJU0lCTEUgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSAm
JiAhaGFzTGF5ZXIoKSkgeworICAgIGlmIChwYXJlbnQoKS0+c3R5bGUoKS52aXNpYmlsaXR5KCkg
IT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmls
aXR5OjpWaXNpYmxlICYmICFoYXNMYXllcigpKSB7CiAgICAgICAgIGlmICgobGF5ZXIgPSBwYXJl
bnQoKS0+ZW5jbG9zaW5nTGF5ZXIoKSkpCiAgICAgICAgICAgICBsYXllci0+ZGlydHlWaXNpYmxl
Q29udGVudFN0YXR1cygpOwogICAgIH0KQEAgLTEwNzksNyArMTA3OSw3IEBAIGJvb2wgUmVuZGVy
RWxlbWVudDo6cmVwYWludEFmdGVyTGF5b3V0SWYKIAogICAgIGJvb2wgZnVsbFJlcGFpbnQgPSBz
ZWxmTmVlZHNMYXlvdXQoKTsKICAgICAvLyBQcmVzdW1hYmx5IGEgYmFja2dyb3VuZCBvciBhIGJv
cmRlciBleGlzdHMgaWYgYm9yZGVyLWZpdDpsaW5lcyB3YXMgc3BlY2lmaWVkLgotICAgIGlmICgh
ZnVsbFJlcGFpbnQgJiYgc3R5bGUoKS5ib3JkZXJGaXQoKSA9PSBCb3JkZXJGaXRMaW5lcykKKyAg
ICBpZiAoIWZ1bGxSZXBhaW50ICYmIHN0eWxlKCkuYm9yZGVyRml0KCkgPT0gQm9yZGVyRml0OjpM
aW5lcykKICAgICAgICAgZnVsbFJlcGFpbnQgPSB0cnVlOwogICAgIGlmICghZnVsbFJlcGFpbnQp
IHsKICAgICAgICAgLy8gVGhpcyBBU1NFUlQgZmFpbHMgZHVlIHRvIGFuaW1hdGlvbnMuIFNlZSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzcwNDgKQEAgLTEyMDgsNyAr
MTIwOCw3IEBAIGJvb2wgUmVuZGVyRWxlbWVudDo6aXNWaXNpYmxlSW5Eb2N1bWVudFIKIHsKICAg
ICBpZiAoZG9jdW1lbnQoKS5hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkK
KyAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICh2aWV3KCkuZnJhbWVWaWV3KCkuaXNPZmZzY3Jl
ZW4oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTMyMCw3ICsxMzIwLDcgQEAgYm9vbCBS
ZW5kZXJFbGVtZW50OjpyZXBhaW50Rm9yUGF1c2VkSW1hZwogCiBjb25zdCBSZW5kZXJTdHlsZSog
UmVuZGVyRWxlbWVudDo6Z2V0Q2FjaGVkUHNldWRvU3R5bGUoUHNldWRvSWQgcHNldWRvLCBjb25z
dCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpIGNvbnN0CiB7Ci0gICAgaWYgKHBzZXVkbyA8IEZJ
UlNUX0lOVEVSTkFMX1BTRVVET0lEICYmICFzdHlsZSgpLmhhc1BzZXVkb1N0eWxlKHBzZXVkbykp
CisgICAgaWYgKHBzZXVkbyA8IFBzZXVkb0lkOjpGaXJzdEludGVybmFsUHNldWRvSWQgJiYgIXN0
eWxlKCkuaGFzUHNldWRvU3R5bGUocHNldWRvKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBSZW5kZXJTdHlsZSogY2FjaGVkU3R5bGUgPSBzdHlsZSgpLmdldENhY2hlZFBzZXVkb1N0
eWxlKHBzZXVkbyk7CkBAIC0xMzM1LDcgKzEzMzUsNyBAQCBjb25zdCBSZW5kZXJTdHlsZSogUmVu
ZGVyRWxlbWVudDo6Z2V0Q2FjCiAKIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVy
RWxlbWVudDo6Z2V0VW5jYWNoZWRQc2V1ZG9TdHlsZShjb25zdCBQc2V1ZG9TdHlsZVJlcXVlc3Qm
IHBzZXVkb1N0eWxlUmVxdWVzdCwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBjb25z
dCBSZW5kZXJTdHlsZSogb3duU3R5bGUpIGNvbnN0CiB7Ci0gICAgaWYgKHBzZXVkb1N0eWxlUmVx
dWVzdC5wc2V1ZG9JZCA8IEZJUlNUX0lOVEVSTkFMX1BTRVVET0lEICYmICFvd25TdHlsZSAmJiAh
c3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShwc2V1ZG9TdHlsZVJlcXVlc3QucHNldWRvSWQpKQorICAg
IGlmIChwc2V1ZG9TdHlsZVJlcXVlc3QucHNldWRvSWQgPCBQc2V1ZG9JZDo6Rmlyc3RJbnRlcm5h
bFBzZXVkb0lkICYmICFvd25TdHlsZSAmJiAhc3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShwc2V1ZG9T
dHlsZVJlcXVlc3QucHNldWRvSWQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlm
ICghcGFyZW50U3R5bGUpIHsKQEAgLTEzODQsMTEgKzEzODQsMTEgQEAgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiBSZW5kZXJFbGVtZQogICAgIGlmIChTaGFkb3dSb290KiByb290ID0gZWxl
bWVudCgpLT5jb250YWluaW5nU2hhZG93Um9vdCgpKSB7CiAgICAgICAgIGlmIChyb290LT5tb2Rl
KCkgPT0gU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudCkgewogICAgICAgICAgICAgaWYgKEVsZW1l
bnQqIHNoYWRvd0hvc3QgPSBlbGVtZW50KCktPnNoYWRvd0hvc3QoKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gc2hhZG93SG9zdC0+cmVuZGVyZXIoKS0+Z2V0VW5jYWNoZWRQc2V1ZG9TdHlsZShQ
c2V1ZG9TdHlsZVJlcXVlc3QoU0VMRUNUSU9OKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNo
YWRvd0hvc3QtPnJlbmRlcmVyKCktPmdldFVuY2FjaGVkUHNldWRvU3R5bGUoUHNldWRvU3R5bGVS
ZXF1ZXN0KFBzZXVkb0lkOjpTZWxlY3Rpb24pKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHJl
dHVybiBnZXRVbmNhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb1N0eWxlUmVxdWVzdChTRUxFQ1RJT04p
KTsKKyAgICByZXR1cm4gZ2V0VW5jYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9TdHlsZVJlcXVlc3Qo
UHNldWRvSWQ6OlNlbGVjdGlvbikpOwogfQogCiBDb2xvciBSZW5kZXJFbGVtZW50OjpzZWxlY3Rp
b25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5oCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNyArMTQwLDcgQEAg
cHVibGljOgogICAgIGJvb2wgaXNUcmFuc3BhcmVudCgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCku
b3BhY2l0eSgpIDwgMS4wZjsgfQogICAgIGZsb2F0IG9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBz
dHlsZSgpLm9wYWNpdHkoKTsgfQogCi0gICAgYm9vbCB2aXNpYmxlVG9IaXRUZXN0aW5nKCkgY29u
c3QgeyByZXR1cm4gc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSAmJiBzdHlsZSgpLnBv
aW50ZXJFdmVudHMoKSAhPSBQRV9OT05FOyB9CisgICAgYm9vbCB2aXNpYmxlVG9IaXRUZXN0aW5n
KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6Vmlz
aWJsZSAmJiBzdHlsZSgpLnBvaW50ZXJFdmVudHMoKSAhPSBQb2ludGVyRXZlbnRzOjpOb25lOyB9
CiAKICAgICBib29sIGhhc0JhY2tncm91bmQoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLmhhc0Jh
Y2tncm91bmQoKTsgfQogICAgIGJvb2wgaGFzTWFzaygpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCku
aGFzTWFzaygpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVw
bG9hZENvbnRyb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExNCw3ICsxMTQsNyBAQCBpbnQgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6Om1heEZp
bGVuYW1lCiAKIHZvaWQgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnBhaW50T2JqZWN0KFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7Ci0gICAg
aWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKHN0eWxlKCkudmlz
aWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgIHJldHVybjsKICAgICAK
ICAgICAvLyBQdXNoIGEgY2xpcC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGdWxsU2NyZWVuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRnVsbFNjcmVlbi5jcHAJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyAr
NzEsNyBAQCBzdGF0aWMgUmVuZGVyU3R5bGUgY3JlYXRlRnVsbFNjcmVlblN0eWxlCiAgICAgZnVs
bHNjcmVlblN0eWxlLnNldEZvbnREZXNjcmlwdGlvbih7IH0pOwogICAgIGZ1bGxzY3JlZW5TdHls
ZS5mb250Q2FzY2FkZSgpLnVwZGF0ZShudWxscHRyKTsKIAotICAgIGZ1bGxzY3JlZW5TdHlsZS5z
ZXREaXNwbGF5KEZMRVgpOworICAgIGZ1bGxzY3JlZW5TdHlsZS5zZXREaXNwbGF5KERpc3BsYXlU
eXBlOjpGbGV4KTsKICAgICBmdWxsc2NyZWVuU3R5bGUuc2V0SnVzdGlmeUNvbnRlbnRQb3NpdGlv
bihDb250ZW50UG9zaXRpb246OkNlbnRlcik7CiAgICAgZnVsbHNjcmVlblN0eWxlLnNldEFsaWdu
SXRlbXNQb3NpdGlvbihJdGVtUG9zaXRpb246OkNlbnRlcik7CiAgICAgZnVsbHNjcmVlblN0eWxl
LnNldEZsZXhEaXJlY3Rpb24oRmxleERpcmVjdGlvbjo6Q29sdW1uKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI0
LDggKzUyNCw4IEBAIHVuc2lnbmVkIFJlbmRlckdyaWQ6OmNvbXB1dGVBdXRvUmVwZWF0VHIKIHN0
ZDo6dW5pcXVlX3B0cjxPcmRlcmVkVHJhY2tJbmRleFNldD4gUmVuZGVyR3JpZDo6Y29tcHV0ZUVt
cHR5VHJhY2tzRm9yQXV0b1JlcGVhdChHcmlkJiBncmlkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rp
b24gZGlyZWN0aW9uKSBjb25zdAogewogICAgIGJvb2wgaXNSb3dBeGlzID0gZGlyZWN0aW9uID09
IEZvckNvbHVtbnM7Ci0gICAgaWYgKChpc1Jvd0F4aXMgJiYgc3R5bGUoKS5ncmlkQXV0b1JlcGVh
dENvbHVtbnNUeXBlKCkgIT0gQXV0b0ZpdCkKLSAgICAgICAgfHwgKCFpc1Jvd0F4aXMgJiYgc3R5
bGUoKS5ncmlkQXV0b1JlcGVhdFJvd3NUeXBlKCkgIT0gQXV0b0ZpdCkpCisgICAgaWYgKChpc1Jv
d0F4aXMgJiYgc3R5bGUoKS5ncmlkQXV0b1JlcGVhdENvbHVtbnNUeXBlKCkgIT0gQXV0b1JlcGVh
dFR5cGU6OkZpdCkKKyAgICAgICAgfHwgKCFpc1Jvd0F4aXMgJiYgc3R5bGUoKS5ncmlkQXV0b1Jl
cGVhdFJvd3NUeXBlKCkgIT0gQXV0b1JlcGVhdFR5cGU6OkZpdCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPE9yZGVyZWRUcmFja0luZGV4U2V0PiBlbXB0
eVRyYWNrSW5kZXhlczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk3LDcgKzI5Nyw3IEBAIHZvaWQgUmVuZGVy
SW1hZ2U6OnJlcGFpbnRPck1hcmtGb3JMYXlvdXQKIHsKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JF
U09MVVRJT04pCiAgICAgZG91YmxlIHNjYWxlID0gc3R5bGUoKS5pbWFnZVJlc29sdXRpb24oKTsK
LSAgICBpZiAoc3R5bGUoKS5pbWFnZVJlc29sdXRpb25TbmFwKCkgPT0gSW1hZ2VSZXNvbHV0aW9u
U25hcFBpeGVscykKKyAgICBpZiAoc3R5bGUoKS5pbWFnZVJlc29sdXRpb25TbmFwKCkgPT0gSW1h
Z2VSZXNvbHV0aW9uU25hcDo6UGl4ZWxzKQogICAgICAgICBzY2FsZSA9IHJvdW5kRm9ySW1wcmVj
aXNlQ29udmVyc2lvbjxpbnQ+KHNjYWxlKTsKICAgICBpZiAoc2NhbGUgPD0gMCkKICAgICAgICAg
c2NhbGUgPSAxOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5j
cHAJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgUmVuZGVySW5s
aW5lOjp3aWxsQmVEZXN0cm95ZWQoKQogewogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAvLyBN
YWtlIHN1cmUgd2UgZG8gbm90IHJldGFpbiAidGhpcyIgaW4gdGhlIGNvbnRpbnVhdGlvbiBvdXRs
aW5lIHRhYmxlIG1hcCBvZiBvdXIgY29udGFpbmluZyBibG9ja3MuCi0gICAgaWYgKHBhcmVudCgp
ICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUgJiYgaGFzT3V0bGluZSgpKSB7Cisg
ICAgaWYgKHBhcmVudCgpICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZp
c2libGUgJiYgaGFzT3V0bGluZSgpKSB7CiAgICAgICAgIGJvb2wgY29udGFpbmluZ0Jsb2NrUGFp
bnRzQ29udGludWF0aW9uT3V0bGluZSA9IGNvbnRpbnVhdGlvbigpIHx8IGlzQ29udGludWF0aW9u
KCk7CiAgICAgICAgIGlmIChjb250YWluaW5nQmxvY2tQYWludHNDb250aW51YXRpb25PdXRsaW5l
KSB7CiAgICAgICAgICAgICBpZiAoUmVuZGVyQmxvY2sqIGNiID0gY29udGFpbmluZ0Jsb2NrKCkp
IHsKQEAgLTE0OCw3ICsxNDgsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVTdHlsZU9mQW5vbnltb3Vz
QmxvY2tDCiAgICAgICAgIFJlbmRlcklubGluZSogY29udGludWF0aW9uID0gYmxvY2suaW5saW5l
Q29udGludWF0aW9uKCk7CiAgICAgICAgIGlmIChvbGRTdHlsZS0+aGFzSW5GbG93UG9zaXRpb24o
KSAmJiBpbkZsb3dQb3NpdGlvbmVkSW5saW5lQW5jZXN0b3IoY29udGludWF0aW9uKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhdXRvIGJsb2NrU3R5bGUgPSBSZW5kZXJTdHlsZTo6
Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShibG9jay5zdHlsZSgpLCBCTE9DSyk7Cisg
ICAgICAgIGF1dG8gYmxvY2tTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHls
ZVdpdGhEaXNwbGF5KGJsb2NrLnN0eWxlKCksIERpc3BsYXlUeXBlOjpCbG9jayk7CiAgICAgICAg
IGJsb2NrU3R5bGUuc2V0UG9zaXRpb24obmV3U3R5bGUtPnBvc2l0aW9uKCkpOwogICAgICAgICBi
bG9jay5zZXRTdHlsZShXVEZNb3ZlKGJsb2NrU3R5bGUpKTsKICAgICB9CkBAIC0yMTEsNyArMjEx
LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnVwZGF0ZUFsd2F5c0NyZWF0ZUxpbgogICAgIGJvb2wg
YWx3YXlzQ3JlYXRlTGluZUJveGVzID0gKHBhcmVudFJlbmRlcklubGluZSAmJiBwYXJlbnRSZW5k
ZXJJbmxpbmUtPmFsd2F5c0NyZWF0ZUxpbmVCb3hlcygpKQogICAgICAgICB8fCAocGFyZW50UmVu
ZGVySW5saW5lICYmIHBhcmVudFN0eWxlLT52ZXJ0aWNhbEFsaWduKCkgIT0gVmVydGljYWxBbGln
bjo6QmFzZWxpbmUpCiAgICAgICAgIHx8IHN0eWxlKCkudmVydGljYWxBbGlnbigpICE9IFZlcnRp
Y2FsQWxpZ246OkJhc2VsaW5lCi0gICAgICAgIHx8IHN0eWxlKCkudGV4dEVtcGhhc2lzTWFyaygp
ICE9IFRleHRFbXBoYXNpc01hcmtOb25lCisgICAgICAgIHx8IHN0eWxlKCkudGV4dEVtcGhhc2lz
TWFyaygpICE9IFRleHRFbXBoYXNpc01hcms6Ok5vbmUKICAgICAgICAgfHwgKGNoZWNrRm9udHMg
JiYgKCFwYXJlbnRTdHlsZS0+Zm9udENhc2NhZGUoKS5mb250TWV0cmljcygpLmhhc0lkZW50aWNh
bEFzY2VudERlc2NlbnRBbmRMaW5lR2FwKHN0eWxlKCkuZm9udENhc2NhZGUoKS5mb250TWV0cmlj
cygpKQogICAgICAgICB8fCBwYXJlbnRTdHlsZS0+bGluZUhlaWdodCgpICE9IHN0eWxlKCkubGlu
ZUhlaWdodCgpKSk7CiAKQEAgLTgxOCw3ICs4MTgsNyBAQCBMYXlvdXRSZWN0IFJlbmRlcklubGlu
ZTo6bGluZXNWaXN1YWxPdmVyCiBMYXlvdXRSZWN0IFJlbmRlcklubGluZTo6Y2xpcHBlZE92ZXJm
bG93UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lcikgY29uc3QKIHsKICAgICAvLyBPbmx5IGZpcnN0LWxldHRlciByZW5kZXJlcnMgYXJl
IGFsbG93ZWQgaW4gaGVyZSBkdXJpbmcgbGF5b3V0LiBUaGV5IG11dGF0ZSB0aGUgdHJlZSB0cmln
Z2VyaW5nIHJlcGFpbnRzLgotICAgIEFTU0VSVCghdmlldygpLmZyYW1lVmlldygpLmxheW91dENv
bnRleHQoKS5pc1BhaW50T2Zmc2V0Q2FjaGVFbmFibGVkKCkgfHwgc3R5bGUoKS5zdHlsZVR5cGUo
KSA9PSBGSVJTVF9MRVRURVIgfHwgaGFzU2VsZlBhaW50aW5nTGF5ZXIoKSk7CisgICAgQVNTRVJU
KCF2aWV3KCkuZnJhbWVWaWV3KCkubGF5b3V0Q29udGV4dCgpLmlzUGFpbnRPZmZzZXRDYWNoZUVu
YWJsZWQoKSB8fCBzdHlsZSgpLnN0eWxlVHlwZSgpID09IFBzZXVkb0lkOjpGaXJzdExldHRlciB8
fCBoYXNTZWxmUGFpbnRpbmdMYXllcigpKTsKIAogICAgIGlmICghZmlyc3RMaW5lQm94SW5jbHVk
aW5nQ3VsbGluZygpICYmICFjb250aW51YXRpb24oKSkKICAgICAgICAgcmV0dXJuIExheW91dFJl
Y3QoKTsKQEAgLTEzODcsNyArMTM4Nyw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxp
bmVGb3JMaW5lKEcKIHZvaWQgUmVuZGVySW5saW5lOjphZGRBbm5vdGF0ZWRSZWdpb25zKFZlY3Rv
cjxBbm5vdGF0ZWRSZWdpb25WYWx1ZT4mIHJlZ2lvbnMpCiB7CiAgICAgLy8gQ29udmVydCB0aGUg
c3R5bGUgcmVnaW9ucyB0byBhYnNvbHV0ZSBjb29yZGluYXRlcy4KLSAgICBpZiAoc3R5bGUoKS52
aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0g
VmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgVmVjdG9y
PFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgc3R5bGVSZWdpb25zID0gc3R5bGUoKS5kYXNoYm9hcmRS
ZWdpb25zKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJ
KHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNSw3ICszMzUsNyBAQCBSZW5kZXJMYXllcjo6UmVu
ZGVyTGF5ZXIoUmVuZGVyTGF5ZXJNb2RlCiAKICAgICBpZiAoIXJlbmRlcmVyKCkuZmlyc3RDaGls
ZCgpKSB7CiAgICAgICAgIG1fdmlzaWJsZUNvbnRlbnRTdGF0dXNEaXJ0eSA9IGZhbHNlOwotICAg
ICAgICBtX2hhc1Zpc2libGVDb250ZW50ID0gcmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHko
KSA9PSBWSVNJQkxFOworICAgICAgICBtX2hhc1Zpc2libGVDb250ZW50ID0gcmVuZGVyZXIoKS5z
dHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlOwogICAgIH0KIAogICAg
IGlmIChFbGVtZW50KiBlbGVtZW50ID0gcmVuZGVyZXIoKS5lbGVtZW50KCkpIHsKQEAgLTEyNjQs
MTQgKzEyNjQsMTQgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlRGVzY2VuZGFudERlcGVuZAog
ICAgIH0KIAogICAgIGlmIChtX3Zpc2libGVDb250ZW50U3RhdHVzRGlydHkpIHsKLSAgICAgICAg
aWYgKHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkKKyAgICAgICAg
aWYgKHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJs
ZSkKICAgICAgICAgICAgIG1faGFzVmlzaWJsZUNvbnRlbnQgPSB0cnVlOwogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIC8vIGxheWVyIG1heSBiZSBoaWRkZW4gYnV0IHN0aWxsIGhhdmUgc29t
ZSB2aXNpYmxlIGNvbnRlbnQsIGNoZWNrIGZvciB0aGlzCiAgICAgICAgICAgICBtX2hhc1Zpc2li
bGVDb250ZW50ID0gZmFsc2U7CiAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIHIgPSByZW5kZXJl
cigpLmZpcnN0Q2hpbGQoKTsKICAgICAgICAgICAgIHdoaWxlIChyKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKHItPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUgJiYgIXItPmhhc0xheWVy
KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlz
aWJpbGl0eTo6VmlzaWJsZSAmJiAhci0+aGFzTGF5ZXIoKSkgewogICAgICAgICAgICAgICAgICAg
ICBtX2hhc1Zpc2libGVDb250ZW50ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgfQpAQCAtMzE0OCw3ICszMTQ4LDcgQEAgUmVmPFNjcm9sbGJhcj4g
UmVuZGVyTGF5ZXI6OmNyZWF0ZVNjcm9sbAogICAgIFJlZlB0cjxTY3JvbGxiYXI+IHdpZGdldDsK
ICAgICBBU1NFUlQocmVuZGVyZXJGb3JTY3JvbGxiYXIocmVuZGVyZXIoKSkpOwogICAgIGF1dG8m
IGFjdHVhbFJlbmRlcmVyID0gKnJlbmRlcmVyRm9yU2Nyb2xsYmFyKHJlbmRlcmVyKCkpOwotICAg
IGJvb2wgaGFzQ3VzdG9tU2Nyb2xsYmFyU3R5bGUgPSBpczxSZW5kZXJCb3g+KGFjdHVhbFJlbmRl
cmVyKSAmJiBkb3duY2FzdDxSZW5kZXJCb3g+KGFjdHVhbFJlbmRlcmVyKS5zdHlsZSgpLmhhc1Bz
ZXVkb1N0eWxlKFNDUk9MTEJBUik7CisgICAgYm9vbCBoYXNDdXN0b21TY3JvbGxiYXJTdHlsZSA9
IGlzPFJlbmRlckJveD4oYWN0dWFsUmVuZGVyZXIpICYmIGRvd25jYXN0PFJlbmRlckJveD4oYWN0
dWFsUmVuZGVyZXIpLnN0eWxlKCkuaGFzUHNldWRvU3R5bGUoUHNldWRvSWQ6OlNjcm9sbGJhcik7
CiAgICAgaWYgKGhhc0N1c3RvbVNjcm9sbGJhclN0eWxlKQogICAgICAgICB3aWRnZXQgPSBSZW5k
ZXJTY3JvbGxiYXI6OmNyZWF0ZUN1c3RvbVNjcm9sbGJhcigqdGhpcywgb3JpZW50YXRpb24sIGRv
d25jYXN0PFJlbmRlckJveD4oYWN0dWFsUmVuZGVyZXIpLmVsZW1lbnQoKSk7CiAgICAgZWxzZSB7
CkBAIC0zNDY2LDE0ICszNDY2LDE0IEBAIGJvb2wgUmVuZGVyTGF5ZXI6Omhhc1ZlcnRpY2FsT3Zl
cmZsb3coKSAKIHN0YXRpYyBib29sIHN0eWxlUmVxdWlyZXNTY3JvbGxiYXIoY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlLCBTY3JvbGxiYXJPcmllbnRhdGlvbiBheGlzKQogewogICAgIE92ZXJmbG93
IG92ZXJmbG93ID0gYXhpcyA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbFNjcm9s
bGJhciA/IHN0eWxlLm92ZXJmbG93WCgpIDogc3R5bGUub3ZlcmZsb3dZKCk7Ci0gICAgYm9vbCBv
dmVyZmxvd1Njcm9sbEFjdHNMaWtlQXV0byA9IG92ZXJmbG93ID09IE92ZXJmbG93OjpTY3JvbGwg
JiYgIXN0eWxlLmhhc1BzZXVkb1N0eWxlKFNDUk9MTEJBUikgJiYgU2Nyb2xsYmFyVGhlbWU6OnRo
ZW1lKCkudXNlc092ZXJsYXlTY3JvbGxiYXJzKCk7CisgICAgYm9vbCBvdmVyZmxvd1Njcm9sbEFj
dHNMaWtlQXV0byA9IG92ZXJmbG93ID09IE92ZXJmbG93OjpTY3JvbGwgJiYgIXN0eWxlLmhhc1Bz
ZXVkb1N0eWxlKFBzZXVkb0lkOjpTY3JvbGxiYXIpICYmIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgp
LnVzZXNPdmVybGF5U2Nyb2xsYmFycygpOwogICAgIHJldHVybiBvdmVyZmxvdyA9PSBPdmVyZmxv
dzo6U2Nyb2xsICYmICFvdmVyZmxvd1Njcm9sbEFjdHNMaWtlQXV0bzsKIH0KIAogc3RhdGljIGJv
b2wgc3R5bGVEZWZpbmVzQXV0b21hdGljU2Nyb2xsYmFyKGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSwgU2Nyb2xsYmFyT3JpZW50YXRpb24gYXhpcykKIHsKICAgICBPdmVyZmxvdyBvdmVyZmxvdyA9
IGF4aXMgPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWxTY3JvbGxiYXIgPyBzdHls
ZS5vdmVyZmxvd1goKSA6IHN0eWxlLm92ZXJmbG93WSgpOwotICAgIGJvb2wgb3ZlcmZsb3dTY3Jv
bGxBY3RzTGlrZUF1dG8gPSBvdmVyZmxvdyA9PSBPdmVyZmxvdzo6U2Nyb2xsICYmICFzdHlsZS5o
YXNQc2V1ZG9TdHlsZShTQ1JPTExCQVIpICYmIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLnVzZXNP
dmVybGF5U2Nyb2xsYmFycygpOworICAgIGJvb2wgb3ZlcmZsb3dTY3JvbGxBY3RzTGlrZUF1dG8g
PSBvdmVyZmxvdyA9PSBPdmVyZmxvdzo6U2Nyb2xsICYmICFzdHlsZS5oYXNQc2V1ZG9TdHlsZShQ
c2V1ZG9JZDo6U2Nyb2xsYmFyKSAmJiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS51c2VzT3Zlcmxh
eVNjcm9sbGJhcnMoKTsKICAgICByZXR1cm4gb3ZlcmZsb3cgPT0gT3ZlcmZsb3c6OkF1dG8gfHwg
b3ZlcmZsb3cgPT0gT3ZlcmZsb3c6Ok92ZXJsYXkgfHwgb3ZlcmZsb3dTY3JvbGxBY3RzTGlrZUF1
dG87CiB9CiAKQEAgLTQwOTQsMjMgKzQwOTQsMjMgQEAgc3RhdGljIGlubGluZSBMYXlvdXRSZWN0
IGNvbXB1dGVSZWZlcmVuYwogICAgIExheW91dFJlY3QgcmVmZXJlbmNlQm94OwogICAgIGNvbnN0
IGF1dG8mIGJveCA9IGRvd25jYXN0PFJlbmRlckJveD4ocmVuZGVyZXIpOwogICAgIHN3aXRjaCAo
Y2xpcHBpbmdQYXRoLnJlZmVyZW5jZUJveCgpKSB7Ci0gICAgY2FzZSBDb250ZW50Qm94OgorICAg
IGNhc2UgQ1NTQm94VHlwZTo6Q29udGVudEJveDoKICAgICAgICAgcmVmZXJlbmNlQm94ID0gYm94
LmNvbnRlbnRCb3hSZWN0KCk7CiAgICAgICAgIHJlZmVyZW5jZUJveC5tb3ZlKG9mZnNldEZyb21S
b290KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQYWRkaW5nQm94OgorICAgIGNhc2UgQ1NT
Qm94VHlwZTo6UGFkZGluZ0JveDoKICAgICAgICAgcmVmZXJlbmNlQm94ID0gYm94LnBhZGRpbmdC
b3hSZWN0KCk7CiAgICAgICAgIHJlZmVyZW5jZUJveC5tb3ZlKG9mZnNldEZyb21Sb290KTsKICAg
ICAgICAgYnJlYWs7CiAgICAgLy8gRklYTUU6IFN1cHBvcnQgbWFyZ2luLWJveC4gVXNlIGJvdW5k
aW5nIGNsaWVudCByZWN0IGZvciBub3cuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyNzk4NAotICAgIGNhc2UgTWFyZ2luQm94OgorICAgIGNhc2UgQ1NT
Qm94VHlwZTo6TWFyZ2luQm94OgogICAgIC8vIGZpbGwsIHN0cm9rZSwgdmlldy1ib3ggY29tcHV0
ZSB0byBib3JkZXItYm94IGZvciBIVE1MIGVsZW1lbnRzLgotICAgIGNhc2UgRmlsbDoKLSAgICBj
YXNlIFN0cm9rZToKLSAgICBjYXNlIFZpZXdCb3g6Ci0gICAgY2FzZSBCb3JkZXJCb3g6Ci0gICAg
Y2FzZSBCb3hNaXNzaW5nOgorICAgIGNhc2UgQ1NTQm94VHlwZTo6RmlsbDoKKyAgICBjYXNlIENT
U0JveFR5cGU6OlN0cm9rZToKKyAgICBjYXNlIENTU0JveFR5cGU6OlZpZXdCb3g6CisgICAgY2Fz
ZSBDU1NCb3hUeXBlOjpCb3JkZXJCb3g6CisgICAgY2FzZSBDU1NCb3hUeXBlOjpCb3hNaXNzaW5n
OgogICAgICAgICByZWZlcmVuY2VCb3ggPSBib3guYm9yZGVyQm94UmVjdCgpOwogICAgICAgICBy
ZWZlcmVuY2VCb3gubW92ZShvZmZzZXRGcm9tUm9vdCk7CiAgICAgICAgIGJyZWFrOwpAQCAtNjA0
MSw3ICs2MDQxLDcgQEAgYm9vbCBSZW5kZXJMYXllcjo6YmFja2dyb3VuZElzS25vd25Ub0JlTwog
CiAgICAgLy8gV2UgY2FuJ3QgdXNlIGhhc1Zpc2libGVDb250ZW50KCksIGJlY2F1c2UgdGhhdCB3
aWxsIGJlIHRydWUgaWYgb3VyIHJlbmRlcmVyIGlzIGhpZGRlbiwgYnV0IHNvbWUgY2hpbGQKICAg
ICAvLyBpcyB2aXNpYmxlIGFuZCB0aGF0IGNoaWxkIGRvZXNuJ3QgY292ZXIgdGhlIGVudGlyZSBy
ZWN0LgotICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUp
CisgICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6
VmlzaWJsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKHBhaW50c1dpdGhGaWx0
ZXJzKCkgJiYgcmVuZGVyZXIoKS5zdHlsZSgpLmZpbHRlcigpLmhhc0ZpbHRlclRoYXRBZmZlY3Rz
T3BhY2l0eSgpKQpAQCAtNjczMCw3ICs2NzMwLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRl
U2Nyb2xsYWJsZUFyZWFTZQogdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xsQ29ybmVyU3R5
bGUoKQogewogICAgIFJlbmRlckVsZW1lbnQqIGFjdHVhbFJlbmRlcmVyID0gcmVuZGVyZXJGb3JT
Y3JvbGxiYXIocmVuZGVyZXIoKSk7Ci0gICAgYXV0byBjb3JuZXIgPSByZW5kZXJlcigpLmhhc092
ZXJmbG93Q2xpcCgpID8gYWN0dWFsUmVuZGVyZXItPmdldFVuY2FjaGVkUHNldWRvU3R5bGUoUHNl
dWRvU3R5bGVSZXF1ZXN0KFNDUk9MTEJBUl9DT1JORVIpLCAmYWN0dWFsUmVuZGVyZXItPnN0eWxl
KCkpIDogbnVsbHB0cjsKKyAgICBhdXRvIGNvcm5lciA9IHJlbmRlcmVyKCkuaGFzT3ZlcmZsb3dD
bGlwKCkgPyBhY3R1YWxSZW5kZXJlci0+Z2V0VW5jYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9TdHls
ZVJlcXVlc3QoUHNldWRvSWQ6OlNjcm9sbGJhckNvcm5lciksICZhY3R1YWxSZW5kZXJlci0+c3R5
bGUoKSkgOiBudWxscHRyOwogCiAgICAgaWYgKCFjb3JuZXIpIHsKICAgICAgICAgY2xlYXJTY3Jv
bGxDb3JuZXIoKTsKQEAgLTY3NTcsNyArNjc1Nyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNsZWFy
U2Nyb2xsQ29ybmVyKCkKIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVJlc2l6ZXJTdHlsZSgpCiB7
CiAgICAgUmVuZGVyRWxlbWVudCogYWN0dWFsUmVuZGVyZXIgPSByZW5kZXJlckZvclNjcm9sbGJh
cihyZW5kZXJlcigpKTsKLSAgICBhdXRvIHJlc2l6ZXIgPSByZW5kZXJlcigpLmhhc092ZXJmbG93
Q2xpcCgpID8gYWN0dWFsUmVuZGVyZXItPmdldFVuY2FjaGVkUHNldWRvU3R5bGUoUHNldWRvU3R5
bGVSZXF1ZXN0KFJFU0laRVIpLCAmYWN0dWFsUmVuZGVyZXItPnN0eWxlKCkpIDogbnVsbHB0cjsK
KyAgICBhdXRvIHJlc2l6ZXIgPSByZW5kZXJlcigpLmhhc092ZXJmbG93Q2xpcCgpID8gYWN0dWFs
UmVuZGVyZXItPmdldFVuY2FjaGVkUHNldWRvU3R5bGUoUHNldWRvU3R5bGVSZXF1ZXN0KFBzZXVk
b0lkOjpSZXNpemVyKSwgJmFjdHVhbFJlbmRlcmVyLT5zdHlsZSgpKSA6IG51bGxwdHI7CiAKICAg
ICBpZiAoIXJlc2l6ZXIpIHsKICAgICAgICAgY2xlYXJSZXNpemVyKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkocmV2aXNpb24g
MjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMzksOCArMTIzOSw4IEBAIHZvaWQgUmVuZGVyTGF5ZXJC
YWNraW5nOjp1cGRhdGVBZnRlckRlc2MKIAogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVu
dHNWaXNpYmxlKG1fb3duaW5nTGF5ZXIuaGFzVmlzaWJsZUNvbnRlbnQoKSB8fCBoYXNWaXNpYmxl
Tm9uQ29tcG9zaXRlZERlc2NlbmRhbnRzKCkpOwogICAgIGlmIChtX3Njcm9sbGluZ0xheWVyKSB7
Ci0gICAgICAgIG1fc2Nyb2xsaW5nTGF5ZXItPnNldENvbnRlbnRzVmlzaWJsZShyZW5kZXJlcigp
LnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUpOwotICAgICAgICBtX3Njcm9sbGluZ0xh
eWVyLT5zZXRVc2VySW50ZXJhY3Rpb25FbmFibGVkKHJlbmRlcmVyKCkuc3R5bGUoKS5wb2ludGVy
RXZlbnRzKCkgIT0gUEVfTk9ORSk7CisgICAgICAgIG1fc2Nyb2xsaW5nTGF5ZXItPnNldENvbnRl
bnRzVmlzaWJsZShyZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6
OlZpc2libGUpOworICAgICAgICBtX3Njcm9sbGluZ0xheWVyLT5zZXRVc2VySW50ZXJhY3Rpb25F
bmFibGVkKHJlbmRlcmVyKCkuc3R5bGUoKS5wb2ludGVyRXZlbnRzKCkgIT0gUG9pbnRlckV2ZW50
czo6Tm9uZSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUxMiw4ICs1MTIsOCBAQCBzdGF0aWMgYm9vbCBzY3JvbGxiYXJIYXNEaXNwbGF5
Tm9uZShTY3JvCiAgICAgaWYgKCFzY3JvbGxiYXIgfHwgIXNjcm9sbGJhci0+aXNDdXN0b21TY3Jv
bGxiYXIoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBzY3JvbGxiYXJTdHlsZSA9IHN0YXRpY19jYXN0PFJlbmRlclNjcm9sbGJhcio+
KHNjcm9sbGJhciktPmdldFNjcm9sbGJhclBzZXVkb1N0eWxlKFNjcm9sbGJhckJHUGFydCwgU0NS
T0xMQkFSKTsKLSAgICByZXR1cm4gc2Nyb2xsYmFyU3R5bGUgJiYgc2Nyb2xsYmFyU3R5bGUtPmRp
c3BsYXkoKSA9PSBOT05FOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc2Nyb2xs
YmFyU3R5bGUgPSBzdGF0aWNfY2FzdDxSZW5kZXJTY3JvbGxiYXIqPihzY3JvbGxiYXIpLT5nZXRT
Y3JvbGxiYXJQc2V1ZG9TdHlsZShTY3JvbGxiYXJCR1BhcnQsIFBzZXVkb0lkOjpTY3JvbGxiYXIp
OworICAgIHJldHVybiBzY3JvbGxiYXJTdHlsZSAmJiBzY3JvbGxiYXJTdHlsZS0+ZGlzcGxheSgp
ID09IERpc3BsYXlUeXBlOjpOb25lOwogfQogCiAvLyBGSVhNRTogQ2FuIHdlIG1ha2UgfGxheWVy
fCBjb25zdCBSZW5kZXJMYXllciY/CkBAIC0yNDMyLDcgKzI0MzIsNyBAQCBib29sIFJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wCiAgICAgbV9yZWV2YWx1YXRlQ29tcG9zaXRpbmdB
ZnRlckxheW91dCA9IHRydWU7CiAgICAgCiAgICAgYXV0byYgcGx1Z2luUmVuZGVyZXIgPSBkb3du
Y2FzdDxSZW5kZXJXaWRnZXQ+KHJlbmRlcmVyKTsKLSAgICBpZiAocGx1Z2luUmVuZGVyZXIuc3R5
bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAocGx1Z2luUmVuZGVyZXIuc3R5
bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgLy8gSWYgd2UgY2FuJ3QgcmVsaWFibHkga25vdyB0aGUgc2l6ZSBvZiB0
aGUgcGx1Z2luIHlldCwgZG9uJ3QgY2hhbmdlIGNvbXBvc2l0aW5nIHN0YXRlLgpAQCAtMjQ1MCw3
ICsyNDUwLDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcAogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvJiBmcmFtZVJlbmRlcmVyID0gZG93bmNhc3Q8
UmVuZGVyV2lkZ2V0PihyZW5kZXJlcik7Ci0gICAgaWYgKGZyYW1lUmVuZGVyZXIuc3R5bGUoKS52
aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAoZnJhbWVSZW5kZXJlci5zdHlsZSgpLnZp
c2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBpZiAoIWZyYW1lUmVuZGVyZXIucmVxdWlyZXNBY2NlbGVyYXRlZENvbXBvc2l0aW5n
KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCShy
ZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJv
eC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMCw3ICszMTAsNyBAQCB2b2lkIFJlbmRlckxpc3RC
b3g6OnBhaW50SXRlbShQYWludEluZm8mCiAKIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRPYmpl
Y3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkK
IHsKLSAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAoc3R5
bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0dXJu
OwogICAgIAogICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91bmQp
IHsKQEAgLTM4NiwxNyArMzg2LDE3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRTY3JvbGxi
YXIoUGFpbnQKIAogc3RhdGljIExheW91dFNpemUgaXRlbU9mZnNldEZvckFsaWdubWVudChUZXh0
UnVuIHRleHRSdW4sIGNvbnN0IFJlbmRlclN0eWxlKiBpdGVtU3R5bGUsIEZvbnRDYXNjYWRlIGl0
ZW1Gb250LCBMYXlvdXRSZWN0IGl0ZW1Cb3VkaW5nQm94KQogewotICAgIEVUZXh0QWxpZ24gYWN0
dWFsQWxpZ25tZW50ID0gaXRlbVN0eWxlLT50ZXh0QWxpZ24oKTsKLSAgICAvLyBGSVhNRTogRmly
ZWZveCBkb2Vzbid0IHJlc3BlY3QgSlVTVElGWS4gU2hvdWxkIHdlPwotICAgIC8vIEZJWE1FOiBI
YW5kbGUgVEFFTkQgaGVyZQotICAgIGlmIChhY3R1YWxBbGlnbm1lbnQgPT0gVEFTVEFSVCB8fCBh
Y3R1YWxBbGlnbm1lbnQgPT0gSlVTVElGWSkKLSAgICAgIGFjdHVhbEFsaWdubWVudCA9IGl0ZW1T
dHlsZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gTEVGVCA6IFJJR0hUOworICAgIFRleHRB
bGlnbk1vZGUgYWN0dWFsQWxpZ25tZW50ID0gaXRlbVN0eWxlLT50ZXh0QWxpZ24oKTsKKyAgICAv
LyBGSVhNRTogRmlyZWZveCBkb2Vzbid0IHJlc3BlY3QgVGV4dEFsaWduTW9kZTo6SnVzdGlmeS4g
U2hvdWxkIHdlPworICAgIC8vIEZJWE1FOiBIYW5kbGUgVGV4dEFsaWduTW9kZTo6RW5kIGhlcmUK
KyAgICBpZiAoYWN0dWFsQWxpZ25tZW50ID09IFRleHRBbGlnbk1vZGU6OlN0YXJ0IHx8IGFjdHVh
bEFsaWdubWVudCA9PSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5KQorICAgICAgICBhY3R1YWxBbGln
bm1lbnQgPSBpdGVtU3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IFRleHRBbGlnbk1v
ZGU6OkxlZnQgOiBUZXh0QWxpZ25Nb2RlOjpSaWdodDsKIAogICAgIExheW91dFNpemUgb2Zmc2V0
ID0gTGF5b3V0U2l6ZSgwLCBpdGVtRm9udC5mb250TWV0cmljcygpLmFzY2VudCgpKTsKLSAgICBp
ZiAoYWN0dWFsQWxpZ25tZW50ID09IFJJR0hUIHx8IGFjdHVhbEFsaWdubWVudCA9PSBXRUJLSVRf
UklHSFQpIHsKKyAgICBpZiAoYWN0dWFsQWxpZ25tZW50ID09IFRleHRBbGlnbk1vZGU6OlJpZ2h0
IHx8IGFjdHVhbEFsaWdubWVudCA9PSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRSaWdodCkgewogICAg
ICAgICBmbG9hdCB0ZXh0V2lkdGggPSBpdGVtRm9udC53aWR0aCh0ZXh0UnVuKTsKICAgICAgICAg
b2Zmc2V0LnNldFdpZHRoKGl0ZW1Cb3VkaW5nQm94LndpZHRoKCkgLSB0ZXh0V2lkdGggLSBvcHRp
b25zU3BhY2luZ0hvcml6b250YWwpOwotICAgIH0gZWxzZSBpZiAoYWN0dWFsQWxpZ25tZW50ID09
IENFTlRFUiB8fCBhY3R1YWxBbGlnbm1lbnQgPT0gV0VCS0lUX0NFTlRFUikgeworICAgIH0gZWxz
ZSBpZiAoYWN0dWFsQWxpZ25tZW50ID09IFRleHRBbGlnbk1vZGU6OkNlbnRlciB8fCBhY3R1YWxB
bGlnbm1lbnQgPT0gVGV4dEFsaWduTW9kZTo6V2ViS2l0Q2VudGVyKSB7CiAgICAgICAgIGZsb2F0
IHRleHRXaWR0aCA9IGl0ZW1Gb250LndpZHRoKHRleHRSdW4pOwogICAgICAgICBvZmZzZXQuc2V0
V2lkdGgoKGl0ZW1Cb3VkaW5nQm94LndpZHRoKCkgLSB0ZXh0V2lkdGgpIC8gMik7CiAgICAgfSBl
bHNlCkBAIC00MTEsNyArNDExLDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1Gb3Jl
Z3JvdW5kKAogCiAgICAgYXV0byYgaXRlbVN0eWxlID0gKmxpc3RJdGVtRWxlbWVudC0+Y29tcHV0
ZWRTdHlsZSgpOwogCi0gICAgaWYgKGl0ZW1TdHlsZS52aXNpYmlsaXR5KCkgPT0gSElEREVOKQor
ICAgIGlmIChpdGVtU3R5bGUudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OkhpZGRlbikKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIGl0ZW1UZXh0OwpAQCAtNDY1LDcgKzQ2NSw3IEBA
IHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtQmFja2dyb3VuZCgKICAgICAgICAgYmFja0Nv
bG9yID0gaXRlbVN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAKICAgICAvLyBEcmF3IHRoZSBiYWNrZ3JvdW5kIGZv
ciB0aGlzIGxpc3QgYm94IGl0ZW0KLSAgICBpZiAoaXRlbVN0eWxlLnZpc2liaWxpdHkoKSA9PSBI
SURERU4pCisgICAgaWYgKGl0ZW1TdHlsZS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6SGlk
ZGVuKQogICAgICAgICByZXR1cm47CiAKICAgICBMYXlvdXRSZWN0IGl0ZW1SZWN0ID0gaXRlbUJv
dW5kaW5nQm94UmVjdChwYWludE9mZnNldCwgbGlzdEluZGV4KTsKQEAgLTkxNCw3ICs5MTQsNyBA
QCB2b2lkIFJlbmRlckxpc3RCb3g6OmxvZ01vY2tTY3JvbGxBbmltYXRvCiBSZWY8U2Nyb2xsYmFy
PiBSZW5kZXJMaXN0Qm94OjpjcmVhdGVTY3JvbGxiYXIoKQogewogICAgIFJlZlB0cjxTY3JvbGxi
YXI+IHdpZGdldDsKLSAgICBib29sIGhhc0N1c3RvbVNjcm9sbGJhclN0eWxlID0gc3R5bGUoKS5o
YXNQc2V1ZG9TdHlsZShTQ1JPTExCQVIpOworICAgIGJvb2wgaGFzQ3VzdG9tU2Nyb2xsYmFyU3R5
bGUgPSBzdHlsZSgpLmhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkOjpTY3JvbGxiYXIpOwogICAgIGlm
IChoYXNDdXN0b21TY3JvbGxiYXJTdHlsZSkKICAgICAgICAgd2lkZ2V0ID0gUmVuZGVyU2Nyb2xs
YmFyOjpjcmVhdGVDdXN0b21TY3JvbGxiYXIoKnRoaXMsIFZlcnRpY2FsU2Nyb2xsYmFyLCAmc2Vs
ZWN0RWxlbWVudCgpKTsKICAgICBlbHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0SXRlbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RJdGVtLmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyAr
NzEsNyBAQCBSZW5kZXJTdHlsZSBSZW5kZXJMaXN0SXRlbTo6Y29tcHV0ZU1hcmtlCiAgICAgZm9u
dERlc2NyaXB0aW9uLnNldFZhcmlhbnROdW1lcmljU3BhY2luZyhGb250VmFyaWFudE51bWVyaWNT
cGFjaW5nOjpUYWJ1bGFyTnVtYmVycyk7CiAgICAgcGFyZW50U3R5bGUuc2V0Rm9udERlc2NyaXB0
aW9uKGZvbnREZXNjcmlwdGlvbik7CiAgICAgcGFyZW50U3R5bGUuZm9udENhc2NhZGUoKS51cGRh
dGUoJmRvY3VtZW50KCkuZm9udFNlbGVjdG9yKCkpOwotICAgIGlmIChhdXRvIG1hcmtlclN0eWxl
ID0gZ2V0Q2FjaGVkUHNldWRvU3R5bGUoTUFSS0VSLCAmcGFyZW50U3R5bGUpKQorICAgIGlmIChh
dXRvIG1hcmtlclN0eWxlID0gZ2V0Q2FjaGVkUHNldWRvU3R5bGUoUHNldWRvSWQ6Ok1hcmtlciwg
JnBhcmVudFN0eWxlKSkKICAgICAgICAgcmV0dXJuIFJlbmRlclN0eWxlOjpjbG9uZSgqbWFya2Vy
U3R5bGUpOwogICAgIGF1dG8gbWFya2VyU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CiAg
ICAgbWFya2VyU3R5bGUuaW5oZXJpdEZyb20ocGFyZW50U3R5bGUpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAkocmV2aXNpb24gMjMyMTA0
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MDUsMTk3ICs0MDUsMTk3IEBAIHN0YXRpYyBORVZFUl9JTkxJTkUgdm9p
ZCB0b0NKS0lkZW9ncmFwaGkKICAgICBidWlsZGVyLmFwcGVuZChjaGFyYWN0ZXJzLCBsZW5ndGgp
OwogfQogCi1zdGF0aWMgRUxpc3RTdHlsZVR5cGUgZWZmZWN0aXZlTGlzdE1hcmtlclR5cGUoRUxp
c3RTdHlsZVR5cGUgdHlwZSwgaW50IHZhbHVlKQorc3RhdGljIExpc3RTdHlsZVR5cGUgZWZmZWN0
aXZlTGlzdE1hcmtlclR5cGUoTGlzdFN0eWxlVHlwZSB0eXBlLCBpbnQgdmFsdWUpCiB7CiAgICAg
Ly8gTm90ZSwgdGhlIGZvbGxvd2luZyBzd2l0Y2ggc3RhdGVtZW50IGhhcyBiZWVuIGV4cGxpY2l0
bHkgZ3JvdXBlZAogICAgIC8vIGJ5IGxpc3Qtc3R5bGUtdHlwZSBvcmRpbmFsIHJhbmdlLgogICAg
IHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgQXJhYmljSW5kaWM6Ci0gICAgY2FzZSBCZW5nYWxp
OgotICAgIGNhc2UgQmluYXJ5TGlzdFN0eWxlOgotICAgIGNhc2UgQ2FtYm9kaWFuOgotICAgIGNh
c2UgQ2lyY2xlOgotICAgIGNhc2UgRGVjaW1hbExlYWRpbmdaZXJvOgotICAgIGNhc2UgRGVjaW1h
bExpc3RTdHlsZToKLSAgICBjYXNlIERldmFuYWdhcmk6Ci0gICAgY2FzZSBEaXNjOgotICAgIGNh
c2UgR3VqYXJhdGk6Ci0gICAgY2FzZSBHdXJtdWtoaToKLSAgICBjYXNlIEthbm5hZGE6Ci0gICAg
Y2FzZSBLaG1lcjoKLSAgICBjYXNlIExhbzoKLSAgICBjYXNlIExvd2VySGV4YWRlY2ltYWw6Ci0g
ICAgY2FzZSBNYWxheWFsYW06Ci0gICAgY2FzZSBNb25nb2xpYW46Ci0gICAgY2FzZSBNeWFubWFy
OgotICAgIGNhc2UgTm9uZUxpc3RTdHlsZToKLSAgICBjYXNlIE9jdGFsOgotICAgIGNhc2UgT3Jp
eWE6Ci0gICAgY2FzZSBQZXJzaWFuOgotICAgIGNhc2UgU3F1YXJlOgotICAgIGNhc2UgVGVsdWd1
OgotICAgIGNhc2UgVGhhaToKLSAgICBjYXNlIFRpYmV0YW46Ci0gICAgY2FzZSBVcHBlckhleGFk
ZWNpbWFsOgotICAgIGNhc2UgVXJkdToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFyYWJpY0lu
ZGljOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QmVuZ2FsaToKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OkJpbmFyeToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNhbWJvZGlhbjoKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OkNpcmNsZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRlY2lt
YWxMZWFkaW5nWmVybzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRlY2ltYWw6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpEZXZhbmFnYXJpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGlz
YzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okd1amFyYXRpOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6R3VybXVraGk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLYW5uYWRhOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6S2htZXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMYW86Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckhleGFkZWNpbWFsOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6TWFsYXlhbGFtOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TW9uZ29saWFuOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TXlhbm1hcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
Ok5vbmU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpPY3RhbDoKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6Ok9yaXlhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6UGVyc2lhbjoKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OlNxdWFyZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRlbHVndToK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRoYWk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpU
aWJldGFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJIZXhhZGVjaW1hbDoKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OlVyZHU6CiAgICAgICAgIHJldHVybiB0eXBlOyAvLyBDYW4gcmVw
cmVzZW50IGFsbCBvcmRpbmFscy4KLSAgICBjYXNlIEFybWVuaWFuOgotICAgICAgICByZXR1cm4g
KHZhbHVlIDwgMSB8fCB2YWx1ZSA+IDk5OTk5OTk5KSA/IERlY2ltYWxMaXN0U3R5bGUgOiB0eXBl
OwotICAgIGNhc2UgQ0pLSWRlb2dyYXBoaWM6Ci0gICAgICAgIHJldHVybiAodmFsdWUgPCAwKSA/
IERlY2ltYWxMaXN0U3R5bGUgOiB0eXBlOwotICAgIGNhc2UgR2VvcmdpYW46Ci0gICAgICAgIHJl
dHVybiAodmFsdWUgPCAxIHx8IHZhbHVlID4gMTk5OTkpID8gRGVjaW1hbExpc3RTdHlsZSA6IHR5
cGU7Ci0gICAgY2FzZSBIZWJyZXc6Ci0gICAgICAgIHJldHVybiAodmFsdWUgPCAwIHx8IHZhbHVl
ID4gOTk5OTk5KSA/IERlY2ltYWxMaXN0U3R5bGUgOiB0eXBlOwotICAgIGNhc2UgTG93ZXJSb21h
bjoKLSAgICBjYXNlIFVwcGVyUm9tYW46Ci0gICAgICAgIHJldHVybiAodmFsdWUgPCAxIHx8IHZh
bHVlID4gMzk5OSkgPyBEZWNpbWFsTGlzdFN0eWxlIDogdHlwZTsKLSAgICBjYXNlIEFmYXI6Ci0g
ICAgY2FzZSBBbWhhcmljOgotICAgIGNhc2UgQW1oYXJpY0FiZWdlZGU6Ci0gICAgY2FzZSBBc3Rl
cmlza3M6Ci0gICAgY2FzZSBDamtFYXJ0aGx5QnJhbmNoOgotICAgIGNhc2UgQ2prSGVhdmVubHlT
dGVtOgotICAgIGNhc2UgRXRoaW9waWM6Ci0gICAgY2FzZSBFdGhpb3BpY0FiZWdlZGU6Ci0gICAg
Y2FzZSBFdGhpb3BpY0FiZWdlZGVBbUV0OgotICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlR2V6Ogot
ICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlVGlFcjoKLSAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZVRp
RXQ6Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lQWFFcjoKLSAgICBjYXNlIEV0aGlvcGljSGFs
ZWhhbWVBYUV0OgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUFtRXQ6Ci0gICAgY2FzZSBFdGhp
b3BpY0hhbGVoYW1lR2V6OgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZU9tRXQ6Ci0gICAgY2Fz
ZSBFdGhpb3BpY0hhbGVoYW1lU2lkRXQ6Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lU29FdDoK
LSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVUaUVyOgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFt
ZVRpRXQ6Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lVGlnOgotICAgIGNhc2UgRm9vdG5vdGVz
OgotICAgIGNhc2UgSGFuZ3VsOgotICAgIGNhc2UgSGFuZ3VsQ29uc29uYW50OgotICAgIGNhc2Ug
SGlyYWdhbmE6Ci0gICAgY2FzZSBIaXJhZ2FuYUlyb2hhOgotICAgIGNhc2UgS2F0YWthbmE6Ci0g
ICAgY2FzZSBLYXRha2FuYUlyb2hhOgotICAgIGNhc2UgTG93ZXJBbHBoYToKLSAgICBjYXNlIExv
d2VyQXJtZW5pYW46Ci0gICAgY2FzZSBMb3dlckdyZWVrOgotICAgIGNhc2UgTG93ZXJMYXRpbjoK
LSAgICBjYXNlIExvd2VyTm9yd2VnaWFuOgotICAgIGNhc2UgT3JvbW86Ci0gICAgY2FzZSBTaWRh
bWE6Ci0gICAgY2FzZSBTb21hbGk6Ci0gICAgY2FzZSBUaWdyZToKLSAgICBjYXNlIFRpZ3Jpbnlh
RXI6Ci0gICAgY2FzZSBUaWdyaW55YUVyQWJlZ2VkZToKLSAgICBjYXNlIFRpZ3JpbnlhRXQ6Ci0g
ICAgY2FzZSBUaWdyaW55YUV0QWJlZ2VkZToKLSAgICBjYXNlIFVwcGVyQWxwaGE6Ci0gICAgY2Fz
ZSBVcHBlckFybWVuaWFuOgotICAgIGNhc2UgVXBwZXJHcmVlazoKLSAgICBjYXNlIFVwcGVyTGF0
aW46Ci0gICAgY2FzZSBVcHBlck5vcndlZ2lhbjoKLSAgICAgICAgcmV0dXJuICh2YWx1ZSA8IDEp
ID8gRGVjaW1hbExpc3RTdHlsZSA6IHR5cGU7CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBcm1l
bmlhbjoKKyAgICAgICAgcmV0dXJuICh2YWx1ZSA8IDEgfHwgdmFsdWUgPiA5OTk5OTk5OSkgPyBM
aXN0U3R5bGVUeXBlOjpEZWNpbWFsIDogdHlwZTsKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNK
S0lkZW9ncmFwaGljOgorICAgICAgICByZXR1cm4gKHZhbHVlIDwgMCkgPyBMaXN0U3R5bGVUeXBl
OjpEZWNpbWFsIDogdHlwZTsKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okdlb3JnaWFuOgorICAg
ICAgICByZXR1cm4gKHZhbHVlIDwgMSB8fCB2YWx1ZSA+IDE5OTk5KSA/IExpc3RTdHlsZVR5cGU6
OkRlY2ltYWwgOiB0eXBlOworICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGVicmV3OgorICAgICAg
ICByZXR1cm4gKHZhbHVlIDwgMCB8fCB2YWx1ZSA+IDk5OTk5OSkgPyBMaXN0U3R5bGVUeXBlOjpE
ZWNpbWFsIDogdHlwZTsKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyUm9tYW46CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlclJvbWFuOgorICAgICAgICByZXR1cm4gKHZhbHVlIDwg
MSB8fCB2YWx1ZSA+IDM5OTkpID8gTGlzdFN0eWxlVHlwZTo6RGVjaW1hbCA6IHR5cGU7CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpBZmFyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QW1oYXJp
YzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFtaGFyaWNBYmVnZWRlOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6QXN0ZXJpc2tzOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2prRWFydGhs
eUJyYW5jaDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNqa0hlYXZlbmx5U3RlbToKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRo
aW9waWNBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlQW1F
dDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZUdlejoKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZVRpRXI6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpFdGhpb3BpY0FiZWdlZGVUaUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9w
aWNIYWxlaGFtZUFhRXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1l
QWFFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVBbUV0OgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUdlejoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVPbUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
RXRoaW9waWNIYWxlaGFtZVNpZEV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNI
YWxlaGFtZVNvRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lVGlF
cjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVUaUV0OgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVRpZzoKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OkZvb3Rub3RlczoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okhhbmd1bDoKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6Okhhbmd1bENvbnNvbmFudDoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkhpcmFnYW5hOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGlyYWdhbmFJcm9oYToKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OkthdGFrYW5hOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
S2F0YWthbmFJcm9oYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyQWxwaGE6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckFybWVuaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6TG93ZXJHcmVlazoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyTGF0aW46CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlck5vcndlZ2lhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6Ok9yb21vOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6U2lkYW1hOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6U29tYWxpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmU6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55YUVyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
VGlncmlueWFFckFiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55YUV0Ogor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmlueWFFdEFiZWdlZGU6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpVcHBlckFscGhhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJBcm1l
bmlhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyR3JlZWs6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpVcHBlckxhdGluOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJOb3J3
ZWdpYW46CisgICAgICAgIHJldHVybiAodmFsdWUgPCAxKSA/IExpc3RTdHlsZVR5cGU6OkRlY2lt
YWwgOiB0eXBlOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVy
biB0eXBlOwogfQogCi1zdGF0aWMgVUNoYXIgbGlzdE1hcmtlclN1ZmZpeChFTGlzdFN0eWxlVHlw
ZSB0eXBlLCBpbnQgdmFsdWUpCitzdGF0aWMgVUNoYXIgbGlzdE1hcmtlclN1ZmZpeChMaXN0U3R5
bGVUeXBlIHR5cGUsIGludCB2YWx1ZSkKIHsKICAgICAvLyBJZiB0aGUgbGlzdC1zdHlsZS10eXBl
IGNhbm5vdCByZXByZXNlbnQgfHZhbHVlfCBiZWNhdXNlIGl0J3Mgb3V0c2lkZSBpdHMKICAgICAv
LyBvcmRpbmFsIHJhbmdlIHRoZW4gd2UgZmFsbCBiYWNrIHRvIHNvbWUgbGlzdCBzdHlsZSB0aGF0
IGNhbiByZXByZXNlbnQgfHZhbHVlfC4KLSAgICBFTGlzdFN0eWxlVHlwZSBlZmZlY3RpdmVUeXBl
ID0gZWZmZWN0aXZlTGlzdE1hcmtlclR5cGUodHlwZSwgdmFsdWUpOworICAgIExpc3RTdHlsZVR5
cGUgZWZmZWN0aXZlVHlwZSA9IGVmZmVjdGl2ZUxpc3RNYXJrZXJUeXBlKHR5cGUsIHZhbHVlKTsK
IAogICAgIC8vIE5vdGUsIHRoZSBmb2xsb3dpbmcgc3dpdGNoIHN0YXRlbWVudCBoYXMgYmVlbiBl
eHBsaWNpdGx5CiAgICAgLy8gZ3JvdXBlZCBieSBsaXN0LXN0eWxlLXR5cGUgc3VmZml4LgogICAg
IHN3aXRjaCAoZWZmZWN0aXZlVHlwZSkgewotICAgIGNhc2UgQXN0ZXJpc2tzOgotICAgIGNhc2Ug
Q2lyY2xlOgotICAgIGNhc2UgRGlzYzoKLSAgICBjYXNlIEZvb3Rub3RlczoKLSAgICBjYXNlIE5v
bmVMaXN0U3R5bGU6Ci0gICAgY2FzZSBTcXVhcmU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpB
c3Rlcmlza3M6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDaXJjbGU6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpEaXNjOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Rm9vdG5vdGVzOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6Tm9uZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlNxdWFy
ZToKICAgICAgICAgcmV0dXJuICcgJzsKLSAgICBjYXNlIEFmYXI6Ci0gICAgY2FzZSBBbWhhcmlj
OgotICAgIGNhc2UgQW1oYXJpY0FiZWdlZGU6Ci0gICAgY2FzZSBFdGhpb3BpYzoKLSAgICBjYXNl
IEV0aGlvcGljQWJlZ2VkZToKLSAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZUFtRXQ6Ci0gICAgY2Fz
ZSBFdGhpb3BpY0FiZWdlZGVHZXo6Ci0gICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVUaUVyOgotICAg
IGNhc2UgRXRoaW9waWNBYmVnZWRlVGlFdDoKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVBYUVy
OgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUFhRXQ6Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVo
YW1lQW1FdDoKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVHZXo6Ci0gICAgY2FzZSBFdGhpb3Bp
Y0hhbGVoYW1lT21FdDoKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVTaWRFdDoKLSAgICBjYXNl
IEV0aGlvcGljSGFsZWhhbWVTb0V0OgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVRpRXI6Ci0g
ICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lVGlFdDoKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVU
aWc6Ci0gICAgY2FzZSBPcm9tbzoKLSAgICBjYXNlIFNpZGFtYToKLSAgICBjYXNlIFNvbWFsaToK
LSAgICBjYXNlIFRpZ3JlOgotICAgIGNhc2UgVGlncmlueWFFcjoKLSAgICBjYXNlIFRpZ3Jpbnlh
RXJBYmVnZWRlOgotICAgIGNhc2UgVGlncmlueWFFdDoKLSAgICBjYXNlIFRpZ3JpbnlhRXRBYmVn
ZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QWZhcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkFtaGFyaWM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBbWhhcmljQWJlZ2VkZToKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
RXRoaW9waWNBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRl
QW1FdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZUdlejoKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZVRpRXI6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGVUaUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRo
aW9waWNIYWxlaGFtZUFhRXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVo
YW1lQWFFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVBbUV0Ogor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUdlejoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVPbUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6RXRoaW9waWNIYWxlaGFtZVNpZEV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9w
aWNIYWxlaGFtZVNvRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1l
VGlFcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVUaUV0OgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVRpZzoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6Ok9yb21vOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6U2lkYW1hOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6U29tYWxpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmU6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55YUVyOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6VGlncmlueWFFckFiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55
YUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmlueWFFdEFiZWdlZGU6CiAgICAgICAg
IHJldHVybiBldGhpb3BpY1ByZWZhY2VDb2xvbjsKLSAgICBjYXNlIEFybWVuaWFuOgotICAgIGNh
c2UgQXJhYmljSW5kaWM6Ci0gICAgY2FzZSBCZW5nYWxpOgotICAgIGNhc2UgQmluYXJ5TGlzdFN0
eWxlOgotICAgIGNhc2UgQ2FtYm9kaWFuOgotICAgIGNhc2UgQ0pLSWRlb2dyYXBoaWM6Ci0gICAg
Y2FzZSBDamtFYXJ0aGx5QnJhbmNoOgotICAgIGNhc2UgQ2prSGVhdmVubHlTdGVtOgotICAgIGNh
c2UgRGVjaW1hbExlYWRpbmdaZXJvOgotICAgIGNhc2UgRGVjaW1hbExpc3RTdHlsZToKLSAgICBj
YXNlIERldmFuYWdhcmk6Ci0gICAgY2FzZSBHZW9yZ2lhbjoKLSAgICBjYXNlIEd1amFyYXRpOgot
ICAgIGNhc2UgR3VybXVraGk6Ci0gICAgY2FzZSBIYW5ndWw6Ci0gICAgY2FzZSBIYW5ndWxDb25z
b25hbnQ6Ci0gICAgY2FzZSBIZWJyZXc6Ci0gICAgY2FzZSBIaXJhZ2FuYToKLSAgICBjYXNlIEhp
cmFnYW5hSXJvaGE6Ci0gICAgY2FzZSBLYW5uYWRhOgotICAgIGNhc2UgS2F0YWthbmE6Ci0gICAg
Y2FzZSBLYXRha2FuYUlyb2hhOgotICAgIGNhc2UgS2htZXI6Ci0gICAgY2FzZSBMYW86Ci0gICAg
Y2FzZSBMb3dlckFscGhhOgotICAgIGNhc2UgTG93ZXJBcm1lbmlhbjoKLSAgICBjYXNlIExvd2Vy
R3JlZWs6Ci0gICAgY2FzZSBMb3dlckhleGFkZWNpbWFsOgotICAgIGNhc2UgTG93ZXJMYXRpbjoK
LSAgICBjYXNlIExvd2VyTm9yd2VnaWFuOgotICAgIGNhc2UgTG93ZXJSb21hbjoKLSAgICBjYXNl
IE1hbGF5YWxhbToKLSAgICBjYXNlIE1vbmdvbGlhbjoKLSAgICBjYXNlIE15YW5tYXI6Ci0gICAg
Y2FzZSBPY3RhbDoKLSAgICBjYXNlIE9yaXlhOgotICAgIGNhc2UgUGVyc2lhbjoKLSAgICBjYXNl
IFRlbHVndToKLSAgICBjYXNlIFRoYWk6Ci0gICAgY2FzZSBUaWJldGFuOgotICAgIGNhc2UgVXBw
ZXJBbHBoYToKLSAgICBjYXNlIFVwcGVyQXJtZW5pYW46Ci0gICAgY2FzZSBVcHBlckdyZWVrOgot
ICAgIGNhc2UgVXBwZXJIZXhhZGVjaW1hbDoKLSAgICBjYXNlIFVwcGVyTGF0aW46Ci0gICAgY2Fz
ZSBVcHBlck5vcndlZ2lhbjoKLSAgICBjYXNlIFVwcGVyUm9tYW46Ci0gICAgY2FzZSBVcmR1Ogor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QXJtZW5pYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpBcmFiaWNJbmRpYzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkJlbmdhbGk6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpCaW5hcnk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDYW1ib2Rp
YW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDSktJZGVvZ3JhcGhpYzoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkNqa0VhcnRobHlCcmFuY2g6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpD
amtIZWF2ZW5seVN0ZW06CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEZWNpbWFsTGVhZGluZ1pl
cm86CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEZWNpbWFsOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6RGV2YW5hZ2FyaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okdlb3JnaWFuOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6R3VqYXJhdGk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpH
dXJtdWtoaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okhhbmd1bDoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6Okhhbmd1bENvbnNvbmFudDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkhlYnJl
dzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkhpcmFnYW5hOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6SGlyYWdhbmFJcm9oYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okthbm5hZGE6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLYXRha2FuYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
OkthdGFrYW5hSXJvaGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLaG1lcjoKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OkxhbzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyQWxwaGE6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckFybWVuaWFuOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6TG93ZXJHcmVlazoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VySGV4YWRl
Y2ltYWw6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckxhdGluOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6TG93ZXJOb3J3ZWdpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dl
clJvbWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TWFsYXlhbGFtOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6TW9uZ29saWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TXlhbm1hcjoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok9jdGFsOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
T3JpeWE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpQZXJzaWFuOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6VGVsdWd1OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGhhaToKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OlRpYmV0YW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckFs
cGhhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJBcm1lbmlhbjoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OlVwcGVyR3JlZWs6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckhl
eGFkZWNpbWFsOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJMYXRpbjoKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OlVwcGVyTm9yd2VnaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
VXBwZXJSb21hbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVyZHU6CiAgICAgICAgIHJldHVy
biAnLic7CiAgICAgfQogCkBAIC02MDMsNTE4ICs2MDMsNTE4IEBAIHN0YXRpYyBVQ2hhciBsaXN0
TWFya2VyU3VmZml4KEVMaXN0U3R5bGUKICAgICByZXR1cm4gJy4nOwogfQogCi1TdHJpbmcgbGlz
dE1hcmtlclRleHQoRUxpc3RTdHlsZVR5cGUgdHlwZSwgaW50IHZhbHVlKQorU3RyaW5nIGxpc3RN
YXJrZXJUZXh0KExpc3RTdHlsZVR5cGUgdHlwZSwgaW50IHZhbHVlKQogewogICAgIFN0cmluZ0J1
aWxkZXIgYnVpbGRlcjsKIAogICAgIC8vIElmIHRoZSBsaXN0LXN0eWxlLXR5cGUsIHNheSBoZWJy
ZXcsIGNhbm5vdCByZXByZXNlbnQgfHZhbHVlfCBiZWNhdXNlIGl0J3Mgb3V0c2lkZQogICAgIC8v
IGl0cyBvcmRpbmFsIHJhbmdlIHRoZW4gd2UgZmFsbGJhY2sgdG8gc29tZSBsaXN0IHN0eWxlIHRo
YXQgY2FuIHJlcHJlc2VudCB8dmFsdWV8LgogICAgIHN3aXRjaCAoZWZmZWN0aXZlTGlzdE1hcmtl
clR5cGUodHlwZSwgdmFsdWUpKSB7Ci0gICAgICAgIGNhc2UgTm9uZUxpc3RTdHlsZToKLSAgICAg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Tm9u
ZToKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICAgICAgY2FzZSBBc3Rlcmlz
a3M6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBMQ2hhciBhc3Rlcmlza3NTeW1ib2xzWzFd
ID0geyAweDJBIH07Ci0gICAgICAgICAgICB0b1N5bWJvbGljKGJ1aWxkZXIsIHZhbHVlLCBhc3Rl
cmlza3NTeW1ib2xzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIC8v
IFdlIHVzZSB0aGUgc2FtZSBjaGFyYWN0ZXJzIGZvciB0ZXh0IHNlY3VyaXR5LgotICAgICAgICAv
LyBTZWUgUmVuZGVyVGV4dDo6c2V0SW50ZXJuYWxTdHJpbmcuCi0gICAgICAgIGNhc2UgQ2lyY2xl
OgotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQod2hpdGVCdWxsZXQpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgRGlzYzoKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGJ1
bGxldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGb290bm90ZXM6IHsKLSAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBmb290bm90ZXNTeW1ib2xzWzRdID0geyAweDAw
MkEsIDB4MjA1MSwgMHgyMDIwLCAweDIwMjEgfTsKLSAgICAgICAgICAgIHRvU3ltYm9saWMoYnVp
bGRlciwgdmFsdWUsIGZvb3Rub3Rlc1N5bWJvbHMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBTcXVhcmU6Ci0gICAgICAgICAgICAvLyBUaGUgQ1NTIDIuMSB0
ZXN0IHN1aXRlIHVzZXMgVSsyNUVFIEJMQUNLIE1FRElVTSBTTUFMTCBTUVVBUkUKLSAgICAgICAg
ICAgIC8vIGluc3RlYWQsIGJ1dCBJIHRoaW5rIHRoaXMgbG9va3MgYmV0dGVyLgotICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoYmxhY2tTcXVhcmUpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgICAgY2FzZSBEZWNpbWFsTGlzdFN0eWxlOgotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRO
dW1iZXIodmFsdWUpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpBc3Rlcmlza3M6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IExDaGFyIGFzdGVyaXNrc1N5bWJv
bHNbMV0gPSB7IDB4MkEgfTsKKyAgICAgICAgdG9TeW1ib2xpYyhidWlsZGVyLCB2YWx1ZSwgYXN0
ZXJpc2tzU3ltYm9scyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAvLyBXZSB1c2UgdGhl
IHNhbWUgY2hhcmFjdGVycyBmb3IgdGV4dCBzZWN1cml0eS4KKyAgICAvLyBTZWUgUmVuZGVyVGV4
dDo6c2V0SW50ZXJuYWxTdHJpbmcuCisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDaXJjbGU6Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKHdoaXRlQnVsbGV0KTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpEaXNjOgorICAgICAgICBidWlsZGVyLmFwcGVuZChidWxsZXQp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkZvb3Rub3Rlczogewor
ICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZm9vdG5vdGVzU3ltYm9sc1s0XSA9IHsgMHgwMDJB
LCAweDIwNTEsIDB4MjAyMCwgMHgyMDIxIH07CisgICAgICAgIHRvU3ltYm9saWMoYnVpbGRlciwg
dmFsdWUsIGZvb3Rub3Rlc1N5bWJvbHMpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpTcXVhcmU6CisgICAgICAgIC8vIFRoZSBDU1MgMi4xIHRlc3Qgc3Vp
dGUgdXNlcyBVKzI1RUUgQkxBQ0sgTUVESVVNIFNNQUxMIFNRVUFSRQorICAgICAgICAvLyBpbnN0
ZWFkLCBidXQgSSB0aGluayB0aGlzIGxvb2tzIGJldHRlci4KKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoYmxhY2tTcXVhcmUpOworICAgICAgICBicmVhazsKIAotICAgICAgICBjYXNlIERlY2ltYWxM
ZWFkaW5nWmVybzoKLSAgICAgICAgICAgIGlmICh2YWx1ZSA8IC05IHx8IHZhbHVlID4gOSkgewot
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKHZhbHVlKTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh2YWx1ZSA8IDApIHsK
LSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIi0wIik7Ci0gICAgICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoLXZhbHVlKTsgLy8gLTAxIHRvIC0wOQotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoJzAnKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKHZhbHVlKTsgLy8gMDAg
dG8gMDkKLSAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGVjaW1h
bDoKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIodmFsdWUpOworICAgICAgICBicmVhazsK
IAotICAgICAgICBjYXNlIEFyYWJpY0luZGljOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3Qg
VUNoYXIgYXJhYmljSW5kaWNOdW1lcmFsc1sxMF0gPSB7Ci0gICAgICAgICAgICAgICAgMHgwNjYw
LCAweDA2NjEsIDB4MDY2MiwgMHgwNjYzLCAweDA2NjQsIDB4MDY2NSwgMHgwNjY2LCAweDA2Njcs
IDB4MDY2OCwgMHgwNjY5Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9OdW1lcmljKGJ1
aWxkZXIsIHZhbHVlLCBhcmFiaWNJbmRpY051bWVyYWxzKTsKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkRlY2ltYWxMZWFkaW5nWmVybzoKKyAgICAgICAgaWYgKHZhbHVlIDwgLTkgfHwgdmFsdWUg
PiA5KSB7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcih2YWx1ZSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQotCi0gICAgICAgIGNhc2UgQmluYXJ5TGlzdFN0eWxlOiB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgTENoYXIgYmluYXJ5TnVtZXJhbHNbMl0gPSB7ICcw
JywgJzEnIH07Ci0gICAgICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIGJpbmFyeU51
bWVyYWxzKTsKKyAgICAgICAgaWYgKHZhbHVlIDwgMCkgeworICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCItMCIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoLXZh
bHVlKTsgLy8gLTAxIHRvIC0wOQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJzAnKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIodmFs
dWUpOyAvLyAwMCB0byAwOQorICAgICAgICBicmVhazsKIAotICAgICAgICBjYXNlIEJlbmdhbGk6
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBiZW5nYWxpTnVtZXJhbHNbMTBdID0g
ewotICAgICAgICAgICAgICAgIDB4MDlFNiwgMHgwOUU3LCAweDA5RTgsIDB4MDlFOSwgMHgwOUVB
LCAweDA5RUIsIDB4MDlFQywgMHgwOUVELCAweDA5RUUsIDB4MDlFRgotICAgICAgICAgICAgfTsK
LSAgICAgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgYmVuZ2FsaU51bWVyYWxzKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpB
cmFiaWNJbmRpYzogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgYXJhYmljSW5kaWNOdW1l
cmFsc1sxMF0gPSB7CisgICAgICAgICAgICAweDA2NjAsIDB4MDY2MSwgMHgwNjYyLCAweDA2NjMs
IDB4MDY2NCwgMHgwNjY1LCAweDA2NjYsIDB4MDY2NywgMHgwNjY4LCAweDA2NjkKKyAgICAgICAg
fTsKKyAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBhcmFiaWNJbmRpY051bWVyYWxz
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCi0gICAgICAgIGNhc2UgQ2FtYm9kaWFuOgotICAg
ICAgICBjYXNlIEtobWVyOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIga2htZXJO
dW1lcmFsc1sxMF0gPSB7Ci0gICAgICAgICAgICAgICAgMHgxN0UwLCAweDE3RTEsIDB4MTdFMiwg
MHgxN0UzLCAweDE3RTQsIDB4MTdFNSwgMHgxN0U2LCAweDE3RTcsIDB4MTdFOCwgMHgxN0U5Ci0g
ICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBraG1l
ck51bWVyYWxzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
RGV2YW5hZ2FyaTogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGRldmFuYWdhcmlO
dW1lcmFsc1sxMF0gPSB7Ci0gICAgICAgICAgICAgICAgMHgwOTY2LCAweDA5NjcsIDB4MDk2OCwg
MHgwOTY5LCAweDA5NkEsIDB4MDk2QiwgMHgwOTZDLCAweDA5NkQsIDB4MDk2RSwgMHgwOTZGCi0g
ICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBkZXZh
bmFnYXJpTnVtZXJhbHMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBHdWphcmF0aTogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGd1amFyYXRp
TnVtZXJhbHNbMTBdID0gewotICAgICAgICAgICAgICAgIDB4MEFFNiwgMHgwQUU3LCAweDBBRTgs
IDB4MEFFOSwgMHgwQUVBLCAweDBBRUIsIDB4MEFFQywgMHgwQUVELCAweDBBRUUsIDB4MEFFRgot
ICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgZ3Vq
YXJhdGlOdW1lcmFscyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIEd1cm11a2hpOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZ3VybXVraGlO
dW1lcmFsc1sxMF0gPSB7Ci0gICAgICAgICAgICAgICAgMHgwQTY2LCAweDBBNjcsIDB4MEE2OCwg
MHgwQTY5LCAweDBBNkEsIDB4MEE2QiwgMHgwQTZDLCAweDBBNkQsIDB4MEE2RSwgMHgwQTZGCi0g
ICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBndXJt
dWtoaU51bWVyYWxzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgS2FubmFkYTogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGthbm5hZGFOdW1l
cmFsc1sxMF0gPSB7Ci0gICAgICAgICAgICAgICAgMHgwQ0U2LCAweDBDRTcsIDB4MENFOCwgMHgw
Q0U5LCAweDBDRUEsIDB4MENFQiwgMHgwQ0VDLCAweDBDRUQsIDB4MENFRSwgMHgwQ0VGCi0gICAg
ICAgICAgICB9OwotICAgICAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBrYW5uYWRh
TnVtZXJhbHMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBM
b3dlckhleGFkZWNpbWFsOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgTENoYXIgbG93ZXJI
ZXhhZGVjaW1hbE51bWVyYWxzWzE2XSA9IHsKLSAgICAgICAgICAgICAgICAnMCcsICcxJywgJzIn
LCAnMycsICc0JywgJzUnLCAnNicsICc3JywgJzgnLCAnOScsICdhJywgJ2InLCAnYycsICdkJywg
J2UnLCAnZicKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b051bWVyaWMoYnVpbGRlciwg
dmFsdWUsIGxvd2VySGV4YWRlY2ltYWxOdW1lcmFscyk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotICAgICAgICBjYXNlIExhbzogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVD
aGFyIGxhb051bWVyYWxzWzEwXSA9IHsKLSAgICAgICAgICAgICAgICAweDBFRDAsIDB4MEVEMSwg
MHgwRUQyLCAweDBFRDMsIDB4MEVENCwgMHgwRUQ1LCAweDBFRDYsIDB4MEVENywgMHgwRUQ4LCAw
eDBFRDkKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFs
dWUsIGxhb051bWVyYWxzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2UgTWFsYXlhbGFtOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgbWFsYXlh
bGFtTnVtZXJhbHNbMTBdID0gewotICAgICAgICAgICAgICAgIDB4MEQ2NiwgMHgwRDY3LCAweDBE
NjgsIDB4MEQ2OSwgMHgwRDZBLCAweDBENkIsIDB4MEQ2QywgMHgwRDZELCAweDBENkUsIDB4MEQ2
RgotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwg
bWFsYXlhbGFtTnVtZXJhbHMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBNb25nb2xpYW46IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBtb25n
b2xpYW5OdW1lcmFsc1sxMF0gPSB7Ci0gICAgICAgICAgICAgICAgMHgxODEwLCAweDE4MTEsIDB4
MTgxMiwgMHgxODEzLCAweDE4MTQsIDB4MTgxNSwgMHgxODE2LCAweDE4MTcsIDB4MTgxOCwgMHgx
ODE5Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVl
LCBtb25nb2xpYW5OdW1lcmFscyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
ICAgICBjYXNlIE15YW5tYXI6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBteWFu
bWFyTnVtZXJhbHNbMTBdID0gewotICAgICAgICAgICAgICAgIDB4MTA0MCwgMHgxMDQxLCAweDEw
NDIsIDB4MTA0MywgMHgxMDQ0LCAweDEwNDUsIDB4MTA0NiwgMHgxMDQ3LCAweDEwNDgsIDB4MTA0
OQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwg
bXlhbm1hck51bWVyYWxzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2UgT2N0YWw6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBMQ2hhciBvY3RhbE51bWVy
YWxzWzhdID0gewotICAgICAgICAgICAgICAgICcwJywgJzEnLCAnMicsICczJywgJzQnLCAnNScs
ICc2JywgJzcnCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIs
IHZhbHVlLCBvY3RhbE51bWVyYWxzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgT3JpeWE6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBvcml5
YU51bWVyYWxzWzEwXSA9IHsKLSAgICAgICAgICAgICAgICAweDBCNjYsIDB4MEI2NywgMHgwQjY4
LCAweDBCNjksIDB4MEI2QSwgMHgwQjZCLCAweDBCNkMsIDB4MEI2RCwgMHgwQjZFLCAweDBCNkYK
LSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIG9y
aXlhTnVtZXJhbHMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2Fz
ZSBQZXJzaWFuOgotICAgICAgICBjYXNlIFVyZHU6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBVQ2hhciB1cmR1TnVtZXJhbHNbMTBdID0gewotICAgICAgICAgICAgICAgIDB4MDZGMCwgMHgw
NkYxLCAweDA2RjIsIDB4MDZGMywgMHgwNkY0LCAweDA2RjUsIDB4MDZGNiwgMHgwNkY3LCAweDA2
RjgsIDB4MDZGOQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvTnVtZXJpYyhidWlsZGVy
LCB2YWx1ZSwgdXJkdU51bWVyYWxzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgVGVsdWd1OiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgdGVs
dWd1TnVtZXJhbHNbMTBdID0gewotICAgICAgICAgICAgICAgIDB4MEM2NiwgMHgwQzY3LCAweDBD
NjgsIDB4MEM2OSwgMHgwQzZBLCAweDBDNkIsIDB4MEM2QywgMHgwQzZELCAweDBDNkUsIDB4MEM2
RgotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwg
dGVsdWd1TnVtZXJhbHMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBUaWJldGFuOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgdGliZXRhbk51
bWVyYWxzWzEwXSA9IHsKLSAgICAgICAgICAgICAgICAweDBGMjAsIDB4MEYyMSwgMHgwRjIyLCAw
eDBGMjMsIDB4MEYyNCwgMHgwRjI1LCAweDBGMjYsIDB4MEYyNywgMHgwRjI4LCAweDBGMjkKLSAg
ICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIHRpYmV0
YW5OdW1lcmFscyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNl
IFRoYWk6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciB0aGFpTnVtZXJhbHNbMTBd
ID0gewotICAgICAgICAgICAgICAgIDB4MEU1MCwgMHgwRTUxLCAweDBFNTIsIDB4MEU1MywgMHgw
RTU0LCAweDBFNTUsIDB4MEU1NiwgMHgwRTU3LCAweDBFNTgsIDB4MEU1OQotICAgICAgICAgICAg
fTsKLSAgICAgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgdGhhaU51bWVyYWxzKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVXBwZXJIZXhhZGVj
aW1hbDogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IExDaGFyIHVwcGVySGV4YWRlY2ltYWxO
dW1lcmFsc1sxNl0gPSB7Ci0gICAgICAgICAgICAgICAgJzAnLCAnMScsICcyJywgJzMnLCAnNCcs
ICc1JywgJzYnLCAnNycsICc4JywgJzknLCAnQScsICdCJywgJ0MnLCAnRCcsICdFJywgJ0YnCi0g
ICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCB1cHBl
ckhleGFkZWNpbWFsTnVtZXJhbHMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OkJpbmFyeTogeworICAgICAgICBzdGF0aWMgY29uc3QgTENo
YXIgYmluYXJ5TnVtZXJhbHNbMl0gPSB7ICcwJywgJzEnIH07CisgICAgICAgIHRvTnVtZXJpYyhi
dWlsZGVyLCB2YWx1ZSwgYmluYXJ5TnVtZXJhbHMpOworICAgICAgICBicmVhazsKKyAgICB9CiAK
LSAgICAgICAgY2FzZSBMb3dlckFscGhhOgotICAgICAgICBjYXNlIExvd2VyTGF0aW46IHsKLSAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBMQ2hhciBsb3dlckxhdGluQWxwaGFiZXRbMjZdID0gewot
ICAgICAgICAgICAgICAgICdhJywgJ2InLCAnYycsICdkJywgJ2UnLCAnZicsICdnJywgJ2gnLCAn
aScsICdqJywgJ2snLCAnbCcsICdtJywKLSAgICAgICAgICAgICAgICAnbicsICdvJywgJ3AnLCAn
cScsICdyJywgJ3MnLCAndCcsICd1JywgJ3YnLCAndycsICd4JywgJ3knLCAneicKLSAgICAgICAg
ICAgIH07Ci0gICAgICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGxvd2VyTGF0
aW5BbHBoYWJldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNl
IFVwcGVyQWxwaGE6Ci0gICAgICAgIGNhc2UgVXBwZXJMYXRpbjogewotICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IExDaGFyIHVwcGVyTGF0aW5BbHBoYWJldFsyNl0gPSB7Ci0gICAgICAgICAgICAg
ICAgJ0EnLCAnQicsICdDJywgJ0QnLCAnRScsICdGJywgJ0cnLCAnSCcsICdJJywgJ0onLCAnSycs
ICdMJywgJ00nLAotICAgICAgICAgICAgICAgICdOJywgJ08nLCAnUCcsICdRJywgJ1InLCAnUycs
ICdUJywgJ1UnLCAnVicsICdXJywgJ1gnLCAnWScsICdaJwotICAgICAgICAgICAgfTsKLSAgICAg
ICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgdXBwZXJMYXRpbkFscGhhYmV0KTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgTG93ZXJHcmVlazog
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGxvd2VyR3JlZWtBbHBoYWJldFsyNF0g
PSB7Ci0gICAgICAgICAgICAgICAgMHgwM0IxLCAweDAzQjIsIDB4MDNCMywgMHgwM0I0LCAweDAz
QjUsIDB4MDNCNiwgMHgwM0I3LCAweDAzQjgsCi0gICAgICAgICAgICAgICAgMHgwM0I5LCAweDAz
QkEsIDB4MDNCQiwgMHgwM0JDLCAweDAzQkQsIDB4MDNCRSwgMHgwM0JGLCAweDAzQzAsCi0gICAg
ICAgICAgICAgICAgMHgwM0MxLCAweDAzQzMsIDB4MDNDNCwgMHgwM0M1LCAweDAzQzYsIDB4MDND
NywgMHgwM0M4LCAweDAzQzkKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b0FscGhhYmV0
aWMoYnVpbGRlciwgdmFsdWUsIGxvd2VyR3JlZWtBbHBoYWJldCk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QmVuZ2FsaTogeworICAgICAg
ICBzdGF0aWMgY29uc3QgVUNoYXIgYmVuZ2FsaU51bWVyYWxzWzEwXSA9IHsKKyAgICAgICAgICAg
IDB4MDlFNiwgMHgwOUU3LCAweDA5RTgsIDB4MDlFOSwgMHgwOUVBLCAweDA5RUIsIDB4MDlFQywg
MHgwOUVELCAweDA5RUUsIDB4MDlFRgorICAgICAgICB9OworICAgICAgICB0b051bWVyaWMoYnVp
bGRlciwgdmFsdWUsIGJlbmdhbGlOdW1lcmFscyk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAot
ICAgICAgICBjYXNlIEhpcmFnYW5hOiB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVGhpcyB0YWJs
ZSBjb21lcyBmcm9tIHRoZSBDU1MzIGRyYWZ0LCBhbmQgaXMgcHJvYmFibHkKLSAgICAgICAgICAg
IC8vIGluY29ycmVjdCwgZ2l2ZW4gdGhlIGNvbW1lbnRzIGluIHRoYXQgZHJhZnQuCi0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgVUNoYXIgaGlyYWdhbmFBbHBoYWJldFs0OF0gPSB7Ci0gICAgICAg
ICAgICAgICAgMHgzMDQyLCAweDMwNDQsIDB4MzA0NiwgMHgzMDQ4LCAweDMwNEEsIDB4MzA0Qiwg
MHgzMDRELCAweDMwNEYsCi0gICAgICAgICAgICAgICAgMHgzMDUxLCAweDMwNTMsIDB4MzA1NSwg
MHgzMDU3LCAweDMwNTksIDB4MzA1QiwgMHgzMDVELCAweDMwNUYsCi0gICAgICAgICAgICAgICAg
MHgzMDYxLCAweDMwNjQsIDB4MzA2NiwgMHgzMDY4LCAweDMwNkEsIDB4MzA2QiwgMHgzMDZDLCAw
eDMwNkQsCi0gICAgICAgICAgICAgICAgMHgzMDZFLCAweDMwNkYsIDB4MzA3MiwgMHgzMDc1LCAw
eDMwNzgsIDB4MzA3QiwgMHgzMDdFLCAweDMwN0YsCi0gICAgICAgICAgICAgICAgMHgzMDgwLCAw
eDMwODEsIDB4MzA4MiwgMHgzMDg0LCAweDMwODYsIDB4MzA4OCwgMHgzMDg5LCAweDMwOEEsCi0g
ICAgICAgICAgICAgICAgMHgzMDhCLCAweDMwOEMsIDB4MzA4RCwgMHgzMDhGLCAweDMwOTAsIDB4
MzA5MSwgMHgzMDkyLCAweDMwOTMKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b0FscGhh
YmV0aWMoYnVpbGRlciwgdmFsdWUsIGhpcmFnYW5hQWxwaGFiZXQpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBIaXJhZ2FuYUlyb2hhOiB7Ci0gICAgICAgICAg
ICAvLyBGSVhNRTogVGhpcyB0YWJsZSBjb21lcyBmcm9tIHRoZSBDU1MzIGRyYWZ0LCBhbmQgaXMg
cHJvYmFibHkKLSAgICAgICAgICAgIC8vIGluY29ycmVjdCwgZ2l2ZW4gdGhlIGNvbW1lbnRzIGlu
IHRoYXQgZHJhZnQuCi0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgaGlyYWdhbmFJcm9o
YUFscGhhYmV0WzQ3XSA9IHsKLSAgICAgICAgICAgICAgICAweDMwNDQsIDB4MzA4RCwgMHgzMDZG
LCAweDMwNkIsIDB4MzA3QiwgMHgzMDc4LCAweDMwNjgsIDB4MzA2MSwKLSAgICAgICAgICAgICAg
ICAweDMwOEEsIDB4MzA2QywgMHgzMDhCLCAweDMwOTIsIDB4MzA4RiwgMHgzMDRCLCAweDMwODgs
IDB4MzA1RiwKLSAgICAgICAgICAgICAgICAweDMwOEMsIDB4MzA1RCwgMHgzMDY0LCAweDMwNkQs
IDB4MzA2QSwgMHgzMDg5LCAweDMwODAsIDB4MzA0NiwKLSAgICAgICAgICAgICAgICAweDMwOTAs
IDB4MzA2RSwgMHgzMDRBLCAweDMwNEYsIDB4MzA4NCwgMHgzMDdFLCAweDMwNTEsIDB4MzA3NSwK
LSAgICAgICAgICAgICAgICAweDMwNTMsIDB4MzA0OCwgMHgzMDY2LCAweDMwNDIsIDB4MzA1NSwg
MHgzMDRELCAweDMwODYsIDB4MzA4MSwKLSAgICAgICAgICAgICAgICAweDMwN0YsIDB4MzA1Nywg
MHgzMDkxLCAweDMwNzIsIDB4MzA4MiwgMHgzMDVCLCAweDMwNTkKLSAgICAgICAgICAgIH07Ci0g
ICAgICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGhpcmFnYW5hSXJvaGFBbHBo
YWJldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEthdGFr
YW5hOiB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVGhpcyB0YWJsZSBjb21lcyBmcm9tIHRoZSBD
U1MzIGRyYWZ0LCBhbmQgaXMgcHJvYmFibHkKLSAgICAgICAgICAgIC8vIGluY29ycmVjdCwgZ2l2
ZW4gdGhlIGNvbW1lbnRzIGluIHRoYXQgZHJhZnQuCi0gICAgICAgICAgICBzdGF0aWMgY29uc3Qg
VUNoYXIga2F0YWthbmFBbHBoYWJldFs0OF0gPSB7Ci0gICAgICAgICAgICAgICAgMHgzMEEyLCAw
eDMwQTQsIDB4MzBBNiwgMHgzMEE4LCAweDMwQUEsIDB4MzBBQiwgMHgzMEFELCAweDMwQUYsCi0g
ICAgICAgICAgICAgICAgMHgzMEIxLCAweDMwQjMsIDB4MzBCNSwgMHgzMEI3LCAweDMwQjksIDB4
MzBCQiwgMHgzMEJELCAweDMwQkYsCi0gICAgICAgICAgICAgICAgMHgzMEMxLCAweDMwQzQsIDB4
MzBDNiwgMHgzMEM4LCAweDMwQ0EsIDB4MzBDQiwgMHgzMENDLCAweDMwQ0QsCi0gICAgICAgICAg
ICAgICAgMHgzMENFLCAweDMwQ0YsIDB4MzBEMiwgMHgzMEQ1LCAweDMwRDgsIDB4MzBEQiwgMHgz
MERFLCAweDMwREYsCi0gICAgICAgICAgICAgICAgMHgzMEUwLCAweDMwRTEsIDB4MzBFMiwgMHgz
MEU0LCAweDMwRTYsIDB4MzBFOCwgMHgzMEU5LCAweDMwRUEsCi0gICAgICAgICAgICAgICAgMHgz
MEVCLCAweDMwRUMsIDB4MzBFRCwgMHgzMEVGLCAweDMwRjAsIDB4MzBGMSwgMHgzMEYyLCAweDMw
RjMKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFs
dWUsIGthdGFrYW5hQWxwaGFiZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICAgICAgY2FzZSBLYXRha2FuYUlyb2hhOiB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVGhpcyB0
YWJsZSBjb21lcyBmcm9tIHRoZSBDU1MzIGRyYWZ0LCBhbmQgaXMgcHJvYmFibHkKLSAgICAgICAg
ICAgIC8vIGluY29ycmVjdCwgZ2l2ZW4gdGhlIGNvbW1lbnRzIGluIHRoYXQgZHJhZnQuCi0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIga2F0YWthbmFJcm9oYUFscGhhYmV0WzQ3XSA9IHsK
LSAgICAgICAgICAgICAgICAweDMwQTQsIDB4MzBFRCwgMHgzMENGLCAweDMwQ0IsIDB4MzBEQiwg
MHgzMEQ4LCAweDMwQzgsIDB4MzBDMSwKLSAgICAgICAgICAgICAgICAweDMwRUEsIDB4MzBDQywg
MHgzMEVCLCAweDMwRjIsIDB4MzBFRiwgMHgzMEFCLCAweDMwRTgsIDB4MzBCRiwKLSAgICAgICAg
ICAgICAgICAweDMwRUMsIDB4MzBCRCwgMHgzMEM0LCAweDMwQ0QsIDB4MzBDQSwgMHgzMEU5LCAw
eDMwRTAsIDB4MzBBNiwKLSAgICAgICAgICAgICAgICAweDMwRjAsIDB4MzBDRSwgMHgzMEFBLCAw
eDMwQUYsIDB4MzBFNCwgMHgzMERFLCAweDMwQjEsIDB4MzBENSwKLSAgICAgICAgICAgICAgICAw
eDMwQjMsIDB4MzBBOCwgMHgzMEM2LCAweDMwQTIsIDB4MzBCNSwgMHgzMEFELCAweDMwRTYsIDB4
MzBFMSwKLSAgICAgICAgICAgICAgICAweDMwREYsIDB4MzBCNywgMHgzMEYxLCAweDMwRDIsIDB4
MzBFMiwgMHgzMEJCLCAweDMwQjkKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b0FscGhh
YmV0aWMoYnVpbGRlciwgdmFsdWUsIGthdGFrYW5hSXJvaGFBbHBoYWJldCk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2FtYm9kaWFuOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6S2htZXI6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVD
aGFyIGtobWVyTnVtZXJhbHNbMTBdID0geworICAgICAgICAgICAgMHgxN0UwLCAweDE3RTEsIDB4
MTdFMiwgMHgxN0UzLCAweDE3RTQsIDB4MTdFNSwgMHgxN0U2LCAweDE3RTcsIDB4MTdFOCwgMHgx
N0U5CisgICAgICAgIH07CisgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwga2htZXJO
dW1lcmFscyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
OkRldmFuYWdhcmk6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGRldmFuYWdhcmlOdW1l
cmFsc1sxMF0gPSB7CisgICAgICAgICAgICAweDA5NjYsIDB4MDk2NywgMHgwOTY4LCAweDA5Njks
IDB4MDk2QSwgMHgwOTZCLCAweDA5NkMsIDB4MDk2RCwgMHgwOTZFLCAweDA5NkYKKyAgICAgICAg
fTsKKyAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBkZXZhbmFnYXJpTnVtZXJhbHMp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpHdWphcmF0
aTogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZ3VqYXJhdGlOdW1lcmFsc1sxMF0gPSB7
CisgICAgICAgICAgICAweDBBRTYsIDB4MEFFNywgMHgwQUU4LCAweDBBRTksIDB4MEFFQSwgMHgw
QUVCLCAweDBBRUMsIDB4MEFFRCwgMHgwQUVFLCAweDBBRUYKKyAgICAgICAgfTsKKyAgICAgICAg
dG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBndWphcmF0aU51bWVyYWxzKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6R3VybXVraGk6IHsKKyAgICAgICAg
c3RhdGljIGNvbnN0IFVDaGFyIGd1cm11a2hpTnVtZXJhbHNbMTBdID0geworICAgICAgICAgICAg
MHgwQTY2LCAweDBBNjcsIDB4MEE2OCwgMHgwQTY5LCAweDBBNkEsIDB4MEE2QiwgMHgwQTZDLCAw
eDBBNkQsIDB4MEE2RSwgMHgwQTZGCisgICAgICAgIH07CisgICAgICAgIHRvTnVtZXJpYyhidWls
ZGVyLCB2YWx1ZSwgZ3VybXVraGlOdW1lcmFscyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6Okthbm5hZGE6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVD
aGFyIGthbm5hZGFOdW1lcmFsc1sxMF0gPSB7CisgICAgICAgICAgICAweDBDRTYsIDB4MENFNywg
MHgwQ0U4LCAweDBDRTksIDB4MENFQSwgMHgwQ0VCLCAweDBDRUMsIDB4MENFRCwgMHgwQ0VFLCAw
eDBDRUYKKyAgICAgICAgfTsKKyAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBrYW5u
YWRhTnVtZXJhbHMpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpMb3dlckhleGFkZWNpbWFsOiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBMQ2hhciBsb3dl
ckhleGFkZWNpbWFsTnVtZXJhbHNbMTZdID0geworICAgICAgICAgICAgJzAnLCAnMScsICcyJywg
JzMnLCAnNCcsICc1JywgJzYnLCAnNycsICc4JywgJzknLCAnYScsICdiJywgJ2MnLCAnZCcsICdl
JywgJ2YnCisgICAgICAgIH07CisgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgbG93
ZXJIZXhhZGVjaW1hbE51bWVyYWxzKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6TGFvOiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBsYW9OdW1l
cmFsc1sxMF0gPSB7CisgICAgICAgICAgICAweDBFRDAsIDB4MEVEMSwgMHgwRUQyLCAweDBFRDMs
IDB4MEVENCwgMHgwRUQ1LCAweDBFRDYsIDB4MEVENywgMHgwRUQ4LCAweDBFRDkKKyAgICAgICAg
fTsKKyAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBsYW9OdW1lcmFscyk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok1hbGF5YWxhbTogewor
ICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgbWFsYXlhbGFtTnVtZXJhbHNbMTBdID0geworICAg
ICAgICAgICAgMHgwRDY2LCAweDBENjcsIDB4MEQ2OCwgMHgwRDY5LCAweDBENkEsIDB4MEQ2Qiwg
MHgwRDZDLCAweDBENkQsIDB4MEQ2RSwgMHgwRDZGCisgICAgICAgIH07CisgICAgICAgIHRvTnVt
ZXJpYyhidWlsZGVyLCB2YWx1ZSwgbWFsYXlhbGFtTnVtZXJhbHMpOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpNb25nb2xpYW46IHsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IFVDaGFyIG1vbmdvbGlhbk51bWVyYWxzWzEwXSA9IHsKKyAgICAgICAgICAgIDB4
MTgxMCwgMHgxODExLCAweDE4MTIsIDB4MTgxMywgMHgxODE0LCAweDE4MTUsIDB4MTgxNiwgMHgx
ODE3LCAweDE4MTgsIDB4MTgxOQorICAgICAgICB9OworICAgICAgICB0b051bWVyaWMoYnVpbGRl
ciwgdmFsdWUsIG1vbmdvbGlhbk51bWVyYWxzKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6TXlhbm1hcjogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNo
YXIgbXlhbm1hck51bWVyYWxzWzEwXSA9IHsKKyAgICAgICAgICAgIDB4MTA0MCwgMHgxMDQxLCAw
eDEwNDIsIDB4MTA0MywgMHgxMDQ0LCAweDEwNDUsIDB4MTA0NiwgMHgxMDQ3LCAweDEwNDgsIDB4
MTA0OQorICAgICAgICB9OworICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIG15YW5t
YXJOdW1lcmFscyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6Ok9jdGFsOiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBMQ2hhciBvY3RhbE51bWVyYWxzWzhd
ID0geworICAgICAgICAgICAgJzAnLCAnMScsICcyJywgJzMnLCAnNCcsICc1JywgJzYnLCAnNycK
KyAgICAgICAgfTsKKyAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBvY3RhbE51bWVy
YWxzKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6T3Jp
eWE6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIG9yaXlhTnVtZXJhbHNbMTBdID0gewor
ICAgICAgICAgICAgMHgwQjY2LCAweDBCNjcsIDB4MEI2OCwgMHgwQjY5LCAweDBCNkEsIDB4MEI2
QiwgMHgwQjZDLCAweDBCNkQsIDB4MEI2RSwgMHgwQjZGCisgICAgICAgIH07CisgICAgICAgIHRv
TnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgb3JpeWFOdW1lcmFscyk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlBlcnNpYW46CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpVcmR1OiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciB1cmR1TnVtZXJhbHNb
MTBdID0geworICAgICAgICAgICAgMHgwNkYwLCAweDA2RjEsIDB4MDZGMiwgMHgwNkYzLCAweDA2
RjQsIDB4MDZGNSwgMHgwNkY2LCAweDA2RjcsIDB4MDZGOCwgMHgwNkY5CisgICAgICAgIH07Cisg
ICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgdXJkdU51bWVyYWxzKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGVsdWd1OiB7CisgICAgICAg
IHN0YXRpYyBjb25zdCBVQ2hhciB0ZWx1Z3VOdW1lcmFsc1sxMF0gPSB7CisgICAgICAgICAgICAw
eDBDNjYsIDB4MEM2NywgMHgwQzY4LCAweDBDNjksIDB4MEM2QSwgMHgwQzZCLCAweDBDNkMsIDB4
MEM2RCwgMHgwQzZFLCAweDBDNkYKKyAgICAgICAgfTsKKyAgICAgICAgdG9OdW1lcmljKGJ1aWxk
ZXIsIHZhbHVlLCB0ZWx1Z3VOdW1lcmFscyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OlRpYmV0YW46IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFy
IHRpYmV0YW5OdW1lcmFsc1sxMF0gPSB7CisgICAgICAgICAgICAweDBGMjAsIDB4MEYyMSwgMHgw
RjIyLCAweDBGMjMsIDB4MEYyNCwgMHgwRjI1LCAweDBGMjYsIDB4MEYyNywgMHgwRjI4LCAweDBG
MjkKKyAgICAgICAgfTsKKyAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCB0aWJldGFu
TnVtZXJhbHMpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpUaGFpOiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciB0aGFpTnVtZXJhbHNbMTBdID0g
eworICAgICAgICAgICAgMHgwRTUwLCAweDBFNTEsIDB4MEU1MiwgMHgwRTUzLCAweDBFNTQsIDB4
MEU1NSwgMHgwRTU2LCAweDBFNTcsIDB4MEU1OCwgMHgwRTU5CisgICAgICAgIH07CisgICAgICAg
IHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgdGhhaU51bWVyYWxzKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJIZXhhZGVjaW1hbDogeworICAg
ICAgICBzdGF0aWMgY29uc3QgTENoYXIgdXBwZXJIZXhhZGVjaW1hbE51bWVyYWxzWzE2XSA9IHsK
KyAgICAgICAgICAgICcwJywgJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2JywgJzcnLCAnOCcs
ICc5JywgJ0EnLCAnQicsICdDJywgJ0QnLCAnRScsICdGJworICAgICAgICB9OworICAgICAgICB0
b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIHVwcGVySGV4YWRlY2ltYWxOdW1lcmFscyk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KIAotICAgICAgICBjYXNlIEFmYXI6Ci0gICAgICAgIGNhc2UgRXRo
aW9waWNIYWxlaGFtZUFhRXQ6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUFhRXI6IHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBldGhpb3BpY0hhbGVoYW1lQWFFckFscGhh
YmV0WzE4XSA9IHsKLSAgICAgICAgICAgICAgICAweDEyMDAsIDB4MTIwOCwgMHgxMjEwLCAweDEy
MTgsIDB4MTIyOCwgMHgxMjMwLCAweDEyNjAsIDB4MTI3MCwgMHgxMjkwLAotICAgICAgICAgICAg
ICAgIDB4MTJBMCwgMHgxMkE4LCAweDEyQzgsIDB4MTJEMCwgMHgxMkU4LCAweDEyRjAsIDB4MTMw
OCwgMHgxMzM4LCAweDEzNDgKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b0FscGhhYmV0
aWMoYnVpbGRlciwgdmFsdWUsIGV0aGlvcGljSGFsZWhhbWVBYUVyQWxwaGFiZXQpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBBbWhhcmljOgotICAgICAgICBj
YXNlIEV0aGlvcGljSGFsZWhhbWVBbUV0OiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNo
YXIgZXRoaW9waWNIYWxlaGFtZUFtRXRBbHBoYWJldFszM10gPSB7Ci0gICAgICAgICAgICAgICAg
MHgxMjAwLCAweDEyMDgsIDB4MTIxMCwgMHgxMjE4LCAweDEyMjAsIDB4MTIyOCwgMHgxMjMwLCAw
eDEyMzgsIDB4MTI0MCwKLSAgICAgICAgICAgICAgICAweDEyNjAsIDB4MTI3MCwgMHgxMjc4LCAw
eDEyODAsIDB4MTI5MCwgMHgxMjk4LCAweDEyQTAsIDB4MTJBOCwgMHgxMkI4LAotICAgICAgICAg
ICAgICAgIDB4MTJDOCwgMHgxMkQwLCAweDEyRDgsIDB4MTJFMCwgMHgxMkU4LCAweDEyRjAsIDB4
MTMwMCwgMHgxMzA4LCAweDEzMjAsCi0gICAgICAgICAgICAgICAgMHgxMzI4LCAweDEzMzAsIDB4
MTMzOCwgMHgxMzQwLCAweDEzNDgsIDB4MTM1MAotICAgICAgICAgICAgfTsKLSAgICAgICAgICAg
IHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNIYWxlaGFtZUFtRXRBbHBoYWJl
dCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEFtaGFyaWNB
YmVnZWRlOgotICAgICAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZUFtRXQ6IHsKLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBVQ2hhciBldGhpb3BpY0FiZWdlZGVBbUV0QWxwaGFiZXRbMzNdID0gewot
ICAgICAgICAgICAgICAgIDB4MTJBMCwgMHgxMjYwLCAweDEzMDgsIDB4MTJGMCwgMHgxMzAwLCAw
eDEyMDAsIDB4MTJDOCwgMHgxMkQ4LCAweDEyRTAsCi0gICAgICAgICAgICAgICAgMHgxMjEwLCAw
eDEzMjAsIDB4MTMyOCwgMHgxMkU4LCAweDEyQTgsIDB4MTJCOCwgMHgxMjA4LCAweDEyMTgsIDB4
MTI5MCwKLSAgICAgICAgICAgICAgICAweDEyOTgsIDB4MTIyMCwgMHgxMkQwLCAweDEzNDgsIDB4
MTMzOCwgMHgxMjQwLCAweDEyMjgsIDB4MTIzMCwgMHgxMjM4LAotICAgICAgICAgICAgICAgIDB4
MTI3MCwgMHgxMjc4LCAweDEyODAsIDB4MTM0MCwgMHgxMzMwLCAweDEzNTAKLSAgICAgICAgICAg
IH07Ci0gICAgICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGV0aGlvcGljQWJl
Z2VkZUFtRXRBbHBoYWJldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICBjYXNlIENqa0VhcnRobHlCcmFuY2g6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hh
ciBjamtFYXJ0aGx5QnJhbmNoQWxwaGFiZXRbMTJdID0gewotICAgICAgICAgICAgICAgIDB4NUI1
MCwgMHg0RTExLCAweDVCQzUsIDB4NTM2RiwgMHg4RkIwLCAweDVERjMsIDB4NTM0OCwgMHg2NzJB
LCAweDc1MzMsCi0gICAgICAgICAgICAgICAgMHg5MTQ5LCAweDYyMEMsIDB4NEVBNQotICAgICAg
ICAgICAgfTsKLSAgICAgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgY2prRWFy
dGhseUJyYW5jaEFscGhhYmV0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgQ2prSGVhdmVubHlTdGVtOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNo
YXIgY2prSGVhdmVubHlTdGVtQWxwaGFiZXRbMTBdID0gewotICAgICAgICAgICAgICAgIDB4NzUz
MiwgMHg0RTU5LCAweDRFMTksIDB4NEUwMSwgMHg2MjBBLCAweDVERjEsIDB4NUU5QSwgMHg4RjlC
LCAweDU4RUMsCi0gICAgICAgICAgICAgICAgMHg3Njc4Ci0gICAgICAgICAgICB9OwotICAgICAg
ICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBjamtIZWF2ZW5seVN0ZW1BbHBoYWJl
dCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEV0aGlvcGlj
OgotICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVHZXo6IHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBVQ2hhciBldGhpb3BpY0hhbGVoYW1lR2V6QWxwaGFiZXRbMjZdID0gewotICAgICAg
ICAgICAgICAgIDB4MTIwMCwgMHgxMjA4LCAweDEyMTAsIDB4MTIxOCwgMHgxMjIwLCAweDEyMjgs
IDB4MTIzMCwgMHgxMjQwLCAweDEyNjAsCi0gICAgICAgICAgICAgICAgMHgxMjcwLCAweDEyODAs
IDB4MTI5MCwgMHgxMkEwLCAweDEyQTgsIDB4MTJDOCwgMHgxMkQwLCAweDEyRDgsIDB4MTJFOCwK
LSAgICAgICAgICAgICAgICAweDEyRjAsIDB4MTMwOCwgMHgxMzIwLCAweDEzMzAsIDB4MTMzOCwg
MHgxMzQwLCAweDEzNDgsIDB4MTM1MAotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvQWxw
aGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNIYWxlaGFtZUdlekFscGhhYmV0KTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgRXRoaW9waWNBYmVnZWRl
OgotICAgICAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZUdlejogewotICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IFVDaGFyIGV0aGlvcGljQWJlZ2VkZUdlekFscGhhYmV0WzI2XSA9IHsKLSAgICAgICAg
ICAgICAgICAweDEyQTAsIDB4MTI2MCwgMHgxMzA4LCAweDEyRjAsIDB4MTIwMCwgMHgxMkM4LCAw
eDEyRDgsIDB4MTIxMCwgMHgxMzIwLAotICAgICAgICAgICAgICAgIDB4MTJFOCwgMHgxMkE4LCAw
eDEyMDgsIDB4MTIxOCwgMHgxMjkwLCAweDEyMjAsIDB4MTJEMCwgMHgxMzQ4LCAweDEzMzgsCi0g
ICAgICAgICAgICAgICAgMHgxMjQwLCAweDEyMjgsIDB4MTIzMCwgMHgxMjcwLCAweDEyODAsIDB4
MTM0MCwgMHgxMzMwLCAweDEzNTAKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b0FscGhh
YmV0aWMoYnVpbGRlciwgdmFsdWUsIGV0aGlvcGljQWJlZ2VkZUdlekFscGhhYmV0KTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSGFuZ3VsQ29uc29uYW50OiB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgaGFuZ3VsQ29uc29uYW50QWxwaGFiZXRb
MTRdID0gewotICAgICAgICAgICAgICAgIDB4MzEzMSwgMHgzMTM0LCAweDMxMzcsIDB4MzEzOSwg
MHgzMTQxLCAweDMxNDIsIDB4MzE0NSwgMHgzMTQ3LCAweDMxNDgsCi0gICAgICAgICAgICAgICAg
MHgzMTRBLCAweDMxNEIsIDB4MzE0QywgMHgzMTRELCAweDMxNEUKLSAgICAgICAgICAgIH07Ci0g
ICAgICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGhhbmd1bENvbnNvbmFudEFs
cGhhYmV0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSGFu
Z3VsOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgaGFuZ3VsQWxwaGFiZXRbMTRd
ID0gewotICAgICAgICAgICAgICAgIDB4QUMwMCwgMHhCMDk4LCAweEIyRTQsIDB4Qjc3QywgMHhC
OUM4LCAweEJDMTQsIDB4QzBBQywgMHhDNTQ0LCAweEM3OTAsCi0gICAgICAgICAgICAgICAgMHhD
QzI4LCAweENFNzQsIDB4RDBDMCwgMHhEMzBDLCAweEQ1NTgKLSAgICAgICAgICAgIH07Ci0gICAg
ICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGhhbmd1bEFscGhhYmV0KTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgT3JvbW86Ci0gICAgICAg
IGNhc2UgRXRoaW9waWNIYWxlaGFtZU9tRXQ6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBV
Q2hhciBldGhpb3BpY0hhbGVoYW1lT21FdEFscGhhYmV0WzI1XSA9IHsKLSAgICAgICAgICAgICAg
ICAweDEyMDAsIDB4MTIwOCwgMHgxMjE4LCAweDEyMjgsIDB4MTIzMCwgMHgxMjM4LCAweDEyNDAs
IDB4MTI2MCwgMHgxMjcwLAotICAgICAgICAgICAgICAgIDB4MTI3OCwgMHgxMjkwLCAweDEyOTgs
IDB4MTJBMCwgMHgxMkE4LCAweDEyQzgsIDB4MTJFOCwgMHgxMkYwLCAweDEyRjgsCi0gICAgICAg
ICAgICAgICAgMHgxMzAwLCAweDEzMDgsIDB4MTMyMCwgMHgxMzI4LCAweDEzMzgsIDB4MTMzMCwg
MHgxMzQ4Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIs
IHZhbHVlLCBldGhpb3BpY0hhbGVoYW1lT21FdEFscGhhYmV0KTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgU2lkYW1hOgotICAgICAgICBjYXNlIEV0aGlvcGlj
SGFsZWhhbWVTaWRFdDogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGV0aGlvcGlj
SGFsZWhhbWVTaWRFdEFscGhhYmV0WzI2XSA9IHsKLSAgICAgICAgICAgICAgICAweDEyMDAsIDB4
MTIwOCwgMHgxMjEwLCAweDEyMTgsIDB4MTIyOCwgMHgxMjMwLCAweDEyMzgsIDB4MTI0MCwgMHgx
MjYwLAotICAgICAgICAgICAgICAgIDB4MTI3MCwgMHgxMjc4LCAweDEyOTAsIDB4MTI5OCwgMHgx
MkEwLCAweDEyQTgsIDB4MTJDOCwgMHgxMkU4LCAweDEyRjAsCi0gICAgICAgICAgICAgICAgMHgx
MkY4LCAweDEzMDAsIDB4MTMwOCwgMHgxMzIwLCAweDEzMjgsIDB4MTMzOCwgMHgxMzMwLCAweDEz
NDgKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFs
dWUsIGV0aGlvcGljSGFsZWhhbWVTaWRFdEFscGhhYmV0KTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgICAgIGNhc2UgU29tYWxpOgotICAgICAgICBjYXNlIEV0aGlvcGljSGFs
ZWhhbWVTb0V0OiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZXRoaW9waWNIYWxl
aGFtZVNvRXRBbHBoYWJldFsyMl0gPSB7Ci0gICAgICAgICAgICAgICAgMHgxMjAwLCAweDEyMDgs
IDB4MTIxMCwgMHgxMjE4LCAweDEyMjgsIDB4MTIzMCwgMHgxMjM4LCAweDEyNDAsIDB4MTI2MCwK
LSAgICAgICAgICAgICAgICAweDEyNzAsIDB4MTI5MCwgMHgxMkEwLCAweDEyQTgsIDB4MTJCOCwg
MHgxMkM4LCAweDEyRDAsIDB4MTJFOCwgMHgxMkYwLAotICAgICAgICAgICAgICAgIDB4MTMwMCwg
MHgxMzA4LCAweDEzMzgsIDB4MTM0OAotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvQWxw
aGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNIYWxlaGFtZVNvRXRBbHBoYWJldCk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFRpZ3JlOgotICAgICAg
ICBjYXNlIEV0aGlvcGljSGFsZWhhbWVUaWc6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBV
Q2hhciBldGhpb3BpY0hhbGVoYW1lVGlnQWxwaGFiZXRbMjddID0gewotICAgICAgICAgICAgICAg
IDB4MTIwMCwgMHgxMjA4LCAweDEyMTAsIDB4MTIxOCwgMHgxMjI4LCAweDEyMzAsIDB4MTIzOCwg
MHgxMjQwLCAweDEyNjAsCi0gICAgICAgICAgICAgICAgMHgxMjcwLCAweDEyNzgsIDB4MTI5MCwg
MHgxMkEwLCAweDEyQTgsIDB4MTJDOCwgMHgxMkQwLCAweDEyRDgsIDB4MTJFOCwKLSAgICAgICAg
ICAgICAgICAweDEyRjAsIDB4MTMwMCwgMHgxMzA4LCAweDEzMjAsIDB4MTMyOCwgMHgxMzM4LCAw
eDEzMzAsIDB4MTM0OCwgMHgxMzUwCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9BbHBo
YWJldGljKGJ1aWxkZXIsIHZhbHVlLCBldGhpb3BpY0hhbGVoYW1lVGlnQWxwaGFiZXQpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUaWdyaW55YUVyOgotICAg
ICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVUaUVyOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgVUNoYXIgZXRoaW9waWNIYWxlaGFtZVRpRXJBbHBoYWJldFszMV0gPSB7Ci0gICAgICAgICAg
ICAgICAgMHgxMjAwLCAweDEyMDgsIDB4MTIxMCwgMHgxMjE4LCAweDEyMjgsIDB4MTIzMCwgMHgx
MjM4LCAweDEyNDAsIDB4MTI1MCwKLSAgICAgICAgICAgICAgICAweDEyNjAsIDB4MTI3MCwgMHgx
Mjc4LCAweDEyOTAsIDB4MTI5OCwgMHgxMkEwLCAweDEyQTgsIDB4MTJCOCwgMHgxMkM4LAotICAg
ICAgICAgICAgICAgIDB4MTJEMCwgMHgxMkQ4LCAweDEyRTAsIDB4MTJFOCwgMHgxMkYwLCAweDEz
MDAsIDB4MTMwOCwgMHgxMzIwLCAweDEzMjgsCi0gICAgICAgICAgICAgICAgMHgxMzMwLCAweDEz
MzgsIDB4MTM0OCwgMHgxMzUwCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9BbHBoYWJl
dGljKGJ1aWxkZXIsIHZhbHVlLCBldGhpb3BpY0hhbGVoYW1lVGlFckFscGhhYmV0KTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVGlncmlueWFFckFiZWdlZGU6
Ci0gICAgICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlVGlFcjogewotICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IFVDaGFyIGV0aGlvcGljQWJlZ2VkZVRpRXJBbHBoYWJldFszMV0gPSB7Ci0gICAgICAg
ICAgICAgICAgMHgxMkEwLCAweDEyNjAsIDB4MTMwOCwgMHgxMkYwLCAweDEzMDAsIDB4MTIwMCwg
MHgxMkM4LCAweDEyRDgsIDB4MTJFMCwKLSAgICAgICAgICAgICAgICAweDEyMTAsIDB4MTMyMCwg
MHgxMzI4LCAweDEyRTgsIDB4MTJBOCwgMHgxMkI4LCAweDEyMDgsIDB4MTIxOCwgMHgxMjkwLAot
ICAgICAgICAgICAgICAgIDB4MTI5OCwgMHgxMkQwLCAweDEzNDgsIDB4MTMzOCwgMHgxMjQwLCAw
eDEyNTAsIDB4MTIyOCwgMHgxMjMwLCAweDEyMzgsCi0gICAgICAgICAgICAgICAgMHgxMjcwLCAw
eDEyNzgsIDB4MTMzMCwgMHgxMzUwCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9BbHBo
YWJldGljKGJ1aWxkZXIsIHZhbHVlLCBldGhpb3BpY0FiZWdlZGVUaUVyQWxwaGFiZXQpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUaWdyaW55YUV0OgotICAg
ICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVUaUV0OiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgVUNoYXIgZXRoaW9waWNIYWxlaGFtZVRpRXRBbHBoYWJldFszNF0gPSB7Ci0gICAgICAgICAg
ICAgICAgMHgxMjAwLCAweDEyMDgsIDB4MTIxMCwgMHgxMjE4LCAweDEyMjAsIDB4MTIyOCwgMHgx
MjMwLCAweDEyMzgsIDB4MTI0MCwKLSAgICAgICAgICAgICAgICAweDEyNTAsIDB4MTI2MCwgMHgx
MjcwLCAweDEyNzgsIDB4MTI4MCwgMHgxMjkwLCAweDEyOTgsIDB4MTJBMCwgMHgxMkE4LAotICAg
ICAgICAgICAgICAgIDB4MTJCOCwgMHgxMkM4LCAweDEyRDAsIDB4MTJEOCwgMHgxMkUwLCAweDEy
RTgsIDB4MTJGMCwgMHgxMzAwLCAweDEzMDgsCi0gICAgICAgICAgICAgICAgMHgxMzIwLCAweDEz
MjgsIDB4MTMzMCwgMHgxMzM4LCAweDEzNDAsIDB4MTM0OCwgMHgxMzUwCi0gICAgICAgICAgICB9
OwotICAgICAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBldGhpb3BpY0hhbGVo
YW1lVGlFdEFscGhhYmV0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2UgVGlncmlueWFFdEFiZWdlZGU6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlVGlF
dDogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGV0aGlvcGljQWJlZ2VkZVRpRXRB
bHBoYWJldFszNF0gPSB7Ci0gICAgICAgICAgICAgICAgMHgxMkEwLCAweDEyNjAsIDB4MTMwOCwg
MHgxMkYwLCAweDEzMDAsIDB4MTIwMCwgMHgxMkM4LCAweDEyRDgsIDB4MTJFMCwKLSAgICAgICAg
ICAgICAgICAweDEyMTAsIDB4MTMyMCwgMHgxMzI4LCAweDEyRTgsIDB4MTJBOCwgMHgxMkI4LCAw
eDEyMDgsIDB4MTIxOCwgMHgxMjkwLAotICAgICAgICAgICAgICAgIDB4MTI5OCwgMHgxMjIwLCAw
eDEyRDAsIDB4MTM0OCwgMHgxMzM4LCAweDEyNDAsIDB4MTI1MCwgMHgxMjI4LCAweDEyMzAsCi0g
ICAgICAgICAgICAgICAgMHgxMjM4LCAweDEyNzAsIDB4MTI3OCwgMHgxMjgwLCAweDEzNDAsIDB4
MTMzMCwgMHgxMzUwCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9BbHBoYWJldGljKGJ1
aWxkZXIsIHZhbHVlLCBldGhpb3BpY0FiZWdlZGVUaUV0QWxwaGFiZXQpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBVcHBlckdyZWVrOiB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgVUNoYXIgdXBwZXJHcmVla0FscGhhYmV0WzI0XSA9IHsKLSAgICAgICAg
ICAgICAgICAweDAzOTEsIDB4MDM5MiwgMHgwMzkzLCAweDAzOTQsIDB4MDM5NSwgMHgwMzk2LCAw
eDAzOTcsIDB4MDM5OCwgMHgwMzk5LAotICAgICAgICAgICAgICAgIDB4MDM5QSwgMHgwMzlCLCAw
eDAzOUMsIDB4MDM5RCwgMHgwMzlFLCAweDAzOUYsIDB4MDNBMCwgMHgwM0ExLCAweDAzQTMsCi0g
ICAgICAgICAgICAgICAgMHgwM0E0LCAweDAzQTUsIDB4MDNBNiwgMHgwM0E3LCAweDAzQTgsIDB4
MDNBOQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2
YWx1ZSwgdXBwZXJHcmVla0FscGhhYmV0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgTG93ZXJOb3J3ZWdpYW46IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBMQ2hhciBsb3dlck5vcndlZ2lhbkFscGhhYmV0WzI5XSA9IHsKLSAgICAgICAgICAgICAgICAw
eDYxLCAweDYyLCAweDYzLCAweDY0LCAweDY1LCAweDY2LCAweDY3LCAweDY4LCAweDY5LAotICAg
ICAgICAgICAgICAgIDB4NkEsIDB4NkIsIDB4NkMsIDB4NkQsIDB4NkUsIDB4NkYsIDB4NzAsIDB4
NzEsIDB4NzIsCi0gICAgICAgICAgICAgICAgMHg3MywgMHg3NCwgMHg3NSwgMHg3NiwgMHg3Nywg
MHg3OCwgMHg3OSwgMHg3QSwgMHhFNiwKLSAgICAgICAgICAgICAgICAweEY4LCAweEU1Ci0gICAg
ICAgICAgICB9OwotICAgICAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBsb3dl
ck5vcndlZ2lhbkFscGhhYmV0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgVXBwZXJOb3J3ZWdpYW46IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBMQ2hh
ciB1cHBlck5vcndlZ2lhbkFscGhhYmV0WzI5XSA9IHsKLSAgICAgICAgICAgICAgICAweDQxLCAw
eDQyLCAweDQzLCAweDQ0LCAweDQ1LCAweDQ2LCAweDQ3LCAweDQ4LCAweDQ5LAotICAgICAgICAg
ICAgICAgIDB4NEEsIDB4NEIsIDB4NEMsIDB4NEQsIDB4NEUsIDB4NEYsIDB4NTAsIDB4NTEsIDB4
NTIsCi0gICAgICAgICAgICAgICAgMHg1MywgMHg1NCwgMHg1NSwgMHg1NiwgMHg1NywgMHg1OCwg
MHg1OSwgMHg1QSwgMHhDNiwKLSAgICAgICAgICAgICAgICAweEQ4LCAweEM1Ci0gICAgICAgICAg
ICB9OwotICAgICAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCB1cHBlck5vcndl
Z2lhbkFscGhhYmV0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgQ0pLSWRlb2dyYXBoaWM6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciB0cmFk
aXRpb25hbENoaW5lc2VJbmZvcm1hbFRhYmxlWzE2XSA9IHsKLSAgICAgICAgICAgICAgICAweDg0
MkMsIDB4NTEwNCwgMHg1MTQ2LAotICAgICAgICAgICAgICAgIDB4NTM0MSwgMHg3NjdFLCAweDUz
NDMsCi0gICAgICAgICAgICAgICAgMHg5NkY2LCAweDRFMDAsIDB4NEU4QywgMHg0RTA5LCAweDU2
REIsCi0gICAgICAgICAgICAgICAgMHg0RTk0LCAweDUxNkQsIDB4NEUwMywgMHg1MTZCLCAweDRF
NUQKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b0NKS0lkZW9ncmFwaGljKGJ1aWxkZXIs
IHZhbHVlLCB0cmFkaXRpb25hbENoaW5lc2VJbmZvcm1hbFRhYmxlKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckFscGhhOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJMYXRpbjogeworICAgICAgICBzdGF0aWMgY29uc3Qg
TENoYXIgbG93ZXJMYXRpbkFscGhhYmV0WzI2XSA9IHsKKyAgICAgICAgICAgICdhJywgJ2InLCAn
YycsICdkJywgJ2UnLCAnZicsICdnJywgJ2gnLCAnaScsICdqJywgJ2snLCAnbCcsICdtJywKKyAg
ICAgICAgICAgICduJywgJ28nLCAncCcsICdxJywgJ3InLCAncycsICd0JywgJ3UnLCAndicsICd3
JywgJ3gnLCAneScsICd6JworICAgICAgICB9OworICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRl
ciwgdmFsdWUsIGxvd2VyTGF0aW5BbHBoYWJldCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyQWxwaGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpVcHBlckxhdGluOiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBMQ2hhciB1cHBlckxhdGluQWxw
aGFiZXRbMjZdID0geworICAgICAgICAgICAgJ0EnLCAnQicsICdDJywgJ0QnLCAnRScsICdGJywg
J0cnLCAnSCcsICdJJywgJ0onLCAnSycsICdMJywgJ00nLAorICAgICAgICAgICAgJ04nLCAnTycs
ICdQJywgJ1EnLCAnUicsICdTJywgJ1QnLCAnVScsICdWJywgJ1cnLCAnWCcsICdZJywgJ1onCisg
ICAgICAgIH07CisgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgdXBwZXJMYXRp
bkFscGhhYmV0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6TG93ZXJHcmVlazogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgbG93ZXJHcmVla0Fs
cGhhYmV0WzI0XSA9IHsKKyAgICAgICAgICAgIDB4MDNCMSwgMHgwM0IyLCAweDAzQjMsIDB4MDNC
NCwgMHgwM0I1LCAweDAzQjYsIDB4MDNCNywgMHgwM0I4LAorICAgICAgICAgICAgMHgwM0I5LCAw
eDAzQkEsIDB4MDNCQiwgMHgwM0JDLCAweDAzQkQsIDB4MDNCRSwgMHgwM0JGLCAweDAzQzAsCisg
ICAgICAgICAgICAweDAzQzEsIDB4MDNDMywgMHgwM0M0LCAweDAzQzUsIDB4MDNDNiwgMHgwM0M3
LCAweDAzQzgsIDB4MDNDOQorICAgICAgICB9OworICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRl
ciwgdmFsdWUsIGxvd2VyR3JlZWtBbHBoYWJldCk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAot
ICAgICAgICBjYXNlIExvd2VyUm9tYW46Ci0gICAgICAgICAgICB0b1JvbWFuKGJ1aWxkZXIsIHZh
bHVlLCBmYWxzZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBVcHBlclJvbWFu
OgotICAgICAgICAgICAgdG9Sb21hbihidWlsZGVyLCB2YWx1ZSwgdHJ1ZSk7Ci0gICAgICAgICAg
ICBicmVhazsKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkhpcmFnYW5hOiB7CisgICAgICAgIC8v
IEZJWE1FOiBUaGlzIHRhYmxlIGNvbWVzIGZyb20gdGhlIENTUzMgZHJhZnQsIGFuZCBpcyBwcm9i
YWJseQorICAgICAgICAvLyBpbmNvcnJlY3QsIGdpdmVuIHRoZSBjb21tZW50cyBpbiB0aGF0IGRy
YWZ0LgorICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgaGlyYWdhbmFBbHBoYWJldFs0OF0gPSB7
CisgICAgICAgICAgICAweDMwNDIsIDB4MzA0NCwgMHgzMDQ2LCAweDMwNDgsIDB4MzA0QSwgMHgz
MDRCLCAweDMwNEQsIDB4MzA0RiwKKyAgICAgICAgICAgIDB4MzA1MSwgMHgzMDUzLCAweDMwNTUs
IDB4MzA1NywgMHgzMDU5LCAweDMwNUIsIDB4MzA1RCwgMHgzMDVGLAorICAgICAgICAgICAgMHgz
MDYxLCAweDMwNjQsIDB4MzA2NiwgMHgzMDY4LCAweDMwNkEsIDB4MzA2QiwgMHgzMDZDLCAweDMw
NkQsCisgICAgICAgICAgICAweDMwNkUsIDB4MzA2RiwgMHgzMDcyLCAweDMwNzUsIDB4MzA3OCwg
MHgzMDdCLCAweDMwN0UsIDB4MzA3RiwKKyAgICAgICAgICAgIDB4MzA4MCwgMHgzMDgxLCAweDMw
ODIsIDB4MzA4NCwgMHgzMDg2LCAweDMwODgsIDB4MzA4OSwgMHgzMDhBLAorICAgICAgICAgICAg
MHgzMDhCLCAweDMwOEMsIDB4MzA4RCwgMHgzMDhGLCAweDMwOTAsIDB4MzA5MSwgMHgzMDkyLCAw
eDMwOTMKKyAgICAgICAgfTsKKyAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBo
aXJhZ2FuYUFscGhhYmV0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6SGlyYWdhbmFJcm9oYTogeworICAgICAgICAvLyBGSVhNRTogVGhpcyB0YWJsZSBj
b21lcyBmcm9tIHRoZSBDU1MzIGRyYWZ0LCBhbmQgaXMgcHJvYmFibHkKKyAgICAgICAgLy8gaW5j
b3JyZWN0LCBnaXZlbiB0aGUgY29tbWVudHMgaW4gdGhhdCBkcmFmdC4KKyAgICAgICAgc3RhdGlj
IGNvbnN0IFVDaGFyIGhpcmFnYW5hSXJvaGFBbHBoYWJldFs0N10gPSB7CisgICAgICAgICAgICAw
eDMwNDQsIDB4MzA4RCwgMHgzMDZGLCAweDMwNkIsIDB4MzA3QiwgMHgzMDc4LCAweDMwNjgsIDB4
MzA2MSwKKyAgICAgICAgICAgIDB4MzA4QSwgMHgzMDZDLCAweDMwOEIsIDB4MzA5MiwgMHgzMDhG
LCAweDMwNEIsIDB4MzA4OCwgMHgzMDVGLAorICAgICAgICAgICAgMHgzMDhDLCAweDMwNUQsIDB4
MzA2NCwgMHgzMDZELCAweDMwNkEsIDB4MzA4OSwgMHgzMDgwLCAweDMwNDYsCisgICAgICAgICAg
ICAweDMwOTAsIDB4MzA2RSwgMHgzMDRBLCAweDMwNEYsIDB4MzA4NCwgMHgzMDdFLCAweDMwNTEs
IDB4MzA3NSwKKyAgICAgICAgICAgIDB4MzA1MywgMHgzMDQ4LCAweDMwNjYsIDB4MzA0MiwgMHgz
MDU1LCAweDMwNEQsIDB4MzA4NiwgMHgzMDgxLAorICAgICAgICAgICAgMHgzMDdGLCAweDMwNTcs
IDB4MzA5MSwgMHgzMDcyLCAweDMwODIsIDB4MzA1QiwgMHgzMDU5CisgICAgICAgIH07CisgICAg
ICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgaGlyYWdhbmFJcm9oYUFscGhhYmV0KTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6S2F0YWthbmE6
IHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgdGFibGUgY29tZXMgZnJvbSB0aGUgQ1NTMyBkcmFm
dCwgYW5kIGlzIHByb2JhYmx5CisgICAgICAgIC8vIGluY29ycmVjdCwgZ2l2ZW4gdGhlIGNvbW1l
bnRzIGluIHRoYXQgZHJhZnQuCisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBrYXRha2FuYUFs
cGhhYmV0WzQ4XSA9IHsKKyAgICAgICAgICAgIDB4MzBBMiwgMHgzMEE0LCAweDMwQTYsIDB4MzBB
OCwgMHgzMEFBLCAweDMwQUIsIDB4MzBBRCwgMHgzMEFGLAorICAgICAgICAgICAgMHgzMEIxLCAw
eDMwQjMsIDB4MzBCNSwgMHgzMEI3LCAweDMwQjksIDB4MzBCQiwgMHgzMEJELCAweDMwQkYsCisg
ICAgICAgICAgICAweDMwQzEsIDB4MzBDNCwgMHgzMEM2LCAweDMwQzgsIDB4MzBDQSwgMHgzMENC
LCAweDMwQ0MsIDB4MzBDRCwKKyAgICAgICAgICAgIDB4MzBDRSwgMHgzMENGLCAweDMwRDIsIDB4
MzBENSwgMHgzMEQ4LCAweDMwREIsIDB4MzBERSwgMHgzMERGLAorICAgICAgICAgICAgMHgzMEUw
LCAweDMwRTEsIDB4MzBFMiwgMHgzMEU0LCAweDMwRTYsIDB4MzBFOCwgMHgzMEU5LCAweDMwRUEs
CisgICAgICAgICAgICAweDMwRUIsIDB4MzBFQywgMHgzMEVELCAweDMwRUYsIDB4MzBGMCwgMHgz
MEYxLCAweDMwRjIsIDB4MzBGMworICAgICAgICB9OworICAgICAgICB0b0FscGhhYmV0aWMoYnVp
bGRlciwgdmFsdWUsIGthdGFrYW5hQWxwaGFiZXQpOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLYXRha2FuYUlyb2hhOiB7CisgICAgICAgIC8vIEZJWE1F
OiBUaGlzIHRhYmxlIGNvbWVzIGZyb20gdGhlIENTUzMgZHJhZnQsIGFuZCBpcyBwcm9iYWJseQor
ICAgICAgICAvLyBpbmNvcnJlY3QsIGdpdmVuIHRoZSBjb21tZW50cyBpbiB0aGF0IGRyYWZ0Lgor
ICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIga2F0YWthbmFJcm9oYUFscGhhYmV0WzQ3XSA9IHsK
KyAgICAgICAgICAgIDB4MzBBNCwgMHgzMEVELCAweDMwQ0YsIDB4MzBDQiwgMHgzMERCLCAweDMw
RDgsIDB4MzBDOCwgMHgzMEMxLAorICAgICAgICAgICAgMHgzMEVBLCAweDMwQ0MsIDB4MzBFQiwg
MHgzMEYyLCAweDMwRUYsIDB4MzBBQiwgMHgzMEU4LCAweDMwQkYsCisgICAgICAgICAgICAweDMw
RUMsIDB4MzBCRCwgMHgzMEM0LCAweDMwQ0QsIDB4MzBDQSwgMHgzMEU5LCAweDMwRTAsIDB4MzBB
NiwKKyAgICAgICAgICAgIDB4MzBGMCwgMHgzMENFLCAweDMwQUEsIDB4MzBBRiwgMHgzMEU0LCAw
eDMwREUsIDB4MzBCMSwgMHgzMEQ1LAorICAgICAgICAgICAgMHgzMEIzLCAweDMwQTgsIDB4MzBD
NiwgMHgzMEEyLCAweDMwQjUsIDB4MzBBRCwgMHgzMEU2LCAweDMwRTEsCisgICAgICAgICAgICAw
eDMwREYsIDB4MzBCNywgMHgzMEYxLCAweDMwRDIsIDB4MzBFMiwgMHgzMEJCLCAweDMwQjkKKyAg
ICAgICAgfTsKKyAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBrYXRha2FuYUly
b2hhQWxwaGFiZXQpOworICAgICAgICBicmVhazsKKyAgICB9CiAKLSAgICAgICAgY2FzZSBBcm1l
bmlhbjoKLSAgICAgICAgY2FzZSBVcHBlckFybWVuaWFuOgotICAgICAgICAgICAgLy8gQ1NTMyBz
YXlzICJhcm1lbmlhbiIgbWVhbnMgImxvd2VyLWFybWVuaWFuIi4KLSAgICAgICAgICAgIC8vIEJ1
dCB0aGUgQ1NTMi4xIHRlc3Qgc3VpdGUgY29udGFpbnMgdXBwZXJjYXNlIHRlc3QgcmVzdWx0cyBm
b3IgImFybWVuaWFuIiwKLSAgICAgICAgICAgIC8vIHNvIHdlJ2xsIG1hdGNoIHRoZSB0ZXN0IHN1
aXRlLgotICAgICAgICAgICAgdG9Bcm1lbmlhbihidWlsZGVyLCB2YWx1ZSwgdHJ1ZSk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBMb3dlckFybWVuaWFuOgotICAgICAgICAgICAg
dG9Bcm1lbmlhbihidWlsZGVyLCB2YWx1ZSwgZmFsc2UpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgR2VvcmdpYW46Ci0gICAgICAgICAgICB0b0dlb3JnaWFuKGJ1aWxkZXIsIHZh
bHVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEhlYnJldzoKLSAgICAgICAg
ICAgIHRvSGVicmV3KGJ1aWxkZXIsIHZhbHVlKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6QWZhcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGlj
SGFsZWhhbWVBYUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUFh
RXI6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGV0aGlvcGljSGFsZWhhbWVBYUVyQWxw
aGFiZXRbMThdID0geworICAgICAgICAgICAgMHgxMjAwLCAweDEyMDgsIDB4MTIxMCwgMHgxMjE4
LCAweDEyMjgsIDB4MTIzMCwgMHgxMjYwLCAweDEyNzAsIDB4MTI5MCwKKyAgICAgICAgICAgIDB4
MTJBMCwgMHgxMkE4LCAweDEyQzgsIDB4MTJEMCwgMHgxMkU4LCAweDEyRjAsIDB4MTMwOCwgMHgx
MzM4LCAweDEzNDgKKyAgICAgICAgfTsKKyAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZh
bHVlLCBldGhpb3BpY0hhbGVoYW1lQWFFckFscGhhYmV0KTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QW1oYXJpYzoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkV0aGlvcGljSGFsZWhhbWVBbUV0OiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBl
dGhpb3BpY0hhbGVoYW1lQW1FdEFscGhhYmV0WzMzXSA9IHsKKyAgICAgICAgICAgIDB4MTIwMCwg
MHgxMjA4LCAweDEyMTAsIDB4MTIxOCwgMHgxMjIwLCAweDEyMjgsIDB4MTIzMCwgMHgxMjM4LCAw
eDEyNDAsCisgICAgICAgICAgICAweDEyNjAsIDB4MTI3MCwgMHgxMjc4LCAweDEyODAsIDB4MTI5
MCwgMHgxMjk4LCAweDEyQTAsIDB4MTJBOCwgMHgxMkI4LAorICAgICAgICAgICAgMHgxMkM4LCAw
eDEyRDAsIDB4MTJEOCwgMHgxMkUwLCAweDEyRTgsIDB4MTJGMCwgMHgxMzAwLCAweDEzMDgsIDB4
MTMyMCwKKyAgICAgICAgICAgIDB4MTMyOCwgMHgxMzMwLCAweDEzMzgsIDB4MTM0MCwgMHgxMzQ4
LCAweDEzNTAKKyAgICAgICAgfTsKKyAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVl
LCBldGhpb3BpY0hhbGVoYW1lQW1FdEFscGhhYmV0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QW1oYXJpY0FiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGVBbUV0OiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hh
ciBldGhpb3BpY0FiZWdlZGVBbUV0QWxwaGFiZXRbMzNdID0geworICAgICAgICAgICAgMHgxMkEw
LCAweDEyNjAsIDB4MTMwOCwgMHgxMkYwLCAweDEzMDAsIDB4MTIwMCwgMHgxMkM4LCAweDEyRDgs
IDB4MTJFMCwKKyAgICAgICAgICAgIDB4MTIxMCwgMHgxMzIwLCAweDEzMjgsIDB4MTJFOCwgMHgx
MkE4LCAweDEyQjgsIDB4MTIwOCwgMHgxMjE4LCAweDEyOTAsCisgICAgICAgICAgICAweDEyOTgs
IDB4MTIyMCwgMHgxMkQwLCAweDEzNDgsIDB4MTMzOCwgMHgxMjQwLCAweDEyMjgsIDB4MTIzMCwg
MHgxMjM4LAorICAgICAgICAgICAgMHgxMjcwLCAweDEyNzgsIDB4MTI4MCwgMHgxMzQwLCAweDEz
MzAsIDB4MTM1MAorICAgICAgICB9OworICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFs
dWUsIGV0aGlvcGljQWJlZ2VkZUFtRXRBbHBoYWJldCk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNqa0VhcnRobHlCcmFuY2g6IHsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IFVDaGFyIGNqa0VhcnRobHlCcmFuY2hBbHBoYWJldFsxMl0gPSB7CisgICAgICAg
ICAgICAweDVCNTAsIDB4NEUxMSwgMHg1QkM1LCAweDUzNkYsIDB4OEZCMCwgMHg1REYzLCAweDUz
NDgsIDB4NjcyQSwgMHg3NTMzLAorICAgICAgICAgICAgMHg5MTQ5LCAweDYyMEMsIDB4NEVBNQor
ICAgICAgICB9OworICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGNqa0VhcnRo
bHlCcmFuY2hBbHBoYWJldCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OkNqa0hlYXZlbmx5U3RlbTogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIg
Y2prSGVhdmVubHlTdGVtQWxwaGFiZXRbMTBdID0geworICAgICAgICAgICAgMHg3NTMyLCAweDRF
NTksIDB4NEUxOSwgMHg0RTAxLCAweDYyMEEsIDB4NURGMSwgMHg1RTlBLCAweDhGOUIsIDB4NThF
QywKKyAgICAgICAgICAgIDB4NzY3OAorICAgICAgICB9OworICAgICAgICB0b0FscGhhYmV0aWMo
YnVpbGRlciwgdmFsdWUsIGNqa0hlYXZlbmx5U3RlbUFscGhhYmV0KTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWM6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lR2V6OiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBV
Q2hhciBldGhpb3BpY0hhbGVoYW1lR2V6QWxwaGFiZXRbMjZdID0geworICAgICAgICAgICAgMHgx
MjAwLCAweDEyMDgsIDB4MTIxMCwgMHgxMjE4LCAweDEyMjAsIDB4MTIyOCwgMHgxMjMwLCAweDEy
NDAsIDB4MTI2MCwKKyAgICAgICAgICAgIDB4MTI3MCwgMHgxMjgwLCAweDEyOTAsIDB4MTJBMCwg
MHgxMkE4LCAweDEyQzgsIDB4MTJEMCwgMHgxMkQ4LCAweDEyRTgsCisgICAgICAgICAgICAweDEy
RjAsIDB4MTMwOCwgMHgxMzIwLCAweDEzMzAsIDB4MTMzOCwgMHgxMzQwLCAweDEzNDgsIDB4MTM1
MAorICAgICAgICB9OworICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGV0aGlv
cGljSGFsZWhhbWVHZXpBbHBoYWJldCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
OkV0aGlvcGljQWJlZ2VkZUdlejogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZXRoaW9w
aWNBYmVnZWRlR2V6QWxwaGFiZXRbMjZdID0geworICAgICAgICAgICAgMHgxMkEwLCAweDEyNjAs
IDB4MTMwOCwgMHgxMkYwLCAweDEyMDAsIDB4MTJDOCwgMHgxMkQ4LCAweDEyMTAsIDB4MTMyMCwK
KyAgICAgICAgICAgIDB4MTJFOCwgMHgxMkE4LCAweDEyMDgsIDB4MTIxOCwgMHgxMjkwLCAweDEy
MjAsIDB4MTJEMCwgMHgxMzQ4LCAweDEzMzgsCisgICAgICAgICAgICAweDEyNDAsIDB4MTIyOCwg
MHgxMjMwLCAweDEyNzAsIDB4MTI4MCwgMHgxMzQwLCAweDEzMzAsIDB4MTM1MAorICAgICAgICB9
OworICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGV0aGlvcGljQWJlZ2VkZUdl
ekFscGhhYmV0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6SGFuZ3VsQ29uc29uYW50OiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBoYW5ndWxD
b25zb25hbnRBbHBoYWJldFsxNF0gPSB7CisgICAgICAgICAgICAweDMxMzEsIDB4MzEzNCwgMHgz
MTM3LCAweDMxMzksIDB4MzE0MSwgMHgzMTQyLCAweDMxNDUsIDB4MzE0NywgMHgzMTQ4LAorICAg
ICAgICAgICAgMHgzMTRBLCAweDMxNEIsIDB4MzE0QywgMHgzMTRELCAweDMxNEUKKyAgICAgICAg
fTsKKyAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBoYW5ndWxDb25zb25hbnRB
bHBoYWJldCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
Okhhbmd1bDogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgaGFuZ3VsQWxwaGFiZXRbMTRd
ID0geworICAgICAgICAgICAgMHhBQzAwLCAweEIwOTgsIDB4QjJFNCwgMHhCNzdDLCAweEI5Qzgs
IDB4QkMxNCwgMHhDMEFDLCAweEM1NDQsIDB4Qzc5MCwKKyAgICAgICAgICAgIDB4Q0MyOCwgMHhD
RTc0LCAweEQwQzAsIDB4RDMwQywgMHhENTU4CisgICAgICAgIH07CisgICAgICAgIHRvQWxwaGFi
ZXRpYyhidWlsZGVyLCB2YWx1ZSwgaGFuZ3VsQWxwaGFiZXQpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpPcm9tbzoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkV0aGlvcGljSGFsZWhhbWVPbUV0OiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBl
dGhpb3BpY0hhbGVoYW1lT21FdEFscGhhYmV0WzI1XSA9IHsKKyAgICAgICAgICAgIDB4MTIwMCwg
MHgxMjA4LCAweDEyMTgsIDB4MTIyOCwgMHgxMjMwLCAweDEyMzgsIDB4MTI0MCwgMHgxMjYwLCAw
eDEyNzAsCisgICAgICAgICAgICAweDEyNzgsIDB4MTI5MCwgMHgxMjk4LCAweDEyQTAsIDB4MTJB
OCwgMHgxMkM4LCAweDEyRTgsIDB4MTJGMCwgMHgxMkY4LAorICAgICAgICAgICAgMHgxMzAwLCAw
eDEzMDgsIDB4MTMyMCwgMHgxMzI4LCAweDEzMzgsIDB4MTMzMCwgMHgxMzQ4CisgICAgICAgIH07
CisgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNIYWxlaGFtZU9t
RXRBbHBoYWJldCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OlNpZGFtYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVTaWRF
dDogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZXRoaW9waWNIYWxlaGFtZVNpZEV0QWxw
aGFiZXRbMjZdID0geworICAgICAgICAgICAgMHgxMjAwLCAweDEyMDgsIDB4MTIxMCwgMHgxMjE4
LCAweDEyMjgsIDB4MTIzMCwgMHgxMjM4LCAweDEyNDAsIDB4MTI2MCwKKyAgICAgICAgICAgIDB4
MTI3MCwgMHgxMjc4LCAweDEyOTAsIDB4MTI5OCwgMHgxMkEwLCAweDEyQTgsIDB4MTJDOCwgMHgx
MkU4LCAweDEyRjAsCisgICAgICAgICAgICAweDEyRjgsIDB4MTMwMCwgMHgxMzA4LCAweDEzMjAs
IDB4MTMyOCwgMHgxMzM4LCAweDEzMzAsIDB4MTM0OAorICAgICAgICB9OworICAgICAgICB0b0Fs
cGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGV0aGlvcGljSGFsZWhhbWVTaWRFdEFscGhhYmV0KTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6U29tYWxpOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVNvRXQ6IHsKKyAgICAgICAg
c3RhdGljIGNvbnN0IFVDaGFyIGV0aGlvcGljSGFsZWhhbWVTb0V0QWxwaGFiZXRbMjJdID0gewor
ICAgICAgICAgICAgMHgxMjAwLCAweDEyMDgsIDB4MTIxMCwgMHgxMjE4LCAweDEyMjgsIDB4MTIz
MCwgMHgxMjM4LCAweDEyNDAsIDB4MTI2MCwKKyAgICAgICAgICAgIDB4MTI3MCwgMHgxMjkwLCAw
eDEyQTAsIDB4MTJBOCwgMHgxMkI4LCAweDEyQzgsIDB4MTJEMCwgMHgxMkU4LCAweDEyRjAsCisg
ICAgICAgICAgICAweDEzMDAsIDB4MTMwOCwgMHgxMzM4LCAweDEzNDgKKyAgICAgICAgfTsKKyAg
ICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBldGhpb3BpY0hhbGVoYW1lU29FdEFs
cGhhYmV0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
VGlncmU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lVGlnOiB7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBldGhpb3BpY0hhbGVoYW1lVGlnQWxwaGFiZXRbMjdd
ID0geworICAgICAgICAgICAgMHgxMjAwLCAweDEyMDgsIDB4MTIxMCwgMHgxMjE4LCAweDEyMjgs
IDB4MTIzMCwgMHgxMjM4LCAweDEyNDAsIDB4MTI2MCwKKyAgICAgICAgICAgIDB4MTI3MCwgMHgx
Mjc4LCAweDEyOTAsIDB4MTJBMCwgMHgxMkE4LCAweDEyQzgsIDB4MTJEMCwgMHgxMkQ4LCAweDEy
RTgsCisgICAgICAgICAgICAweDEyRjAsIDB4MTMwMCwgMHgxMzA4LCAweDEzMjAsIDB4MTMyOCwg
MHgxMzM4LCAweDEzMzAsIDB4MTM0OCwgMHgxMzUwCisgICAgICAgIH07CisgICAgICAgIHRvQWxw
aGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNIYWxlaGFtZVRpZ0FscGhhYmV0KTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmlueWFFcjoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVUaUVyOiB7CisgICAgICAg
IHN0YXRpYyBjb25zdCBVQ2hhciBldGhpb3BpY0hhbGVoYW1lVGlFckFscGhhYmV0WzMxXSA9IHsK
KyAgICAgICAgICAgIDB4MTIwMCwgMHgxMjA4LCAweDEyMTAsIDB4MTIxOCwgMHgxMjI4LCAweDEy
MzAsIDB4MTIzOCwgMHgxMjQwLCAweDEyNTAsCisgICAgICAgICAgICAweDEyNjAsIDB4MTI3MCwg
MHgxMjc4LCAweDEyOTAsIDB4MTI5OCwgMHgxMkEwLCAweDEyQTgsIDB4MTJCOCwgMHgxMkM4LAor
ICAgICAgICAgICAgMHgxMkQwLCAweDEyRDgsIDB4MTJFMCwgMHgxMkU4LCAweDEyRjAsIDB4MTMw
MCwgMHgxMzA4LCAweDEzMjAsIDB4MTMyOCwKKyAgICAgICAgICAgIDB4MTMzMCwgMHgxMzM4LCAw
eDEzNDgsIDB4MTM1MAorICAgICAgICB9OworICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwg
dmFsdWUsIGV0aGlvcGljSGFsZWhhbWVUaUVyQWxwaGFiZXQpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55YUVyQWJlZ2VkZToKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZVRpRXI6IHsKKyAgICAgICAgc3RhdGljIGNv
bnN0IFVDaGFyIGV0aGlvcGljQWJlZ2VkZVRpRXJBbHBoYWJldFszMV0gPSB7CisgICAgICAgICAg
ICAweDEyQTAsIDB4MTI2MCwgMHgxMzA4LCAweDEyRjAsIDB4MTMwMCwgMHgxMjAwLCAweDEyQzgs
IDB4MTJEOCwgMHgxMkUwLAorICAgICAgICAgICAgMHgxMjEwLCAweDEzMjAsIDB4MTMyOCwgMHgx
MkU4LCAweDEyQTgsIDB4MTJCOCwgMHgxMjA4LCAweDEyMTgsIDB4MTI5MCwKKyAgICAgICAgICAg
IDB4MTI5OCwgMHgxMkQwLCAweDEzNDgsIDB4MTMzOCwgMHgxMjQwLCAweDEyNTAsIDB4MTIyOCwg
MHgxMjMwLCAweDEyMzgsCisgICAgICAgICAgICAweDEyNzAsIDB4MTI3OCwgMHgxMzMwLCAweDEz
NTAKKyAgICAgICAgfTsKKyAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBldGhp
b3BpY0FiZWdlZGVUaUVyQWxwaGFiZXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55YUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRo
aW9waWNIYWxlaGFtZVRpRXQ6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGV0aGlvcGlj
SGFsZWhhbWVUaUV0QWxwaGFiZXRbMzRdID0geworICAgICAgICAgICAgMHgxMjAwLCAweDEyMDgs
IDB4MTIxMCwgMHgxMjE4LCAweDEyMjAsIDB4MTIyOCwgMHgxMjMwLCAweDEyMzgsIDB4MTI0MCwK
KyAgICAgICAgICAgIDB4MTI1MCwgMHgxMjYwLCAweDEyNzAsIDB4MTI3OCwgMHgxMjgwLCAweDEy
OTAsIDB4MTI5OCwgMHgxMkEwLCAweDEyQTgsCisgICAgICAgICAgICAweDEyQjgsIDB4MTJDOCwg
MHgxMkQwLCAweDEyRDgsIDB4MTJFMCwgMHgxMkU4LCAweDEyRjAsIDB4MTMwMCwgMHgxMzA4LAor
ICAgICAgICAgICAgMHgxMzIwLCAweDEzMjgsIDB4MTMzMCwgMHgxMzM4LCAweDEzNDAsIDB4MTM0
OCwgMHgxMzUwCisgICAgICAgIH07CisgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1
ZSwgZXRoaW9waWNIYWxlaGFtZVRpRXRBbHBoYWJldCk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXRBYmVnZWRlOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlVGlFdDogeworICAgICAgICBzdGF0aWMgY29uc3Qg
VUNoYXIgZXRoaW9waWNBYmVnZWRlVGlFdEFscGhhYmV0WzM0XSA9IHsKKyAgICAgICAgICAgIDB4
MTJBMCwgMHgxMjYwLCAweDEzMDgsIDB4MTJGMCwgMHgxMzAwLCAweDEyMDAsIDB4MTJDOCwgMHgx
MkQ4LCAweDEyRTAsCisgICAgICAgICAgICAweDEyMTAsIDB4MTMyMCwgMHgxMzI4LCAweDEyRTgs
IDB4MTJBOCwgMHgxMkI4LCAweDEyMDgsIDB4MTIxOCwgMHgxMjkwLAorICAgICAgICAgICAgMHgx
Mjk4LCAweDEyMjAsIDB4MTJEMCwgMHgxMzQ4LCAweDEzMzgsIDB4MTI0MCwgMHgxMjUwLCAweDEy
MjgsIDB4MTIzMCwKKyAgICAgICAgICAgIDB4MTIzOCwgMHgxMjcwLCAweDEyNzgsIDB4MTI4MCwg
MHgxMzQwLCAweDEzMzAsIDB4MTM1MAorICAgICAgICB9OworICAgICAgICB0b0FscGhhYmV0aWMo
YnVpbGRlciwgdmFsdWUsIGV0aGlvcGljQWJlZ2VkZVRpRXRBbHBoYWJldCk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyR3JlZWs6IHsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IFVDaGFyIHVwcGVyR3JlZWtBbHBoYWJldFsyNF0gPSB7CisgICAgICAg
ICAgICAweDAzOTEsIDB4MDM5MiwgMHgwMzkzLCAweDAzOTQsIDB4MDM5NSwgMHgwMzk2LCAweDAz
OTcsIDB4MDM5OCwgMHgwMzk5LAorICAgICAgICAgICAgMHgwMzlBLCAweDAzOUIsIDB4MDM5Qywg
MHgwMzlELCAweDAzOUUsIDB4MDM5RiwgMHgwM0EwLCAweDAzQTEsIDB4MDNBMywKKyAgICAgICAg
ICAgIDB4MDNBNCwgMHgwM0E1LCAweDAzQTYsIDB4MDNBNywgMHgwM0E4LCAweDAzQTkKKyAgICAg
ICAgfTsKKyAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCB1cHBlckdyZWVrQWxw
aGFiZXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpM
b3dlck5vcndlZ2lhbjogeworICAgICAgICBzdGF0aWMgY29uc3QgTENoYXIgbG93ZXJOb3J3ZWdp
YW5BbHBoYWJldFsyOV0gPSB7CisgICAgICAgICAgICAweDYxLCAweDYyLCAweDYzLCAweDY0LCAw
eDY1LCAweDY2LCAweDY3LCAweDY4LCAweDY5LAorICAgICAgICAgICAgMHg2QSwgMHg2QiwgMHg2
QywgMHg2RCwgMHg2RSwgMHg2RiwgMHg3MCwgMHg3MSwgMHg3MiwKKyAgICAgICAgICAgIDB4NzMs
IDB4NzQsIDB4NzUsIDB4NzYsIDB4NzcsIDB4NzgsIDB4NzksIDB4N0EsIDB4RTYsCisgICAgICAg
ICAgICAweEY4LCAweEU1CisgICAgICAgIH07CisgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVy
LCB2YWx1ZSwgbG93ZXJOb3J3ZWdpYW5BbHBoYWJldCk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyTm9yd2VnaWFuOiB7CisgICAgICAgIHN0YXRp
YyBjb25zdCBMQ2hhciB1cHBlck5vcndlZ2lhbkFscGhhYmV0WzI5XSA9IHsKKyAgICAgICAgICAg
IDB4NDEsIDB4NDIsIDB4NDMsIDB4NDQsIDB4NDUsIDB4NDYsIDB4NDcsIDB4NDgsIDB4NDksCisg
ICAgICAgICAgICAweDRBLCAweDRCLCAweDRDLCAweDRELCAweDRFLCAweDRGLCAweDUwLCAweDUx
LCAweDUyLAorICAgICAgICAgICAgMHg1MywgMHg1NCwgMHg1NSwgMHg1NiwgMHg1NywgMHg1OCwg
MHg1OSwgMHg1QSwgMHhDNiwKKyAgICAgICAgICAgIDB4RDgsIDB4QzUKKyAgICAgICAgfTsKKyAg
ICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCB1cHBlck5vcndlZ2lhbkFscGhhYmV0
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q0pLSWRl
b2dyYXBoaWM6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIHRyYWRpdGlvbmFsQ2hpbmVz
ZUluZm9ybWFsVGFibGVbMTZdID0geworICAgICAgICAgICAgMHg4NDJDLCAweDUxMDQsIDB4NTE0
NiwKKyAgICAgICAgICAgIDB4NTM0MSwgMHg3NjdFLCAweDUzNDMsCisgICAgICAgICAgICAweDk2
RjYsIDB4NEUwMCwgMHg0RThDLCAweDRFMDksIDB4NTZEQiwKKyAgICAgICAgICAgIDB4NEU5NCwg
MHg1MTZELCAweDRFMDMsIDB4NTE2QiwgMHg0RTVECisgICAgICAgIH07CisgICAgICAgIHRvQ0pL
SWRlb2dyYXBoaWMoYnVpbGRlciwgdmFsdWUsIHRyYWRpdGlvbmFsQ2hpbmVzZUluZm9ybWFsVGFi
bGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxv
d2VyUm9tYW46CisgICAgICAgIHRvUm9tYW4oYnVpbGRlciwgdmFsdWUsIGZhbHNlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlclJvbWFuOgorICAgICAgICB0
b1JvbWFuKGJ1aWxkZXIsIHZhbHVlLCB0cnVlKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OkFybWVuaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJB
cm1lbmlhbjoKKyAgICAgICAgLy8gQ1NTMyBzYXlzICJhcm1lbmlhbiIgbWVhbnMgImxvd2VyLWFy
bWVuaWFuIi4KKyAgICAgICAgLy8gQnV0IHRoZSBDU1MyLjEgdGVzdCBzdWl0ZSBjb250YWlucyB1
cHBlcmNhc2UgdGVzdCByZXN1bHRzIGZvciAiYXJtZW5pYW4iLAorICAgICAgICAvLyBzbyB3ZSds
bCBtYXRjaCB0aGUgdGVzdCBzdWl0ZS4KKyAgICAgICAgdG9Bcm1lbmlhbihidWlsZGVyLCB2YWx1
ZSwgdHJ1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJB
cm1lbmlhbjoKKyAgICAgICAgdG9Bcm1lbmlhbihidWlsZGVyLCB2YWx1ZSwgZmFsc2UpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okdlb3JnaWFuOgorICAgICAgICB0
b0dlb3JnaWFuKGJ1aWxkZXIsIHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpIZWJyZXc6CisgICAgICAgIHRvSGVicmV3KGJ1aWxkZXIsIHZhbHVlKTsKKyAg
ICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAg
LTExODYsNyArMTE4Niw3IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQoUGFpbnRJbmZv
JiAKICAgICBpZiAocGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kKQogICAg
ICAgICByZXR1cm47CiAgICAgCi0gICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lC
TEUpCisgICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUp
CiAgICAgICAgIHJldHVybjsKIAogICAgIExheW91dFBvaW50IGJveE9yaWdpbihwYWludE9mZnNl
dCArIGxvY2F0aW9uKCkpOwpAQCAtMTIyNyw5OCArMTIyNyw5OCBAQCB2b2lkIFJlbmRlckxpc3RN
YXJrZXI6OnBhaW50KFBhaW50SW5mbyYgCiAgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3Mo
MS4wZik7CiAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoY29sb3IpOwogCi0gICAgRUxpc3RTdHls
ZVR5cGUgdHlwZSA9IHN0eWxlKCkubGlzdFN0eWxlVHlwZSgpOworICAgIExpc3RTdHlsZVR5cGUg
dHlwZSA9IHN0eWxlKCkubGlzdFN0eWxlVHlwZSgpOwogICAgIHN3aXRjaCAodHlwZSkgewotICAg
ICAgICBjYXNlIERpc2M6Ci0gICAgICAgICAgICBjb250ZXh0LmRyYXdFbGxpcHNlKG1hcmtlclJl
Y3QpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIENpcmNsZToKLSAgICAgICAg
ICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCk7Ci0gICAgICAgICAg
ICBjb250ZXh0LmRyYXdFbGxpcHNlKG1hcmtlclJlY3QpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBjYXNlIFNxdWFyZToKLSAgICAgICAgICAgIGNvbnRleHQuZHJhd1JlY3QobWFya2Vy
UmVjdCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgTm9uZUxpc3RTdHlsZToK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBBZmFyOgotICAgICAgICBjYXNlIEFt
aGFyaWM6Ci0gICAgICAgIGNhc2UgQW1oYXJpY0FiZWdlZGU6Ci0gICAgICAgIGNhc2UgQXJhYmlj
SW5kaWM6Ci0gICAgICAgIGNhc2UgQXJtZW5pYW46Ci0gICAgICAgIGNhc2UgQmluYXJ5TGlzdFN0
eWxlOgotICAgICAgICBjYXNlIEJlbmdhbGk6Ci0gICAgICAgIGNhc2UgQ2FtYm9kaWFuOgotICAg
ICAgICBjYXNlIENKS0lkZW9ncmFwaGljOgotICAgICAgICBjYXNlIENqa0VhcnRobHlCcmFuY2g6
Ci0gICAgICAgIGNhc2UgQ2prSGVhdmVubHlTdGVtOgotICAgICAgICBjYXNlIERlY2ltYWxMZWFk
aW5nWmVybzoKLSAgICAgICAgY2FzZSBEZWNpbWFsTGlzdFN0eWxlOgotICAgICAgICBjYXNlIERl
dmFuYWdhcmk6Ci0gICAgICAgIGNhc2UgRXRoaW9waWM6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNB
YmVnZWRlOgotICAgICAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZUFtRXQ6Ci0gICAgICAgIGNhc2Ug
RXRoaW9waWNBYmVnZWRlR2V6OgotICAgICAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZVRpRXI6Ci0g
ICAgICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlVGlFdDoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hh
bGVoYW1lQWFFcjoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lQWFFdDoKLSAgICAgICAg
Y2FzZSBFdGhpb3BpY0hhbGVoYW1lQW1FdDoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1l
R2V6OgotICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVPbUV0OgotICAgICAgICBjYXNlIEV0
aGlvcGljSGFsZWhhbWVTaWRFdDoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lU29FdDoK
LSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lVGlFcjoKLSAgICAgICAgY2FzZSBFdGhpb3Bp
Y0hhbGVoYW1lVGlFdDoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lVGlnOgotICAgICAg
ICBjYXNlIEdlb3JnaWFuOgotICAgICAgICBjYXNlIEd1amFyYXRpOgotICAgICAgICBjYXNlIEd1
cm11a2hpOgotICAgICAgICBjYXNlIEhhbmd1bDoKLSAgICAgICAgY2FzZSBIYW5ndWxDb25zb25h
bnQ6Ci0gICAgICAgIGNhc2UgSGVicmV3OgotICAgICAgICBjYXNlIEhpcmFnYW5hOgotICAgICAg
ICBjYXNlIEhpcmFnYW5hSXJvaGE6Ci0gICAgICAgIGNhc2UgS2FubmFkYToKLSAgICAgICAgY2Fz
ZSBLYXRha2FuYToKLSAgICAgICAgY2FzZSBLYXRha2FuYUlyb2hhOgotICAgICAgICBjYXNlIEto
bWVyOgotICAgICAgICBjYXNlIExhbzoKLSAgICAgICAgY2FzZSBMb3dlckFscGhhOgotICAgICAg
ICBjYXNlIExvd2VyQXJtZW5pYW46Ci0gICAgICAgIGNhc2UgTG93ZXJHcmVlazoKLSAgICAgICAg
Y2FzZSBMb3dlckhleGFkZWNpbWFsOgotICAgICAgICBjYXNlIExvd2VyTGF0aW46Ci0gICAgICAg
IGNhc2UgTG93ZXJOb3J3ZWdpYW46Ci0gICAgICAgIGNhc2UgTG93ZXJSb21hbjoKLSAgICAgICAg
Y2FzZSBNYWxheWFsYW06Ci0gICAgICAgIGNhc2UgTW9uZ29saWFuOgotICAgICAgICBjYXNlIE15
YW5tYXI6Ci0gICAgICAgIGNhc2UgT2N0YWw6Ci0gICAgICAgIGNhc2UgT3JpeWE6Ci0gICAgICAg
IGNhc2UgT3JvbW86Ci0gICAgICAgIGNhc2UgUGVyc2lhbjoKLSAgICAgICAgY2FzZSBTaWRhbWE6
Ci0gICAgICAgIGNhc2UgU29tYWxpOgotICAgICAgICBjYXNlIFRlbHVndToKLSAgICAgICAgY2Fz
ZSBUaGFpOgotICAgICAgICBjYXNlIFRpYmV0YW46Ci0gICAgICAgIGNhc2UgVGlncmU6Ci0gICAg
ICAgIGNhc2UgVGlncmlueWFFcjoKLSAgICAgICAgY2FzZSBUaWdyaW55YUVyQWJlZ2VkZToKLSAg
ICAgICAgY2FzZSBUaWdyaW55YUV0OgotICAgICAgICBjYXNlIFRpZ3JpbnlhRXRBYmVnZWRlOgot
ICAgICAgICBjYXNlIFVwcGVyQWxwaGE6Ci0gICAgICAgIGNhc2UgVXBwZXJBcm1lbmlhbjoKLSAg
ICAgICAgY2FzZSBVcHBlckdyZWVrOgotICAgICAgICBjYXNlIFVwcGVySGV4YWRlY2ltYWw6Ci0g
ICAgICAgIGNhc2UgVXBwZXJMYXRpbjoKLSAgICAgICAgY2FzZSBVcHBlck5vcndlZ2lhbjoKLSAg
ICAgICAgY2FzZSBVcHBlclJvbWFuOgotICAgICAgICBjYXNlIFVyZHU6Ci0gICAgICAgIGNhc2Ug
QXN0ZXJpc2tzOgotICAgICAgICBjYXNlIEZvb3Rub3RlczoKLSAgICAgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGlzYzoKKyAgICAgICAgY29udGV4dC5kcmF3RWxsaXBz
ZShtYXJrZXJSZWN0KTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
Q2lyY2xlOgorICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQp
OworICAgICAgICBjb250ZXh0LmRyYXdFbGxpcHNlKG1hcmtlclJlY3QpOworICAgICAgICByZXR1
cm47CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpTcXVhcmU6CisgICAgICAgIGNvbnRleHQuZHJh
d1JlY3QobWFya2VyUmVjdCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6Ok5vbmU6CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFmYXI6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBbWhhcmljOgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6QW1oYXJpY0FiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBcmFiaWNJbmRpYzoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFybWVuaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6QmluYXJ5OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QmVuZ2FsaToKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkNhbWJvZGlhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNKS0lkZW9n
cmFwaGljOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2prRWFydGhseUJyYW5jaDoKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OkNqa0hlYXZlbmx5U3RlbToKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkRlY2ltYWxMZWFkaW5nWmVybzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRlY2ltYWw6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEZXZhbmFnYXJpOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6RXRoaW9waWM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGU6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGVBbUV0OgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlR2V6OgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6RXRoaW9waWNBYmVnZWRlVGlFcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGlj
QWJlZ2VkZVRpRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lQWFF
cjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVBYUV0OgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUFtRXQ6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lR2V6OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRo
aW9waWNIYWxlaGFtZU9tRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVo
YW1lU2lkRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lU29FdDoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVUaUVyOgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVRpRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpFdGhpb3BpY0hhbGVoYW1lVGlnOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6R2Vvcmdp
YW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpHdWphcmF0aToKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6Okd1cm11a2hpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGFuZ3VsOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6SGFuZ3VsQ29uc29uYW50OgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6SGVicmV3OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGlyYWdhbmE6CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpIaXJhZ2FuYUlyb2hhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6S2Fu
bmFkYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkthdGFrYW5hOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6S2F0YWthbmFJcm9oYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OktobWVyOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TGFvOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93
ZXJBbHBoYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyQXJtZW5pYW46CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpMb3dlckdyZWVrOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93
ZXJIZXhhZGVjaW1hbDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyTGF0aW46CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlck5vcndlZ2lhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6Okxvd2VyUm9tYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpNYWxheWFsYW06CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpNb25nb2xpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpN
eWFubWFyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6T2N0YWw6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpPcml5YToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok9yb21vOgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6UGVyc2lhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlNpZGFtYToK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlNvbWFsaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
OlRlbHVndToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRoYWk6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpUaWJldGFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmU6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55YUVyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGln
cmlueWFFckFiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55YUV0OgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmlueWFFdEFiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpVcHBlckFscGhhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJBcm1lbmlh
bjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyR3JlZWs6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpVcHBlckhleGFkZWNpbWFsOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJM
YXRpbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyTm9yd2VnaWFuOgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6VXBwZXJSb21hbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVyZHU6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBc3Rlcmlza3M6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpGb290bm90ZXM6CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBpZiAobV90ZXh0Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTM0MCw3ICsxMzQwLDcgQEAgdm9pZCBSZW5k
ZXJMaXN0TWFya2VyOjpwYWludChQYWludEluZm8mIAogICAgIEZsb2F0UG9pbnQgdGV4dE9yaWdp
biA9IEZsb2F0UG9pbnQobWFya2VyUmVjdC54KCksIG1hcmtlclJlY3QueSgpICsgc3R5bGUoKS5m
b250TWV0cmljcygpLmFzY2VudCgpKTsKICAgICB0ZXh0T3JpZ2luID0gcm91bmRQb2ludFRvRGV2
aWNlUGl4ZWxzKExheW91dFBvaW50KHRleHRPcmlnaW4pLCBkb2N1bWVudCgpLmRldmljZVNjYWxl
RmFjdG9yKCksIHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKTsKIAotICAgIGlmICh0
eXBlID09IEFzdGVyaXNrcyB8fCB0eXBlID09IEZvb3Rub3RlcykKKyAgICBpZiAodHlwZSA9PSBM
aXN0U3R5bGVUeXBlOjpBc3Rlcmlza3MgfHwgdHlwZSA9PSBMaXN0U3R5bGVUeXBlOjpGb290bm90
ZXMpCiAgICAgICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwgdGV4dFJ1biwgdGV4dE9yaWdpbik7
CiAgICAgZWxzZSB7CiAgICAgICAgIGNvbnN0IFVDaGFyIHN1ZmZpeCA9IGxpc3RNYXJrZXJTdWZm
aXgodHlwZSwgbV9saXN0SXRlbS52YWx1ZSgpKTsKQEAgLTE0NDgsOTIgKzE0NDgsOTIgQEAgdm9p
ZCBSZW5kZXJMaXN0TWFya2VyOjp1cGRhdGVDb250ZW50KCkKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIEVMaXN0U3R5bGVUeXBlIHR5cGUgPSBzdHlsZSgpLmxpc3RTdHlsZVR5cGUoKTsK
KyAgICBMaXN0U3R5bGVUeXBlIHR5cGUgPSBzdHlsZSgpLmxpc3RTdHlsZVR5cGUoKTsKICAgICBz
d2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIE5vbmVMaXN0U3R5bGU6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpOb25lOgogICAgICAgICBicmVhazsKLSAgICBjYXNlIENpcmNsZToKLSAgICBjYXNl
IERpc2M6Ci0gICAgY2FzZSBTcXVhcmU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDaXJjbGU6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEaXNjOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
U3F1YXJlOgogICAgICAgICBtX3RleHQgPSBsaXN0TWFya2VyVGV4dCh0eXBlLCAwKTsgLy8gdmFs
dWUgaXMgaWdub3JlZCBmb3IgdGhlc2UgdHlwZXMKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBB
c3Rlcmlza3M6Ci0gICAgY2FzZSBGb290bm90ZXM6Ci0gICAgY2FzZSBBZmFyOgotICAgIGNhc2Ug
QW1oYXJpYzoKLSAgICBjYXNlIEFtaGFyaWNBYmVnZWRlOgotICAgIGNhc2UgQXJhYmljSW5kaWM6
Ci0gICAgY2FzZSBBcm1lbmlhbjoKLSAgICBjYXNlIEJpbmFyeUxpc3RTdHlsZToKLSAgICBjYXNl
IEJlbmdhbGk6Ci0gICAgY2FzZSBDYW1ib2RpYW46Ci0gICAgY2FzZSBDSktJZGVvZ3JhcGhpYzoK
LSAgICBjYXNlIENqa0VhcnRobHlCcmFuY2g6Ci0gICAgY2FzZSBDamtIZWF2ZW5seVN0ZW06Ci0g
ICAgY2FzZSBEZWNpbWFsTGVhZGluZ1plcm86Ci0gICAgY2FzZSBEZWNpbWFsTGlzdFN0eWxlOgot
ICAgIGNhc2UgRGV2YW5hZ2FyaToKLSAgICBjYXNlIEV0aGlvcGljOgotICAgIGNhc2UgRXRoaW9w
aWNBYmVnZWRlOgotICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlQW1FdDoKLSAgICBjYXNlIEV0aGlv
cGljQWJlZ2VkZUdlejoKLSAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZVRpRXI6Ci0gICAgY2FzZSBF
dGhpb3BpY0FiZWdlZGVUaUV0OgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUFhRXI6Ci0gICAg
Y2FzZSBFdGhpb3BpY0hhbGVoYW1lQWFFdDoKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVBbUV0
OgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUdlejoKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhh
bWVPbUV0OgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVNpZEV0OgotICAgIGNhc2UgRXRoaW9w
aWNIYWxlaGFtZVNvRXQ6Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lVGlFcjoKLSAgICBjYXNl
IEV0aGlvcGljSGFsZWhhbWVUaUV0OgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVRpZzoKLSAg
ICBjYXNlIEdlb3JnaWFuOgotICAgIGNhc2UgR3VqYXJhdGk6Ci0gICAgY2FzZSBHdXJtdWtoaToK
LSAgICBjYXNlIEhhbmd1bDoKLSAgICBjYXNlIEhhbmd1bENvbnNvbmFudDoKLSAgICBjYXNlIEhl
YnJldzoKLSAgICBjYXNlIEhpcmFnYW5hOgotICAgIGNhc2UgSGlyYWdhbmFJcm9oYToKLSAgICBj
YXNlIEthbm5hZGE6Ci0gICAgY2FzZSBLYXRha2FuYToKLSAgICBjYXNlIEthdGFrYW5hSXJvaGE6
Ci0gICAgY2FzZSBLaG1lcjoKLSAgICBjYXNlIExhbzoKLSAgICBjYXNlIExvd2VyQWxwaGE6Ci0g
ICAgY2FzZSBMb3dlckFybWVuaWFuOgotICAgIGNhc2UgTG93ZXJHcmVlazoKLSAgICBjYXNlIExv
d2VySGV4YWRlY2ltYWw6Ci0gICAgY2FzZSBMb3dlckxhdGluOgotICAgIGNhc2UgTG93ZXJOb3J3
ZWdpYW46Ci0gICAgY2FzZSBMb3dlclJvbWFuOgotICAgIGNhc2UgTWFsYXlhbGFtOgotICAgIGNh
c2UgTW9uZ29saWFuOgotICAgIGNhc2UgTXlhbm1hcjoKLSAgICBjYXNlIE9jdGFsOgotICAgIGNh
c2UgT3JpeWE6Ci0gICAgY2FzZSBPcm9tbzoKLSAgICBjYXNlIFBlcnNpYW46Ci0gICAgY2FzZSBT
aWRhbWE6Ci0gICAgY2FzZSBTb21hbGk6Ci0gICAgY2FzZSBUZWx1Z3U6Ci0gICAgY2FzZSBUaGFp
OgotICAgIGNhc2UgVGliZXRhbjoKLSAgICBjYXNlIFRpZ3JlOgotICAgIGNhc2UgVGlncmlueWFF
cjoKLSAgICBjYXNlIFRpZ3JpbnlhRXJBYmVnZWRlOgotICAgIGNhc2UgVGlncmlueWFFdDoKLSAg
ICBjYXNlIFRpZ3JpbnlhRXRBYmVnZWRlOgotICAgIGNhc2UgVXBwZXJBbHBoYToKLSAgICBjYXNl
IFVwcGVyQXJtZW5pYW46Ci0gICAgY2FzZSBVcHBlckdyZWVrOgotICAgIGNhc2UgVXBwZXJIZXhh
ZGVjaW1hbDoKLSAgICBjYXNlIFVwcGVyTGF0aW46Ci0gICAgY2FzZSBVcHBlck5vcndlZ2lhbjoK
LSAgICBjYXNlIFVwcGVyUm9tYW46Ci0gICAgY2FzZSBVcmR1OgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6QXN0ZXJpc2tzOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Rm9vdG5vdGVzOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6QWZhcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFtaGFy
aWM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBbWhhcmljQWJlZ2VkZToKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkFyYWJpY0luZGljOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QXJtZW5p
YW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpCaW5hcnk6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpCZW5nYWxpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2FtYm9kaWFuOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6Q0pLSWRlb2dyYXBoaWM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpDamtFYXJ0aGx5QnJhbmNoOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2prSGVhdmVubHlT
dGVtOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGVjaW1hbExlYWRpbmdaZXJvOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6RGVjaW1hbDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRldmFu
YWdhcmk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpYzoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlv
cGljQWJlZ2VkZUFtRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGVH
ZXo6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGVUaUVyOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlVGlFdDoKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVBYUVyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRo
aW9waWNIYWxlaGFtZUFhRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVo
YW1lQW1FdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVHZXo6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lT21FdDoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVTaWRFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkV0aGlvcGljSGFsZWhhbWVTb0V0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9w
aWNIYWxlaGFtZVRpRXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1l
VGlFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVUaWc6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpHZW9yZ2lhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okd1
amFyYXRpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6R3VybXVraGk6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpIYW5ndWw6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIYW5ndWxDb25zb25h
bnQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIZWJyZXc6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpIaXJhZ2FuYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkhpcmFnYW5hSXJvaGE6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLYW5uYWRhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
S2F0YWthbmE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLYXRha2FuYUlyb2hhOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6S2htZXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMYW86Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckFscGhhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6TG93ZXJBcm1lbmlhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyR3JlZWs6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckhleGFkZWNpbWFsOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6TG93ZXJMYXRpbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyTm9yd2Vn
aWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJSb21hbjoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6Ok1hbGF5YWxhbToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok1vbmdvbGlhbjoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok15YW5tYXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpPY3RhbDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok9yaXlhOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6T3JvbW86CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpQZXJzaWFuOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6U2lkYW1hOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6U29tYWxp
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGVsdWd1OgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6VGhhaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpYmV0YW46CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpUaWdyZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXI6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55YUVyQWJlZ2VkZToKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OlRpZ3JpbnlhRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55YUV0
QWJlZ2VkZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyQWxwaGE6CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpVcHBlckFybWVuaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBw
ZXJHcmVlazoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVySGV4YWRlY2ltYWw6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckxhdGluOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
VXBwZXJOb3J3ZWdpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlclJvbWFuOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6VXJkdToKICAgICAgICAgbV90ZXh0ID0gbGlzdE1hcmtlclRl
eHQodHlwZSwgbV9saXN0SXRlbS52YWx1ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAt
MTU1NSwxMDYgKzE1NTUsMTA2IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6Y29tcHV0ZVByZWZl
cnJlZEwKICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUo
KTsKIAogICAgIExheW91dFVuaXQgbG9naWNhbFdpZHRoID0gMDsKLSAgICBFTGlzdFN0eWxlVHlw
ZSB0eXBlID0gc3R5bGUoKS5saXN0U3R5bGVUeXBlKCk7CisgICAgTGlzdFN0eWxlVHlwZSB0eXBl
ID0gc3R5bGUoKS5saXN0U3R5bGVUeXBlKCk7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAg
IGNhc2UgTm9uZUxpc3RTdHlsZToKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEFz
dGVyaXNrczoKLSAgICAgICAgY2FzZSBGb290bm90ZXM6IHsKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6Ok5vbmU6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QXN0ZXJp
c2tzOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Rm9vdG5vdGVzOiB7CisgICAgICAgIFRleHRS
dW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4obV90ZXh0LCBzdHlsZSgpKTsK
KyAgICAgICAgbG9naWNhbFdpZHRoID0gZm9udC53aWR0aChydW4pOyAvLyBubyBzdWZmaXggZm9y
IHRoZXNlIHR5cGVzCisgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkNpcmNsZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRpc2M6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpTcXVhcmU6CisgICAgICAgIGxvZ2ljYWxXaWR0aCA9IChmb250LmZvbnRNZXRy
aWNzKCkuYXNjZW50KCkgKiAyIC8gMyArIDEpIC8gMiArIDI7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6QWZhcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFtaGFy
aWM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBbWhhcmljQWJlZ2VkZToKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkFyYWJpY0luZGljOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QXJtZW5p
YW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpCaW5hcnk6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpCZW5nYWxpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2FtYm9kaWFuOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6Q0pLSWRlb2dyYXBoaWM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpDamtFYXJ0aGx5QnJhbmNoOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2prSGVhdmVubHlT
dGVtOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGVjaW1hbExlYWRpbmdaZXJvOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6RGVjaW1hbDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRldmFu
YWdhcmk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpYzoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlv
cGljQWJlZ2VkZUFtRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGVH
ZXo6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGVUaUVyOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlVGlFdDoKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVBYUVyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRo
aW9waWNIYWxlaGFtZUFhRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVo
YW1lQW1FdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVHZXo6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lT21FdDoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVTaWRFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkV0aGlvcGljSGFsZWhhbWVTb0V0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9w
aWNIYWxlaGFtZVRpRXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1l
VGlFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVUaWc6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpHZW9yZ2lhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okd1
amFyYXRpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6R3VybXVraGk6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpIYW5ndWw6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIYW5ndWxDb25zb25h
bnQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIZWJyZXc6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpIaXJhZ2FuYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkhpcmFnYW5hSXJvaGE6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLYW5uYWRhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
S2F0YWthbmE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLYXRha2FuYUlyb2hhOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6S2htZXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMYW86Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckFscGhhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6TG93ZXJBcm1lbmlhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyR3JlZWs6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckhleGFkZWNpbWFsOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6TG93ZXJMYXRpbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyTm9yd2Vn
aWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJSb21hbjoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6Ok1hbGF5YWxhbToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok1vbmdvbGlhbjoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok15YW5tYXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpPY3RhbDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok9yaXlhOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6T3JvbW86CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpQZXJzaWFuOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6U2lkYW1hOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6U29tYWxp
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGVsdWd1OgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6VGhhaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpYmV0YW46CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpUaWdyZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXI6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55YUVyQWJlZ2VkZToKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OlRpZ3JpbnlhRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55YUV0
QWJlZ2VkZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyQWxwaGE6CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpVcHBlckFybWVuaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBw
ZXJHcmVlazoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVySGV4YWRlY2ltYWw6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckxhdGluOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
VXBwZXJOb3J3ZWdpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlclJvbWFuOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6VXJkdToKKyAgICAgICAgaWYgKG1fdGV4dC5pc0VtcHR5KCkp
CisgICAgICAgICAgICBsb2dpY2FsV2lkdGggPSAwOworICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4obV90ZXh0LCBz
dHlsZSgpKTsKLSAgICAgICAgICAgIGxvZ2ljYWxXaWR0aCA9IGZvbnQud2lkdGgocnVuKTsgLy8g
bm8gc3VmZml4IGZvciB0aGVzZSB0eXBlcworICAgICAgICAgICAgTGF5b3V0VW5pdCBpdGVtV2lk
dGggPSBmb250LndpZHRoKHJ1bik7CisgICAgICAgICAgICBVQ2hhciBzdWZmaXhTcGFjZVsyXSA9
IHsgbGlzdE1hcmtlclN1ZmZpeCh0eXBlLCBtX2xpc3RJdGVtLnZhbHVlKCkpLCAnICcgfTsKKyAg
ICAgICAgICAgIExheW91dFVuaXQgc3VmZml4U3BhY2VXaWR0aCA9IGZvbnQud2lkdGgoUmVuZGVy
QmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oc3VmZml4U3BhY2UsIDIsIHN0eWxlKCkpKTsKKyAgICAg
ICAgICAgIGxvZ2ljYWxXaWR0aCA9IGl0ZW1XaWR0aCArIHN1ZmZpeFNwYWNlV2lkdGg7CiAgICAg
ICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENpcmNsZToKLSAgICAgICAg
Y2FzZSBEaXNjOgotICAgICAgICBjYXNlIFNxdWFyZToKLSAgICAgICAgICAgIGxvZ2ljYWxXaWR0
aCA9IChmb250LmZvbnRNZXRyaWNzKCkuYXNjZW50KCkgKiAyIC8gMyArIDEpIC8gMiArIDI7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBZmFyOgotICAgICAgICBjYXNlIEFtaGFy
aWM6Ci0gICAgICAgIGNhc2UgQW1oYXJpY0FiZWdlZGU6Ci0gICAgICAgIGNhc2UgQXJhYmljSW5k
aWM6Ci0gICAgICAgIGNhc2UgQXJtZW5pYW46Ci0gICAgICAgIGNhc2UgQmluYXJ5TGlzdFN0eWxl
OgotICAgICAgICBjYXNlIEJlbmdhbGk6Ci0gICAgICAgIGNhc2UgQ2FtYm9kaWFuOgotICAgICAg
ICBjYXNlIENKS0lkZW9ncmFwaGljOgotICAgICAgICBjYXNlIENqa0VhcnRobHlCcmFuY2g6Ci0g
ICAgICAgIGNhc2UgQ2prSGVhdmVubHlTdGVtOgotICAgICAgICBjYXNlIERlY2ltYWxMZWFkaW5n
WmVybzoKLSAgICAgICAgY2FzZSBEZWNpbWFsTGlzdFN0eWxlOgotICAgICAgICBjYXNlIERldmFu
YWdhcmk6Ci0gICAgICAgIGNhc2UgRXRoaW9waWM6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNBYmVn
ZWRlOgotICAgICAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZUFtRXQ6Ci0gICAgICAgIGNhc2UgRXRo
aW9waWNBYmVnZWRlR2V6OgotICAgICAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZVRpRXI6Ci0gICAg
ICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlVGlFdDoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVo
YW1lQWFFcjoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lQWFFdDoKLSAgICAgICAgY2Fz
ZSBFdGhpb3BpY0hhbGVoYW1lQW1FdDoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lR2V6
OgotICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVPbUV0OgotICAgICAgICBjYXNlIEV0aGlv
cGljSGFsZWhhbWVTaWRFdDoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lU29FdDoKLSAg
ICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lVGlFcjoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hh
bGVoYW1lVGlFdDoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lVGlnOgotICAgICAgICBj
YXNlIEdlb3JnaWFuOgotICAgICAgICBjYXNlIEd1amFyYXRpOgotICAgICAgICBjYXNlIEd1cm11
a2hpOgotICAgICAgICBjYXNlIEhhbmd1bDoKLSAgICAgICAgY2FzZSBIYW5ndWxDb25zb25hbnQ6
Ci0gICAgICAgIGNhc2UgSGVicmV3OgotICAgICAgICBjYXNlIEhpcmFnYW5hOgotICAgICAgICBj
YXNlIEhpcmFnYW5hSXJvaGE6Ci0gICAgICAgIGNhc2UgS2FubmFkYToKLSAgICAgICAgY2FzZSBL
YXRha2FuYToKLSAgICAgICAgY2FzZSBLYXRha2FuYUlyb2hhOgotICAgICAgICBjYXNlIEtobWVy
OgotICAgICAgICBjYXNlIExhbzoKLSAgICAgICAgY2FzZSBMb3dlckFscGhhOgotICAgICAgICBj
YXNlIExvd2VyQXJtZW5pYW46Ci0gICAgICAgIGNhc2UgTG93ZXJHcmVlazoKLSAgICAgICAgY2Fz
ZSBMb3dlckhleGFkZWNpbWFsOgotICAgICAgICBjYXNlIExvd2VyTGF0aW46Ci0gICAgICAgIGNh
c2UgTG93ZXJOb3J3ZWdpYW46Ci0gICAgICAgIGNhc2UgTG93ZXJSb21hbjoKLSAgICAgICAgY2Fz
ZSBNYWxheWFsYW06Ci0gICAgICAgIGNhc2UgTW9uZ29saWFuOgotICAgICAgICBjYXNlIE15YW5t
YXI6Ci0gICAgICAgIGNhc2UgT2N0YWw6Ci0gICAgICAgIGNhc2UgT3JpeWE6Ci0gICAgICAgIGNh
c2UgT3JvbW86Ci0gICAgICAgIGNhc2UgUGVyc2lhbjoKLSAgICAgICAgY2FzZSBTaWRhbWE6Ci0g
ICAgICAgIGNhc2UgU29tYWxpOgotICAgICAgICBjYXNlIFRlbHVndToKLSAgICAgICAgY2FzZSBU
aGFpOgotICAgICAgICBjYXNlIFRpYmV0YW46Ci0gICAgICAgIGNhc2UgVGlncmU6Ci0gICAgICAg
IGNhc2UgVGlncmlueWFFcjoKLSAgICAgICAgY2FzZSBUaWdyaW55YUVyQWJlZ2VkZToKLSAgICAg
ICAgY2FzZSBUaWdyaW55YUV0OgotICAgICAgICBjYXNlIFRpZ3JpbnlhRXRBYmVnZWRlOgotICAg
ICAgICBjYXNlIFVwcGVyQWxwaGE6Ci0gICAgICAgIGNhc2UgVXBwZXJBcm1lbmlhbjoKLSAgICAg
ICAgY2FzZSBVcHBlckdyZWVrOgotICAgICAgICBjYXNlIFVwcGVySGV4YWRlY2ltYWw6Ci0gICAg
ICAgIGNhc2UgVXBwZXJMYXRpbjoKLSAgICAgICAgY2FzZSBVcHBlck5vcndlZ2lhbjoKLSAgICAg
ICAgY2FzZSBVcHBlclJvbWFuOgotICAgICAgICBjYXNlIFVyZHU6Ci0gICAgICAgICAgICBpZiAo
bV90ZXh0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBsb2dpY2FsV2lkdGggPSAwOwotICAg
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9j
azo6Y29uc3RydWN0VGV4dFJ1bihtX3RleHQsIHN0eWxlKCkpOwotICAgICAgICAgICAgICAgIExh
eW91dFVuaXQgaXRlbVdpZHRoID0gZm9udC53aWR0aChydW4pOwotICAgICAgICAgICAgICAgIFVD
aGFyIHN1ZmZpeFNwYWNlWzJdID0geyBsaXN0TWFya2VyU3VmZml4KHR5cGUsIG1fbGlzdEl0ZW0u
dmFsdWUoKSksICcgJyB9OwotICAgICAgICAgICAgICAgIExheW91dFVuaXQgc3VmZml4U3BhY2VX
aWR0aCA9IGZvbnQud2lkdGgoUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oc3VmZml4U3Bh
Y2UsIDIsIHN0eWxlKCkpKTsKLSAgICAgICAgICAgICAgICBsb2dpY2FsV2lkdGggPSBpdGVtV2lk
dGggKyBzdWZmaXhTcGFjZVdpZHRoOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRo
ID0gbG9naWNhbFdpZHRoOwpAQCAtMTY3Niw5ICsxNjc2LDkgQEAgdm9pZCBSZW5kZXJMaXN0TWFy
a2VyOjp1cGRhdGVNYXJnaW5zKCkKICAgICAgICAgaWYgKGlzSW1hZ2UoKSkKICAgICAgICAgICAg
IG1hcmdpbkVuZCA9IGNNYXJrZXJQYWRkaW5nOwogICAgICAgICBlbHNlIHN3aXRjaCAoc3R5bGUo
KS5saXN0U3R5bGVUeXBlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgRGlzYzoKLSAgICAgICAgICAg
IGNhc2UgQ2lyY2xlOgotICAgICAgICAgICAgY2FzZSBTcXVhcmU6CisgICAgICAgICAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OkRpc2M6CisgICAgICAgICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNp
cmNsZToKKyAgICAgICAgICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6U3F1YXJlOgogICAgICAgICAg
ICAgICAgIG1hcmdpblN0YXJ0ID0gLTE7CiAgICAgICAgICAgICAgICAgbWFyZ2luRW5kID0gZm9u
dE1ldHJpY3MuYXNjZW50KCkgLSBtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSArIDE7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CkBAIC0xNjkyLDE1ICsxNjkyLDE1IEBAIHZvaWQgUmVuZGVyTGlz
dE1hcmtlcjo6dXBkYXRlTWFyZ2lucygpCiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
ICAgICBpbnQgb2Zmc2V0ID0gZm9udE1ldHJpY3MuYXNjZW50KCkgKiAyIC8gMzsKICAgICAgICAg
ICAgICAgICBzd2l0Y2ggKHN0eWxlKCkubGlzdFN0eWxlVHlwZSgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGNhc2UgRGlzYzoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDaXJjbGU6Ci0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgU3F1YXJlOgotICAgICAgICAgICAgICAgICAgICAgICAgbWFy
Z2luU3RhcnQgPSAtb2Zmc2V0IC0gY01hcmtlclBhZGRpbmcgLSAxOwotICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgTm9uZUxpc3RTdHlsZToK
LSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luU3RhcnQgPSBtX3RleHQuaXNFbXB0
eSgpID8gTGF5b3V0VW5pdCgpIDogLW1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpIC0gb2Zmc2V0
IC8gMjsKKyAgICAgICAgICAgICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRpc2M6CisgICAgICAg
ICAgICAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDaXJjbGU6CisgICAgICAgICAgICAgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpTcXVhcmU6CisgICAgICAgICAgICAgICAgICAgIG1hcmdpblN0YXJ0
ID0gLW9mZnNldCAtIGNNYXJrZXJQYWRkaW5nIC0gMTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpOb25lOgorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgICAgICBtYXJnaW5TdGFydCA9IG1fdGV4dC5pc0VtcHR5KCkgPyBMYXlvdXRVbml0KCkgOiAt
bWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCkgLSBvZmZzZXQgLyAyOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1hcmdpbkVuZCA9IC1tYXJnaW5TdGFydCAt
IG1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpOwpAQCAtMTcxMCwxNSArMTcxMCwxNSBAQCB2b2lk
IFJlbmRlckxpc3RNYXJrZXI6OnVwZGF0ZU1hcmdpbnMoKQogICAgICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICAgICAgaW50IG9mZnNldCA9IGZvbnRNZXRyaWNzLmFzY2VudCgpICogMiAvIDM7
CiAgICAgICAgICAgICAgICAgc3dpdGNoIChzdHlsZSgpLmxpc3RTdHlsZVR5cGUoKSkgewotICAg
ICAgICAgICAgICAgICAgICBjYXNlIERpc2M6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ2ly
Y2xlOgotICAgICAgICAgICAgICAgICAgICBjYXNlIFNxdWFyZToKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG1hcmdpbkVuZCA9IG9mZnNldCArIGNNYXJrZXJQYWRkaW5nICsgMSAtIG1pblByZWZl
cnJlZExvZ2ljYWxXaWR0aCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgTm9uZUxpc3RTdHlsZToKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAg
ICAgICAgICAgbWFyZ2luRW5kID0gbV90ZXh0LmlzRW1wdHkoKSA/IDAgOiBvZmZzZXQgLyAyOwor
ICAgICAgICAgICAgICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGlzYzoKKyAgICAgICAgICAgICAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OkNpcmNsZToKKyAgICAgICAgICAgICAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OlNxdWFyZToKKyAgICAgICAgICAgICAgICAgICAgbWFyZ2luRW5kID0gb2Zmc2V0
ICsgY01hcmtlclBhZGRpbmcgKyAxIC0gbWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCk7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6Tm9uZToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICAgICAgbWFyZ2luRW5kID0gbV90ZXh0LmlzRW1wdHkoKSA/
IDAgOiBvZmZzZXQgLyAyOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIG1hcmdpblN0YXJ0ID0gLW1hcmdpbkVuZCAtIG1pblByZWZlcnJlZExvZ2ljYWxXaWR0
aCgpOwpAQCAtMTc0Niw3ICsxNzQ2LDcgQEAgaW50IFJlbmRlckxpc3RNYXJrZXI6OmJhc2VsaW5l
UG9zaXRpb24oRgogCiBTdHJpbmcgUmVuZGVyTGlzdE1hcmtlcjo6c3VmZml4KCkgY29uc3QKIHsK
LSAgICBFTGlzdFN0eWxlVHlwZSB0eXBlID0gc3R5bGUoKS5saXN0U3R5bGVUeXBlKCk7CisgICAg
TGlzdFN0eWxlVHlwZSB0eXBlID0gc3R5bGUoKS5saXN0U3R5bGVUeXBlKCk7CiAgICAgY29uc3Qg
VUNoYXIgc3VmZml4ID0gbGlzdE1hcmtlclN1ZmZpeCh0eXBlLCBtX2xpc3RJdGVtLnZhbHVlKCkp
OwogCiAgICAgaWYgKHN1ZmZpeCA9PSAnICcpCkBAIC0xNzY3LDcgKzE3NjcsNyBAQCBTdHJpbmcg
UmVuZGVyTGlzdE1hcmtlcjo6c3VmZml4KCkgY29uc3QKIAogYm9vbCBSZW5kZXJMaXN0TWFya2Vy
Ojppc0luc2lkZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbGlzdEl0ZW0ubm90SW5MaXN0KCkg
fHwgc3R5bGUoKS5saXN0U3R5bGVQb3NpdGlvbigpID09IElOU0lERTsKKyAgICByZXR1cm4gbV9s
aXN0SXRlbS5ub3RJbkxpc3QoKSB8fCBzdHlsZSgpLmxpc3RTdHlsZVBvc2l0aW9uKCkgPT0gTGlz
dFN0eWxlUG9zaXRpb246Okluc2lkZTsKIH0KIAogRmxvYXRSZWN0IFJlbmRlckxpc3RNYXJrZXI6
OmdldFJlbGF0aXZlTWFya2VyUmVjdCgpCkBAIC0xNzc2LDExMCArMTc3NiwxMTAgQEAgRmxvYXRS
ZWN0IFJlbmRlckxpc3RNYXJrZXI6OmdldFJlbGF0aXZlTQogICAgICAgICByZXR1cm4gRmxvYXRS
ZWN0KDAsIDAsIG1faW1hZ2UtPmltYWdlU2l6ZSh0aGlzLCBzdHlsZSgpLmVmZmVjdGl2ZVpvb20o
KSkud2lkdGgoKSwgbV9pbWFnZS0+aW1hZ2VTaXplKHRoaXMsIHN0eWxlKCkuZWZmZWN0aXZlWm9v
bSgpKS5oZWlnaHQoKSk7CiAgICAgCiAgICAgRmxvYXRSZWN0IHJlbGF0aXZlUmVjdDsKLSAgICBF
TGlzdFN0eWxlVHlwZSB0eXBlID0gc3R5bGUoKS5saXN0U3R5bGVUeXBlKCk7CisgICAgTGlzdFN0
eWxlVHlwZSB0eXBlID0gc3R5bGUoKS5saXN0U3R5bGVUeXBlKCk7CiAgICAgc3dpdGNoICh0eXBl
KSB7Ci0gICAgICAgIGNhc2UgQXN0ZXJpc2tzOgotICAgICAgICBjYXNlIEZvb3Rub3Rlczogewot
ICAgICAgICAgICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBzdHlsZSgpLmZvbnRDYXNjYWRl
KCk7Ci0gICAgICAgICAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0
UnVuKG1fdGV4dCwgc3R5bGUoKSk7Ci0gICAgICAgICAgICByZWxhdGl2ZVJlY3QgPSBGbG9hdFJl
Y3QoMCwgMCwgZm9udC53aWR0aChydW4pLCBmb250LmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCkpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBEaXNjOgotICAgICAg
ICBjYXNlIENpcmNsZToKLSAgICAgICAgY2FzZSBTcXVhcmU6IHsKLSAgICAgICAgICAgIC8vIEZJ
WE1FOiBBcmUgdGhlc2UgcGFydGljdWxhciByb3VuZGluZyBydWxlcyBuZWNlc3Nhcnk/Ci0gICAg
ICAgICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBzdHlsZSgpLmZvbnRNZXRy
aWNzKCk7Ci0gICAgICAgICAgICBpbnQgYXNjZW50ID0gZm9udE1ldHJpY3MuYXNjZW50KCk7Ci0g
ICAgICAgICAgICBpbnQgYnVsbGV0V2lkdGggPSAoYXNjZW50ICogMiAvIDMgKyAxKSAvIDI7Ci0g
ICAgICAgICAgICByZWxhdGl2ZVJlY3QgPSBGbG9hdFJlY3QoMSwgMyAqIChhc2NlbnQgLSBhc2Nl
bnQgKiAyIC8gMykgLyAyLCBidWxsZXRXaWR0aCwgYnVsbGV0V2lkdGgpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBOb25lTGlzdFN0eWxlOgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6QXN0ZXJpc2tzOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Rm9vdG5v
dGVzOiB7CisgICAgICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUoKS5mb250Q2Fz
Y2FkZSgpOworICAgICAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0
UnVuKG1fdGV4dCwgc3R5bGUoKSk7CisgICAgICAgIHJlbGF0aXZlUmVjdCA9IEZsb2F0UmVjdCgw
LCAwLCBmb250LndpZHRoKHJ1biksIGZvbnQuZm9udE1ldHJpY3MoKS5oZWlnaHQoKSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRpc2M6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpDaXJjbGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpTcXVhcmU6
IHsKKyAgICAgICAgLy8gRklYTUU6IEFyZSB0aGVzZSBwYXJ0aWN1bGFyIHJvdW5kaW5nIHJ1bGVz
IG5lY2Vzc2FyeT8KKyAgICAgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gc3R5
bGUoKS5mb250TWV0cmljcygpOworICAgICAgICBpbnQgYXNjZW50ID0gZm9udE1ldHJpY3MuYXNj
ZW50KCk7CisgICAgICAgIGludCBidWxsZXRXaWR0aCA9IChhc2NlbnQgKiAyIC8gMyArIDEpIC8g
MjsKKyAgICAgICAgcmVsYXRpdmVSZWN0ID0gRmxvYXRSZWN0KDEsIDMgKiAoYXNjZW50IC0gYXNj
ZW50ICogMiAvIDMpIC8gMiwgYnVsbGV0V2lkdGgsIGJ1bGxldFdpZHRoKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Tm9uZToKKyAgICAgICAgcmV0dXJu
IEZsb2F0UmVjdCgpOworICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QWZhcjoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkFtaGFyaWM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBbWhhcmljQWJl
Z2VkZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFyYWJpY0luZGljOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6QXJtZW5pYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpCaW5hcnk6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpCZW5nYWxpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
Q2FtYm9kaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q0pLSWRlb2dyYXBoaWM6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpDamtFYXJ0aGx5QnJhbmNoOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6Q2prSGVhdmVubHlTdGVtOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGVjaW1hbExl
YWRpbmdaZXJvOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGVjaW1hbDoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkRldmFuYWdhcmk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3Bp
YzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZToKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZUFtRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpFdGhpb3BpY0FiZWdlZGVHZXo6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0Fi
ZWdlZGVUaUVyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlVGlFdDoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVBYUVyOgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUFhRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpFdGhpb3BpY0hhbGVoYW1lQW1FdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlv
cGljSGFsZWhhbWVHZXo6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1l
T21FdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVTaWRFdDoKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVTb0V0OgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVRpRXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpFdGhpb3BpY0hhbGVoYW1lVGlFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGlj
SGFsZWhhbWVUaWc6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpHZW9yZ2lhbjoKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6Okd1amFyYXRpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6R3VybXVr
aGk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIYW5ndWw6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpIYW5ndWxDb25zb25hbnQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIZWJyZXc6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIaXJhZ2FuYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
OkhpcmFnYW5hSXJvaGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLYW5uYWRhOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6S2F0YWthbmE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLYXRh
a2FuYUlyb2hhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6S2htZXI6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpMYW86CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckFscGhhOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJBcm1lbmlhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6Okxvd2VyR3JlZWs6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckhleGFkZWNpbWFs
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJMYXRpbjoKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6Okxvd2VyTm9yd2VnaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJSb21h
bjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok1hbGF5YWxhbToKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6Ok1vbmdvbGlhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok15YW5tYXI6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpPY3RhbDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok9yaXlh
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6T3JvbW86CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpQZXJzaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6U2lkYW1hOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6U29tYWxpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGVsdWd1OgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6VGhhaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpYmV0
YW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyZToKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OlRpZ3JpbnlhRXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55YUVyQWJlZ2Vk
ZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXQ6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpUaWdyaW55YUV0QWJlZ2VkZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVy
QWxwaGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckFybWVuaWFuOgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6VXBwZXJHcmVlazoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVy
SGV4YWRlY2ltYWw6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckxhdGluOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJOb3J3ZWdpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpVcHBlclJvbWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXJkdToKKyAgICAgICAgaWYg
KG1fdGV4dC5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gRmxvYXRSZWN0KCk7Ci0gICAg
ICAgIGNhc2UgQWZhcjoKLSAgICAgICAgY2FzZSBBbWhhcmljOgotICAgICAgICBjYXNlIEFtaGFy
aWNBYmVnZWRlOgotICAgICAgICBjYXNlIEFyYWJpY0luZGljOgotICAgICAgICBjYXNlIEFybWVu
aWFuOgotICAgICAgICBjYXNlIEJpbmFyeUxpc3RTdHlsZToKLSAgICAgICAgY2FzZSBCZW5nYWxp
OgotICAgICAgICBjYXNlIENhbWJvZGlhbjoKLSAgICAgICAgY2FzZSBDSktJZGVvZ3JhcGhpYzoK
LSAgICAgICAgY2FzZSBDamtFYXJ0aGx5QnJhbmNoOgotICAgICAgICBjYXNlIENqa0hlYXZlbmx5
U3RlbToKLSAgICAgICAgY2FzZSBEZWNpbWFsTGVhZGluZ1plcm86Ci0gICAgICAgIGNhc2UgRGVj
aW1hbExpc3RTdHlsZToKLSAgICAgICAgY2FzZSBEZXZhbmFnYXJpOgotICAgICAgICBjYXNlIEV0
aGlvcGljOgotICAgICAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZToKLSAgICAgICAgY2FzZSBFdGhp
b3BpY0FiZWdlZGVBbUV0OgotICAgICAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZUdlejoKLSAgICAg
ICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVUaUVyOgotICAgICAgICBjYXNlIEV0aGlvcGljQWJlZ2Vk
ZVRpRXQ6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUFhRXI6Ci0gICAgICAgIGNhc2Ug
RXRoaW9waWNIYWxlaGFtZUFhRXQ6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUFtRXQ6
Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUdlejoKLSAgICAgICAgY2FzZSBFdGhpb3Bp
Y0hhbGVoYW1lT21FdDoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lU2lkRXQ6Ci0gICAg
ICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVNvRXQ6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxl
aGFtZVRpRXI6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVRpRXQ6Ci0gICAgICAgIGNh
c2UgRXRoaW9waWNIYWxlaGFtZVRpZzoKLSAgICAgICAgY2FzZSBHZW9yZ2lhbjoKLSAgICAgICAg
Y2FzZSBHdWphcmF0aToKLSAgICAgICAgY2FzZSBHdXJtdWtoaToKLSAgICAgICAgY2FzZSBIYW5n
dWw6Ci0gICAgICAgIGNhc2UgSGFuZ3VsQ29uc29uYW50OgotICAgICAgICBjYXNlIEhlYnJldzoK
LSAgICAgICAgY2FzZSBIaXJhZ2FuYToKLSAgICAgICAgY2FzZSBIaXJhZ2FuYUlyb2hhOgotICAg
ICAgICBjYXNlIEthbm5hZGE6Ci0gICAgICAgIGNhc2UgS2F0YWthbmE6Ci0gICAgICAgIGNhc2Ug
S2F0YWthbmFJcm9oYToKLSAgICAgICAgY2FzZSBLaG1lcjoKLSAgICAgICAgY2FzZSBMYW86Ci0g
ICAgICAgIGNhc2UgTG93ZXJBbHBoYToKLSAgICAgICAgY2FzZSBMb3dlckFybWVuaWFuOgotICAg
ICAgICBjYXNlIExvd2VyR3JlZWs6Ci0gICAgICAgIGNhc2UgTG93ZXJIZXhhZGVjaW1hbDoKLSAg
ICAgICAgY2FzZSBMb3dlckxhdGluOgotICAgICAgICBjYXNlIExvd2VyTm9yd2VnaWFuOgotICAg
ICAgICBjYXNlIExvd2VyUm9tYW46Ci0gICAgICAgIGNhc2UgTWFsYXlhbGFtOgotICAgICAgICBj
YXNlIE1vbmdvbGlhbjoKLSAgICAgICAgY2FzZSBNeWFubWFyOgotICAgICAgICBjYXNlIE9jdGFs
OgotICAgICAgICBjYXNlIE9yaXlhOgotICAgICAgICBjYXNlIE9yb21vOgotICAgICAgICBjYXNl
IFBlcnNpYW46Ci0gICAgICAgIGNhc2UgU2lkYW1hOgotICAgICAgICBjYXNlIFNvbWFsaToKLSAg
ICAgICAgY2FzZSBUZWx1Z3U6Ci0gICAgICAgIGNhc2UgVGhhaToKLSAgICAgICAgY2FzZSBUaWJl
dGFuOgotICAgICAgICBjYXNlIFRpZ3JlOgotICAgICAgICBjYXNlIFRpZ3JpbnlhRXI6Ci0gICAg
ICAgIGNhc2UgVGlncmlueWFFckFiZWdlZGU6Ci0gICAgICAgIGNhc2UgVGlncmlueWFFdDoKLSAg
ICAgICAgY2FzZSBUaWdyaW55YUV0QWJlZ2VkZToKLSAgICAgICAgY2FzZSBVcHBlckFscGhhOgot
ICAgICAgICBjYXNlIFVwcGVyQXJtZW5pYW46Ci0gICAgICAgIGNhc2UgVXBwZXJHcmVlazoKLSAg
ICAgICAgY2FzZSBVcHBlckhleGFkZWNpbWFsOgotICAgICAgICBjYXNlIFVwcGVyTGF0aW46Ci0g
ICAgICAgIGNhc2UgVXBwZXJOb3J3ZWdpYW46Ci0gICAgICAgIGNhc2UgVXBwZXJSb21hbjoKLSAg
ICAgICAgY2FzZSBVcmR1OgotICAgICAgICAgICAgaWYgKG1fdGV4dC5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOwotICAgICAgICAgICAgY29uc3QgRm9udENh
c2NhZGUmIGZvbnQgPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCk7Ci0gICAgICAgICAgICBUZXh0UnVu
IHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKG1fdGV4dCwgc3R5bGUoKSk7Ci0g
ICAgICAgICAgICBmbG9hdCBpdGVtV2lkdGggPSBmb250LndpZHRoKHJ1bik7Ci0gICAgICAgICAg
ICBVQ2hhciBzdWZmaXhTcGFjZVsyXSA9IHsgbGlzdE1hcmtlclN1ZmZpeCh0eXBlLCBtX2xpc3RJ
dGVtLnZhbHVlKCkpLCAnICcgfTsKLSAgICAgICAgICAgIGZsb2F0IHN1ZmZpeFNwYWNlV2lkdGgg
PSBmb250LndpZHRoKFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHN1ZmZpeFNwYWNlLCAy
LCBzdHlsZSgpKSk7Ci0gICAgICAgICAgICByZWxhdGl2ZVJlY3QgPSBGbG9hdFJlY3QoMCwgMCwg
aXRlbVdpZHRoICsgc3VmZml4U3BhY2VXaWR0aCwgZm9udC5mb250TWV0cmljcygpLmhlaWdodCgp
KTsKKyAgICAgICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBzdHlsZSgpLmZvbnRDYXNjYWRl
KCk7CisgICAgICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4o
bV90ZXh0LCBzdHlsZSgpKTsKKyAgICAgICAgZmxvYXQgaXRlbVdpZHRoID0gZm9udC53aWR0aChy
dW4pOworICAgICAgICBVQ2hhciBzdWZmaXhTcGFjZVsyXSA9IHsgbGlzdE1hcmtlclN1ZmZpeCh0
eXBlLCBtX2xpc3RJdGVtLnZhbHVlKCkpLCAnICcgfTsKKyAgICAgICAgZmxvYXQgc3VmZml4U3Bh
Y2VXaWR0aCA9IGZvbnQud2lkdGgoUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oc3VmZml4
U3BhY2UsIDIsIHN0eWxlKCkpKTsKKyAgICAgICAgcmVsYXRpdmVSZWN0ID0gRmxvYXRSZWN0KDAs
IDAsIGl0ZW1XaWR0aCArIHN1ZmZpeFNwYWNlV2lkdGgsIGZvbnQuZm9udE1ldHJpY3MoKS5oZWln
aHQoKSk7CiAgICAgfQogCiAgICAgaWYgKCFzdHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIu
aAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RNYXJrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFJlbmRlckxpc3RJdGVtOwogCi1TdHJpbmcgbGlzdE1hcmtlclRleHQo
RUxpc3RTdHlsZVR5cGUsIGludCB2YWx1ZSk7CitTdHJpbmcgbGlzdE1hcmtlclRleHQoTGlzdFN0
eWxlVHlwZSwgaW50IHZhbHVlKTsKIAogLy8gVXNlZCB0byByZW5kZXIgdGhlIGxpc3QgaXRlbSdz
IG1hcmtlci4KIC8vIFRoZSBSZW5kZXJMaXN0TWFya2VyIGFsd2F5cyBoYXMgdG8gYmUgYSBjaGls
ZCBvZiBhIFJlbmRlckxpc3RJdGVtLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCShyZXZpc2lvbiAyMzIx
MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgUmVuZGVyTWVkaWFW
b2x1bWVTbGlkZXJDb250YWluZXI6OmwKIHsKICAgICBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dCgp
OwogCi0gICAgaWYgKHN0eWxlKCkuZGlzcGxheSgpID09IE5PTkUgfHwgIWlzPFJlbmRlckJveD4o
bmV4dFNpYmxpbmcoKSkpCisgICAgaWYgKHN0eWxlKCkuZGlzcGxheSgpID09IERpc3BsYXlUeXBl
OjpOb25lIHx8ICFpczxSZW5kZXJCb3g+KG5leHRTaWJsaW5nKCkpKQogICAgICAgICByZXR1cm47
CiAKICAgICBSZW5kZXJCb3gmIGJ1dHRvbkJveCA9IGRvd25jYXN0PFJlbmRlckJveD4oKm5leHRT
aWJsaW5nKCkpOwpAQCAtOTgsNyArOTgsNyBAQCBSZW5kZXJUZXh0VHJhY2tDb250YWluZXJFbGVt
ZW50OjpSZW5kZXJUCiB2b2lkIFJlbmRlclRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmxheW91
dCgpCiB7CiAgICAgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXQoKTsKLSAgICBpZiAoc3R5bGUoKS5k
aXNwbGF5KCkgPT0gTk9ORSkKKyAgICBpZiAoc3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5
cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChtZWRpYUNvbnRyb2xFbGVt
ZW50VHlwZShlbGVtZW50KCkpID09IE1lZGlhVGV4dFRyYWNrRGlzcGxheUNvbnRhaW5lcik7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAJKHJldmlz
aW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNywxMiArMTI3LDEyIEBAIHZvaWQgUmVuZGVyTWVudUxp
c3Q6OmFkanVzdElubmVyU3R5bGUoKQogICAgIGlmIChkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21l
KCkuc2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKSkgewogICAgICAgICAvLyBJ
dGVtcyBpbiB0aGUgcG9wdXAgd2lsbCBub3QgcmVzcGVjdCB0aGUgQ1NTIHRleHQtYWxpZ24gYW5k
IGRpcmVjdGlvbiBwcm9wZXJ0aWVzLAogICAgICAgICAvLyBzbyB3ZSBtdXN0IGFkanVzdCBvdXIg
b3duIHN0eWxlIHRvIG1hdGNoLgotICAgICAgICBpbm5lclN0eWxlLnNldFRleHRBbGlnbihMRUZU
KTsKKyAgICAgICAgaW5uZXJTdHlsZS5zZXRUZXh0QWxpZ24oVGV4dEFsaWduTW9kZTo6TGVmdCk7
CiAgICAgICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gKG1fYnV0dG9uVGV4dCAmJiBtX2J1
dHRvblRleHQtPnRleHQoKS5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpID09IFVfUklHSFRfVE9f
TEVGVCkgPyBSVEwgOiBMVFI7CiAgICAgICAgIGlubmVyU3R5bGUuc2V0RGlyZWN0aW9uKGRpcmVj
dGlvbik7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQoKS5wYWdl
KCktPmNocm9tZSgpLnNlbGVjdEl0ZW1BbGlnbm1lbnRGb2xsb3dzTWVudVdyaXRpbmdEaXJlY3Rp
b24oKSkgewotICAgICAgICBpbm5lclN0eWxlLnNldFRleHRBbGlnbihzdHlsZSgpLmRpcmVjdGlv
bigpID09IExUUiA/IExFRlQgOiBSSUdIVCk7CisgICAgICAgIGlubmVyU3R5bGUuc2V0VGV4dEFs
aWduKHN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gTFRSID8gVGV4dEFsaWduTW9kZTo6TGVmdCA6IFRl
eHRBbGlnbk1vZGU6OlJpZ2h0KTsKICAgICAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb247CiAg
ICAgICAgIEVVbmljb2RlQmlkaSB1bmljb2RlQmlkaTsKICAgICAgICAgaWYgKG11bHRpcGxlKCkg
JiYgc2VsZWN0ZWRPcHRpb25Db3VudCgqdGhpcykgIT0gMSkgewpAQCAtMTUzLDcgKzE1Myw3IEBA
IHZvaWQgUmVuZGVyTWVudUxpc3Q6OmFkanVzdElubmVyU3R5bGUoKQogICAgIH0gZWxzZSBpZiAo
bV9vcHRpb25TdHlsZSAmJiBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuc2VsZWN0SXRlbUFs
aWdubWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpKSB7CiAgICAgICAgIGlmICgobV9v
cHRpb25TdHlsZS0+ZGlyZWN0aW9uKCkgIT0gaW5uZXJTdHlsZS5kaXJlY3Rpb24oKSB8fCBtX29w
dGlvblN0eWxlLT51bmljb2RlQmlkaSgpICE9IGlubmVyU3R5bGUudW5pY29kZUJpZGkoKSkpCiAg
ICAgICAgICAgICBtX2lubmVyQmxvY2stPnNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2Fs
YygpOwotICAgICAgICBpbm5lclN0eWxlLnNldFRleHRBbGlnbihzdHlsZSgpLmlzTGVmdFRvUmln
aHREaXJlY3Rpb24oKSA/IExFRlQgOiBSSUdIVCk7CisgICAgICAgIGlubmVyU3R5bGUuc2V0VGV4
dEFsaWduKHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gVGV4dEFsaWduTW9kZTo6
TGVmdCA6IFRleHRBbGlnbk1vZGU6OlJpZ2h0KTsKICAgICAgICAgaW5uZXJTdHlsZS5zZXREaXJl
Y3Rpb24obV9vcHRpb25TdHlsZS0+ZGlyZWN0aW9uKCkpOwogICAgICAgICBpbm5lclN0eWxlLnNl
dFVuaWNvZGVCaWRpKG1fb3B0aW9uU3R5bGUtPnVuaWNvZGVCaWRpKCkpOwogICAgIH0KQEAgLTUw
Nyw4ICs1MDcsOCBAQCBQb3B1cE1lbnVTdHlsZSBSZW5kZXJNZW51TGlzdDo6aXRlbVN0eWxlCiAg
ICAgZ2V0SXRlbUJhY2tncm91bmRDb2xvcihsaXN0SW5kZXgsIGl0ZW1CYWNrZ3JvdW5kQ29sb3Is
IGl0ZW1IYXNDdXN0b21CYWNrZ3JvdW5kQ29sb3IpOwogCiAgICAgYXV0byYgc3R5bGUgPSAqZWxl
bWVudC0+Y29tcHV0ZWRTdHlsZSgpOwotICAgIHJldHVybiBQb3B1cE1lbnVTdHlsZShzdHlsZS52
aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlDb2xvciksIGl0
ZW1CYWNrZ3JvdW5kQ29sb3IsIHN0eWxlLmZvbnRDYXNjYWRlKCksIHN0eWxlLnZpc2liaWxpdHko
KSA9PSBWSVNJQkxFLAotICAgICAgICBzdHlsZS5kaXNwbGF5KCkgPT0gTk9ORSwgdHJ1ZSwgc3R5
bGUudGV4dEluZGVudCgpLCBzdHlsZS5kaXJlY3Rpb24oKSwgaXNPdmVycmlkZShzdHlsZS51bmlj
b2RlQmlkaSgpKSwKKyAgICByZXR1cm4gUG9wdXBNZW51U3R5bGUoc3R5bGUudmlzaXRlZERlcGVu
ZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5Q29sb3IpLCBpdGVtQmFja2dyb3Vu
ZENvbG9yLCBzdHlsZS5mb250Q2FzY2FkZSgpLCBzdHlsZS52aXNpYmlsaXR5KCkgPT0gVmlzaWJp
bGl0eTo6VmlzaWJsZSwKKyAgICAgICAgc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpO
b25lLCB0cnVlLCBzdHlsZS50ZXh0SW5kZW50KCksIHN0eWxlLmRpcmVjdGlvbigpLCBpc092ZXJy
aWRlKHN0eWxlLnVuaWNvZGVCaWRpKCkpLAogICAgICAgICBpdGVtSGFzQ3VzdG9tQmFja2dyb3Vu
ZENvbG9yID8gUG9wdXBNZW51U3R5bGU6OkN1c3RvbUJhY2tncm91bmRDb2xvciA6IFBvcHVwTWVu
dVN0eWxlOjpEZWZhdWx0QmFja2dyb3VuZENvbG9yKTsKIH0KIApAQCAtNTQ2LDcgKzU0Niw3IEBA
IFBvcHVwTWVudVN0eWxlIFJlbmRlck1lbnVMaXN0OjptZW51U3R5bGUKICAgICBjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGVUb1VzZSA9IG1faW5uZXJCbG9jayA/IG1faW5uZXJCbG9jay0+c3R5bGUo
KSA6IHN0eWxlKCk7CiAgICAgSW50UmVjdCBhYnNCb3VuZHMgPSBhYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpOwogICAgIHJldHVybiBQb3B1cE1lbnVTdHlsZShzdHls
ZVRvVXNlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eUNv
bG9yKSwgc3R5bGVUb1VzZS52aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLAotICAgICAgICBzdHlsZVRvVXNlLmZvbnRDYXNjYWRl
KCksIHN0eWxlVG9Vc2UudmlzaWJpbGl0eSgpID09IFZJU0lCTEUsIHN0eWxlVG9Vc2UuZGlzcGxh
eSgpID09IE5PTkUsCisgICAgICAgIHN0eWxlVG9Vc2UuZm9udENhc2NhZGUoKSwgc3R5bGVUb1Vz
ZS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgc3R5bGVUb1VzZS5kaXNwbGF5
KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUsCiAgICAgICAgIHN0eWxlKCkuaGFzQXBwZWFyYW5jZSgp
ICYmIHN0eWxlKCkuYXBwZWFyYW5jZSgpID09IE1lbnVsaXN0UGFydCwgc3R5bGVUb1VzZS50ZXh0
SW5kZW50KCksCiAgICAgICAgIHN0eWxlKCkuZGlyZWN0aW9uKCksIGlzT3ZlcnJpZGUoc3R5bGUo
KS51bmljb2RlQmlkaSgpKSwgUG9wdXBNZW51U3R5bGU6OkRlZmF1bHRCYWNrZ3JvdW5kQ29sb3Is
CiAgICAgICAgIFBvcHVwTWVudVN0eWxlOjpTZWxlY3RQb3B1cCwgdGhlbWUoKS5wb3B1cE1lbnVT
aXplKHN0eWxlVG9Vc2UsIGFic0JvdW5kcykpOwpAQCAtNTU5LDcgKzU1OSw3IEBAIEhvc3RXaW5k
b3cqIFJlbmRlck1lbnVMaXN0Ojpob3N0V2luZG93KCkKIAogUmVmPFNjcm9sbGJhcj4gUmVuZGVy
TWVudUxpc3Q6OmNyZWF0ZVNjcm9sbGJhcihTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEs
IFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxiYXJDb250cm9sU2l6ZSBj
b250cm9sU2l6ZSkKIHsKLSAgICBib29sIGhhc0N1c3RvbVNjcm9sbGJhclN0eWxlID0gc3R5bGUo
KS5oYXNQc2V1ZG9TdHlsZShTQ1JPTExCQVIpOworICAgIGJvb2wgaGFzQ3VzdG9tU2Nyb2xsYmFy
U3R5bGUgPSBzdHlsZSgpLmhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkOjpTY3JvbGxiYXIpOwogICAg
IGlmIChoYXNDdXN0b21TY3JvbGxiYXJTdHlsZSkKICAgICAgICAgcmV0dXJuIFJlbmRlclNjcm9s
bGJhcjo6Y3JlYXRlQ3VzdG9tU2Nyb2xsYmFyKHNjcm9sbGFibGVBcmVhLCBvcmllbnRhdGlvbiwg
JnNlbGVjdEVsZW1lbnQoKSk7CiAgICAgcmV0dXJuIFNjcm9sbGJhcjo6Y3JlYXRlTmF0aXZlU2Ny
b2xsYmFyKHNjcm9sbGFibGVBcmVhLCBvcmllbnRhdGlvbiwgY29udHJvbFNpemUpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9s
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVs
dGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuY3BwCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FU
RURfSU1QTChSZW5kZXJNdWx0aUMKIAogUmVuZGVyUHRyPFJlbmRlck11bHRpQ29sdW1uU3Bhbm5l
clBsYWNlaG9sZGVyPiBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlcjo6Y3JlYXRl
QW5vbnltb3VzKFJlbmRlck11bHRpQ29sdW1uRmxvdyYgZnJhZ21lbnRlZEZsb3csIFJlbmRlckJv
eCYgc3Bhbm5lciwgY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlKQogewotICAgIGF1dG8g
bmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShw
YXJlbnRTdHlsZSwgQkxPQ0spOworICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3Jl
YXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnRTdHlsZSwgRGlzcGxheVR5cGU6OkJs
b2NrKTsKICAgICBuZXdTdHlsZS5zZXRDbGVhcihDbGVhcjo6Qm90aCk7IC8vIFdlIGRvbid0IHdh
bnQgZmxvYXRzIGluIHRoZSByb3cgcHJlY2VkaW5nIHRoZSBzcGFubmVyIHRvIGNvbnRpbnVlIG9u
IHRoZSBvdGhlciBzaWRlLgogICAgIGF1dG8gcGxhY2Vob2xkZXIgPSBjcmVhdGVSZW5kZXJlcjxS
ZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlcj4oZnJhZ21lbnRlZEZsb3csIHNwYW5u
ZXIsIFdURk1vdmUobmV3U3R5bGUpKTsKICAgICBwbGFjZWhvbGRlci0+aW5pdGlhbGl6ZVN0eWxl
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkocmV2
aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NzQsNyArMTU3NCw3IEBAIGludCBSZW5kZXJPYmplY3Q6
OmlubmVyTGluZUhlaWdodCgpIGNvbnMKIHZvaWQgUmVuZGVyT2JqZWN0OjphZGRBbm5vdGF0ZWRS
ZWdpb25zKFZlY3RvcjxBbm5vdGF0ZWRSZWdpb25WYWx1ZT4mIHJlZ2lvbnMpCiB7CiAgICAgLy8g
Q29udmVydCB0aGUgc3R5bGUgcmVnaW9ucyB0byBhYnNvbHV0ZSBjb29yZGluYXRlcy4KLSAgICBp
ZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCAhaXM8UmVuZGVyQm94PigqdGhp
cykpCisgICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUg
fHwgIWlzPFJlbmRlckJveD4oKnRoaXMpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgYXV0
byYgYm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PigqdGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwNSw5ICs0
MDUsOSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGtlcHQg
aW4gc3luYyB3aXRoIGFub255bW91cyBibG9jayBjcmVhdGlvbiBjb25kaXRpb25zIGluCiAgICAg
ICAgIC8vIFJlbmRlckJsb2NrOjpjcmVhdGVBbm9ueW1vdXNCbG9jaygpLiBUaGlzIGluY2x1ZGVz
IGNyZWF0aW5nIGFuIGFub255bW91cwotICAgICAgICAvLyBSZW5kZXJCbG9jayBoYXZpbmcgYSBC
TE9DSyBvciBCT1ggZGlzcGxheS4gT3RoZXIgY2xhc3NlcyBzdWNoIGFzIFJlbmRlclRleHRGcmFn
bWVudAorICAgICAgICAvLyBSZW5kZXJCbG9jayBoYXZpbmcgYSBEaXNwbGF5VHlwZTo6QmxvY2sg
b3IgRGlzcGxheVR5cGU6OkJveCBkaXNwbGF5LiBPdGhlciBjbGFzc2VzIHN1Y2ggYXMgUmVuZGVy
VGV4dEZyYWdtZW50CiAgICAgICAgIC8vIGFyZSBub3QgUmVuZGVyQmxvY2tzIGFuZCB3aWxsIHJl
dHVybiBmYWxzZS4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
NjcwOS4gCi0gICAgICAgIHJldHVybiBpc0Fub255bW91cygpICYmIChzdHlsZSgpLmRpc3BsYXko
KSA9PSBCTE9DSyB8fCBzdHlsZSgpLmRpc3BsYXkoKSA9PSBCT1gpICYmIHN0eWxlKCkuc3R5bGVU
eXBlKCkgPT0gTk9QU0VVRE8gJiYgaXNSZW5kZXJCbG9jaygpICYmICFpc0xpc3RNYXJrZXIoKSAm
JiAhaXNSZW5kZXJGcmFnbWVudGVkRmxvdygpICYmICFpc1JlbmRlck11bHRpQ29sdW1uU2V0KCkg
JiYgIWlzUmVuZGVyVmlldygpCisgICAgICAgIHJldHVybiBpc0Fub255bW91cygpICYmIChzdHls
ZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6QmxvY2sgfHwgc3R5bGUoKS5kaXNwbGF5KCkg
PT0gRGlzcGxheVR5cGU6OkJveCkgJiYgc3R5bGUoKS5zdHlsZVR5cGUoKSA9PSBQc2V1ZG9JZDo6
Tm9uZSAmJiBpc1JlbmRlckJsb2NrKCkgJiYgIWlzTGlzdE1hcmtlcigpICYmICFpc1JlbmRlckZy
YWdtZW50ZWRGbG93KCkgJiYgIWlzUmVuZGVyTXVsdGlDb2x1bW5TZXQoKSAmJiAhaXNSZW5kZXJW
aWV3KCkKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgICAgICAgICAmJiAhaXNSZW5k
ZXJGdWxsU2NyZWVuKCkKICAgICAgICAgICAgICYmICFpc1JlbmRlckZ1bGxTY3JlZW5QbGFjZWhv
bGRlcigpCkBAIC0xMDIxLDcgKzEwMjEsNyBAQCBpbmxpbmUgYm9vbCBSZW5kZXJPYmplY3Q6Omlz
QmVmb3JlQ29udGVuCiAgICAgLy8gVGV4dCBub2RlcyBkb24ndCBoYXZlIHRoZWlyIG93biBzdHls
ZXMsIHNvIGlnbm9yZSB0aGUgc3R5bGUgb24gYSB0ZXh0IG5vZGUuCiAgICAgaWYgKGlzVGV4dCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHN0eWxlKCkuc3R5bGVUeXBlKCkgIT0g
QkVGT1JFKQorICAgIGlmIChzdHlsZSgpLnN0eWxlVHlwZSgpICE9IFBzZXVkb0lkOjpCZWZvcmUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTEwMzEsNyAr
MTAzMSw3IEBAIGlubGluZSBib29sIFJlbmRlck9iamVjdDo6aXNBZnRlckNvbnRlbnQKICAgICAv
LyBUZXh0IG5vZGVzIGRvbid0IGhhdmUgdGhlaXIgb3duIHN0eWxlcywgc28gaWdub3JlIHRoZSBz
dHlsZSBvbiBhIHRleHQgbm9kZS4KICAgICBpZiAoaXNUZXh0KCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAoc3R5bGUoKS5zdHlsZVR5cGUoKSAhPSBBRlRFUikKKyAgICBpZiAoc3R5
bGUoKS5zdHlsZVR5cGUoKSAhPSBQc2V1ZG9JZDo6QWZ0ZXIpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZXBsYWNlZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlcGxhY2VkLmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQyLDcgKzI0
Miw3IEBAIGJvb2wgUmVuZGVyUmVwbGFjZWQ6OnNob3VsZFBhaW50KFBhaW50SW4KICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAKICAgICAvLyBpZiB3ZSdyZSBpbnZpc2libGUgb3IgaGF2
ZW4ndCByZWNlaXZlZCBhIGxheW91dCB5ZXQsIHRoZW4ganVzdCBiYWlsLgotICAgIGlmIChzdHls
ZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHko
KSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAg
ICAgTGF5b3V0UG9pbnQgYWRqdXN0ZWRQYWludE9mZnNldCA9IHBhaW50T2Zmc2V0ICsgbG9jYXRp
b24oKTsKQEAgLTY2Nyw3ICs2NjcsNyBAQCBib29sIFJlbmRlclJlcGxhY2VkOjppc1NlbGVjdGVk
KCkgY29uc3QKIAogTGF5b3V0UmVjdCBSZW5kZXJSZXBsYWNlZDo6Y2xpcHBlZE92ZXJmbG93UmVj
dEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
cikgY29uc3QKIHsKLSAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSAmJiAh
ZW5jbG9zaW5nTGF5ZXIoKS0+aGFzVmlzaWJsZUNvbnRlbnQoKSkKKyAgICBpZiAoc3R5bGUoKS52
aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhZW5jbG9zaW5nTGF5ZXIoKS0+
aGFzVmlzaWJsZUNvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKIAogICAg
IC8vIFRoZSBzZWxlY3Rpb25SZWN0IGNhbiBwcm9qZWN0IG91dHNpZGUgb2YgdGhlIG92ZXJmbG93
UmVjdCwgc28gdGFrZSB0aGVpciB1bmlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJ1YnlCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUnVieUJhc2UuY3BwCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw5ICs2
MCw5IEBAIFJlbmRlclJ1YnlSdW4qIFJlbmRlclJ1YnlCYXNlOjpydWJ5UnVuKCkKICAgICByZXR1
cm4gZG93bmNhc3Q8UmVuZGVyUnVieVJ1bj4ocGFyZW50KCkpOwogfQogCi1FVGV4dEFsaWduIFJl
bmRlclJ1YnlCYXNlOjp0ZXh0QWxpZ25tZW50Rm9yTGluZShib29sIC8qIGVuZHNXaXRoU29mdEJy
ZWFrICovKSBjb25zdAorVGV4dEFsaWduTW9kZSBSZW5kZXJSdWJ5QmFzZTo6dGV4dEFsaWdubWVu
dEZvckxpbmUoYm9vbCAvKiBlbmRzV2l0aFNvZnRCcmVhayAqLykgY29uc3QKIHsKLSAgICByZXR1
cm4gSlVTVElGWTsKKyAgICByZXR1cm4gVGV4dEFsaWduTW9kZTo6SnVzdGlmeTsKIH0KIAogdm9p
ZCBSZW5kZXJSdWJ5QmFzZTo6YWRqdXN0SW5saW5lRGlyZWN0aW9uTGluZUJvdW5kcyhpbnQgZXhw
YW5zaW9uT3Bwb3J0dW5pdHlDb3VudCwgZmxvYXQmIGxvZ2ljYWxMZWZ0LCBmbG9hdCYgbG9naWNh
bFdpZHRoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlC
YXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlC
YXNlLmgJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSdWJ5QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgYm9vbCBpc1J1YnlCYXNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIGJvb2wgaXNDaGlsZEFsbG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3Qg
UmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICBFVGV4dEFsaWduIHRleHRBbGlnbm1l
bnRGb3JMaW5lKGJvb2wgZW5kc1dpdGhTb2Z0QnJlYWspIGNvbnN0IG92ZXJyaWRlOworICAgIFRl
eHRBbGlnbk1vZGUgdGV4dEFsaWdubWVudEZvckxpbmUoYm9vbCBlbmRzV2l0aFNvZnRCcmVhaykg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGp1c3RJbmxpbmVEaXJlY3Rpb25MaW5lQm91bmRz
KGludCBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50LCBmbG9hdCYgbG9naWNhbExlZnQsIGZsb2F0
JiBsb2dpY2FsV2lkdGgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgZmxvYXQgbV9pbml0aWFsT2Zm
c2V0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcAko
cmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlS
dW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSw4ICs5OSw4IEBAIGJvb2wgUmVuZGVyUnVieVJ1
bjo6aXNDaGlsZEFsbG93ZWQoY29uc3QKIAogUmVuZGVyUHRyPFJlbmRlclJ1YnlCYXNlPiBSZW5k
ZXJSdWJ5UnVuOjpjcmVhdGVSdWJ5QmFzZSgpIGNvbnN0CiB7Ci0gICAgYXV0byBuZXdTdHlsZSA9
IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlKCksIEJM
T0NLKTsKLSAgICBuZXdTdHlsZS5zZXRUZXh0QWxpZ24oQ0VOVEVSKTsgLy8gRklYTUU6IHVzZSBX
RUJLSVRfQ0VOVEVSPworICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5v
bnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSgpLCBEaXNwbGF5VHlwZTo6QmxvY2spOworICAg
IG5ld1N0eWxlLnNldFRleHRBbGlnbihUZXh0QWxpZ25Nb2RlOjpDZW50ZXIpOyAvLyBGSVhNRTog
dXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcj8KICAgICBhdXRvIHJlbmRlcmVyID0gY3Jl
YXRlUmVuZGVyZXI8UmVuZGVyUnVieUJhc2U+KGRvY3VtZW50KCksIFdURk1vdmUobmV3U3R5bGUp
KTsKICAgICByZW5kZXJlci0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAgcmV0dXJuIHJlbmRlcmVy
OwpAQCAtMTA5LDcgKzEwOSw3IEBAIFJlbmRlclB0cjxSZW5kZXJSdWJ5QmFzZT4gUmVuZGVyUnVi
eVJ1bjoKIFJlbmRlclB0cjxSZW5kZXJSdWJ5UnVuPiBSZW5kZXJSdWJ5UnVuOjpzdGF0aWNDcmVh
dGVSdWJ5UnVuKGNvbnN0IFJlbmRlck9iamVjdCogcGFyZW50UnVieSkKIHsKICAgICBBU1NFUlQo
aXNSdWJ5KHBhcmVudFJ1YnkpKTsKLSAgICBhdXRvIHJlbmRlcmVyID0gY3JlYXRlUmVuZGVyZXI8
UmVuZGVyUnVieVJ1bj4ocGFyZW50UnVieS0+ZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0
ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50UnVieS0+c3R5bGUoKSwgSU5MSU5FX0JM
T0NLKSk7CisgICAgYXV0byByZW5kZXJlciA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclJ1YnlSdW4+
KHBhcmVudFJ1YnktPmRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHls
ZVdpdGhEaXNwbGF5KHBhcmVudFJ1YnktPnN0eWxlKCksIERpc3BsYXlUeXBlOjpJbmxpbmVCbG9j
aykpOwogICAgIHJlbmRlcmVyLT5pbml0aWFsaXplU3R5bGUoKTsKICAgICByZXR1cm4gcmVuZGVy
ZXI7CiB9CkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBSZW5kZXJSdWJ5UnVuOjpsYXlvdXRCbG9j
ayhib29sIHJlbAogICAgICAgICAvLyBTaW5jZSB0aGUgZXh0cmEgcmVsYXlvdXQgaW4gUmVuZGVy
QmxvY2tGbG93Ojp1cGRhdGVSdWJ5Rm9ySnVzdGlmaWVkVGV4dCgpIGNhdXNlcyB0aGUgc2l6ZSBv
ZiB0aGUgUmVuZGVyUnVieVRleHQvUmVuZGVyUnVieUJhc2UKICAgICAgICAgLy8gZGVwZW5kZW50
IG9uIHRoZSBsaW5lJ3MgY3VycmVudCBleHBhbnNpb24sIHdoZW5ldmVyIHdlIHJlbGF5b3V0IHRo
ZSBSZW5kZXJSdWJ5UnVuLCB3ZSBuZWVkIHRvIHJlbGF5b3V0IHRoZSBSZW5kZXJSdWJ5QmFzZS9S
ZW5kZXJSdWJ5VGV4dCBhcyB3ZWxsLgogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHRha2Ug
dGhlIGV4cGFuc2lvbiBvcHBvcnR1bml0aWVzIGludG8gYWNjb3VudCBpZiBwb3NzaWJsZS4KLSAg
ICAgICAgcmVsYXlvdXRDaGlsZHJlbiA9IHN0eWxlKCkudGV4dEFsaWduKCkgPT0gSlVTVElGWTsK
KyAgICAgICAgcmVsYXlvdXRDaGlsZHJlbiA9IHN0eWxlKCkudGV4dEFsaWduKCkgPT0gVGV4dEFs
aWduTW9kZTo6SnVzdGlmeTsKICAgICB9CiAKICAgICBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dEJs
b2NrKHJlbGF5b3V0Q2hpbGRyZW4sIHBhZ2VIZWlnaHQpOwpAQCAtMTYzLDcgKzE2Myw3IEBAIHZv
aWQgUmVuZGVyUnVieVJ1bjo6bGF5b3V0QmxvY2soYm9vbCByZWwKICAgICAgICAgbGFzdExpbmVS
dWJ5VGV4dEJvdHRvbSA9IHJvb3RCb3gtPmxvZ2ljYWxCb3R0b21MYXlvdXRPdmVyZmxvdygpOwog
ICAgIH0KICAgICAKLSAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSAmJiBydC0+c3R5
bGUoKS5ydWJ5UG9zaXRpb24oKSA9PSBSdWJ5UG9zaXRpb25JbnRlckNoYXJhY3RlcikgeworICAg
IGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpICYmIHJ0LT5zdHlsZSgpLnJ1YnlQb3NpdGlv
bigpID09IFJ1YnlQb3NpdGlvbjo6SW50ZXJDaGFyYWN0ZXIpIHsKICAgICAgICAgLy8gQm9wb21v
Zm8uIFdlIG5lZWQgdG8gbW92ZSB0aGUgUmVuZGVyUnVieVRleHQgb3ZlciB0byB0aGUgcmlnaHQg
c2lkZSBhbmQgY2VudGVyIGl0CiAgICAgICAgIC8vIHZlcnRpY2FsbHkgcmVsYXRpdmUgdG8gdGhl
IGJhc2UuCiAgICAgICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUoKS5mb250Q2Fz
Y2FkZSgpOwpAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgUmVuZGVyUnVieVJ1bjo6bGF5b3V0Qmxv
Y2soYm9vbCByZWwKICAgICAgICAgICAgIExheW91dFVuaXQgZXh0ZW50ID0gbGFzdExpbmVCb3R0
b20gLSBmaXJzdExpbmVUb3A7CiAgICAgICAgICAgICBydC0+c2V0WShmaXJzdExpbmVUb3AgKyAo
ZXh0ZW50IC0gcnQtPmhlaWdodCgpKSAvIDIpOwogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChz
dHlsZSgpLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSA9PSAoc3R5bGUoKS5ydWJ5UG9zaXRp
b24oKSA9PSBSdWJ5UG9zaXRpb25BZnRlcikpIHsKKyAgICB9IGVsc2UgaWYgKHN0eWxlKCkuaXNG
bGlwcGVkTGluZXNXcml0aW5nTW9kZSgpID09IChzdHlsZSgpLnJ1YnlQb3NpdGlvbigpID09IFJ1
YnlQb3NpdGlvbjo6QWZ0ZXIpKSB7CiAgICAgICAgIExheW91dFVuaXQgZmlyc3RMaW5lVG9wID0g
MDsKICAgICAgICAgaWYgKFJlbmRlclJ1YnlCYXNlKiByYiA9IHJ1YnlCYXNlKCkpIHsKICAgICAg
ICAgICAgIFJvb3RJbmxpbmVCb3gqIHJvb3RCb3ggPSByYi0+Zmlyc3RSb290Qm94KCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5jcHAJKHJldmlzaW9u
IDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU3LDIwICs1NywyMCBAQCBib29sIFJlbmRlclJ1YnlUZXh0Ojpp
c0NoaWxkQWxsb3dlZChjb25zCiAgICAgcmV0dXJuIGNoaWxkLmlzSW5saW5lKCk7CiB9CiAKLUVU
ZXh0QWxpZ24gUmVuZGVyUnVieVRleHQ6OnRleHRBbGlnbm1lbnRGb3JMaW5lKGJvb2wgZW5kc1dp
dGhTb2Z0QnJlYWspIGNvbnN0CitUZXh0QWxpZ25Nb2RlIFJlbmRlclJ1YnlUZXh0Ojp0ZXh0QWxp
Z25tZW50Rm9yTGluZShib29sIGVuZHNXaXRoU29mdEJyZWFrKSBjb25zdAogewotICAgIEVUZXh0
QWxpZ24gdGV4dEFsaWduID0gc3R5bGUoKS50ZXh0QWxpZ24oKTsKKyAgICBUZXh0QWxpZ25Nb2Rl
IHRleHRBbGlnbiA9IHN0eWxlKCkudGV4dEFsaWduKCk7CiAgICAgLy8gRklYTUU6IFRoaXMgY2hl
Y2sgaXMgYm9ndXMgc2luY2UgdXNlciBjYW4gc2V0IHRoZSBpbml0aWFsIHZhbHVlLgogICAgIGlm
ICh0ZXh0QWxpZ24gIT0gUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0QWxpZ24oKSkKICAgICAgICAg
cmV0dXJuIFJlbmRlckJsb2NrRmxvdzo6dGV4dEFsaWdubWVudEZvckxpbmUoZW5kc1dpdGhTb2Z0
QnJlYWspOwogCiAgICAgLy8gVGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMgdG8gYWxsb3cgcnVieSB0
ZXh0IHRvIGV4cGFuZCBpZiBpdCBpcyBzaG9ydGVyIHRoYW4gdGhlIHJ1YnkgYmFzZS4KLSAgICBy
ZXR1cm4gSlVTVElGWTsKKyAgICByZXR1cm4gVGV4dEFsaWduTW9kZTo6SnVzdGlmeTsKIH0KIAog
dm9pZCBSZW5kZXJSdWJ5VGV4dDo6YWRqdXN0SW5saW5lRGlyZWN0aW9uTGluZUJvdW5kcyhpbnQg
ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCwgZmxvYXQmIGxvZ2ljYWxMZWZ0LCBmbG9hdCYgbG9n
aWNhbFdpZHRoKSBjb25zdAogewotICAgIEVUZXh0QWxpZ24gdGV4dEFsaWduID0gc3R5bGUoKS50
ZXh0QWxpZ24oKTsKKyAgICBUZXh0QWxpZ25Nb2RlIHRleHRBbGlnbiA9IHN0eWxlKCkudGV4dEFs
aWduKCk7CiAgICAgLy8gRklYTUU6IFRoaXMgY2hlY2sgaXMgYm9ndXMgc2luY2UgdXNlciBjYW4g
c2V0IHRoZSBpbml0aWFsIHZhbHVlLgogICAgIGlmICh0ZXh0QWxpZ24gIT0gUmVuZGVyU3R5bGU6
OmluaXRpYWxUZXh0QWxpZ24oKSkKICAgICAgICAgcmV0dXJuIFJlbmRlckJsb2NrRmxvdzo6YWRq
dXN0SW5saW5lRGlyZWN0aW9uTGluZUJvdW5kcyhleHBhbnNpb25PcHBvcnR1bml0eUNvdW50LCBs
b2dpY2FsTGVmdCwgbG9naWNhbFdpZHRoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSdWJ5VGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSdWJ5VGV4dC5oCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBA
QCBwcml2YXRlOgogCiAgICAgYm9vbCBhdm9pZHNGbG9hdHMoKSBjb25zdCBvdmVycmlkZTsKIAot
ICAgIEVUZXh0QWxpZ24gdGV4dEFsaWdubWVudEZvckxpbmUoYm9vbCBlbmRzV2l0aFNvZnRCcmVh
aykgY29uc3Qgb3ZlcnJpZGU7CisgICAgVGV4dEFsaWduTW9kZSB0ZXh0QWxpZ25tZW50Rm9yTGlu
ZShib29sIGVuZHNXaXRoU29mdEJyZWFrKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGFkanVz
dElubGluZURpcmVjdGlvbkxpbmVCb3VuZHMoaW50IGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQs
IGZsb2F0JiBsb2dpY2FsTGVmdCwgZmxvYXQmIGxvZ2ljYWxXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7
CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFy
LmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNjcm9sbGJhci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OCwyMiArMTg4LDIyIEBAIHN0YXRp
YyBQc2V1ZG9JZCBwc2V1ZG9Gb3JTY3JvbGxiYXJQYXJ0KFMKICAgICAgICAgY2FzZSBGb3J3YXJk
QnV0dG9uU3RhcnRQYXJ0OgogICAgICAgICBjYXNlIEJhY2tCdXR0b25FbmRQYXJ0OgogICAgICAg
ICBjYXNlIEZvcndhcmRCdXR0b25FbmRQYXJ0OgotICAgICAgICAgICAgcmV0dXJuIFNDUk9MTEJB
Ul9CVVRUT047CisgICAgICAgICAgICByZXR1cm4gUHNldWRvSWQ6OlNjcm9sbGJhckJ1dHRvbjsK
ICAgICAgICAgY2FzZSBCYWNrVHJhY2tQYXJ0OgogICAgICAgICBjYXNlIEZvcndhcmRUcmFja1Bh
cnQ6Ci0gICAgICAgICAgICByZXR1cm4gU0NST0xMQkFSX1RSQUNLX1BJRUNFOworICAgICAgICAg
ICAgcmV0dXJuIFBzZXVkb0lkOjpTY3JvbGxiYXJUcmFja1BpZWNlOwogICAgICAgICBjYXNlIFRo
dW1iUGFydDoKLSAgICAgICAgICAgIHJldHVybiBTQ1JPTExCQVJfVEhVTUI7CisgICAgICAgICAg
ICByZXR1cm4gUHNldWRvSWQ6OlNjcm9sbGJhclRodW1iOwogICAgICAgICBjYXNlIFRyYWNrQkdQ
YXJ0OgotICAgICAgICAgICAgcmV0dXJuIFNDUk9MTEJBUl9UUkFDSzsKKyAgICAgICAgICAgIHJl
dHVybiBQc2V1ZG9JZDo6U2Nyb2xsYmFyVHJhY2s7CiAgICAgICAgIGNhc2UgU2Nyb2xsYmFyQkdQ
YXJ0OgotICAgICAgICAgICAgcmV0dXJuIFNDUk9MTEJBUjsKKyAgICAgICAgICAgIHJldHVybiBQ
c2V1ZG9JZDo6U2Nyb2xsYmFyOwogICAgICAgICBjYXNlIE5vUGFydDoKICAgICAgICAgY2FzZSBB
bGxQYXJ0czoKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gU0NST0xMQkFSOworICAgIHJldHVybiBQc2V1ZG9JZDo6U2Nyb2xs
YmFyOwogfQogCiB2b2lkIFJlbmRlclNjcm9sbGJhcjo6dXBkYXRlU2Nyb2xsYmFyUGFydChTY3Jv
bGxiYXJQYXJ0IHBhcnRUeXBlKQpAQCAtMjEyLDkgKzIxMiw5IEBAIHZvaWQgUmVuZGVyU2Nyb2xs
YmFyOjp1cGRhdGVTY3JvbGxiYXJQYXIKICAgICAgICAgcmV0dXJuOwogCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBwYXJ0U3R5bGUgPSBnZXRTY3JvbGxiYXJQc2V1ZG9TdHlsZShw
YXJ0VHlwZSwgcHNldWRvRm9yU2Nyb2xsYmFyUGFydChwYXJ0VHlwZSkpOwotICAgIGJvb2wgbmVl
ZFJlbmRlcmVyID0gcGFydFN0eWxlICYmIHBhcnRTdHlsZS0+ZGlzcGxheSgpICE9IE5PTkU7Cisg
ICAgYm9vbCBuZWVkUmVuZGVyZXIgPSBwYXJ0U3R5bGUgJiYgcGFydFN0eWxlLT5kaXNwbGF5KCkg
IT0gRGlzcGxheVR5cGU6Ok5vbmU7CiAKLSAgICBpZiAobmVlZFJlbmRlcmVyICYmIHBhcnRTdHls
ZS0+ZGlzcGxheSgpICE9IEJMT0NLKSB7CisgICAgaWYgKG5lZWRSZW5kZXJlciAmJiBwYXJ0U3R5
bGUtPmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6QmxvY2spIHsKICAgICAgICAgLy8gU2VlIGlm
IHdlIGFyZSBhIGJ1dHRvbiB0aGF0IHNob3VsZCBub3QgYmUgdmlzaWJsZSBhY2NvcmRpbmcgdG8g
T1Mgc2V0dGluZ3MuCiAgICAgICAgIFNjcm9sbGJhckJ1dHRvbnNQbGFjZW1lbnQgYnV0dG9uc1Bs
YWNlbWVudCA9IHRoZW1lKCkuYnV0dG9uc1BsYWNlbWVudCgpOwogICAgICAgICBzd2l0Y2ggKHBh
cnRUeXBlKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmll
bGQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFy
Y2hGaWVsZC5jcHAJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw3ICsxODUsNyBA
QCB2b2lkIFJlbmRlclNlYXJjaEZpZWxkOjp1cGRhdGVDYW5jZWxCdXR0CiAgICAgICAgIHJldHVy
bjsKIAogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBjdXJTdHlsZSA9IGNhbmNlbEJ1dHRvblJlbmRl
cmVyLT5zdHlsZSgpOwotICAgIEVWaXNpYmlsaXR5IGJ1dHRvblZpc2liaWxpdHkgPSB2aXNpYmls
aXR5Rm9yQ2FuY2VsQnV0dG9uKCk7CisgICAgVmlzaWJpbGl0eSBidXR0b25WaXNpYmlsaXR5ID0g
dmlzaWJpbGl0eUZvckNhbmNlbEJ1dHRvbigpOwogICAgIGlmIChjdXJTdHlsZS52aXNpYmlsaXR5
KCkgPT0gYnV0dG9uVmlzaWJpbGl0eSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xOTQsOSArMTk0
LDkgQEAgdm9pZCBSZW5kZXJTZWFyY2hGaWVsZDo6dXBkYXRlQ2FuY2VsQnV0dAogICAgIGNhbmNl
bEJ1dHRvblJlbmRlcmVyLT5zZXRTdHlsZShXVEZNb3ZlKGNhbmNlbEJ1dHRvblN0eWxlKSk7CiB9
CiAKLUVWaXNpYmlsaXR5IFJlbmRlclNlYXJjaEZpZWxkOjp2aXNpYmlsaXR5Rm9yQ2FuY2VsQnV0
dG9uKCkgY29uc3QKK1Zpc2liaWxpdHkgUmVuZGVyU2VhcmNoRmllbGQ6OnZpc2liaWxpdHlGb3JD
YW5jZWxCdXR0b24oKSBjb25zdAogewotICAgIHJldHVybiAoc3R5bGUoKS52aXNpYmlsaXR5KCkg
PT0gSElEREVOIHx8IGlucHV0RWxlbWVudCgpLnZhbHVlKCkuaXNFbXB0eSgpKSA/IEhJRERFTiA6
IFZJU0lCTEU7CisgICAgcmV0dXJuIChzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5
OjpIaWRkZW4gfHwgaW5wdXRFbGVtZW50KCkudmFsdWUoKS5pc0VtcHR5KCkpID8gVmlzaWJpbGl0
eTo6SGlkZGVuIDogVmlzaWJpbGl0eTo6VmlzaWJsZTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5n
JiBSZW5kZXJTZWFyY2hGaWVsZDo6YXV0b3NhdmVOYW1lKCkgY29uc3QKQEAgLTI3MCw4ICsyNzAs
OCBAQCBQb3B1cE1lbnVTdHlsZSBSZW5kZXJTZWFyY2hGaWVsZDo6aXRlbVN0CiAKIFBvcHVwTWVu
dVN0eWxlIFJlbmRlclNlYXJjaEZpZWxkOjptZW51U3R5bGUoKSBjb25zdAogewotICAgIHJldHVy
biBQb3B1cE1lbnVTdHlsZShzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZp
bHRlcihDU1NQcm9wZXJ0eUNvbG9yKSwgc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRo
Q29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLCBzdHlsZSgpLmZvbnRDYXNj
YWRlKCksIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUsCi0gICAgICAgIHN0eWxlKCku
ZGlzcGxheSgpID09IE5PTkUsIHRydWUsIHN0eWxlKCkudGV4dEluZGVudCgpLCBzdHlsZSgpLmRp
cmVjdGlvbigpLCBpc092ZXJyaWRlKHN0eWxlKCkudW5pY29kZUJpZGkoKSksIFBvcHVwTWVudVN0
eWxlOjpDdXN0b21CYWNrZ3JvdW5kQ29sb3IpOworICAgIHJldHVybiBQb3B1cE1lbnVTdHlsZShz
dHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eUNv
bG9yKSwgc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kQ29sb3IpLCBzdHlsZSgpLmZvbnRDYXNjYWRlKCksIHN0eWxlKCkudmlz
aWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUsCisgICAgICAgIHN0eWxlKCkuZGlzcGxh
eSgpID09IERpc3BsYXlUeXBlOjpOb25lLCB0cnVlLCBzdHlsZSgpLnRleHRJbmRlbnQoKSwgc3R5
bGUoKS5kaXJlY3Rpb24oKSwgaXNPdmVycmlkZShzdHlsZSgpLnVuaWNvZGVCaWRpKCkpLCBQb3B1
cE1lbnVTdHlsZTo6Q3VzdG9tQmFja2dyb3VuZENvbG9yKTsKIH0KIAogaW50IFJlbmRlclNlYXJj
aEZpZWxkOjpjbGllbnRJbnNldExlZnQoKSBjb25zdApAQCAtMzU5LDcgKzM1OSw3IEBAIEhvc3RX
aW5kb3cqIFJlbmRlclNlYXJjaEZpZWxkOjpob3N0V2luZG8KIAogUmVmPFNjcm9sbGJhcj4gUmVu
ZGVyU2VhcmNoRmllbGQ6OmNyZWF0ZVNjcm9sbGJhcihTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJs
ZUFyZWEsIFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxiYXJDb250cm9s
U2l6ZSBjb250cm9sU2l6ZSkKIHsKLSAgICBib29sIGhhc0N1c3RvbVNjcm9sbGJhclN0eWxlID0g
c3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShTQ1JPTExCQVIpOworICAgIGJvb2wgaGFzQ3VzdG9tU2Ny
b2xsYmFyU3R5bGUgPSBzdHlsZSgpLmhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkOjpTY3JvbGxiYXIp
OwogICAgIGlmIChoYXNDdXN0b21TY3JvbGxiYXJTdHlsZSkKICAgICAgICAgcmV0dXJuIFJlbmRl
clNjcm9sbGJhcjo6Y3JlYXRlQ3VzdG9tU2Nyb2xsYmFyKHNjcm9sbGFibGVBcmVhLCBvcmllbnRh
dGlvbiwgJmlucHV0RWxlbWVudCgpKTsKICAgICByZXR1cm4gU2Nyb2xsYmFyOjpjcmVhdGVOYXRp
dmVTY3JvbGxiYXIoc2Nyb2xsYWJsZUFyZWEsIG9yaWVudGF0aW9uLCBjb250cm9sU2l6ZSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuaAkocmV2
aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZp
ZWxkLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogICAgIExheW91dFVuaXQgY29tcHV0ZUNvbnRy
b2xMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbGluZUhlaWdodCwgTGF5b3V0VW5pdCBub25Db250
ZW50SGVpZ2h0KSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkg
b3ZlcnJpZGU7Ci0gICAgRVZpc2liaWxpdHkgdmlzaWJpbGl0eUZvckNhbmNlbEJ1dHRvbigpIGNv
bnN0OworICAgIFZpc2liaWxpdHkgdmlzaWJpbGl0eUZvckNhbmNlbEJ1dHRvbigpIGNvbnN0Owog
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXV0b3NhdmVOYW1lKCkgY29uc3Q7CiAKICAgICAvLyBQ
b3B1cE1lbnVDbGllbnQgbWV0aG9kcwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGUuY3BwCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9p
ZCBSZW5kZXJUYWJsZTo6d2lsbEluc2VydFRhYmxlQ29sdW1uKAogdm9pZCBSZW5kZXJUYWJsZTo6
d2lsbEluc2VydFRhYmxlU2VjdGlvbihSZW5kZXJUYWJsZVNlY3Rpb24mIGNoaWxkLCBSZW5kZXJP
YmplY3QqIGJlZm9yZUNoaWxkKQogewogICAgIHN3aXRjaCAoY2hpbGQuc3R5bGUoKS5kaXNwbGF5
KCkpIHsKLSAgICBjYXNlIFRBQkxFX0hFQURFUl9HUk9VUDoKKyAgICBjYXNlIERpc3BsYXlUeXBl
OjpUYWJsZUhlYWRlckdyb3VwOgogICAgICAgICByZXNldFNlY3Rpb25Qb2ludGVySWZOb3RCZWZv
cmUobV9oZWFkLCBiZWZvcmVDaGlsZCk7CiAgICAgICAgIGlmICghbV9oZWFkKQogICAgICAgICAg
ICAgbV9oZWFkID0gbWFrZVdlYWtQdHIoY2hpbGQpOwpAQCAtMTUxLDE0ICsxNTEsMTQgQEAgdm9p
ZCBSZW5kZXJUYWJsZTo6d2lsbEluc2VydFRhYmxlU2VjdGlvbgogICAgICAgICAgICAgICAgIG1f
Zmlyc3RCb2R5ID0gbWFrZVdlYWtQdHIoY2hpbGQpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgVEFCTEVfRk9PVEVSX0dST1VQOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OlRh
YmxlRm9vdGVyR3JvdXA6CiAgICAgICAgIHJlc2V0U2VjdGlvblBvaW50ZXJJZk5vdEJlZm9yZSht
X2Zvb3QsIGJlZm9yZUNoaWxkKTsKICAgICAgICAgaWYgKCFtX2Zvb3QpIHsKICAgICAgICAgICAg
IG1fZm9vdCA9IG1ha2VXZWFrUHRyKGNoaWxkKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIEZBTExUSFJPVUdIOwotICAgIGNhc2UgVEFCTEVfUk9XX0dST1VQOgorICAg
IGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlUm93R3JvdXA6CiAgICAgICAgIHJlc2V0U2VjdGlvblBv
aW50ZXJJZk5vdEJlZm9yZShtX2ZpcnN0Qm9keSwgYmVmb3JlQ2hpbGQpOwogICAgICAgICBpZiAo
IW1fZmlyc3RCb2R5KQogICAgICAgICAgICAgbV9maXJzdEJvZHkgPSBtYWtlV2Vha1B0cihjaGls
ZCk7CkBAIC0zNTYsOCArMzU2LDggQEAgdm9pZCBSZW5kZXJUYWJsZTo6bGF5b3V0Q2FwdGlvbnMo
Qm90dG9tQwogICAgICAgICByZXR1cm47CiAgICAgLy8gRklYTUU6IENvbGxhcHNlIGNhcHRpb24g
bWFyZ2luLgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2NhcHRpb25zLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIGlmICgoYm90dG9tQ2FwdGlvbkxheW91dFBoYXNlID09IEJvdHRvbUNh
cHRpb25MYXlvdXRQaGFzZTo6WWVzICYmIG1fY2FwdGlvbnNbaV0tPnN0eWxlKCkuY2FwdGlvblNp
ZGUoKSAhPSBDQVBCT1RUT00pCi0gICAgICAgICAgICB8fCAoYm90dG9tQ2FwdGlvbkxheW91dFBo
YXNlID09IEJvdHRvbUNhcHRpb25MYXlvdXRQaGFzZTo6Tm8gJiYgbV9jYXB0aW9uc1tpXS0+c3R5
bGUoKS5jYXB0aW9uU2lkZSgpID09IENBUEJPVFRPTSkpCisgICAgICAgIGlmICgoYm90dG9tQ2Fw
dGlvbkxheW91dFBoYXNlID09IEJvdHRvbUNhcHRpb25MYXlvdXRQaGFzZTo6WWVzICYmIG1fY2Fw
dGlvbnNbaV0tPnN0eWxlKCkuY2FwdGlvblNpZGUoKSAhPSBDYXB0aW9uU2lkZTo6Qm90dG9tKQor
ICAgICAgICAgICAgfHwgKGJvdHRvbUNhcHRpb25MYXlvdXRQaGFzZSA9PSBCb3R0b21DYXB0aW9u
TGF5b3V0UGhhc2U6Ok5vICYmIG1fY2FwdGlvbnNbaV0tPnN0eWxlKCkuY2FwdGlvblNpZGUoKSA9
PSBDYXB0aW9uU2lkZTo6Qm90dG9tKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBs
YXlvdXRDYXB0aW9uKCptX2NhcHRpb25zW2ldKTsKICAgICB9CkBAIC00MjUsNyArNDI1LDcgQEAg
dm9pZCBSZW5kZXJUYWJsZTo6bGF5b3V0KCkKICAgICAgICAgTGF5b3V0VW5pdCB0b3RhbFNlY3Rp
b25Mb2dpY2FsSGVpZ2h0ID0gMDsKICAgICAgICAgTGF5b3V0VW5pdCBvbGRUYWJsZUxvZ2ljYWxU
b3AgPSAwOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9jYXB0aW9ucy5zaXpl
KCk7IGkrKykgewotICAgICAgICAgICAgaWYgKG1fY2FwdGlvbnNbaV0tPnN0eWxlKCkuY2FwdGlv
blNpZGUoKSA9PSBDQVBCT1RUT00pCisgICAgICAgICAgICBpZiAobV9jYXB0aW9uc1tpXS0+c3R5
bGUoKS5jYXB0aW9uU2lkZSgpID09IENhcHRpb25TaWRlOjpCb3R0b20pCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICBvbGRUYWJsZUxvZ2ljYWxUb3AgKz0gbV9jYXB0aW9u
c1tpXS0+bG9naWNhbEhlaWdodCgpICsgbV9jYXB0aW9uc1tpXS0+bWFyZ2luQmVmb3JlKCkgKyBt
X2NhcHRpb25zW2ldLT5tYXJnaW5BZnRlcigpOwogICAgICAgICB9CkBAIC02NjgsNyArNjY4LDcg
QEAgdm9pZCBSZW5kZXJUYWJsZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludAogdm9pZCBSZW5kZXJU
YWJsZTo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mZnNldCkKIHsKICAgICBQYWludFBoYXNlIHBhaW50UGhhc2UgPSBwYWludEluZm8u
cGhhc2U7Ci0gICAgaWYgKChwYWludFBoYXNlID09IFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQg
fHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlQ2hpbGRCbG9ja0JhY2tncm91bmQpICYmIGhhc1Zp
c2libGVCb3hEZWNvcmF0aW9ucygpICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUp
CisgICAgaWYgKChwYWludFBoYXNlID09IFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQgfHwgcGFp
bnRQaGFzZSA9PSBQYWludFBoYXNlQ2hpbGRCbG9ja0JhY2tncm91bmQpICYmIGhhc1Zpc2libGVC
b3hEZWNvcmF0aW9ucygpICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZp
c2libGUpCiAgICAgICAgIHBhaW50Qm94RGVjb3JhdGlvbnMocGFpbnRJbmZvLCBwYWludE9mZnNl
dCk7CiAKICAgICBpZiAocGFpbnRQaGFzZSA9PSBQYWludFBoYXNlTWFzaykgewpAQCAtNjk1LDcg
KzY5NSw3IEBAIHZvaWQgUmVuZGVyVGFibGU6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYKICAgICAg
ICAgfQogICAgIH0KICAgICAKLSAgICBpZiAoY29sbGFwc2VCb3JkZXJzKCkgJiYgcGFpbnRQaGFz
ZSA9PSBQYWludFBoYXNlQ2hpbGRCbG9ja0JhY2tncm91bmQgJiYgc3R5bGUoKS52aXNpYmlsaXR5
KCkgPT0gVklTSUJMRSkgeworICAgIGlmIChjb2xsYXBzZUJvcmRlcnMoKSAmJiBwYWludFBoYXNl
ID09IFBhaW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZCAmJiBzdHlsZSgpLnZpc2liaWxpdHko
KSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlKSB7CiAgICAgICAgIHJlY2FsY0NvbGxhcHNlZEJvcmRl
cnMoKTsKICAgICAgICAgLy8gVXNpbmcgb3VyIGNhY2hlZCBzb3J0ZWQgc3R5bGVzLCB3ZSB0aGVu
IGRvIGluZGl2aWR1YWwgcGFzc2VzLAogICAgICAgICAvLyBwYWludGluZyBlYWNoIHN0eWxlIG9m
IGJvcmRlciBmcm9tIGxvd2VzdCBwcmVjZWRlbmNlIHRvIGhpZ2hlc3QgcHJlY2VkZW5jZS4KQEAg
LTcxMiw3ICs3MTIsNyBAQCB2b2lkIFJlbmRlclRhYmxlOjpwYWludE9iamVjdChQYWludEluZm8m
CiAgICAgfQogCiAgICAgLy8gUGFpbnQgb3V0bGluZS4KLSAgICBpZiAoKHBhaW50UGhhc2UgPT0g
UGFpbnRQaGFzZU91dGxpbmUgfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlU2VsZk91dGxpbmUp
ICYmIGhhc091dGxpbmUoKSAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKQorICAg
IGlmICgocGFpbnRQaGFzZSA9PSBQYWludFBoYXNlT3V0bGluZSB8fCBwYWludFBoYXNlID09IFBh
aW50UGhhc2VTZWxmT3V0bGluZSkgJiYgaGFzT3V0bGluZSgpICYmIHN0eWxlKCkudmlzaWJpbGl0
eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgIHBhaW50T3V0bGluZShwYWludElu
Zm8sIExheW91dFJlY3QocGFpbnRPZmZzZXQsIHNpemUoKSkpOwogfQogCkBAIC03MjAsNyArNzIw
LDcgQEAgdm9pZCBSZW5kZXJUYWJsZTo6YWRqdXN0Qm9yZGVyQm94UmVjdEZvcgogewogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2NhcHRpb25zLnNpemUoKTsgaSsrKSB7CiAgICAgICAg
IExheW91dFVuaXQgY2FwdGlvbkxvZ2ljYWxIZWlnaHQgPSBtX2NhcHRpb25zW2ldLT5sb2dpY2Fs
SGVpZ2h0KCkgKyBtX2NhcHRpb25zW2ldLT5tYXJnaW5CZWZvcmUoKSArIG1fY2FwdGlvbnNbaV0t
Pm1hcmdpbkFmdGVyKCk7Ci0gICAgICAgIGJvb2wgY2FwdGlvbklzQmVmb3JlID0gKG1fY2FwdGlv
bnNbaV0tPnN0eWxlKCkuY2FwdGlvblNpZGUoKSAhPSBDQVBCT1RUT00pIF4gc3R5bGUoKS5pc0Zs
aXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpOworICAgICAgICBib29sIGNhcHRpb25Jc0JlZm9yZSA9
IChtX2NhcHRpb25zW2ldLT5zdHlsZSgpLmNhcHRpb25TaWRlKCkgIT0gQ2FwdGlvblNpZGU6OkJv
dHRvbSkgXiBzdHlsZSgpLmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCk7CiAgICAgICAgIGlm
IChzdHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpIHsKICAgICAgICAgICAgIHJlY3Qu
c2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkgLSBjYXB0aW9uTG9naWNhbEhlaWdodCk7CiAgICAgICAg
ICAgICBpZiAoY2FwdGlvbklzQmVmb3JlKQpAQCAtNzU1LDcgKzc1NSw3IEBAIHZvaWQgUmVuZGVy
VGFibGU6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGEKIAogdm9pZCBSZW5kZXJUYWJsZTo6cGFpbnRN
YXNrKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQp
CiB7Ci0gICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgcGFpbnRJbmZv
LnBoYXNlICE9IFBhaW50UGhhc2VNYXNrKQorICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAh
PSBWaXNpYmlsaXR5OjpWaXNpYmxlIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlTWFz
aykKICAgICAgICAgcmV0dXJuOwogCiAgICAgTGF5b3V0UmVjdCByZWN0KHBhaW50T2Zmc2V0LCBz
aXplKCkpOwpAQCAtMTAxMywxMSArMTAxMywxMSBAQCB2b2lkIFJlbmRlclRhYmxlOjpyZWNhbGNT
ZWN0aW9ucygpIGNvbnN0CiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gZmlyc3RDaGls
ZCgpOyBjaGlsZDsgY2hpbGQgPSBuZXh0U2libGluZykgewogICAgICAgICBuZXh0U2libGluZyA9
IGNoaWxkLT5uZXh0U2libGluZygpOwogICAgICAgICBzd2l0Y2ggKGNoaWxkLT5zdHlsZSgpLmRp
c3BsYXkoKSkgewotICAgICAgICBjYXNlIFRBQkxFX0NPTFVNTjoKLSAgICAgICAgY2FzZSBUQUJM
RV9DT0xVTU5fR1JPVVA6CisgICAgICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlQ29sdW1uOgor
ICAgICAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZUNvbHVtbkdyb3VwOgogICAgICAgICAgICAg
bV9oYXNDb2xFbGVtZW50cyA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBUQUJMRV9IRUFERVJfR1JPVVA6CisgICAgICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlSGVh
ZGVyR3JvdXA6CiAgICAgICAgICAgICBpZiAoaXM8UmVuZGVyVGFibGVTZWN0aW9uPigqY2hpbGQp
KSB7CiAgICAgICAgICAgICAgICAgUmVuZGVyVGFibGVTZWN0aW9uJiBzZWN0aW9uID0gZG93bmNh
c3Q8UmVuZGVyVGFibGVTZWN0aW9uPigqY2hpbGQpOwogICAgICAgICAgICAgICAgIGlmICghbV9o
ZWFkKQpAQCAtMTAyNyw3ICsxMDI3LDcgQEAgdm9pZCBSZW5kZXJUYWJsZTo6cmVjYWxjU2VjdGlv
bnMoKSBjb25zdAogICAgICAgICAgICAgICAgIHNlY3Rpb24ucmVjYWxjQ2VsbHNJZk5lZWRlZCgp
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVEFCTEVf
Rk9PVEVSX0dST1VQOgorICAgICAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZUZvb3Rlckdyb3Vw
OgogICAgICAgICAgICAgaWYgKGlzPFJlbmRlclRhYmxlU2VjdGlvbj4oKmNoaWxkKSkgewogICAg
ICAgICAgICAgICAgIFJlbmRlclRhYmxlU2VjdGlvbiYgc2VjdGlvbiA9IGRvd25jYXN0PFJlbmRl
clRhYmxlU2VjdGlvbj4oKmNoaWxkKTsKICAgICAgICAgICAgICAgICBpZiAoIW1fZm9vdCkKQEAg
LTEwMzcsNyArMTAzNyw3IEBAIHZvaWQgUmVuZGVyVGFibGU6OnJlY2FsY1NlY3Rpb25zKCkgY29u
c3QKICAgICAgICAgICAgICAgICBzZWN0aW9uLnJlY2FsY0NlbGxzSWZOZWVkZWQoKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFRBQkxFX1JPV19HUk9V
UDoKKyAgICAgICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFibGVSb3dHcm91cDoKICAgICAgICAgICAg
IGlmIChpczxSZW5kZXJUYWJsZVNlY3Rpb24+KCpjaGlsZCkpIHsKICAgICAgICAgICAgICAgICBS
ZW5kZXJUYWJsZVNlY3Rpb24mIHNlY3Rpb24gPSBkb3duY2FzdDxSZW5kZXJUYWJsZVNlY3Rpb24+
KCpjaGlsZCk7CiAgICAgICAgICAgICAgICAgaWYgKCFtX2ZpcnN0Qm9keSkKQEAgLTE1MjgsNyAr
MTUyOCw3IEBAIGJvb2wgUmVuZGVyVGFibGU6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFQKIAogUmVu
ZGVyUHRyPFJlbmRlclRhYmxlPiBSZW5kZXJUYWJsZTo6Y3JlYXRlVGFibGVXaXRoU3R5bGUoRG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgYXV0byB0
YWJsZSA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclRhYmxlPihkb2N1bWVudCwgUmVuZGVyU3R5bGU6
OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUsIHN0eWxlLmRpc3BsYXkoKSA9
PSBJTkxJTkUgPyBJTkxJTkVfVEFCTEUgOiBUQUJMRSkpOworICAgIGF1dG8gdGFibGUgPSBjcmVh
dGVSZW5kZXJlcjxSZW5kZXJUYWJsZT4oZG9jdW1lbnQsIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9u
eW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlLCBzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5
cGU6OklubGluZSA/IERpc3BsYXlUeXBlOjpJbmxpbmVUYWJsZSA6IERpc3BsYXlUeXBlOjpUYWJs
ZSkpOwogICAgIHRhYmxlLT5pbml0aWFsaXplU3R5bGUoKTsKICAgICByZXR1cm4gdGFibGU7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAko
cmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyMCw3ICs0MjAsNyBAQCBzdGF0aWMgaW5saW5l
IHZvaWQgbWFya0NlbGxEaXJ0eVdoZW5Db2xsCiAKIHZvaWQgUmVuZGVyVGFibGVDZWxsOjpzdHls
ZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0
eWxlKQogewotICAgIEFTU0VSVChzdHlsZSgpLmRpc3BsYXkoKSA9PSBUQUJMRV9DRUxMKTsKKyAg
ICBBU1NFUlQoc3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxlQ2VsbCk7CiAg
ICAgQVNTRVJUKCFyb3coKSB8fCByb3coKS0+cm93SW5kZXhXYXNTZXQoKSk7CiAKICAgICBSZW5k
ZXJCbG9ja0Zsb3c6OnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0eWxlKTsKQEAgLTExOTgsNyAr
MTE5OCw3IEBAIHZvaWQgUmVuZGVyVGFibGVDZWxsOjpwYWludENvbGxhcHNlZEJvcmQKIHsKICAg
ICBBU1NFUlQocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VDb2xsYXBzZWRUYWJsZUJvcmRl
cnMpOwogCi0gICAgaWYgKCFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KCp0aGlzKSB8
fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmICghcGFpbnRJbmZvLnNo
b3VsZFBhaW50V2l0aGluUm9vdCgqdGhpcykgfHwgc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlz
aWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTGF5b3V0UmVjdCBsb2Nh
bFJlcGFpbnRSZWN0ID0gcGFpbnRJbmZvLnJlY3Q7CkBAIC0xMjcxLDExICsxMjcxLDExIEBAIHZv
aWQgUmVuZGVyVGFibGVDZWxsOjpwYWludEJhY2tncm91bmRzQmUKICAgICBpZiAoIWJhY2tncm91
bmRPYmplY3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHko
KSAhPSBWSVNJQkxFKQorICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5
OjpWaXNpYmxlKQogICAgICAgICByZXR1cm47CiAKICAgICBSZW5kZXJUYWJsZSogdGFibGVFbHQg
PSB0YWJsZSgpOwotICAgIGlmICghdGFibGVFbHQtPmNvbGxhcHNlQm9yZGVycygpICYmIHN0eWxl
KCkuZW1wdHlDZWxscygpID09IEhJREUgJiYgIWZpcnN0Q2hpbGQoKSkKKyAgICBpZiAoIXRhYmxl
RWx0LT5jb2xsYXBzZUJvcmRlcnMoKSAmJiBzdHlsZSgpLmVtcHR5Q2VsbHMoKSA9PSBFbXB0eUNl
bGw6OkhpZGUgJiYgIWZpcnN0Q2hpbGQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTGF5b3V0
UG9pbnQgYWRqdXN0ZWRQYWludE9mZnNldCA9IHBhaW50T2Zmc2V0OwpAQCAtMTMwNSw3ICsxMzA1
LDcgQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnBhaW50Qm94RGVjb3JhdGlvbgogICAgICAgICBy
ZXR1cm47CiAKICAgICBSZW5kZXJUYWJsZSogdGFibGUgPSB0aGlzLT50YWJsZSgpOwotICAgIGlm
ICghdGFibGUtPmNvbGxhcHNlQm9yZGVycygpICYmIHN0eWxlKCkuZW1wdHlDZWxscygpID09IEhJ
REUgJiYgIWZpcnN0Q2hpbGQoKSkKKyAgICBpZiAoIXRhYmxlLT5jb2xsYXBzZUJvcmRlcnMoKSAm
JiBzdHlsZSgpLmVtcHR5Q2VsbHMoKSA9PSBFbXB0eUNlbGw6OkhpZGUgJiYgIWZpcnN0Q2hpbGQo
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTGF5b3V0UmVjdCBwYWludFJlY3QgPSBMYXlvdXRS
ZWN0KHBhaW50T2Zmc2V0LCBmcmFtZVJlY3QoKS5zaXplKCkpOwpAQCAtMTMyNiwxMSArMTMyNiwx
MSBAQCB2b2lkIFJlbmRlclRhYmxlQ2VsbDo6cGFpbnRCb3hEZWNvcmF0aW9uCiAKIHZvaWQgUmVu
ZGVyVGFibGVDZWxsOjpwYWludE1hc2soUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mZnNldCkKIHsKLSAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0g
VklTSUJMRSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZU1hc2spCisgICAgaWYgKHN0
eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgfHwgcGFpbnRJbmZvLnBo
YXNlICE9IFBhaW50UGhhc2VNYXNrKQogICAgICAgICByZXR1cm47CiAKICAgICBSZW5kZXJUYWJs
ZSogdGFibGVFbHQgPSB0YWJsZSgpOwotICAgIGlmICghdGFibGVFbHQtPmNvbGxhcHNlQm9yZGVy
cygpICYmIHN0eWxlKCkuZW1wdHlDZWxscygpID09IEhJREUgJiYgIWZpcnN0Q2hpbGQoKSkKKyAg
ICBpZiAoIXRhYmxlRWx0LT5jb2xsYXBzZUJvcmRlcnMoKSAmJiBzdHlsZSgpLmVtcHR5Q2VsbHMo
KSA9PSBFbXB0eUNlbGw6OkhpZGUgJiYgIWZpcnN0Q2hpbGQoKSkKICAgICAgICAgcmV0dXJuOwog
ICAgCiAgICAgTGF5b3V0UmVjdCBwYWludFJlY3QgPSBMYXlvdXRSZWN0KHBhaW50T2Zmc2V0LCBm
cmFtZVJlY3QoKS5zaXplKCkpOwpAQCAtMTM3MCw3ICsxMzcwLDcgQEAgdm9pZCBSZW5kZXJUYWJs
ZUNlbGw6OnNjcm9sbGJhcnNDaGFuZ2VkKAogCiBSZW5kZXJQdHI8UmVuZGVyVGFibGVDZWxsPiBS
ZW5kZXJUYWJsZUNlbGw6OmNyZWF0ZVRhYmxlQ2VsbFdpdGhTdHlsZShEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICBhdXRvIGNlbGwgPSBjcmVhdGVS
ZW5kZXJlcjxSZW5kZXJUYWJsZUNlbGw+KGRvY3VtZW50LCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5v
bnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSwgVEFCTEVfQ0VMTCkpOworICAgIGF1dG8gY2Vs
bCA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclRhYmxlQ2VsbD4oZG9jdW1lbnQsIFJlbmRlclN0eWxl
OjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlLCBEaXNwbGF5VHlwZTo6VGFi
bGVDZWxsKSk7CiAgICAgY2VsbC0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAgcmV0dXJuIGNlbGw7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHAJ
KHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZUNvbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBSZW5kZXJUYWJs
ZUNvbDo6dXBkYXRlRnJvbUVsZW1lbnQoKQogICAgICAgICBIVE1MVGFibGVDb2xFbGVtZW50JiB0
YyA9IHN0YXRpY19jYXN0PEhUTUxUYWJsZUNvbEVsZW1lbnQmPihlbGVtZW50KCkpOwogICAgICAg
ICBtX3NwYW4gPSB0Yy5zcGFuKCk7CiAgICAgfSBlbHNlCi0gICAgICAgIG1fc3BhbiA9ICEoaGFz
SW5pdGlhbGl6ZWRTdHlsZSgpICYmIHN0eWxlKCkuZGlzcGxheSgpID09IFRBQkxFX0NPTFVNTl9H
Uk9VUCk7CisgICAgICAgIG1fc3BhbiA9ICEoaGFzSW5pdGlhbGl6ZWRTdHlsZSgpICYmIHN0eWxl
KCkuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpUYWJsZUNvbHVtbkdyb3VwKTsKICAgICBpZiAo
bV9zcGFuICE9IG9sZFNwYW4gJiYgaGFzSW5pdGlhbGl6ZWRTdHlsZSgpICYmIHBhcmVudCgpKQog
ICAgICAgICBzZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKIH0KQEAgLTEwMiw3
ICsxMDIsNyBAQCB2b2lkIFJlbmRlclRhYmxlQ29sOjp3aWxsQmVSZW1vdmVkRnJvbVRyCiBib29s
IFJlbmRlclRhYmxlQ29sOjppc0NoaWxkQWxsb3dlZChjb25zdCBSZW5kZXJPYmplY3QmIGNoaWxk
LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0CiB7CiAgICAgLy8gV2UgY2Fubm90IHVz
ZSBpc1RhYmxlQ29sdW1uIGhlcmUgYXMgc3R5bGUoKSBtYXkgcmV0dXJuIDAuCi0gICAgcmV0dXJu
IHN0eWxlLmRpc3BsYXkoKSA9PSBUQUJMRV9DT0xVTU4gJiYgY2hpbGQuaXNSZW5kZXJUYWJsZUNv
bCgpOworICAgIHJldHVybiBzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxlQ29s
dW1uICYmIGNoaWxkLmlzUmVuZGVyVGFibGVDb2woKTsKIH0KIAogYm9vbCBSZW5kZXJUYWJsZUNv
bDo6Y2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZUNvbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZUNvbC5oCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsOCArNDQsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTcGFuKHVuc2lnbmVkIHNwYW4pIHsgbV9zcGFuID0gc3Bh
bjsgfQogCiAgICAgYm9vbCBpc1RhYmxlQ29sdW1uR3JvdXBXaXRoQ29sdW1uQ2hpbGRyZW4oKSBj
b25zdCB7IHJldHVybiBmaXJzdENoaWxkKCk7IH0KLSAgICBib29sIGlzVGFibGVDb2x1bW4oKSBj
b25zdCB7IHJldHVybiBzdHlsZSgpLmRpc3BsYXkoKSA9PSBUQUJMRV9DT0xVTU47IH0KLSAgICBi
b29sIGlzVGFibGVDb2x1bW5Hcm91cCgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCkuZGlzcGxheSgp
ID09IFRBQkxFX0NPTFVNTl9HUk9VUDsgfQorICAgIGJvb2wgaXNUYWJsZUNvbHVtbigpIGNvbnN0
IHsgcmV0dXJuIHN0eWxlKCkuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpUYWJsZUNvbHVtbjsg
fQorICAgIGJvb2wgaXNUYWJsZUNvbHVtbkdyb3VwKCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS5k
aXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxlQ29sdW1uR3JvdXA7IH0KIAogICAgIFJlbmRl
clRhYmxlQ29sKiBlbmNsb3NpbmdDb2x1bW5Hcm91cCgpIGNvbnN0OwogICAgIFJlbmRlclRhYmxl
Q29sKiBlbmNsb3NpbmdDb2x1bW5Hcm91cElmQWRqYWNlbnRCZWZvcmUoKSBjb25zdDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcAkocmV2aXNpb24g
MjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgYm9vbCBib3JkZXJXaWR0aENo
YW5nZWQoY29uc3QgUmVuCiAKIHZvaWQgUmVuZGVyVGFibGVSb3c6OnN0eWxlRGlkQ2hhbmdlKFN0
eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpCiB7Ci0gICAg
QVNTRVJUKHN0eWxlKCkuZGlzcGxheSgpID09IFRBQkxFX1JPVyk7CisgICAgQVNTRVJUKHN0eWxl
KCkuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpUYWJsZVJvdyk7CiAKICAgICBSZW5kZXJCb3g6
OnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0eWxlKTsKICAgICBwcm9wYWdhdGVTdHlsZVRvQW5v
bnltb3VzQ2hpbGRyZW4oUHJvcGFnYXRlVG9BbGxDaGlsZHJlbik7CkBAIC0yMDEsNyArMjAxLDcg
QEAgdm9pZCBSZW5kZXJUYWJsZVJvdzo6cGFpbnRPdXRsaW5lRm9yUm93SQogewogICAgIExheW91
dFBvaW50IGFkanVzdGVkUGFpbnRPZmZzZXQgPSBwYWludE9mZnNldCArIGxvY2F0aW9uKCk7CiAg
ICAgUGFpbnRQaGFzZSBwYWludFBoYXNlID0gcGFpbnRJbmZvLnBoYXNlOwotICAgIGlmICgocGFp
bnRQaGFzZSA9PSBQYWludFBoYXNlT3V0bGluZSB8fCBwYWludFBoYXNlID09IFBhaW50UGhhc2VT
ZWxmT3V0bGluZSkgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkKKyAgICBpZiAo
KHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZU91dGxpbmUgfHwgcGFpbnRQaGFzZSA9PSBQYWludFBo
YXNlU2VsZk91dGxpbmUpICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZp
c2libGUpCiAgICAgICAgIHBhaW50T3V0bGluZShwYWludEluZm8sIExheW91dFJlY3QoYWRqdXN0
ZWRQYWludE9mZnNldCwgc2l6ZSgpKSk7CiB9CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIFJl
bmRlclRhYmxlUm93OjppbWFnZUNoYW5nZWQoV3JhcHBlCiAKIFJlbmRlclB0cjxSZW5kZXJUYWJs
ZVJvdz4gUmVuZGVyVGFibGVSb3c6OmNyZWF0ZVRhYmxlUm93V2l0aFN0eWxlKERvY3VtZW50JiBk
b2N1bWVudCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewotICAgIGF1dG8gcm93ID0gY3Jl
YXRlUmVuZGVyZXI8UmVuZGVyVGFibGVSb3c+KGRvY3VtZW50LCBSZW5kZXJTdHlsZTo6Y3JlYXRl
QW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSwgVEFCTEVfUk9XKSk7CisgICAgYXV0byBy
b3cgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJUYWJsZVJvdz4oZG9jdW1lbnQsIFJlbmRlclN0eWxl
OjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlLCBEaXNwbGF5VHlwZTo6VGFi
bGVSb3cpKTsKICAgICByb3ctPmluaXRpYWxpemVTdHlsZSgpOwogICAgIHJldHVybiByb3c7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9u
LmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlU2VjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OCwxMCArMTY4LDEwIEBAIHZv
aWQgUmVuZGVyVGFibGVTZWN0aW9uOjphZGRDZWxsKFJlbmRlclQKIAogICAgIC8vICMjIyBtb3pp
bGxhIHN0aWxsIHNlZW1zIHRvIGRvIHRoZSBvbGQgSFRNTCB3YXksIGV2ZW4gZm9yIHN0cmljdCBE
VEQKICAgICAvLyAoc2VlIHRoZSBhbm5vdGF0aW9uIG9uIHRhYmxlIGNlbGwgbGF5b3V0aW5nIGlu
IHRoZSBDU1Mgc3BlY3MgYW5kIHRoZSB0ZXN0Y2FzZSBiZWxvdzoKLSAgICAvLyA8VEFCTEUgYm9y
ZGVyPgorICAgIC8vIDxEaXNwbGF5VHlwZTo6VGFibGUgYm9yZGVyPgogICAgIC8vIDxUUj48VEQ+
MSA8VEQgcm93c3Bhbj0iMiI+MiA8VEQ+MyA8VEQ+NAogICAgIC8vIDxUUj48VEQgY29sc3Bhbj0i
MiI+NQotICAgIC8vIDwvVEFCTEU+CisgICAgLy8gPC9EaXNwbGF5VHlwZTo6VGFibGU+CiAgICAg
d2hpbGUgKG1fY0NvbCA8IG5Db2xzICYmIChjZWxsQXQoaW5zZXJ0aW9uUm93LCBtX2NDb2wpLmhh
c0NlbGxzKCkgfHwgY2VsbEF0KGluc2VydGlvblJvdywgbV9jQ29sKS5pbkNvbFNwYW4pKQogICAg
ICAgICBtX2NDb2wrKzsKIApAQCAtOTE2LDcgKzkxNiw3IEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0
aW9uOjpwYWludChQYWludEluZm8KICAgICBpZiAocHVzaGVkQ2xpcCkKICAgICAgICAgcG9wQ29u
dGVudHNDbGlwKHBhaW50SW5mbywgcGhhc2UsIGFkanVzdGVkUGFpbnRPZmZzZXQpOwogCi0gICAg
aWYgKChwaGFzZSA9PSBQYWludFBoYXNlT3V0bGluZSB8fCBwaGFzZSA9PSBQYWludFBoYXNlU2Vs
Zk91dGxpbmUpICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUpCisgICAgaWYgKChw
aGFzZSA9PSBQYWludFBoYXNlT3V0bGluZSB8fCBwaGFzZSA9PSBQYWludFBoYXNlU2VsZk91dGxp
bmUpICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAg
ICAgIHBhaW50T3V0bGluZShwYWludEluZm8sIExheW91dFJlY3QoYWRqdXN0ZWRQYWludE9mZnNl
dCwgc2l6ZSgpKSk7CiB9CiAKQEAgLTE1NTEsNyArMTU1MSw3IEBAIENvbGxhcHNlZEJvcmRlclZh
bHVlIFJlbmRlclRhYmxlU2VjdGlvbjoKIAogUmVuZGVyUHRyPFJlbmRlclRhYmxlU2VjdGlvbj4g
UmVuZGVyVGFibGVTZWN0aW9uOjpjcmVhdGVUYWJsZVNlY3Rpb25XaXRoU3R5bGUoRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgYXV0byBzZWN0aW9u
ID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyVGFibGVTZWN0aW9uPihkb2N1bWVudCwgUmVuZGVyU3R5
bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUsIFRBQkxFX1JPV19HUk9V
UCkpOworICAgIGF1dG8gc2VjdGlvbiA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclRhYmxlU2VjdGlv
bj4oZG9jdW1lbnQsIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5
KHN0eWxlLCBEaXNwbGF5VHlwZTo6VGFibGVSb3dHcm91cCkpOwogICAgIHNlY3Rpb24tPmluaXRp
YWxpemVTdHlsZSgpOwogICAgIHJldHVybiBzZWN0aW9uOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzEsNyAr
MjcxLDcgQEAgdm9pZCBSZW5kZXJUZXh0OjpzdHlsZURpZENoYW5nZShTdHlsZURpZgogICAgIGlm
ICghb2xkU3R5bGUgfHwgb2xkU3R5bGUtPmZvbnRDYXNjYWRlKCkgIT0gbmV3U3R5bGUuZm9udENh
c2NhZGUoKSkKICAgICAgICAgbV9jYW5Vc2VTaW1wbGlmaWVkVGV4dE1lYXN1cmluZyA9IGNvbXB1
dGVDYW5Vc2VTaW1wbGlmaWVkVGV4dE1lYXN1cmluZygpOwogCi0gICAgRVRleHRUcmFuc2Zvcm0g
b2xkVHJhbnNmb3JtID0gb2xkU3R5bGUgPyBvbGRTdHlsZS0+dGV4dFRyYW5zZm9ybSgpIDogVFRO
T05FOworICAgIFRleHRUcmFuc2Zvcm0gb2xkVHJhbnNmb3JtID0gb2xkU3R5bGUgPyBvbGRTdHls
ZS0+dGV4dFRyYW5zZm9ybSgpIDogVGV4dFRyYW5zZm9ybTo6Tm9uZTsKICAgICBUZXh0U2VjdXJp
dHkgb2xkU2VjdXJpdHkgPSBvbGRTdHlsZSA/IG9sZFN0eWxlLT50ZXh0U2VjdXJpdHkoKSA6IFRl
eHRTZWN1cml0eTo6Tm9uZTsKICAgICBpZiAobmVlZHNSZXNldFRleHQgfHwgb2xkVHJhbnNmb3Jt
ICE9IG5ld1N0eWxlLnRleHRUcmFuc2Zvcm0oKSB8fCBvbGRTZWN1cml0eSAhPSBuZXdTdHlsZS50
ZXh0U2VjdXJpdHkoKSkKICAgICAgICAgUmVuZGVyVGV4dDo6c2V0VGV4dChvcmlnaW5hbFRleHQo
KSwgdHJ1ZSk7CkBAIC04MDgsNyArODA4LDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJl
ZmVycmVkTG9naWNhbAogICAgIGZsb2F0IG1heFdvcmRXaWR0aCA9IHN0ZDo6bnVtZXJpY19saW1p
dHM8ZmxvYXQ+OjptYXgoKTsKICAgICB1bnNpZ25lZCBtaW5pbXVtUHJlZml4TGVuZ3RoID0gMDsK
ICAgICB1bnNpZ25lZCBtaW5pbXVtU3VmZml4TGVuZ3RoID0gMDsKLSAgICBpZiAoc3R5bGUuaHlw
aGVucygpID09IEh5cGhlbnNBdXRvICYmIGNhbkh5cGhlbmF0ZShzdHlsZS5sb2NhbGUoKSkpIHsK
KyAgICBpZiAoc3R5bGUuaHlwaGVucygpID09IEh5cGhlbnM6OkF1dG8gJiYgY2FuSHlwaGVuYXRl
KHN0eWxlLmxvY2FsZSgpKSkgewogICAgICAgICBtYXhXb3JkV2lkdGggPSAwOwogCiAgICAgICAg
IC8vIE1hcCAnaHlwaGVuYXRlLWxpbWl0LXtiZWZvcmUsYWZ0ZXJ9OiBhdXRvOycgdG8gMi4KQEAg
LTg2NSw3ICs4NjUsNyBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2Fs
CiAgICAgICAgICAgICBBU1NFUlQobGFzdFdvcmRCb3VuZGFyeSA9PSBpKTsKICAgICAgICAgICAg
IGxhc3RXb3JkQm91bmRhcnkrKzsKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9IGVs
c2UgaWYgKGMgPT0gc29mdEh5cGhlbiAmJiBzdHlsZS5oeXBoZW5zKCkgIT0gSHlwaGVuc05vbmUp
IHsKKyAgICAgICAgfSBlbHNlIGlmIChjID09IHNvZnRIeXBoZW4gJiYgc3R5bGUuaHlwaGVucygp
ICE9IEh5cGhlbnM6Ok5vbmUpIHsKICAgICAgICAgICAgIEFTU0VSVChpID49IGxhc3RXb3JkQm91
bmRhcnkpOwogICAgICAgICAgICAgY3Vyck1heFdpZHRoICs9IHdpZHRoRnJvbUNhY2hlKGZvbnQs
IGxhc3RXb3JkQm91bmRhcnksIGkgLSBsYXN0V29yZEJvdW5kYXJ5LCBsZWFkV2lkdGggKyBjdXJy
TWF4V2lkdGgsICZmYWxsYmFja0ZvbnRzLCAmZ2x5cGhPdmVyZmxvdywgc3R5bGUpOwogICAgICAg
ICAgICAgaWYgKCFmaXJzdEdseXBoTGVmdE92ZXJmbG93KQpAQCAtODc3LDcgKzg3Nyw3IEBAIHZv
aWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWwKICAgICAgICAgYm9vbCBoYXNC
cmVhayA9IGJyZWFrQWxsIHx8IGlzQnJlYWthYmxlKGJyZWFrSXRlcmF0b3IsIGksIG5leHRCcmVh
a2FibGUsIGJyZWFrTkJTUCwgY2FuVXNlTGluZUJyZWFrU2hvcnRjdXQsIGtlZXBBbGxXb3Jkcyk7
CiAgICAgICAgIGJvb2wgYmV0d2VlbldvcmRzID0gdHJ1ZTsKICAgICAgICAgdW5zaWduZWQgaiA9
IGk7Ci0gICAgICAgIHdoaWxlIChjICE9ICdcbicgJiYgIWlzU3BhY2VBY2NvcmRpbmdUb1N0eWxl
KGMsIHN0eWxlKSAmJiBjICE9ICdcdCcgJiYgKGMgIT0gc29mdEh5cGhlbiB8fCBzdHlsZS5oeXBo
ZW5zKCkgPT0gSHlwaGVuc05vbmUpKSB7CisgICAgICAgIHdoaWxlIChjICE9ICdcbicgJiYgIWlz
U3BhY2VBY2NvcmRpbmdUb1N0eWxlKGMsIHN0eWxlKSAmJiBjICE9ICdcdCcgJiYgKGMgIT0gc29m
dEh5cGhlbiB8fCBzdHlsZS5oeXBoZW5zKCkgPT0gSHlwaGVuczo6Tm9uZSkpIHsKICAgICAgICAg
ICAgIGorKzsKICAgICAgICAgICAgIGlmIChqID09IGxlbmd0aCkKICAgICAgICAgICAgICAgICBi
cmVhazsKQEAgLTkwMiw3ICs5MDIsNyBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJy
ZWRMb2dpY2FsCiAgICAgICAgICAgICAgICAgdyA9IHdpZHRoRnJvbUNhY2hlKGZvbnQsIGksIHdv
cmRMZW4gKyAxLCBsZWFkV2lkdGggKyBjdXJyTWF4V2lkdGgsICZmYWxsYmFja0ZvbnRzLCAmZ2x5
cGhPdmVyZmxvdywgc3R5bGUpIC0gd29yZFRyYWlsaW5nU3BhY2VXaWR0aC52YWx1ZSgpOwogICAg
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgdyA9IHdpZHRoRnJvbUNhY2hlKGZvbnQs
IGksIHdvcmRMZW4sIGxlYWRXaWR0aCArIGN1cnJNYXhXaWR0aCwgJmZhbGxiYWNrRm9udHMsICZn
bHlwaE92ZXJmbG93LCBzdHlsZSk7Ci0gICAgICAgICAgICAgICAgaWYgKGMgPT0gc29mdEh5cGhl
biAmJiBzdHlsZS5oeXBoZW5zKCkgIT0gSHlwaGVuc05vbmUpCisgICAgICAgICAgICAgICAgaWYg
KGMgPT0gc29mdEh5cGhlbiAmJiBzdHlsZS5oeXBoZW5zKCkgIT0gSHlwaGVuczo6Tm9uZSkKICAg
ICAgICAgICAgICAgICAgICAgY3Vyck1pbldpZHRoID0gaHlwaGVuV2lkdGgoKnRoaXMsIGZvbnQp
OwogICAgICAgICAgICAgfQogCkBAIC0xMDA1LDcgKzEwMDUsNyBAQCB2b2lkIFJlbmRlclRleHQ6
OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsCiAgICAgaWYgKCFzdHlsZS5hdXRvV3JhcCgpKQogICAg
ICAgICBtX21pbldpZHRoID0gbV9tYXhXaWR0aDsKIAotICAgIGlmIChzdHlsZS53aGl0ZVNwYWNl
KCkgPT0gUFJFKSB7CisgICAgaWYgKHN0eWxlLndoaXRlU3BhY2UoKSA9PSBXaGl0ZVNwYWNlOjpQ
cmUpIHsKICAgICAgICAgaWYgKGZpcnN0TGluZSkKICAgICAgICAgICAgIG1fYmVnaW5NaW5XaWR0
aCA9IG1fbWF4V2lkdGg7CiAgICAgICAgIG1fZW5kTWluV2lkdGggPSBjdXJyTWF4V2lkdGg7CkBA
IC0xMTM3LDEzICsxMTM3LDEzIEBAIExheW91dFVuaXQgUmVuZGVyVGV4dDo6dG9wT2ZGaXJzdFRl
eHQoKSAKIFN0cmluZyBhcHBseVRleHRUcmFuc2Zvcm0oY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
LCBjb25zdCBTdHJpbmcmIHRleHQsIFVDaGFyIHByZXZpb3VzQ2hhcmFjdGVyKQogewogICAgIHN3
aXRjaCAoc3R5bGUudGV4dFRyYW5zZm9ybSgpKSB7Ci0gICAgY2FzZSBUVE5PTkU6CisgICAgY2Fz
ZSBUZXh0VHJhbnNmb3JtOjpOb25lOgogICAgICAgICByZXR1cm4gdGV4dDsKLSAgICBjYXNlIENB
UElUQUxJWkU6CisgICAgY2FzZSBUZXh0VHJhbnNmb3JtOjpDYXBpdGFsaXplOgogICAgICAgICBy
ZXR1cm4gY2FwaXRhbGl6ZSh0ZXh0LCBwcmV2aW91c0NoYXJhY3Rlcik7IC8vIEZJWE1FOiBOZWVk
IHRvIHRha2UgbG9jYWxlIGludG8gYWNjb3VudC4KLSAgICBjYXNlIFVQUEVSQ0FTRToKKyAgICBj
YXNlIFRleHRUcmFuc2Zvcm06OlVwcGVyY2FzZToKICAgICAgICAgcmV0dXJuIHRleHQuY29udmVy
dFRvVXBwZXJjYXNlV2l0aExvY2FsZShzdHlsZS5sb2NhbGUoKSk7Ci0gICAgY2FzZSBMT1dFUkNB
U0U6CisgICAgY2FzZSBUZXh0VHJhbnNmb3JtOjpMb3dlcmNhc2U6CiAgICAgICAgIHJldHVybiB0
ZXh0LmNvbnZlcnRUb0xvd2VyY2FzZVdpdGhMb2NhbGUoc3R5bGUubG9jYWxlKCkpOwogICAgIH0K
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFJlbmRlclRleHRGcmFnbWVudDo6c3R5bGVEaWRDaGFu
Z2UoCiAgICAgUmVuZGVyVGV4dDo6c3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xkU3R5bGUpOwogCiAg
ICAgaWYgKFJlbmRlckJsb2NrKiBibG9jayA9IGJsb2NrRm9yQWNjb21wYW55aW5nRmlyc3RMZXR0
ZXIoKSkKLSAgICAgICAgYmxvY2stPm11dGFibGVTdHlsZSgpLnJlbW92ZUNhY2hlZFBzZXVkb1N0
eWxlKEZJUlNUX0xFVFRFUik7CisgICAgICAgIGJsb2NrLT5tdXRhYmxlU3R5bGUoKS5yZW1vdmVD
YWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RMZXR0ZXIpOwogfQogCiB2b2lkIFJlbmRl
clRleHRGcmFnbWVudDo6c2V0VGV4dChjb25zdCBTdHJpbmcmIG5ld1RleHQsIGJvb2wgZm9yY2Up
CkBAIC0xMTAsNyArMTEwLDcgQEAgUmVuZGVyQmxvY2sqIFJlbmRlclRleHRGcmFnbWVudDo6Ymxv
Y2tGbwogICAgIGZvciAoYXV0byYgYmxvY2sgOiBhbmNlc3RvcnNPZlR5cGU8UmVuZGVyQmxvY2s+
KCptX2ZpcnN0TGV0dGVyKSkgewogICAgICAgICBpZiAoaXM8UmVuZGVyTXVsdGlDb2x1bW5GbG93
PihibG9jaykpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKGJsb2NrLnN0eWxlKCku
aGFzUHNldWRvU3R5bGUoRklSU1RfTEVUVEVSKSAmJiBibG9jay5jYW5IYXZlQ2hpbGRyZW4oKSkK
KyAgICAgICAgaWYgKGJsb2NrLnN0eWxlKCkuaGFzUHNldWRvU3R5bGUoUHNldWRvSWQ6OkZpcnN0
TGV0dGVyKSAmJiBibG9jay5jYW5IYXZlQ2hpbGRyZW4oKSkKICAgICAgICAgICAgIHJldHVybiAm
YmxvY2s7CiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSwxMyAr
NzksMTMgQEAgdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUoU3R5bGVSZXNvbAogewogICAg
IC8vIEZvcmNlIGlubGluZSBhbmQgdGFibGUgZGlzcGxheSBzdHlsZXMgdG8gYmUgaW5saW5lLWJs
b2NrIChleGNlcHQgZm9yIHRhYmxlLSB3aGljaCBpcyBibG9jaykKICAgICBDb250cm9sUGFydCBw
YXJ0ID0gc3R5bGUuYXBwZWFyYW5jZSgpOwotICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gSU5M
SU5FIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBJTkxJTkVfVEFCTEUgfHwgc3R5bGUuZGlzcGxheSgp
ID09IFRBQkxFX1JPV19HUk9VUAotICAgICAgICB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gVEFCTEVf
SEVBREVSX0dST1VQIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBUQUJMRV9GT09URVJfR1JPVVAKLSAg
ICAgICAgfHwgc3R5bGUuZGlzcGxheSgpID09IFRBQkxFX1JPVyB8fCBzdHlsZS5kaXNwbGF5KCkg
PT0gVEFCTEVfQ09MVU1OX0dST1VQIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBUQUJMRV9DT0xVTU4K
LSAgICAgICAgfHwgc3R5bGUuZGlzcGxheSgpID09IFRBQkxFX0NFTEwgfHwgc3R5bGUuZGlzcGxh
eSgpID09IFRBQkxFX0NBUFRJT04pCi0gICAgICAgIHN0eWxlLnNldERpc3BsYXkoSU5MSU5FX0JM
T0NLKTsKLSAgICBlbHNlIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gQ09NUEFDVCB8fCBzdHlsZS5k
aXNwbGF5KCkgPT0gTElTVF9JVEVNIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBUQUJMRSkKLSAgICAg
ICAgc3R5bGUuc2V0RGlzcGxheShCTE9DSyk7CisgICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBE
aXNwbGF5VHlwZTo6SW5saW5lIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5s
aW5lVGFibGUgfHwgc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpUYWJsZVJvd0dyb3Vw
CisgICAgICAgIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGVIZWFkZXJH
cm91cCB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxlRm9vdGVyR3JvdXAK
KyAgICAgICAgfHwgc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpUYWJsZVJvdyB8fCBz
dHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxlQ29sdW1uR3JvdXAgfHwgc3R5bGUu
ZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpUYWJsZUNvbHVtbgorICAgICAgICB8fCBzdHlsZS5k
aXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxlQ2VsbCB8fCBzdHlsZS5kaXNwbGF5KCkgPT0g
RGlzcGxheVR5cGU6OlRhYmxlQ2FwdGlvbikKKyAgICAgICAgc3R5bGUuc2V0RGlzcGxheShEaXNw
bGF5VHlwZTo6SW5saW5lQmxvY2spOworICAgIGVsc2UgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBE
aXNwbGF5VHlwZTo6Q29tcGFjdCB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6Okxp
c3RJdGVtIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGUpCisgICAgICAg
IHN0eWxlLnNldERpc3BsYXkoRGlzcGxheVR5cGU6OkJsb2NrKTsKIAogICAgIGlmIChVQUhhc0Fw
cGVhcmFuY2UgJiYgaXNDb250cm9sU3R5bGVkKHN0eWxlLCBib3JkZXIsIGJhY2tncm91bmQsIGJh
Y2tncm91bmRDb2xvcikpIHsKICAgICAgICAgc3dpdGNoIChwYXJ0KSB7CkBAIC0xNTQsNyArMTU0
LDcgQEAgdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUoU3R5bGVSZXNvbAogCiAgICAgICAg
IC8vIFdoaXRlc3BhY2UKICAgICAgICAgaWYgKFRoZW1lOjpzaW5nbGV0b24oKS5jb250cm9sUmVx
dWlyZXNQcmVXaGl0ZVNwYWNlKHBhcnQpKQotICAgICAgICAgICAgc3R5bGUuc2V0V2hpdGVTcGFj
ZShQUkUpOworICAgICAgICAgICAgc3R5bGUuc2V0V2hpdGVTcGFjZShXaGl0ZVNwYWNlOjpQcmUp
OwogCiAgICAgICAgIC8vIFdpZHRoIC8gSGVpZ2h0CiAgICAgICAgIC8vIFRoZSB3aWR0aCBhbmQg
aGVpZ2h0IGhlcmUgYXJlIGFmZmVjdGVkIGJ5IHRoZSB6b29tLgpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkocmV2aXNpb24gMjMyMTA0KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzI0LDcgKzEzMjQsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RNZW51TGlzdFN0
eWxlCiAgICAgc3R5bGUuc2V0SGVpZ2h0KExlbmd0aChBdXRvKSk7CiAKICAgICAvLyBXaGl0ZS1z
cGFjZSBpcyBsb2NrZWQgdG8gcHJlCi0gICAgc3R5bGUuc2V0V2hpdGVTcGFjZShQUkUpOworICAg
IHN0eWxlLnNldFdoaXRlU3BhY2UoV2hpdGVTcGFjZTo6UHJlKTsKIAogICAgIC8vIFNldCB0aGUg
Zm9yZWdyb3VuZCBjb2xvciB0byBibGFjayBvciBncmF5IHdoZW4gd2UgaGF2ZSB0aGUgYXF1YSBs
b29rLgogICAgIENvbG9yIGMgPSBDb2xvcjo6ZGFya0dyYXk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5NCw3ICsz
OTQsNyBAQCBSZW5kZXJFbGVtZW50KiBSZW5kZXJWaWV3OjpyZW5kZXJlckZvclJvCiBzdGF0aWMg
aW5saW5lIGJvb2wgcmVuZGVyZXJPYnNjdXJlc0JhY2tncm91bmQoY29uc3QgUmVuZGVyRWxlbWVu
dCYgcm9vdEVsZW1lbnQpCiB7CiAgICAgYXV0byYgc3R5bGUgPSByb290RWxlbWVudC5zdHlsZSgp
OwotICAgIGlmIChzdHlsZS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBzdHlsZS5vcGFjaXR5
KCkgIT0gMSB8fCBzdHlsZS5oYXNUcmFuc2Zvcm0oKSkKKyAgICBpZiAoc3R5bGUudmlzaWJpbGl0
eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgfHwgc3R5bGUub3BhY2l0eSgpICE9IDEgfHwgc3R5
bGUuaGFzVHJhbnNmb3JtKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChzdHls
ZS5oYXNCb3JkZXJSYWRpdXMoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJXaWRnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJXaWRnZXQuY3BwCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyV2lkZ2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg3LDcgKzE4Nyw3IEBAIHZv
aWQgUmVuZGVyV2lkZ2V0OjpzZXRXaWRnZXQoUmVmUHRyPFdpZGcKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoc3R5bGUoKS52aXNp
YmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICAgICAgICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHko
KSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICAgICAgICAgIG1fd2lkZ2V0LT5oaWRl
KCk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBtX3dpZGdldC0+c2hvdygp
OwpAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpzdHlsZURpZENoYW5nZShT
dHlsZUQKIHsKICAgICBSZW5kZXJSZXBsYWNlZDo6c3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xkU3R5
bGUpOwogICAgIGlmIChtX3dpZGdldCkgewotICAgICAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5
KCkgIT0gVklTSUJMRSkKKyAgICAgICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2li
aWxpdHk6OlZpc2libGUpCiAgICAgICAgICAgICBtX3dpZGdldC0+aGlkZSgpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBtX3dpZGdldC0+c2hvdygpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjAsNyArMTYwLDcgQEAgZmxvYXQgUm9vdElubGluZUJveDo6cGxhY2VFbGxpcHNpc0JveChibwog
CiB2b2lkIFJvb3RJbmxpbmVCb3g6OnBhaW50RWxsaXBzaXNCb3goUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBM
YXlvdXRVbml0IGxpbmVCb3R0b20pIGNvbnN0CiB7Ci0gICAgaWYgKGhhc0VsbGlwc2lzQm94KCkg
JiYgcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdChyZW5kZXJlcigpKSAmJiByZW5kZXJl
cigpLnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUKKyAgICBpZiAoaGFzRWxsaXBzaXNC
b3goKSAmJiBwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KHJlbmRlcmVyKCkpICYmIHJl
bmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZQogICAg
ICAgICAgICAgJiYgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKQogICAg
ICAgICBlbGxpcHNpc0JveCgpLT5wYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0LCBsaW5lVG9w
LCBsaW5lQm90dG9tKTsKIH0KQEAgLTMzNSw3ICszMzUsNyBAQCBMYXlvdXRVbml0IFJvb3RJbmxp
bmVCb3g6OmxpbmVTbmFwQWRqdXN0CiB7CiAgICAgLy8gSWYgb3VyIGJsb2NrIGRvZXNuJ3QgaGF2
ZSBzbmFwcGluZyB0dXJuZWQgb24sIGRvIG5vdGhpbmcuCiAgICAgLy8gRklYTUU6IEltcGxlbWVu
dCBib3VuZHMgc25hcHBpbmcuCi0gICAgaWYgKGJsb2NrRmxvdygpLnN0eWxlKCkubGluZVNuYXAo
KSA9PSBMaW5lU25hcE5vbmUpCisgICAgaWYgKGJsb2NrRmxvdygpLnN0eWxlKCkubGluZVNuYXAo
KSA9PSBMaW5lU25hcDo6Tm9uZSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyBHZXQgdGhl
IGN1cnJlbnQgbGluZSBncmlkIGFuZCBvZmZzZXQuCkBAIC0zODIsNyArMzgyLDcgQEAgTGF5b3V0
VW5pdCBSb290SW5saW5lQm94OjpsaW5lU25hcEFkanVzdAogICAgICAgICAgICAgZmlyc3RUZXh0
VG9wID0gcGFnZUxvZ2ljYWxUb3AgKyBsaW5lR3JpZEJveC0+bG9naWNhbFRvcCgpIC0gbGluZUdy
aWQtPmJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSArIGxpbmVHcmlkUGFnaW5hdGlvbk9yaWdpbjsK
ICAgICB9CiAKLSAgICBpZiAoYmxvY2tGbG93KCkuc3R5bGUoKS5saW5lU25hcCgpID09IExpbmVT
bmFwQ29udGFpbikgeworICAgIGlmIChibG9ja0Zsb3coKS5zdHlsZSgpLmxpbmVTbmFwKCkgPT0g
TGluZVNuYXA6OkNvbnRhaW4pIHsKICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgZGVzaXJlZCBvZmZz
ZXQgZnJvbSB0aGUgdGV4dC10b3Agb2YgYSBncmlkIGxpbmUuCiAgICAgICAgIC8vIExvb2sgYXQg
b3VyIGhlaWdodCAobG9naWNhbEhlaWdodCgpKS4KICAgICAgICAgLy8gTG9vayBhdCB0aGUgdG90
YWwgYXZhaWxhYmxlIGhlaWdodC4gSXQncyBnb2luZyB0byBiZSAodGV4dEJvdHRvbSAtIHRleHRU
b3ApICsgKG4tMSkqKG11bHRpcGxlIHdpdGggbGVhZGluZykKQEAgLTQ2MCw3ICs0NjAsNyBAQCBH
YXBSZWN0cyBSb290SW5saW5lQm94OjpsaW5lU2VsZWN0aW9uR2FwCiAgICAgICAgICAgICAgICAg
bG9naWNhbFJlY3QubW92ZShyZW5kZXJlcigpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBv
ZmZzZXRGcm9tUm9vdEJsb2NrIDogTGF5b3V0U2l6ZShvZmZzZXRGcm9tUm9vdEJsb2NrLmhlaWdo
dCgpLCBvZmZzZXRGcm9tUm9vdEJsb2NrLndpZHRoKCkpKTsKICAgICAgICAgICAgICAgICBMYXlv
dXRSZWN0IGdhcFJlY3QgPSByb290QmxvY2subG9naWNhbFJlY3RUb1BoeXNpY2FsUmVjdChyb290
QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBsb2dpY2FsUmVjdCk7CiAgICAgICAgICAgICAgICAgaWYg
KGlzUHJldmlvdXNCb3hTZWxlY3RlZCAmJiBnYXBSZWN0LndpZHRoKCkgPiAwICYmIGdhcFJlY3Qu
aGVpZ2h0KCkgPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwYWludEluZm8gJiYgYm94
LT5wYXJlbnQoKS0+cmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKQor
ICAgICAgICAgICAgICAgICAgICBpZiAocGFpbnRJbmZvICYmIGJveC0+cGFyZW50KCktPnJlbmRl
cmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhaW50SW5mby0+Y29udGV4dCgpLmZpbGxSZWN0KGdhcFJlY3Qs
IGJveC0+cGFyZW50KCktPnJlbmRlcmVyKCkuc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkpOwog
ICAgICAgICAgICAgICAgICAgICAvLyBWaXNpYmxlU2VsZWN0aW9uIG1heSBiZSBub24tY29udGln
dW91cywgc2VlIGNvbW1lbnQgYWJvdmUuCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC51bml0
ZUNlbnRlcihnYXBSZWN0KTsKQEAgLTQ5OCwyMCArNDk4LDIwIEBAIEludFJlY3QgUm9vdElubGlu
ZUJveDo6Y29tcHV0ZUNhcmV0UmVjdCgKIAogICAgIGJvb2wgcmlnaHRBbGlnbmVkID0gZmFsc2U7
CiAgICAgc3dpdGNoIChibG9ja1N0eWxlLnRleHRBbGlnbigpKSB7Ci0gICAgY2FzZSBSSUdIVDoK
LSAgICBjYXNlIFdFQktJVF9SSUdIVDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlJpZ2h0Ogor
ICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQ6CiAgICAgICAgIHJpZ2h0QWxpZ25l
ZCA9IHRydWU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTEVGVDoKLSAgICBjYXNlIFdFQktJ
VF9MRUZUOgotICAgIGNhc2UgQ0VOVEVSOgotICAgIGNhc2UgV0VCS0lUX0NFTlRFUjoKKyAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRM
ZWZ0OgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6Q2VudGVyOgorICAgIGNhc2UgVGV4dEFsaWdu
TW9kZTo6V2ViS2l0Q2VudGVyOgogICAgICAgICBicmVhazsKLSAgICBjYXNlIEpVU1RJRlk6Ci0g
ICAgY2FzZSBUQVNUQVJUOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKKyAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OlN0YXJ0OgogICAgICAgICByaWdodEFsaWduZWQgPSAhYmxvY2tT
dHlsZS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
VEFFTkQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpFbmQ6CiAgICAgICAgIHJpZ2h0QWxpZ25l
ZCA9IGJsb2NrU3R5bGUuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpOwogICAgICAgICBicmVhazsK
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXQuY3BwCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2lt
cGxlTGluZUxheW91dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw3ICsxNjMsNyBAQCBzdGF0
aWMgQXZvaWRhbmNlUmVhc29uRmxhZ3MgY2FuVXNlRm9yRm9uCiAgICAgc3RkOjpvcHRpb25hbDxm
bG9hdD4gbGluZUhlaWdodENvbnN0cmFpbnQ7CiAgICAgaWYgKHN0eWxlLmxpbmVCb3hDb250YWlu
KCkgJiBMaW5lQm94Q29udGFpbkdseXBocykKICAgICAgICAgbGluZUhlaWdodENvbnN0cmFpbnQg
PSBsaW5lSGVpZ2h0RnJvbUZsb3coZmxvdykudG9GbG9hdCgpOwotICAgIGJvb2wgZmxvd0lzSnVz
dGlmaWVkID0gc3R5bGUudGV4dEFsaWduKCkgPT0gSlVTVElGWTsKKyAgICBib29sIGZsb3dJc0p1
c3RpZmllZCA9IHN0eWxlLnRleHRBbGlnbigpID09IFRleHRBbGlnbk1vZGU6Okp1c3RpZnk7CiAg
ICAgZm9yIChjb25zdCBhdXRvJiB0ZXh0UmVuZGVyZXIgOiBjaGlsZHJlbk9mVHlwZTxSZW5kZXJU
ZXh0PihmbG93KSkgewogICAgICAgICAvLyBGSVhNRTogRG8gbm90IHJldHVybiB1bnRpbCBhZnRl
ciBjaGVja2luZyBhbGwgY2hpbGRyZW4uCiAgICAgICAgIGlmICh0ZXh0UmVuZGVyZXIudGV4dCgp
LmlzRW1wdHkoKSkKQEAgLTIxNSwyNSArMjE1LDI1IEBAIHN0YXRpYyBBdm9pZGFuY2VSZWFzb25G
bGFncyBjYW5Vc2VGb3JTdHkKICAgICAgICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lGX05FRURF
RChGbG93SGFzTGluZUJyZWFrLCByZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7CiAgICAgaWYgKHN0
eWxlLnVuaWNvZGVCaWRpKCkgIT0gVUJOb3JtYWwpCiAgICAgICAgIFNFVF9SRUFTT05fQU5EX1JF
VFVSTl9JRl9ORUVERUQoRmxvd0hhc05vbk5vcm1hbFVuaWNvZGVCaURpLCByZWFzb25zLCBpbmNs
dWRlUmVhc29ucyk7Ci0gICAgaWYgKHN0eWxlLnJ0bE9yZGVyaW5nKCkgIT0gTG9naWNhbE9yZGVy
KQorICAgIGlmIChzdHlsZS5ydGxPcmRlcmluZygpICE9IE9yZGVyOjpMb2dpY2FsKQogICAgICAg
ICBTRVRfUkVBU09OX0FORF9SRVRVUk5fSUZfTkVFREVEKEZsb3dIYXNSVExPcmRlcmluZywgcmVh
c29ucywgaW5jbHVkZVJlYXNvbnMpOwotICAgIGlmIChzdHlsZS5saW5lQWxpZ24oKSAhPSBMaW5l
QWxpZ25Ob25lKQorICAgIGlmIChzdHlsZS5saW5lQWxpZ24oKSAhPSBMaW5lQWxpZ246Ok5vbmUp
CiAgICAgICAgIFNFVF9SRUFTT05fQU5EX1JFVFVSTl9JRl9ORUVERUQoRmxvd0hhc0xpbmVBbGln
bkVkZ2VzLCByZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7Ci0gICAgaWYgKHN0eWxlLmxpbmVTbmFw
KCkgIT0gTGluZVNuYXBOb25lKQorICAgIGlmIChzdHlsZS5saW5lU25hcCgpICE9IExpbmVTbmFw
OjpOb25lKQogICAgICAgICBTRVRfUkVBU09OX0FORF9SRVRVUk5fSUZfTkVFREVEKEZsb3dIYXNM
aW5lU25hcCwgcmVhc29ucywgaW5jbHVkZVJlYXNvbnMpOwotICAgIGlmIChzdHlsZS50ZXh0RW1w
aGFzaXNGaWxsKCkgIT0gVGV4dEVtcGhhc2lzRmlsbEZpbGxlZCB8fCBzdHlsZS50ZXh0RW1waGFz
aXNNYXJrKCkgIT0gVGV4dEVtcGhhc2lzTWFya05vbmUpCisgICAgaWYgKHN0eWxlLnRleHRFbXBo
YXNpc0ZpbGwoKSAhPSBUZXh0RW1waGFzaXNGaWxsOjpGaWxsZWQgfHwgc3R5bGUudGV4dEVtcGhh
c2lzTWFyaygpICE9IFRleHRFbXBoYXNpc01hcms6Ok5vbmUpCiAgICAgICAgIFNFVF9SRUFTT05f
QU5EX1JFVFVSTl9JRl9ORUVERUQoRmxvd0hhc1RleHRFbXBoYXNpc0ZpbGxPck1hcmssIHJlYXNv
bnMsIGluY2x1ZGVSZWFzb25zKTsKICAgICBpZiAoc3R5bGUudGV4dFNoYWRvdygpKQogICAgICAg
ICBTRVRfUkVBU09OX0FORF9SRVRVUk5fSUZfTkVFREVEKEZsb3dIYXNUZXh0U2hhZG93LCByZWFz
b25zLCBpbmNsdWRlUmVhc29ucyk7Ci0gICAgaWYgKHN0eWxlLmhhc1BzZXVkb1N0eWxlKEZJUlNU
X0xJTkUpKQorICAgIGlmIChzdHlsZS5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5l
KSkKICAgICAgICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lGX05FRURFRChGbG93SGFzUHNldWRv
Rmlyc3RMaW5lLCByZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7Ci0gICAgaWYgKHN0eWxlLmhhc1Bz
ZXVkb1N0eWxlKEZJUlNUX0xFVFRFUikpCisgICAgaWYgKHN0eWxlLmhhc1BzZXVkb1N0eWxlKFBz
ZXVkb0lkOjpGaXJzdExldHRlcikpCiAgICAgICAgIFNFVF9SRUFTT05fQU5EX1JFVFVSTl9JRl9O
RUVERUQoRmxvd0hhc1BzZXVkb0ZpcnN0TGV0dGVyLCByZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7
CiAgICAgaWYgKHN0eWxlLmhhc1RleHRDb21iaW5lKCkpCiAgICAgICAgIFNFVF9SRUFTT05fQU5E
X1JFVFVSTl9JRl9ORUVERUQoRmxvd0hhc1RleHRDb21iaW5lLCByZWFzb25zLCBpbmNsdWRlUmVh
c29ucyk7CiAgICAgaWYgKHN0eWxlLmJhY2tncm91bmRDbGlwKCkgPT0gRmlsbEJveDo6VGV4dCkK
ICAgICAgICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lGX05FRURFRChGbG93SGFzVGV4dEZpbGxC
b3gsIHJlYXNvbnMsIGluY2x1ZGVSZWFzb25zKTsKLSAgICBpZiAoc3R5bGUuYm9yZGVyRml0KCkg
PT0gQm9yZGVyRml0TGluZXMpCisgICAgaWYgKHN0eWxlLmJvcmRlckZpdCgpID09IEJvcmRlckZp
dDo6TGluZXMpCiAgICAgICAgIFNFVF9SRUFTT05fQU5EX1JFVFVSTl9JRl9ORUVERUQoRmxvd0hh
c0JvcmRlckZpdExpbmVzLCByZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7CiAgICAgaWYgKHN0eWxl
LmxpbmVCcmVhaygpICE9IExpbmVCcmVhazo6QXV0bykKICAgICAgICAgU0VUX1JFQVNPTl9BTkRf
UkVUVVJOX0lGX05FRURFRChGbG93SGFzTm9uQXV0b0xpbmVCcmVhaywgcmVhc29ucywgaW5jbHVk
ZVJlYXNvbnMpOwpAQCAtMjQzLDcgKzI0Myw3IEBAIHN0YXRpYyBBdm9pZGFuY2VSZWFzb25GbGFn
cyBjYW5Vc2VGb3JTdHkKICAgICBpZiAoc3R5bGUudHJhaWxpbmdXb3JkKCkgIT0gVHJhaWxpbmdX
b3JkOjpBdXRvKQogICAgICAgICBTRVRfUkVBU09OX0FORF9SRVRVUk5fSUZfTkVFREVEKEZsb3dI
YXNOb25BdXRvVHJhaWxpbmdXb3JkLCByZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7CiAjZW5kaWYK
LSAgICBpZiAoc3R5bGUuaHlwaGVucygpID09IEh5cGhlbnNBdXRvKSB7CisgICAgaWYgKHN0eWxl
Lmh5cGhlbnMoKSA9PSBIeXBoZW5zOjpBdXRvKSB7CiAgICAgICAgIGF1dG8gdGV4dFJlYXNvbnMg
PSBjYW5Vc2VGb3JUZXh0KHN0eWxlLmh5cGhlblN0cmluZygpLCBzdHlsZS5mb250Q2FzY2FkZSgp
LCBzdGQ6Om51bGxvcHQsIGZhbHNlLCBpbmNsdWRlUmVhc29ucyk7CiAgICAgICAgIGlmICh0ZXh0
UmVhc29ucyAhPSBOb1JlYXNvbikKICAgICAgICAgICAgIFNFVF9SRUFTT05fQU5EX1JFVFVSTl9J
Rl9ORUVERUQodGV4dFJlYXNvbnMsIHJlYXNvbnMsIGluY2x1ZGVSZWFzb25zKTsKQEAgLTM1NSwy
MyArMzU1LDIzIEBAIGJvb2wgY2FuVXNlRm9yKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmwKICAg
ICByZXR1cm4gY2FuVXNlRm9yV2l0aFJlYXNvbihmbG93LCBJbmNsdWRlUmVhc29uczo6Rmlyc3Qp
ID09IE5vUmVhc29uOwogfQogCi1zdGF0aWMgZmxvYXQgY29tcHV0ZUxpbmVMZWZ0KEVUZXh0QWxp
Z24gdGV4dEFsaWduLCBmbG9hdCBhdmFpbGFibGVXaWR0aCwgZmxvYXQgY29tbWl0dGVkV2lkdGgs
IGZsb2F0IGxvZ2ljYWxMZWZ0T2Zmc2V0KQorc3RhdGljIGZsb2F0IGNvbXB1dGVMaW5lTGVmdChU
ZXh0QWxpZ25Nb2RlIHRleHRBbGlnbiwgZmxvYXQgYXZhaWxhYmxlV2lkdGgsIGZsb2F0IGNvbW1p
dHRlZFdpZHRoLCBmbG9hdCBsb2dpY2FsTGVmdE9mZnNldCkKIHsKICAgICBmbG9hdCByZW1haW5p
bmdXaWR0aCA9IGF2YWlsYWJsZVdpZHRoIC0gY29tbWl0dGVkV2lkdGg7CiAgICAgZmxvYXQgbGVm
dCA9IGxvZ2ljYWxMZWZ0T2Zmc2V0OwogICAgIHN3aXRjaCAodGV4dEFsaWduKSB7Ci0gICAgY2Fz
ZSBMRUZUOgotICAgIGNhc2UgV0VCS0lUX0xFRlQ6Ci0gICAgY2FzZSBUQVNUQVJUOgorICAgIGNh
c2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdExl
ZnQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpTdGFydDoKICAgICAgICAgcmV0dXJuIGxlZnQ7
Ci0gICAgY2FzZSBSSUdIVDoKLSAgICBjYXNlIFdFQktJVF9SSUdIVDoKLSAgICBjYXNlIFRBRU5E
OgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2Rl
OjpXZWJLaXRSaWdodDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkVuZDoKICAgICAgICAgcmV0
dXJuIGxlZnQgKyBzdGQ6Om1heDxmbG9hdD4ocmVtYWluaW5nV2lkdGgsIDApOwotICAgIGNhc2Ug
Q0VOVEVSOgotICAgIGNhc2UgV0VCS0lUX0NFTlRFUjoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6
OkNlbnRlcjoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoKICAgICAgICAg
cmV0dXJuIGxlZnQgKyBzdGQ6Om1heDxmbG9hdD4ocmVtYWluaW5nV2lkdGggLyAyLCAwKTsKLSAg
ICBjYXNlIEpVU1RJRlk6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5OgogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNjA2LDcg
KzYwNiw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUxpbmVDb25zdHJhaW5zKGNvbnN0IFIKICAgICBs
aW5lLnNldExvZ2ljYWxMZWZ0T2Zmc2V0KGZsb3cubG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKGhl
aWdodCwgRG9Ob3RJbmRlbnRUZXh0LCBsb2dpY2FsSGVpZ2h0KSArIChzaG91bGRBcHBseVRleHRJ
bmRlbnQgJiYgaXNGaXJzdExpbmUgPyBmbG93LnRleHRJbmRlbnRPZmZzZXQoKSA6IExheW91dFVu
aXQoMCkpKTsKICAgICBmbG9hdCBsb2dpY2FsUmlnaHRPZmZzZXQgPSBmbG93LmxvZ2ljYWxSaWdo
dE9mZnNldEZvckxpbmUoaGVpZ2h0LCBEb05vdEluZGVudFRleHQsIGxvZ2ljYWxIZWlnaHQpOwog
ICAgIGxpbmUuc2V0QXZhaWxhYmxlV2lkdGgoc3RkOjptYXg8ZmxvYXQ+KDAsIGxvZ2ljYWxSaWdo
dE9mZnNldCAtIGxpbmUubG9naWNhbExlZnRPZmZzZXQoKSkpOwotICAgIGlmIChzdHlsZS50ZXh0
QWxpZ24gPT0gSlVTVElGWSkKKyAgICBpZiAoc3R5bGUudGV4dEFsaWduID09IFRleHRBbGlnbk1v
ZGU6Okp1c3RpZnkpCiAgICAgICAgIGxpbmUuc2V0TmVlZHNBbGxGcmFnbWVudHMoKTsKICAgICBu
dW1iZXJPZlByZWNlZGluZ0xpbmVzV2l0aEh5cGhlbiA9IChwcmV2aW91c0xpbmUuaXNFbXB0eSgp
IHx8ICFwcmV2aW91c0xpbmUubGFzdEZyYWdtZW50KCkuaGFzSHlwaGVuKCkpID8gMCA6IG51bWJl
ck9mUHJlY2VkaW5nTGluZXNXaXRoSHlwaGVuICsgMTsKICAgICBpZiAoc3R5bGUuaHlwaGVuTGlt
aXRMaW5lcyAmJiBudW1iZXJPZlByZWNlZGluZ0xpbmVzV2l0aEh5cGhlbiA+PSAqc3R5bGUuaHlw
aGVuTGltaXRMaW5lcykKQEAgLTc5MSw3ICs3OTEsNyBAQCBzdGF0aWMgYm9vbCBjcmVhdGVMaW5l
UnVucyhMaW5lU3RhdGUmIGxpCiAgICAgICAgIGlmIChmcmFnbWVudC5pc0xpbmVCcmVhaygpKSB7
CiAgICAgICAgICAgICAvLyBBZGQgdGhlIG5ldyBsaW5lIGZyYWdtZW50IG9ubHkgaWYgdGhlcmUn
cyBub3RoaW5nIG9uIHRoZSBsaW5lLiAob3RoZXJ3aXNlIHRoZSBleHRyYSBuZXcgbGluZSBjaGFy
YWN0ZXIgd291bGQgc2hvdyB1cCBhdCB0aGUgZW5kIG9mIHRoZSBjb250ZW50LikKICAgICAgICAg
ICAgIGlmIChsaW5lLmlzRW1wdHkoKSB8fCBmcmFnbWVudC50eXBlKCkgPT0gVGV4dEZyYWdtZW50
SXRlcmF0b3I6OlRleHRGcmFnbWVudDo6SGFyZExpbmVCcmVhaykgewotICAgICAgICAgICAgICAg
IGlmIChzdHlsZS50ZXh0QWxpZ24gPT0gUklHSFQgfHwgc3R5bGUudGV4dEFsaWduID09IFdFQktJ
VF9SSUdIVCkKKyAgICAgICAgICAgICAgICBpZiAoc3R5bGUudGV4dEFsaWduID09IFRleHRBbGln
bk1vZGU6OlJpZ2h0IHx8IHN0eWxlLnRleHRBbGlnbiA9PSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRS
aWdodCkKICAgICAgICAgICAgICAgICAgICAgbGluZS5yZW1vdmVUcmFpbGluZ1doaXRlc3BhY2Uo
cnVucyk7CiAgICAgICAgICAgICAgICAgbGluZS5hcHBlbmRGcmFnbWVudEFuZENyZWF0ZVJ1bklm
TmVlZGVkKGZyYWdtZW50LCBydW5zKTsKICAgICAgICAgICAgIH0KQEAgLTkwMywxMiArOTAzLDEy
IEBAIHN0YXRpYyB2b2lkIGp1c3RpZnlSdW5zKGNvbnN0IExpbmVTdGF0ZSYKICAgICB9CiB9CiAK
LXN0YXRpYyBFVGV4dEFsaWduIHRleHRBbGlnbkZvckxpbmUoY29uc3QgVGV4dEZyYWdtZW50SXRl
cmF0b3I6OlN0eWxlJiBzdHlsZSwgYm9vbCBsYXN0TGluZSkKK3N0YXRpYyBUZXh0QWxpZ25Nb2Rl
IHRleHRBbGlnbkZvckxpbmUoY29uc3QgVGV4dEZyYWdtZW50SXRlcmF0b3I6OlN0eWxlJiBzdHls
ZSwgYm9vbCBsYXN0TGluZSkKIHsKLSAgICAvLyBGYWxsYmFjayB0byBMRUZUIChTVEFSVCkgYWxp
Z25tZW50IGZvciBub24tY29sbGFwc2FibGUgY29udGVudCBhbmQgZm9yIHRoZSBsYXN0IGxpbmUg
YmVmb3JlIGEgZm9yY2VkIGJyZWFrIG9yIHRoZSBlbmQgb2YgdGhlIGJsb2NrLgorICAgIC8vIEZh
bGxiYWNrIHRvIFRleHRBbGlnbk1vZGU6OkxlZnQgKFNUQVJUKSBhbGlnbm1lbnQgZm9yIG5vbi1j
b2xsYXBzYWJsZSBjb250ZW50IGFuZCBmb3IgdGhlIGxhc3QgbGluZSBiZWZvcmUgYSBmb3JjZWQg
YnJlYWsgb3IgdGhlIGVuZCBvZiB0aGUgYmxvY2suCiAgICAgYXV0byB0ZXh0QWxpZ24gPSBzdHls
ZS50ZXh0QWxpZ247Ci0gICAgaWYgKHRleHRBbGlnbiA9PSBKVVNUSUZZICYmICghc3R5bGUuY29s
bGFwc2VXaGl0ZXNwYWNlIHx8IGxhc3RMaW5lKSkKLSAgICAgICAgdGV4dEFsaWduID0gTEVGVDsK
KyAgICBpZiAodGV4dEFsaWduID09IFRleHRBbGlnbk1vZGU6Okp1c3RpZnkgJiYgKCFzdHlsZS5j
b2xsYXBzZVdoaXRlc3BhY2UgfHwgbGFzdExpbmUpKQorICAgICAgICB0ZXh0QWxpZ24gPSBUZXh0
QWxpZ25Nb2RlOjpMZWZ0OwogICAgIHJldHVybiB0ZXh0QWxpZ247CiB9CiAKQEAgLTkyNSw3ICs5
MjUsNyBAQCBzdGF0aWMgdm9pZCBjbG9zZUxpbmVFbmRpbmdBbmRBZGp1c3RSdW5zCiAgICAgYXV0
byBmaXJzdFJ1bkluZGV4ID0gbGFzdFJ1bkluZGV4T2ZQcmV2aW91c0xpbmUgPyBsYXN0UnVuSW5k
ZXhPZlByZXZpb3VzTGluZS52YWx1ZSgpICsgMSA6IDA7CiAgICAgYXV0byBsaW5lTG9naWNhbExl
ZnQgPSBsaW5lLmxvZ2ljYWxMZWZ0T2Zmc2V0KCk7CiAgICAgYXV0byB0ZXh0QWxpZ24gPSB0ZXh0
QWxpZ25Gb3JMaW5lKHN0eWxlLCBsYXN0TGluZUluRmxvdyB8fCAobGluZS5sYXN0RnJhZ21lbnQo
KS5pc1ZhbGlkKCkgJiYgbGluZS5sYXN0RnJhZ21lbnQoKS50eXBlKCkgPT0gVGV4dEZyYWdtZW50
SXRlcmF0b3I6OlRleHRGcmFnbWVudDo6SGFyZExpbmVCcmVhaykpOwotICAgIGlmICh0ZXh0QWxp
Z24gPT0gSlVTVElGWSkKKyAgICBpZiAodGV4dEFsaWduID09IFRleHRBbGlnbk1vZGU6Okp1c3Rp
ZnkpCiAgICAgICAgIGp1c3RpZnlSdW5zKGxpbmUsIHJ1bnMsIGZpcnN0UnVuSW5kZXgpOwogICAg
IGVsc2UKICAgICAgICAgbGluZUxvZ2ljYWxMZWZ0ID0gY29tcHV0ZUxpbmVMZWZ0KHRleHRBbGln
biwgbGluZS5hdmFpbGFibGVXaWR0aCgpLCBsaW5lLndpZHRoKCksIGxpbmUubG9naWNhbExlZnRP
ZmZzZXQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91
dEZ1bmN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBwYWludEZsb3coY29uc3QgUmVuZGVyQmxvY2tG
bG93JiBmbAogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvJiBzdHlsZSA9IGZsb3cuc3R5bGUo
KTsKLSAgICBpZiAoc3R5bGUudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKHN0eWxl
LnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1cm47CiAK
ICAgICBUZXh0UGFpbnRlciB0ZXh0UGFpbnRlcihwYWludEluZm8uY29udGV4dCgpKTsKQEAgLTE0
Myw3ICsxNDMsNyBAQCBib29sIGhpdFRlc3RGbG93KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8mIHN0eWxlID0gZmxvdy5zdHlsZSgpOwot
ICAgIGlmIChzdHlsZS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBzdHlsZS5wb2ludGVyRXZl
bnRzKCkgPT0gUEVfTk9ORSkKKyAgICBpZiAoc3R5bGUudmlzaWJpbGl0eSgpICE9IFZpc2liaWxp
dHk6OlZpc2libGUgfHwgc3R5bGUucG9pbnRlckV2ZW50cygpID09IFBvaW50ZXJFdmVudHM6Ok5v
bmUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIExheW91dFJlY3QgcmFuZ2VSZWN0ID0g
bG9jYXRpb25JbkNvbnRhaW5lci5ib3VuZGluZ0JveCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJh
Z21lbnRJdGVyYXRvci5jcHAJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIFRleHRGcmFnbWVudEl0ZXJhdG9yOjpTdHlsZTo6U3R5
bGUoY29uc3QKICAgICAsIGtlZXBBbGxXb3Jkc0ZvckNKSyhzdHlsZS53b3JkQnJlYWsoKSA9PSBX
b3JkQnJlYWs6OktlZXBBbGwpCiAgICAgLCB3b3JkU3BhY2luZyhmb250LndvcmRTcGFjaW5nKCkp
CiAgICAgLCB0YWJXaWR0aChjb2xsYXBzZVdoaXRlc3BhY2UgPyAwIDogc3R5bGUudGFiU2l6ZSgp
KQotICAgICwgc2hvdWxkSHlwaGVuYXRlKHN0eWxlLmh5cGhlbnMoKSA9PSBIeXBoZW5zQXV0byAm
JiBjYW5IeXBoZW5hdGUoc3R5bGUubG9jYWxlKCkpKQorICAgICwgc2hvdWxkSHlwaGVuYXRlKHN0
eWxlLmh5cGhlbnMoKSA9PSBIeXBoZW5zOjpBdXRvICYmIGNhbkh5cGhlbmF0ZShzdHlsZS5sb2Nh
bGUoKSkpCiAgICAgLCBoeXBoZW5TdHJpbmdXaWR0aChzaG91bGRIeXBoZW5hdGUgPyAodXNlU2lt
cGxpZmllZFRleHRNZWFzdXJpbmcgPyBmb250LndpZHRoRm9yU2ltcGxlVGV4dChzdHlsZS5oeXBo
ZW5TdHJpbmcoKSkgOiBmb250LndpZHRoKFRleHRSdW4oU3RyaW5nKHN0eWxlLmh5cGhlblN0cmlu
ZygpKSkpKSA6IDApCiAgICAgLCBoeXBoZW5MaW1pdEJlZm9yZShzdHlsZS5oeXBoZW5hdGlvbkxp
bWl0QmVmb3JlKCkgPCAwID8gMiA6IHN0eWxlLmh5cGhlbmF0aW9uTGltaXRCZWZvcmUoKSkKICAg
ICAsIGh5cGhlbkxpbWl0QWZ0ZXIoc3R5bGUuaHlwaGVuYXRpb25MaW1pdEFmdGVyKCkgPCAwID8g
MiA6IHN0eWxlLmh5cGhlbmF0aW9uTGltaXRBZnRlcigpKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdt
ZW50SXRlcmF0b3IuaAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDYsNyArMTA2LDcgQEAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBTdHlsZShjb25z
dCBSZW5kZXJTdHlsZSYsIGJvb2wgdXNlU2ltcGxpZmllZFRleHRNZWFzdXJpbmcpOwogCiAgICAg
ICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250OwotICAgICAgICBFVGV4dEFsaWduIHRleHRBbGln
bjsKKyAgICAgICAgVGV4dEFsaWduTW9kZSB0ZXh0QWxpZ247CiAgICAgICAgIGJvb2wgaGFzS2Vy
bmluZ09yTGlnYXR1cmVzOwogICAgICAgICBib29sIGNvbGxhcHNlV2hpdGVzcGFjZTsKICAgICAg
ICAgYm9vbCBwcmVzZXJ2ZU5ld2xpbmU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
VGV4dERlY29yYXRpb25QYWludGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIyMSwxOSArMjIxLDE5IEBAIHN0YXRpYyBTdHJva2VTdHlsZSB0ZXh0RGVj
b3JhdGlvblN0eWxlVG8KIHsKICAgICBTdHJva2VTdHlsZSBzdHJva2VTdHlsZSA9IFNvbGlkU3Ry
b2tlOwogICAgIHN3aXRjaCAoZGVjb3JhdGlvblN0eWxlKSB7Ci0gICAgY2FzZSBUZXh0RGVjb3Jh
dGlvblN0eWxlU29saWQ6CisgICAgY2FzZSBUZXh0RGVjb3JhdGlvblN0eWxlOjpTb2xpZDoKICAg
ICAgICAgc3Ryb2tlU3R5bGUgPSBTb2xpZFN0cm9rZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBUZXh0RGVjb3JhdGlvblN0eWxlRG91YmxlOgorICAgIGNhc2UgVGV4dERlY29yYXRpb25TdHls
ZTo6RG91YmxlOgogICAgICAgICBzdHJva2VTdHlsZSA9IERvdWJsZVN0cm9rZTsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBUZXh0RGVjb3JhdGlvblN0eWxlRG90dGVkOgorICAgIGNhc2UgVGV4
dERlY29yYXRpb25TdHlsZTo6RG90dGVkOgogICAgICAgICBzdHJva2VTdHlsZSA9IERvdHRlZFN0
cm9rZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUZXh0RGVjb3JhdGlvblN0eWxlRGFzaGVk
OgorICAgIGNhc2UgVGV4dERlY29yYXRpb25TdHlsZTo6RGFzaGVkOgogICAgICAgICBzdHJva2VT
dHlsZSA9IERhc2hlZFN0cm9rZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUZXh0RGVjb3Jh
dGlvblN0eWxlV2F2eToKKyAgICBjYXNlIFRleHREZWNvcmF0aW9uU3R5bGU6Oldhdnk6CiAgICAg
ICAgIHN0cm9rZVN0eWxlID0gV2F2eVN0cm9rZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAt
MjUyLDcgKzI1Miw3IEBAIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6VGV4dERlY29yYXRpb25QYWkK
ICAgICAsIG1fZGVjb3JhdGlvbnMgeyBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+Ojpmcm9tUmF3
KGRlY29yYXRpb25zKSB9CiAgICAgLCBtX3dhdnlPZmZzZXQgeyB3YXZ5T2Zmc2V0RnJvbURlY29y
YXRpb24oKSB9CiAgICAgLCBtX2lzUHJpbnRpbmcgeyByZW5kZXJlci5kb2N1bWVudCgpLnByaW50
aW5nKCkgfQotICAgICwgbV9zdHlsZXMgeyBzdHlsZXMgPyAqV1RGTW92ZShzdHlsZXMpIDogc3R5
bGVzRm9yUmVuZGVyZXIocmVuZGVyZXIsIGRlY29yYXRpb25zLCBpc0ZpcnN0TGluZSwgTk9QU0VV
RE8pIH0KKyAgICAsIG1fc3R5bGVzIHsgc3R5bGVzID8gKldURk1vdmUoc3R5bGVzKSA6IHN0eWxl
c0ZvclJlbmRlcmVyKHJlbmRlcmVyLCBkZWNvcmF0aW9ucywgaXNGaXJzdExpbmUsIFBzZXVkb0lk
OjpOb25lKSB9CiAgICAgLCBtX2xpbmVTdHlsZSB7IGlzRmlyc3RMaW5lID8gcmVuZGVyZXIuZmly
c3RMaW5lU3R5bGUoKSA6IHJlbmRlcmVyLnN0eWxlKCkgfQogewogfQpAQCAtMjczLDIxICsyNzMs
MjEgQEAgdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50VGV4dERlYwogCiAgICAgICAg
IGF1dG8gc3Ryb2tlU3R5bGUgPSB0ZXh0RGVjb3JhdGlvblN0eWxlVG9TdHJva2VTdHlsZShzdHls
ZSk7CiAKLSAgICAgICAgaWYgKHN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGVXYXZ5KQorICAg
ICAgICBpZiAoc3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSkKICAgICAgICAgICAg
IHN0cm9rZVdhdnlUZXh0RGVjb3JhdGlvbihtX2NvbnRleHQsIHN0YXJ0LCBlbmQsIHRleHREZWNv
cmF0aW9uVGhpY2tuZXNzLCBtX2xpbmVTdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSk7CiAg
ICAgICAgIGVsc2UgaWYgKGRlY29yYXRpb24gPT0gVGV4dERlY29yYXRpb25VbmRlcmxpbmUgfHwg
ZGVjb3JhdGlvbiA9PSBUZXh0RGVjb3JhdGlvbk92ZXJsaW5lKSB7CiAjaWYgRU5BQkxFKENTUzNf
VEVYVF9ERUNPUkFUSU9OX1NLSVBfSU5LKQogICAgICAgICAgICAgaWYgKChtX2xpbmVTdHlsZS50
ZXh0RGVjb3JhdGlvblNraXAoKSA9PSBUZXh0RGVjb3JhdGlvblNraXBJbmsgfHwgbV9saW5lU3R5
bGUudGV4dERlY29yYXRpb25Ta2lwKCkgPT0gVGV4dERlY29yYXRpb25Ta2lwQXV0bykgJiYgbV9p
c0hvcml6b250YWwpIHsKICAgICAgICAgICAgICAgICBpZiAoIW1fY29udGV4dC5wYWludGluZ0Rp
c2FibGVkKCkpCi0gICAgICAgICAgICAgICAgICAgIGRyYXdTa2lwSW5rVW5kZXJsaW5lKG1fY29u
dGV4dCwgKm1fZm9udCwgdGV4dFJ1biwgdGV4dE9yaWdpbiwgbG9jYWxPcmlnaW4sIG9mZnNldCwg
bV93aWR0aCwgbV9pc1ByaW50aW5nLCBzdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlRG91Ymxl
LCBzdHJva2VTdHlsZSk7CisgICAgICAgICAgICAgICAgICAgIGRyYXdTa2lwSW5rVW5kZXJsaW5l
KG1fY29udGV4dCwgKm1fZm9udCwgdGV4dFJ1biwgdGV4dE9yaWdpbiwgbG9jYWxPcmlnaW4sIG9m
ZnNldCwgbV93aWR0aCwgbV9pc1ByaW50aW5nLCBzdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxl
OjpEb3VibGUsIHN0cm9rZVN0eWxlKTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiBOZWVkIHRvIHN1cHBvcnQgdGV4dC1kZWNvcmF0aW9uLXNraXA6IG5vbmUu
CiAjZW5kaWYKLSAgICAgICAgICAgICAgICBtX2NvbnRleHQuZHJhd0xpbmVGb3JUZXh0KHN0YXJ0
LCBtX3dpZHRoLCBtX2lzUHJpbnRpbmcsIHN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGVEb3Vi
bGUsIHN0cm9rZVN0eWxlKTsKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQuZHJhd0xpbmVGb3JU
ZXh0KHN0YXJ0LCBtX3dpZHRoLCBtX2lzUHJpbnRpbmcsIHN0eWxlID09IFRleHREZWNvcmF0aW9u
U3R5bGU6OkRvdWJsZSwgc3Ryb2tlU3R5bGUpOwogICAgICAgICAgICAgCiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBBU1NFUlQoZGVjb3JhdGlvbiA9PSBUZXh0RGVjb3JhdGlvbkxpbmVU
aHJvdWdoKTsKLSAgICAgICAgICAgIG1fY29udGV4dC5kcmF3TGluZUZvclRleHQoc3RhcnQsIG1f
d2lkdGgsIG1faXNQcmludGluZywgc3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZURvdWJsZSwg
c3Ryb2tlU3R5bGUpOworICAgICAgICAgICAgbV9jb250ZXh0LmRyYXdMaW5lRm9yVGV4dChzdGFy
dCwgbV93aWR0aCwgbV9pc1ByaW50aW5nLCBzdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpE
b3VibGUsIHN0cm9rZVN0eWxlKTsKICAgICAgICAgfQogICAgIH07CiAKQEAgLTMzNiwxMyArMzM2
LDEzIEBAIHZvaWQgVGV4dERlY29yYXRpb25QYWludGVyOjpwYWludFRleHREZWMKICAgICAgICAg
Ly8gVGhlc2UgZGVjb3JhdGlvbnMgc2hvdWxkIG1hdGNoIHRoZSB2aXN1YWwgb3ZlcmZsb3dzIGNv
bXB1dGVkIGluIHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoKS4KICAgICAgICAgaWYgKG1f
ZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25VbmRlcmxpbmUpKSB7CiAgICAgICAg
ICAgICBpbnQgb2Zmc2V0ID0gY29tcHV0ZVVuZGVybGluZU9mZnNldChtX2xpbmVTdHlsZS50ZXh0
VW5kZXJsaW5lUG9zaXRpb24oKSwgbV9saW5lU3R5bGUuZm9udE1ldHJpY3MoKSwgbV9pbmxpbmVU
ZXh0Qm94LCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyk7Ci0gICAgICAgICAgICBmbG9hdCB3YXZ5
T2Zmc2V0ID0gbV9zdHlsZXMudW5kZXJsaW5lU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZVdh
dnkgPyBtX3dhdnlPZmZzZXQgOiAwOworICAgICAgICAgICAgZmxvYXQgd2F2eU9mZnNldCA9IG1f
c3R5bGVzLnVuZGVybGluZVN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkgPyBtX3dh
dnlPZmZzZXQgOiAwOwogICAgICAgICAgICAgRmxvYXRQb2ludCBzdGFydCA9IGxvY2FsT3JpZ2lu
ICsgRmxvYXRTaXplKDAsIG9mZnNldCArIHdhdnlPZmZzZXQpOwogICAgICAgICAgICAgRmxvYXRQ
b2ludCBlbmQgPSBsb2NhbE9yaWdpbiArIEZsb2F0U2l6ZShtX3dpZHRoLCBvZmZzZXQgKyB3YXZ5
T2Zmc2V0KTsKICAgICAgICAgICAgIHBhaW50RGVjb3JhdGlvbihUZXh0RGVjb3JhdGlvblVuZGVy
bGluZSwgbV9zdHlsZXMudW5kZXJsaW5lU3R5bGUsIG1fc3R5bGVzLnVuZGVybGluZUNvbG9yLCBz
dGFydCwgZW5kLCBvZmZzZXQpOwogICAgICAgICB9CiAgICAgICAgIGlmIChtX2RlY29yYXRpb25z
LmNvbnRhaW5zKFRleHREZWNvcmF0aW9uT3ZlcmxpbmUpKSB7Ci0gICAgICAgICAgICBmbG9hdCB3
YXZ5T2Zmc2V0ID0gbV9zdHlsZXMub3ZlcmxpbmVTdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxl
V2F2eSA/IG1fd2F2eU9mZnNldCA6IDA7CisgICAgICAgICAgICBmbG9hdCB3YXZ5T2Zmc2V0ID0g
bV9zdHlsZXMub3ZlcmxpbmVTdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5ID8gbV93
YXZ5T2Zmc2V0IDogMDsKICAgICAgICAgICAgIEZsb2F0UG9pbnQgc3RhcnQgPSBsb2NhbE9yaWdp
biAtIEZsb2F0U2l6ZSgwLCB3YXZ5T2Zmc2V0KTsKICAgICAgICAgICAgIEZsb2F0UG9pbnQgZW5k
ID0gbG9jYWxPcmlnaW4gKyBGbG9hdFNpemUobV93aWR0aCwgLXdhdnlPZmZzZXQpOwogICAgICAg
ICAgICAgcGFpbnREZWNvcmF0aW9uKFRleHREZWNvcmF0aW9uT3ZlcmxpbmUsIG1fc3R5bGVzLm92
ZXJsaW5lU3R5bGUsIG1fc3R5bGVzLm92ZXJsaW5lQ29sb3IsIHN0YXJ0LCBlbmQsIDApOwpAQCAt
NDAxLDcgKzQwMSw3IEBAIHN0YXRpYyB2b2lkIGNvbGxlY3RTdHlsZXNGb3JSZW5kZXJlcihUZXgK
ICAgICB9OwogCiAgICAgYXV0byBzdHlsZUZvclJlbmRlcmVyID0gWyZdIChjb25zdCBSZW5kZXJP
YmplY3QmIHJlbmRlcmVyKSAtPiBjb25zdCBSZW5kZXJTdHlsZSYgewotICAgICAgICBpZiAocHNl
dWRvSWQgIT0gTk9QU0VVRE8gJiYgcmVuZGVyZXIuc3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShwc2V1
ZG9JZCkpIHsKKyAgICAgICAgaWYgKHBzZXVkb0lkICE9IFBzZXVkb0lkOjpOb25lICYmIHJlbmRl
cmVyLnN0eWxlKCkuaGFzUHNldWRvU3R5bGUocHNldWRvSWQpKSB7CiAgICAgICAgICAgICBpZiAo
aXM8UmVuZGVyVGV4dD4ocmVuZGVyZXIpKQogICAgICAgICAgICAgICAgIHJldHVybiAqZG93bmNh
c3Q8UmVuZGVyVGV4dD4ocmVuZGVyZXIpLmdldENhY2hlZFBzZXVkb1N0eWxlKHBzZXVkb0lkKTsK
ICAgICAgICAgICAgIHJldHVybiAqZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIpLmdl
dENhY2hlZFBzZXVkb1N0eWxlKHBzZXVkb0lkKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmgJKHJldmlzaW9uIDIzMjEwNCkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIFRleHREZWNvcmF0aW9u
U3R5bGUgbGluZXRocm91Z2hTdHlsZTsKICAgICB9OwogICAgIC8vIEZJWE1FOiBNYWtlIHJlcXVl
c3RlZERlY29yYXRpb25zIGFuIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4uIFNlZSA8aHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3Njg0ND4uCi0gICAgc3RhdGljIFN0
eWxlcyBzdHlsZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QmLCB1bnNpZ25lZCByZXF1
ZXN0ZWREZWNvcmF0aW9ucywgYm9vbCBmaXJzdExpbmVTdHlsZSA9IGZhbHNlLCBQc2V1ZG9JZCA9
IE5PUFNFVURPKTsKKyAgICBzdGF0aWMgU3R5bGVzIHN0eWxlc0ZvclJlbmRlcmVyKGNvbnN0IFJl
bmRlck9iamVjdCYsIHVuc2lnbmVkIHJlcXVlc3RlZERlY29yYXRpb25zLCBib29sIGZpcnN0TGlu
ZVN0eWxlID0gZmFsc2UsIFBzZXVkb0lkID0gUHNldWRvSWQ6Ok5vbmUpOwogCiBwcml2YXRlOgog
ICAgIEdyYXBoaWNzQ29udGV4dCYgbV9jb250ZXh0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDIzMjEwNCkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTEsOCArMTExLDggQEAgcHVibGljOgogICAgICAgICAsIG1fcmVuZGVyVGV4
dEluZm8oaW5SZW5kZXJUZXh0SW5mbykKICAgICAgICAgLCBtX2xhc3RGbG9hdEZyb21QcmV2aW91
c0xpbmUoaW5MYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lKQogICAgICAgICAsIG1fd2lkdGgobGlu
ZVdpZHRoKQotICAgICAgICAsIG1fY3VycldTKE5PUk1BTCkKLSAgICAgICAgLCBtX2xhc3RXUyhO
T1JNQUwpCisgICAgICAgICwgbV9jdXJyV1MoV2hpdGVTcGFjZTo6Tm9ybWFsKQorICAgICAgICAs
IG1fbGFzdFdTKFdoaXRlU3BhY2U6Ok5vcm1hbCkKICAgICAgICAgLCBtX3ByZXNlcnZlc05ld2xp
bmUoZmFsc2UpCiAgICAgICAgICwgbV9hdFN0YXJ0KHRydWUpCiAgICAgICAgICwgbV9pZ25vcmlu
Z1NwYWNlcyhmYWxzZSkKQEAgLTE2MSw3ICsxNjEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNs
ZWFyTGluZUJyZWFrSWZGaXRzT25MaW5lKGJvb2wgaWdub3JpbmdUcmFpbGluZ1NwYWNlID0gZmFs
c2UpCiAgICAgewotICAgICAgICBpZiAobV93aWR0aC5maXRzT25MaW5lKGlnbm9yaW5nVHJhaWxp
bmdTcGFjZSkgfHwgbV9sYXN0V1MgPT0gTk9XUkFQIHx8IG1faGFuZ3NBdEVuZCkKKyAgICAgICAg
aWYgKG1fd2lkdGguZml0c09uTGluZShpZ25vcmluZ1RyYWlsaW5nU3BhY2UpIHx8IG1fbGFzdFdT
ID09IFdoaXRlU3BhY2U6Ok5vV3JhcCB8fCBtX2hhbmdzQXRFbmQpCiAgICAgICAgICAgICBtX2xp
bmVCcmVha0hpc3RvcnkuY2xlYXIoKTsKICAgICAgICAgbV9oYW5nc0F0RW5kID0gZmFsc2U7CiAg
ICAgfQpAQCAtMjY4LDEzICsyNjgsMTMgQEAgcHJpdmF0ZToKIAogICAgIExpbmVXaWR0aCBtX3dp
ZHRoOwogCi0gICAgRVdoaXRlU3BhY2UgbV9jdXJyV1M7Ci0gICAgRVdoaXRlU3BhY2UgbV9sYXN0
V1M7CisgICAgV2hpdGVTcGFjZSBtX2N1cnJXUzsKKyAgICBXaGl0ZVNwYWNlIG1fbGFzdFdTOwog
CiAgICAgYm9vbCBtX3ByZXNlcnZlc05ld2xpbmU7CiAgICAgYm9vbCBtX2F0U3RhcnQ7CiAKLSAg
ICAvLyBUaGlzIHZhcmlhYmxlIGlzIHVzZWQgb25seSBpZiB3aGl0ZXNwYWNlIGlzbid0IHNldCB0
byBQUkUsIGFuZCBpdCB0ZWxscyB1cyB3aGV0aGVyCisgICAgLy8gVGhpcyB2YXJpYWJsZSBpcyB1
c2VkIG9ubHkgaWYgd2hpdGVzcGFjZSBpc24ndCBzZXQgdG8gV2hpdGVTcGFjZTo6UHJlLCBhbmQg
aXQgdGVsbHMgdXMgd2hldGhlcgogICAgIC8vIG9yIG5vdCB3ZSBhcmUgY3VycmVudGx5IGlnbm9y
aW5nIHdoaXRlc3BhY2UuCiAgICAgYm9vbCBtX2lnbm9yaW5nU3BhY2VzOwogCkBAIC0zNjUsNyAr
MzY1LDcgQEAgaW5saW5lIHZvaWQgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVCUihDbAogICAgICAg
ICAvLyBJZiB3ZSB3ZXJlIHByZWNlZGVkIGJ5IGNvbGxhcHNpbmcgc3BhY2UgYW5kIGFyZSBpbiBh
IHJpZ2h0LWFsaWduZWQgY29udGFpbmVyIHdlIG5lZWQgdG8gZW5zdXJlIHRoZSBzcGFjZSBnZXRz
CiAgICAgICAgIC8vIGNvbGxhcHNlZCBhd2F5IHNvIHRoYXQgaXQgZG9lc24ndCBwdXNoIHRoZSB0
ZXh0IG91dCBmcm9tIHRoZSBjb250YWluZXIncyByaWdodC1oYW5kIGVkZ2UuCiAgICAgICAgIC8v
IEZJWE1FOiBEbyB0aGlzIHJlZ2FyZGxlc3Mgb2YgdGhlIGNvbnRhaW5lcidzIGFsaWdubWVudCAt
IHdpbGwgcmVxdWlyZSByZWJhc2VsaW5pbmcgYSBsb3Qgb2YgdGVzdCByZXN1bHRzLgotICAgICAg
ICBlbHNlIGlmIChtX2lnbm9yaW5nU3BhY2VzICYmIChtX2Jsb2NrU3R5bGUudGV4dEFsaWduKCkg
PT0gUklHSFQgfHwgbV9ibG9ja1N0eWxlLnRleHRBbGlnbigpID09IFdFQktJVF9SSUdIVCkpCisg
ICAgICAgIGVsc2UgaWYgKG1faWdub3JpbmdTcGFjZXMgJiYgKG1fYmxvY2tTdHlsZS50ZXh0QWxp
Z24oKSA9PSBUZXh0QWxpZ25Nb2RlOjpSaWdodCB8fCBtX2Jsb2NrU3R5bGUudGV4dEFsaWduKCkg
PT0gVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQpKQogICAgICAgICAgICAgbV9saW5lV2hpdGVz
cGFjZUNvbGxhcHNpbmdTdGF0ZS5zdG9wSWdub3JpbmdTcGFjZXMoSW5saW5lSXRlcmF0b3IoMCwg
bV9jdXJyZW50LnJlbmRlcmVyKCksIG1fY3VycmVudC5vZmZzZXQoKSkpOwogCiAgICAgICAgIGlm
ICghbV9saW5lSW5mby5pc0VtcHR5KCkpCkBAIC00MzcsNyArNDM3LDcgQEAgaW5saW5lIHZvaWQg
QnJlYWtpbmdDb250ZXh0OjpoYW5kbGVPdXRPZgogICAgIGlmICghaXNJbmxpbmVUeXBlKQogICAg
ICAgICBtX2Jsb2NrLnNldFN0YXRpY0lubGluZVBvc2l0aW9uRm9yQ2hpbGQoYm94LCBtX2Jsb2Nr
LmxvZ2ljYWxIZWlnaHQoKSwgbV9ibG9jay5zdGFydE9mZnNldEZvckNvbnRlbnQobV9ibG9jay5s
b2dpY2FsSGVpZ2h0KCkpKTsKICAgICBlbHNlIHsKLSAgICAgICAgLy8gSWYgb3VyIG9yaWdpbmFs
IGRpc3BsYXkgd2FzIGFuIElOTElORSB0eXBlLCB0aGVuIHdlIGNhbiBkZXRlcm1pbmUgb3VyIHN0
YXRpYyB5IHBvc2l0aW9uIG5vdy4KKyAgICAgICAgLy8gSWYgb3VyIG9yaWdpbmFsIGRpc3BsYXkg
d2FzIGFuIERpc3BsYXlUeXBlOjpJbmxpbmUgdHlwZSwgdGhlbiB3ZSBjYW4gZGV0ZXJtaW5lIG91
ciBzdGF0aWMgeSBwb3NpdGlvbiBub3cuCiAgICAgICAgIGJveC5sYXllcigpLT5zZXRTdGF0aWNC
bG9ja1Bvc2l0aW9uKG1fYmxvY2subG9naWNhbEhlaWdodCgpKTsKICAgICB9CiAKQEAgLTc2Miw3
ICs3NjIsNyBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQoCiAgICAg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gbGluZVN0eWxlKHJlbmRlclRleHQsIG1fbGluZUlu
Zm8pOwogICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUuZm9udENhc2NhZGUoKTsK
ICAgICBib29sIGlzRml4ZWRQaXRjaCA9IGZvbnQuaXNGaXhlZFBpdGNoKCk7Ci0gICAgYm9vbCBj
YW5IeXBoZW5hdGUgPSBzdHlsZS5oeXBoZW5zKCkgPT0gSHlwaGVuc0F1dG8gJiYgV2ViQ29yZTo6
Y2FuSHlwaGVuYXRlKHN0eWxlLmxvY2FsZSgpKTsKKyAgICBib29sIGNhbkh5cGhlbmF0ZSA9IHN0
eWxlLmh5cGhlbnMoKSA9PSBIeXBoZW5zOjpBdXRvICYmIFdlYkNvcmU6OmNhbkh5cGhlbmF0ZShz
dHlsZS5sb2NhbGUoKSk7CiAgICAgYm9vbCBjYW5IYW5nUHVuY3R1YXRpb25BdFN0YXJ0ID0gc3R5
bGUuaGFuZ2luZ1B1bmN0dWF0aW9uKCkgJiBGaXJzdEhhbmdpbmdQdW5jdHVhdGlvbjsKICAgICBi
b29sIGNhbkhhbmdQdW5jdHVhdGlvbkF0RW5kID0gc3R5bGUuaGFuZ2luZ1B1bmN0dWF0aW9uKCkg
JiBMYXN0SGFuZ2luZ1B1bmN0dWF0aW9uOwogICAgIGJvb2wgY2FuSGFuZ1N0b3BPckNvbW1hQXRM
aW5lRW5kID0gc3R5bGUuaGFuZ2luZ1B1bmN0dWF0aW9uKCkgJiBBbGxvd0VuZEhhbmdpbmdQdW5j
dHVhdGlvbjsKQEAgLTc3OCw3ICs3NzgsNyBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6
OmhhbmRsZVRleHQoCiAgICAgYm9vbCBicmVha05CU1AgPSBtX2F1dG9XcmFwICYmIG1fY3VycmVu
dFN0eWxlLT5uYnNwTW9kZSgpID09IE5CU1BNb2RlOjpTcGFjZTsKICAgICAvLyBBdXRvLXdyYXBw
aW5nIHRleHQgc2hvdWxkIHdyYXAgaW4gdGhlIG1pZGRsZSBvZiBhIHdvcmQgb25seSBpZiBpdCBj
b3VsZCBub3Qgd3JhcCBiZWZvcmUgdGhlIHdvcmQsCiAgICAgLy8gd2hpY2ggaXMgb25seSBwb3Nz
aWJsZSBpZiB0aGUgd29yZCBpcyB0aGUgZmlyc3QgdGhpbmcgb24gdGhlIGxpbmUuCi0gICAgYm9v
bCBicmVha1dvcmRzID0gbV9jdXJyZW50U3R5bGUtPmJyZWFrV29yZHMoKSAmJiAoKG1fYXV0b1dy
YXAgJiYgKCFtX3dpZHRoLmNvbW1pdHRlZFdpZHRoKCkgJiYgIW1fd2lkdGguaGFzQ29tbWl0dGVk
UmVwbGFjZWQoKSkpIHx8IG1fY3VycldTID09IFBSRSk7CisgICAgYm9vbCBicmVha1dvcmRzID0g
bV9jdXJyZW50U3R5bGUtPmJyZWFrV29yZHMoKSAmJiAoKG1fYXV0b1dyYXAgJiYgKCFtX3dpZHRo
LmNvbW1pdHRlZFdpZHRoKCkgJiYgIW1fd2lkdGguaGFzQ29tbWl0dGVkUmVwbGFjZWQoKSkpIHx8
IG1fY3VycldTID09IFdoaXRlU3BhY2U6OlByZSk7CiAgICAgYm9vbCBtaWRXb3JkQnJlYWsgPSBm
YWxzZTsKICAgICBib29sIGJyZWFrQWxsID0gbV9jdXJyZW50U3R5bGUtPndvcmRCcmVhaygpID09
IFdvcmRCcmVhazo6QnJlYWtBbGwgJiYgbV9hdXRvV3JhcDsKICAgICBib29sIGtlZXBBbGxXb3Jk
cyA9IG1fY3VycmVudFN0eWxlLT53b3JkQnJlYWsoKSA9PSBXb3JkQnJlYWs6OktlZXBBbGw7CkBA
IC04MzAsNyArODMwLDcgQEAgaW5saW5lIGJvb2wgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0
KAogICAgICAgICBpZiAoIW1fY29sbGFwc2VXaGl0ZVNwYWNlIHx8ICFtX2N1cnJlbnRDaGFyYWN0
ZXJJc1NwYWNlKQogICAgICAgICAgICAgbV9saW5lSW5mby5zZXRFbXB0eShmYWxzZSwgJm1fYmxv
Y2ssICZtX3dpZHRoKTsKIAotICAgICAgICBpZiAoYyA9PSBzb2Z0SHlwaGVuICYmIG1fYXV0b1dy
YXAgJiYgIWh5cGhlbldpZHRoICYmIHN0eWxlLmh5cGhlbnMoKSAhPSBIeXBoZW5zTm9uZSkgewor
ICAgICAgICBpZiAoYyA9PSBzb2Z0SHlwaGVuICYmIG1fYXV0b1dyYXAgJiYgIWh5cGhlbldpZHRo
ICYmIHN0eWxlLmh5cGhlbnMoKSAhPSBIeXBoZW5zOjpOb25lKSB7CiAgICAgICAgICAgICBoeXBo
ZW5XaWR0aCA9IG1lYXN1cmVIeXBoZW5XaWR0aChyZW5kZXJUZXh0LCBmb250LCAmZmFsbGJhY2tG
b250cyk7CiAgICAgICAgICAgICBtX3dpZHRoLmFkZFVuY29tbWl0dGVkV2lkdGgoaHlwaGVuV2lk
dGgpOwogICAgICAgICB9CkBAIC04MzksNyArODM5LDcgQEAgaW5saW5lIGJvb2wgQnJlYWtpbmdD
b250ZXh0OjpoYW5kbGVUZXh0KAogCiAgICAgICAgIG1fY3VycmVudENoYXJhY3RlcklzV1MgPSBt
X2N1cnJlbnRDaGFyYWN0ZXJJc1NwYWNlIHx8IChicmVha05CU1AgJiYgYyA9PSBub0JyZWFrU3Bh
Y2UpOwogCi0gICAgICAgIGlmICgoYnJlYWtBbGwgfHwgYnJlYWtXb3JkcykgJiYgIW1pZFdvcmRC
cmVhayAmJiAoIW1fY3VycmVudENoYXJhY3RlcklzU3BhY2UgfHwgc3R5bGUud2hpdGVTcGFjZSgp
ICE9IFBSRV9XUkFQKSkgeworICAgICAgICBpZiAoKGJyZWFrQWxsIHx8IGJyZWFrV29yZHMpICYm
ICFtaWRXb3JkQnJlYWsgJiYgKCFtX2N1cnJlbnRDaGFyYWN0ZXJJc1NwYWNlIHx8IHN0eWxlLndo
aXRlU3BhY2UoKSAhPSBXaGl0ZVNwYWNlOjpQcmVXcmFwKSkgewogICAgICAgICAgICAgd3JhcFcg
Kz0gY2hhcldpZHRoOwogICAgICAgICAgICAgYm9vbCBtaWRXb3JkQnJlYWtJc0JlZm9yZVN1cnJv
Z2F0ZVBhaXIgPSBVMTZfSVNfTEVBRChjKSAmJiBVMTZfSVNfVFJBSUwocmVuZGVyVGV4dC5jaGFy
YWN0ZXJBdChtX2N1cnJlbnQub2Zmc2V0KCkgKyAxKSk7CiAgICAgICAgICAgICBjaGFyV2lkdGgg
PSB0ZXh0V2lkdGgocmVuZGVyVGV4dCwgbV9jdXJyZW50Lm9mZnNldCgpLCBtaWRXb3JkQnJlYWtJ
c0JlZm9yZVN1cnJvZ2F0ZVBhaXIgPyAyIDogMSwgZm9udCwgbV93aWR0aC5jb21taXR0ZWRXaWR0
aCgpICsgd3JhcFcsIGlzRml4ZWRQaXRjaCwgbV9jb2xsYXBzZVdoaXRlU3BhY2UsIGZhbGxiYWNr
Rm9udHMsIHRleHRMYXlvdXQpOwpAQCAtODQ3LDggKzg0Nyw4IEBAIGlubGluZSBib29sIEJyZWFr
aW5nQ29udGV4dDo6aGFuZGxlVGV4dCgKICAgICAgICAgfQogCiAgICAgICAgIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IG5leHRCcmVha2FibGVQb3NpdGlvbiA9IG1fY3VycmVudC5uZXh0QnJlYWth
YmxlUG9zaXRpb24oKTsKLSAgICAgICAgYm9vbCBiZXR3ZWVuV29yZHMgPSBjID09ICdcbicgfHwg
KG1fY3VycldTICE9IFBSRSAmJiAhbV9hdFN0YXJ0ICYmIGlzQnJlYWthYmxlKG1fcmVuZGVyVGV4
dEluZm8ubGluZUJyZWFrSXRlcmF0b3IsIG1fY3VycmVudC5vZmZzZXQoKSwgbmV4dEJyZWFrYWJs
ZVBvc2l0aW9uLCBicmVha05CU1AsIGNhblVzZUxpbmVCcmVha1Nob3J0Y3V0LCBrZWVwQWxsV29y
ZHMpCi0gICAgICAgICAgICAmJiAoc3R5bGUuaHlwaGVucygpICE9IEh5cGhlbnNOb25lIHx8ICht
X2N1cnJlbnQucHJldmlvdXNJblNhbWVOb2RlKCkgIT0gc29mdEh5cGhlbikpKTsKKyAgICAgICAg
Ym9vbCBiZXR3ZWVuV29yZHMgPSBjID09ICdcbicgfHwgKG1fY3VycldTICE9IFdoaXRlU3BhY2U6
OlByZSAmJiAhbV9hdFN0YXJ0ICYmIGlzQnJlYWthYmxlKG1fcmVuZGVyVGV4dEluZm8ubGluZUJy
ZWFrSXRlcmF0b3IsIG1fY3VycmVudC5vZmZzZXQoKSwgbmV4dEJyZWFrYWJsZVBvc2l0aW9uLCBi
cmVha05CU1AsIGNhblVzZUxpbmVCcmVha1Nob3J0Y3V0LCBrZWVwQWxsV29yZHMpCisgICAgICAg
ICAgICAmJiAoc3R5bGUuaHlwaGVucygpICE9IEh5cGhlbnM6Ok5vbmUgfHwgKG1fY3VycmVudC5w
cmV2aW91c0luU2FtZU5vZGUoKSAhPSBzb2Z0SHlwaGVuKSkpOwogICAgICAgICBtX2N1cnJlbnQu
c2V0TmV4dEJyZWFrYWJsZVBvc2l0aW9uKG5leHRCcmVha2FibGVQb3NpdGlvbik7CiAgICAgICAg
IAogICAgICAgICBpZiAoY2FuSGFuZ1N0b3BPckNvbW1hQXRMaW5lRW5kICYmIHJlbmRlclRleHQu
aXNIYW5nYWJsZVN0b3BPckNvbW1hKGMpICYmIG1fd2lkdGguZml0c09uTGluZSgpKSB7CkBAIC05
NDcsNyArOTQ3LDcgQEAgaW5saW5lIGJvb2wgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0KAog
ICAgICAgICAgICAgICAgICAgICAgICAgd29yZE1lYXN1cmVtZW50LmVuZE9mZnNldCA9IG1fbGlu
ZUJyZWFrSGlzdG9yeS5vZmZzZXQoKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgbGFzdCBicmVha2luZyBwb3NpdGlvbiBpcyBhIHNv
ZnQtaHlwaGVuLgotICAgICAgICAgICAgICAgICAgICBpZiAoIWh5cGhlbmF0ZWQgJiYgc3R5bGUu
aHlwaGVucygpICE9IEh5cGhlbnNOb25lKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghaHlw
aGVuYXRlZCAmJiBzdHlsZS5oeXBoZW5zKCkgIT0gSHlwaGVuczo6Tm9uZSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbGFzdEJyZWFraW5nUG9zaXRv
bjsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXJB
dEJyZWFraW5nUG9zaXRpb24gPSBudWxscHRyOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG1fbGluZUJyZWFrSGlzdG9yeS5vZmZzZXQoKSB8fCBtX2xpbmVCcmVha0hpc3RvcnkubmV4dEJy
ZWFrYWJsZVBvc2l0aW9uKCkpIHsKQEAgLTEwNzEsNyArMTA3MSw3IEBAIGlubGluZSBib29sIEJy
ZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dCgKICAgICAgICAgICAgIC8vIFNwYWNlcyBhZnRlciBy
aWdodC1hbGlnbmVkIHRleHQgYW5kIGJlZm9yZSBhIGxpbmUtYnJlYWsgZ2V0IGNvbGxhcHNlZCBh
d2F5IGNvbXBsZXRlbHkgc28gdGhhdCB0aGUgdHJhaWxpbmcKICAgICAgICAgICAgIC8vIHNwYWNl
IGRvZXNuJ3Qgc2VlbSB0byBwdXNoIHRoZSB0ZXh0IG91dCBmcm9tIHRoZSByaWdodC1oYW5kIGVk
Z2UuCiAgICAgICAgICAgICAvLyBGSVhNRTogRG8gdGhpcyByZWdhcmRsZXNzIG9mIHRoZSBjb250
YWluZXIncyBhbGlnbm1lbnQgLSB3aWxsIHJlcXVpcmUgcmViYXNlbGluaW5nIGEgbG90IG9mIHRl
c3QgcmVzdWx0cy4KLSAgICAgICAgICAgIGlmIChtX25leHRPYmplY3QgJiYgbV9zdGFydE9mSWdu
b3JlZFNwYWNlcy5vZmZzZXQoKSAmJiBtX25leHRPYmplY3QtPmlzQlIoKSAmJiAobV9ibG9ja1N0
eWxlLnRleHRBbGlnbigpID09IFJJR0hUIHx8IG1fYmxvY2tTdHlsZS50ZXh0QWxpZ24oKSA9PSBX
RUJLSVRfUklHSFQpKSB7CisgICAgICAgICAgICBpZiAobV9uZXh0T2JqZWN0ICYmIG1fc3RhcnRP
Zklnbm9yZWRTcGFjZXMub2Zmc2V0KCkgJiYgbV9uZXh0T2JqZWN0LT5pc0JSKCkgJiYgKG1fYmxv
Y2tTdHlsZS50ZXh0QWxpZ24oKSA9PSBUZXh0QWxpZ25Nb2RlOjpSaWdodCB8fCBtX2Jsb2NrU3R5
bGUudGV4dEFsaWduKCkgPT0gVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQpKSB7CiAgICAgICAg
ICAgICAgICAgbV9zdGFydE9mSWdub3JlZFNwYWNlcy5zZXRPZmZzZXQobV9zdGFydE9mSWdub3Jl
ZFNwYWNlcy5vZmZzZXQoKSAtIDEpOwogICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlJ3MganVz
dCBhIHNpbmdsZSB0cmFpbGluZyBzcGFjZSBzdGFydCBpZ25vcmluZyBpdCBub3cgc28gaXQgY29s
bGFwc2VzIGF3YXkuCiAgICAgICAgICAgICAgICAgaWYgKG1fY3VycmVudC5vZmZzZXQoKSA9PSBy
ZW5kZXJUZXh0LnRleHQoKS5sZW5ndGgoKSAtIDEpCkBAIC0xMTMwLDcgKzExMzAsNyBAQCBpbmxp
bmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQoCiAgICAgICAgICAgICB9KTsKICAg
ICAgICAgfQogCi0gICAgICAgIGlmICghaHlwaGVuYXRlZCAmJiBtX2xpbmVCcmVha0hpc3Rvcnku
cHJldmlvdXNJblNhbWVOb2RlKCkgPT0gc29mdEh5cGhlbiAmJiBzdHlsZS5oeXBoZW5zKCkgIT0g
SHlwaGVuc05vbmUpIHsKKyAgICAgICAgaWYgKCFoeXBoZW5hdGVkICYmIG1fbGluZUJyZWFrSGlz
dG9yeS5wcmV2aW91c0luU2FtZU5vZGUoKSA9PSBzb2Z0SHlwaGVuICYmIHN0eWxlLmh5cGhlbnMo
KSAhPSBIeXBoZW5zOjpOb25lKSB7CiAgICAgICAgICAgICBoeXBoZW5hdGVkID0gdHJ1ZTsKICAg
ICAgICAgICAgIG1fYXRFbmQgPSB0cnVlOwogICAgICAgICB9CkBAIC0xMTQ3LDcgKzExNDcsNyBA
QCBpbmxpbmUgYm9vbCB0ZXh0QmVnaW5zV2l0aEJyZWFrYWJsZVBvc2l0CiBpbmxpbmUgYm9vbCBC
cmVha2luZ0NvbnRleHQ6OmNhbkJyZWFrQXRUaGlzUG9zaXRpb24oKQogewogICAgIC8vIElmIHdl
IGFyZSBuby13cmFwIGFuZCBoYXZlIGZvdW5kIGEgbGluZS1icmVha2luZyBvcHBvcnR1bml0eSBh
bHJlYWR5IHRoZW4gd2Ugc2hvdWxkIHRha2UgaXQuCi0gICAgaWYgKG1fd2lkdGguY29tbWl0dGVk
V2lkdGgoKSAmJiAhbV93aWR0aC5maXRzT25MaW5lKG1fY3VycmVudENoYXJhY3RlcklzU3BhY2Up
ICYmIG1fY3VycldTID09IE5PV1JBUCkKKyAgICBpZiAobV93aWR0aC5jb21taXR0ZWRXaWR0aCgp
ICYmICFtX3dpZHRoLmZpdHNPbkxpbmUobV9jdXJyZW50Q2hhcmFjdGVySXNTcGFjZSkgJiYgbV9j
dXJyV1MgPT0gV2hpdGVTcGFjZTo6Tm9XcmFwKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IC8vIEF2b2lkIGJyZWFraW5nIG9uIGVtcHR5IGlubGluZXMuCkBAIC0xMjU3LDcgKzEyNTcsNyBA
QCBpbmxpbmUgSW5saW5lSXRlcmF0b3IgQnJlYWtpbmdDb250ZXh0OjpoCiAgICAgaWYgKG1fbGlu
ZUJyZWFrSGlzdG9yeS5jdXJyZW50KCkgPT0gbV9yZXNvbHZlci5wb3NpdGlvbigpKSB7CiAgICAg
ICAgIGlmICghbV9saW5lQnJlYWtIaXN0b3J5LnJlbmRlcmVyKCkgfHwgIW1fbGluZUJyZWFrSGlz
dG9yeS5yZW5kZXJlcigpLT5pc0JSKCkpIHsKICAgICAgICAgICAgIC8vIHdlIGp1c3QgYWRkIGFz
IG11Y2ggYXMgcG9zc2libGUKLSAgICAgICAgICAgIGlmIChtX2Jsb2NrU3R5bGUud2hpdGVTcGFj
ZSgpID09IFBSRSAmJiAhbV9jdXJyZW50Lm9mZnNldCgpKSB7CisgICAgICAgICAgICBpZiAobV9i
bG9ja1N0eWxlLndoaXRlU3BhY2UoKSA9PSBXaGl0ZVNwYWNlOjpQcmUgJiYgIW1fY3VycmVudC5v
ZmZzZXQoKSkgewogICAgICAgICAgICAgICAgIGlmIChtX2xhc3RPYmplY3QpCiAgICAgICAgICAg
ICAgICAgICAgIGNvbW1pdExpbmVCcmVha0F0Q3VycmVudFdpZHRoKCptX2xhc3RPYmplY3QsIG1f
bGFzdE9iamVjdC0+aXNUZXh0KCkgPyBtX2xhc3RPYmplY3QtPmxlbmd0aCgpIDogMCk7CiAgICAg
ICAgICAgICAgICAgZWxzZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGlu
ZUlubGluZUhlYWRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bGluZS9MaW5lSW5saW5lSGVhZGVycy5oCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbGluZS9MaW5lSW5saW5lSGVhZGVycy5oCSh3b3JraW5nIGNvcHkpCkBA
IC02OCw3ICs2OCw3IEBAIGlubGluZSBib29sIHNob3VsZENvbGxhcHNlV2hpdGVTcGFjZShjb24K
ICAgICAvLyBJZiBhIHNwYWNlIChVKzAwMjApIGF0IHRoZSBlbmQgb2YgYSBsaW5lIGhhcyAnd2hp
dGUtc3BhY2UnIHNldCB0byAnbm9ybWFsJywgJ25vd3JhcCcsIG9yICdwcmUtbGluZScsIGl0IGlz
IGFsc28gcmVtb3ZlZC4KICAgICAvLyBJZiBzcGFjZXMgKFUrMDAyMCkgb3IgdGFicyAoVSswMDA5
KSBhdCB0aGUgZW5kIG9mIGEgbGluZSBoYXZlICd3aGl0ZS1zcGFjZScgc2V0IHRvICdwcmUtd3Jh
cCcsIFVBcyBtYXkgdmlzdWFsbHkgY29sbGFwc2UgdGhlbS4KICAgICByZXR1cm4gc3R5bGUtPmNv
bGxhcHNlV2hpdGVTcGFjZSgpCi0gICAgICAgIHx8ICh3aGl0ZXNwYWNlUG9zaXRpb24gPT0gVHJh
aWxpbmdXaGl0ZXNwYWNlICYmIHN0eWxlLT53aGl0ZVNwYWNlKCkgPT0gUFJFX1dSQVAgJiYgKCFs
aW5lSW5mby5pc0VtcHR5KCkgfHwgIWxpbmVJbmZvLnByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSgp
KSk7CisgICAgICAgIHx8ICh3aGl0ZXNwYWNlUG9zaXRpb24gPT0gVHJhaWxpbmdXaGl0ZXNwYWNl
ICYmIHN0eWxlLT53aGl0ZVNwYWNlKCkgPT0gV2hpdGVTcGFjZTo6UHJlV3JhcCAmJiAoIWxpbmVJ
bmZvLmlzRW1wdHkoKSB8fCAhbGluZUluZm8ucHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KCkpKTsK
IH0KIAogaW5saW5lIGJvb2wgc2tpcE5vbkJyZWFraW5nU3BhY2UoY29uc3QgSW5saW5lSXRlcmF0
b3ImIGl0LCBjb25zdCBMaW5lSW5mbyYgbGluZUluZm8pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbGluZS9MaW5lV2lkdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9saW5lL0xpbmVXaWR0aC5jcHAJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVXaWR0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc2LDcgKzc2LDcgQEAgc3RhdGljIGJvb2wgbmV3RmxvYXRTaHJpbmtzTGluZShjb25zdCBGbAog
CiAgICAgLy8gaW5pdGlhbC1sZXR0ZXIgZmxvYXQgYWx3YXlzIHNocmlua3MgdGhlIGZpcnN0IGxp
bmUuCiAgICAgY29uc3QgYXV0byYgc3R5bGUgPSBuZXdGbG9hdC5yZW5kZXJlcigpLnN0eWxlKCk7
Ci0gICAgaWYgKGlzRmlyc3RMaW5lICYmIHN0eWxlLnN0eWxlVHlwZSgpID09IEZJUlNUX0xFVFRF
UiAmJiAhc3R5bGUuaW5pdGlhbExldHRlcigpLmlzRW1wdHkoKSkKKyAgICBpZiAoaXNGaXJzdExp
bmUgJiYgc3R5bGUuc3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6OkZpcnN0TGV0dGVyICYmICFzdHls
ZS5pbml0aWFsTGV0dGVyKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01h
dGhPcGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9NYXRoT3BlcmF0b3IuY3BwCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhPcGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcw
OCw3ICs3MDgsNyBAQCB2b2lkIE1hdGhPcGVyYXRvcjo6cGFpbnRIb3Jpem9udGFsR2x5cGhBCiAK
IHZvaWQgTWF0aE9wZXJhdG9yOjpwYWludChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIFBhaW50
SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewotICAgIGlmIChp
bmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkgfHwgaW5mby5waGFzZSAhPSBQYWludFBo
YXNlRm9yZWdyb3VuZCB8fCBzdHlsZS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAo
aW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpIHx8IGluZm8ucGhhc2UgIT0gUGFpbnRQ
aGFzZUZvcmVncm91bmQgfHwgc3R5bGUudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2li
bGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIE1ha2UgYSBjb3B5IG9mIHRoZSBQYWludElu
Zm8gYmVjYXVzZSBhcHBseVRyYW5zZm9ybSB3aWxsIG1vZGlmeSBpdHMgcmVjdC4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
RnJhY3Rpb24uY3BwCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU1
LDcgKzI1NSw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MRnJhY3Rpb246OnBhaW50KFBhaW50SW4KIHsK
ICAgICBSZW5kZXJNYXRoTUxCbG9jazo6cGFpbnQoaW5mbywgcGFpbnRPZmZzZXQpOwogICAgIExh
eW91dFVuaXQgdGhpY2tuZXNzID0gbGluZVRoaWNrbmVzcygpOwotICAgIGlmIChpbmZvLmNvbnRl
eHQoKS5wYWludGluZ0Rpc2FibGVkKCkgfHwgaW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdy
b3VuZCB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8ICFpc1ZhbGlkKCkgfHwg
IXRoaWNrbmVzcykKKyAgICBpZiAoaW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpIHx8
IGluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQgfHwgc3R5bGUoKS52aXNpYmlsaXR5
KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSB8fCAhaXNWYWxpZCgpIHx8ICF0aGlja25lc3MpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIEludFBvaW50IGFkanVzdGVkUGFpbnRPZmZzZXQgPSByb3Vu
ZGVkSW50UG9pbnQocGFpbnRPZmZzZXQgKyBsb2NhdGlvbigpICsgTGF5b3V0UG9pbnQoMCwgYXNj
ZW50T3Zlckhvcml6b250YWxBeGlzKCkpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNYXRoLmNwcAkocmV2aXNpb24gMjMyMTA0
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNYXRoLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCB2b2lkIFJlbmRlck1hdGhNTE1hdGg6
OmxheW91dEJsb2NrKGJvb2wgCiB7CiAgICAgQVNTRVJUKG5lZWRzTGF5b3V0KCkpOwogCi0gICAg
aWYgKHN0eWxlKCkuZGlzcGxheSgpICE9IEJMT0NLKSB7CisgICAgaWYgKHN0eWxlKCkuZGlzcGxh
eSgpICE9IERpc3BsYXlUeXBlOjpCbG9jaykgewogICAgICAgICBSZW5kZXJNYXRoTUxSb3c6Omxh
eW91dEJsb2NrKHJlbGF5b3V0Q2hpbGRyZW4sIHBhZ2VMb2dpY2FsSGVpZ2h0KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MTWVuY2xvc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwCShyZXZpc2lvbiAyMzIxMDQpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MTWVu
Y2xvc2U6OnBhaW50KFBhaW50SW4KIHsKICAgICBSZW5kZXJNYXRoTUxSb3c6OnBhaW50KGluZm8s
IHBhaW50T2Zmc2V0KTsKIAotICAgIGlmIChpbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVk
KCkgfHwgaW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBzdHlsZSgpLnZpc2li
aWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChpbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2Fi
bGVkKCkgfHwgaW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBzdHlsZSgpLnZp
c2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1cm47CiAKICAg
ICBMYXlvdXRVbml0IHRoaWNrbmVzcyA9IHJ1bGVUaGlja25lc3MoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcAko
cmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxSb290LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQg
UmVuZGVyTWF0aE1MUm9vdDo6cGFpbnQoUGFpbnRJbmZvJiAKIHsKICAgICBSZW5kZXJNYXRoTUxS
b3c6OnBhaW50KGluZm8sIHBhaW50T2Zmc2V0KTsKIAotICAgIGlmICghZmlyc3RDaGlsZCgpIHx8
IGluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSB8fCBzdHlsZSgpLnZpc2liaWxpdHko
KSAhPSBWSVNJQkxFIHx8ICFpc1ZhbGlkKCkpCisgICAgaWYgKCFmaXJzdENoaWxkKCkgfHwgaW5m
by5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9
IFZpc2liaWxpdHk6OlZpc2libGUgfHwgIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgLy8gV2UgZHJhdyB0aGUgcmFkaWNhbCBvcGVyYXRvci4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCShyZXZp
c2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFRva2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk0LDcgKzU5NCw3IEBAIHZvaWQgUmVu
ZGVyTWF0aE1MVG9rZW46OnBhaW50KFBhaW50SW5mbyYKICAgICBSZW5kZXJNYXRoTUxCbG9jazo6
cGFpbnQoaW5mbywgcGFpbnRPZmZzZXQpOwogCiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2YgdXNp
bmcgRHJhd0dseXBoLCB3ZSBtYXkgY29uc2lkZXIgdXNpbmcgdGhlIG1vcmUgZ2VuZXJhbCBUZXh0
UGFpbnRlciBzbyB0aGF0IHdlIGNhbiBhcHBseSBtYXRodmFyaWFudCB0byBzdHJpbmdzIHdpdGgg
YW4gYXJiaXRyYXJ5IG51bWJlciBvZiBjaGFyYWN0ZXJzIGFuZCBwcmVzZXJ2ZSBhZHZhbmNlZCBD
U1MgZWZmZWN0cyAodGV4dC1zaGFkb3csIGV0YykuCi0gICAgaWYgKGluZm8uY29udGV4dCgpLnBh
aW50aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8
IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgIW1fbWF0aFZhcmlhbnRDb2RlUG9p
bnQpCisgICAgaWYgKGluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBo
YXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZp
c2liaWxpdHk6OlZpc2libGUgfHwgIW1fbWF0aFZhcmlhbnRDb2RlUG9pbnQpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGF1dG8gbWF0aFZhcmlhbnRHbHlwaCA9IHN0eWxlKCkuZm9udENhc2NhZGUo
KS5nbHlwaERhdGFGb3JDaGFyYWN0ZXIobV9tYXRoVmFyaWFudENvZGVQb2ludC52YWx1ZSgpLCBt
X21hdGhWYXJpYW50SXNNaXJyb3JlZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL0JveFNoYXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL0JveFNoYXBlLmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcg
KzY2LDcgQEAgUm91bmRlZFJlY3QgY29tcHV0ZVJvdW5kZWRSZWN0Rm9yQm94U2hhcAogewogICAg
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHJlbmRlcmVyLnN0eWxlKCk7CiAgICAgc3dpdGNo
IChib3gpIHsKLSAgICBjYXNlIE1hcmdpbkJveDogeworICAgIGNhc2UgQ1NTQm94VHlwZTo6TWFy
Z2luQm94OiB7CiAgICAgICAgIGlmICghc3R5bGUuaGFzQm9yZGVyUmFkaXVzKCkpCiAgICAgICAg
ICAgICByZXR1cm4gUm91bmRlZFJlY3QocmVuZGVyZXIubWFyZ2luQm94UmVjdCgpLCBSb3VuZGVk
UmVjdDo6UmFkaWkoKSk7CiAKQEAgLTc1LDE4ICs3NSwxOCBAQCBSb3VuZGVkUmVjdCBjb21wdXRl
Um91bmRlZFJlY3RGb3JCb3hTaGFwCiAgICAgICAgIHJhZGlpLnNjYWxlKGNhbGNCb3JkZXJSYWRp
aUNvbnN0cmFpbnRTY2FsZUZvcihtYXJnaW5Cb3gsIHJhZGlpKSk7CiAgICAgICAgIHJldHVybiBS
b3VuZGVkUmVjdChtYXJnaW5Cb3gsIHJhZGlpKTsKICAgICB9Ci0gICAgY2FzZSBQYWRkaW5nQm94
OgorICAgIGNhc2UgQ1NTQm94VHlwZTo6UGFkZGluZ0JveDoKICAgICAgICAgcmV0dXJuIHN0eWxl
LmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihyZW5kZXJlci5ib3JkZXJCb3hSZWN0KCkpOwotICAg
IGNhc2UgQ29udGVudEJveDoKKyAgICBjYXNlIENTU0JveFR5cGU6OkNvbnRlbnRCb3g6CiAgICAg
ICAgIHJldHVybiBzdHlsZS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IocmVuZGVyZXIuYm9yZGVy
Qm94UmVjdCgpLAogICAgICAgICAgICAgcmVuZGVyZXIucGFkZGluZ1RvcCgpICsgcmVuZGVyZXIu
Ym9yZGVyVG9wKCksIHJlbmRlcmVyLnBhZGRpbmdCb3R0b20oKSArIHJlbmRlcmVyLmJvcmRlckJv
dHRvbSgpLAogICAgICAgICAgICAgcmVuZGVyZXIucGFkZGluZ0xlZnQoKSArIHJlbmRlcmVyLmJv
cmRlckxlZnQoKSwgcmVuZGVyZXIucGFkZGluZ1JpZ2h0KCkgKyByZW5kZXJlci5ib3JkZXJSaWdo
dCgpKTsKICAgICAvLyBmaWxsLCBzdHJva2UsIHZpZXctYm94IGNvbXB1dGUgdG8gYm9yZGVyLWJv
eCBmb3IgSFRNTCBlbGVtZW50cy4KLSAgICBjYXNlIEJvcmRlckJveDoKLSAgICBjYXNlIEZpbGw6
Ci0gICAgY2FzZSBTdHJva2U6Ci0gICAgY2FzZSBWaWV3Qm94OgotICAgIGNhc2UgQm94TWlzc2lu
ZzoKKyAgICBjYXNlIENTU0JveFR5cGU6OkJvcmRlckJveDoKKyAgICBjYXNlIENTU0JveFR5cGU6
OkZpbGw6CisgICAgY2FzZSBDU1NCb3hUeXBlOjpTdHJva2U6CisgICAgY2FzZSBDU1NCb3hUeXBl
OjpWaWV3Qm94OgorICAgIGNhc2UgQ1NTQm94VHlwZTo6Qm94TWlzc2luZzoKICAgICAgICAgcmV0
dXJuIHN0eWxlLmdldFJvdW5kZWRCb3JkZXJGb3IocmVuZGVyZXIuYm9yZGVyQm94UmVjdCgpKTsK
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRz
aWRlSW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZU91dHNpZGVJbmZvLmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzIsMTAgKzcyLDEwIEBAIEZsb2F0U2l6ZSBTaGFwZU91dHNpZGVJbmZvOjpzaGFwZVRvUmVu
ZGUKIAogc3RhdGljIGlubGluZSBDU1NCb3hUeXBlIHJlZmVyZW5jZUJveChjb25zdCBTaGFwZVZh
bHVlJiBzaGFwZVZhbHVlKQogewotICAgIGlmIChzaGFwZVZhbHVlLmNzc0JveCgpID09IEJveE1p
c3NpbmcpIHsKKyAgICBpZiAoc2hhcGVWYWx1ZS5jc3NCb3goKSA9PSBDU1NCb3hUeXBlOjpCb3hN
aXNzaW5nKSB7CiAgICAgICAgIGlmIChzaGFwZVZhbHVlLnR5cGUoKSA9PSBTaGFwZVZhbHVlOjpU
eXBlOjpJbWFnZSkKLSAgICAgICAgICAgIHJldHVybiBDb250ZW50Qm94OwotICAgICAgICByZXR1
cm4gTWFyZ2luQm94OworICAgICAgICAgICAgcmV0dXJuIENTU0JveFR5cGU6OkNvbnRlbnRCb3g7
CisgICAgICAgIHJldHVybiBDU1NCb3hUeXBlOjpNYXJnaW5Cb3g7CiAgICAgfQogICAgIHJldHVy
biBzaGFwZVZhbHVlLmNzc0JveCgpOwogfQpAQCAtODQsMzAgKzg0LDMwIEBAIHZvaWQgU2hhcGVP
dXRzaWRlSW5mbzo6c2V0UmVmZXJlbmNlQm94TG8KIHsKICAgICBib29sIGlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlID0gbV9yZW5kZXJlci5jb250YWluaW5nQmxvY2soKS0+c3R5bGUoKS5pc0hvcml6
b250YWxXcml0aW5nTW9kZSgpOwogICAgIHN3aXRjaCAocmVmZXJlbmNlQm94KCptX3JlbmRlcmVy
LnN0eWxlKCkuc2hhcGVPdXRzaWRlKCkpKSB7Ci0gICAgY2FzZSBNYXJnaW5Cb3g6CisgICAgY2Fz
ZSBDU1NCb3hUeXBlOjpNYXJnaW5Cb3g6CiAgICAgICAgIGlmIChpc0hvcml6b250YWxXcml0aW5n
TW9kZSkKICAgICAgICAgICAgIG5ld1JlZmVyZW5jZUJveExvZ2ljYWxTaXplLmV4cGFuZChtX3Jl
bmRlcmVyLmhvcml6b250YWxNYXJnaW5FeHRlbnQoKSwgbV9yZW5kZXJlci52ZXJ0aWNhbE1hcmdp
bkV4dGVudCgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbmV3UmVmZXJlbmNlQm94TG9n
aWNhbFNpemUuZXhwYW5kKG1fcmVuZGVyZXIudmVydGljYWxNYXJnaW5FeHRlbnQoKSwgbV9yZW5k
ZXJlci5ob3Jpem9udGFsTWFyZ2luRXh0ZW50KCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEJvcmRlckJveDoKKyAgICBjYXNlIENTU0JveFR5cGU6OkJvcmRlckJveDoKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBQYWRkaW5nQm94OgorICAgIGNhc2UgQ1NTQm94VHlwZTo6UGFkZGluZ0Jv
eDoKICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKQogICAgICAgICAgICAgbmV3
UmVmZXJlbmNlQm94TG9naWNhbFNpemUuc2hyaW5rKG1fcmVuZGVyZXIuaG9yaXpvbnRhbEJvcmRl
ckV4dGVudCgpLCBtX3JlbmRlcmVyLnZlcnRpY2FsQm9yZGVyRXh0ZW50KCkpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBuZXdSZWZlcmVuY2VCb3hMb2dpY2FsU2l6ZS5zaHJpbmsobV9yZW5k
ZXJlci52ZXJ0aWNhbEJvcmRlckV4dGVudCgpLCBtX3JlbmRlcmVyLmhvcml6b250YWxCb3JkZXJF
eHRlbnQoKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ29udGVudEJveDoKKyAgICBjYXNl
IENTU0JveFR5cGU6OkNvbnRlbnRCb3g6CiAgICAgICAgIGlmIChpc0hvcml6b250YWxXcml0aW5n
TW9kZSkKICAgICAgICAgICAgIG5ld1JlZmVyZW5jZUJveExvZ2ljYWxTaXplLnNocmluayhtX3Jl
bmRlcmVyLmhvcml6b250YWxCb3JkZXJBbmRQYWRkaW5nRXh0ZW50KCksIG1fcmVuZGVyZXIudmVy
dGljYWxCb3JkZXJBbmRQYWRkaW5nRXh0ZW50KCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBuZXdSZWZlcmVuY2VCb3hMb2dpY2FsU2l6ZS5zaHJpbmsobV9yZW5kZXJlci52ZXJ0aWNhbEJv
cmRlckFuZFBhZGRpbmdFeHRlbnQoKSwgbV9yZW5kZXJlci5ob3Jpem9udGFsQm9yZGVyQW5kUGFk
ZGluZ0V4dGVudCgpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGaWxsOgotICAgIGNhc2Ug
U3Ryb2tlOgotICAgIGNhc2UgVmlld0JveDoKLSAgICBjYXNlIEJveE1pc3Npbmc6CisgICAgY2Fz
ZSBDU1NCb3hUeXBlOjpGaWxsOgorICAgIGNhc2UgQ1NTQm94VHlwZTo6U3Ryb2tlOgorICAgIGNh
c2UgQ1NTQm94VHlwZTo6Vmlld0JveDoKKyAgICBjYXNlIENTU0JveFR5cGU6OkJveE1pc3Npbmc6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICAgICB9CkBA
IC0yMjQsMTQgKzIyNCwyMiBAQCBzdGF0aWMgaW5saW5lIExheW91dFVuaXQgYm9yZGVyQW5kUGFk
ZGluCiBMYXlvdXRVbml0IFNoYXBlT3V0c2lkZUluZm86OmxvZ2ljYWxUb3BPZmZzZXQoKSBjb25z
dAogewogICAgIHN3aXRjaCAocmVmZXJlbmNlQm94KCptX3JlbmRlcmVyLnN0eWxlKCkuc2hhcGVP
dXRzaWRlKCkpKSB7Ci0gICAgY2FzZSBNYXJnaW5Cb3g6IHJldHVybiAtbV9yZW5kZXJlci5tYXJn
aW5CZWZvcmUoJm1fcmVuZGVyZXIuY29udGFpbmluZ0Jsb2NrKCktPnN0eWxlKCkpOwotICAgIGNh
c2UgQm9yZGVyQm94OiByZXR1cm4gTGF5b3V0VW5pdCgpOwotICAgIGNhc2UgUGFkZGluZ0JveDog
cmV0dXJuIGJvcmRlckJlZm9yZUluV3JpdGluZ01vZGUobV9yZW5kZXJlciwgbV9yZW5kZXJlci5j
b250YWluaW5nQmxvY2soKS0+c3R5bGUoKS53cml0aW5nTW9kZSgpKTsKLSAgICBjYXNlIENvbnRl
bnRCb3g6IHJldHVybiBib3JkZXJBbmRQYWRkaW5nQmVmb3JlSW5Xcml0aW5nTW9kZShtX3JlbmRl
cmVyLCBtX3JlbmRlcmVyLmNvbnRhaW5pbmdCbG9jaygpLT5zdHlsZSgpLndyaXRpbmdNb2RlKCkp
OwotICAgIGNhc2UgRmlsbDogYnJlYWs7Ci0gICAgY2FzZSBTdHJva2U6IGJyZWFrOwotICAgIGNh
c2UgVmlld0JveDogYnJlYWs7Ci0gICAgY2FzZSBCb3hNaXNzaW5nOiBicmVhazsKKyAgICBjYXNl
IENTU0JveFR5cGU6Ok1hcmdpbkJveDoKKyAgICAgICAgcmV0dXJuIC1tX3JlbmRlcmVyLm1hcmdp
bkJlZm9yZSgmbV9yZW5kZXJlci5jb250YWluaW5nQmxvY2soKS0+c3R5bGUoKSk7CisgICAgY2Fz
ZSBDU1NCb3hUeXBlOjpCb3JkZXJCb3g6CisgICAgICAgIHJldHVybiBMYXlvdXRVbml0KCk7Cisg
ICAgY2FzZSBDU1NCb3hUeXBlOjpQYWRkaW5nQm94OgorICAgICAgICByZXR1cm4gYm9yZGVyQmVm
b3JlSW5Xcml0aW5nTW9kZShtX3JlbmRlcmVyLCBtX3JlbmRlcmVyLmNvbnRhaW5pbmdCbG9jaygp
LT5zdHlsZSgpLndyaXRpbmdNb2RlKCkpOworICAgIGNhc2UgQ1NTQm94VHlwZTo6Q29udGVudEJv
eDoKKyAgICAgICAgcmV0dXJuIGJvcmRlckFuZFBhZGRpbmdCZWZvcmVJbldyaXRpbmdNb2RlKG1f
cmVuZGVyZXIsIG1fcmVuZGVyZXIuY29udGFpbmluZ0Jsb2NrKCktPnN0eWxlKCkud3JpdGluZ01v
ZGUoKSk7CisgICAgY2FzZSBDU1NCb3hUeXBlOjpGaWxsOgorICAgICAgICBicmVhazsKKyAgICBj
YXNlIENTU0JveFR5cGU6OlN0cm9rZToKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NCb3hU
eXBlOjpWaWV3Qm94OgorICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU0JveFR5cGU6OkJveE1p
c3Npbmc6CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTI3MiwxNCArMjgwLDIyIEBAIExheW91dFVuaXQgU2hhcGVPdXRzaWRlSW5mbzo6
bG9naWNhbExlZnQKICAgICAgICAgcmV0dXJuIExheW91dFVuaXQoKTsKICAgICAKICAgICBzd2l0
Y2ggKHJlZmVyZW5jZUJveCgqbV9yZW5kZXJlci5zdHlsZSgpLnNoYXBlT3V0c2lkZSgpKSkgewot
ICAgIGNhc2UgTWFyZ2luQm94OiByZXR1cm4gLW1fcmVuZGVyZXIubWFyZ2luU3RhcnQoJm1fcmVu
ZGVyZXIuY29udGFpbmluZ0Jsb2NrKCktPnN0eWxlKCkpOwotICAgIGNhc2UgQm9yZGVyQm94OiBy
ZXR1cm4gTGF5b3V0VW5pdCgpOwotICAgIGNhc2UgUGFkZGluZ0JveDogcmV0dXJuIGJvcmRlclN0
YXJ0V2l0aFN0eWxlRm9yV3JpdGluZ01vZGUobV9yZW5kZXJlciwgbV9yZW5kZXJlci5jb250YWlu
aW5nQmxvY2soKS0+c3R5bGUoKSk7Ci0gICAgY2FzZSBDb250ZW50Qm94OiByZXR1cm4gYm9yZGVy
QW5kUGFkZGluZ1N0YXJ0V2l0aFN0eWxlRm9yV3JpdGluZ01vZGUobV9yZW5kZXJlciwgbV9yZW5k
ZXJlci5jb250YWluaW5nQmxvY2soKS0+c3R5bGUoKSk7Ci0gICAgY2FzZSBGaWxsOiBicmVhazsK
LSAgICBjYXNlIFN0cm9rZTogYnJlYWs7Ci0gICAgY2FzZSBWaWV3Qm94OiBicmVhazsKLSAgICBj
YXNlIEJveE1pc3Npbmc6IGJyZWFrOworICAgIGNhc2UgQ1NTQm94VHlwZTo6TWFyZ2luQm94Ogor
ICAgICAgICByZXR1cm4gLW1fcmVuZGVyZXIubWFyZ2luU3RhcnQoJm1fcmVuZGVyZXIuY29udGFp
bmluZ0Jsb2NrKCktPnN0eWxlKCkpOworICAgIGNhc2UgQ1NTQm94VHlwZTo6Qm9yZGVyQm94Ogor
ICAgICAgICByZXR1cm4gTGF5b3V0VW5pdCgpOworICAgIGNhc2UgQ1NTQm94VHlwZTo6UGFkZGlu
Z0JveDoKKyAgICAgICAgcmV0dXJuIGJvcmRlclN0YXJ0V2l0aFN0eWxlRm9yV3JpdGluZ01vZGUo
bV9yZW5kZXJlciwgbV9yZW5kZXJlci5jb250YWluaW5nQmxvY2soKS0+c3R5bGUoKSk7CisgICAg
Y2FzZSBDU1NCb3hUeXBlOjpDb250ZW50Qm94OgorICAgICAgICByZXR1cm4gYm9yZGVyQW5kUGFk
ZGluZ1N0YXJ0V2l0aFN0eWxlRm9yV3JpdGluZ01vZGUobV9yZW5kZXJlciwgbV9yZW5kZXJlci5j
b250YWluaW5nQmxvY2soKS0+c3R5bGUoKSk7CisgICAgY2FzZSBDU1NCb3hUeXBlOjpGaWxsOgor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU0JveFR5cGU6OlN0cm9rZToKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBDU1NCb3hUeXBlOjpWaWV3Qm94OgorICAgICAgICBicmVhazsKKyAgICBj
YXNlIENTU0JveFR5cGU6OkJveE1pc3Npbmc6CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0NvdW50ZXJDb250ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0NvdW50ZXJDb250ZW50LmgJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db3VudGVyQ29udGVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvdW50ZXJDb250ZW50
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBDb3VudGVyQ29u
dGVudChjb25zdCBBdG9taWNTdHJpbmcmIGlkZW50aWZpZXIsIEVMaXN0U3R5bGVUeXBlIHN0eWxl
LCBjb25zdCBBdG9taWNTdHJpbmcmIHNlcGFyYXRvcikKKyAgICBDb3VudGVyQ29udGVudChjb25z
dCBBdG9taWNTdHJpbmcmIGlkZW50aWZpZXIsIExpc3RTdHlsZVR5cGUgc3R5bGUsIGNvbnN0IEF0
b21pY1N0cmluZyYgc2VwYXJhdG9yKQogICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQogICAgICAgICAsIG1fbGlzdFN0eWxlKHN0eWxlKQogICAgICAgICAsIG1fc2VwYXJhdG9yKHNl
cGFyYXRvcikKQEAgLTQwLDEyICs0MCwxMiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9
Ci0gICAgRUxpc3RTdHlsZVR5cGUgbGlzdFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9saXN0U3R5
bGU7IH0KKyAgICBMaXN0U3R5bGVUeXBlIGxpc3RTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGlz
dFN0eWxlOyB9CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzZXBhcmF0b3IoKSBjb25zdCB7IHJl
dHVybiBtX3NlcGFyYXRvcjsgfQogCiBwcml2YXRlOgogICAgIEF0b21pY1N0cmluZyBtX2lkZW50
aWZpZXI7Ci0gICAgRUxpc3RTdHlsZVR5cGUgbV9saXN0U3R5bGU7CisgICAgTGlzdFN0eWxlVHlw
ZSBtX2xpc3RTdHlsZTsKICAgICBBdG9taWNTdHJpbmcgbV9zZXBhcmF0b3I7CiB9OwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHJl
dmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IFJlbmRlclN0eWxlCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UmVuZGVyU3R5bGU+KHN0eWxlLCBDbG9uZSk7CiB9CiAKLVJlbmRlclN0eWxlIFJlbmRlclN0eWxl
OjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KGNvbnN0IFJlbmRlclN0eWxlJiBwYXJl
bnRTdHlsZSwgRURpc3BsYXkgZGlzcGxheSkKK1JlbmRlclN0eWxlIFJlbmRlclN0eWxlOjpjcmVh
dGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHls
ZSwgRGlzcGxheVR5cGUgZGlzcGxheSkKIHsKICAgICBhdXRvIG5ld1N0eWxlID0gY3JlYXRlKCk7
CiAgICAgbmV3U3R5bGUuaW5oZXJpdEZyb20ocGFyZW50U3R5bGUpOwpAQCAtMTIwLDcgKzEyMCw3
IEBAIFJlbmRlclN0eWxlIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXMKIAogUmVuZGVyU3R5
bGUgUmVuZGVyU3R5bGU6OmNyZWF0ZVN0eWxlSW5oZXJpdGluZ0Zyb21Qc2V1ZG9TdHlsZShjb25z
dCBSZW5kZXJTdHlsZSYgcHNldWRvU3R5bGUpCiB7Ci0gICAgQVNTRVJUKHBzZXVkb1N0eWxlLnN0
eWxlVHlwZSgpID09IEJFRk9SRSB8fCBwc2V1ZG9TdHlsZS5zdHlsZVR5cGUoKSA9PSBBRlRFUik7
CisgICAgQVNTRVJUKHBzZXVkb1N0eWxlLnN0eWxlVHlwZSgpID09IFBzZXVkb0lkOjpCZWZvcmUg
fHwgcHNldWRvU3R5bGUuc3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6OkFmdGVyKTsKIAogICAgIGF1
dG8gc3R5bGUgPSBjcmVhdGUoKTsKICAgICBzdHlsZS5pbmhlcml0RnJvbShwc2V1ZG9TdHlsZSk7
CkBAIC0xNDAsMzEgKzE0MCwzMSBAQCBSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoQ3JlYXRlRGVm
YXVsdFN0CiAgICAgLCBtX2luaGVyaXRlZERhdGEoU3R5bGVJbmhlcml0ZWREYXRhOjpjcmVhdGUo
KSkKICAgICAsIG1fc3ZnU3R5bGUoU1ZHUmVuZGVyU3R5bGU6OmNyZWF0ZSgpKQogewotICAgIG1f
aW5oZXJpdGVkRmxhZ3MuZW1wdHlDZWxscyA9IGluaXRpYWxFbXB0eUNlbGxzKCk7Ci0gICAgbV9p
bmhlcml0ZWRGbGFncy5jYXB0aW9uU2lkZSA9IGluaXRpYWxDYXB0aW9uU2lkZSgpOwotICAgIG1f
aW5oZXJpdGVkRmxhZ3MubGlzdFN0eWxlVHlwZSA9IGluaXRpYWxMaXN0U3R5bGVUeXBlKCk7Ci0g
ICAgbV9pbmhlcml0ZWRGbGFncy5saXN0U3R5bGVQb3NpdGlvbiA9IGluaXRpYWxMaXN0U3R5bGVQ
b3NpdGlvbigpOwotICAgIG1faW5oZXJpdGVkRmxhZ3MudmlzaWJpbGl0eSA9IGluaXRpYWxWaXNp
YmlsaXR5KCk7Ci0gICAgbV9pbmhlcml0ZWRGbGFncy50ZXh0QWxpZ24gPSBpbml0aWFsVGV4dEFs
aWduKCk7Ci0gICAgbV9pbmhlcml0ZWRGbGFncy50ZXh0VHJhbnNmb3JtID0gaW5pdGlhbFRleHRU
cmFuc2Zvcm0oKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmVtcHR5Q2VsbHMgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oaW5pdGlhbEVtcHR5Q2VsbHMoKSk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5j
YXB0aW9uU2lkZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsQ2FwdGlvblNpZGUoKSk7
CisgICAgbV9pbmhlcml0ZWRGbGFncy5saXN0U3R5bGVUeXBlID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGluaXRpYWxMaXN0U3R5bGVUeXBlKCkpOworICAgIG1faW5oZXJpdGVkRmxhZ3MubGlzdFN0
eWxlUG9zaXRpb24gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbExpc3RTdHlsZVBvc2l0
aW9uKCkpOworICAgIG1faW5oZXJpdGVkRmxhZ3MudmlzaWJpbGl0eSA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihpbml0aWFsVmlzaWJpbGl0eSgpKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLnRleHRB
bGlnbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsVGV4dEFsaWduKCkpOworICAgIG1f
aW5oZXJpdGVkRmxhZ3MudGV4dFRyYW5zZm9ybSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0
aWFsVGV4dFRyYW5zZm9ybSgpKTsKICAgICBtX2luaGVyaXRlZEZsYWdzLnRleHREZWNvcmF0aW9u
cyA9IGluaXRpYWxUZXh0RGVjb3JhdGlvbigpOwotICAgIG1faW5oZXJpdGVkRmxhZ3MuY3Vyc29y
ID0gaW5pdGlhbEN1cnNvcigpOworICAgIG1faW5oZXJpdGVkRmxhZ3MuY3Vyc29yID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxDdXJzb3IoKSk7CiAjaWYgRU5BQkxFKENVUlNPUl9WSVNJ
QklMSVRZKQotICAgIG1faW5oZXJpdGVkRmxhZ3MuY3Vyc29yVmlzaWJpbGl0eSA9IGluaXRpYWxD
dXJzb3JWaXNpYmlsaXR5KCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5jdXJzb3JWaXNpYmlsaXR5
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxDdXJzb3JWaXNpYmlsaXR5KCkpOwogI2Vu
ZGlmCiAgICAgbV9pbmhlcml0ZWRGbGFncy5kaXJlY3Rpb24gPSBpbml0aWFsRGlyZWN0aW9uKCk7
Ci0gICAgbV9pbmhlcml0ZWRGbGFncy53aGl0ZVNwYWNlID0gaW5pdGlhbFdoaXRlU3BhY2UoKTsK
KyAgICBtX2luaGVyaXRlZEZsYWdzLndoaXRlU3BhY2UgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
aW5pdGlhbFdoaXRlU3BhY2UoKSk7CiAgICAgbV9pbmhlcml0ZWRGbGFncy5ib3JkZXJDb2xsYXBz
ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsQm9yZGVyQ29sbGFwc2UoKSk7Ci0gICAg
bV9pbmhlcml0ZWRGbGFncy5ydGxPcmRlcmluZyA9IGluaXRpYWxSVExPcmRlcmluZygpOworICAg
IG1faW5oZXJpdGVkRmxhZ3MucnRsT3JkZXJpbmcgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5p
dGlhbFJUTE9yZGVyaW5nKCkpOwogICAgIG1faW5oZXJpdGVkRmxhZ3MuYm94RGlyZWN0aW9uID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxCb3hEaXJlY3Rpb24oKSk7CiAgICAgbV9pbmhl
cml0ZWRGbGFncy5wcmludENvbG9yQWRqdXN0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRp
YWxQcmludENvbG9yQWRqdXN0KCkpOwotICAgIG1faW5oZXJpdGVkRmxhZ3MucG9pbnRlckV2ZW50
cyA9IGluaXRpYWxQb2ludGVyRXZlbnRzKCk7Ci0gICAgbV9pbmhlcml0ZWRGbGFncy5pbnNpZGVM
aW5rID0gTm90SW5zaWRlTGluazsKKyAgICBtX2luaGVyaXRlZEZsYWdzLnBvaW50ZXJFdmVudHMg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbFBvaW50ZXJFdmVudHMoKSk7CisgICAgbV9p
bmhlcml0ZWRGbGFncy5pbnNpZGVMaW5rID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEluc2lkZUxp
bms6Ok5vdEluc2lkZSk7CiAgICAgbV9pbmhlcml0ZWRGbGFncy5pbnNpZGVEZWZhdWx0QnV0dG9u
ID0gZmFsc2U7CiAgICAgbV9pbmhlcml0ZWRGbGFncy53cml0aW5nTW9kZSA9IGluaXRpYWxXcml0
aW5nTW9kZSgpOwogCi0gICAgbV9ub25Jbmhlcml0ZWRGbGFncy5lZmZlY3RpdmVEaXNwbGF5ID0g
aW5pdGlhbERpc3BsYXkoKTsKLSAgICBtX25vbkluaGVyaXRlZEZsYWdzLm9yaWdpbmFsRGlzcGxh
eSA9IGluaXRpYWxEaXNwbGF5KCk7CisgICAgbV9ub25Jbmhlcml0ZWRGbGFncy5lZmZlY3RpdmVE
aXNwbGF5ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxEaXNwbGF5KCkpOworICAgIG1f
bm9uSW5oZXJpdGVkRmxhZ3Mub3JpZ2luYWxEaXNwbGF5ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGluaXRpYWxEaXNwbGF5KCkpOwogICAgIG1fbm9uSW5oZXJpdGVkRmxhZ3Mub3ZlcmZsb3dYID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxPdmVyZmxvd1goKSk7CiAgICAgbV9ub25Jbmhl
cml0ZWRGbGFncy5vdmVyZmxvd1kgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbE92ZXJm
bG93WSgpKTsKICAgICBtX25vbkluaGVyaXRlZEZsYWdzLnZlcnRpY2FsQWxpZ24gPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oaW5pdGlhbFZlcnRpY2FsQWxpZ24oKSk7CkBAIC0xODYsOCArMTg2LDgg
QEAgUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKENyZWF0ZURlZmF1bHRTdAogICAgIG1fbm9uSW5o
ZXJpdGVkRmxhZ3MuYWZmZWN0ZWRCeUFjdGl2ZSA9IGZhbHNlOwogICAgIG1fbm9uSW5oZXJpdGVk
RmxhZ3MuYWZmZWN0ZWRCeURyYWcgPSBmYWxzZTsKICAgICBtX25vbkluaGVyaXRlZEZsYWdzLmlz
TGluayA9IGZhbHNlOwotICAgIG1fbm9uSW5oZXJpdGVkRmxhZ3Muc3R5bGVUeXBlID0gTk9QU0VV
RE87Ci0gICAgbV9ub25Jbmhlcml0ZWRGbGFncy5wc2V1ZG9CaXRzID0gTk9QU0VVRE87CisgICAg
bV9ub25Jbmhlcml0ZWRGbGFncy5zdHlsZVR5cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHNl
dWRvSWQ6Ok5vbmUpOworICAgIG1fbm9uSW5oZXJpdGVkRmxhZ3MucHNldWRvQml0cyA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQc2V1ZG9JZDo6Tm9uZSk7CiAKICAgICBzdGF0aWNfYXNzZXJ0KChz
aXplb2YoSW5oZXJpdGVkRmxhZ3MpIDw9IDgpLCAiSW5oZXJpdGVkRmxhZ3MgZG9lcyBub3QgZ3Jv
dyIpOwogICAgIHN0YXRpY19hc3NlcnQoKHNpemVvZihOb25Jbmhlcml0ZWRGbGFncykgPD0gOCks
ICJOb25Jbmhlcml0ZWRGbGFncyBkb2VzIG5vdCBncm93Iik7CkBAIC0zNjYsNyArMzY2LDcgQEAg
Ym9vbCBSZW5kZXJTdHlsZTo6b3BlcmF0b3I9PShjb25zdCBSZW5kZQogCiBib29sIFJlbmRlclN0
eWxlOjpoYXNVbmlxdWVQc2V1ZG9TdHlsZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2NhY2hlZFBz
ZXVkb1N0eWxlcyB8fCBzdHlsZVR5cGUoKSAhPSBOT1BTRVVETykKKyAgICBpZiAoIW1fY2FjaGVk
UHNldWRvU3R5bGVzIHx8IHN0eWxlVHlwZSgpICE9IFBzZXVkb0lkOjpOb25lKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBmb3IgKGF1dG8mIHBzZXVkb1N0eWxlIDogKm1fY2FjaGVkUHNl
dWRvU3R5bGVzKSB7CkBAIC0zODIsNyArMzgyLDcgQEAgUmVuZGVyU3R5bGUqIFJlbmRlclN0eWxl
OjpnZXRDYWNoZWRQc2V1ZAogICAgIGlmICghbV9jYWNoZWRQc2V1ZG9TdHlsZXMgfHwgIW1fY2Fj
aGVkUHNldWRvU3R5bGVzLT5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
aWYgKHN0eWxlVHlwZSgpICE9IE5PUFNFVURPKSAKKyAgICBpZiAoc3R5bGVUeXBlKCkgIT0gUHNl
dWRvSWQ6Ok5vbmUpIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGZvciAoYXV0byYg
cHNldWRvU3R5bGUgOiAqbV9jYWNoZWRQc2V1ZG9TdHlsZXMpIHsKQEAgLTM5OCw3ICszOTgsNyBA
QCBSZW5kZXJTdHlsZSogUmVuZGVyU3R5bGU6OmFkZENhY2hlZFBzZXVkCiAgICAgaWYgKCFwc2V1
ZG8pCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgQVNTRVJUKHBzZXVkby0+c3R5bGVU
eXBlKCkgPiBOT1BTRVVETyk7CisgICAgQVNTRVJUKHBzZXVkby0+c3R5bGVUeXBlKCkgPiBQc2V1
ZG9JZDo6Tm9uZSk7CiAKICAgICBSZW5kZXJTdHlsZSogcmVzdWx0ID0gcHNldWRvLmdldCgpOwog
CkBAIC03MDYsNyArNzA2LDcgQEAgYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNMYXlv
dXQoYwogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogCi0gICAgaWYgKG1fbm9uSW5oZXJpdGVkRmxh
Z3MuZWZmZWN0aXZlRGlzcGxheSA+PSBUQUJMRSkgeworICAgIGlmIChzdGF0aWNfY2FzdDxEaXNw
bGF5VHlwZT4obV9ub25Jbmhlcml0ZWRGbGFncy5lZmZlY3RpdmVEaXNwbGF5KSA+PSBEaXNwbGF5
VHlwZTo6VGFibGUpIHsKICAgICAgICAgaWYgKG1faW5oZXJpdGVkRmxhZ3MuYm9yZGVyQ29sbGFw
c2UgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy5ib3JkZXJDb2xsYXBzZQogICAgICAgICAgICAg
fHwgbV9pbmhlcml0ZWRGbGFncy5lbXB0eUNlbGxzICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3Mu
ZW1wdHlDZWxscwogICAgICAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncy5jYXB0aW9uU2lkZSAh
PSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLmNhcHRpb25TaWRlCkBAIC03MjcsNyArNzI3LDcgQEAg
Ym9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNMYXlvdXQoYwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCi0gICAgaWYgKG1fbm9uSW5oZXJpdGVkRmxhZ3MuZWZmZWN0aXZl
RGlzcGxheSA9PSBMSVNUX0lURU0pIHsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8RGlzcGxheVR5cGU+
KG1fbm9uSW5oZXJpdGVkRmxhZ3MuZWZmZWN0aXZlRGlzcGxheSkgPT0gRGlzcGxheVR5cGU6Okxp
c3RJdGVtKSB7CiAgICAgICAgIGlmIChtX2luaGVyaXRlZEZsYWdzLmxpc3RTdHlsZVR5cGUgIT0g
b3RoZXIubV9pbmhlcml0ZWRGbGFncy5saXN0U3R5bGVUeXBlCiAgICAgICAgICAgICB8fCBtX2lu
aGVyaXRlZEZsYWdzLmxpc3RTdHlsZVBvc2l0aW9uICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3Mu
bGlzdFN0eWxlUG9zaXRpb24pCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTc3Miw3ICs3
NzIsNyBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheW91dChjCiAgICAgaWYg
KCFhcmVQb2ludGluZ1RvRXF1YWxEYXRhKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmNvdW50ZXJE
aXJlY3RpdmVzLCBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5jb3VudGVyRGlyZWN0aXZl
cykpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKCh2aXNpYmlsaXR5KCkgPT0gQ09M
TEFQU0UpICE9IChvdGhlci52aXNpYmlsaXR5KCkgPT0gQ09MTEFQU0UpKQorICAgIGlmICgodmlz
aWJpbGl0eSgpID09IFZpc2liaWxpdHk6OkNvbGxhcHNlKSAhPSAob3RoZXIudmlzaWJpbGl0eSgp
ID09IFZpc2liaWxpdHk6OkNvbGxhcHNlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBp
ZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+aGFzT3BhY2l0eSgpICE9IG90aGVyLm1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPmhhc09wYWNpdHkoKSkgewpAQCAtODA5LDE0ICs4MDksMTQgQEAgYm9v
bCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNMYXlvdXQoYwogICAgICAgICB9CiAgICAgfQog
Ci0gICAgYm9vbCBoYXNGaXJzdExpbmVTdHlsZSA9IGhhc1BzZXVkb1N0eWxlKEZJUlNUX0xJTkUp
OwotICAgIGlmIChoYXNGaXJzdExpbmVTdHlsZSAhPSBvdGhlci5oYXNQc2V1ZG9TdHlsZShGSVJT
VF9MSU5FKSkKKyAgICBib29sIGhhc0ZpcnN0TGluZVN0eWxlID0gaGFzUHNldWRvU3R5bGUoUHNl
dWRvSWQ6OkZpcnN0TGluZSk7CisgICAgaWYgKGhhc0ZpcnN0TGluZVN0eWxlICE9IG90aGVyLmhh
c1BzZXVkb1N0eWxlKFBzZXVkb0lkOjpGaXJzdExpbmUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICBpZiAoaGFzRmlyc3RMaW5lU3R5bGUpIHsKLSAgICAgICAgYXV0byogZmlyc3RMaW5lU3R5
bGUgPSBnZXRDYWNoZWRQc2V1ZG9TdHlsZShGSVJTVF9MSU5FKTsKKyAgICAgICAgYXV0byogZmly
c3RMaW5lU3R5bGUgPSBnZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKTsK
ICAgICAgICAgaWYgKCFmaXJzdExpbmVTdHlsZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICBhdXRvKiBvdGhlckZpcnN0TGluZVN0eWxlID0gb3RoZXIuZ2V0Q2FjaGVkUHNldWRv
U3R5bGUoRklSU1RfTElORSk7CisgICAgICAgIGF1dG8qIG90aGVyRmlyc3RMaW5lU3R5bGUgPSBv
dGhlci5nZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKTsKICAgICAgICAg
aWYgKCFvdGhlckZpcnN0TGluZVN0eWxlKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIC8vIEZJWE1FOiBOb3QgYWxsIGZpcnN0IGxpbmUgc3R5bGUgY2hhbmdlcyBhY3R1YWxseSBu
ZWVkIGxheW91dC4KQEAgLTg4NSw3ICs4ODUsNyBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VS
ZXF1aXJlc0xheWVyUmVwCiAKIHN0YXRpYyBib29sIHJlcXVpcmVzUGFpbnRpbmcoY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlKQogewotICAgIGlmIChzdHlsZS52aXNpYmlsaXR5KCkgPT0gSElEREVO
KQorICAgIGlmIChzdHlsZS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6SGlkZGVuKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFzdHlsZS5vcGFjaXR5KCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTEzNDksNyArMTM0OSw3IEBAIENvdW50ZXJEaXJlY3RpdmVNYXAmIFJl
bmRlclN0eWxlOjphY2Nlc3MKIAogY29uc3QgQXRvbWljU3RyaW5nJiBSZW5kZXJTdHlsZTo6aHlw
aGVuU3RyaW5nKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoaHlwaGVucygpICE9IEh5cGhlbnNOb25l
KTsKKyAgICBBU1NFUlQoaHlwaGVucygpICE9IEh5cGhlbnM6Ok5vbmUpOwogCiAgICAgYXV0byYg
aHlwaGVuYXRpb25TdHJpbmcgPSBtX3JhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvblN0cmlu
ZzsKICAgICBpZiAoIWh5cGhlbmF0aW9uU3RyaW5nLmlzTnVsbCgpKQpAQCAtMTM2NCwzNiArMTM2
NCwzNiBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFJlbmRlclN0eWxlOjpoeXBoZW5TCiBjb25zdCBB
dG9taWNTdHJpbmcmIFJlbmRlclN0eWxlOjp0ZXh0RW1waGFzaXNNYXJrU3RyaW5nKCkgY29uc3QK
IHsKICAgICBzd2l0Y2ggKHRleHRFbXBoYXNpc01hcmsoKSkgewotICAgIGNhc2UgVGV4dEVtcGhh
c2lzTWFya05vbmU6CisgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrOjpOb25lOgogICAgICAgICBy
ZXR1cm4gbnVsbEF0b20oKTsKLSAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtDdXN0b206CisgICAg
Y2FzZSBUZXh0RW1waGFzaXNNYXJrOjpDdXN0b206CiAgICAgICAgIHJldHVybiB0ZXh0RW1waGFz
aXNDdXN0b21NYXJrKCk7Ci0gICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrRG90OiB7CisgICAgY2Fz
ZSBUZXh0RW1waGFzaXNNYXJrOjpEb3Q6IHsKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gZmlsbGVkRG90U3RyaW5nKCZidWxsZXQsIDEpOwogICAgICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBvcGVuRG90U3RyaW5nKCZ3aGl0ZUJ1bGxl
dCwgMSk7Ci0gICAgICAgIHJldHVybiB0ZXh0RW1waGFzaXNGaWxsKCkgPT0gVGV4dEVtcGhhc2lz
RmlsbEZpbGxlZCA/IGZpbGxlZERvdFN0cmluZyA6IG9wZW5Eb3RTdHJpbmc7CisgICAgICAgIHJl
dHVybiB0ZXh0RW1waGFzaXNGaWxsKCkgPT0gVGV4dEVtcGhhc2lzRmlsbDo6RmlsbGVkID8gZmls
bGVkRG90U3RyaW5nIDogb3BlbkRvdFN0cmluZzsKICAgICB9Ci0gICAgY2FzZSBUZXh0RW1waGFz
aXNNYXJrQ2lyY2xlOiB7CisgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrOjpDaXJjbGU6IHsKICAg
ICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZmlsbGVkQ2lyY2xlU3Ry
aW5nKCZibGFja0NpcmNsZSwgMSk7CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmc+IG9wZW5DaXJjbGVTdHJpbmcoJndoaXRlQ2lyY2xlLCAxKTsKLSAgICAgICAgcmV0
dXJuIHRleHRFbXBoYXNpc0ZpbGwoKSA9PSBUZXh0RW1waGFzaXNGaWxsRmlsbGVkID8gZmlsbGVk
Q2lyY2xlU3RyaW5nIDogb3BlbkNpcmNsZVN0cmluZzsKKyAgICAgICAgcmV0dXJuIHRleHRFbXBo
YXNpc0ZpbGwoKSA9PSBUZXh0RW1waGFzaXNGaWxsOjpGaWxsZWQgPyBmaWxsZWRDaXJjbGVTdHJp
bmcgOiBvcGVuQ2lyY2xlU3RyaW5nOwogICAgIH0KLSAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtE
b3VibGVDaXJjbGU6IHsKKyAgICBjYXNlIFRleHRFbXBoYXNpc01hcms6OkRvdWJsZUNpcmNsZTog
ewogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBmaWxsZWREb3Vi
bGVDaXJjbGVTdHJpbmcoJmZpc2hleWUsIDEpOwogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8QXRvbWljU3RyaW5nPiBvcGVuRG91YmxlQ2lyY2xlU3RyaW5nKCZidWxsc2V5ZSwgMSk7Ci0g
ICAgICAgIHJldHVybiB0ZXh0RW1waGFzaXNGaWxsKCkgPT0gVGV4dEVtcGhhc2lzRmlsbEZpbGxl
ZCA/IGZpbGxlZERvdWJsZUNpcmNsZVN0cmluZyA6IG9wZW5Eb3VibGVDaXJjbGVTdHJpbmc7Cisg
ICAgICAgIHJldHVybiB0ZXh0RW1waGFzaXNGaWxsKCkgPT0gVGV4dEVtcGhhc2lzRmlsbDo6Rmls
bGVkID8gZmlsbGVkRG91YmxlQ2lyY2xlU3RyaW5nIDogb3BlbkRvdWJsZUNpcmNsZVN0cmluZzsK
ICAgICB9Ci0gICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrVHJpYW5nbGU6IHsKKyAgICBjYXNlIFRl
eHRFbXBoYXNpc01hcms6OlRyaWFuZ2xlOiB7CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxBdG9taWNTdHJpbmc+IGZpbGxlZFRyaWFuZ2xlU3RyaW5nKCZibGFja1VwUG9pbnRpbmdUcmlh
bmdsZSwgMSk7CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG9w
ZW5UcmlhbmdsZVN0cmluZygmd2hpdGVVcFBvaW50aW5nVHJpYW5nbGUsIDEpOwotICAgICAgICBy
ZXR1cm4gdGV4dEVtcGhhc2lzRmlsbCgpID09IFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQgPyBmaWxs
ZWRUcmlhbmdsZVN0cmluZyA6IG9wZW5UcmlhbmdsZVN0cmluZzsKKyAgICAgICAgcmV0dXJuIHRl
eHRFbXBoYXNpc0ZpbGwoKSA9PSBUZXh0RW1waGFzaXNGaWxsOjpGaWxsZWQgPyBmaWxsZWRUcmlh
bmdsZVN0cmluZyA6IG9wZW5UcmlhbmdsZVN0cmluZzsKICAgICB9Ci0gICAgY2FzZSBUZXh0RW1w
aGFzaXNNYXJrU2VzYW1lOiB7CisgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrOjpTZXNhbWU6IHsK
ICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZmlsbGVkU2VzYW1l
U3RyaW5nKCZzZXNhbWVEb3QsIDEpOwogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bWljU3RyaW5nPiBvcGVuU2VzYW1lU3RyaW5nKCZ3aGl0ZVNlc2FtZURvdCwgMSk7Ci0gICAgICAg
IHJldHVybiB0ZXh0RW1waGFzaXNGaWxsKCkgPT0gVGV4dEVtcGhhc2lzRmlsbEZpbGxlZCA/IGZp
bGxlZFNlc2FtZVN0cmluZyA6IG9wZW5TZXNhbWVTdHJpbmc7CisgICAgICAgIHJldHVybiB0ZXh0
RW1waGFzaXNGaWxsKCkgPT0gVGV4dEVtcGhhc2lzRmlsbDo6RmlsbGVkID8gZmlsbGVkU2VzYW1l
U3RyaW5nIDogb3BlblNlc2FtZVN0cmluZzsKICAgICB9Ci0gICAgY2FzZSBUZXh0RW1waGFzaXNN
YXJrQXV0bzoKKyAgICBjYXNlIFRleHRFbXBoYXNpc01hcms6OkF1dG86CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVsbEF0b20oKTsKICAgICB9CkBAIC0x
ODI1LDcgKzE4MjUsNyBAQCBDb2xvciBSZW5kZXJTdHlsZTo6Y29sb3JJbmNsdWRpbmdGYWxsYmFj
CiBDb2xvciBSZW5kZXJTdHlsZTo6dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5SUQg
Y29sb3JQcm9wZXJ0eSkgY29uc3QKIHsKICAgICBDb2xvciB1bnZpc2l0ZWRDb2xvciA9IGNvbG9y
SW5jbHVkaW5nRmFsbGJhY2soY29sb3JQcm9wZXJ0eSwgZmFsc2UpOwotICAgIGlmIChpbnNpZGVM
aW5rKCkgIT0gSW5zaWRlVmlzaXRlZExpbmspCisgICAgaWYgKGluc2lkZUxpbmsoKSAhPSBJbnNp
ZGVMaW5rOjpJbnNpZGVWaXNpdGVkKQogICAgICAgICByZXR1cm4gdW52aXNpdGVkQ29sb3I7CiAK
ICAgICBDb2xvciB2aXNpdGVkQ29sb3IgPSBjb2xvckluY2x1ZGluZ0ZhbGxiYWNrKGNvbG9yUHJv
cGVydHksIHRydWUpOwpAQCAtMTk4NiwxMSArMTk4NiwxMSBAQCB2b2lkIFJlbmRlclN0eWxlOjpz
ZXRNYXJnaW5FbmQoTGVuZ3RoJiYgCiBUZXh0RW1waGFzaXNNYXJrIFJlbmRlclN0eWxlOjp0ZXh0
RW1waGFzaXNNYXJrKCkgY29uc3QKIHsKICAgICBhdXRvIG1hcmsgPSBzdGF0aWNfY2FzdDxUZXh0
RW1waGFzaXNNYXJrPihtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNNYXJrKTsKLSAg
ICBpZiAobWFyayAhPSBUZXh0RW1waGFzaXNNYXJrQXV0bykKKyAgICBpZiAobWFyayAhPSBUZXh0
RW1waGFzaXNNYXJrOjpBdXRvKQogICAgICAgICByZXR1cm4gbWFyazsKICAgICBpZiAoaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSkKLSAgICAgICAgcmV0dXJuIFRleHRFbXBoYXNpc01hcmtEb3Q7
Ci0gICAgcmV0dXJuIFRleHRFbXBoYXNpc01hcmtTZXNhbWU7CisgICAgICAgIHJldHVybiBUZXh0
RW1waGFzaXNNYXJrOjpEb3Q7CisgICAgcmV0dXJuIFRleHRFbXBoYXNpc01hcms6OlNlc2FtZTsK
IH0KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCkBAIC0yMDY3LDMyICsyMDY3LDMyIEBAIHZv
aWQgUmVuZGVyU3R5bGU6OnNldENvbHVtblN0eWxlc0Zyb21QYWcKICAgICAKICAgICBzd2l0Y2gg
KHBhZ2luYXRpb25Nb2RlKSB7CiAgICAgY2FzZSBQYWdpbmF0aW9uOjpMZWZ0VG9SaWdodFBhZ2lu
YXRlZDoKLSAgICAgICAgc2V0Q29sdW1uQXhpcyhIb3Jpem9udGFsQ29sdW1uQXhpcyk7CisgICAg
ICAgIHNldENvbHVtbkF4aXMoQ29sdW1uQXhpczo6SG9yaXpvbnRhbCk7CiAgICAgICAgIGlmIChp
c0hvcml6b250YWxXcml0aW5nTW9kZSgpKQotICAgICAgICAgICAgc2V0Q29sdW1uUHJvZ3Jlc3Np
b24oaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gTm9ybWFsQ29sdW1uUHJvZ3Jlc3Npb24gOiBS
ZXZlcnNlQ29sdW1uUHJvZ3Jlc3Npb24pOworICAgICAgICAgICAgc2V0Q29sdW1uUHJvZ3Jlc3Np
b24oaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gQ29sdW1uUHJvZ3Jlc3Npb246Ok5vcm1hbCA6
IENvbHVtblByb2dyZXNzaW9uOjpSZXZlcnNlKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
c2V0Q29sdW1uUHJvZ3Jlc3Npb24oaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSA/IFJldmVy
c2VDb2x1bW5Qcm9ncmVzc2lvbiA6IE5vcm1hbENvbHVtblByb2dyZXNzaW9uKTsKKyAgICAgICAg
ICAgIHNldENvbHVtblByb2dyZXNzaW9uKGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgPyBD
b2x1bW5Qcm9ncmVzc2lvbjo6UmV2ZXJzZSA6IENvbHVtblByb2dyZXNzaW9uOjpOb3JtYWwpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIFBhZ2luYXRpb246OlJpZ2h0VG9MZWZ0UGFnaW5hdGVk
OgotICAgICAgICBzZXRDb2x1bW5BeGlzKEhvcml6b250YWxDb2x1bW5BeGlzKTsKKyAgICAgICAg
c2V0Q29sdW1uQXhpcyhDb2x1bW5BeGlzOjpIb3Jpem9udGFsKTsKICAgICAgICAgaWYgKGlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAgICAgICAgICBzZXRDb2x1bW5Qcm9ncmVzc2lvbihp
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBSZXZlcnNlQ29sdW1uUHJvZ3Jlc3Npb24gOiBOb3Jt
YWxDb2x1bW5Qcm9ncmVzc2lvbik7CisgICAgICAgICAgICBzZXRDb2x1bW5Qcm9ncmVzc2lvbihp
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBDb2x1bW5Qcm9ncmVzc2lvbjo6UmV2ZXJzZSA6IENv
bHVtblByb2dyZXNzaW9uOjpOb3JtYWwpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzZXRD
b2x1bW5Qcm9ncmVzc2lvbihpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gTm9ybWFsQ29s
dW1uUHJvZ3Jlc3Npb24gOiBSZXZlcnNlQ29sdW1uUHJvZ3Jlc3Npb24pOworICAgICAgICAgICAg
c2V0Q29sdW1uUHJvZ3Jlc3Npb24oaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSA/IENvbHVt
blByb2dyZXNzaW9uOjpOb3JtYWwgOiBDb2x1bW5Qcm9ncmVzc2lvbjo6UmV2ZXJzZSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgUGFnaW5hdGlvbjo6VG9wVG9Cb3R0b21QYWdpbmF0ZWQ6Ci0g
ICAgICAgIHNldENvbHVtbkF4aXMoVmVydGljYWxDb2x1bW5BeGlzKTsKKyAgICAgICAgc2V0Q29s
dW1uQXhpcyhDb2x1bW5BeGlzOjpWZXJ0aWNhbCk7CiAgICAgICAgIGlmIChpc0hvcml6b250YWxX
cml0aW5nTW9kZSgpKQotICAgICAgICAgICAgc2V0Q29sdW1uUHJvZ3Jlc3Npb24oaXNGbGlwcGVk
QmxvY2tzV3JpdGluZ01vZGUoKSA/IFJldmVyc2VDb2x1bW5Qcm9ncmVzc2lvbiA6IE5vcm1hbENv
bHVtblByb2dyZXNzaW9uKTsKKyAgICAgICAgICAgIHNldENvbHVtblByb2dyZXNzaW9uKGlzRmxp
cHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgPyBDb2x1bW5Qcm9ncmVzc2lvbjo6UmV2ZXJzZSA6IENv
bHVtblByb2dyZXNzaW9uOjpOb3JtYWwpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzZXRD
b2x1bW5Qcm9ncmVzc2lvbihpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBOb3JtYWxDb2x1bW5Q
cm9ncmVzc2lvbiA6IFJldmVyc2VDb2x1bW5Qcm9ncmVzc2lvbik7CisgICAgICAgICAgICBzZXRD
b2x1bW5Qcm9ncmVzc2lvbihpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBDb2x1bW5Qcm9ncmVz
c2lvbjo6Tm9ybWFsIDogQ29sdW1uUHJvZ3Jlc3Npb246OlJldmVyc2UpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFBhZ2luYXRpb246OkJvdHRvbVRvVG9wUGFnaW5hdGVkOgotICAgICAgICBz
ZXRDb2x1bW5BeGlzKFZlcnRpY2FsQ29sdW1uQXhpcyk7CisgICAgICAgIHNldENvbHVtbkF4aXMo
Q29sdW1uQXhpczo6VmVydGljYWwpOwogICAgICAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSkKLSAgICAgICAgICAgIHNldENvbHVtblByb2dyZXNzaW9uKGlzRmxpcHBlZEJsb2Nrc1dy
aXRpbmdNb2RlKCkgPyBOb3JtYWxDb2x1bW5Qcm9ncmVzc2lvbiA6IFJldmVyc2VDb2x1bW5Qcm9n
cmVzc2lvbik7CisgICAgICAgICAgICBzZXRDb2x1bW5Qcm9ncmVzc2lvbihpc0ZsaXBwZWRCbG9j
a3NXcml0aW5nTW9kZSgpID8gQ29sdW1uUHJvZ3Jlc3Npb246Ok5vcm1hbCA6IENvbHVtblByb2dy
ZXNzaW9uOjpSZXZlcnNlKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc2V0Q29sdW1uUHJv
Z3Jlc3Npb24oaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gUmV2ZXJzZUNvbHVtblByb2dyZXNz
aW9uIDogTm9ybWFsQ29sdW1uUHJvZ3Jlc3Npb24pOworICAgICAgICAgICAgc2V0Q29sdW1uUHJv
Z3Jlc3Npb24oaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gQ29sdW1uUHJvZ3Jlc3Npb246OlJl
dmVyc2UgOiBDb2x1bW5Qcm9ncmVzc2lvbjo6Tm9ybWFsKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBQYWdpbmF0aW9uOjpVbnBhZ2luYXRlZDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw3ICsxNDgsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlbmRlclN0eWxlIGNsb25lKGNvbnN0IFJlbmRlclN0eWxlJik7CiAgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gY2xvbmVQdHIoY29uc3QgUmVuZGVyU3R5
bGUmKTsKIAotICAgIHN0YXRpYyBSZW5kZXJTdHlsZSBjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhE
aXNwbGF5KGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgRURpc3BsYXkpOworICAgIHN0
YXRpYyBSZW5kZXJTdHlsZSBjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KGNvbnN0IFJl
bmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgRGlzcGxheVR5cGUpOwogICAgIHN0YXRpYyBSZW5kZXJT
dHlsZSBjcmVhdGVTdHlsZUluaGVyaXRpbmdGcm9tUHNldWRvU3R5bGUoY29uc3QgUmVuZGVyU3R5
bGUmIHBzZXVkb1N0eWxlKTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQgfHwgRU5BQkxFKFNFQ1VS
SVRZX0FTU0VSVElPTlMpCkBAIC0xNzQsNyArMTc0LDcgQEAgcHVibGljOgogICAgIFN0eWxlQ29u
dGVudEFsaWdubWVudERhdGEgcmVzb2x2ZWRKdXN0aWZ5Q29udGVudChjb25zdCBTdHlsZUNvbnRl
bnRBbGlnbm1lbnREYXRhJiBub3JtYWxWYWx1ZUJlaGF2aW91cikgY29uc3Q7CiAKICAgICBQc2V1
ZG9JZCBzdHlsZVR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQc2V1ZG9JZD4obV9u
b25Jbmhlcml0ZWRGbGFncy5zdHlsZVR5cGUpOyB9Ci0gICAgdm9pZCBzZXRTdHlsZVR5cGUoUHNl
dWRvSWQgc3R5bGVUeXBlKSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc3R5bGVUeXBlID0gc3R5bGVU
eXBlOyB9CisgICAgdm9pZCBzZXRTdHlsZVR5cGUoUHNldWRvSWQgc3R5bGVUeXBlKSB7IG1fbm9u
SW5oZXJpdGVkRmxhZ3Muc3R5bGVUeXBlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0eWxlVHlw
ZSk7IH0KIAogICAgIFJlbmRlclN0eWxlKiBnZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZCkg
Y29uc3Q7CiAgICAgUmVuZGVyU3R5bGUqIGFkZENhY2hlZFBzZXVkb1N0eWxlKHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4pOwpAQCAtMjI4LDcgKzIyOCw3IEBAIHB1YmxpYzoKICAgICBGaWx0
ZXJPdXRzZXRzIGZpbHRlck91dHNldHMoKSBjb25zdCB7IHJldHVybiBoYXNGaWx0ZXIoKSA/IGZp
bHRlcigpLm91dHNldHMoKSA6IEZpbHRlck91dHNldHMoKTsgfQogCiAgICAgT3JkZXIgcnRsT3Jk
ZXJpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxPcmRlcj4obV9pbmhlcml0ZWRGbGFn
cy5ydGxPcmRlcmluZyk7IH0KLSAgICB2b2lkIHNldFJUTE9yZGVyaW5nKE9yZGVyIG9yZGVyaW5n
KSB7IG1faW5oZXJpdGVkRmxhZ3MucnRsT3JkZXJpbmcgPSBvcmRlcmluZzsgfQorICAgIHZvaWQg
c2V0UlRMT3JkZXJpbmcoT3JkZXIgb3JkZXJpbmcpIHsgbV9pbmhlcml0ZWRGbGFncy5ydGxPcmRl
cmluZyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihvcmRlcmluZyk7IH0KIAogICAgIGJvb2wgaXNT
dHlsZUF2YWlsYWJsZSgpIGNvbnN0OwogCkBAIC0yNDAsNyArMjQwLDcgQEAgcHVibGljOgogCiAg
ICAgLy8gYXR0cmlidXRlIGdldHRlciBtZXRob2RzCiAKLSAgICBFRGlzcGxheSBkaXNwbGF5KCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RURpc3BsYXk+KG1fbm9uSW5oZXJpdGVkRmxhZ3Mu
ZWZmZWN0aXZlRGlzcGxheSk7IH0KKyAgICBEaXNwbGF5VHlwZSBkaXNwbGF5KCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RGlzcGxheVR5cGU+KG1fbm9uSW5oZXJpdGVkRmxhZ3MuZWZmZWN0
aXZlRGlzcGxheSk7IH0KIAogICAgIGNvbnN0IExlbmd0aCYgbGVmdCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3Vycm91bmREYXRhLT5vZmZzZXQubGVmdCgpOyB9CiAgICAgY29uc3QgTGVuZ3RoJiByaWdo
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5vZmZzZXQucmlnaHQoKTsgfQpAQCAt
MzMxLDcgKzMzMSw3IEBAIHB1YmxpYzoKICAgICBPdmVyZmxvdyBvdmVyZmxvd0lubGluZURpcmVj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBvdmVyZmxv
d1goKSA6IG92ZXJmbG93WSgpOyB9CiAgICAgT3ZlcmZsb3cgb3ZlcmZsb3dCbG9ja0RpcmVjdGlv
bigpIGNvbnN0IHsgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBvdmVyZmxvd1ko
KSA6IG92ZXJmbG93WCgpOyB9CiAgICAgCi0gICAgRVZpc2liaWxpdHkgdmlzaWJpbGl0eSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVWaXNpYmlsaXR5PihtX2luaGVyaXRlZEZsYWdzLnZp
c2liaWxpdHkpOyB9CisgICAgVmlzaWJpbGl0eSB2aXNpYmlsaXR5KCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8VmlzaWJpbGl0eT4obV9pbmhlcml0ZWRGbGFncy52aXNpYmlsaXR5KTsgfQog
ICAgIFZlcnRpY2FsQWxpZ24gdmVydGljYWxBbGlnbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PFZlcnRpY2FsQWxpZ24+KG1fbm9uSW5oZXJpdGVkRmxhZ3MudmVydGljYWxBbGlnbik7IH0K
ICAgICBjb25zdCBMZW5ndGgmIHZlcnRpY2FsQWxpZ25MZW5ndGgoKSBjb25zdCB7IHJldHVybiBt
X2JveERhdGEtPnZlcnRpY2FsQWxpZ24oKTsgfQogCkBAIC0zNjMsOCArMzYzLDggQEAgcHVibGlj
OgogICAgIEZvbnRTZWxlY3Rpb25WYWx1ZSBmb250SXRhbGljKCkgY29uc3QgeyByZXR1cm4gZm9u
dERlc2NyaXB0aW9uKCkuaXRhbGljKCk7IH0KIAogICAgIGNvbnN0IExlbmd0aCYgdGV4dEluZGVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmluZGVudDsgfQotICAgIEVU
ZXh0QWxpZ24gdGV4dEFsaWduKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVRleHRBbGln
bj4obV9pbmhlcml0ZWRGbGFncy50ZXh0QWxpZ24pOyB9Ci0gICAgRVRleHRUcmFuc2Zvcm0gdGV4
dFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVUZXh0VHJhbnNmb3JtPiht
X2luaGVyaXRlZEZsYWdzLnRleHRUcmFuc2Zvcm0pOyB9CisgICAgVGV4dEFsaWduTW9kZSB0ZXh0
QWxpZ24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0QWxpZ25Nb2RlPihtX2luaGVy
aXRlZEZsYWdzLnRleHRBbGlnbik7IH0KKyAgICBUZXh0VHJhbnNmb3JtIHRleHRUcmFuc2Zvcm0o
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0VHJhbnNmb3JtPihtX2luaGVyaXRlZEZs
YWdzLnRleHRUcmFuc2Zvcm0pOyB9CiAgICAgVGV4dERlY29yYXRpb24gdGV4dERlY29yYXRpb25z
SW5FZmZlY3QoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RGVjb3JhdGlvbj4obV9p
bmhlcml0ZWRGbGFncy50ZXh0RGVjb3JhdGlvbnMpOyB9CiAgICAgVGV4dERlY29yYXRpb24gdGV4
dERlY29yYXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RGVjb3JhdGlvbj4o
bV92aXN1YWxEYXRhLT50ZXh0RGVjb3JhdGlvbik7IH0KICAgICBUZXh0RGVjb3JhdGlvblN0eWxl
IHRleHREZWNvcmF0aW9uU3R5bGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RGVj
b3JhdGlvblN0eWxlPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0RGVjb3JhdGlvblN0eWxl
KTsgfQpAQCAtMzk0LDEyICszOTQsMTIgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGNv
bnN0IExlbmd0aCYgbGluZUhlaWdodCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBj
b21wdXRlZExpbmVIZWlnaHQoKSBjb25zdDsKIAotICAgIEVXaGl0ZVNwYWNlIHdoaXRlU3BhY2Uo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFV2hpdGVTcGFjZT4obV9pbmhlcml0ZWRGbGFn
cy53aGl0ZVNwYWNlKTsgfQotICAgIHN0YXRpYyBib29sIGF1dG9XcmFwKEVXaGl0ZVNwYWNlKTsK
KyAgICBXaGl0ZVNwYWNlIHdoaXRlU3BhY2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxX
aGl0ZVNwYWNlPihtX2luaGVyaXRlZEZsYWdzLndoaXRlU3BhY2UpOyB9CisgICAgc3RhdGljIGJv
b2wgYXV0b1dyYXAoV2hpdGVTcGFjZSk7CiAgICAgYm9vbCBhdXRvV3JhcCgpIGNvbnN0IHsgcmV0
dXJuIGF1dG9XcmFwKHdoaXRlU3BhY2UoKSk7IH0KLSAgICBzdGF0aWMgYm9vbCBwcmVzZXJ2ZU5l
d2xpbmUoRVdoaXRlU3BhY2UpOworICAgIHN0YXRpYyBib29sIHByZXNlcnZlTmV3bGluZShXaGl0
ZVNwYWNlKTsKICAgICBib29sIHByZXNlcnZlTmV3bGluZSgpIGNvbnN0IHsgcmV0dXJuIHByZXNl
cnZlTmV3bGluZSh3aGl0ZVNwYWNlKCkpOyB9Ci0gICAgc3RhdGljIGJvb2wgY29sbGFwc2VXaGl0
ZVNwYWNlKEVXaGl0ZVNwYWNlKTsKKyAgICBzdGF0aWMgYm9vbCBjb2xsYXBzZVdoaXRlU3BhY2Uo
V2hpdGVTcGFjZSk7CiAgICAgYm9vbCBjb2xsYXBzZVdoaXRlU3BhY2UoKSBjb25zdCB7IHJldHVy
biBjb2xsYXBzZVdoaXRlU3BhY2Uod2hpdGVTcGFjZSgpKTsgfQogICAgIGJvb2wgaXNDb2xsYXBz
aWJsZVdoaXRlU3BhY2UoVUNoYXIpIGNvbnN0OwogICAgIGJvb2wgYnJlYWtPbmx5QWZ0ZXJXaGl0
ZVNwYWNlKCkgY29uc3Q7CkBAIC00MzYsMTIgKzQzNiwxMiBAQCBwdWJsaWM6CiAgICAgQm9yZGVy
Q29sbGFwc2UgYm9yZGVyQ29sbGFwc2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCb3Jk
ZXJDb2xsYXBzZT4obV9pbmhlcml0ZWRGbGFncy5ib3JkZXJDb2xsYXBzZSk7IH0KICAgICBmbG9h
dCBob3Jpem9udGFsQm9yZGVyU3BhY2luZygpIGNvbnN0OwogICAgIGZsb2F0IHZlcnRpY2FsQm9y
ZGVyU3BhY2luZygpIGNvbnN0OwotICAgIEVFbXB0eUNlbGwgZW1wdHlDZWxscygpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PEVFbXB0eUNlbGw+KG1faW5oZXJpdGVkRmxhZ3MuZW1wdHlDZWxs
cyk7IH0KLSAgICBFQ2FwdGlvblNpZGUgY2FwdGlvblNpZGUoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxFQ2FwdGlvblNpZGU+KG1faW5oZXJpdGVkRmxhZ3MuY2FwdGlvblNpZGUpOyB9Cisg
ICAgRW1wdHlDZWxsIGVtcHR5Q2VsbHMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFbXB0
eUNlbGw+KG1faW5oZXJpdGVkRmxhZ3MuZW1wdHlDZWxscyk7IH0KKyAgICBDYXB0aW9uU2lkZSBj
YXB0aW9uU2lkZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENhcHRpb25TaWRlPihtX2lu
aGVyaXRlZEZsYWdzLmNhcHRpb25TaWRlKTsgfQogCi0gICAgRUxpc3RTdHlsZVR5cGUgbGlzdFN0
eWxlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVMaXN0U3R5bGVUeXBlPihtX2lu
aGVyaXRlZEZsYWdzLmxpc3RTdHlsZVR5cGUpOyB9CisgICAgTGlzdFN0eWxlVHlwZSBsaXN0U3R5
bGVUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGlzdFN0eWxlVHlwZT4obV9pbmhl
cml0ZWRGbGFncy5saXN0U3R5bGVUeXBlKTsgfQogICAgIFN0eWxlSW1hZ2UqIGxpc3RTdHlsZUlt
YWdlKCkgY29uc3Q7Ci0gICAgRUxpc3RTdHlsZVBvc2l0aW9uIGxpc3RTdHlsZVBvc2l0aW9uKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUxpc3RTdHlsZVBvc2l0aW9uPihtX2luaGVyaXRl
ZEZsYWdzLmxpc3RTdHlsZVBvc2l0aW9uKTsgfQorICAgIExpc3RTdHlsZVBvc2l0aW9uIGxpc3RT
dHlsZVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGlzdFN0eWxlUG9zaXRp
b24+KG1faW5oZXJpdGVkRmxhZ3MubGlzdFN0eWxlUG9zaXRpb24pOyB9CiAKICAgICBjb25zdCBM
ZW5ndGgmIG1hcmdpblRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5tYXJnaW4u
dG9wKCk7IH0KICAgICBjb25zdCBMZW5ndGgmIG1hcmdpbkJvdHRvbSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3Vycm91bmREYXRhLT5tYXJnaW4uYm90dG9tKCk7IH0KQEAgLTQ2Niw3ICs0NjYsNyBAQCBw
dWJsaWM6CiAgICAgY29uc3QgTGVuZ3RoJiBwYWRkaW5nU3RhcnQoKSBjb25zdCB7IHJldHVybiBt
X3N1cnJvdW5kRGF0YS0+cGFkZGluZy5zdGFydCh3cml0aW5nTW9kZSgpLCBkaXJlY3Rpb24oKSk7
IH0KICAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdFbmQoKSBjb25zdCB7IHJldHVybiBtX3N1cnJv
dW5kRGF0YS0+cGFkZGluZy5lbmQod3JpdGluZ01vZGUoKSwgZGlyZWN0aW9uKCkpOyB9CiAKLSAg
ICBFQ3Vyc29yIGN1cnNvcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVDdXJzb3I+KG1f
aW5oZXJpdGVkRmxhZ3MuY3Vyc29yKTsgfQorICAgIEN1cnNvclR5cGUgY3Vyc29yKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8Q3Vyc29yVHlwZT4obV9pbmhlcml0ZWRGbGFncy5jdXJzb3Ip
OyB9CiAKICNpZiBFTkFCTEUoQ1VSU09SX1ZJU0lCSUxJVFkpCiAgICAgQ3Vyc29yVmlzaWJpbGl0
eSBjdXJzb3JWaXNpYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q3Vyc29yVmlz
aWJpbGl0eT4obV9pbmhlcml0ZWRGbGFncy5jdXJzb3JWaXNpYmlsaXR5KTsgfQpAQCAtNDc0LDcg
KzQ3NCw3IEBAIHB1YmxpYzoKIAogICAgIEN1cnNvckxpc3QqIGN1cnNvcnMoKSBjb25zdCB7IHJl
dHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5jdXJzb3JEYXRhLmdldCgpOyB9CiAKLSAgICBFSW5z
aWRlTGluayBpbnNpZGVMaW5rKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUluc2lkZUxp
bms+KG1faW5oZXJpdGVkRmxhZ3MuaW5zaWRlTGluayk7IH0KKyAgICBJbnNpZGVMaW5rIGluc2lk
ZUxpbmsoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJbnNpZGVMaW5rPihtX2luaGVyaXRl
ZEZsYWdzLmluc2lkZUxpbmspOyB9CiAgICAgYm9vbCBpc0xpbmsoKSBjb25zdCB7IHJldHVybiBt
X25vbkluaGVyaXRlZEZsYWdzLmlzTGluazsgfQogCiAgICAgYm9vbCBpbnNpZGVEZWZhdWx0QnV0
dG9uKCkgY29uc3QgeyByZXR1cm4gbV9pbmhlcml0ZWRGbGFncy5pbnNpZGVEZWZhdWx0QnV0dG9u
OyB9CkBAIC01OTIsNyArNTkyLDcgQEAgcHVibGljOgogICAgIHNob3J0IGh5cGhlbmF0aW9uTGlt
aXRMaW5lcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9u
TGltaXRMaW5lczsgfQogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaHlwaGVuYXRpb25TdHJpbmco
KSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvblN0cmluZzsg
fQogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKCkgY29uc3QgeyByZXR1cm4gZm9udERl
c2NyaXB0aW9uKCkubG9jYWxlKCk7IH0KLSAgICBFQm9yZGVyRml0IGJvcmRlckZpdCgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3JkZXJGaXQ+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PmJvcmRlckZpdCk7IH0KKyAgICBCb3JkZXJGaXQgYm9yZGVyRml0KCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8Qm9yZGVyRml0PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ib3JkZXJGaXQp
OyB9CiAgICAgUmVzaXplIHJlc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJlc2l6
ZT4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cmVzaXplKTsgfQogICAgIENvbHVtbkF4aXMgY29s
dW1uQXhpcygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbHVtbkF4aXM+KG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPm11bHRpQ29sLT5heGlzKTsgfQogICAgIGJvb2wgaGFzSW5saW5lQ29s
dW1uQXhpcygpIGNvbnN0OwpAQCAtNjUxLDcgKzY1MSw3IEBAIHB1YmxpYzoKICAgICBMaW5lU25h
cCBsaW5lU25hcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PExpbmVTbmFwPihtX3JhcmVJ
bmhlcml0ZWREYXRhLT5saW5lU25hcCk7IH0KICAgICBMaW5lQWxpZ24gbGluZUFsaWduKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGluZUFsaWduPihtX3JhcmVJbmhlcml0ZWREYXRhLT5s
aW5lQWxpZ24pOyB9CiAKLSAgICBFUG9pbnRlckV2ZW50cyBwb2ludGVyRXZlbnRzKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8RVBvaW50ZXJFdmVudHM+KG1faW5oZXJpdGVkRmxhZ3MucG9p
bnRlckV2ZW50cyk7IH0KKyAgICBQb2ludGVyRXZlbnRzIHBvaW50ZXJFdmVudHMoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxQb2ludGVyRXZlbnRzPihtX2luaGVyaXRlZEZsYWdzLnBvaW50
ZXJFdmVudHMpOyB9CiAgICAgY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbWF0aW9ucygpIGNvbnN0
IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFuaW1hdGlvbnMuZ2V0KCk7IH0KICAg
ICBjb25zdCBBbmltYXRpb25MaXN0KiB0cmFuc2l0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zaXRpb25zLmdldCgpOyB9CiAKQEAgLTc5Niw4ICs3OTYs
OCBAQCBwdWJsaWM6CiAKIC8vIGF0dHJpYnV0ZSBzZXR0ZXIgbWV0aG9kcwogCi0gICAgdm9pZCBz
ZXREaXNwbGF5KEVEaXNwbGF5IHYpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5lZmZlY3RpdmVEaXNw
bGF5ID0gdjsgfQotICAgIHZvaWQgc2V0T3JpZ2luYWxEaXNwbGF5KEVEaXNwbGF5IHYpIHsgbV9u
b25Jbmhlcml0ZWRGbGFncy5vcmlnaW5hbERpc3BsYXkgPSB2OyB9CisgICAgdm9pZCBzZXREaXNw
bGF5KERpc3BsYXlUeXBlIHYpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5lZmZlY3RpdmVEaXNwbGF5
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYpOyB9CisgICAgdm9pZCBzZXRPcmlnaW5hbERpc3Bs
YXkoRGlzcGxheVR5cGUgdikgeyBtX25vbkluaGVyaXRlZEZsYWdzLm9yaWdpbmFsRGlzcGxheSA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KTsgfQogICAgIHZvaWQgc2V0UG9zaXRpb24oUG9zaXRp
b25UeXBlIHYpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5wb3NpdGlvbiA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPih2KTsgfQogICAgIHZvaWQgc2V0RmxvYXRpbmcoRmxvYXQgdikgeyBtX25vbkluaGVy
aXRlZEZsYWdzLmZsb2F0aW5nID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYpOyB9CiAKQEAgLTg4
Miw3ICs4ODIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldE92ZXJmbG93WChPdmVyZmxvdyB2
KSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Mub3ZlcmZsb3dYID0gIHN0YXRpY19jYXN0PHVuc2lnbmVk
Pih2KTsgfQogICAgIHZvaWQgc2V0T3ZlcmZsb3dZKE92ZXJmbG93IHYpIHsgbV9ub25Jbmhlcml0
ZWRGbGFncy5vdmVyZmxvd1kgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odik7IH0KLSAgICB2b2lk
IHNldFZpc2liaWxpdHkoRVZpc2liaWxpdHkgdikgeyBtX2luaGVyaXRlZEZsYWdzLnZpc2liaWxp
dHkgPSB2OyB9CisgICAgdm9pZCBzZXRWaXNpYmlsaXR5KFZpc2liaWxpdHkgdikgeyBtX2luaGVy
aXRlZEZsYWdzLnZpc2liaWxpdHkgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odik7IH0KICAgICB2
b2lkIHNldFZlcnRpY2FsQWxpZ24oVmVydGljYWxBbGlnbiB2KSB7IG1fbm9uSW5oZXJpdGVkRmxh
Z3MudmVydGljYWxBbGlnbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KTsgfQogICAgIHZvaWQg
c2V0VmVydGljYWxBbGlnbkxlbmd0aChMZW5ndGgmJiBsZW5ndGgpIHsgc2V0VmVydGljYWxBbGln
bihWZXJ0aWNhbEFsaWduOjpMZW5ndGgpOyBTRVRfVkFSKG1fYm94RGF0YSwgbV92ZXJ0aWNhbEFs
aWduLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CiAKQEAgLTkxMywyMSArOTEzLDIxIEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc2V0Q29sb3IoY29uc3QgQ29sb3ImKTsKICAgICB2b2lkIHNldFRleHRJbmRl
bnQoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgaW5kZW50
LCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRUZXh0QWxpZ24oRVRleHRBbGlnbiB2
KSB7IG1faW5oZXJpdGVkRmxhZ3MudGV4dEFsaWduID0gdjsgfQotICAgIHZvaWQgc2V0VGV4dFRy
YW5zZm9ybShFVGV4dFRyYW5zZm9ybSB2KSB7IG1faW5oZXJpdGVkRmxhZ3MudGV4dFRyYW5zZm9y
bSA9IHY7IH0KKyAgICB2b2lkIHNldFRleHRBbGlnbihUZXh0QWxpZ25Nb2RlIHYpIHsgbV9pbmhl
cml0ZWRGbGFncy50ZXh0QWxpZ24gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odik7IH0KKyAgICB2
b2lkIHNldFRleHRUcmFuc2Zvcm0oVGV4dFRyYW5zZm9ybSB2KSB7IG1faW5oZXJpdGVkRmxhZ3Mu
dGV4dFRyYW5zZm9ybSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KTsgfQogICAgIHZvaWQgYWRk
VG9UZXh0RGVjb3JhdGlvbnNJbkVmZmVjdChUZXh0RGVjb3JhdGlvbiB2KSB7IG1faW5oZXJpdGVk
RmxhZ3MudGV4dERlY29yYXRpb25zIHw9IHY7IH0KICAgICB2b2lkIHNldFRleHREZWNvcmF0aW9u
c0luRWZmZWN0KFRleHREZWNvcmF0aW9uIHYpIHsgbV9pbmhlcml0ZWRGbGFncy50ZXh0RGVjb3Jh
dGlvbnMgPSB2OyB9CiAgICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvbihUZXh0RGVjb3JhdGlvbiB2
KSB7IFNFVF9WQVIobV92aXN1YWxEYXRhLCB0ZXh0RGVjb3JhdGlvbiwgdik7IH0KLSAgICB2b2lk
IHNldFRleHREZWNvcmF0aW9uU3R5bGUoVGV4dERlY29yYXRpb25TdHlsZSB2KSB7IFNFVF9WQVIo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdGV4dERlY29yYXRpb25TdHlsZSwgdik7IH0KLSAgICB2
b2lkIHNldFRleHREZWNvcmF0aW9uU2tpcChUZXh0RGVjb3JhdGlvblNraXAgc2tpcCkgeyBTRVRf
VkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHREZWNvcmF0aW9uU2tpcCwgc2tpcCk7IH0KLSAg
ICB2b2lkIHNldFRleHRVbmRlcmxpbmVQb3NpdGlvbihUZXh0VW5kZXJsaW5lUG9zaXRpb24gdikg
eyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRVbmRlcmxpbmVQb3NpdGlvbiwgdik7
IH0KLSAgICB2b2lkIHNldERpcmVjdGlvbihUZXh0RGlyZWN0aW9uIHYpIHsgbV9pbmhlcml0ZWRG
bGFncy5kaXJlY3Rpb24gPSB2OyB9CisgICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvblN0eWxlKFRl
eHREZWNvcmF0aW9uU3R5bGUgdikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHRl
eHREZWNvcmF0aW9uU3R5bGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KSk7IH0KKyAgICB2b2lk
IHNldFRleHREZWNvcmF0aW9uU2tpcChUZXh0RGVjb3JhdGlvblNraXAgc2tpcCkgeyBTRVRfVkFS
KG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHREZWNvcmF0aW9uU2tpcCwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHNraXApKTsgfQorICAgIHZvaWQgc2V0VGV4dFVuZGVybGluZVBvc2l0aW9uKFRleHRV
bmRlcmxpbmVQb3NpdGlvbiB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dFVu
ZGVybGluZVBvc2l0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odikpOyB9CisgICAgdm9pZCBz
ZXREaXJlY3Rpb24oVGV4dERpcmVjdGlvbiB2KSB7IG1faW5oZXJpdGVkRmxhZ3MuZGlyZWN0aW9u
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYpOyB9CiAgICAgdm9pZCBzZXRIYXNFeHBsaWNpdGx5
U2V0RGlyZWN0aW9uKGJvb2wgdikgeyBtX25vbkluaGVyaXRlZEZsYWdzLmhhc0V4cGxpY2l0bHlT
ZXREaXJlY3Rpb24gPSB2OyB9CiAgICAgdm9pZCBzZXRMaW5lSGVpZ2h0KExlbmd0aCYmKTsKICAg
ICBib29sIHNldFpvb20oZmxvYXQpOwogICAgIHZvaWQgc2V0Wm9vbVdpdGhvdXRSZXR1cm5WYWx1
ZShmbG9hdCBmKSB7IHNldFpvb20oZik7IH0KICAgICBib29sIHNldEVmZmVjdGl2ZVpvb20oZmxv
YXQpOwotICAgIHZvaWQgc2V0VGV4dFpvb20oVGV4dFpvb20gdikgeyBTRVRfVkFSKG1fcmFyZUlu
aGVyaXRlZERhdGEsIHRleHRab29tLCB2KTsgfQorICAgIHZvaWQgc2V0VGV4dFpvb20oVGV4dFpv
b20gdikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRab29tLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4odikpOyB9CiAKICNpZiBFTkFCTEUoQ1NTM19URVhUKQogICAgIHZvaWQgc2V0
VGV4dEluZGVudExpbmUoVGV4dEluZGVudExpbmUgdikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRl
ZERhdGEsIHRleHRJbmRlbnRMaW5lLCB2KTsgfQpAQCAtOTUyLDcgKzk1Miw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldEltYWdlUmVzb2x1dGlvbihmbG9hdCBmKSB7IFNFVF9WQVIobV9yYXJlSW5o
ZXJpdGVkRGF0YSwgaW1hZ2VSZXNvbHV0aW9uLCBmKTsgfQogI2VuZGlmCiAKLSAgICB2b2lkIHNl
dFdoaXRlU3BhY2UoRVdoaXRlU3BhY2UgdikgeyBtX2luaGVyaXRlZEZsYWdzLndoaXRlU3BhY2Ug
PSB2OyB9CisgICAgdm9pZCBzZXRXaGl0ZVNwYWNlKFdoaXRlU3BhY2UgdikgeyBtX2luaGVyaXRl
ZEZsYWdzLndoaXRlU3BhY2UgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odik7IH0KIAogICAgIHZv
aWQgc2V0V29yZFNwYWNpbmcoTGVuZ3RoJiYpOwogICAgIHZvaWQgc2V0TGV0dGVyU3BhY2luZyhm
bG9hdCk7CkBAIC05NzgsMTYgKzk3OCwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRCb3JkZXJD
b2xsYXBzZShCb3JkZXJDb2xsYXBzZSBjb2xsYXBzZSkgeyBtX2luaGVyaXRlZEZsYWdzLmJvcmRl
ckNvbGxhcHNlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbGxhcHNlKTsgfQogICAgIHZvaWQg
c2V0SG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoZmxvYXQpOwogICAgIHZvaWQgc2V0VmVydGljYWxC
b3JkZXJTcGFjaW5nKGZsb2F0KTsKLSAgICB2b2lkIHNldEVtcHR5Q2VsbHMoRUVtcHR5Q2VsbCB2
KSB7IG1faW5oZXJpdGVkRmxhZ3MuZW1wdHlDZWxscyA9IHY7IH0KLSAgICB2b2lkIHNldENhcHRp
b25TaWRlKEVDYXB0aW9uU2lkZSB2KSB7IG1faW5oZXJpdGVkRmxhZ3MuY2FwdGlvblNpZGUgPSB2
OyB9CisgICAgdm9pZCBzZXRFbXB0eUNlbGxzKEVtcHR5Q2VsbCB2KSB7IG1faW5oZXJpdGVkRmxh
Z3MuZW1wdHlDZWxscyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KTsgfQorICAgIHZvaWQgc2V0
Q2FwdGlvblNpZGUoQ2FwdGlvblNpZGUgdikgeyBtX2luaGVyaXRlZEZsYWdzLmNhcHRpb25TaWRl
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYpOyB9CiAKICAgICB2b2lkIHNldEFzcGVjdFJhdGlv
VHlwZShBc3BlY3RSYXRpb1R5cGUgYXNwZWN0UmF0aW9UeXBlKSB7IFNFVF9WQVIobV9yYXJlTm9u
SW5oZXJpdGVkRGF0YSwgYXNwZWN0UmF0aW9UeXBlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYXNw
ZWN0UmF0aW9UeXBlKSk7IH0KICAgICB2b2lkIHNldEFzcGVjdFJhdGlvRGVub21pbmF0b3IoZmxv
YXQgdikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGFzcGVjdFJhdGlvRGVub21p
bmF0b3IsIHYpOyB9CiAgICAgdm9pZCBzZXRBc3BlY3RSYXRpb051bWVyYXRvcihmbG9hdCB2KSB7
IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYXNwZWN0UmF0aW9OdW1lcmF0b3IsIHYp
OyB9CiAKLSAgICB2b2lkIHNldExpc3RTdHlsZVR5cGUoRUxpc3RTdHlsZVR5cGUgdikgeyBtX2lu
aGVyaXRlZEZsYWdzLmxpc3RTdHlsZVR5cGUgPSB2OyB9CisgICAgdm9pZCBzZXRMaXN0U3R5bGVU
eXBlKExpc3RTdHlsZVR5cGUgdikgeyBtX2luaGVyaXRlZEZsYWdzLmxpc3RTdHlsZVR5cGUgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4odik7IH0KICAgICB2b2lkIHNldExpc3RTdHlsZUltYWdlKFJl
ZlB0cjxTdHlsZUltYWdlPiYmKTsKLSAgICB2b2lkIHNldExpc3RTdHlsZVBvc2l0aW9uKEVMaXN0
U3R5bGVQb3NpdGlvbiB2KSB7IG1faW5oZXJpdGVkRmxhZ3MubGlzdFN0eWxlUG9zaXRpb24gPSB2
OyB9CisgICAgdm9pZCBzZXRMaXN0U3R5bGVQb3NpdGlvbihMaXN0U3R5bGVQb3NpdGlvbiB2KSB7
IG1faW5oZXJpdGVkRmxhZ3MubGlzdFN0eWxlUG9zaXRpb24gPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4odik7IH0KIAogICAgIHZvaWQgcmVzZXRNYXJnaW4oKSB7IFNFVF9WQVIobV9zdXJyb3VuZERh
dGEsIG1hcmdpbiwgTGVuZ3RoQm94KEZpeGVkKSk7IH0KICAgICB2b2lkIHNldE1hcmdpblRvcChM
ZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgbWFyZ2luLnRvcCgpLCBX
VEZNb3ZlKGxlbmd0aCkpOyB9CkBAIC0xMDA0LDE2ICsxMDA0LDE2IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldFBhZGRpbmdMZWZ0KExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fc3Vycm91bmRE
YXRhLCBwYWRkaW5nLmxlZnQoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQogICAgIHZvaWQgc2V0UGFk
ZGluZ1JpZ2h0KExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBwYWRk
aW5nLnJpZ2h0KCksIFdURk1vdmUobGVuZ3RoKSk7IH0KIAotICAgIHZvaWQgc2V0Q3Vyc29yKEVD
dXJzb3IgYykgeyBtX2luaGVyaXRlZEZsYWdzLmN1cnNvciA9IGM7IH0KKyAgICB2b2lkIHNldEN1
cnNvcihDdXJzb3JUeXBlIGMpIHsgbV9pbmhlcml0ZWRGbGFncy5jdXJzb3IgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oYyk7IH0KICAgICB2b2lkIGFkZEN1cnNvcihSZWZQdHI8U3R5bGVJbWFnZT4m
JiwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QgPSBJbnRQb2ludCgpKTsKICAgICB2b2lkIHNldEN1
cnNvckxpc3QoUmVmUHRyPEN1cnNvckxpc3Q+JiYpOwogICAgIHZvaWQgY2xlYXJDdXJzb3JMaXN0
KCk7CiAKICNpZiBFTkFCTEUoQ1VSU09SX1ZJU0lCSUxJVFkpCi0gICAgdm9pZCBzZXRDdXJzb3JW
aXNpYmlsaXR5KEN1cnNvclZpc2liaWxpdHkgYykgeyBtX2luaGVyaXRlZEZsYWdzLmN1cnNvclZp
c2liaWxpdHkgPSBjOyB9CisgICAgdm9pZCBzZXRDdXJzb3JWaXNpYmlsaXR5KEN1cnNvclZpc2li
aWxpdHkgYykgeyBtX2luaGVyaXRlZEZsYWdzLmN1cnNvclZpc2liaWxpdHkgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oYyk7IH0KICNlbmRpZgogCi0gICAgdm9pZCBzZXRJbnNpZGVMaW5rKEVJbnNp
ZGVMaW5rIGluc2lkZUxpbmspIHsgbV9pbmhlcml0ZWRGbGFncy5pbnNpZGVMaW5rID0gaW5zaWRl
TGluazsgfQorICAgIHZvaWQgc2V0SW5zaWRlTGluayhJbnNpZGVMaW5rIGluc2lkZUxpbmspIHsg
bV9pbmhlcml0ZWRGbGFncy5pbnNpZGVMaW5rID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluc2lk
ZUxpbmspOyB9CiAgICAgdm9pZCBzZXRJc0xpbmsoYm9vbCB2KSB7IG1fbm9uSW5oZXJpdGVkRmxh
Z3MuaXNMaW5rID0gdjsgfQogCiAgICAgdm9pZCBzZXRJbnNpZGVEZWZhdWx0QnV0dG9uKGJvb2wg
aW5zaWRlRGVmYXVsdEJ1dHRvbikgeyBtX2luaGVyaXRlZEZsYWdzLmluc2lkZURlZmF1bHRCdXR0
b24gPSBpbnNpZGVEZWZhdWx0QnV0dG9uOyB9CkBAIC0xMTE2LDE1ICsxMTE2LDE1IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldE92ZXJmbG93V3JhcChPdmVyZmxvd1dyYXAgYikgeyBTRVRfVkFSKG1f
cmFyZUluaGVyaXRlZERhdGEsIG92ZXJmbG93V3JhcCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGIp
KTsgfQogICAgIHZvaWQgc2V0TkJTUE1vZGUoTkJTUE1vZGUgYikgeyBTRVRfVkFSKG1fcmFyZUlu
aGVyaXRlZERhdGEsIG5ic3BNb2RlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYikpOyB9CiAgICAg
dm9pZCBzZXRMaW5lQnJlYWsoTGluZUJyZWFrIGIpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWRE
YXRhLCBsaW5lQnJlYWssIHN0YXRpY19jYXN0PHVuc2lnbmVkPihiKSk7IH0KLSAgICB2b2lkIHNl
dEh5cGhlbnMoSHlwaGVucyBoKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgaHlwaGVu
cywgaCk7IH0KKyAgICB2b2lkIHNldEh5cGhlbnMoSHlwaGVucyBoKSB7IFNFVF9WQVIobV9yYXJl
SW5oZXJpdGVkRGF0YSwgaHlwaGVucywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGgpKTsgfQogICAg
IHZvaWQgc2V0SHlwaGVuYXRpb25MaW1pdEJlZm9yZShzaG9ydCBsaW1pdCkgeyBTRVRfVkFSKG1f
cmFyZUluaGVyaXRlZERhdGEsIGh5cGhlbmF0aW9uTGltaXRCZWZvcmUsIGxpbWl0KTsgfQogICAg
IHZvaWQgc2V0SHlwaGVuYXRpb25MaW1pdEFmdGVyKHNob3J0IGxpbWl0KSB7IFNFVF9WQVIobV9y
YXJlSW5oZXJpdGVkRGF0YSwgaHlwaGVuYXRpb25MaW1pdEFmdGVyLCBsaW1pdCk7IH0KICAgICB2
b2lkIHNldEh5cGhlbmF0aW9uTGltaXRMaW5lcyhzaG9ydCBsaW1pdCkgeyBTRVRfVkFSKG1fcmFy
ZUluaGVyaXRlZERhdGEsIGh5cGhlbmF0aW9uTGltaXRMaW5lcywgbGltaXQpOyB9CiAgICAgdm9p
ZCBzZXRIeXBoZW5hdGlvblN0cmluZyhjb25zdCBBdG9taWNTdHJpbmcmIGgpIHsgU0VUX1ZBUiht
X3JhcmVJbmhlcml0ZWREYXRhLCBoeXBoZW5hdGlvblN0cmluZywgaCk7IH0KLSAgICB2b2lkIHNl
dEJvcmRlckZpdChFQm9yZGVyRml0IGIpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LCBib3JkZXJGaXQsIGIpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJGaXQoQm9yZGVyRml0IGIpIHsg
U0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBib3JkZXJGaXQsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihiKSk7IH0KICAgICB2b2lkIHNldFJlc2l6ZShSZXNpemUgcikgeyBTRVRfVkFSKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEsIHJlc2l6ZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHIpKTsg
fQotICAgIHZvaWQgc2V0Q29sdW1uQXhpcyhDb2x1bW5BeGlzIGF4aXMpIHsgU0VUX05FU1RFRF9W
QVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbXVsdGlDb2wsIGF4aXMsIGF4aXMpOyB9Ci0gICAg
dm9pZCBzZXRDb2x1bW5Qcm9ncmVzc2lvbihDb2x1bW5Qcm9ncmVzc2lvbiBwcm9ncmVzc2lvbikg
eyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwgcHJvZ3Jl
c3Npb24sIHByb2dyZXNzaW9uKTsgfQorICAgIHZvaWQgc2V0Q29sdW1uQXhpcyhDb2x1bW5BeGlz
IGF4aXMpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbXVsdGlDb2ws
IGF4aXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihheGlzKSk7IH0KKyAgICB2b2lkIHNldENvbHVt
blByb2dyZXNzaW9uKENvbHVtblByb2dyZXNzaW9uIHByb2dyZXNzaW9uKSB7IFNFVF9ORVNURURf
VkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11bHRpQ29sLCBwcm9ncmVzc2lvbiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHByb2dyZXNzaW9uKSk7IH0KICAgICB2b2lkIHNldENvbHVtbldpZHRo
KGZsb2F0IGYpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbXVsdGlD
b2wsIGF1dG9XaWR0aCwgZmFsc2UpOyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLCBtdWx0aUNvbCwgd2lkdGgsIGYpOyB9CiAgICAgdm9pZCBzZXRIYXNBdXRvQ29sdW1uV2lk
dGgoKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11bHRpQ29sLCBh
dXRvV2lkdGgsIHRydWUpOyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBt
dWx0aUNvbCwgd2lkdGgsIDApOyB9CiAgICAgdm9pZCBzZXRDb2x1bW5Db3VudCh1bnNpZ25lZCBz
aG9ydCBjKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11bHRpQ29s
LCBhdXRvQ291bnQsIGZhbHNlKTsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0
YSwgbXVsdGlDb2wsIGNvdW50LCBjKTsgfQpAQCAtMTE0OSw4ICsxMTQ5LDggQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0VGV4dENvbWJpbmUoVGV4dENvbWJpbmUgdikgeyBTRVRfVkFSKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEsIHRleHRDb21iaW5lLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odikpOyB9
CiAgICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvbkNvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9W
QVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdGV4dERlY29yYXRpb25Db2xvciwgYyk7IH0KICAg
ICB2b2lkIHNldFRleHRFbXBoYXNpc0NvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9WQVIobV9y
YXJlSW5oZXJpdGVkRGF0YSwgdGV4dEVtcGhhc2lzQ29sb3IsIGMpOyB9Ci0gICAgdm9pZCBzZXRU
ZXh0RW1waGFzaXNGaWxsKFRleHRFbXBoYXNpc0ZpbGwgZmlsbCkgeyBTRVRfVkFSKG1fcmFyZUlu
aGVyaXRlZERhdGEsIHRleHRFbXBoYXNpc0ZpbGwsIGZpbGwpOyB9Ci0gICAgdm9pZCBzZXRUZXh0
RW1waGFzaXNNYXJrKFRleHRFbXBoYXNpc01hcmsgbWFyaykgeyBTRVRfVkFSKG1fcmFyZUluaGVy
aXRlZERhdGEsIHRleHRFbXBoYXNpc01hcmssIG1hcmspOyB9CisgICAgdm9pZCBzZXRUZXh0RW1w
aGFzaXNGaWxsKFRleHRFbXBoYXNpc0ZpbGwgZmlsbCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRl
ZERhdGEsIHRleHRFbXBoYXNpc0ZpbGwsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihmaWxsKSk7IH0K
KyAgICB2b2lkIHNldFRleHRFbXBoYXNpc01hcmsoVGV4dEVtcGhhc2lzTWFyayBtYXJrKSB7IFNF
VF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEVtcGhhc2lzTWFyaywgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KG1hcmspKTsgfQogICAgIHZvaWQgc2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhj
b25zdCBBdG9taWNTdHJpbmcmIG1hcmspIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0
ZXh0RW1waGFzaXNDdXN0b21NYXJrLCBtYXJrKTsgfQogICAgIHZvaWQgc2V0VGV4dEVtcGhhc2lz
UG9zaXRpb24oVGV4dEVtcGhhc2lzUG9zaXRpb24gcG9zaXRpb24pIHsgU0VUX1ZBUihtX3JhcmVJ
bmhlcml0ZWREYXRhLCB0ZXh0RW1waGFzaXNQb3NpdGlvbiwgcG9zaXRpb24pOyB9CiAgICAgYm9v
bCBzZXRUZXh0T3JpZW50YXRpb24oVGV4dE9yaWVudGF0aW9uKTsKQEAgLTExNTgsNyArMTE1OCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE9iamVjdEZpdChPYmplY3RGaXQgZml0KSB7IFNFVF9W
QVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgb2JqZWN0Rml0LCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZml0KSk7IH0KICAgICB2b2lkIHNldE9iamVjdFBvc2l0aW9uKExlbmd0aFBvaW50JiYgcG9z
aXRpb24pIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBvYmplY3RQb3NpdGlvbiwg
V1RGTW92ZShwb3NpdGlvbikpOyB9CiAKLSAgICB2b2lkIHNldFJ1YnlQb3NpdGlvbihSdWJ5UG9z
aXRpb24gcG9zaXRpb24pIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBydWJ5UG9zaXRp
b24sIHBvc2l0aW9uKTsgfQorICAgIHZvaWQgc2V0UnVieVBvc2l0aW9uKFJ1YnlQb3NpdGlvbiBw
b3NpdGlvbikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHJ1YnlQb3NpdGlvbiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHBvc2l0aW9uKSk7IH0KIAogICAgIHZvaWQgc2V0RmlsdGVyKGNv
bnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wcykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLCBmaWx0ZXIsIG9wZXJhdGlvbnMsIG9wcyk7IH0KICAgICB2b2lkIHNldENvbG9y
RmlsdGVyKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wcykgeyBTRVRfTkVTVEVEX1ZBUihtX3Jh
cmVJbmhlcml0ZWREYXRhLCBjb2xvckZpbHRlciwgb3BlcmF0aW9ucywgb3BzKTsgfQpAQCAtMTE2
OSwxOSArMTE2OSwxOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFRhYlNpemUodW5zaWduZWQg
c2l6ZSkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRhYlNpemUsIHNpemUpOyB9CiAK
LSAgICB2b2lkIHNldEJyZWFrQmVmb3JlKEJyZWFrQmV0d2VlbiBicmVha0JlaGF2aW9yKSB7IFNF
VF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYnJlYWtCZWZvcmUsIGJyZWFrQmVoYXZpb3Ip
OyB9Ci0gICAgdm9pZCBzZXRCcmVha0FmdGVyKEJyZWFrQmV0d2VlbiBicmVha0JlaGF2aW9yKSB7
IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYnJlYWtBZnRlciwgYnJlYWtCZWhhdmlv
cik7IH0KLSAgICB2b2lkIHNldEJyZWFrSW5zaWRlKEJyZWFrSW5zaWRlIGJyZWFrQmVoYXZpb3Ip
IHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBicmVha0luc2lkZSwgYnJlYWtCZWhh
dmlvcik7IH0KKyAgICB2b2lkIHNldEJyZWFrQmVmb3JlKEJyZWFrQmV0d2VlbiBicmVha0JlaGF2
aW9yKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYnJlYWtCZWZvcmUsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihicmVha0JlaGF2aW9yKSk7IH0KKyAgICB2b2lkIHNldEJyZWFrQWZ0
ZXIoQnJlYWtCZXR3ZWVuIGJyZWFrQmVoYXZpb3IpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLCBicmVha0FmdGVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnJlYWtCZWhhdmlvcikp
OyB9CisgICAgdm9pZCBzZXRCcmVha0luc2lkZShCcmVha0luc2lkZSBicmVha0JlaGF2aW9yKSB7
IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYnJlYWtJbnNpZGUsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihicmVha0JlaGF2aW9yKSk7IH0KICAgICAKLSAgICB2b2lkIHNldEhhbmdpbmdQ
dW5jdHVhdGlvbihIYW5naW5nUHVuY3R1YXRpb24gcHVuY3R1YXRpb24pIHsgU0VUX1ZBUihtX3Jh
cmVJbmhlcml0ZWREYXRhLCBoYW5naW5nUHVuY3R1YXRpb24sIHB1bmN0dWF0aW9uKTsgfQorICAg
IHZvaWQgc2V0SGFuZ2luZ1B1bmN0dWF0aW9uKEhhbmdpbmdQdW5jdHVhdGlvbiBwdW5jdHVhdGlv
bikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGhhbmdpbmdQdW5jdHVhdGlvbiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHB1bmN0dWF0aW9uKSk7IH0KIAogICAgIC8vIEVuZCBDU1MzIFNl
dHRlcnMKIAogICAgIHZvaWQgc2V0TGluZUdyaWQoY29uc3QgQXRvbWljU3RyaW5nJiBsaW5lR3Jp
ZCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGxpbmVHcmlkLCBsaW5lR3JpZCk7IH0K
LSAgICB2b2lkIHNldExpbmVTbmFwKExpbmVTbmFwIGxpbmVTbmFwKSB7IFNFVF9WQVIobV9yYXJl
SW5oZXJpdGVkRGF0YSwgbGluZVNuYXAsIGxpbmVTbmFwKTsgfQotICAgIHZvaWQgc2V0TGluZUFs
aWduKExpbmVBbGlnbiBsaW5lQWxpZ24pIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBs
aW5lQWxpZ24sIGxpbmVBbGlnbik7IH0KKyAgICB2b2lkIHNldExpbmVTbmFwKExpbmVTbmFwIGxp
bmVTbmFwKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgbGluZVNuYXAsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihsaW5lU25hcCkpOyB9CisgICAgdm9pZCBzZXRMaW5lQWxpZ24oTGluZUFs
aWduIGxpbmVBbGlnbikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGxpbmVBbGlnbiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxpbmVBbGlnbikpOyB9CiAKLSAgICB2b2lkIHNldFBvaW50
ZXJFdmVudHMoRVBvaW50ZXJFdmVudHMgcCkgeyBtX2luaGVyaXRlZEZsYWdzLnBvaW50ZXJFdmVu
dHMgPSBwOyB9CisgICAgdm9pZCBzZXRQb2ludGVyRXZlbnRzKFBvaW50ZXJFdmVudHMgcCkgeyBt
X2luaGVyaXRlZEZsYWdzLnBvaW50ZXJFdmVudHMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocCk7
IH0KIAogICAgIHZvaWQgY2xlYXJBbmltYXRpb25zKCk7CiAgICAgdm9pZCBjbGVhclRyYW5zaXRp
b25zKCk7CkBAIC0xNDI3LDEzICsxNDI3LDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgT3ZlcmZs
b3cgaW5pdGlhbE92ZXJmbG93WCgpIHsgcmV0dXJuIE92ZXJmbG93OjpWaXNpYmxlOyB9CiAgICAg
c3RhdGljIE92ZXJmbG93IGluaXRpYWxPdmVyZmxvd1koKSB7IHJldHVybiBPdmVyZmxvdzo6Vmlz
aWJsZTsgfQogICAgIHN0YXRpYyBDbGVhciBpbml0aWFsQ2xlYXIoKSB7IHJldHVybiBDbGVhcjo6
Tm9uZTsgfQotICAgIHN0YXRpYyBFRGlzcGxheSBpbml0aWFsRGlzcGxheSgpIHsgcmV0dXJuIElO
TElORTsgfQorICAgIHN0YXRpYyBEaXNwbGF5VHlwZSBpbml0aWFsRGlzcGxheSgpIHsgcmV0dXJu
IERpc3BsYXlUeXBlOjpJbmxpbmU7IH0KICAgICBzdGF0aWMgRVVuaWNvZGVCaWRpIGluaXRpYWxV
bmljb2RlQmlkaSgpIHsgcmV0dXJuIFVCTm9ybWFsOyB9CiAgICAgc3RhdGljIFBvc2l0aW9uVHlw
ZSBpbml0aWFsUG9zaXRpb24oKSB7IHJldHVybiBQb3NpdGlvblR5cGU6OlN0YXRpYzsgfQogICAg
IHN0YXRpYyBWZXJ0aWNhbEFsaWduIGluaXRpYWxWZXJ0aWNhbEFsaWduKCkgeyByZXR1cm4gVmVy
dGljYWxBbGlnbjo6QmFzZWxpbmU7IH0KICAgICBzdGF0aWMgRmxvYXQgaW5pdGlhbEZsb2F0aW5n
KCkgeyByZXR1cm4gRmxvYXQ6Ok5vOyB9Ci0gICAgc3RhdGljIEJyZWFrQmV0d2VlbiBpbml0aWFs
QnJlYWtCZXR3ZWVuKCkgeyByZXR1cm4gQXV0b0JyZWFrQmV0d2VlbjsgfQotICAgIHN0YXRpYyBC
cmVha0luc2lkZSBpbml0aWFsQnJlYWtJbnNpZGUoKSB7IHJldHVybiBBdXRvQnJlYWtJbnNpZGU7
IH0KKyAgICBzdGF0aWMgQnJlYWtCZXR3ZWVuIGluaXRpYWxCcmVha0JldHdlZW4oKSB7IHJldHVy
biBCcmVha0JldHdlZW46OkF1dG87IH0KKyAgICBzdGF0aWMgQnJlYWtJbnNpZGUgaW5pdGlhbEJy
ZWFrSW5zaWRlKCkgeyByZXR1cm4gQnJlYWtJbnNpZGU6OkF1dG87IH0KICAgICBzdGF0aWMgSGFu
Z2luZ1B1bmN0dWF0aW9uIGluaXRpYWxIYW5naW5nUHVuY3R1YXRpb24oKSB7IHJldHVybiBOb0hh
bmdpbmdQdW5jdHVhdGlvbjsgfQogICAgIHN0YXRpYyBUYWJsZUxheW91dFR5cGUgaW5pdGlhbFRh
YmxlTGF5b3V0KCkgeyByZXR1cm4gVGFibGVMYXlvdXRUeXBlOjpBdXRvOyB9CiAgICAgc3RhdGlj
IEJvcmRlckNvbGxhcHNlIGluaXRpYWxCb3JkZXJDb2xsYXBzZSgpIHsgcmV0dXJuIEJvcmRlckNv
bGxhcHNlOjpTZXBhcmF0ZTsgfQpAQCAtMTQ0MSwyNCArMTQ0MSwyNCBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIE91dGxpbmVJc0F1dG8gaW5pdGlhbE91dGxpbmVTdHlsZUlzQXV0bygpIHsgcmV0dXJu
IE91dGxpbmVJc0F1dG86Ok9mZjsgfQogICAgIHN0YXRpYyBOaW5lUGllY2VJbWFnZSBpbml0aWFs
TmluZVBpZWNlSW1hZ2UoKSB7IHJldHVybiBOaW5lUGllY2VJbWFnZSgpOyB9CiAgICAgc3RhdGlj
IExlbmd0aFNpemUgaW5pdGlhbEJvcmRlclJhZGl1cygpIHsgcmV0dXJuIHsgeyAwLCBGaXhlZCB9
LCB7IDAsIEZpeGVkIH0gfTsgfQotICAgIHN0YXRpYyBFQ2FwdGlvblNpZGUgaW5pdGlhbENhcHRp
b25TaWRlKCkgeyByZXR1cm4gQ0FQVE9QOyB9Ci0gICAgc3RhdGljIENvbHVtbkF4aXMgaW5pdGlh
bENvbHVtbkF4aXMoKSB7IHJldHVybiBBdXRvQ29sdW1uQXhpczsgfQotICAgIHN0YXRpYyBDb2x1
bW5Qcm9ncmVzc2lvbiBpbml0aWFsQ29sdW1uUHJvZ3Jlc3Npb24oKSB7IHJldHVybiBOb3JtYWxD
b2x1bW5Qcm9ncmVzc2lvbjsgfQorICAgIHN0YXRpYyBDYXB0aW9uU2lkZSBpbml0aWFsQ2FwdGlv
blNpZGUoKSB7IHJldHVybiBDYXB0aW9uU2lkZTo6VG9wOyB9CisgICAgc3RhdGljIENvbHVtbkF4
aXMgaW5pdGlhbENvbHVtbkF4aXMoKSB7IHJldHVybiBDb2x1bW5BeGlzOjpBdXRvOyB9CisgICAg
c3RhdGljIENvbHVtblByb2dyZXNzaW9uIGluaXRpYWxDb2x1bW5Qcm9ncmVzc2lvbigpIHsgcmV0
dXJuIENvbHVtblByb2dyZXNzaW9uOjpOb3JtYWw7IH0KICAgICBzdGF0aWMgVGV4dERpcmVjdGlv
biBpbml0aWFsRGlyZWN0aW9uKCkgeyByZXR1cm4gTFRSOyB9CiAgICAgc3RhdGljIFdyaXRpbmdN
b2RlIGluaXRpYWxXcml0aW5nTW9kZSgpIHsgcmV0dXJuIFRvcFRvQm90dG9tV3JpdGluZ01vZGU7
IH0KICAgICBzdGF0aWMgVGV4dENvbWJpbmUgaW5pdGlhbFRleHRDb21iaW5lKCkgeyByZXR1cm4g
VGV4dENvbWJpbmU6Ok5vbmU7IH0KICAgICBzdGF0aWMgVGV4dE9yaWVudGF0aW9uIGluaXRpYWxU
ZXh0T3JpZW50YXRpb24oKSB7IHJldHVybiBUZXh0T3JpZW50YXRpb246Ok1peGVkOyB9CiAgICAg
c3RhdGljIE9iamVjdEZpdCBpbml0aWFsT2JqZWN0Rml0KCkgeyByZXR1cm4gT2JqZWN0Rml0OjpG
aWxsOyB9CiAgICAgc3RhdGljIExlbmd0aFBvaW50IGluaXRpYWxPYmplY3RQb3NpdGlvbigpIHsg
cmV0dXJuIExlbmd0aFBvaW50KExlbmd0aCg1MC4wZiwgUGVyY2VudCksIExlbmd0aCg1MC4wZiwg
UGVyY2VudCkpOyB9Ci0gICAgc3RhdGljIEVFbXB0eUNlbGwgaW5pdGlhbEVtcHR5Q2VsbHMoKSB7
IHJldHVybiBTSE9XOyB9Ci0gICAgc3RhdGljIEVMaXN0U3R5bGVQb3NpdGlvbiBpbml0aWFsTGlz
dFN0eWxlUG9zaXRpb24oKSB7IHJldHVybiBPVVRTSURFOyB9Ci0gICAgc3RhdGljIEVMaXN0U3R5
bGVUeXBlIGluaXRpYWxMaXN0U3R5bGVUeXBlKCkgeyByZXR1cm4gRGlzYzsgfQotICAgIHN0YXRp
YyBFVGV4dFRyYW5zZm9ybSBpbml0aWFsVGV4dFRyYW5zZm9ybSgpIHsgcmV0dXJuIFRUTk9ORTsg
fQotICAgIHN0YXRpYyBFVmlzaWJpbGl0eSBpbml0aWFsVmlzaWJpbGl0eSgpIHsgcmV0dXJuIFZJ
U0lCTEU7IH0KLSAgICBzdGF0aWMgRVdoaXRlU3BhY2UgaW5pdGlhbFdoaXRlU3BhY2UoKSB7IHJl
dHVybiBOT1JNQUw7IH0KKyAgICBzdGF0aWMgRW1wdHlDZWxsIGluaXRpYWxFbXB0eUNlbGxzKCkg
eyByZXR1cm4gRW1wdHlDZWxsOjpTaG93OyB9CisgICAgc3RhdGljIExpc3RTdHlsZVBvc2l0aW9u
IGluaXRpYWxMaXN0U3R5bGVQb3NpdGlvbigpIHsgcmV0dXJuIExpc3RTdHlsZVBvc2l0aW9uOjpP
dXRzaWRlOyB9CisgICAgc3RhdGljIExpc3RTdHlsZVR5cGUgaW5pdGlhbExpc3RTdHlsZVR5cGUo
KSB7IHJldHVybiBMaXN0U3R5bGVUeXBlOjpEaXNjOyB9CisgICAgc3RhdGljIFRleHRUcmFuc2Zv
cm0gaW5pdGlhbFRleHRUcmFuc2Zvcm0oKSB7IHJldHVybiBUZXh0VHJhbnNmb3JtOjpOb25lOyB9
CisgICAgc3RhdGljIFZpc2liaWxpdHkgaW5pdGlhbFZpc2liaWxpdHkoKSB7IHJldHVybiBWaXNp
YmlsaXR5OjpWaXNpYmxlOyB9CisgICAgc3RhdGljIFdoaXRlU3BhY2UgaW5pdGlhbFdoaXRlU3Bh
Y2UoKSB7IHJldHVybiBXaGl0ZVNwYWNlOjpOb3JtYWw7IH0KICAgICBzdGF0aWMgZmxvYXQgaW5p
dGlhbEhvcml6b250YWxCb3JkZXJTcGFjaW5nKCkgeyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBm
bG9hdCBpbml0aWFsVmVydGljYWxCb3JkZXJTcGFjaW5nKCkgeyByZXR1cm4gMDsgfQotICAgIHN0
YXRpYyBFQ3Vyc29yIGluaXRpYWxDdXJzb3IoKSB7IHJldHVybiBDdXJzb3JBdXRvOyB9CisgICAg
c3RhdGljIEN1cnNvclR5cGUgaW5pdGlhbEN1cnNvcigpIHsgcmV0dXJuIEN1cnNvclR5cGU6OkF1
dG87IH0KICAgICBzdGF0aWMgQ29sb3IgaW5pdGlhbENvbG9yKCkgeyByZXR1cm4gQ29sb3I6OmJs
YWNrOyB9CiAgICAgc3RhdGljIFN0eWxlSW1hZ2UqIGluaXRpYWxMaXN0U3R5bGVJbWFnZSgpIHsg
cmV0dXJuIDA7IH0KICAgICBzdGF0aWMgZmxvYXQgaW5pdGlhbEJvcmRlcldpZHRoKCkgeyByZXR1
cm4gMzsgfQpAQCAtMTQ3OCwxMyArMTQ3OCwxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHNob3J0
IGluaXRpYWxXaWRvd3MoKSB7IHJldHVybiAyOyB9CiAgICAgc3RhdGljIHNob3J0IGluaXRpYWxP
cnBoYW5zKCkgeyByZXR1cm4gMjsgfQogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbExpbmVIZWln
aHQoKSB7IHJldHVybiBMZW5ndGgoLTEwMC4wZiwgUGVyY2VudCk7IH0KLSAgICBzdGF0aWMgRVRl
eHRBbGlnbiBpbml0aWFsVGV4dEFsaWduKCkgeyByZXR1cm4gVEFTVEFSVDsgfQorICAgIHN0YXRp
YyBUZXh0QWxpZ25Nb2RlIGluaXRpYWxUZXh0QWxpZ24oKSB7IHJldHVybiBUZXh0QWxpZ25Nb2Rl
OjpTdGFydDsgfQogICAgIHN0YXRpYyBUZXh0RGVjb3JhdGlvbiBpbml0aWFsVGV4dERlY29yYXRp
b24oKSB7IHJldHVybiBUZXh0RGVjb3JhdGlvbk5vbmU7IH0KLSAgICBzdGF0aWMgVGV4dERlY29y
YXRpb25TdHlsZSBpbml0aWFsVGV4dERlY29yYXRpb25TdHlsZSgpIHsgcmV0dXJuIFRleHREZWNv
cmF0aW9uU3R5bGVTb2xpZDsgfQorICAgIHN0YXRpYyBUZXh0RGVjb3JhdGlvblN0eWxlIGluaXRp
YWxUZXh0RGVjb3JhdGlvblN0eWxlKCkgeyByZXR1cm4gVGV4dERlY29yYXRpb25TdHlsZTo6U29s
aWQ7IH0KICAgICBzdGF0aWMgVGV4dERlY29yYXRpb25Ta2lwIGluaXRpYWxUZXh0RGVjb3JhdGlv
blNraXAoKSB7IHJldHVybiBUZXh0RGVjb3JhdGlvblNraXBBdXRvOyB9CiAgICAgc3RhdGljIFRl
eHRVbmRlcmxpbmVQb3NpdGlvbiBpbml0aWFsVGV4dFVuZGVybGluZVBvc2l0aW9uKCkgeyByZXR1
cm4gVGV4dFVuZGVybGluZVBvc2l0aW9uQXV0bzsgfQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFs
Wm9vbSgpIHsgcmV0dXJuIDEuMGY7IH0KLSAgICBzdGF0aWMgVGV4dFpvb20gaW5pdGlhbFRleHRa
b29tKCkgeyByZXR1cm4gVGV4dFpvb21Ob3JtYWw7IH0KKyAgICBzdGF0aWMgVGV4dFpvb20gaW5p
dGlhbFRleHRab29tKCkgeyByZXR1cm4gVGV4dFpvb206Ok5vcm1hbDsgfQogICAgIHN0YXRpYyBm
bG9hdCBpbml0aWFsT3V0bGluZU9mZnNldCgpIHsgcmV0dXJuIDA7IH0KICAgICBzdGF0aWMgZmxv
YXQgaW5pdGlhbE9wYWNpdHkoKSB7IHJldHVybiAxLjBmOyB9CiAgICAgc3RhdGljIEJveEFsaWdu
bWVudCBpbml0aWFsQm94QWxpZ24oKSB7IHJldHVybiBCb3hBbGlnbm1lbnQ6OlN0cmV0Y2g7IH0K
QEAgLTE1MjQsMTggKzE1MjQsMTggQEAgcHVibGljOgogICAgIHN0YXRpYyBOQlNQTW9kZSBpbml0
aWFsTkJTUE1vZGUoKSB7IHJldHVybiBOQlNQTW9kZTo6Tm9ybWFsOyB9CiAgICAgc3RhdGljIExp
bmVCcmVhayBpbml0aWFsTGluZUJyZWFrKCkgeyByZXR1cm4gTGluZUJyZWFrOjpBdXRvOyB9CiAg
ICAgc3RhdGljIEVTcGVha0FzIGluaXRpYWxTcGVha0FzKCkgeyByZXR1cm4gU3BlYWtOb3JtYWw7
IH0KLSAgICBzdGF0aWMgSHlwaGVucyBpbml0aWFsSHlwaGVucygpIHsgcmV0dXJuIEh5cGhlbnNN
YW51YWw7IH0KKyAgICBzdGF0aWMgSHlwaGVucyBpbml0aWFsSHlwaGVucygpIHsgcmV0dXJuIEh5
cGhlbnM6Ok1hbnVhbDsgfQogICAgIHN0YXRpYyBzaG9ydCBpbml0aWFsSHlwaGVuYXRpb25MaW1p
dEJlZm9yZSgpIHsgcmV0dXJuIC0xOyB9CiAgICAgc3RhdGljIHNob3J0IGluaXRpYWxIeXBoZW5h
dGlvbkxpbWl0QWZ0ZXIoKSB7IHJldHVybiAtMTsgfQogICAgIHN0YXRpYyBzaG9ydCBpbml0aWFs
SHlwaGVuYXRpb25MaW1pdExpbmVzKCkgeyByZXR1cm4gLTE7IH0KICAgICBzdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nJiBpbml0aWFsSHlwaGVuYXRpb25TdHJpbmcoKSB7IHJldHVybiBudWxsQXRv
bSgpOyB9Ci0gICAgc3RhdGljIEVCb3JkZXJGaXQgaW5pdGlhbEJvcmRlckZpdCgpIHsgcmV0dXJu
IEJvcmRlckZpdEJvcmRlcjsgfQorICAgIHN0YXRpYyBCb3JkZXJGaXQgaW5pdGlhbEJvcmRlckZp
dCgpIHsgcmV0dXJuIEJvcmRlckZpdDo6Qm9yZGVyOyB9CiAgICAgc3RhdGljIFJlc2l6ZSBpbml0
aWFsUmVzaXplKCkgeyByZXR1cm4gUmVzaXplOjpOb25lOyB9CiAgICAgc3RhdGljIENvbnRyb2xQ
YXJ0IGluaXRpYWxBcHBlYXJhbmNlKCkgeyByZXR1cm4gTm9Db250cm9sUGFydDsgfQogICAgIHN0
YXRpYyBBc3BlY3RSYXRpb1R5cGUgaW5pdGlhbEFzcGVjdFJhdGlvVHlwZSgpIHsgcmV0dXJuIEFz
cGVjdFJhdGlvVHlwZTo6QXV0bzsgfQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsQXNwZWN0UmF0
aW9EZW5vbWluYXRvcigpIHsgcmV0dXJuIDE7IH0KICAgICBzdGF0aWMgZmxvYXQgaW5pdGlhbEFz
cGVjdFJhdGlvTnVtZXJhdG9yKCkgeyByZXR1cm4gMTsgfQotICAgIHN0YXRpYyBPcmRlciBpbml0
aWFsUlRMT3JkZXJpbmcoKSB7IHJldHVybiBMb2dpY2FsT3JkZXI7IH0KKyAgICBzdGF0aWMgT3Jk
ZXIgaW5pdGlhbFJUTE9yZGVyaW5nKCkgeyByZXR1cm4gT3JkZXI6OkxvZ2ljYWw7IH0KICAgICBz
dGF0aWMgZmxvYXQgaW5pdGlhbFRleHRTdHJva2VXaWR0aCgpIHsgcmV0dXJuIDA7IH0KICAgICBz
dGF0aWMgdW5zaWduZWQgc2hvcnQgaW5pdGlhbENvbHVtbkNvdW50KCkgeyByZXR1cm4gMTsgfQog
ICAgIHN0YXRpYyBDb2x1bW5GaWxsIGluaXRpYWxDb2x1bW5GaWxsKCkgeyByZXR1cm4gQ29sdW1u
RmlsbDo6QmFsYW5jZTsgfQpAQCAtMTU0Niw3ICsxNTQ2LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBMZW5ndGggaW5pdGlhbFRyYW5zZm9ybU9yaWdpblgoKSB7IHJldHVybiBMZW5ndGgoNTAuMGYs
IFBlcmNlbnQpOyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsVHJhbnNmb3JtT3JpZ2luWSgp
IHsgcmV0dXJuIExlbmd0aCg1MC4wZiwgUGVyY2VudCk7IH0KICAgICBzdGF0aWMgVHJhbnNmb3Jt
Qm94IGluaXRpYWxUcmFuc2Zvcm1Cb3goKSB7IHJldHVybiBUcmFuc2Zvcm1Cb3g6OkJvcmRlckJv
eDsgfQotICAgIHN0YXRpYyBFUG9pbnRlckV2ZW50cyBpbml0aWFsUG9pbnRlckV2ZW50cygpIHsg
cmV0dXJuIFBFX0FVVE87IH0KKyAgICBzdGF0aWMgUG9pbnRlckV2ZW50cyBpbml0aWFsUG9pbnRl
ckV2ZW50cygpIHsgcmV0dXJuIFBvaW50ZXJFdmVudHM6OkF1dG87IH0KICAgICBzdGF0aWMgZmxv
YXQgaW5pdGlhbFRyYW5zZm9ybU9yaWdpblooKSB7IHJldHVybiAwOyB9CiAgICAgc3RhdGljIFRy
YW5zZm9ybVN0eWxlM0QgaW5pdGlhbFRyYW5zZm9ybVN0eWxlM0QoKSB7IHJldHVybiBUcmFuc2Zv
cm1TdHlsZTNEOjpGbGF0OyB9CiAgICAgc3RhdGljIEJhY2tmYWNlVmlzaWJpbGl0eSBpbml0aWFs
QmFja2ZhY2VWaXNpYmlsaXR5KCkgeyByZXR1cm4gQmFja2ZhY2VWaXNpYmlsaXR5OjpWaXNpYmxl
OyB9CkBAIC0xNTU0LDE3ICsxNTU0LDE3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgTGVuZ3RoIGlu
aXRpYWxQZXJzcGVjdGl2ZU9yaWdpblgoKSB7IHJldHVybiBMZW5ndGgoNTAuMGYsIFBlcmNlbnQp
OyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsUGVyc3BlY3RpdmVPcmlnaW5ZKCkgeyByZXR1
cm4gTGVuZ3RoKDUwLjBmLCBQZXJjZW50KTsgfQogICAgIHN0YXRpYyBDb2xvciBpbml0aWFsQmFj
a2dyb3VuZENvbG9yKCkgeyByZXR1cm4gQ29sb3I6OnRyYW5zcGFyZW50OyB9Ci0gICAgc3RhdGlj
IENvbG9yIGluaXRpYWxUZXh0RW1waGFzaXNDb2xvcigpIHsgcmV0dXJuIFRleHRFbXBoYXNpc0Zp
bGxGaWxsZWQ7IH0KLSAgICBzdGF0aWMgVGV4dEVtcGhhc2lzRmlsbCBpbml0aWFsVGV4dEVtcGhh
c2lzRmlsbCgpIHsgcmV0dXJuIFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQ7IH0KLSAgICBzdGF0aWMg
VGV4dEVtcGhhc2lzTWFyayBpbml0aWFsVGV4dEVtcGhhc2lzTWFyaygpIHsgcmV0dXJuIFRleHRF
bXBoYXNpc01hcmtOb25lOyB9CisgICAgc3RhdGljIENvbG9yIGluaXRpYWxUZXh0RW1waGFzaXND
b2xvcigpIHsgcmV0dXJuIENvbG9yKCk7IH0KKyAgICBzdGF0aWMgVGV4dEVtcGhhc2lzRmlsbCBp
bml0aWFsVGV4dEVtcGhhc2lzRmlsbCgpIHsgcmV0dXJuIFRleHRFbXBoYXNpc0ZpbGw6OkZpbGxl
ZDsgfQorICAgIHN0YXRpYyBUZXh0RW1waGFzaXNNYXJrIGluaXRpYWxUZXh0RW1waGFzaXNNYXJr
KCkgeyByZXR1cm4gVGV4dEVtcGhhc2lzTWFyazo6Tm9uZTsgfQogICAgIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcmIGluaXRpYWxUZXh0RW1waGFzaXNDdXN0b21NYXJrKCkgeyByZXR1cm4gbnVs
bEF0b20oKTsgfQogICAgIHN0YXRpYyBUZXh0RW1waGFzaXNQb3NpdGlvbiBpbml0aWFsVGV4dEVt
cGhhc2lzUG9zaXRpb24oKSB7IHJldHVybiBUZXh0RW1waGFzaXNQb3NpdGlvbk92ZXIgfCBUZXh0
RW1waGFzaXNQb3NpdGlvblJpZ2h0OyB9Ci0gICAgc3RhdGljIFJ1YnlQb3NpdGlvbiBpbml0aWFs
UnVieVBvc2l0aW9uKCkgeyByZXR1cm4gUnVieVBvc2l0aW9uQmVmb3JlOyB9CisgICAgc3RhdGlj
IFJ1YnlQb3NpdGlvbiBpbml0aWFsUnVieVBvc2l0aW9uKCkgeyByZXR1cm4gUnVieVBvc2l0aW9u
OjpCZWZvcmU7IH0KICAgICBzdGF0aWMgTGluZUJveENvbnRhaW4gaW5pdGlhbExpbmVCb3hDb250
YWluKCkgeyByZXR1cm4gTGluZUJveENvbnRhaW5CbG9jayB8IExpbmVCb3hDb250YWluSW5saW5l
IHwgTGluZUJveENvbnRhaW5SZXBsYWNlZDsgfQogICAgIHN0YXRpYyBJbWFnZU9yaWVudGF0aW9u
RW51bSBpbml0aWFsSW1hZ2VPcmllbnRhdGlvbigpIHsgcmV0dXJuIE9yaWdpblRvcExlZnQ7IH0K
ICAgICBzdGF0aWMgSW1hZ2VSZW5kZXJpbmcgaW5pdGlhbEltYWdlUmVuZGVyaW5nKCkgeyByZXR1
cm4gSW1hZ2VSZW5kZXJpbmc6OkF1dG87IH0KLSAgICBzdGF0aWMgSW1hZ2VSZXNvbHV0aW9uU291
cmNlIGluaXRpYWxJbWFnZVJlc29sdXRpb25Tb3VyY2UoKSB7IHJldHVybiBJbWFnZVJlc29sdXRp
b25TcGVjaWZpZWQ7IH0KLSAgICBzdGF0aWMgSW1hZ2VSZXNvbHV0aW9uU25hcCBpbml0aWFsSW1h
Z2VSZXNvbHV0aW9uU25hcCgpIHsgcmV0dXJuIEltYWdlUmVzb2x1dGlvbk5vU25hcDsgfQorICAg
IHN0YXRpYyBJbWFnZVJlc29sdXRpb25Tb3VyY2UgaW5pdGlhbEltYWdlUmVzb2x1dGlvblNvdXJj
ZSgpIHsgcmV0dXJuIEltYWdlUmVzb2x1dGlvblNvdXJjZTo6U3BlY2lmaWVkOyB9CisgICAgc3Rh
dGljIEltYWdlUmVzb2x1dGlvblNuYXAgaW5pdGlhbEltYWdlUmVzb2x1dGlvblNuYXAoKSB7IHJl
dHVybiBJbWFnZVJlc29sdXRpb25TbmFwOjpOb25lOyB9CiAgICAgc3RhdGljIGZsb2F0IGluaXRp
YWxJbWFnZVJlc29sdXRpb24oKSB7IHJldHVybiAxOyB9CiAgICAgc3RhdGljIFN0eWxlSW1hZ2Uq
IGluaXRpYWxCb3JkZXJJbWFnZVNvdXJjZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICBzdGF0
aWMgU3R5bGVJbWFnZSogaW5pdGlhbE1hc2tCb3hJbWFnZVNvdXJjZSgpIHsgcmV0dXJuIG51bGxw
dHI7IH0KQEAgLTE1NzUsMTIgKzE1NzUsMTIgQEAgcHVibGljOgogI2lmIEVOQUJMRShDU1MzX1RF
WFQpCiAgICAgc3RhdGljIFRleHRJbmRlbnRMaW5lIGluaXRpYWxUZXh0SW5kZW50TGluZSgpIHsg
cmV0dXJuIFRleHRJbmRlbnRMaW5lOjpGaXJzdExpbmU7IH0KICAgICBzdGF0aWMgVGV4dEluZGVu
dFR5cGUgaW5pdGlhbFRleHRJbmRlbnRUeXBlKCkgeyByZXR1cm4gVGV4dEluZGVudFR5cGU6Ok5v
cm1hbDsgfQotICAgIHN0YXRpYyBUZXh0QWxpZ25MYXN0IGluaXRpYWxUZXh0QWxpZ25MYXN0KCkg
eyByZXR1cm4gVGV4dEFsaWduTGFzdEF1dG87IH0KLSAgICBzdGF0aWMgVGV4dEp1c3RpZnkgaW5p
dGlhbFRleHRKdXN0aWZ5KCkgeyByZXR1cm4gVGV4dEp1c3RpZnlBdXRvOyB9CisgICAgc3RhdGlj
IFRleHRBbGlnbkxhc3QgaW5pdGlhbFRleHRBbGlnbkxhc3QoKSB7IHJldHVybiBUZXh0QWxpZ25M
YXN0OjpBdXRvOyB9CisgICAgc3RhdGljIFRleHRKdXN0aWZ5IGluaXRpYWxUZXh0SnVzdGlmeSgp
IHsgcmV0dXJuIFRleHRKdXN0aWZ5OjpBdXRvOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDVVJT
T1JfVklTSUJJTElUWSkKLSAgICBzdGF0aWMgQ3Vyc29yVmlzaWJpbGl0eSBpbml0aWFsQ3Vyc29y
VmlzaWJpbGl0eSgpIHsgcmV0dXJuIEN1cnNvclZpc2liaWxpdHlBdXRvOyB9CisgICAgc3RhdGlj
IEN1cnNvclZpc2liaWxpdHkgaW5pdGlhbEN1cnNvclZpc2liaWxpdHkoKSB7IHJldHVybiBDdXJz
b3JWaXNpYmlsaXR5OjpBdXRvOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJ
TkcpCkBAIC0xNjE2LDcgKzE2MTYsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgVmVjdG9yPEdy
aWRUcmFja1NpemU+IGluaXRpYWxHcmlkQXV0b1JlcGVhdFRyYWNrcygpIHsgcmV0dXJuIFZlY3Rv
cjxHcmlkVHJhY2tTaXplPigpOyB9CiAgICAgc3RhdGljIHVuc2lnbmVkIGluaXRpYWxHcmlkQXV0
b1JlcGVhdEluc2VydGlvblBvaW50KCkgeyByZXR1cm4gMDsgfQotICAgIHN0YXRpYyBBdXRvUmVw
ZWF0VHlwZSBpbml0aWFsR3JpZEF1dG9SZXBlYXRUeXBlKCkgeyByZXR1cm4gTm9BdXRvUmVwZWF0
OyB9CisgICAgc3RhdGljIEF1dG9SZXBlYXRUeXBlIGluaXRpYWxHcmlkQXV0b1JlcGVhdFR5cGUo
KSB7IHJldHVybiBBdXRvUmVwZWF0VHlwZTo6Tm9uZTsgfQogCiAgICAgc3RhdGljIEdyaWRBdXRv
RmxvdyBpbml0aWFsR3JpZEF1dG9GbG93KCkgeyByZXR1cm4gQXV0b0Zsb3dSb3c7IH0KIApAQCAt
MTY0MSw4ICsxNjQxLDggQEAgcHVibGljOgogICAgIHN0YXRpYyB1bnNpZ25lZCBpbml0aWFsVGFi
U2l6ZSgpIHsgcmV0dXJuIDg7IH0KIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGlu
aXRpYWxMaW5lR3JpZCgpIHsgcmV0dXJuIG51bGxBdG9tKCk7IH0KLSAgICBzdGF0aWMgTGluZVNu
YXAgaW5pdGlhbExpbmVTbmFwKCkgeyByZXR1cm4gTGluZVNuYXBOb25lOyB9Ci0gICAgc3RhdGlj
IExpbmVBbGlnbiBpbml0aWFsTGluZUFsaWduKCkgeyByZXR1cm4gTGluZUFsaWduTm9uZTsgfQor
ICAgIHN0YXRpYyBMaW5lU25hcCBpbml0aWFsTGluZVNuYXAoKSB7IHJldHVybiBMaW5lU25hcDo6
Tm9uZTsgfQorICAgIHN0YXRpYyBMaW5lQWxpZ24gaW5pdGlhbExpbmVBbGlnbigpIHsgcmV0dXJu
IExpbmVBbGlnbjo6Tm9uZTsgfQogCiAgICAgc3RhdGljIEludFNpemUgaW5pdGlhbEluaXRpYWxM
ZXR0ZXIoKSB7IHJldHVybiBJbnRTaXplKCk7IH0KICAgICBzdGF0aWMgTGluZUNsYW1wVmFsdWUg
aW5pdGlhbExpbmVDbGFtcCgpIHsgcmV0dXJuIExpbmVDbGFtcFZhbHVlKCk7IH0KQEAgLTE3NDIs
MTMgKzE3NDIsMTMgQEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lkIGNvcHlOb25Jbmhlcml0ZWRG
cm9tKGNvbnN0IE5vbkluaGVyaXRlZEZsYWdzJik7CiAKLSAgICAgICAgYm9vbCBoYXNBbnlQdWJs
aWNQc2V1ZG9TdHlsZXMoKSBjb25zdCB7IHJldHVybiBQVUJMSUNfUFNFVURPSURfTUFTSyAmIHBz
ZXVkb0JpdHM7IH0KKyAgICAgICAgYm9vbCBoYXNBbnlQdWJsaWNQc2V1ZG9TdHlsZXMoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHNldWRvSWQ6OlB1YmxpY1BzZXVkb0lk
TWFzaykgJiBwc2V1ZG9CaXRzOyB9CiAgICAgICAgIGJvb2wgaGFzUHNldWRvU3R5bGUoUHNldWRv
SWQpIGNvbnN0OwogICAgICAgICB2b2lkIHNldEhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkKTsKICAg
ICAgICAgdm9pZCBzZXRIYXNQc2V1ZG9TdHlsZXMoUHNldWRvSWRTZXQpOwogCi0gICAgICAgIHVu
c2lnbmVkIGVmZmVjdGl2ZURpc3BsYXkgOiA1OyAvLyBFRGlzcGxheQotICAgICAgICB1bnNpZ25l
ZCBvcmlnaW5hbERpc3BsYXkgOiA1OyAvLyBFRGlzcGxheQorICAgICAgICB1bnNpZ25lZCBlZmZl
Y3RpdmVEaXNwbGF5IDogNTsgLy8gRGlzcGxheVR5cGUKKyAgICAgICAgdW5zaWduZWQgb3JpZ2lu
YWxEaXNwbGF5IDogNTsgLy8gRGlzcGxheVR5cGUKICAgICAgICAgdW5zaWduZWQgb3ZlcmZsb3dY
IDogMzsgLy8gT3ZlcmZsb3cKICAgICAgICAgdW5zaWduZWQgb3ZlcmZsb3dZIDogMzsgLy8gT3Zl
cmZsb3cKICAgICAgICAgdW5zaWduZWQgdmVydGljYWxBbGlnbiA6IDQ7IC8vIFZlcnRpY2FsQWxp
Z24KQEAgLTE3NzMsNyArMTc3Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIHVuc2lnbmVkIGlzTGlu
ayA6IDE7CiAKICAgICAgICAgdW5zaWduZWQgc3R5bGVUeXBlIDogNDsgLy8gUHNldWRvSWQKLSAg
ICAgICAgdW5zaWduZWQgcHNldWRvQml0cyA6IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRklSU1Rf
SU5URVJOQUxfUFNFVURPSUQpIC0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEZJUlNUX1BVQkxJQ19Q
U0VVRE9JRCkpOworICAgICAgICB1bnNpZ25lZCBwc2V1ZG9CaXRzIDogKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQc2V1ZG9JZDo6Rmlyc3RJbnRlcm5hbFBzZXVkb0lkKSAtIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQc2V1ZG9JZDo6Rmlyc3RQdWJsaWNQc2V1ZG9JZCkpOwogCiAgICAgICAgIC8vIElm
IHlvdSBhZGQgbW9yZSBzdHlsZSBiaXRzIGhlcmUsIHlvdSB3aWxsIGFsc28gbmVlZCB0byB1cGRh
dGUgUmVuZGVyU3R5bGU6Ok5vbkluaGVyaXRlZEZsYWdzOjpjb3B5Tm9uSW5oZXJpdGVkRnJvbSgp
LgogICAgIH07CkBAIC0xNzgyLDIwICsxNzgyLDIwIEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBJbmhlcml0ZWRGbGFncyYpIGNvbnN0OwogICAgICAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgSW5oZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0
aGlzID09IG90aGVyKTsgfQogCi0gICAgICAgIHVuc2lnbmVkIGVtcHR5Q2VsbHMgOiAxOyAvLyBF
RW1wdHlDZWxsCi0gICAgICAgIHVuc2lnbmVkIGNhcHRpb25TaWRlIDogMjsgLy8gRUNhcHRpb25T
aWRlCi0gICAgICAgIHVuc2lnbmVkIGxpc3RTdHlsZVR5cGUgOiA3OyAvLyBFTGlzdFN0eWxlVHlw
ZQotICAgICAgICB1bnNpZ25lZCBsaXN0U3R5bGVQb3NpdGlvbiA6IDE7IC8vIEVMaXN0U3R5bGVQ
b3NpdGlvbgotICAgICAgICB1bnNpZ25lZCB2aXNpYmlsaXR5IDogMjsgLy8gRVZpc2liaWxpdHkK
LSAgICAgICAgdW5zaWduZWQgdGV4dEFsaWduIDogNDsgLy8gRVRleHRBbGlnbgotICAgICAgICB1
bnNpZ25lZCB0ZXh0VHJhbnNmb3JtIDogMjsgLy8gRVRleHRUcmFuc2Zvcm0KKyAgICAgICAgdW5z
aWduZWQgZW1wdHlDZWxscyA6IDE7IC8vIEVtcHR5Q2VsbAorICAgICAgICB1bnNpZ25lZCBjYXB0
aW9uU2lkZSA6IDI7IC8vIENhcHRpb25TaWRlCisgICAgICAgIHVuc2lnbmVkIGxpc3RTdHlsZVR5
cGUgOiA3OyAvLyBMaXN0U3R5bGVUeXBlCisgICAgICAgIHVuc2lnbmVkIGxpc3RTdHlsZVBvc2l0
aW9uIDogMTsgLy8gTGlzdFN0eWxlUG9zaXRpb24KKyAgICAgICAgdW5zaWduZWQgdmlzaWJpbGl0
eSA6IDI7IC8vIFZpc2liaWxpdHkKKyAgICAgICAgdW5zaWduZWQgdGV4dEFsaWduIDogNDsgLy8g
VGV4dEFsaWduTW9kZQorICAgICAgICB1bnNpZ25lZCB0ZXh0VHJhbnNmb3JtIDogMjsgLy8gVGV4
dFRyYW5zZm9ybQogICAgICAgICB1bnNpZ25lZCB0ZXh0RGVjb3JhdGlvbnMgOiBUZXh0RGVjb3Jh
dGlvbkJpdHM7Ci0gICAgICAgIHVuc2lnbmVkIGN1cnNvciA6IDY7IC8vIEVDdXJzb3IKKyAgICAg
ICAgdW5zaWduZWQgY3Vyc29yIDogNjsgLy8gQ3Vyc29yVHlwZQogI2lmIEVOQUJMRShDVVJTT1Jf
VklTSUJJTElUWSkKICAgICAgICAgdW5zaWduZWQgY3Vyc29yVmlzaWJpbGl0eSA6IDE7IC8vIEN1
cnNvclZpc2liaWxpdHkKICNlbmRpZgogICAgICAgICB1bnNpZ25lZCBkaXJlY3Rpb24gOiAxOyAv
LyBUZXh0RGlyZWN0aW9uCi0gICAgICAgIHVuc2lnbmVkIHdoaXRlU3BhY2UgOiAzOyAvLyBFV2hp
dGVTcGFjZQorICAgICAgICB1bnNpZ25lZCB3aGl0ZVNwYWNlIDogMzsgLy8gV2hpdGVTcGFjZQog
ICAgICAgICAvLyAzNSBiaXRzCiAgICAgICAgIHVuc2lnbmVkIGJvcmRlckNvbGxhcHNlIDogMTsg
Ly8gQm9yZGVyQ29sbGFwc2UKICAgICAgICAgdW5zaWduZWQgYm94RGlyZWN0aW9uIDogMTsgLy8g
Qm94RGlyZWN0aW9uCkBAIC0xODAzLDggKzE4MDMsOCBAQCBwcml2YXRlOgogICAgICAgICAvLyBu
b24gQ1NTMiBpbmhlcml0ZWQKICAgICAgICAgdW5zaWduZWQgcnRsT3JkZXJpbmcgOiAxOyAvLyBP
cmRlcgogICAgICAgICB1bnNpZ25lZCBwcmludENvbG9yQWRqdXN0IDogUHJpbnRDb2xvckFkanVz
dEJpdHM7IC8vIFByaW50Q29sb3JBZGp1c3QKLSAgICAgICAgdW5zaWduZWQgcG9pbnRlckV2ZW50
cyA6IDQ7IC8vIEVQb2ludGVyRXZlbnRzCi0gICAgICAgIHVuc2lnbmVkIGluc2lkZUxpbmsgOiAy
OyAvLyBFSW5zaWRlTGluaworICAgICAgICB1bnNpZ25lZCBwb2ludGVyRXZlbnRzIDogNDsgLy8g
UG9pbnRlckV2ZW50cworICAgICAgICB1bnNpZ25lZCBpbnNpZGVMaW5rIDogMjsgLy8gSW5zaWRl
TGluawogICAgICAgICB1bnNpZ25lZCBpbnNpZGVEZWZhdWx0QnV0dG9uIDogMTsKICAgICAgICAg
Ly8gNDYgYml0cwogCkBAIC0xODE2LDcgKzE4MTYsNyBAQCBwcml2YXRlOgogICAgIC8vIFRoaXMg
Y29uc3RydWN0b3IgaXMgdXNlZCB0byBpbXBsZW1lbnQgdGhlIHJlcGxhY2Ugb3BlcmF0aW9uLgog
ICAgIFJlbmRlclN0eWxlKFJlbmRlclN0eWxlJiwgUmVuZGVyU3R5bGUmJik7CiAKLSAgICBFRGlz
cGxheSBvcmlnaW5hbERpc3BsYXkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRGlzcGxh
eT4obV9ub25Jbmhlcml0ZWRGbGFncy5vcmlnaW5hbERpc3BsYXkpOyB9CisgICAgRGlzcGxheVR5
cGUgb3JpZ2luYWxEaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RGlzcGxheVR5
cGU+KG1fbm9uSW5oZXJpdGVkRmxhZ3Mub3JpZ2luYWxEaXNwbGF5KTsgfQogCiAgICAgYm9vbCBo
YXNBdXRvTGVmdEFuZFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbGVmdCgpLmlzQXV0bygpICYmIHJp
Z2h0KCkuaXNBdXRvKCk7IH0KICAgICBib29sIGhhc0F1dG9Ub3BBbmRCb3R0b20oKSBjb25zdCB7
IHJldHVybiB0b3AoKS5pc0F1dG8oKSAmJiBib3R0b20oKS5pc0F1dG8oKTsgfQpAQCAtMTgyNSwx
MSArMTgyNSwxMSBAQCBwcml2YXRlOgogCiAgICAgTGF5b3V0Qm94RXh0ZW50IGdldFNoYWRvd0lu
c2V0RXh0ZW50KGNvbnN0IFNoYWRvd0RhdGEqKSBjb25zdDsKIAotICAgIHN0YXRpYyBib29sIGlz
RGlzcGxheVJlcGxhY2VkVHlwZShFRGlzcGxheSk7Ci0gICAgc3RhdGljIGJvb2wgaXNEaXNwbGF5
SW5saW5lVHlwZShFRGlzcGxheSk7Ci0gICAgc3RhdGljIGJvb2wgaXNEaXNwbGF5RmxleGlibGVC
b3goRURpc3BsYXkpOwotICAgIHN0YXRpYyBib29sIGlzRGlzcGxheUdyaWRCb3goRURpc3BsYXkp
OwotICAgIHN0YXRpYyBib29sIGlzRGlzcGxheUZsZXhpYmxlT3JHcmlkQm94KEVEaXNwbGF5KTsK
KyAgICBzdGF0aWMgYm9vbCBpc0Rpc3BsYXlSZXBsYWNlZFR5cGUoRGlzcGxheVR5cGUpOworICAg
IHN0YXRpYyBib29sIGlzRGlzcGxheUlubGluZVR5cGUoRGlzcGxheVR5cGUpOworICAgIHN0YXRp
YyBib29sIGlzRGlzcGxheUZsZXhpYmxlQm94KERpc3BsYXlUeXBlKTsKKyAgICBzdGF0aWMgYm9v
bCBpc0Rpc3BsYXlHcmlkQm94KERpc3BsYXlUeXBlKTsKKyAgICBzdGF0aWMgYm9vbCBpc0Rpc3Bs
YXlGbGV4aWJsZU9yR3JpZEJveChEaXNwbGF5VHlwZSk7CiAKICAgICBDb2xvciBjb2xvckluY2x1
ZGluZ0ZhbGxiYWNrKENTU1Byb3BlcnR5SUQgY29sb3JQcm9wZXJ0eSwgYm9vbCB2aXNpdGVkTGlu
aykgY29uc3Q7CiAKQEAgLTE5MjAsMjMgKzE5MjAsMjMgQEAgaW5saW5lIHZvaWQgUmVuZGVyU3R5
bGU6Ok5vbkluaGVyaXRlZEZsYQogCiBpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6Tm9uSW5oZXJp
dGVkRmxhZ3M6Omhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkIHBzZXVkbykgY29uc3QKIHsKLSAgICBB
U1NFUlQocHNldWRvID4gTk9QU0VVRE8pOwotICAgIEFTU0VSVChwc2V1ZG8gPCBGSVJTVF9JTlRF
Uk5BTF9QU0VVRE9JRCk7Ci0gICAgcmV0dXJuIHBzZXVkb0JpdHMgJiAoMSA8PCAocHNldWRvIC0g
MSAvKiBOT1BTVUVETyAqLykpOworICAgIEFTU0VSVChwc2V1ZG8gPiBQc2V1ZG9JZDo6Tm9uZSk7
CisgICAgQVNTRVJUKHBzZXVkbyA8IFBzZXVkb0lkOjpGaXJzdEludGVybmFsUHNldWRvSWQpOwor
ICAgIHJldHVybiBwc2V1ZG9CaXRzICYgKDEgPDwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihwc2V1
ZG8pIC0gMSAvKiBQc2V1ZG9JZDo6Tm9uZSAqLykpOwogfQogCiBpbmxpbmUgdm9pZCBSZW5kZXJT
dHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OnNldEhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkIHBzZXVk
bykKIHsKLSAgICBBU1NFUlQocHNldWRvID4gTk9QU0VVRE8pOwotICAgIEFTU0VSVChwc2V1ZG8g
PCBGSVJTVF9JTlRFUk5BTF9QU0VVRE9JRCk7Ci0gICAgcHNldWRvQml0cyB8PSAxIDw8IChwc2V1
ZG8gLSAxIC8qIE5PUFNVRURPICovKTsKKyAgICBBU1NFUlQocHNldWRvID4gUHNldWRvSWQ6Ok5v
bmUpOworICAgIEFTU0VSVChwc2V1ZG8gPCBQc2V1ZG9JZDo6Rmlyc3RJbnRlcm5hbFBzZXVkb0lk
KTsKKyAgICBwc2V1ZG9CaXRzIHw9IDEgPDwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihwc2V1ZG8p
IC0gMSAvKiBQc2V1ZG9JZDo6Tm9uZSAqLyk7CiB9CiAKIGlubGluZSB2b2lkIFJlbmRlclN0eWxl
OjpOb25Jbmhlcml0ZWRGbGFnczo6c2V0SGFzUHNldWRvU3R5bGVzKFBzZXVkb0lkU2V0IHBzZXVk
b0lkU2V0KQogewogICAgIEFTU0VSVChwc2V1ZG9JZFNldCk7Ci0gICAgQVNTRVJUKChwc2V1ZG9J
ZFNldC5kYXRhKCkgJiBQVUJMSUNfUFNFVURPSURfTUFTSykgPT0gcHNldWRvSWRTZXQuZGF0YSgp
KTsKLSAgICBwc2V1ZG9CaXRzIHw9IHBzZXVkb0lkU2V0LmRhdGEoKSA+PiAxOyAvLyBTaGlmdCBk
b3duIGFzIHdlIGRvIG5vdCBzdG9yZSBhIGJpdCBmb3IgTk9QU1VFRE8uCisgICAgQVNTRVJUKChw
c2V1ZG9JZFNldC5kYXRhKCkgJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHNldWRvSWQ6OlB1Ymxp
Y1BzZXVkb0lkTWFzaykpID09IHBzZXVkb0lkU2V0LmRhdGEoKSk7CisgICAgcHNldWRvQml0cyB8
PSBwc2V1ZG9JZFNldC5kYXRhKCkgPj4gMTsgLy8gU2hpZnQgZG93biBhcyB3ZSBkbyBub3Qgc3Rv
cmUgYSBiaXQgZm9yIFBzZXVkb0lkOjpOb25lLgogfQogCiBpbmxpbmUgYm9vbCBSZW5kZXJTdHls
ZTo6SW5oZXJpdGVkRmxhZ3M6Om9wZXJhdG9yPT0oY29uc3QgSW5oZXJpdGVkRmxhZ3MmIG90aGVy
KSBjb25zdApAQCAtMjAwNSwyMiArMjAwNSwyMiBAQCBpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6
aGFzQmFja2dyb3VuZCgpCiAgICAgcmV0dXJuIHZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9w
ZXJ0eUJhY2tncm91bmRDb2xvcikuaXNWaXNpYmxlKCkgfHwgIGhhc0JhY2tncm91bmRJbWFnZSgp
OwogfQogCi1pbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6YXV0b1dyYXAoRVdoaXRlU3BhY2Ugd2hp
dGVTcGFjZSkKK2lubGluZSBib29sIFJlbmRlclN0eWxlOjphdXRvV3JhcChXaGl0ZVNwYWNlIHdo
aXRlU3BhY2UpCiB7CiAgICAgLy8gTm93cmFwIGFuZCBwcmUgZG9uJ3QgYXV0b21hdGljYWxseSB3
cmFwLgotICAgIHJldHVybiB3aGl0ZVNwYWNlICE9IE5PV1JBUCAmJiB3aGl0ZVNwYWNlICE9IFBS
RTsKKyAgICByZXR1cm4gd2hpdGVTcGFjZSAhPSBXaGl0ZVNwYWNlOjpOb1dyYXAgJiYgd2hpdGVT
cGFjZSAhPSBXaGl0ZVNwYWNlOjpQcmU7CiB9CiAKLWlubGluZSBib29sIFJlbmRlclN0eWxlOjpw
cmVzZXJ2ZU5ld2xpbmUoRVdoaXRlU3BhY2Ugd2hpdGVTcGFjZSkKK2lubGluZSBib29sIFJlbmRl
clN0eWxlOjpwcmVzZXJ2ZU5ld2xpbmUoV2hpdGVTcGFjZSB3aGl0ZVNwYWNlKQogewogICAgIC8v
IE5vcm1hbCBhbmQgbm93cmFwIGRvIG5vdCBwcmVzZXJ2ZSBuZXdsaW5lcy4KLSAgICByZXR1cm4g
d2hpdGVTcGFjZSAhPSBOT1JNQUwgJiYgd2hpdGVTcGFjZSAhPSBOT1dSQVA7CisgICAgcmV0dXJu
IHdoaXRlU3BhY2UgIT0gV2hpdGVTcGFjZTo6Tm9ybWFsICYmIHdoaXRlU3BhY2UgIT0gV2hpdGVT
cGFjZTo6Tm9XcmFwOwogfQogCi1pbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6Y29sbGFwc2VXaGl0
ZVNwYWNlKEVXaGl0ZVNwYWNlIHdzKQoraW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmNvbGxhcHNl
V2hpdGVTcGFjZShXaGl0ZVNwYWNlIHdzKQogewogICAgIC8vIFByZSBhbmQgcHJld3JhcCBkbyBu
b3QgY29sbGFwc2Ugd2hpdGVzcGFjZS4KLSAgICByZXR1cm4gd3MgIT0gUFJFICYmIHdzICE9IFBS
RV9XUkFQOworICAgIHJldHVybiB3cyAhPSBXaGl0ZVNwYWNlOjpQcmUgJiYgd3MgIT0gV2hpdGVT
cGFjZTo6UHJlV3JhcDsKIH0KIAogaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmlzQ29sbGFwc2li
bGVXaGl0ZVNwYWNlKFVDaGFyIGNoYXJhY3RlcikgY29uc3QKQEAgLTIwMzgsNyArMjAzOCw3IEBA
IGlubGluZSBib29sIFJlbmRlclN0eWxlOjppc0NvbGxhcHNpYmxlV2gKIAogaW5saW5lIGJvb2wg
UmVuZGVyU3R5bGU6OmJyZWFrT25seUFmdGVyV2hpdGVTcGFjZSgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIHdoaXRlU3BhY2UoKSA9PSBQUkVfV1JBUCB8fCBsaW5lQnJlYWsoKSA9PSBMaW5lQnJlYWs6
OkFmdGVyV2hpdGVTcGFjZTsKKyAgICByZXR1cm4gd2hpdGVTcGFjZSgpID09IFdoaXRlU3BhY2U6
OlByZVdyYXAgfHwgbGluZUJyZWFrKCkgPT0gTGluZUJyZWFrOjpBZnRlcldoaXRlU3BhY2U7CiB9
CiAKIGlubGluZSBib29sIFJlbmRlclN0eWxlOjpicmVha1dvcmRzKCkgY29uc3QKQEAgLTIwNDks
NyArMjA0OSw3IEBAIGlubGluZSBib29sIFJlbmRlclN0eWxlOjpicmVha1dvcmRzKCkgY28KIGlu
bGluZSBib29sIFJlbmRlclN0eWxlOjpoYXNJbmxpbmVDb2x1bW5BeGlzKCkgY29uc3QKIHsKICAg
ICBhdXRvIGF4aXMgPSBjb2x1bW5BeGlzKCk7Ci0gICAgcmV0dXJuIChheGlzID09IEF1dG9Db2x1
bW5BeGlzIHx8IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPT0gKGF4aXMgPT0gSG9yaXpvbnRh
bENvbHVtbkF4aXMpKSAmJiAhaGFzTGluZXNDbGFtcCgpOworICAgIHJldHVybiAoYXhpcyA9PSBD
b2x1bW5BeGlzOjpBdXRvIHx8IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPT0gKGF4aXMgPT0g
Q29sdW1uQXhpczo6SG9yaXpvbnRhbCkpICYmICFoYXNMaW5lc0NsYW1wKCk7CiB9CiAKIGlubGlu
ZSBJbWFnZU9yaWVudGF0aW9uRW51bSBSZW5kZXJTdHlsZTo6aW1hZ2VPcmllbnRhdGlvbigpIGNv
bnN0CkBAIC0yMTcwLDkgKzIxNzAsOSBAQCBpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6d2lsbENo
YW5nZUNyZWF0CiAKIGlubGluZSBib29sIFJlbmRlclN0eWxlOjppc0Rpc3BsYXlSZWdpb25UeXBl
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gZGlzcGxheSgpID09IEJMT0NLIHx8IGRpc3BsYXkoKSA9
PSBJTkxJTkVfQkxPQ0sKLSAgICAgICAgfHwgZGlzcGxheSgpID09IFRBQkxFX0NFTEwgfHwgZGlz
cGxheSgpID09IFRBQkxFX0NBUFRJT04KLSAgICAgICAgfHwgZGlzcGxheSgpID09IExJU1RfSVRF
TTsKKyAgICByZXR1cm4gZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpCbG9jayB8fCBkaXNwbGF5
KCkgPT0gRGlzcGxheVR5cGU6OklubGluZUJsb2NrCisgICAgICAgIHx8IGRpc3BsYXkoKSA9PSBE
aXNwbGF5VHlwZTo6VGFibGVDZWxsIHx8IGRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGVD
YXB0aW9uCisgICAgICAgIHx8IGRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6TGlzdEl0ZW07CiB9
CiAKIGlubGluZSBib29sIFJlbmRlclN0eWxlOjpzZXRXcml0aW5nTW9kZShXcml0aW5nTW9kZSB2
KQpAQCAtMjE5MywyOCArMjE5MywyOCBAQCBpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6Z2V0U2hh
ZG93QmxvY2tECiAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBnZXRTaGFk
b3dWZXJ0aWNhbEV4dGVudChzaGFkb3csIGxvZ2ljYWxUb3AsIGxvZ2ljYWxCb3R0b20pIDogZ2V0
U2hhZG93SG9yaXpvbnRhbEV4dGVudChzaGFkb3csIGxvZ2ljYWxUb3AsIGxvZ2ljYWxCb3R0b20p
OwogfQogCi1pbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6aXNEaXNwbGF5UmVwbGFjZWRUeXBlKEVE
aXNwbGF5IGRpc3BsYXkpCitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6aXNEaXNwbGF5UmVwbGFj
ZWRUeXBlKERpc3BsYXlUeXBlIGRpc3BsYXkpCiB7Ci0gICAgcmV0dXJuIGRpc3BsYXkgPT0gSU5M
SU5FX0JMT0NLIHx8IGRpc3BsYXkgPT0gSU5MSU5FX0JPWCB8fCBkaXNwbGF5ID09IElOTElORV9G
TEVYCi0gICAgICAgIHx8IGRpc3BsYXkgPT0gSU5MSU5FX0dSSUQgfHwgZGlzcGxheSA9PSBJTkxJ
TkVfVEFCTEU7CisgICAgcmV0dXJuIGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OklubGluZUJsb2Nr
IHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OklubGluZUJveCB8fCBkaXNwbGF5ID09IERpc3Bs
YXlUeXBlOjpJbmxpbmVGbGV4CisgICAgICAgIHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6Oklu
bGluZUdyaWQgfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lVGFibGU7CiB9CiAKLWlu
bGluZSBib29sIFJlbmRlclN0eWxlOjppc0Rpc3BsYXlJbmxpbmVUeXBlKEVEaXNwbGF5IGRpc3Bs
YXkpCitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6aXNEaXNwbGF5SW5saW5lVHlwZShEaXNwbGF5
VHlwZSBkaXNwbGF5KQogewotICAgIHJldHVybiBkaXNwbGF5ID09IElOTElORSB8fCBpc0Rpc3Bs
YXlSZXBsYWNlZFR5cGUoZGlzcGxheSk7CisgICAgcmV0dXJuIGRpc3BsYXkgPT0gRGlzcGxheVR5
cGU6OklubGluZSB8fCBpc0Rpc3BsYXlSZXBsYWNlZFR5cGUoZGlzcGxheSk7CiB9CiAKLWlubGlu
ZSBib29sIFJlbmRlclN0eWxlOjppc0Rpc3BsYXlGbGV4aWJsZUJveChFRGlzcGxheSBkaXNwbGF5
KQoraW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmlzRGlzcGxheUZsZXhpYmxlQm94KERpc3BsYXlU
eXBlIGRpc3BsYXkpCiB7Ci0gICAgcmV0dXJuIGRpc3BsYXkgPT0gRkxFWCB8fCBkaXNwbGF5ID09
IElOTElORV9GTEVYOworICAgIHJldHVybiBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpGbGV4IHx8
IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OklubGluZUZsZXg7CiB9CiAKLWlubGluZSBib29sIFJl
bmRlclN0eWxlOjppc0Rpc3BsYXlHcmlkQm94KEVEaXNwbGF5IGRpc3BsYXkpCitpbmxpbmUgYm9v
bCBSZW5kZXJTdHlsZTo6aXNEaXNwbGF5R3JpZEJveChEaXNwbGF5VHlwZSBkaXNwbGF5KQogewot
ICAgIHJldHVybiBkaXNwbGF5ID09IEdSSUQgfHwgZGlzcGxheSA9PSBJTkxJTkVfR1JJRDsKKyAg
ICByZXR1cm4gZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6R3JpZCB8fCBkaXNwbGF5ID09IERpc3Bs
YXlUeXBlOjpJbmxpbmVHcmlkOwogfQogCi1pbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6aXNEaXNw
bGF5RmxleGlibGVPckdyaWRCb3goRURpc3BsYXkgZGlzcGxheSkKK2lubGluZSBib29sIFJlbmRl
clN0eWxlOjppc0Rpc3BsYXlGbGV4aWJsZU9yR3JpZEJveChEaXNwbGF5VHlwZSBkaXNwbGF5KQog
ewogICAgIHJldHVybiBpc0Rpc3BsYXlGbGV4aWJsZUJveChkaXNwbGF5KSB8fCBpc0Rpc3BsYXlH
cmlkQm94KGRpc3BsYXkpOwogfQpAQCAtMjI0Niw3ICsyMjQ2LDcgQEAgaW5saW5lIHZvaWQgUmVu
ZGVyU3R5bGU6OnNldEJveFJlZmxlY3QoUgogCiBpbmxpbmUgYm9vbCBwc2V1ZG9FbGVtZW50UmVu
ZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7Ci0gICAgcmV0dXJuIHN0
eWxlICYmIHN0eWxlLT5kaXNwbGF5KCkgIT0gTk9ORSAmJiBzdHlsZS0+Y29udGVudERhdGEoKTsK
KyAgICByZXR1cm4gc3R5bGUgJiYgc3R5bGUtPmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Tm9u
ZSAmJiBzdHlsZS0+Y29udGVudERhdGEoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGVDb25zdGFudHMuY3BwCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw2ICszMCwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1RleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFZpc2liaWxpdHkgdmlzaWJpbGl0eSkKK3sKKyAgICBz
d2l0Y2ggKHZpc2liaWxpdHkpIHsKKyAgICBjYXNlIFZpc2liaWxpdHk6OlZpc2libGU6IHRzIDw8
ICJ2aXNpYmxlIjsgYnJlYWs7CisgICAgY2FzZSBWaXNpYmlsaXR5OjpIaWRkZW46IHRzIDw8ICJo
aWRkZW4iOyBicmVhazsKKyAgICBjYXNlIFZpc2liaWxpdHk6OkNvbGxhcHNlOiB0cyA8PCAiY29s
bGFwc2UiOyBicmVhazsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRzOworfQorCiBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJbWFnZVJlbmRlcmluZyBpbWFnZVJlbmRl
cmluZykKIHsKICAgICBzd2l0Y2ggKGltYWdlUmVuZGVyaW5nKSB7CkBAIC0xMTEsNyArMTIyLDcg
QEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgRQogCiBib29sIGFsd2F5
c1BhZ2VCcmVhayhCcmVha0JldHdlZW4gYmV0d2VlbikKIHsKLSAgICByZXR1cm4gYmV0d2VlbiA+
PSBQYWdlQnJlYWtCZXR3ZWVuOworICAgIHJldHVybiBiZXR3ZWVuID49IEJyZWFrQmV0d2Vlbjo6
UGFnZTsKIH0KIAogY29uc3QgZmxvYXQgZGVmYXVsdE1pdGVyTGltaXQgPSA0OwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3Rh
bnRzLmgJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC03NywzMCArNzcsMzIg
QEAgZW51bSBjbGFzcyBTdHlsZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aQogfTsKIAogLy8gU3Rh
dGljIHBzZXVkbyBzdHlsZXMuIER5bmFtaWMgb25lcyBhcmUgcHJvZHVjZWQgb24gdGhlIGZseS4K
LWVudW0gUHNldWRvSWQgOiB1bnNpZ25lZCBjaGFyIHsKLSAgICAvLyBUaGUgb3JkZXIgbXVzdCBi
ZSBOT1AgSUQsIHB1YmxpYyBJRHMsIGFuZCB0aGVuIGludGVybmFsIElEcy4KLSAgICBOT1BTRVVE
TywKLSAgICBGSVJTVF9MSU5FLAotICAgIEZJUlNUX0xFVFRFUiwKLSAgICBNQVJLRVIsCi0gICAg
QkVGT1JFLAotICAgIEFGVEVSLAotICAgIFNFTEVDVElPTiwKLSAgICBTQ1JPTExCQVIsCi0KLSAg
ICAvLyBJbnRlcm5hbCBJRHMgZm9sbG93OgotICAgIFNDUk9MTEJBUl9USFVNQiwKLSAgICBTQ1JP
TExCQVJfQlVUVE9OLAotICAgIFNDUk9MTEJBUl9UUkFDSywKLSAgICBTQ1JPTExCQVJfVFJBQ0tf
UElFQ0UsCi0gICAgU0NST0xMQkFSX0NPUk5FUiwKLSAgICBSRVNJWkVSLAotCi0gICAgQUZURVJf
TEFTVF9JTlRFUk5BTF9QU0VVRE9JRCwKLQotICAgIEZJUlNUX1BVQkxJQ19QU0VVRE9JRCA9IEZJ
UlNUX0xJTkUsCi0gICAgRklSU1RfSU5URVJOQUxfUFNFVURPSUQgPSBTQ1JPTExCQVJfVEhVTUIs
Ci0gICAgUFVCTElDX1BTRVVET0lEX01BU0sgPSAoKDEgPDwgRklSU1RfSU5URVJOQUxfUFNFVURP
SUQpIC0gMSkgJiB+KCgxIDw8IEZJUlNUX1BVQkxJQ19QU0VVRE9JRCkgLSAxKQorZW51bSBjbGFz
cyBQc2V1ZG9JZCA6IHVuc2lnbmVkIGNoYXIgeworICAgIC8vIFRoZSBvcmRlciBtdXN0IGJlIE5v
bmUsIHB1YmxpYyBJRHMsIGFuZCB0aGVuIGludGVybmFsIElEcy4KKyAgICBOb25lLAorCisgICAg
Ly8gUHVibGljOgorICAgIEZpcnN0TGluZSwKKyAgICBGaXJzdExldHRlciwKKyAgICBNYXJrZXIs
CisgICAgQmVmb3JlLAorICAgIEFmdGVyLAorICAgIFNlbGVjdGlvbiwKKyAgICBTY3JvbGxiYXIs
CisKKyAgICAvLyBJbnRlcm5hbDoKKyAgICBTY3JvbGxiYXJUaHVtYiwKKyAgICBTY3JvbGxiYXJC
dXR0b24sCisgICAgU2Nyb2xsYmFyVHJhY2ssCisgICAgU2Nyb2xsYmFyVHJhY2tQaWVjZSwKKyAg
ICBTY3JvbGxiYXJDb3JuZXIsCisgICAgUmVzaXplciwKKworICAgIEFmdGVyTGFzdEludGVybmFs
UHNldWRvSWQsCisKKyAgICBGaXJzdFB1YmxpY1BzZXVkb0lkID0gRmlyc3RMaW5lLAorICAgIEZp
cnN0SW50ZXJuYWxQc2V1ZG9JZCA9IFNjcm9sbGJhclRodW1iLAorICAgIFB1YmxpY1BzZXVkb0lk
TWFzayA9ICgoMSA8PCBGaXJzdEludGVybmFsUHNldWRvSWQpIC0gMSkgJiB+KCgxIDw8IEZpcnN0
UHVibGljUHNldWRvSWQpIC0gMSkKIH07CiAKIGNsYXNzIFBzZXVkb0lkU2V0IHsKQEAgLTEyNCwx
NCArMTI2LDE0IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzKFBzZXVkb0lkIHBzZXVkb0lkKSBj
b25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKChzaXplb2YobV9kYXRhKSAqIDgpID4gcHNldWRv
SWQpOwotICAgICAgICByZXR1cm4gbV9kYXRhICYgKDFVIDw8IHBzZXVkb0lkKTsKKyAgICAgICAg
QVNTRVJUKChzaXplb2YobV9kYXRhKSAqIDgpID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBzZXVk
b0lkKSk7CisgICAgICAgIHJldHVybiBtX2RhdGEgJiAoMVUgPDwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHBzZXVkb0lkKSk7CiAgICAgfQogCiAgICAgdm9pZCBhZGQoUHNldWRvSWQgcHNldWRvSWQp
CiAgICAgewotICAgICAgICBBU1NFUlQoKHNpemVvZihtX2RhdGEpICogOCkgPiBwc2V1ZG9JZCk7
Ci0gICAgICAgIG1fZGF0YSB8PSAoMVUgPDwgcHNldWRvSWQpOworICAgICAgICBBU1NFUlQoKHNp
emVvZihtX2RhdGEpICogOCkgPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHNldWRvSWQpKTsKKyAg
ICAgICAgbV9kYXRhIHw9ICgxVSA8PCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHNldWRvSWQpKTsK
ICAgICB9CiAKICAgICB2b2lkIG1lcmdlKFBzZXVkb0lkU2V0IHNvdXJjZSkKQEAgLTU0MywxNCAr
NTQ1LDE0IEBAIGVudW0gY2xhc3MgUmVzaXplIHsKIH07CiAKIC8vIFRoZSBvcmRlciBvZiB0aGlz
IGVudW0gbXVzdCBtYXRjaCB0aGUgb3JkZXIgb2YgdGhlIGxpc3Qgc3R5bGUgdHlwZXMgaW4gQ1NT
VmFsdWVLZXl3b3Jkcy5pbi4KLWVudW0gRUxpc3RTdHlsZVR5cGUgeworZW51bSBjbGFzcyBMaXN0
U3R5bGVUeXBlIHsKICAgICBEaXNjLAogICAgIENpcmNsZSwKICAgICBTcXVhcmUsCi0gICAgRGVj
aW1hbExpc3RTdHlsZSwKKyAgICBEZWNpbWFsLAogICAgIERlY2ltYWxMZWFkaW5nWmVybywKICAg
ICBBcmFiaWNJbmRpYywKLSAgICBCaW5hcnlMaXN0U3R5bGUsCisgICAgQmluYXJ5LAogICAgIEJl
bmdhbGksCiAgICAgQ2FtYm9kaWFuLAogICAgIEtobWVyLApAQCAtNjI0LDcgKzYyNiw3IEBAIGVu
dW0gRUxpc3RTdHlsZVR5cGUgewogICAgIEthdGFrYW5hLAogICAgIEhpcmFnYW5hSXJvaGEsCiAg
ICAgS2F0YWthbmFJcm9oYSwKLSAgICBOb25lTGlzdFN0eWxlCisgICAgTm9uZQogfTsKIAogZW51
bSBjbGFzcyBRdW90ZVR5cGUgewpAQCAtNjM0LDUwICs2MzYsNTAgQEAgZW51bSBjbGFzcyBRdW90
ZVR5cGUgewogICAgIE5vQ2xvc2VRdW90ZQogfTsKIAotZW51bSBFQm9yZGVyRml0IHsKLSAgICBC
b3JkZXJGaXRCb3JkZXIsCi0gICAgQm9yZGVyRml0TGluZXMKLX07Ci0KLWVudW0gRUFuaW1hdGlv
bkZpbGxNb2RlIHsKLSAgICBBbmltYXRpb25GaWxsTW9kZU5vbmUsCi0gICAgQW5pbWF0aW9uRmls
bE1vZGVGb3J3YXJkcywKLSAgICBBbmltYXRpb25GaWxsTW9kZUJhY2t3YXJkcywKLSAgICBBbmlt
YXRpb25GaWxsTW9kZUJvdGgKLX07Ci0KLWVudW0gRUFuaW1QbGF5U3RhdGUgewotICAgIEFuaW1Q
bGF5U3RhdGVQbGF5aW5nID0gMHgwLAotICAgIEFuaW1QbGF5U3RhdGVQYXVzZWQgPSAweDEKLX07
Ci0KLWVudW0gRVdoaXRlU3BhY2UgewotICAgIE5PUk1BTCwKLSAgICBQUkUsCi0gICAgUFJFX1dS
QVAsCi0gICAgUFJFX0xJTkUsCi0gICAgTk9XUkFQLAotICAgIEtIVE1MX05PV1JBUAorZW51bSBj
bGFzcyBCb3JkZXJGaXQgeworICAgIEJvcmRlciwKKyAgICBMaW5lcworfTsKKworZW51bSBjbGFz
cyBBbmltYXRpb25GaWxsTW9kZSB7CisgICAgTm9uZSwKKyAgICBGb3J3YXJkcywKKyAgICBCYWNr
d2FyZHMsCisgICAgQm90aAorfTsKKworZW51bSBjbGFzcyBBbmltYXRpb25QbGF5U3RhdGUgewor
ICAgIFBsYXlpbmcgPSAweDAsCisgICAgUGF1c2VkID0gMHgxCit9OworCitlbnVtIGNsYXNzIFdo
aXRlU3BhY2UgeworICAgIE5vcm1hbCwKKyAgICBQcmUsCisgICAgUHJlV3JhcCwKKyAgICBQcmVM
aW5lLAorICAgIE5vV3JhcCwKKyAgICBLSFRNTE5vV3JhcAogfTsKIAogLy8gVGhlIG9yZGVyIG9m
IHRoaXMgZW51bSBtdXN0IG1hdGNoIHRoZSBvcmRlciBvZiB0aGUgdGV4dCBhbGlnbiB2YWx1ZXMg
aW4gQ1NTVmFsdWVLZXl3b3Jkcy5pbi4KLWVudW0gRVRleHRBbGlnbiB7Ci0gICAgTEVGVCwKLSAg
ICBSSUdIVCwKLSAgICBDRU5URVIsCi0gICAgSlVTVElGWSwKLSAgICBXRUJLSVRfTEVGVCwKLSAg
ICBXRUJLSVRfUklHSFQsCi0gICAgV0VCS0lUX0NFTlRFUiwKLSAgICBUQVNUQVJULAotICAgIFRB
RU5ELAotfTsKLQotZW51bSBFVGV4dFRyYW5zZm9ybSB7Ci0gICAgQ0FQSVRBTElaRSwKLSAgICBV
UFBFUkNBU0UsCi0gICAgTE9XRVJDQVNFLAotICAgIFRUTk9ORQorZW51bSBjbGFzcyBUZXh0QWxp
Z25Nb2RlIHsKKyAgICBMZWZ0LAorICAgIFJpZ2h0LAorICAgIENlbnRlciwKKyAgICBKdXN0aWZ5
LAorICAgIFdlYktpdExlZnQsCisgICAgV2ViS2l0UmlnaHQsCisgICAgV2ViS2l0Q2VudGVyLAor
ICAgIFN0YXJ0LAorICAgIEVuZCwKK307CisKK2VudW0gY2xhc3MgVGV4dFRyYW5zZm9ybSB7Cisg
ICAgQ2FwaXRhbGl6ZSwKKyAgICBVcHBlcmNhc2UsCisgICAgTG93ZXJjYXNlLAorICAgIE5vbmUK
IH07CiAKICNpZiBFTkFCTEUoTEVUVEVSUFJFU1MpCkBAIC02ODYsMjE2ICs2ODgsMjE4IEBAIHN0
YXRpYyBjb25zdCBzaXplX3QgVGV4dERlY29yYXRpb25CaXRzID0KIHN0YXRpYyBjb25zdCBzaXpl
X3QgVGV4dERlY29yYXRpb25CaXRzID0gNDsKICNlbmRpZgogZW51bSBUZXh0RGVjb3JhdGlvbiB7
Ci0gICAgVGV4dERlY29yYXRpb25Ob25lID0gMHgwLAotICAgIFRleHREZWNvcmF0aW9uVW5kZXJs
aW5lID0gMHgxLAotICAgIFRleHREZWNvcmF0aW9uT3ZlcmxpbmUgPSAweDIsCi0gICAgVGV4dERl
Y29yYXRpb25MaW5lVGhyb3VnaCA9IDB4NCwKLSAgICBUZXh0RGVjb3JhdGlvbkJsaW5rID0gMHg4
LAorICAgIFRleHREZWNvcmF0aW9uTm9uZSAgICAgICAgICA9IDAsCisgICAgVGV4dERlY29yYXRp
b25VbmRlcmxpbmUgICAgID0gMSA8PCAwLAorICAgIFRleHREZWNvcmF0aW9uT3ZlcmxpbmUgICAg
ICA9IDEgPDwgMSwKKyAgICBUZXh0RGVjb3JhdGlvbkxpbmVUaHJvdWdoICAgPSAxIDw8IDIsCisg
ICAgVGV4dERlY29yYXRpb25CbGluayAgICAgICAgID0gMSA8PCAzLAogI2lmIEVOQUJMRShMRVRU
RVJQUkVTUykKLSAgICBUZXh0RGVjb3JhdGlvbkxldHRlcnByZXNzID0gMHgxMCwKKyAgICBUZXh0
RGVjb3JhdGlvbkxldHRlcnByZXNzICAgPSAxIDw8IDQsCiAjZW5kaWYKIH07CiBpbmxpbmUgVGV4
dERlY29yYXRpb24gb3BlcmF0b3J8KFRleHREZWNvcmF0aW9uIGEsIFRleHREZWNvcmF0aW9uIGIp
IHsgcmV0dXJuIFRleHREZWNvcmF0aW9uKGludChhKSB8IGludChiKSk7IH0KIGlubGluZSBUZXh0
RGVjb3JhdGlvbiYgb3BlcmF0b3J8PShUZXh0RGVjb3JhdGlvbiYgYSwgVGV4dERlY29yYXRpb24g
YikgeyByZXR1cm4gYSA9IGEgfCBiOyB9CiAKLWVudW0gVGV4dERlY29yYXRpb25TdHlsZSB7Ci0g
ICAgVGV4dERlY29yYXRpb25TdHlsZVNvbGlkLAotICAgIFRleHREZWNvcmF0aW9uU3R5bGVEb3Vi
bGUsCi0gICAgVGV4dERlY29yYXRpb25TdHlsZURvdHRlZCwKLSAgICBUZXh0RGVjb3JhdGlvblN0
eWxlRGFzaGVkLAotICAgIFRleHREZWNvcmF0aW9uU3R5bGVXYXZ5CitlbnVtIGNsYXNzIFRleHRE
ZWNvcmF0aW9uU3R5bGUgeworICAgIFNvbGlkLAorICAgIERvdWJsZSwKKyAgICBEb3R0ZWQsCisg
ICAgRGFzaGVkLAorICAgIFdhdnkKIH07CiAKICNpZiBFTkFCTEUoQ1NTM19URVhUKQotZW51bSBU
ZXh0QWxpZ25MYXN0IHsKLSAgICBUZXh0QWxpZ25MYXN0QXV0bywKLSAgICBUZXh0QWxpZ25MYXN0
U3RhcnQsCi0gICAgVGV4dEFsaWduTGFzdEVuZCwKLSAgICBUZXh0QWxpZ25MYXN0TGVmdCwKLSAg
ICBUZXh0QWxpZ25MYXN0UmlnaHQsCi0gICAgVGV4dEFsaWduTGFzdENlbnRlciwKLSAgICBUZXh0
QWxpZ25MYXN0SnVzdGlmeQorZW51bSBjbGFzcyBUZXh0QWxpZ25MYXN0IHsKKyAgICBBdXRvLAor
ICAgIFN0YXJ0LAorICAgIEVuZCwKKyAgICBMZWZ0LAorICAgIFJpZ2h0LAorICAgIENlbnRlciwK
KyAgICBKdXN0aWZ5CiB9OwogCi1lbnVtIFRleHRKdXN0aWZ5IHsKLSAgICBUZXh0SnVzdGlmeUF1
dG8sCi0gICAgVGV4dEp1c3RpZnlOb25lLAotICAgIFRleHRKdXN0aWZ5SW50ZXJXb3JkLAotICAg
IFRleHRKdXN0aWZ5RGlzdHJpYnV0ZQorZW51bSBjbGFzcyBUZXh0SnVzdGlmeSB7CisgICAgQXV0
bywKKyAgICBOb25lLAorICAgIEludGVyV29yZCwKKyAgICBEaXN0cmlidXRlCiB9OwogI2VuZGlm
IC8vIENTUzNfVEVYVAogCiBlbnVtIFRleHREZWNvcmF0aW9uU2tpcEl0ZW1zIHsKLSAgICBUZXh0
RGVjb3JhdGlvblNraXBOb25lID0gMCwKLSAgICBUZXh0RGVjb3JhdGlvblNraXBJbmsgPSAxIDw8
IDAsCi0gICAgVGV4dERlY29yYXRpb25Ta2lwT2JqZWN0cyA9IDEgPDwgMSwKLSAgICBUZXh0RGVj
b3JhdGlvblNraXBBdXRvID0gMSA8PCAyCisgICAgVGV4dERlY29yYXRpb25Ta2lwTm9uZSAgICAg
ID0gMCwKKyAgICBUZXh0RGVjb3JhdGlvblNraXBJbmsgICAgICAgPSAxIDw8IDAsCisgICAgVGV4
dERlY29yYXRpb25Ta2lwT2JqZWN0cyAgID0gMSA8PCAxLAorICAgIFRleHREZWNvcmF0aW9uU2tp
cEF1dG8gICAgICA9IDEgPDwgMgogfTsKIHR5cGVkZWYgdW5zaWduZWQgVGV4dERlY29yYXRpb25T
a2lwOwogCiBlbnVtIFRleHRVbmRlcmxpbmVQb3NpdGlvbiB7CiAgICAgLy8gRklYTUU6IEltcGxl
bWVudCBzdXBwb3J0IGZvciAndW5kZXIgbGVmdCcgYW5kICd1bmRlciByaWdodCcgdmFsdWVzLgot
ICAgIFRleHRVbmRlcmxpbmVQb3NpdGlvbkF1dG8gPSAweDEsCi0gICAgVGV4dFVuZGVybGluZVBv
c2l0aW9uQWxwaGFiZXRpYyA9IDB4MiwKLSAgICBUZXh0VW5kZXJsaW5lUG9zaXRpb25VbmRlciA9
IDB4NAotfTsKLQotZW51bSBUZXh0Wm9vbSB7Ci0gICAgVGV4dFpvb21Ob3JtYWwsCi0gICAgVGV4
dFpvb21SZXNldAotfTsKLQotZW51bSBCcmVha0JldHdlZW4gewotICAgIEF1dG9CcmVha0JldHdl
ZW4sCi0gICAgQXZvaWRCcmVha0JldHdlZW4sCi0gICAgQXZvaWRDb2x1bW5CcmVha0JldHdlZW4s
Ci0gICAgQXZvaWRQYWdlQnJlYWtCZXR3ZWVuLAotICAgIENvbHVtbkJyZWFrQmV0d2VlbiwKLSAg
ICBQYWdlQnJlYWtCZXR3ZWVuLAotICAgIExlZnRQYWdlQnJlYWtCZXR3ZWVuLAotICAgIFJpZ2h0
UGFnZUJyZWFrQmV0d2VlbiwKLSAgICBSZWN0b1BhZ2VCcmVha0JldHdlZW4sCi0gICAgVmVyc29Q
YWdlQnJlYWtCZXR3ZWVuCisgICAgVGV4dFVuZGVybGluZVBvc2l0aW9uQXV0byAgICAgICA9IDEg
PDwgMCwKKyAgICBUZXh0VW5kZXJsaW5lUG9zaXRpb25BbHBoYWJldGljID0gMSA8PCAxLAorICAg
IFRleHRVbmRlcmxpbmVQb3NpdGlvblVuZGVyICAgICAgPSAxIDw8IDIKK307CisKK2VudW0gY2xh
c3MgVGV4dFpvb20geworICAgIE5vcm1hbCwKKyAgICBSZXNldAorfTsKKworZW51bSBjbGFzcyBC
cmVha0JldHdlZW4geworICAgIEF1dG8sCisgICAgQXZvaWQsCisgICAgQXZvaWRDb2x1bW4sCisg
ICAgQXZvaWRQYWdlLAorICAgIENvbHVtbiwKKyAgICBQYWdlLAorICAgIExlZnRQYWdlLAorICAg
IFJpZ2h0UGFnZSwKKyAgICBSZWN0b1BhZ2UsCisgICAgVmVyc29QYWdlCiB9OwogYm9vbCBhbHdh
eXNQYWdlQnJlYWsoQnJlYWtCZXR3ZWVuKTsKICAgICAKLWVudW0gQnJlYWtJbnNpZGUgewotICAg
IEF1dG9CcmVha0luc2lkZSwKLSAgICBBdm9pZEJyZWFrSW5zaWRlLAotICAgIEF2b2lkQ29sdW1u
QnJlYWtJbnNpZGUsCi0gICAgQXZvaWRQYWdlQnJlYWtJbnNpZGUKK2VudW0gY2xhc3MgQnJlYWtJ
bnNpZGUgeworICAgIEF1dG8sCisgICAgQXZvaWQsCisgICAgQXZvaWRDb2x1bW4sCisgICAgQXZv
aWRQYWdlCiB9OwogCiBlbnVtIEhhbmdpbmdQdW5jdHVhdGlvbiB7Ci0gICAgTm9IYW5naW5nUHVu
Y3R1YXRpb24gPSAwLAotICAgIEZpcnN0SGFuZ2luZ1B1bmN0dWF0aW9uID0gMSA8PCAwLAotICAg
IExhc3RIYW5naW5nUHVuY3R1YXRpb24gPSAxIDw8IDEsCi0gICAgQWxsb3dFbmRIYW5naW5nUHVu
Y3R1YXRpb24gPSAxIDw8IDIsCi0gICAgRm9yY2VFbmRIYW5naW5nUHVuY3R1YXRpb24gPSAxIDw8
IDMKKyAgICBOb0hhbmdpbmdQdW5jdHVhdGlvbiAgICAgICAgPSAwLAorICAgIEZpcnN0SGFuZ2lu
Z1B1bmN0dWF0aW9uICAgICA9IDEgPDwgMCwKKyAgICBMYXN0SGFuZ2luZ1B1bmN0dWF0aW9uICAg
ICAgPSAxIDw8IDEsCisgICAgQWxsb3dFbmRIYW5naW5nUHVuY3R1YXRpb24gID0gMSA8PCAyLAor
ICAgIEZvcmNlRW5kSGFuZ2luZ1B1bmN0dWF0aW9uICA9IDEgPDwgMwogfTsKIGlubGluZSBIYW5n
aW5nUHVuY3R1YXRpb24gb3BlcmF0b3J8KEhhbmdpbmdQdW5jdHVhdGlvbiBhLCBIYW5naW5nUHVu
Y3R1YXRpb24gYikgeyByZXR1cm4gSGFuZ2luZ1B1bmN0dWF0aW9uKGludChhKSB8IGludChiKSk7
IH0KIGlubGluZSBIYW5naW5nUHVuY3R1YXRpb24mIG9wZXJhdG9yfD0oSGFuZ2luZ1B1bmN0dWF0
aW9uJiBhLCBIYW5naW5nUHVuY3R1YXRpb24gYikgeyByZXR1cm4gYSA9IGEgfCBiOyB9CiAKLWVu
dW0gRUVtcHR5Q2VsbCB7Ci0gICAgU0hPVywKLSAgICBISURFCitlbnVtIGNsYXNzIEVtcHR5Q2Vs
bCB7CisgICAgU2hvdywKKyAgICBIaWRlCiB9OwogCi1lbnVtIEVDYXB0aW9uU2lkZSB7Ci0gICAg
Q0FQVE9QLAotICAgIENBUEJPVFRPTSwKLSAgICBDQVBMRUZULAotICAgIENBUFJJR0hUCitlbnVt
IGNsYXNzIENhcHRpb25TaWRlIHsKKyAgICBUb3AsCisgICAgQm90dG9tLAorICAgIExlZnQsCisg
ICAgUmlnaHQKIH07CiAKLWVudW0gRUxpc3RTdHlsZVBvc2l0aW9uIHsKLSAgICBPVVRTSURFLAot
ICAgIElOU0lERQorZW51bSBjbGFzcyBMaXN0U3R5bGVQb3NpdGlvbiB7CisgICAgT3V0c2lkZSwK
KyAgICBJbnNpZGUKIH07CiAKLWVudW0gRVZpc2liaWxpdHkgewotICAgIFZJU0lCTEUsCi0gICAg
SElEREVOLAotICAgIENPTExBUFNFCitlbnVtIGNsYXNzIFZpc2liaWxpdHkgeworICAgIFZpc2li
bGUsCisgICAgSGlkZGVuLAorICAgIENvbGxhcHNlCiB9OwogCi1lbnVtIEVDdXJzb3IgeworV1RG
OjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFZpc2liaWxpdHkpOwor
CitlbnVtIGNsYXNzIEN1cnNvclR5cGUgewogICAgIC8vIFRoZSBmb2xsb3dpbmcgbXVzdCBtYXRj
aCB0aGUgb3JkZXIgaW4gQ1NTVmFsdWVLZXl3b3Jkcy5pbi4KLSAgICBDdXJzb3JBdXRvLAotICAg
IEN1cnNvckRlZmF1bHQsCi0gICAgLy8gQ3Vyc29yTm9uZQotICAgIEN1cnNvckNvbnRleHRNZW51
LAotICAgIEN1cnNvckhlbHAsCi0gICAgQ3Vyc29yUG9pbnRlciwKLSAgICBDdXJzb3JQcm9ncmVz
cywKLSAgICBDdXJzb3JXYWl0LAotICAgIEN1cnNvckNlbGwsCi0gICAgQ3Vyc29yQ3Jvc3NoYWly
LAotICAgIEN1cnNvclRleHQsCi0gICAgQ3Vyc29yVmVydGljYWxUZXh0LAotICAgIEN1cnNvckFs
aWFzLAotICAgIC8vIEN1cnNvckNvcHkKLSAgICBDdXJzb3JNb3ZlLAotICAgIEN1cnNvck5vRHJv
cCwKLSAgICBDdXJzb3JOb3RBbGxvd2VkLAotICAgIEN1cnNvckdyYWIsCi0gICAgQ3Vyc29yR3Jh
YmJpbmcsCi0gICAgQ3Vyc29yRVJlc2l6ZSwKLSAgICBDdXJzb3JOUmVzaXplLAotICAgIEN1cnNv
ck5lUmVzaXplLAotICAgIEN1cnNvck53UmVzaXplLAotICAgIEN1cnNvclNSZXNpemUsCi0gICAg
Q3Vyc29yU2VSZXNpemUsCi0gICAgQ3Vyc29yU3dSZXNpemUsCi0gICAgQ3Vyc29yV1Jlc2l6ZSwK
LSAgICBDdXJzb3JFd1Jlc2l6ZSwKLSAgICBDdXJzb3JOc1Jlc2l6ZSwKLSAgICBDdXJzb3JOZXN3
UmVzaXplLAotICAgIEN1cnNvck53c2VSZXNpemUsCi0gICAgQ3Vyc29yQ29sUmVzaXplLAotICAg
IEN1cnNvclJvd1Jlc2l6ZSwKLSAgICBDdXJzb3JBbGxTY3JvbGwsCi0gICAgQ3Vyc29yWm9vbUlu
LAotICAgIEN1cnNvclpvb21PdXQsCisgICAgQXV0bywKKyAgICBEZWZhdWx0LAorICAgIC8vIE5v
bmUKKyAgICBDb250ZXh0TWVudSwKKyAgICBIZWxwLAorICAgIFBvaW50ZXIsCisgICAgUHJvZ3Jl
c3MsCisgICAgV2FpdCwKKyAgICBDZWxsLAorICAgIENyb3NzaGFpciwKKyAgICBUZXh0LAorICAg
IFZlcnRpY2FsVGV4dCwKKyAgICBBbGlhcywKKyAgICAvLyBDb3B5CisgICAgTW92ZSwKKyAgICBO
b0Ryb3AsCisgICAgTm90QWxsb3dlZCwKKyAgICBHcmFiLAorICAgIEdyYWJiaW5nLAorICAgIEVS
ZXNpemUsCisgICAgTlJlc2l6ZSwKKyAgICBORVJlc2l6ZSwKKyAgICBOV1Jlc2l6ZSwKKyAgICBT
UmVzaXplLAorICAgIFNFUmVzaXplLAorICAgIFNXUmVzaXplLAorICAgIFdSZXNpemUsCisgICAg
RVdSZXNpemUsCisgICAgTlNSZXNpemUsCisgICAgTkVTV1Jlc2l6ZSwKKyAgICBOV1NFUmVzaXpl
LAorICAgIENvbHVtblJlc2l6ZSwKKyAgICBSb3dSZXNpemUsCisgICAgQWxsU2Nyb2xsLAorICAg
IFpvb21JbiwKKyAgICBab29tT3V0LAogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBhcmUgaGFuZGxl
ZCBhcyBleGNlcHRpb25zIHNvIGRvbid0IG5lZWQgdG8gbWF0Y2guCi0gICAgQ3Vyc29yQ29weSwK
LSAgICBDdXJzb3JOb25lCisgICAgQ29weSwKKyAgICBOb25lCiB9OwogCiAjaWYgRU5BQkxFKENV
UlNPUl9WSVNJQklMSVRZKQotZW51bSBDdXJzb3JWaXNpYmlsaXR5IHsKLSAgICBDdXJzb3JWaXNp
YmlsaXR5QXV0bywKLSAgICBDdXJzb3JWaXNpYmlsaXR5QXV0b0hpZGUsCitlbnVtIGNsYXNzIEN1
cnNvclZpc2liaWxpdHkgeworICAgIEF1dG8sCisgICAgQXV0b0hpZGUsCiB9OwogI2VuZGlmCiAK
IC8vIFRoZSBvcmRlciBvZiB0aGlzIGVudW0gbXVzdCBtYXRjaCB0aGUgb3JkZXIgb2YgdGhlIGRp
c3BsYXkgdmFsdWVzIGluIENTU1ZhbHVlS2V5d29yZHMuaW4uCi1lbnVtIEVEaXNwbGF5IHsKLSAg
ICBJTkxJTkUsCi0gICAgQkxPQ0ssCi0gICAgTElTVF9JVEVNLAotICAgIENPTVBBQ1QsCi0gICAg
SU5MSU5FX0JMT0NLLAotICAgIFRBQkxFLAotICAgIElOTElORV9UQUJMRSwKLSAgICBUQUJMRV9S
T1dfR1JPVVAsCi0gICAgVEFCTEVfSEVBREVSX0dST1VQLAotICAgIFRBQkxFX0ZPT1RFUl9HUk9V
UCwKLSAgICBUQUJMRV9ST1csCi0gICAgVEFCTEVfQ09MVU1OX0dST1VQLAotICAgIFRBQkxFX0NP
TFVNTiwKLSAgICBUQUJMRV9DRUxMLAotICAgIFRBQkxFX0NBUFRJT04sCi0gICAgQk9YLAotICAg
IElOTElORV9CT1gsCi0gICAgRkxFWCwKLSAgICBXRUJLSVRfRkxFWCwKLSAgICBJTkxJTkVfRkxF
WCwKLSAgICBXRUJLSVRfSU5MSU5FX0ZMRVgsCi0gICAgQ09OVEVOVFMsCi0gICAgR1JJRCwKLSAg
ICBJTkxJTkVfR1JJRCwKLSAgICBOT05FCi19OwotCi1lbnVtIEVJbnNpZGVMaW5rIHsKLSAgICBO
b3RJbnNpZGVMaW5rLAotICAgIEluc2lkZVVudmlzaXRlZExpbmssCi0gICAgSW5zaWRlVmlzaXRl
ZExpbmsKK2VudW0gY2xhc3MgRGlzcGxheVR5cGUgeworICAgIElubGluZSwKKyAgICBCbG9jaywK
KyAgICBMaXN0SXRlbSwKKyAgICBDb21wYWN0LAorICAgIElubGluZUJsb2NrLAorICAgIFRhYmxl
LAorICAgIElubGluZVRhYmxlLAorICAgIFRhYmxlUm93R3JvdXAsCisgICAgVGFibGVIZWFkZXJH
cm91cCwKKyAgICBUYWJsZUZvb3Rlckdyb3VwLAorICAgIFRhYmxlUm93LAorICAgIFRhYmxlQ29s
dW1uR3JvdXAsCisgICAgVGFibGVDb2x1bW4sCisgICAgVGFibGVDZWxsLAorICAgIFRhYmxlQ2Fw
dGlvbiwKKyAgICBCb3gsCisgICAgSW5saW5lQm94LAorICAgIEZsZXgsCisgICAgV2ViS2l0Rmxl
eCwKKyAgICBJbmxpbmVGbGV4LAorICAgIFdlYktpdElubGluZUZsZXgsCisgICAgQ29udGVudHMs
CisgICAgR3JpZCwKKyAgICBJbmxpbmVHcmlkLAorICAgIE5vbmUKK307CisKK2VudW0gY2xhc3Mg
SW5zaWRlTGluayB7CisgICAgTm90SW5zaWRlLAorICAgIEluc2lkZVVudmlzaXRlZCwKKyAgICBJ
bnNpZGVWaXNpdGVkCiB9OwogICAgIAotZW51bSBFUG9pbnRlckV2ZW50cyB7Ci0gICAgUEVfTk9O
RSwKLSAgICBQRV9BVVRPLAotICAgIFBFX1NUUk9LRSwKLSAgICBQRV9GSUxMLAotICAgIFBFX1BB
SU5URUQsCi0gICAgUEVfVklTSUJMRSwKLSAgICBQRV9WSVNJQkxFX1NUUk9LRSwKLSAgICBQRV9W
SVNJQkxFX0ZJTEwsCi0gICAgUEVfVklTSUJMRV9QQUlOVEVELAotICAgIFBFX0FMTAorZW51bSBj
bGFzcyBQb2ludGVyRXZlbnRzIHsKKyAgICBOb25lLAorICAgIEF1dG8sCisgICAgU3Ryb2tlLAor
ICAgIEZpbGwsCisgICAgUGFpbnRlZCwKKyAgICBWaXNpYmxlLAorICAgIFZpc2libGVTdHJva2Us
CisgICAgVmlzaWJsZUZpbGwsCisgICAgVmlzaWJsZVBhaW50ZWQsCisgICAgQWxsCiB9OwogCiBl
bnVtIGNsYXNzIFRyYW5zZm9ybVN0eWxlM0QgewpAQCAtOTE5LDQyICs5MjMsNDIgQEAgZW51bSBj
bGFzcyBMaW5lQ2xhbXAgewogICAgIFBlcmNlbnRhZ2UKIH07CiAKLWVudW0gSHlwaGVucyB7Ci0g
ICAgSHlwaGVuc05vbmUsCi0gICAgSHlwaGVuc01hbnVhbCwKLSAgICBIeXBoZW5zQXV0bworZW51
bSBjbGFzcyBIeXBoZW5zIHsKKyAgICBOb25lLAorICAgIE1hbnVhbCwKKyAgICBBdXRvCiB9Owog
CiBlbnVtIEVTcGVha0FzIHsKLSAgICBTcGVha05vcm1hbCA9IDAsCi0gICAgU3BlYWtTcGVsbE91
dCA9IDEgPDwgMCwKLSAgICBTcGVha0RpZ2l0cyA9IDEgPDwgMSwKKyAgICBTcGVha05vcm1hbCAg
ICAgICAgICAgICA9IDAsCisgICAgU3BlYWtTcGVsbE91dCAgICAgICAgICAgPSAxIDw8IDAsCisg
ICAgU3BlYWtEaWdpdHMgICAgICAgICAgICAgPSAxIDw8IDEsCiAgICAgU3BlYWtMaXRlcmFsUHVu
Y3R1YXRpb24gPSAxIDw8IDIsCi0gICAgU3BlYWtOb1B1bmN0dWF0aW9uID0gMSA8PCAzCisgICAg
U3BlYWtOb1B1bmN0dWF0aW9uICAgICAgPSAxIDw8IDMKIH07CiBpbmxpbmUgRVNwZWFrQXMgb3Bl
cmF0b3J8KEVTcGVha0FzIGEsIEVTcGVha0FzIGIpIHsgcmV0dXJuIEVTcGVha0FzKGludChhKSB8
IGludChiKSk7IH0KIGlubGluZSBFU3BlYWtBcyYgb3BlcmF0b3J8PShFU3BlYWtBcyYgYSwgRVNw
ZWFrQXMgYikgeyByZXR1cm4gYSA9IGEgfCBiOyB9CiAKLWVudW0gVGV4dEVtcGhhc2lzRmlsbCB7
Ci0gICAgVGV4dEVtcGhhc2lzRmlsbEZpbGxlZCwKLSAgICBUZXh0RW1waGFzaXNGaWxsT3Blbgor
ZW51bSBjbGFzcyBUZXh0RW1waGFzaXNGaWxsIHsKKyAgICBGaWxsZWQsCisgICAgT3BlbgogfTsK
IAotZW51bSBUZXh0RW1waGFzaXNNYXJrIHsKLSAgICBUZXh0RW1waGFzaXNNYXJrTm9uZSwKLSAg
ICBUZXh0RW1waGFzaXNNYXJrQXV0bywKLSAgICBUZXh0RW1waGFzaXNNYXJrRG90LAotICAgIFRl
eHRFbXBoYXNpc01hcmtDaXJjbGUsCi0gICAgVGV4dEVtcGhhc2lzTWFya0RvdWJsZUNpcmNsZSwK
LSAgICBUZXh0RW1waGFzaXNNYXJrVHJpYW5nbGUsCi0gICAgVGV4dEVtcGhhc2lzTWFya1Nlc2Ft
ZSwKLSAgICBUZXh0RW1waGFzaXNNYXJrQ3VzdG9tCitlbnVtIGNsYXNzIFRleHRFbXBoYXNpc01h
cmsgeworICAgIE5vbmUsCisgICAgQXV0bywKKyAgICBEb3QsCisgICAgQ2lyY2xlLAorICAgIERv
dWJsZUNpcmNsZSwKKyAgICBUcmlhbmdsZSwKKyAgICBTZXNhbWUsCisgICAgQ3VzdG9tCiB9Owog
CiBlbnVtIFRleHRFbXBoYXNpc1Bvc2l0aW9ucyB7Ci0gICAgVGV4dEVtcGhhc2lzUG9zaXRpb25P
dmVyID0gMSA8PCAwLAorICAgIFRleHRFbXBoYXNpc1Bvc2l0aW9uT3ZlciAgPSAxIDw8IDAsCiAg
ICAgVGV4dEVtcGhhc2lzUG9zaXRpb25VbmRlciA9IDEgPDwgMSwKLSAgICBUZXh0RW1waGFzaXNQ
b3NpdGlvbkxlZnQgPSAxIDw8IDIsCisgICAgVGV4dEVtcGhhc2lzUG9zaXRpb25MZWZ0ICA9IDEg
PDwgMiwKICAgICBUZXh0RW1waGFzaXNQb3NpdGlvblJpZ2h0ID0gMSA8PCAzCiB9OwogdHlwZWRl
ZiB1bnNpZ25lZCBUZXh0RW1waGFzaXNQb3NpdGlvbjsKQEAgLTk4MCw1OCArOTg0LDU4IEBAIGVu
dW0gY2xhc3MgSW1hZ2VSZW5kZXJpbmcgewogCiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
V1RGOjpUZXh0U3RyZWFtJiwgSW1hZ2VSZW5kZXJpbmcpOwogCi1lbnVtIEltYWdlUmVzb2x1dGlv
blNvdXJjZSB7Ci0gICAgSW1hZ2VSZXNvbHV0aW9uU3BlY2lmaWVkID0gMCwKLSAgICBJbWFnZVJl
c29sdXRpb25Gcm9tSW1hZ2UKK2VudW0gY2xhc3MgSW1hZ2VSZXNvbHV0aW9uU291cmNlIHsKKyAg
ICBTcGVjaWZpZWQgPSAwLAorICAgIEZyb21JbWFnZQogfTsKIAotZW51bSBJbWFnZVJlc29sdXRp
b25TbmFwIHsKLSAgICBJbWFnZVJlc29sdXRpb25Ob1NuYXAgPSAwLAotICAgIEltYWdlUmVzb2x1
dGlvblNuYXBQaXhlbHMKK2VudW0gY2xhc3MgSW1hZ2VSZXNvbHV0aW9uU25hcCB7CisgICAgTm9u
ZSA9IDAsCisgICAgUGl4ZWxzCiB9OwogCi1lbnVtIE9yZGVyIHsKLSAgICBMb2dpY2FsT3JkZXIg
PSAwLAotICAgIFZpc3VhbE9yZGVyCitlbnVtIGNsYXNzIE9yZGVyIHsKKyAgICBMb2dpY2FsID0g
MCwKKyAgICBWaXN1YWwKIH07CiAKLWVudW0gQ29sdW1uQXhpcyB7Ci0gICAgSG9yaXpvbnRhbENv
bHVtbkF4aXMsCi0gICAgVmVydGljYWxDb2x1bW5BeGlzLAotICAgIEF1dG9Db2x1bW5BeGlzCitl
bnVtIGNsYXNzIENvbHVtbkF4aXMgeworICAgIEhvcml6b250YWwsCisgICAgVmVydGljYWwsCisg
ICAgQXV0bwogfTsKIAotZW51bSBDb2x1bW5Qcm9ncmVzc2lvbiB7Ci0gICAgTm9ybWFsQ29sdW1u
UHJvZ3Jlc3Npb24sCi0gICAgUmV2ZXJzZUNvbHVtblByb2dyZXNzaW9uCitlbnVtIGNsYXNzIENv
bHVtblByb2dyZXNzaW9uIHsKKyAgICBOb3JtYWwsCisgICAgUmV2ZXJzZQogfTsKIAotZW51bSBM
aW5lU25hcCB7Ci0gICAgTGluZVNuYXBOb25lLAotICAgIExpbmVTbmFwQmFzZWxpbmUsCi0gICAg
TGluZVNuYXBDb250YWluCitlbnVtIGNsYXNzIExpbmVTbmFwIHsKKyAgICBOb25lLAorICAgIEJh
c2VsaW5lLAorICAgIENvbnRhaW4KIH07CiAKLWVudW0gTGluZUFsaWduIHsKLSAgICBMaW5lQWxp
Z25Ob25lLAotICAgIExpbmVBbGlnbkVkZ2VzCitlbnVtIGNsYXNzIExpbmVBbGlnbiB7CisgICAg
Tm9uZSwKKyAgICBFZGdlcwogfTsKIAotZW51bSBSdWJ5UG9zaXRpb24gewotICAgIFJ1YnlQb3Np
dGlvbkJlZm9yZSwKLSAgICBSdWJ5UG9zaXRpb25BZnRlciwKLSAgICBSdWJ5UG9zaXRpb25JbnRl
ckNoYXJhY3RlcgorZW51bSBjbGFzcyBSdWJ5UG9zaXRpb24geworICAgIEJlZm9yZSwKKyAgICBB
ZnRlciwKKyAgICBJbnRlckNoYXJhY3RlcgogfTsKIAogc3RhdGljIGNvbnN0IHNpemVfdCBHcmlk
QXV0b0Zsb3dCaXRzID0gNDsKIGVudW0gSW50ZXJuYWxHcmlkQXV0b0Zsb3dBbGdvcml0aG0gewot
ICAgIEludGVybmFsQXV0b0Zsb3dBbGdvcml0aG1TcGFyc2UgPSAweDEsCi0gICAgSW50ZXJuYWxB
dXRvRmxvd0FsZ29yaXRobURlbnNlID0gMHgyLAorICAgIEludGVybmFsQXV0b0Zsb3dBbGdvcml0
aG1TcGFyc2UgPSAxIDw8IDAsCisgICAgSW50ZXJuYWxBdXRvRmxvd0FsZ29yaXRobURlbnNlICA9
IDEgPDwgMSwKIH07CiAKIGVudW0gSW50ZXJuYWxHcmlkQXV0b0Zsb3dEaXJlY3Rpb24gewotICAg
IEludGVybmFsQXV0b0Zsb3dEaXJlY3Rpb25Sb3cgPSAweDQsCi0gICAgSW50ZXJuYWxBdXRvRmxv
d0RpcmVjdGlvbkNvbHVtbiA9IDB4OAorICAgIEludGVybmFsQXV0b0Zsb3dEaXJlY3Rpb25Sb3cg
ICAgPSAxIDw8IDIsCisgICAgSW50ZXJuYWxBdXRvRmxvd0RpcmVjdGlvbkNvbHVtbiA9IDEgPDwg
MwogfTsKIAogZW51bSBHcmlkQXV0b0Zsb3cgewpAQCAtMTA0MSwxMCArMTA0NSwxMCBAQCBlbnVt
IEdyaWRBdXRvRmxvdyB7CiAgICAgQXV0b0Zsb3dDb2x1bW5EZW5zZSA9IEludGVybmFsQXV0b0Zs
b3dBbGdvcml0aG1EZW5zZSB8IEludGVybmFsQXV0b0Zsb3dEaXJlY3Rpb25Db2x1bW4KIH07CiAK
LWVudW0gQXV0b1JlcGVhdFR5cGUgewotICAgIE5vQXV0b1JlcGVhdCwKLSAgICBBdXRvRmlsbCwK
LSAgICBBdXRvRml0CitlbnVtIGNsYXNzIEF1dG9SZXBlYXRUeXBlIHsKKyAgICBOb25lLAorICAg
IEZpbGwsCisgICAgRml0CiB9OwogCiAvLyBSZWFzb25hYmxlIG1heGltdW0gdG8gcHJldmVudCBp
bnNhbmUgZm9udCBzaXplcyBmcm9tIGNhdXNpbmcgY3Jhc2hlcyBvbiBzb21lIHBsYXRmb3JtcyAo
c3VjaCBhcyBXaW5kb3dzKS4KQEAgLTEwNzAsNyArMTA3NCw3IEBAIGVudW0gY2xhc3MgSXNvbGF0
aW9uIHsKIH07CiAKIC8vIEZpbGwsIFN0cm9rZSwgVmlld0JveCBhcmUganVzdCB1c2VkIGZvciBT
VkcuCi1lbnVtIENTU0JveFR5cGUgeworZW51bSBjbGFzcyBDU1NCb3hUeXBlIHsKICAgICBCb3hN
aXNzaW5nID0gMCwKICAgICBNYXJnaW5Cb3gsCiAgICAgQm9yZGVyQm94LApJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oCShyZXZpc2lvbiAyMzIxMDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgVHlwZSBtX3R5cGU7CiAgICAg
UmVmUHRyPEJhc2ljU2hhcGU+IG1fc2hhcGU7CiAgICAgUmVmUHRyPFN0eWxlSW1hZ2U+IG1faW1h
Z2U7Ci0gICAgQ1NTQm94VHlwZSBtX2Nzc0JveCB7IEJveE1pc3NpbmcgfTsKKyAgICBDU1NCb3hU
eXBlIG1fY3NzQm94IHsgQ1NTQm94VHlwZTo6Qm94TWlzc2luZyB9OwogfTsKIAogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERh
dGEuY3BwCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVNdWx0aUNvbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiw4IEBA
IFN0eWxlTXVsdGlDb2xEYXRhOjpTdHlsZU11bHRpQ29sRGF0YSgpCiAgICAgLCBhdXRvQ291bnQo
dHJ1ZSkKICAgICAsIGZpbGwoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0
aWFsQ29sdW1uRmlsbCgpKSkKICAgICAsIGNvbHVtblNwYW4oZmFsc2UpCi0gICAgLCBheGlzKFJl
bmRlclN0eWxlOjppbml0aWFsQ29sdW1uQXhpcygpKQotICAgICwgcHJvZ3Jlc3Npb24oUmVuZGVy
U3R5bGU6OmluaXRpYWxDb2x1bW5Qcm9ncmVzc2lvbigpKQorICAgICwgYXhpcyhzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUmVuZGVyU3R5bGU6OmluaXRpYWxDb2x1bW5BeGlzKCkpKQorICAgICwgcHJv
Z3Jlc3Npb24oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFsQ29sdW1u
UHJvZ3Jlc3Npb24oKSkpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAJKHJldmlzaW9u
IDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhl
cml0ZWREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcsMTEgKzg3LDExIEBAIFN0eWxlUmFy
ZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXQKICAgICAsIG5ic3BNb2RlKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihOQlNQTW9kZTo6Tm9ybWFsKSkKICAgICAsIGxpbmVCcmVhayhzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oTGluZUJyZWFrOjpBdXRvKSkKICAgICAsIHVzZXJTZWxlY3Qoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFsVXNlclNlbGVjdCgpKSkKLSAgICAs
IHNwZWFrQXMoU3BlYWtOb3JtYWwpCi0gICAgLCBoeXBoZW5zKEh5cGhlbnNNYW51YWwpCi0gICAg
LCB0ZXh0RW1waGFzaXNGaWxsKFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQpCi0gICAgLCB0ZXh0RW1w
aGFzaXNNYXJrKFRleHRFbXBoYXNpc01hcmtOb25lKQotICAgICwgdGV4dEVtcGhhc2lzUG9zaXRp
b24oVGV4dEVtcGhhc2lzUG9zaXRpb25PdmVyIHwgVGV4dEVtcGhhc2lzUG9zaXRpb25SaWdodCkK
KyAgICAsIHNwZWFrQXMoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFNwZWFrTm9ybWFsKSkKKyAgICAs
IGh5cGhlbnMoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEh5cGhlbnM6Ok1hbnVhbCkpCisgICAgLCB0
ZXh0RW1waGFzaXNGaWxsKHN0YXRpY19jYXN0PHVuc2lnbmVkPihUZXh0RW1waGFzaXNGaWxsOjpG
aWxsZWQpKQorICAgICwgdGV4dEVtcGhhc2lzTWFyayhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVGV4
dEVtcGhhc2lzTWFyazo6Tm9uZSkpCisgICAgLCB0ZXh0RW1waGFzaXNQb3NpdGlvbihzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oVGV4dEVtcGhhc2lzUG9zaXRpb25PdmVyIHwgVGV4dEVtcGhhc2lzUG9z
aXRpb25SaWdodCkpCiAgICAgLCB0ZXh0T3JpZW50YXRpb24oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFRleHRPcmllbnRhdGlvbjo6TWl4ZWQpKQogI2lmIEVOQUJMRShDU1MzX1RFWFQpCiAgICAgLCB0
ZXh0SW5kZW50TGluZShSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRJbmRlbnRMaW5lKCkpCkBAIC0x
MDIsOCArMTAyLDggQEAgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdAog
ICAgICwgaW1hZ2VPcmllbnRhdGlvbihSZW5kZXJTdHlsZTo6aW5pdGlhbEltYWdlT3JpZW50YXRp
b24oKSkKICNlbmRpZgogICAgICwgaW1hZ2VSZW5kZXJpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VSZW5kZXJpbmcoKSkpCi0gICAgLCBsaW5lU25hcChS
ZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVTbmFwKCkpCi0gICAgLCBsaW5lQWxpZ24oUmVuZGVyU3R5
bGU6OmluaXRpYWxMaW5lQWxpZ24oKSkKKyAgICAsIGxpbmVTbmFwKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVTbmFwKCkpKQorICAgICwgbGluZUFsaWduKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVBbGlnbigpKSkKICNp
ZiBFTkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKQogICAgICwgdXNlVG91Y2hP
dmVyZmxvd1Njcm9sbGluZyhSZW5kZXJTdHlsZTo6aW5pdGlhbFVzZVRvdWNoT3ZlcmZsb3dTY3Jv
bGxpbmcoKSkKICNlbmRpZgpAQCAtMTE3LDggKzExNyw4IEBAIFN0eWxlUmFyZUluaGVyaXRlZERh
dGE6OlN0eWxlUmFyZUluaGVyaXQKICNlbmRpZgogICAgICwgdGV4dERlY29yYXRpb25Ta2lwKFJl
bmRlclN0eWxlOjppbml0aWFsVGV4dERlY29yYXRpb25Ta2lwKCkpCiAgICAgLCB0ZXh0VW5kZXJs
aW5lUG9zaXRpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0VW5kZXJsaW5lUG9zaXRpb24oKSkK
LSAgICAsIHJ1YnlQb3NpdGlvbihSZW5kZXJTdHlsZTo6aW5pdGlhbFJ1YnlQb3NpdGlvbigpKQot
ICAgICwgdGV4dFpvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0Wm9vbSgpKQorICAgICwgcnVi
eVBvc2l0aW9uKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZW5kZXJTdHlsZTo6aW5pdGlhbFJ1YnlQ
b3NpdGlvbigpKSkKKyAgICAsIHRleHRab29tKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZW5kZXJT
dHlsZTo6aW5pdGlhbFRleHRab29tKCkpKQogI2lmIFBMQVRGT1JNKElPUykKICAgICAsIHRvdWNo
Q2FsbG91dEVuYWJsZWQoUmVuZGVyU3R5bGU6OmluaXRpYWxUb3VjaENhbGxvdXRFbmFibGVkKCkp
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAJKHJldmlzaW9uIDIzMjEwNCkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWRE
YXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsMTAgKzg2LDEwIEBAIFN0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkkKICAgICAsIHRleHRPdmVyZmxvdyhzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0T3ZlcmZsb3coKSkpCiAgICAgLCBt
YXJnaW5CZWZvcmVDb2xsYXBzZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTWFyZ2luQ29sbGFwc2U6
OkNvbGxhcHNlKSkKICAgICAsIG1hcmdpbkFmdGVyQ29sbGFwc2Uoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KE1hcmdpbkNvbGxhcHNlOjpDb2xsYXBzZSkpCi0gICAgLCBhcHBlYXJhbmNlKFJlbmRlclN0
eWxlOjppbml0aWFsQXBwZWFyYW5jZSgpKQotICAgICwgYm9yZGVyRml0KFJlbmRlclN0eWxlOjpp
bml0aWFsQm9yZGVyRml0KCkpCisgICAgLCBhcHBlYXJhbmNlKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihSZW5kZXJTdHlsZTo6aW5pdGlhbEFwcGVhcmFuY2UoKSkpCisgICAgLCBib3JkZXJGaXQoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyRml0KCkpKQogICAg
ICwgdGV4dENvbWJpbmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFs
VGV4dENvbWJpbmUoKSkpCi0gICAgLCB0ZXh0RGVjb3JhdGlvblN0eWxlKFJlbmRlclN0eWxlOjpp
bml0aWFsVGV4dERlY29yYXRpb25TdHlsZSgpKQorICAgICwgdGV4dERlY29yYXRpb25TdHlsZShz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvblN0
eWxlKCkpKQogICAgICwgYXNwZWN0UmF0aW9UeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZW5k
ZXJTdHlsZTo6aW5pdGlhbEFzcGVjdFJhdGlvVHlwZSgpKSkKICNpZiBFTkFCTEUoQ1NTX0NPTVBP
U0lUSU5HKQogICAgICwgZWZmZWN0aXZlQmxlbmRNb2RlKFJlbmRlclN0eWxlOjppbml0aWFsQmxl
bmRNb2RlKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJl
Tm9uSW5oZXJpdGVkRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgJKHJldmlzaW9uIDIzMjEwNCkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw3ICsxODUsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWdu
ZWQgbWFyZ2luQmVmb3JlQ29sbGFwc2UgOiAyOyAvLyBNYXJnaW5Db2xsYXBzZQogICAgIHVuc2ln
bmVkIG1hcmdpbkFmdGVyQ29sbGFwc2UgOiAyOyAvLyBNYXJnaW5Db2xsYXBzZQogICAgIHVuc2ln
bmVkIGFwcGVhcmFuY2UgOiA2OyAvLyBFQXBwZWFyYW5jZQotICAgIHVuc2lnbmVkIGJvcmRlckZp
dCA6IDE7IC8vIEVCb3JkZXJGaXQKKyAgICB1bnNpZ25lZCBib3JkZXJGaXQgOiAxOyAvLyBCb3Jk
ZXJGaXQKICAgICB1bnNpZ25lZCB0ZXh0Q29tYmluZSA6IDE7IC8vIENTUzMgdGV4dC1jb21iaW5l
IHByb3BlcnRpZXMKIAogICAgIHVuc2lnbmVkIHRleHREZWNvcmF0aW9uU3R5bGUgOiAzOyAvLyBU
ZXh0RGVjb3JhdGlvblN0eWxlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0NvbnRhaW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6cGFpbnQo
UGFpbnRJbmZvCiAgICAgLy8gb3V0bGluZSByZWN0IGludG8gcGFyZW50IGNvb3JkcyBiZWZvcmUg
ZHJhd2luZy4KICAgICAvLyBGSVhNRTogVGhpcyBtZWFucyBvdXIgZm9jdXMgcmluZyB3b24ndCBz
aGFyZSBvdXIgcm90YXRpb24gbGlrZSBpdCBzaG91bGQuCiAgICAgLy8gV2Ugc2hvdWxkIGluc3Rl
YWQgZGlzYWJsZSBvdXIgY2xpcCBkdXJpbmcgUGFpbnRQaGFzZU91dGxpbmUKLSAgICBpZiAocGFp
bnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VTZWxmT3V0bGluZSAmJiBzdHlsZSgpLm91dGxpbmVX
aWR0aCgpICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUpIHsKKyAgICBpZiAocGFp
bnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VTZWxmT3V0bGluZSAmJiBzdHlsZSgpLm91dGxpbmVX
aWR0aCgpICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUpIHsK
ICAgICAgICAgSW50UmVjdCBwYWludFJlY3RJblBhcmVudCA9IGVuY2xvc2luZ0ludFJlY3QobG9j
YWxUb1BhcmVudFRyYW5zZm9ybSgpLm1hcFJlY3QocmVwYWludFJlY3QpKTsKICAgICAgICAgcGFp
bnRPdXRsaW5lKHBhaW50SW5mbywgcGFpbnRSZWN0SW5QYXJlbnQpOwogICAgIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCShyZXZp
c2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lt
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgUmVuZGVyU1ZH
SW1hZ2U6OmxheW91dCgpCiB2b2lkIFJlbmRlclNWR0ltYWdlOjpwYWludChQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogewogICAgIGlmIChwYWludEluZm8uY29udGV4
dCgpLnBhaW50aW5nRGlzYWJsZWQoKSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZv
cmVncm91bmQKLSAgICAgICAgfHwgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gSElEREVOIHx8ICFp
bWFnZVJlc291cmNlKCkuY2FjaGVkSW1hZ2UoKSkKKyAgICAgICAgfHwgc3R5bGUoKS52aXNpYmls
aXR5KCkgPT0gVmlzaWJpbGl0eTo6SGlkZGVuIHx8ICFpbWFnZVJlc291cmNlKCkuY2FjaGVkSW1h
Z2UoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94ID0gcmVw
YWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKTsKQEAgLTE5Miw3ICsxOTIsNyBAQCBib29sIFJl
bmRlclNWR0ltYWdlOjpub2RlQXRGbG9hdFBvaW50KGNvCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIFBvaW50ZXJFdmVudHNIaXRSdWxlcyBoaXRSdWxlcyhQb2ludGVyRXZlbnRzSGl0UnVs
ZXM6OlNWR19JTUFHRV9ISVRURVNUSU5HLCByZXF1ZXN0LCBzdHlsZSgpLnBvaW50ZXJFdmVudHMo
KSk7Ci0gICAgYm9vbCBpc1Zpc2libGUgPSAoc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJM
RSk7CisgICAgYm9vbCBpc1Zpc2libGUgPSAoc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJp
bGl0eTo6VmlzaWJsZSk7CiAgICAgaWYgKGlzVmlzaWJsZSB8fCAhaGl0UnVsZXMucmVxdWlyZVZp
c2libGUpIHsKICAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRy
YW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQo
cG9pbnRJblBhcmVudCk7CiAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcAkocmV2aXNpb24gMjMy
MTA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsOCArOTEsOCBAQCB2b2lkIFJlbmRlclNWR0lubGlu
ZVRleHQ6OnN0eWxlRGlkQ2hhbmdlCiAgICAgUmVuZGVyVGV4dDo6c3R5bGVEaWRDaGFuZ2UoZGlm
Ziwgb2xkU3R5bGUpOwogICAgIHVwZGF0ZVNjYWxlZEZvbnQoKTsKIAotICAgIGJvb2wgbmV3UHJl
c2VydmVzID0gc3R5bGUoKS53aGl0ZVNwYWNlKCkgPT0gUFJFOwotICAgIGJvb2wgb2xkUHJlc2Vy
dmVzID0gb2xkU3R5bGUgPyBvbGRTdHlsZS0+d2hpdGVTcGFjZSgpID09IFBSRSA6IGZhbHNlOwor
ICAgIGJvb2wgbmV3UHJlc2VydmVzID0gc3R5bGUoKS53aGl0ZVNwYWNlKCkgPT0gV2hpdGVTcGFj
ZTo6UHJlOworICAgIGJvb2wgb2xkUHJlc2VydmVzID0gb2xkU3R5bGUgPyBvbGRTdHlsZS0+d2hp
dGVTcGFjZSgpID09IFdoaXRlU3BhY2U6OlByZSA6IGZhbHNlOwogICAgIGlmIChvbGRQcmVzZXJ2
ZXMgJiYgIW5ld1ByZXNlcnZlcykgewogICAgICAgICBzZXRUZXh0KGFwcGx5U1ZHV2hpdGVzcGFj
ZVJ1bGVzKG9yaWdpbmFsVGV4dCgpLCBmYWxzZSksIHRydWUpOwogICAgICAgICByZXR1cm47Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01v
ZGVsT2JqZWN0LmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw3
ICsxNjgsNyBAQCB2b2lkIFJlbmRlclNWR01vZGVsT2JqZWN0OjphYnNvbHV0ZUZvY3VzCiAgICAg
CiBib29sIFJlbmRlclNWR01vZGVsT2JqZWN0OjpjaGVja0ludGVyc2VjdGlvbihSZW5kZXJFbGVt
ZW50KiByZW5kZXJlciwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGlmICghcmVuZGVy
ZXIgfHwgcmVuZGVyZXItPnN0eWxlKCkucG9pbnRlckV2ZW50cygpID09IFBFX05PTkUpCisgICAg
aWYgKCFyZW5kZXJlciB8fCByZW5kZXJlci0+c3R5bGUoKS5wb2ludGVyRXZlbnRzKCkgPT0gUG9p
bnRlckV2ZW50czo6Tm9uZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghaXNHcmFw
aGljc0VsZW1lbnQoKnJlbmRlcmVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTgxLDcg
KzE4MSw3IEBAIGJvb2wgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmNoZWNrSW50ZXJzZWMKIAogYm9v
bCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6Y2hlY2tFbmNsb3N1cmUoUmVuZGVyRWxlbWVudCogcmVu
ZGVyZXIsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBpZiAoIXJlbmRlcmVyIHx8IHJl
bmRlcmVyLT5zdHlsZSgpLnBvaW50ZXJFdmVudHMoKSA9PSBQRV9OT05FKQorICAgIGlmICghcmVu
ZGVyZXIgfHwgcmVuZGVyZXItPnN0eWxlKCkucG9pbnRlckV2ZW50cygpID09IFBvaW50ZXJFdmVu
dHM6Ok5vbmUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWlzR3JhcGhpY3NFbGVt
ZW50KCpyZW5kZXJlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2UuY3BwCShyZXZpc2lv
biAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBzdGF0aWMgaW5saW5lIFJl
bmRlclNWR1Jlc291cmNlKiByZXF1ZXN0CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGlm
IChzdHlsZS5pbnNpZGVMaW5rKCkgPT0gSW5zaWRlVmlzaXRlZExpbmspIHsKKyAgICBpZiAoc3R5
bGUuaW5zaWRlTGluaygpID09IEluc2lkZUxpbms6Okluc2lkZVZpc2l0ZWQpIHsKICAgICAgICAg
Ly8gRklYTUU6IFRoaXMgY29kZSBkb2Vzbid0IHN1cHBvcnQgdGhlIHVyaSBjb21wb25lbnQgb2Yg
dGhlIHZpc2l0ZWQgbGluayBwYWludCwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTcwMDA2CiAgICAgICAgIFNWR1BhaW50VHlwZSB2aXNpdGVkUGFpbnRUeXBlID0gYXBw
bHlUb0ZpbGwgPyBzdmdTdHlsZS52aXNpdGVkTGlua0ZpbGxQYWludFR5cGUoKSA6IHN2Z1N0eWxl
LnZpc2l0ZWRMaW5rU3Ryb2tlUGFpbnRUeXBlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAJ
KHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBAQCBi
b29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6cGF0aE9ubHlDCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgU1ZHR3JhcGhpY3NFbGVtZW50JiBzdHlsZWQgPSBkb3duY2FzdDxTVkdH
cmFwaGljc0VsZW1lbnQ+KCpjaGlsZE5vZGUpOwogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUgPSByZW5kZXJlci0+c3R5bGUoKTsKLSAgICAgICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9
PSBOT05FIHx8IHN0eWxlLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgICAgICBpZiAoc3R5
bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpOb25lIHx8IHN0eWxlLnZpc2liaWxpdHkoKSAh
PSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBj
b25zdCBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBzdHlsZS5zdmdTdHlsZSgpOwogICAgICAg
ICAvLyBDdXJyZW50IHNoYXBlIGluIGNsaXAtcGF0aCBnZXRzIGNsaXBwZWQgdG9vLiBGYWxsYmFj
ayB0byBtYXNraW5nLgpAQCAtMjA2LDcgKzIwNiw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VD
bGlwcGVyOjpkcmF3Q29udGUKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
ICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSByZW5kZXJlci0+c3R5bGUoKTsKLSAg
ICAgICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBOT05FIHx8IHN0eWxlLnZpc2liaWxpdHkoKSAh
PSBWSVNJQkxFKQorICAgICAgICBpZiAoc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpO
b25lIHx8IHN0eWxlLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgV2luZFJ1bGUgbmV3Q2xpcFJ1bGUgPSBzdHlsZS5z
dmdTdHlsZSgpLmNsaXBSdWxlKCk7CkBAIC0yNDYsNyArMjQ2LDcgQEAgdm9pZCBSZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXI6OmNhbGN1bGF0ZQogICAgICAgICBpZiAoIXJlbmRlcmVyLT5pc1NWR1No
YXBlKCkgJiYgIXJlbmRlcmVyLT5pc1NWR1RleHQoKSAmJiAhY2hpbGROb2RlLT5oYXNUYWdOYW1l
KFNWR05hbWVzOjp1c2VUYWcpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOwotICAgICAgICBpZiAoc3R5
bGUuZGlzcGxheSgpID09IE5PTkUgfHwgc3R5bGUudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisg
ICAgICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUgfHwgc3R5bGUu
dmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIG1fY2xpcEJvdW5kYXJpZXMudW5pdGUocmVuZGVyZXItPmxvY2FsVG9QYXJl
bnRUcmFuc2Zvcm0oKS5tYXBSZWN0KHJlbmRlcmVyLT5yZXBhaW50UmVjdEluTG9jYWxDb29yZGlu
YXRlcygpKSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAJKHJldmlzaW9uIDIzMjEwNCkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNyArMTA3LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNv
dXJjZU1hc2tlcjo6ZHJhd0NvbnRlbgogICAgICAgICBpZiAocmVuZGVyZXItPm5lZWRzTGF5b3V0
KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOwotICAgICAgICBpZiAoc3R5bGUuZGlzcGxheSgp
ID09IE5PTkUgfHwgc3R5bGUudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgICAgIGlmIChz
dHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUgfHwgc3R5bGUudmlzaWJpbGl0eSgp
ICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
U1ZHUmVuZGVyaW5nQ29udGV4dDo6cmVuZGVyU3VidHJlZVRvSW1hZ2VCdWZmZXIobWFza2VyRGF0
YS0+bWFza0ltYWdlLmdldCgpLCAqcmVuZGVyZXIsIG1hc2tDb250ZW50VHJhbnNmb3JtYXRpb24p
OwogICAgIH0KQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlTWFza2Vy
OjpjYWxjdWxhdGVNCiAgICAgICAgIGlmICghY2hpbGROb2RlLT5pc1NWR0VsZW1lbnQoKSB8fCAh
cmVuZGVyZXIpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7Ci0gICAgICAgIGlmIChzdHlsZS5kaXNwbGF5
KCkgPT0gTk9ORSB8fCBzdHlsZS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICAgICAgaWYg
KHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSB8fCBzdHlsZS52aXNpYmlsaXR5
KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgbV9tYXNrQ29udGVudEJvdW5kYXJpZXMudW5pdGUocmVuZGVyZXItPmxvY2FsVG9QYXJlbnRU
cmFuc2Zvcm0oKS5tYXBSZWN0KHJlbmRlcmVyLT5yZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRl
cygpKSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSb290LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jvb3QuY3BwCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjksNyArMzI5
LDcgQEAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBSZW5kZXJTVkdSb290OjpsbwogCiBMYXlvdXRS
ZWN0IFJlbmRlclNWR1Jvb3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJl
bmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7Ci0gICAgaWYg
KHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgJiYgIWVuY2xvc2luZ0xheWVyKCktPmhh
c1Zpc2libGVDb250ZW50KCkpCisgICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2li
aWxpdHk6OlZpc2libGUgJiYgIWVuY2xvc2luZ0xheWVyKCktPmhhc1Zpc2libGVDb250ZW50KCkp
CiAgICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CiAKICAgICBGbG9hdFJlY3QgY29udGVudFJl
cGFpbnRSZWN0ID0gbV9sb2NhbFRvQm9yZGVyQm94VHJhbnNmb3JtLm1hcFJlY3QocmVwYWludFJl
Y3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1NoYXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFJlbmRlclNWR1NoYXBlOjpmaWxsU3Ryb2tlTWFya2Vy
cyhQCiB2b2lkIFJlbmRlclNWR1NoYXBlOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbnQmKQogewogICAgIGlmIChwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5n
RGlzYWJsZWQoKSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQKLSAg
ICAgICAgfHwgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gSElEREVOIHx8IGlzRW1wdHkoKSkKKyAg
ICAgICAgfHwgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6SGlkZGVuIHx8IGlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEZsb2F0UmVjdCBib3VuZGluZ0JveCA9IHJl
cGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCk7CiAgICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0
OjpwYWludEluZm9JbnRlcnNlY3RzUmVwYWludFJlY3QoYm91bmRpbmdCb3gsIG1fbG9jYWxUcmFu
c2Zvcm0sIHBhaW50SW5mbykpCkBAIC0zNzQsNyArMzc0LDcgQEAgYm9vbCBSZW5kZXJTVkdTaGFw
ZTo6bm9kZUF0RmxvYXRQb2ludChjbwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBQb2lu
dGVyRXZlbnRzSGl0UnVsZXMgaGl0UnVsZXMoUG9pbnRlckV2ZW50c0hpdFJ1bGVzOjpTVkdfUEFU
SF9ISVRURVNUSU5HLCByZXF1ZXN0LCBzdHlsZSgpLnBvaW50ZXJFdmVudHMoKSk7Ci0gICAgYm9v
bCBpc1Zpc2libGUgPSAoc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSk7CisgICAgYm9v
bCBpc1Zpc2libGUgPSAoc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJs
ZSk7CiAgICAgaWYgKGlzVmlzaWJsZSB8fCAhaGl0UnVsZXMucmVxdWlyZVZpc2libGUpIHsKICAg
ICAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0eWxlID0gc3R5bGUoKS5zdmdTdHlsZSgp
OwogICAgICAgICBXaW5kUnVsZSBmaWxsUnVsZSA9IHN2Z1N0eWxlLmZpbGxSdWxlKCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAJKHJl
dmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
VGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzMiw3ICs0MzIsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8Um9vdElubGluZUJveD4gUmVuZGVyU1ZHCiBib29sIFJlbmRlclNWR1RleHQ6Om5vZGVBdEZs
b2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJl
c3VsdCwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbiBoaXRU
ZXN0QWN0aW9uKQogewogICAgIFBvaW50ZXJFdmVudHNIaXRSdWxlcyBoaXRSdWxlcyhQb2ludGVy
RXZlbnRzSGl0UnVsZXM6OlNWR19URVhUX0hJVFRFU1RJTkcsIHJlcXVlc3QsIHN0eWxlKCkucG9p
bnRlckV2ZW50cygpKTsKLSAgICBib29sIGlzVmlzaWJsZSA9IChzdHlsZSgpLnZpc2liaWxpdHko
KSA9PSBWSVNJQkxFKTsKKyAgICBib29sIGlzVmlzaWJsZSA9IChzdHlsZSgpLnZpc2liaWxpdHko
KSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlKTsKICAgICBpZiAoaXNWaXNpYmxlIHx8ICFoaXRSdWxl
cy5yZXF1aXJlVmlzaWJsZSkgewogICAgICAgICBpZiAoKGhpdFJ1bGVzLmNhbkhpdFN0cm9rZSAm
JiAoc3R5bGUoKS5zdmdTdHlsZSgpLmhhc1N0cm9rZSgpIHx8ICFoaXRSdWxlcy5yZXF1aXJlU3Ry
b2tlKSkKICAgICAgICAgICAgIHx8IChoaXRSdWxlcy5jYW5IaXRGaWxsICYmIChzdHlsZSgpLnN2
Z1N0eWxlKCkuaGFzRmlsbCgpIHx8ICFoaXRSdWxlcy5yZXF1aXJlRmlsbCkpKSB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAJ
KHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5s
aW5lVGV4dEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lkIFNW
R0lubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uQmFjCiAgICAgQVNTRVJUKHBhaW50SW5mby5w
aGFzZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQ
aGFzZVNlbGVjdGlvbik7CiAgICAgQVNTRVJUKHRydW5jYXRpb24oKSA9PSBjTm9UcnVuY2F0aW9u
KTsKIAotICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUp
CisgICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6
VmlzaWJsZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYgcGFyZW50UmVuZGVyZXIgPSBw
YXJlbnQoKS0+cmVuZGVyZXIoKTsKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFNWR0lubGluZVRl
eHRCb3g6OnBhaW50KFBhaW50SW5mbyYgCiAgICAgQVNTRVJUKHBhaW50SW5mby5waGFzZSA9PSBQ
YWludFBoYXNlRm9yZWdyb3VuZCB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGVj
dGlvbik7CiAgICAgQVNTRVJUKHRydW5jYXRpb24oKSA9PSBjTm9UcnVuY2F0aW9uKTsKIAotICAg
IGlmIChyZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYg
KHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gTm90ZTogV2UncmUgZXhwbGljaXRlbHkgbm90IHN1
cHBvcnRpbmcgY29tcG9zaXRpb24gJiBjdXN0b20gdW5kZXJsaW5lcyBhbmQgY3VzdG9tIGhpZ2hs
aWdodGVycyAtIHVubGlrZSBJbmxpbmVUZXh0Qm94LgpAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQg
U1ZHSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiAKIAogICAgIGNvbnN0IFJlbmRlclN0
eWxlKiBzZWxlY3Rpb25TdHlsZSA9ICZzdHlsZTsKICAgICBpZiAoaGFzU2VsZWN0aW9uICYmIHNo
b3VsZFBhaW50U2VsZWN0aW9uSGlnaGxpZ2h0KSB7Ci0gICAgICAgIHNlbGVjdGlvblN0eWxlID0g
cGFyZW50UmVuZGVyZXIuZ2V0Q2FjaGVkUHNldWRvU3R5bGUoU0VMRUNUSU9OKTsKKyAgICAgICAg
c2VsZWN0aW9uU3R5bGUgPSBwYXJlbnRSZW5kZXJlci5nZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1
ZG9JZDo6U2VsZWN0aW9uKTsKICAgICAgICAgaWYgKHNlbGVjdGlvblN0eWxlKSB7CiAgICAgICAg
ICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSYgc3ZnU2VsZWN0aW9uU3R5bGUgPSBzZWxlY3Rpb25T
dHlsZS0+c3ZnU3R5bGUoKTsKIApAQCAtMzk1LDcgKzM5NSw3IEBAIFRleHRSdW4gU1ZHSW5saW5l
VGV4dEJveDo6Y29uc3RydWN0VGV4dFIKICAgICAgICAgICAgICAgICAsIDAgLyogcGFkZGluZywg
b25seSByZWxldmFudCBmb3IganVzdGlmaWVkIHRleHQsIG5vdCByZWxldmFudCBmb3IgU1ZHICov
CiAgICAgICAgICAgICAgICAgLCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uCiAgICAgICAgICAgICAg
ICAgLCBkaXJlY3Rpb24oKQotICAgICAgICAgICAgICAgICwgZGlyT3ZlcnJpZGUoKSB8fCBzdHls
ZS5ydGxPcmRlcmluZygpID09IFZpc3VhbE9yZGVyIC8qIGRpcmVjdGlvbmFsT3ZlcnJpZGUgKi8p
OworICAgICAgICAgICAgICAgICwgZGlyT3ZlcnJpZGUoKSB8fCBzdHlsZS5ydGxPcmRlcmluZygp
ID09IE9yZGVyOjpWaXN1YWwgLyogZGlyZWN0aW9uYWxPdmVycmlkZSAqLyk7CiAKICAgICAvLyBX
ZSBoYW5kbGUgbGV0dGVyICYgd29yZCBzcGFjaW5nIG91cnNlbHZlcy4KICAgICBydW4uZGlzYWJs
ZVNwYWNpbmcoKTsKQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBh
aW50RGVjb3JhdGlvbihHCiAgICAgYXV0byYgZGVjb3JhdGlvblJlbmRlcmVyID0gZmluZFJlbmRl
cmVyRGVmaW5pbmluZ1RleHREZWNvcmF0aW9uKHBhcmVudCgpKTsKICAgICBjb25zdCBSZW5kZXJT
dHlsZSYgZGVjb3JhdGlvblN0eWxlID0gZGVjb3JhdGlvblJlbmRlcmVyLnN0eWxlKCk7CiAKLSAg
ICBpZiAoZGVjb3JhdGlvblN0eWxlLnZpc2liaWxpdHkoKSA9PSBISURERU4pCisgICAgaWYgKGRl
Y29yYXRpb25TdHlsZS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6SGlkZGVuKQogICAgICAg
ICByZXR1cm47CiAKICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSYgc3ZnRGVjb3JhdGlvblN0eWxl
ID0gZGVjb3JhdGlvblN0eWxlLnN2Z1N0eWxlKCk7CkBAIC02NDcsNyArNjQ3LDcgQEAgYm9vbCBT
VkdJbmxpbmVUZXh0Qm94Ojpub2RlQXRQb2ludChjb25zdAogICAgIEFTU0VSVCghaXNMaW5lQnJl
YWsoKSk7CiAKICAgICBQb2ludGVyRXZlbnRzSGl0UnVsZXMgaGl0UnVsZXMoUG9pbnRlckV2ZW50
c0hpdFJ1bGVzOjpTVkdfVEVYVF9ISVRURVNUSU5HLCByZXF1ZXN0LCByZW5kZXJlcigpLnN0eWxl
KCkucG9pbnRlckV2ZW50cygpKTsKLSAgICBib29sIGlzVmlzaWJsZSA9IHJlbmRlcmVyKCkuc3R5
bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRTsKKyAgICBib29sIGlzVmlzaWJsZSA9IHJlbmRl
cmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZTsKICAgICBp
ZiAoaXNWaXNpYmxlIHx8ICFoaXRSdWxlcy5yZXF1aXJlVmlzaWJsZSkgewogICAgICAgICBpZiAo
KGhpdFJ1bGVzLmNhbkhpdFN0cm9rZSAmJiAocmVuZGVyZXIoKS5zdHlsZSgpLnN2Z1N0eWxlKCku
aGFzU3Ryb2tlKCkgfHwgIWhpdFJ1bGVzLnJlcXVpcmVTdHJva2UpKQogICAgICAgICAgICAgfHwg
KGhpdFJ1bGVzLmNhbkhpdEZpbGwgJiYgKHJlbmRlcmVyKCkuc3R5bGUoKS5zdmdTdHlsZSgpLmhh
c0ZpbGwoKSB8fCAhaGl0UnVsZXMucmVxdWlyZUZpbGwpKSkgewpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCShyZXZpc2lvbiAy
MzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIEZsb2F0UmVjdCBTVkdSZW5kZXJT
dXBwb3J0OjpyZXBhaW50UmVjdEYKIExheW91dFJlY3QgU1ZHUmVuZGVyU3VwcG9ydDo6Y2xpcHBl
ZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNv
bnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpCiB7CiAgICAgLy8g
UmV0dXJuIGVhcmx5IGZvciBhbnkgY2FzZXMgd2hlcmUgd2UgZG9uJ3QgYWN0dWFsbHkgcGFpbnQK
LSAgICBpZiAocmVuZGVyZXIuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSAmJiAhcmVu
ZGVyZXIuZW5jbG9zaW5nTGF5ZXIoKS0+aGFzVmlzaWJsZUNvbnRlbnQoKSkKKyAgICBpZiAocmVu
ZGVyZXIuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhcmVu
ZGVyZXIuZW5jbG9zaW5nTGF5ZXIoKS0+aGFzVmlzaWJsZUNvbnRlbnQoKSkKICAgICAgICAgcmV0
dXJuIExheW91dFJlY3QoKTsKIAogICAgIC8vIFBhc3Mgb3VyIGxvY2FsIHBhaW50IHJlY3QgdG8g
Y29tcHV0ZVJlY3RGb3JSZXBhaW50KCkgd2hpY2ggd2lsbApJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lv
biAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0Nv
bnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsMTAgKzEzNywxMCBAQCB2b2lkIFNWR1Jl
bmRlcmluZ0NvbnRleHQ6OnByZXBhcmVUb1JlbmRlCiAgICAgaWYgKGlzPFNoYXBlQ2xpcFBhdGhP
cGVyYXRpb24+KGNsaXBQYXRoT3BlcmF0aW9uKSkgewogICAgICAgICBhdXRvJiBjbGlwUGF0aCA9
IGRvd25jYXN0PFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24+KCpjbGlwUGF0aE9wZXJhdGlvbik7CiAg
ICAgICAgIEZsb2F0UmVjdCByZWZlcmVuY2VCb3g7Ci0gICAgICAgIGlmIChjbGlwUGF0aC5yZWZl
cmVuY2VCb3goKSA9PSBTdHJva2UpCisgICAgICAgIGlmIChjbGlwUGF0aC5yZWZlcmVuY2VCb3go
KSA9PSBDU1NCb3hUeXBlOjpTdHJva2UpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBzdHJva2VC
b3VuZGluZ0JveCgpIHRha2VzIGRhc2hhcnJheSBpbnRvIGFjY291bnQgYnV0IHNob3VsZG4ndC4K
ICAgICAgICAgICAgIHJlZmVyZW5jZUJveCA9IHJlbmRlcmVyLnN0cm9rZUJvdW5kaW5nQm94KCk7
Ci0gICAgICAgIGVsc2UgaWYgKGNsaXBQYXRoLnJlZmVyZW5jZUJveCgpID09IFZpZXdCb3ggJiYg
cmVuZGVyZXIuZWxlbWVudCgpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoY2xpcFBhdGgucmVmZXJl
bmNlQm94KCkgPT0gQ1NTQm94VHlwZTo6Vmlld0JveCAmJiByZW5kZXJlci5lbGVtZW50KCkpIHsK
ICAgICAgICAgICAgIEZsb2F0U2l6ZSB2aWV3cG9ydFNpemU7CiAgICAgICAgICAgICBTVkdMZW5n
dGhDb250ZXh0KGRvd25jYXN0PFNWR0VsZW1lbnQ+KHJlbmRlcmVyLmVsZW1lbnQoKSkpLmRldGVy
bWluZVZpZXdwb3J0KHZpZXdwb3J0U2l6ZSk7CiAgICAgICAgICAgICByZWZlcmVuY2VCb3guc2V0
V2lkdGgodmlld3BvcnRTaXplLndpZHRoKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWls
ZGVyLmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
Miw3ICs4Miw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwcm9jZXNzUmVuZGVyU1ZHSW5saW4KIHsK
ICAgICBhdXRvJiBzdHJpbmcgPSB0ZXh0LnRleHQoKTsKICAgICBhdXRvIGxlbmd0aCA9IHN0cmlu
Zy5sZW5ndGgoKTsKLSAgICBpZiAodGV4dC5zdHlsZSgpLndoaXRlU3BhY2UoKSA9PSBQUkUpIHsK
KyAgICBpZiAodGV4dC5zdHlsZSgpLndoaXRlU3BhY2UoKSA9PSBXaGl0ZVNwYWNlOjpQcmUpIHsK
ICAgICAgICAgYXRDaGFyYWN0ZXIgKz0gbGVuZ3RoOwogICAgICAgICByZXR1cm47CiAgICAgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1l
dHJpY3NCdWlsZGVyLmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzUsNyArMTM1LDcgQEAgdm9pZCBTVkdUZXh0TWV0cmljc0J1aWxkZXI6Om1lYXN1cmVUZXh0Ugog
ICAgIH0KIAogICAgIGluaXRpYWxpemVNZWFzdXJlbWVudFdpdGhUZXh0UmVuZGVyZXIodGV4dCk7
Ci0gICAgYm9vbCBwcmVzZXJ2ZVdoaXRlU3BhY2UgPSB0ZXh0LnN0eWxlKCkud2hpdGVTcGFjZSgp
ID09IFBSRTsKKyAgICBib29sIHByZXNlcnZlV2hpdGVTcGFjZSA9IHRleHQuc3R5bGUoKS53aGl0
ZVNwYWNlKCkgPT0gV2hpdGVTcGFjZTo6UHJlOwogICAgIGludCBzdXJyb2dhdGVQYWlyQ2hhcmFj
dGVycyA9IDA7CiAKICAgICB3aGlsZSAoYWR2YW5jZSgpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVy
QmxvY2suY3BwCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
dXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMw
Myw3ICszMDMsNyBAQCBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBSZW5kZXJUcmVlQnVpbGRlCiAg
ICAgICAgICAgICAvLyBjb2x1bW4gc3BhbiBmbGFnIGlmIGl0IGlzIHNldC4KICAgICAgICAgICAg
IEFTU0VSVCghaW5saW5lQ2hpbGRyZW5CbG9jay5jb250aW51YXRpb24oKSk7CiAgICAgICAgICAg
ICAvLyBDYWNoZSB0aGlzIHZhbHVlIGFzIGl0IG1pZ2h0IGdldCBjaGFuZ2VkIGluIHNldFN0eWxl
KCkgY2FsbC4KLSAgICAgICAgICAgIGlubGluZUNoaWxkcmVuQmxvY2suc2V0U3R5bGUoUmVuZGVy
U3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50LnN0eWxlKCksIEJM
T0NLKSk7CisgICAgICAgICAgICBpbmxpbmVDaGlsZHJlbkJsb2NrLnNldFN0eWxlKFJlbmRlclN0
eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudC5zdHlsZSgpLCBEaXNw
bGF5VHlwZTo6QmxvY2spKTsKICAgICAgICAgICAgIGF1dG8gYmxvY2tUb01vdmUgPSBtX2J1aWxk
ZXIuZGV0YWNoRnJvbVJlbmRlckVsZW1lbnQocGFyZW50LCBpbmxpbmVDaGlsZHJlbkJsb2NrKTsK
IAogICAgICAgICAgICAgLy8gTm93IGp1c3QgcHV0IHRoZSBpbmxpbmVDaGlsZHJlbkJsb2NrIGlu
c2lkZSB0aGUgYmxvY2tDaGlsZHJlbkJsb2NrLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyRmlyc3RMZXR0ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlckZp
cnN0TGV0dGVyLmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyRmlyc3RMZXR0ZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIFJlbmRl
clN0eWxlIHN0eWxlRm9yRmlyc3RMZXR0ZXIoY29uc3QgUmVuZGVyQmxvY2smIGZpcnN0TGV0dGVy
QmxvY2ssIGNvbnN0IFJlbmRlck9iamVjdCYgZmlyc3RMZXR0ZXJDb250YWluZXIpCiB7Ci0gICAg
YXV0byogY29udGFpbmVyRmlyc3RMZXR0ZXJTdHlsZSA9IGZpcnN0TGV0dGVyQmxvY2suZ2V0Q2Fj
aGVkUHNldWRvU3R5bGUoRklSU1RfTEVUVEVSLCAmZmlyc3RMZXR0ZXJDb250YWluZXIuZmlyc3RM
aW5lU3R5bGUoKSk7CisgICAgYXV0byogY29udGFpbmVyRmlyc3RMZXR0ZXJTdHlsZSA9IGZpcnN0
TGV0dGVyQmxvY2suZ2V0Q2FjaGVkUHNldWRvU3R5bGUoUHNldWRvSWQ6OkZpcnN0TGV0dGVyLCAm
Zmlyc3RMZXR0ZXJDb250YWluZXIuZmlyc3RMaW5lU3R5bGUoKSk7CiAgICAgLy8gRklYTUU6IFRo
ZXJlIGFwcGVhcnMgdG8gYmUgc29tZSBwYXRoIHdoZXJlIHdlIGhhdmUgYSBmaXJzdCBsZXR0ZXIg
cmVuZGVyZXIgd2l0aG91dCBmaXJzdCBsZXR0ZXIgc3R5bGUuCiAgICAgQVNTRVJUKGNvbnRhaW5l
ckZpcnN0TGV0dGVyU3R5bGUpOwogICAgIGF1dG8gZmlyc3RMZXR0ZXJTdHlsZSA9IFJlbmRlclN0
eWxlOjpjbG9uZShjb250YWluZXJGaXJzdExldHRlclN0eWxlID8gKmNvbnRhaW5lckZpcnN0TGV0
dGVyU3R5bGUgOiBmaXJzdExldHRlckNvbnRhaW5lci5maXJzdExpbmVTdHlsZSgpKTsKQEAgLTgy
LDcgKzgyLDcgQEAgc3RhdGljIFJlbmRlclN0eWxlIHN0eWxlRm9yRmlyc3RMZXR0ZXIoYwogICAg
IH0KIAogICAgIC8vIEZvcmNlIGlubGluZSBkaXNwbGF5IChleGNlcHQgZm9yIGZsb2F0aW5nIGZp
cnN0LWxldHRlcnMpLgotICAgIGZpcnN0TGV0dGVyU3R5bGUuc2V0RGlzcGxheShmaXJzdExldHRl
clN0eWxlLmlzRmxvYXRpbmcoKSA/IEJMT0NLIDogSU5MSU5FKTsKKyAgICBmaXJzdExldHRlclN0
eWxlLnNldERpc3BsYXkoZmlyc3RMZXR0ZXJTdHlsZS5pc0Zsb2F0aW5nKCkgPyBEaXNwbGF5VHlw
ZTo6QmxvY2sgOiBEaXNwbGF5VHlwZTo6SW5saW5lKTsKICAgICAvLyBDU1MyIHNheXMgZmlyc3Qt
bGV0dGVyIGNhbid0IGJlIHBvc2l0aW9uZWQuCiAgICAgZmlyc3RMZXR0ZXJTdHlsZS5zZXRQb3Np
dGlvbihQb3NpdGlvblR5cGU6OlN0YXRpYyk7CiAgICAgcmV0dXJuIGZpcnN0TGV0dGVyU3R5bGU7
CkBAIC0xMjEsNyArMTIxLDcgQEAgUmVuZGVyVHJlZUJ1aWxkZXI6OkZpcnN0TGV0dGVyOjpGaXJz
dExldAogCiB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjpGaXJzdExldHRlcjo6dXBkYXRlQWZ0ZXJE
ZXNjZW5kYW50cyhSZW5kZXJCbG9jayYgYmxvY2spCiB7Ci0gICAgaWYgKCFibG9jay5zdHlsZSgp
Lmhhc1BzZXVkb1N0eWxlKEZJUlNUX0xFVFRFUikpCisgICAgaWYgKCFibG9jay5zdHlsZSgpLmhh
c1BzZXVkb1N0eWxlKFBzZXVkb0lkOjpGaXJzdExldHRlcikpCiAgICAgICAgIHJldHVybjsKICAg
ICBpZiAoIXN1cHBvcnRzRmlyc3RMZXR0ZXIoYmxvY2spKQogICAgICAgICByZXR1cm47CkBAIC0x
NDAsNyArMTQwLDcgQEAgdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6Rmlyc3RMZXR0ZXI6OnVwZAog
CiAgICAgLy8gSWYgdGhlIGNoaWxkIGFscmVhZHkgaGFzIHN0eWxlLCB0aGVuIGl0IGhhcyBhbHJl
YWR5IGJlZW4gY3JlYXRlZCwgc28gd2UganVzdCB3YW50CiAgICAgLy8gdG8gdXBkYXRlIGl0Lgot
ICAgIGlmIChmaXJzdExldHRlclJlbmRlcmVyLT5wYXJlbnQoKS0+c3R5bGUoKS5zdHlsZVR5cGUo
KSA9PSBGSVJTVF9MRVRURVIpIHsKKyAgICBpZiAoZmlyc3RMZXR0ZXJSZW5kZXJlci0+cGFyZW50
KCktPnN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6OkZpcnN0TGV0dGVyKSB7CiAgICAg
ICAgIHVwZGF0ZVN0eWxlKGJsb2NrLCAqZmlyc3RMZXR0ZXJSZW5kZXJlcik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6
Rmlyc3RMZXR0ZXI6OnVwZAogICAgIGlmIChTdHlsZTo6ZGV0ZXJtaW5lQ2hhbmdlKGZpcnN0TGV0
dGVyLT5zdHlsZSgpLCBwc2V1ZG9TdHlsZSkgPT0gU3R5bGU6OkRldGFjaCkgewogICAgICAgICAv
LyBUaGUgZmlyc3QtbGV0dGVyIHJlbmRlcmVyIG5lZWRzIHRvIGJlIHJlcGxhY2VkLiBDcmVhdGUg
YSBuZXcgcmVuZGVyZXIgb2YgdGhlIHJpZ2h0IHR5cGUuCiAgICAgICAgIFJlbmRlclB0cjxSZW5k
ZXJCb3hNb2RlbE9iamVjdD4gbmV3Rmlyc3RMZXR0ZXI7Ci0gICAgICAgIGlmIChwc2V1ZG9TdHls
ZS5kaXNwbGF5KCkgPT0gSU5MSU5FKQorICAgICAgICBpZiAocHNldWRvU3R5bGUuZGlzcGxheSgp
ID09IERpc3BsYXlUeXBlOjpJbmxpbmUpCiAgICAgICAgICAgICBuZXdGaXJzdExldHRlciA9IGNy
ZWF0ZVJlbmRlcmVyPFJlbmRlcklubGluZT4oZmlyc3RMZXR0ZXJCbG9jay5kb2N1bWVudCgpLCBX
VEZNb3ZlKHBzZXVkb1N0eWxlKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG5ld0ZpcnN0
TGV0dGVyID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyQmxvY2tGbG93PihmaXJzdExldHRlckJsb2Nr
LmRvY3VtZW50KCksIFdURk1vdmUocHNldWRvU3R5bGUpKTsKQEAgLTIwNSw3ICsyMDUsNyBAQCB2
b2lkIFJlbmRlclRyZWVCdWlsZGVyOjpGaXJzdExldHRlcjo6Y3JlCiAgICAgUmVuZGVyRWxlbWVu
dCogZmlyc3RMZXR0ZXJDb250YWluZXIgPSBjdXJyZW50VGV4dENoaWxkLnBhcmVudCgpOwogICAg
IGF1dG8gcHNldWRvU3R5bGUgPSBzdHlsZUZvckZpcnN0TGV0dGVyKGZpcnN0TGV0dGVyQmxvY2ss
ICpmaXJzdExldHRlckNvbnRhaW5lcik7CiAgICAgUmVuZGVyUHRyPFJlbmRlckJveE1vZGVsT2Jq
ZWN0PiBuZXdGaXJzdExldHRlcjsKLSAgICBpZiAocHNldWRvU3R5bGUuZGlzcGxheSgpID09IElO
TElORSkKKyAgICBpZiAocHNldWRvU3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpJbmxp
bmUpCiAgICAgICAgIG5ld0ZpcnN0TGV0dGVyID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVySW5saW5l
PihmaXJzdExldHRlckJsb2NrLmRvY3VtZW50KCksIFdURk1vdmUocHNldWRvU3R5bGUpKTsKICAg
ICBlbHNlCiAgICAgICAgIG5ld0ZpcnN0TGV0dGVyID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyQmxv
Y2tGbG93PihmaXJzdExldHRlckJsb2NrLmRvY3VtZW50KCksIFdURk1vdmUocHNldWRvU3R5bGUp
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVp
bGRlcklubGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3Vw
ZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVySW5saW5lLmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVySW5saW5l
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgUmVuZGVyVHJlZUJ1
aWxkZXI6OklubGluZTo6YXR0YWNoSWcKICAgICAgICAgLy8gaW5saW5lIGludG8gY29udGludWF0
aW9ucy4gVGhpcyBpbnZvbHZlcyBjcmVhdGluZyBhbiBhbm9ueW1vdXMgYmxvY2sgYm94IHRvIGhv
bGQKICAgICAgICAgLy8gfG5ld0NoaWxkfC4gV2UgdGhlbiBtYWtlIHRoYXQgYmxvY2sgYm94IGEg
Y29udGludWF0aW9uIG9mIHRoaXMgaW5saW5lLiBXZSB0YWtlIGFsbCBvZgogICAgICAgICAvLyB0
aGUgY2hpbGRyZW4gYWZ0ZXIgfGJlZm9yZUNoaWxkfCBhbmQgcHV0IHRoZW0gaW4gYSBjbG9uZSBv
ZiB0aGlzIG9iamVjdC4KLSAgICAgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVh
dGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudC5zdHlsZSgpLCBCTE9DSyk7CisgICAg
ICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRo
RGlzcGxheShwYXJlbnQuc3R5bGUoKSwgRGlzcGxheVR5cGU6OkJsb2NrKTsKIAogICAgICAgICAv
LyBJZiBpbnNpZGUgYW4gaW5saW5lIGFmZmVjdGVkIGJ5IGluLWZsb3cgcG9zaXRpb25pbmcgdGhl
IGJsb2NrIG5lZWRzIHRvIGJlIGFmZmVjdGVkIGJ5IGl0IHRvby4KICAgICAgICAgLy8gR2l2aW5n
IHRoZSBibG9jayBhIGxheWVyIGxpa2UgdGhpcyBhbGxvd3MgaXQgdG8gY29sbGVjdCB0aGUgeC95
IG9mZnNldHMgZnJvbSBpbmxpbmUgcGFyZW50cyBsYXRlci4KQEAgLTM3Niw3ICszNzYsNyBAQCB2
b2lkIFJlbmRlclRyZWVCdWlsZGVyOjpJbmxpbmU6OnNwbGl0SW5sCiBib29sIFJlbmRlclRyZWVC
dWlsZGVyOjpJbmxpbmU6Om5ld0NoaWxkSXNJbmxpbmUoY29uc3QgUmVuZGVySW5saW5lJiBwYXJl
bnQsIGNvbnN0IFJlbmRlck9iamVjdCYgY2hpbGQpCiB7CiAgICAgLy8gaW5saW5lIHBhcmVudCBn
ZW5lcmF0ZXMgaW5saW5lLXRhYmxlLgotICAgIHJldHVybiBjaGlsZC5pc0lubGluZSgpIHx8ICht
X2J1aWxkZXIudGFibGVCdWlsZGVyKCkuY2hpbGRSZXF1aXJlc1RhYmxlKHBhcmVudCwgY2hpbGQp
ICYmIHBhcmVudC5zdHlsZSgpLmRpc3BsYXkoKSA9PSBJTkxJTkUpOworICAgIHJldHVybiBjaGls
ZC5pc0lubGluZSgpIHx8IChtX2J1aWxkZXIudGFibGVCdWlsZGVyKCkuY2hpbGRSZXF1aXJlc1Rh
YmxlKHBhcmVudCwgY2hpbGQpICYmIHBhcmVudC5zdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5
VHlwZTo6SW5saW5lKTsKIH0KIAogdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6SW5saW5lOjpjaGls
ZEJlY2FtZU5vbklubGluZShSZW5kZXJJbmxpbmUmIHBhcmVudCwgUmVuZGVyRWxlbWVudCYgY2hp
bGQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1
aWxkZXJMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBk
YXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJMaXN0LmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyTGlzdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6
TGlzdDo6dXBkYXRlSXRlbQogewogICAgIGF1dG8mIHN0eWxlID0gbGlzdEl0ZW1SZW5kZXJlci5z
dHlsZSgpOwogCi0gICAgaWYgKHN0eWxlLmxpc3RTdHlsZVR5cGUoKSA9PSBOb25lTGlzdFN0eWxl
ICYmICghc3R5bGUubGlzdFN0eWxlSW1hZ2UoKSB8fCBzdHlsZS5saXN0U3R5bGVJbWFnZSgpLT5l
cnJvck9jY3VycmVkKCkpKSB7CisgICAgaWYgKHN0eWxlLmxpc3RTdHlsZVR5cGUoKSA9PSBMaXN0
U3R5bGVUeXBlOjpOb25lICYmICghc3R5bGUubGlzdFN0eWxlSW1hZ2UoKSB8fCBzdHlsZS5saXN0
U3R5bGVJbWFnZSgpLT5lcnJvck9jY3VycmVkKCkpKSB7CiAgICAgICAgIGlmIChhdXRvKiBtYXJr
ZXIgPSBsaXN0SXRlbVJlbmRlcmVyLm1hcmtlclJlbmRlcmVyKCkpCiAgICAgICAgICAgICBtX2J1
aWxkZXIuZGVzdHJveSgqbWFya2VyKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyTWF0aE1MLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1
aWxkZXJNYXRoTUwuY3BwCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJNYXRoTUwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Miw3ICs0Miw3IEBAIFJlbmRlclRyZWVCdWlsZGVyOjpNYXRoTUw6Ok1hdGhNTChSZW5k
ZXIKIFJlbmRlclB0cjxSZW5kZXJNYXRoTUxGZW5jZWRPcGVyYXRvcj4gUmVuZGVyVHJlZUJ1aWxk
ZXI6Ok1hdGhNTDo6Y3JlYXRlTWF0aE1MT3BlcmF0b3IoUmVuZGVyTWF0aE1MRmVuY2VkJiBwYXJl
bnQsIGNvbnN0IFN0cmluZyYgb3BlcmF0b3JTdHJpbmcsCiAgICAgTWF0aE1MT3BlcmF0b3JEaWN0
aW9uYXJ5OjpGb3JtIGZvcm0sIE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6RmxhZyBmbGFnKQog
ewotICAgIFJlbmRlclB0cjxSZW5kZXJNYXRoTUxGZW5jZWRPcGVyYXRvcj4gbmV3T3BlcmF0b3Ig
PSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxGZW5jZWRPcGVyYXRvcj4ocGFyZW50LmRvY3Vt
ZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVu
dC5zdHlsZSgpLCBCTE9DSyksIG9wZXJhdG9yU3RyaW5nLCBmb3JtLCBmbGFnKTsKKyAgICBSZW5k
ZXJQdHI8UmVuZGVyTWF0aE1MRmVuY2VkT3BlcmF0b3I+IG5ld09wZXJhdG9yID0gY3JlYXRlUmVu
ZGVyZXI8UmVuZGVyTWF0aE1MRmVuY2VkT3BlcmF0b3I+KHBhcmVudC5kb2N1bWVudCgpLCBSZW5k
ZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnQuc3R5bGUoKSwg
RGlzcGxheVR5cGU6OkJsb2NrKSwgb3BlcmF0b3JTdHJpbmcsIGZvcm0sIGZsYWcpOwogICAgIG5l
d09wZXJhdG9yLT5pbml0aWFsaXplU3R5bGUoKTsKICAgICByZXR1cm4gbmV3T3BlcmF0b3I7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxk
ZXJNdWx0aUNvbHVtbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyTXVsdGlDb2x1bW4uY3BwCShyZXZpc2lvbiAyMzIx
MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxk
ZXJNdWx0aUNvbHVtbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lk
IFJlbmRlclRyZWVCdWlsZGVyOjpNdWx0aUNvbHVtbjo6Y3JlCiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBhdXRvIG5ld0ZyYWdtZW50ZWRGbG93ID0gIWZsb3cuc3R5bGUoKS5oYXNMaW5lc0NsYW1w
KCkgPyBXZWJDb3JlOjpjcmVhdGVSZW5kZXJlcjxSZW5kZXJNdWx0aUNvbHVtbkZsb3c+KGZsb3cu
ZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXko
Zmxvdy5zdHlsZSgpLCBCTE9DSykpIDogIFdlYkNvcmU6OmNyZWF0ZVJlbmRlcmVyPFJlbmRlckxp
bmVzQ2xhbXBGbG93PihmbG93LmRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1v
dXNTdHlsZVdpdGhEaXNwbGF5KGZsb3cuc3R5bGUoKSwgQkxPQ0spKTsKKyAgICBhdXRvIG5ld0Zy
YWdtZW50ZWRGbG93ID0gIWZsb3cuc3R5bGUoKS5oYXNMaW5lc0NsYW1wKCkgPyBXZWJDb3JlOjpj
cmVhdGVSZW5kZXJlcjxSZW5kZXJNdWx0aUNvbHVtbkZsb3c+KGZsb3cuZG9jdW1lbnQoKSwgUmVu
ZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoZmxvdy5zdHlsZSgpLCBE
aXNwbGF5VHlwZTo6QmxvY2spKSA6ICBXZWJDb3JlOjpjcmVhdGVSZW5kZXJlcjxSZW5kZXJMaW5l
c0NsYW1wRmxvdz4oZmxvdy5kb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3Vz
U3R5bGVXaXRoRGlzcGxheShmbG93LnN0eWxlKCksIERpc3BsYXlUeXBlOjpCbG9jaykpOwogICAg
IG5ld0ZyYWdtZW50ZWRGbG93LT5pbml0aWFsaXplU3R5bGUoKTsKICAgICBhdXRvJiBmcmFnbWVu
dGVkRmxvdyA9ICpuZXdGcmFnbWVudGVkRmxvdzsKICAgICBtX2J1aWxkZXIuYmxvY2tCdWlsZGVy
KCkuYXR0YWNoKGZsb3csIFdURk1vdmUobmV3RnJhZ21lbnRlZEZsb3cpLCBudWxscHRyKTsKQEAg
LTM1Miw3ICszNTIsNyBAQCBSZW5kZXJPYmplY3QqIFJlbmRlclRyZWVCdWlsZGVyOjpNdWx0aUNv
CiAgICAgLy8gTmVlZCB0byBjcmVhdGUgYSBuZXcgY29sdW1uIHNldCB3aGVuIHRoZXJlJ3Mgbm8g
c2V0IGFscmVhZHkgY3JlYXRlZC4gV2UgYWxzbyBhbHdheXMgaW5zZXJ0CiAgICAgLy8gYW5vdGhl
ciBjb2x1bW4gc2V0IGFmdGVyIGEgc3Bhbm5lci4gRXZlbiBpZiBpdCB0dXJucyBvdXQgdGhhdCB0
aGVyZSBhcmUgbm8gcmVuZGVyZXJzCiAgICAgLy8gZm9sbG93aW5nIHRoZSBzcGFubmVyLCB0aGVy
ZSBtYXkgYmUgYm90dG9tIG1hcmdpbnMgdGhlcmUsIHdoaWNoIHRha2UgdXAgc3BhY2UuCi0gICAg
YXV0byBuZXdTZXQgPSBmbG93LmNyZWF0ZU11bHRpQ29sdW1uU2V0KFJlbmRlclN0eWxlOjpjcmVh
dGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KG11bHRpY29sQ29udGFpbmVyLT5zdHlsZSgpLCBC
TE9DSykpOworICAgIGF1dG8gbmV3U2V0ID0gZmxvdy5jcmVhdGVNdWx0aUNvbHVtblNldChSZW5k
ZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShtdWx0aWNvbENvbnRhaW5l
ci0+c3R5bGUoKSwgRGlzcGxheVR5cGU6OkJsb2NrKSk7CiAgICAgbmV3U2V0LT5pbml0aWFsaXpl
U3R5bGUoKTsKICAgICBhdXRvJiBzZXQgPSAqbmV3U2V0OwogICAgIG1fYnVpbGRlci5ibG9ja0J1
aWxkZXIoKS5hdHRhY2goKm11bHRpY29sQ29udGFpbmVyLCBXVEZNb3ZlKG5ld1NldCksIGluc2Vy
dEJlZm9yZU11bHRpY29sQ2hpbGQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3Vw
ZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyUnVieS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyUnVieS5jcHAJKHJldmlz
aW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJU
cmVlQnVpbGRlclJ1YnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBpc0Fub255bW91c1J1YnlJbmxpbmUKICAgICAgICAgfHwgIWlzUnVieShv
YmplY3QtPnBhcmVudCgpKQogICAgICAgICB8fCBpczxSZW5kZXJSdWJ5UnVuPigqb2JqZWN0KQog
ICAgICAgICB8fCAob2JqZWN0LT5pc0lubGluZSgpICYmIChvYmplY3QtPmlzQmVmb3JlQ29udGVu
dCgpIHx8IG9iamVjdC0+aXNBZnRlckNvbnRlbnQoKSkpCi0gICAgICAgIHx8IChvYmplY3QtPmlz
QW5vbnltb3VzKCkgJiYgaXM8UmVuZGVyQmxvY2s+KCpvYmplY3QpICYmIG9iamVjdC0+c3R5bGUo
KS5kaXNwbGF5KCkgPT0gSU5MSU5FX0JMT0NLKSk7CisgICAgICAgIHx8IChvYmplY3QtPmlzQW5v
bnltb3VzKCkgJiYgaXM8UmVuZGVyQmxvY2s+KCpvYmplY3QpICYmIG9iamVjdC0+c3R5bGUoKS5k
aXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OklubGluZUJsb2NrKSk7CiAKICAgICByZXR1cm4gb2Jq
ZWN0CiAgICAgICAgICYmIGlzUnVieShvYmplY3QtPnBhcmVudCgpKQpAQCAtNjAsNyArNjAsNyBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgaXNSdWJ5QmVmb3JlQmxvY2soY29uCiAgICAgcmV0dXJuIGlz
QW5vbnltb3VzUnVieUlubGluZUJsb2NrKG9iamVjdCkKICAgICAgICAgJiYgIW9iamVjdC0+cHJl
dmlvdXNTaWJsaW5nKCkKICAgICAgICAgJiYgZG93bmNhc3Q8UmVuZGVyQmxvY2s+KCpvYmplY3Qp
LmZpcnN0Q2hpbGQoKQotICAgICAgICAmJiBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKm9iamVjdCku
Zmlyc3RDaGlsZCgpLT5zdHlsZSgpLnN0eWxlVHlwZSgpID09IEJFRk9SRTsKKyAgICAgICAgJiYg
ZG93bmNhc3Q8UmVuZGVyQmxvY2s+KCpvYmplY3QpLmZpcnN0Q2hpbGQoKS0+c3R5bGUoKS5zdHls
ZVR5cGUoKSA9PSBQc2V1ZG9JZDo6QmVmb3JlOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNS
dWJ5QWZ0ZXJCbG9jayhjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCkKQEAgLTY4LDcgKzY4LDcg
QEAgc3RhdGljIGlubGluZSBib29sIGlzUnVieUFmdGVyQmxvY2soY29ucwogICAgIHJldHVybiBp
c0Fub255bW91c1J1YnlJbmxpbmVCbG9jayhvYmplY3QpCiAgICAgICAgICYmICFvYmplY3QtPm5l
eHRTaWJsaW5nKCkKICAgICAgICAgJiYgZG93bmNhc3Q8UmVuZGVyQmxvY2s+KCpvYmplY3QpLmZp
cnN0Q2hpbGQoKQotICAgICAgICAmJiBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKm9iamVjdCkuZmly
c3RDaGlsZCgpLT5zdHlsZSgpLnN0eWxlVHlwZSgpID09IEFGVEVSOworICAgICAgICAmJiBkb3du
Y2FzdDxSZW5kZXJCbG9jaz4oKm9iamVjdCkuZmlyc3RDaGlsZCgpLT5zdHlsZSgpLnN0eWxlVHlw
ZSgpID09IFBzZXVkb0lkOjpBZnRlcjsKIH0KIAogI2lmbmRlZiBBU1NFUlRfRElTQUJMRUQKQEAg
LTk3LDcgKzk3LDcgQEAgc3RhdGljIGlubGluZSBSZW5kZXJCbG9jayogcnVieUFmdGVyQmxvYwog
CiBzdGF0aWMgYXV0byBjcmVhdGVBbm9ueW1vdXNSdWJ5SW5saW5lQmxvY2soUmVuZGVyT2JqZWN0
JiBydWJ5KQogewotICAgIGF1dG8gbmV3QmxvY2sgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJCbG9j
a0Zsb3c+KHJ1YnkuZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxl
V2l0aERpc3BsYXkocnVieS5zdHlsZSgpLCBJTkxJTkVfQkxPQ0spKTsKKyAgICBhdXRvIG5ld0Js
b2NrID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyQmxvY2tGbG93PihydWJ5LmRvY3VtZW50KCksIFJl
bmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHJ1Ynkuc3R5bGUoKSwg
RGlzcGxheVR5cGU6OklubGluZUJsb2NrKSk7CiAgICAgbmV3QmxvY2stPmluaXRpYWxpemVTdHls
ZSgpOwogICAgIHJldHVybiBuZXdCbG9jazsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclRhYmxlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJUYWJsZS5j
cHAJKHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGlu
Zy9SZW5kZXJUcmVlQnVpbGRlclRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDggKzEz
OSw4IEBAIFJlbmRlckVsZW1lbnQmIFJlbmRlclRyZWVCdWlsZGVyOjpUYWJsZToKICAgICBhdXRv
KiBwYXJlbnRDYW5kaWRhdGUgPSBiZWZvcmVDaGlsZDsKICAgICB3aGlsZSAocGFyZW50Q2FuZGlk
YXRlICYmIHBhcmVudENhbmRpZGF0ZS0+cGFyZW50KCktPmlzQW5vbnltb3VzKCkKICAgICAgICAg
JiYgIWlzPFJlbmRlclRhYmxlU2VjdGlvbj4oKnBhcmVudENhbmRpZGF0ZSkKLSAgICAgICAgJiYg
cGFyZW50Q2FuZGlkYXRlLT5zdHlsZSgpLmRpc3BsYXkoKSAhPSBUQUJMRV9DQVBUSU9OCi0gICAg
ICAgICYmIHBhcmVudENhbmRpZGF0ZS0+c3R5bGUoKS5kaXNwbGF5KCkgIT0gVEFCTEVfQ09MVU1O
X0dST1VQKQorICAgICAgICAmJiBwYXJlbnRDYW5kaWRhdGUtPnN0eWxlKCkuZGlzcGxheSgpICE9
IERpc3BsYXlUeXBlOjpUYWJsZUNhcHRpb24KKyAgICAgICAgJiYgcGFyZW50Q2FuZGlkYXRlLT5z
dHlsZSgpLmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1bW5Hcm91cCkKICAgICAg
ICAgcGFyZW50Q2FuZGlkYXRlID0gcGFyZW50Q2FuZGlkYXRlLT5wYXJlbnQoKTsKIAogICAgIGlm
IChwYXJlbnRDYW5kaWRhdGUgJiYgaXM8UmVuZGVyVGFibGVTZWN0aW9uPigqcGFyZW50Q2FuZGlk
YXRlKSAmJiBwYXJlbnRDYW5kaWRhdGUtPmlzQW5vbnltb3VzKCkgJiYgIXBhcmVudC5pc0FmdGVy
Q29udGVudChwYXJlbnRDYW5kaWRhdGUpKSB7CkBAIC0xNTAsOCArMTUwLDggQEAgUmVuZGVyRWxl
bWVudCYgUmVuZGVyVHJlZUJ1aWxkZXI6OlRhYmxlOgogICAgIH0KIAogICAgIGlmIChiZWZvcmVD
aGlsZCAmJiAhaXM8UmVuZGVyVGFibGVTZWN0aW9uPigqYmVmb3JlQ2hpbGQpCi0gICAgICAgICYm
IGJlZm9yZUNoaWxkLT5zdHlsZSgpLmRpc3BsYXkoKSAhPSBUQUJMRV9DQVBUSU9OCi0gICAgICAg
ICYmIGJlZm9yZUNoaWxkLT5zdHlsZSgpLmRpc3BsYXkoKSAhPSBUQUJMRV9DT0xVTU5fR1JPVVAp
CisgICAgICAgICYmIGJlZm9yZUNoaWxkLT5zdHlsZSgpLmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlw
ZTo6VGFibGVDYXB0aW9uCisgICAgICAgICYmIGJlZm9yZUNoaWxkLT5zdHlsZSgpLmRpc3BsYXko
KSAhPSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1bW5Hcm91cCkKICAgICAgICAgYmVmb3JlQ2hpbGQg
PSBudWxscHRyOwogCiAgICAgYXV0byBuZXdTZWN0aW9uID0gUmVuZGVyVGFibGVTZWN0aW9uOjpj
cmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIocGFyZW50KTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVy
LmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0
aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsOSArNjIsOSBA
QCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgY29uc3QgRWxlbWVudCYgbV9lbGVtZW50OwotICAg
IEVEaXNwbGF5IG1fcHJldmlvdXNEaXNwbGF5OwotICAgIEVWaXNpYmlsaXR5IG1fcHJldmlvdXNW
aXNpYmlsaXR5OwotICAgIEVWaXNpYmlsaXR5IG1fcHJldmlvdXNJbXBsaWNpdFZpc2liaWxpdHk7
CisgICAgRGlzcGxheVR5cGUgbV9wcmV2aW91c0Rpc3BsYXk7CisgICAgVmlzaWJpbGl0eSBtX3By
ZXZpb3VzVmlzaWJpbGl0eTsKKyAgICBWaXNpYmlsaXR5IG1fcHJldmlvdXNJbXBsaWNpdFZpc2li
aWxpdHk7CiB9OwogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIApAQCAtMjU3LDEzICsyNTcsMTMg
QEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6cG9wUGFyZW50c1RvRGVwdAogdm9pZCBSZW5kZXJU
cmVlVXBkYXRlcjo6dXBkYXRlQmVmb3JlRGVzY2VuZGFudHMoRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgU3R5bGU6OkVsZW1lbnRVcGRhdGVzKiB1cGRhdGVzKQogewogICAgIGlmICh1cGRhdGVzKQot
ICAgICAgICBnZW5lcmF0ZWRDb250ZW50KCkudXBkYXRlUHNldWRvRWxlbWVudChlbGVtZW50LCB1
cGRhdGVzLT5iZWZvcmVQc2V1ZG9FbGVtZW50VXBkYXRlLCBCRUZPUkUpOworICAgICAgICBnZW5l
cmF0ZWRDb250ZW50KCkudXBkYXRlUHNldWRvRWxlbWVudChlbGVtZW50LCB1cGRhdGVzLT5iZWZv
cmVQc2V1ZG9FbGVtZW50VXBkYXRlLCBQc2V1ZG9JZDo6QmVmb3JlKTsKIH0KIAogdm9pZCBSZW5k
ZXJUcmVlVXBkYXRlcjo6dXBkYXRlQWZ0ZXJEZXNjZW5kYW50cyhFbGVtZW50JiBlbGVtZW50LCBj
b25zdCBTdHlsZTo6RWxlbWVudFVwZGF0ZXMqIHVwZGF0ZXMpCiB7CiAgICAgaWYgKHVwZGF0ZXMp
Ci0gICAgICAgIGdlbmVyYXRlZENvbnRlbnQoKS51cGRhdGVQc2V1ZG9FbGVtZW50KGVsZW1lbnQs
IHVwZGF0ZXMtPmFmdGVyUHNldWRvRWxlbWVudFVwZGF0ZSwgQUZURVIpOworICAgICAgICBnZW5l
cmF0ZWRDb250ZW50KCkudXBkYXRlUHNldWRvRWxlbWVudChlbGVtZW50LCB1cGRhdGVzLT5hZnRl
clBzZXVkb0VsZW1lbnRVcGRhdGUsIFBzZXVkb0lkOjpBZnRlcik7CiAKICAgICBhdXRvKiByZW5k
ZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQpAQCAtMzE3LDEz
ICszMTcsMTMgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlRWxlbWVudFJlbgogICAg
ICAgICB9CiAKICAgICAgICAgLy8gZGlzcGxheTpub25lIGNhbmNlbHMgYW5pbWF0aW9ucy4KLSAg
ICAgICAgYXV0byB0ZWFyZG93blR5cGUgPSB1cGRhdGUuc3R5bGUtPmRpc3BsYXkoKSA9PSBOT05F
ID8gVGVhcmRvd25UeXBlOjpSZW5kZXJlclVwZGF0ZUNhbmNlbGluZ0FuaW1hdGlvbnMgOiBUZWFy
ZG93blR5cGU6OlJlbmRlcmVyVXBkYXRlOworICAgICAgICBhdXRvIHRlYXJkb3duVHlwZSA9IHVw
ZGF0ZS5zdHlsZS0+ZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpOb25lID8gVGVhcmRvd25UeXBl
OjpSZW5kZXJlclVwZGF0ZUNhbmNlbGluZ0FuaW1hdGlvbnMgOiBUZWFyZG93blR5cGU6OlJlbmRl
cmVyVXBkYXRlOwogICAgICAgICB0ZWFyRG93blJlbmRlcmVycyhlbGVtZW50LCB0ZWFyZG93blR5
cGUsIG1fYnVpbGRlcik7CiAKICAgICAgICAgcmVuZGVyaW5nUGFyZW50KCkuZGlkQ3JlYXRlT3JE
ZXN0cm95Q2hpbGRSZW5kZXJlciA9IHRydWU7CiAgICAgfQogCi0gICAgYm9vbCBoYXNEaXNwbGF5
Q29udGVudHMgPSB1cGRhdGUuc3R5bGUtPmRpc3BsYXkoKSA9PSBDT05URU5UUzsKKyAgICBib29s
IGhhc0Rpc3BsYXlDb250ZW50cyA9IHVwZGF0ZS5zdHlsZS0+ZGlzcGxheSgpID09IERpc3BsYXlU
eXBlOjpDb250ZW50czsKICAgICBpZiAoaGFzRGlzcGxheUNvbnRlbnRzKQogICAgICAgICBlbGVt
ZW50LnN0b3JlRGlzcGxheUNvbnRlbnRzU3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRyKCp1cGRh
dGUuc3R5bGUpKTsKICAgICBlbHNlCkBAIC02NDAsMzQgKzY0MCwzNCBAQCBSZW5kZXJWaWV3JiBS
ZW5kZXJUcmVlVXBkYXRlcjo6cmVuZGVyVmllCiB9CiAKICNpZiBQTEFURk9STShJT1MpCi1zdGF0
aWMgRVZpc2liaWxpdHkgZWxlbWVudEltcGxpY2l0VmlzaWJpbGl0eShjb25zdCBFbGVtZW50JiBl
bGVtZW50KQorc3RhdGljIFZpc2liaWxpdHkgZWxlbWVudEltcGxpY2l0VmlzaWJpbGl0eShjb25z
dCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5k
ZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBWSVNJQkxFOworICAg
ICAgICByZXR1cm4gVmlzaWJpbGl0eTo6VmlzaWJsZTsKIAogICAgIGF1dG8mIHN0eWxlID0gcmVu
ZGVyZXItPnN0eWxlKCk7CiAKICAgICBhdXRvIHdpZHRoID0gc3R5bGUud2lkdGgoKTsKICAgICBh
dXRvIGhlaWdodCA9IHN0eWxlLmhlaWdodCgpOwogICAgIGlmICgod2lkdGguaXNGaXhlZCgpICYm
IHdpZHRoLnZhbHVlKCkgPD0gMCkgfHwgKGhlaWdodC5pc0ZpeGVkKCkgJiYgaGVpZ2h0LnZhbHVl
KCkgPD0gMCkpCi0gICAgICAgIHJldHVybiBISURERU47CisgICAgICAgIHJldHVybiBWaXNpYmls
aXR5OjpIaWRkZW47CiAKICAgICBhdXRvIHRvcCA9IHN0eWxlLnRvcCgpOwogICAgIGF1dG8gbGVm
dCA9IHN0eWxlLmxlZnQoKTsKICAgICBpZiAobGVmdC5pc0ZpeGVkKCkgJiYgd2lkdGguaXNGaXhl
ZCgpICYmIC1sZWZ0LnZhbHVlKCkgPj0gd2lkdGgudmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIEhJ
RERFTjsKKyAgICAgICAgcmV0dXJuIFZpc2liaWxpdHk6OkhpZGRlbjsKIAogICAgIGlmICh0b3Au
aXNGaXhlZCgpICYmIGhlaWdodC5pc0ZpeGVkKCkgJiYgLXRvcC52YWx1ZSgpID49IGhlaWdodC52
YWx1ZSgpKQotICAgICAgICByZXR1cm4gSElEREVOOwotICAgIHJldHVybiBWSVNJQkxFOworICAg
ICAgICByZXR1cm4gVmlzaWJpbGl0eTo6SGlkZGVuOworICAgIHJldHVybiBWaXNpYmlsaXR5OjpW
aXNpYmxlOwogfQogCiBDaGVja0ZvclZpc2liaWxpdHlDaGFuZ2U6OkNoZWNrRm9yVmlzaWJpbGl0
eUNoYW5nZShjb25zdCBFbGVtZW50JiBlbGVtZW50KQogICAgIDogbV9lbGVtZW50KGVsZW1lbnQp
Ci0gICAgLCBtX3ByZXZpb3VzRGlzcGxheShlbGVtZW50LnJlbmRlclN0eWxlKCkgPyBlbGVtZW50
LnJlbmRlclN0eWxlKCktPmRpc3BsYXkoKSA6IE5PTkUpCi0gICAgLCBtX3ByZXZpb3VzVmlzaWJp
bGl0eShlbGVtZW50LnJlbmRlclN0eWxlKCkgPyBlbGVtZW50LnJlbmRlclN0eWxlKCktPnZpc2li
aWxpdHkoKSA6IEhJRERFTikKLSAgICAsIG1fcHJldmlvdXNJbXBsaWNpdFZpc2liaWxpdHkoV0tP
YnNlcnZpbmdDb250ZW50Q2hhbmdlcygpICYmIFdLT2JzZXJ2ZWRDb250ZW50Q2hhbmdlKCkgIT0g
V0tDb250ZW50VmlzaWJpbGl0eUNoYW5nZSA/IGVsZW1lbnRJbXBsaWNpdFZpc2liaWxpdHkoZWxl
bWVudCkgOiBWSVNJQkxFKQorICAgICwgbV9wcmV2aW91c0Rpc3BsYXkoZWxlbWVudC5yZW5kZXJT
dHlsZSgpID8gZWxlbWVudC5yZW5kZXJTdHlsZSgpLT5kaXNwbGF5KCkgOiBEaXNwbGF5VHlwZTo6
Tm9uZSkKKyAgICAsIG1fcHJldmlvdXNWaXNpYmlsaXR5KGVsZW1lbnQucmVuZGVyU3R5bGUoKSA/
IGVsZW1lbnQucmVuZGVyU3R5bGUoKS0+dmlzaWJpbGl0eSgpIDogVmlzaWJpbGl0eTo6SGlkZGVu
KQorICAgICwgbV9wcmV2aW91c0ltcGxpY2l0VmlzaWJpbGl0eShXS09ic2VydmluZ0NvbnRlbnRD
aGFuZ2VzKCkgJiYgV0tPYnNlcnZlZENvbnRlbnRDaGFuZ2UoKSAhPSBXS0NvbnRlbnRWaXNpYmls
aXR5Q2hhbmdlID8gZWxlbWVudEltcGxpY2l0VmlzaWJpbGl0eShlbGVtZW50KSA6IFZpc2liaWxp
dHk6OlZpc2libGUpCiB7CiB9CiAKQEAgLTY4MCw4ICs2ODAsOCBAQCBDaGVja0ZvclZpc2liaWxp
dHlDaGFuZ2U6On5DaGVja0ZvclZpc2liCiAgICAgYXV0byogc3R5bGUgPSBtX2VsZW1lbnQucmVu
ZGVyU3R5bGUoKTsKICAgICBpZiAoIXN0eWxlKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKCht
X3ByZXZpb3VzRGlzcGxheSA9PSBOT05FICYmIHN0eWxlLT5kaXNwbGF5KCkgIT0gTk9ORSkgfHwg
KG1fcHJldmlvdXNWaXNpYmlsaXR5ID09IEhJRERFTiAmJiBzdHlsZS0+dmlzaWJpbGl0eSgpICE9
IEhJRERFTikKLSAgICAgICAgfHwgKG1fcHJldmlvdXNJbXBsaWNpdFZpc2liaWxpdHkgPT0gSElE
REVOICYmIGVsZW1lbnRJbXBsaWNpdFZpc2liaWxpdHkobV9lbGVtZW50KSA9PSBWSVNJQkxFKSkK
KyAgICBpZiAoKG1fcHJldmlvdXNEaXNwbGF5ID09IERpc3BsYXlUeXBlOjpOb25lICYmIHN0eWxl
LT5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6Ok5vbmUpIHx8IChtX3ByZXZpb3VzVmlzaWJpbGl0
eSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gJiYgc3R5bGUtPnZpc2liaWxpdHkoKSAhPSBWaXNpYmls
aXR5OjpIaWRkZW4pCisgICAgICAgIHx8IChtX3ByZXZpb3VzSW1wbGljaXRWaXNpYmlsaXR5ID09
IFZpc2liaWxpdHk6OkhpZGRlbiAmJiBlbGVtZW50SW1wbGljaXRWaXNpYmlsaXR5KG1fZWxlbWVu
dCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkpCiAgICAgICAgIFdLU2V0T2JzZXJ2ZWRDb250ZW50
Q2hhbmdlKFdLQ29udGVudFZpc2liaWxpdHlDaGFuZ2UpOwogfQogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRD
b250ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmNwcAkocmV2aXNpb24gMjMyMTA0
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVy
R2VuZXJhdGVkQ29udGVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDE0ICs5MSwxNCBAQCBz
dGF0aWMgdm9pZCB1cGRhdGVTdHlsZUZvckNvbnRlbnRSZW5kZXJlCiAKIHZvaWQgUmVuZGVyVHJl
ZVVwZGF0ZXI6OkdlbmVyYXRlZENvbnRlbnQ6OnVwZGF0ZVBzZXVkb0VsZW1lbnQoRWxlbWVudCYg
Y3VycmVudCwgY29uc3Qgc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFVwZGF0ZT4mIHVwZGF0
ZSwgUHNldWRvSWQgcHNldWRvSWQpCiB7Ci0gICAgUHNldWRvRWxlbWVudCogcHNldWRvRWxlbWVu
dCA9IHBzZXVkb0lkID09IEJFRk9SRSA/IGN1cnJlbnQuYmVmb3JlUHNldWRvRWxlbWVudCgpIDog
Y3VycmVudC5hZnRlclBzZXVkb0VsZW1lbnQoKTsKKyAgICBQc2V1ZG9FbGVtZW50KiBwc2V1ZG9F
bGVtZW50ID0gcHNldWRvSWQgPT0gUHNldWRvSWQ6OkJlZm9yZSA/IGN1cnJlbnQuYmVmb3JlUHNl
dWRvRWxlbWVudCgpIDogY3VycmVudC5hZnRlclBzZXVkb0VsZW1lbnQoKTsKIAogICAgIGlmIChh
dXRvKiByZW5kZXJlciA9IHBzZXVkb0VsZW1lbnQgPyBwc2V1ZG9FbGVtZW50LT5yZW5kZXJlcigp
IDogbnVsbHB0cikKICAgICAgICAgbV91cGRhdGVyLnJlbmRlclRyZWVQb3NpdGlvbigpLmludmFs
aWRhdGVOZXh0U2libGluZygqcmVuZGVyZXIpOwogCiAgICAgaWYgKCFuZWVkc1BzZXVkb0VsZW1l
bnQodXBkYXRlKSkgewogICAgICAgICBpZiAocHNldWRvRWxlbWVudCkgewotICAgICAgICAgICAg
aWYgKHBzZXVkb0lkID09IEJFRk9SRSkKKyAgICAgICAgICAgIGlmIChwc2V1ZG9JZCA9PSBQc2V1
ZG9JZDo6QmVmb3JlKQogICAgICAgICAgICAgICAgIHJlbW92ZUJlZm9yZVBzZXVkb0VsZW1lbnQo
Y3VycmVudCwgbV91cGRhdGVyLm1fYnVpbGRlcik7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgcmVtb3ZlQWZ0ZXJQc2V1ZG9FbGVtZW50KGN1cnJlbnQsIG1fdXBkYXRlci5tX2J1
aWxkZXIpOwpAQCAtMTE2LDEzICsxMTYsMTMgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6R2Vu
ZXJhdGVkQ29udGVudAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobmV3UHNldWRvRWxlbWVu
dCkgewotICAgICAgICBpZiAocHNldWRvSWQgPT0gQkVGT1JFKQorICAgICAgICBpZiAocHNldWRv
SWQgPT0gUHNldWRvSWQ6OkJlZm9yZSkKICAgICAgICAgICAgIGN1cnJlbnQuc2V0QmVmb3JlUHNl
dWRvRWxlbWVudChuZXdQc2V1ZG9FbGVtZW50LnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBjdXJyZW50LnNldEFmdGVyUHNldWRvRWxlbWVudChuZXdQc2V1ZG9F
bGVtZW50LnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAotICAgIGlmICh1cGRhdGUtPnN0eWxl
LT5kaXNwbGF5KCkgPT0gQ09OVEVOVFMpIHsKKyAgICBpZiAodXBkYXRlLT5zdHlsZS0+ZGlzcGxh
eSgpID09IERpc3BsYXlUeXBlOjpDb250ZW50cykgewogICAgICAgICAvLyBGb3IgZGlzcGxheTpj
b250ZW50cyB3ZSBjcmVhdGUgYW4gaW5saW5lIHdyYXBwZXIgdGhhdCBpbmhlcml0cyBpdHMKICAg
ICAgICAgLy8gc3R5bGUgZnJvbSB0aGUgZGlzcGxheTpjb250ZW50cyBzdHlsZS4KICAgICAgICAg
YXV0byBjb250ZW50c1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZVB0cigpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwCShyZXZpc2lvbiAyMzIx
MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTksNyArMTE5LDcgQEAgR2x5cGhPdmVyZmxvdyB2aXN1YWxPdmVyZmxv
d0ZvckRlY29yYXRpbwogICAgIGZsb2F0IGhlaWdodCA9IGxpbmVTdHlsZS5mb250Q2FzY2FkZSgp
LmZvbnRNZXRyaWNzKCkuZmxvYXRIZWlnaHQoKTsKICAgICBHbHlwaE92ZXJmbG93IG92ZXJmbG93
UmVzdWx0OwogICAgIAotICAgIGlmIChkZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29yYXRpb25T
dHlsZVdhdnkpIHsKKyAgICBpZiAoZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5
bGU6OldhdnkpIHsKICAgICAgICAgZ2V0V2F2eVN0cm9rZVBhcmFtZXRlcnMobGluZVN0eWxlLmNv
bXB1dGVkRm9udFBpeGVsU2l6ZSgpLCBjb250cm9sUG9pbnREaXN0YW5jZSwgc3RlcCk7CiAgICAg
ICAgIHdhdnlPZmZzZXQgPSB3YXZ5T2Zmc2V0RnJvbURlY29yYXRpb24oKTsKICAgICAgICAgb3Zl
cmZsb3dSZXN1bHQubGVmdCA9IHN0cm9rZVRoaWNrbmVzczsKQEAgLTEzMSw3ICsxMzEsNyBAQCBH
bHlwaE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvCiAgICAgICAgIC8vIENvbXBl
bnNhdGUgZm9yIHRoZSBpbnRlZ3JhbCBjZWlsaW5nIGluIEdyYXBoaWNzQ29udGV4dDo6Y29tcHV0
ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dCgpCiAgICAgICAgIGludCB1bmRl
cmxpbmVPZmZzZXQgPSAxOwogICAgICAgICB1bmRlcmxpbmVPZmZzZXQgKz0gY29tcHV0ZVVuZGVy
bGluZU9mZnNldChsaW5lU3R5bGUudGV4dFVuZGVybGluZVBvc2l0aW9uKCksIGxpbmVTdHlsZS5m
b250TWV0cmljcygpLCBpbmxpbmVUZXh0Qm94LCBzdHJva2VUaGlja25lc3MpOwotICAgICAgICBp
ZiAoZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGVXYXZ5KSB7CisgICAgICAg
IGlmIChkZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSkgewogICAg
ICAgICAgICAgZXh0ZW5kSW50VG9GbG9hdChvdmVyZmxvd1Jlc3VsdC5ib3R0b20sIHVuZGVybGlu
ZU9mZnNldCArIHdhdnlPZmZzZXQgKyBjb250cm9sUG9pbnREaXN0YW5jZSArIHN0cm9rZVRoaWNr
bmVzcyAtIGhlaWdodCk7CiAgICAgICAgICAgICBleHRlbmRJbnRUb0Zsb2F0KG92ZXJmbG93UmVz
dWx0LnRvcCwgLSh1bmRlcmxpbmVPZmZzZXQgKyB3YXZ5T2Zmc2V0IC0gY29udHJvbFBvaW50RGlz
dGFuY2UgLSBzdHJva2VUaGlja25lc3MpKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTE0MCw3ICsx
NDAsNyBAQCBHbHlwaE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvCiAgICAgICAg
IH0KICAgICB9CiAgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbk92ZXJsaW5lKSB7
Ci0gICAgICAgIGlmIChkZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZVdhdnkp
IHsKKyAgICAgICAgaWYgKGRlY29yYXRpb25TdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpX
YXZ5KSB7CiAgICAgICAgICAgICBleHRlbmRJbnRUb0Zsb2F0KG92ZXJmbG93UmVzdWx0LmJvdHRv
bSwgLXdhdnlPZmZzZXQgKyBjb250cm9sUG9pbnREaXN0YW5jZSArIHN0cm9rZVRoaWNrbmVzcyAt
IGhlaWdodCk7CiAgICAgICAgICAgICBleHRlbmRJbnRUb0Zsb2F0KG92ZXJmbG93UmVzdWx0LnRv
cCwgd2F2eU9mZnNldCArIGNvbnRyb2xQb2ludERpc3RhbmNlICsgc3Ryb2tlVGhpY2tuZXNzKTsK
ICAgICAgICAgfSBlbHNlIHsKQEAgLTE1MCw3ICsxNTAsNyBAQCBHbHlwaE92ZXJmbG93IHZpc3Vh
bE92ZXJmbG93Rm9yRGVjb3JhdGlvCiAgICAgfQogICAgIGlmIChkZWNvcmF0aW9uICYgVGV4dERl
Y29yYXRpb25MaW5lVGhyb3VnaCkgewogICAgICAgICBmbG9hdCBiYXNlbGluZSA9IGxpbmVTdHls
ZS5mb250TWV0cmljcygpLmZsb2F0QXNjZW50KCk7Ci0gICAgICAgIGlmIChkZWNvcmF0aW9uU3R5
bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZVdhdnkpIHsKKyAgICAgICAgaWYgKGRlY29yYXRpb25T
dHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5KSB7CiAgICAgICAgICAgICBleHRlbmRJ
bnRUb0Zsb2F0KG92ZXJmbG93UmVzdWx0LmJvdHRvbSwgMiAqIGJhc2VsaW5lIC8gMyArIGNvbnRy
b2xQb2ludERpc3RhbmNlICsgc3Ryb2tlVGhpY2tuZXNzIC0gaGVpZ2h0KTsKICAgICAgICAgICAg
IGV4dGVuZEludFRvRmxvYXQob3ZlcmZsb3dSZXN1bHQudG9wLCAtKDIgKiBiYXNlbGluZSAvIDMg
LSBjb250cm9sUG9pbnREaXN0YW5jZSAtIHN0cm9rZVRoaWNrbmVzcykpOwogICAgICAgICB9IGVs
c2UgewpJbmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVDaGFuZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQ2hhbmdlLmNwcAkocmV2aXNpb24gMjMy
MTA0KQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVDaGFuZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNSw3ICszNSw3IEBAIENoYW5nZSBkZXRlcm1pbmVDaGFuZ2UoY29uc3QgUmVuZGVy
U3R5bGUKIHsKICAgICBpZiAoczEuZGlzcGxheSgpICE9IHMyLmRpc3BsYXkoKSkKICAgICAgICAg
cmV0dXJuIERldGFjaDsKLSAgICBpZiAoczEuaGFzUHNldWRvU3R5bGUoRklSU1RfTEVUVEVSKSAh
PSBzMi5oYXNQc2V1ZG9TdHlsZShGSVJTVF9MRVRURVIpKQorICAgIGlmIChzMS5oYXNQc2V1ZG9T
dHlsZShQc2V1ZG9JZDo6Rmlyc3RMZXR0ZXIpICE9IHMyLmhhc1BzZXVkb1N0eWxlKFBzZXVkb0lk
OjpGaXJzdExldHRlcikpCiAgICAgICAgIHJldHVybiBEZXRhY2g7CiAgICAgLy8gV2UganVzdCBk
ZXRhY2ggaWYgYSByZW5kZXJlciBhY3F1aXJlcyBvciBsb3NlcyBhIGNvbHVtbi1zcGFuLCBzaW5j
ZSBzcGFubmluZyBlbGVtZW50cwogICAgIC8vIHR5cGljYWxseSB3b24ndCBjb250YWluIG11Y2gg
Y29udGVudC4KQEAgLTYyLDcgKzYyLDcgQEAgQ2hhbmdlIGRldGVybWluZUNoYW5nZShjb25zdCBS
ZW5kZXJTdHlsZQogICAgIC8vIElmIHRoZSBwc2V1ZG9TdHlsZXMgaGF2ZSBjaGFuZ2VkLCB3ZSB3
YW50IGFueSBTdHlsZUNoYW5nZSB0aGF0IGlzIG5vdCBOb0NoYW5nZQogICAgIC8vIGJlY2F1c2Ug
c2V0U3R5bGUgd2lsbCBkbyB0aGUgcmlnaHQgdGhpbmcgd2l0aCBhbnl0aGluZyBlbHNlLgogICAg
IGlmIChzMS5oYXNBbnlQdWJsaWNQc2V1ZG9TdHlsZXMoKSkgewotICAgICAgICBmb3IgKFBzZXVk
b0lkIHBzZXVkb0lkID0gRklSU1RfUFVCTElDX1BTRVVET0lEOyBwc2V1ZG9JZCA8IEZJUlNUX0lO
VEVSTkFMX1BTRVVET0lEOyBwc2V1ZG9JZCA9IHN0YXRpY19jYXN0PFBzZXVkb0lkPihwc2V1ZG9J
ZCArIDEpKSB7CisgICAgICAgIGZvciAoUHNldWRvSWQgcHNldWRvSWQgPSBQc2V1ZG9JZDo6Rmly
c3RQdWJsaWNQc2V1ZG9JZDsgcHNldWRvSWQgPCBQc2V1ZG9JZDo6Rmlyc3RJbnRlcm5hbFBzZXVk
b0lkOyBwc2V1ZG9JZCA9IHN0YXRpY19jYXN0PFBzZXVkb0lkPihzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ocHNldWRvSWQpICsgMSkpIHsKICAgICAgICAgICAgIGlmIChzMS5oYXNQc2V1ZG9TdHlsZShw
c2V1ZG9JZCkpIHsKICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcHMyID0gczIuZ2V0Q2Fj
aGVkUHNldWRvU3R5bGUocHNldWRvSWQpOwogICAgICAgICAgICAgICAgIGlmICghcHMyKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVGb250U2l6ZUZ1bmN0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVGb250U2l6ZUZ1bmN0aW9ucy5jcHAJ
KHJldmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlRm9udFNpemVG
dW5jdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBAIGZsb2F0IGNvbXB1
dGVkRm9udFNpemVGcm9tU3BlY2lmaWVkU2l6ZSgKICAgICBpZiAoIXVzZVNWR1pvb21SdWxlcykg
ewogICAgICAgICB6b29tRmFjdG9yID0gc3R5bGUtPmVmZmVjdGl2ZVpvb20oKTsKICAgICAgICAg
RnJhbWUqIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsKLSAgICAgICAgaWYgKGZyYW1lICYmIHN0
eWxlLT50ZXh0Wm9vbSgpICE9IFRleHRab29tUmVzZXQpCisgICAgICAgIGlmIChmcmFtZSAmJiBz
dHlsZS0+dGV4dFpvb20oKSAhPSBUZXh0Wm9vbTo6UmVzZXQpCiAgICAgICAgICAgICB6b29tRmFj
dG9yICo9IGZyYW1lLT50ZXh0Wm9vbUZhY3RvcigpOwogICAgIH0KICAgICByZXR1cm4gY29tcHV0
ZWRGb250U2l6ZUZyb21TcGVjaWZpZWRTaXplKHNwZWNpZmllZFNpemUsIGlzQWJzb2x1dGVTaXpl
LCB6b29tRmFjdG9yLCB1c2VTVkdab29tUnVsZXMgPyBNaW5pbXVtRm9udFNpemVSdWxlOjpOb25l
IDogTWluaW11bUZvbnRTaXplUnVsZTo6QWJzb2x1dGVBbmRSZWxhdGl2ZSwgZG9jdW1lbnQuc2V0
dGluZ3MoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZl
Rm9yRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDggKzU4
LDggQEAgUmVuZGVyU3R5bGUgcmVzb2x2ZUZvckRvY3VtZW50KGNvbnN0IERvYwogCiAgICAgYXV0
byBkb2N1bWVudFN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwogCi0gICAgZG9jdW1lbnRT
dHlsZS5zZXREaXNwbGF5KEJMT0NLKTsKLSAgICBkb2N1bWVudFN0eWxlLnNldFJUTE9yZGVyaW5n
KGRvY3VtZW50LnZpc3VhbGx5T3JkZXJlZCgpID8gVmlzdWFsT3JkZXIgOiBMb2dpY2FsT3JkZXIp
OworICAgIGRvY3VtZW50U3R5bGUuc2V0RGlzcGxheShEaXNwbGF5VHlwZTo6QmxvY2spOworICAg
IGRvY3VtZW50U3R5bGUuc2V0UlRMT3JkZXJpbmcoZG9jdW1lbnQudmlzdWFsbHlPcmRlcmVkKCkg
PyBPcmRlcjo6VmlzdWFsIDogT3JkZXI6OkxvZ2ljYWwpOwogICAgIGRvY3VtZW50U3R5bGUuc2V0
Wm9vbSghZG9jdW1lbnQucHJpbnRpbmcoKSA/IHJlbmRlclZpZXcuZnJhbWUoKS5wYWdlWm9vbUZh
Y3RvcigpIDogMSk7CiAgICAgZG9jdW1lbnRTdHlsZS5zZXRQYWdlU2NhbGVUcmFuc2Zvcm0ocmVu
ZGVyVmlldy5mcmFtZSgpLmZyYW1lU2NhbGVGYWN0b3IoKSk7CiAgICAgRm9udENhc2NhZGVEZXNj
cmlwdGlvbiBkb2N1bWVudEZvbnREZXNjcmlwdGlvbiA9IGRvY3VtZW50U3R5bGUuZm9udERlc2Ny
aXB0aW9uKCk7CkBAIC05OSw3ICs5OSw3IEBAIFJlbmRlclN0eWxlIHJlc29sdmVGb3JEb2N1bWVu
dChjb25zdCBEb2MKICAgICAgICAgICAgIHJlbmRlclZpZXcudXBkYXRlQ29sdW1uUHJvZ3Jlc3Np
b25Gcm9tU3R5bGUoZG9jdW1lbnRTdHlsZSk7CiAgICAgICAgIGlmIChyZW5kZXJWaWV3LnBhZ2Uo
KS5wYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKCkpIHsKICAgICAgICAgICAgIGRvY3VtZW50U3R5
bGUuc2V0TGluZUdyaWQoIi13ZWJraXQtZGVmYXVsdC1wYWdpbmF0aW9uLWdyaWQiKTsKLSAgICAg
ICAgICAgIGRvY3VtZW50U3R5bGUuc2V0TGluZVNuYXAoTGluZVNuYXBDb250YWluKTsKKyAgICAg
ICAgICAgIGRvY3VtZW50U3R5bGUuc2V0TGluZVNuYXAoTGluZVNuYXA6OkNvbnRhaW4pOwogICAg
ICAgICB9CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNoYXJpbmdS
ZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTaGFy
aW5nUmVzb2x2ZXIuY3BwCShyZXZpc2lvbiAyMzIxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVNoYXJpbmdSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcg
QEAgc3RydWN0IFNoYXJpbmdSZXNvbHZlcjo6Q29udGV4dCB7CiAgICAgY29uc3QgVXBkYXRlJiB1
cGRhdGU7CiAgICAgY29uc3QgU3R5bGVkRWxlbWVudCYgZWxlbWVudDsKICAgICBib29sIGVsZW1l
bnRBZmZlY3RlZEJ5Q2xhc3NSdWxlczsKLSAgICBFSW5zaWRlTGluayBlbGVtZW50TGlua1N0YXRl
OworICAgIEluc2lkZUxpbmsgZWxlbWVudExpbmtTdGF0ZTsKIH07CiAKIFNoYXJpbmdSZXNvbHZl
cjo6U2hhcmluZ1Jlc29sdmVyKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgRG9jdW1l
bnRSdWxlU2V0cyYgcnVsZVNldHMsIGNvbnN0IFNlbGVjdG9yRmlsdGVyJiBzZWxlY3RvckZpbHRl
cikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAJKHJl
dmlzaW9uIDIzMjEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDcgKzE1Niw3IEBAIHN0YXRpYyBib29sIGFmZmVj
dHNSZW5kZXJlZFN1YnRyZWUoRWxlbWUKIHsKICAgICBpZiAoZWxlbWVudC5yZW5kZXJlcigpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAobmV3U3R5bGUuZGlzcGxheSgpICE9IE5PTkUp
CisgICAgaWYgKG5ld1N0eWxlLmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Tm9uZSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKGVsZW1lbnQucmVuZGVyZXJJc05lZWRlZChuZXdTdHls
ZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjM5LDE1ICsyMzksMTUgQEAgRWxlbWVudFVw
ZGF0ZXMgVHJlZVJlc29sdmVyOjpyZXNvbHZlRWxlbQogICAgICAgICB9CiAgICAgfQogCi0gICAg
YXV0byBiZWZvcmVVcGRhdGUgPSByZXNvbHZlUHNldWRvU3R5bGUoZWxlbWVudCwgdXBkYXRlLCBC
RUZPUkUpOwotICAgIGF1dG8gYWZ0ZXJVcGRhdGUgPSByZXNvbHZlUHNldWRvU3R5bGUoZWxlbWVu
dCwgdXBkYXRlLCBBRlRFUik7CisgICAgYXV0byBiZWZvcmVVcGRhdGUgPSByZXNvbHZlUHNldWRv
U3R5bGUoZWxlbWVudCwgdXBkYXRlLCBQc2V1ZG9JZDo6QmVmb3JlKTsKKyAgICBhdXRvIGFmdGVy
VXBkYXRlID0gcmVzb2x2ZVBzZXVkb1N0eWxlKGVsZW1lbnQsIHVwZGF0ZSwgUHNldWRvSWQ6OkFm
dGVyKTsKIAogICAgIHJldHVybiB7IFdURk1vdmUodXBkYXRlKSwgZGVzY2VuZGFudHNUb1Jlc29s
dmUsIFdURk1vdmUoYmVmb3JlVXBkYXRlKSwgV1RGTW92ZShhZnRlclVwZGF0ZSkgfTsKIH0KIAog
RWxlbWVudFVwZGF0ZSBUcmVlUmVzb2x2ZXI6OnJlc29sdmVQc2V1ZG9TdHlsZShFbGVtZW50JiBl
bGVtZW50LCBjb25zdCBFbGVtZW50VXBkYXRlJiBlbGVtZW50VXBkYXRlLCBQc2V1ZG9JZCBwc2V1
ZG9JZCkKIHsKLSAgICBpZiAoZWxlbWVudFVwZGF0ZS5zdHlsZS0+ZGlzcGxheSgpID09IE5PTkUp
CisgICAgaWYgKGVsZW1lbnRVcGRhdGUuc3R5bGUtPmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6
Tm9uZSkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBpZiAoIWVsZW1lbnRVcGRhdGUuc3R5bGUt
Pmhhc1BzZXVkb1N0eWxlKHBzZXVkb0lkKSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTI1Niwx
MSArMjU2LDExIEBAIEVsZW1lbnRVcGRhdGUgVHJlZVJlc29sdmVyOjpyZXNvbHZlUHNldWQKICAg
ICBpZiAoIXBzZXVkb1N0eWxlKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgUHNldWRvRWxl
bWVudCogcHNldWRvRWxlbWVudCA9IHBzZXVkb0lkID09IEJFRk9SRSA/IGVsZW1lbnQuYmVmb3Jl
UHNldWRvRWxlbWVudCgpIDogZWxlbWVudC5hZnRlclBzZXVkb0VsZW1lbnQoKTsKKyAgICBQc2V1
ZG9FbGVtZW50KiBwc2V1ZG9FbGVtZW50ID0gcHNldWRvSWQgPT0gUHNldWRvSWQ6OkJlZm9yZSA/
IGVsZW1lbnQuYmVmb3JlUHNldWRvRWxlbWVudCgpIDogZWxlbWVudC5hZnRlclBzZXVkb0VsZW1l
bnQoKTsKICAgICBpZiAoIXBzZXVkb0VsZW1lbnQpIHsKICAgICAgICAgYXV0byBuZXdQc2V1ZG9F
bGVtZW50ID0gUHNldWRvRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQsIHBzZXVkb0lkKTsKICAgICAg
ICAgcHNldWRvRWxlbWVudCA9IG5ld1BzZXVkb0VsZW1lbnQucHRyKCk7Ci0gICAgICAgIGlmIChw
c2V1ZG9JZCA9PSBCRUZPUkUpCisgICAgICAgIGlmIChwc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6QmVm
b3JlKQogICAgICAgICAgICAgZWxlbWVudC5zZXRCZWZvcmVQc2V1ZG9FbGVtZW50KFdURk1vdmUo
bmV3UHNldWRvRWxlbWVudCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBlbGVtZW50LnNl
dEFmdGVyUHNldWRvRWxlbWVudChXVEZNb3ZlKG5ld1BzZXVkb0VsZW1lbnQpKTsKQEAgLTI3NCw5
ICsyNzQsOSBAQCBjb25zdCBSZW5kZXJTdHlsZSogVHJlZVJlc29sdmVyOjpwYXJlbnRCCiAgICAg
Ly8gJ2Rpc3BsYXk6IGNvbnRlbnRzJyBkb2Vzbid0IGdlbmVyYXRlIGJveGVzLgogICAgIGZvciAo
dW5zaWduZWQgaSA9IG1fcGFyZW50U3RhY2suc2l6ZSgpOyBpOyAtLWkpIHsKICAgICAgICAgYXV0
byYgcGFyZW50ID0gbV9wYXJlbnRTdGFja1tpIC0gMV07Ci0gICAgICAgIGlmIChwYXJlbnQuc3R5
bGUuZGlzcGxheSgpID09IE5PTkUpCisgICAgICAgIGlmIChwYXJlbnQuc3R5bGUuZGlzcGxheSgp
ID09IERpc3BsYXlUeXBlOjpOb25lKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
ICAgIGlmIChwYXJlbnQuc3R5bGUuZGlzcGxheSgpICE9IENPTlRFTlRTKQorICAgICAgICBpZiAo
cGFyZW50LnN0eWxlLmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Q29udGVudHMpCiAgICAgICAg
ICAgICByZXR1cm4gJnBhcmVudC5zdHlsZTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkBAIC00MzMsNyArNDMzLDcgQEAgc3RhdGljIGJvb2wgaGFzTG9hZGluZ1N0eWxlc2hlZXQo
Y29uc3QgUwogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBjcmVhdGVJbmhl
cml0ZWREaXNwbGF5Q29udGVudHNTdHlsZUlmTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJl
bnRFbGVtZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hTdHlsZSkKIHsKLSAg
ICBpZiAocGFyZW50RWxlbWVudFN0eWxlLmRpc3BsYXkoKSAhPSBDT05URU5UUykKKyAgICBpZiAo
cGFyZW50RWxlbWVudFN0eWxlLmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Q29udGVudHMpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChwYXJlbnRCb3hTdHlsZSAmJiAhcGFyZW50
Qm94U3R5bGUtPmluaGVyaXRlZE5vdEVxdWFsKCZwYXJlbnRFbGVtZW50U3R5bGUpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ2NSw3ICs0NjUsNyBAQCB2b2lkIFRyZWVSZXNvbHZlcjo6
cmVzb2x2ZUNvbXBvc2VkVHJlZSgpCiAgICAgICAgIGlmIChpczxUZXh0Pihub2RlKSkgewogICAg
ICAgICAgICAgYXV0byYgdGV4dCA9IGRvd25jYXN0PFRleHQ+KG5vZGUpOwogICAgICAgICAgICAg
Ci0gICAgICAgICAgICBpZiAoKHRleHQuc3R5bGVWYWxpZGl0eSgpID49IFZhbGlkaXR5OjpTdWJ0
cmVlQW5kUmVuZGVyZXJzSW52YWxpZCAmJiBwYXJlbnQuY2hhbmdlICE9IERldGFjaCkgfHwgcGFy
ZW50LnN0eWxlLmRpc3BsYXkoKSA9PSBDT05URU5UUykgeworICAgICAgICAgICAgaWYgKCh0ZXh0
LnN0eWxlVmFsaWRpdHkoKSA+PSBWYWxpZGl0eTo6U3VidHJlZUFuZFJlbmRlcmVyc0ludmFsaWQg
JiYgcGFyZW50LmNoYW5nZSAhPSBEZXRhY2gpIHx8IHBhcmVudC5zdHlsZS5kaXNwbGF5KCkgPT0g
RGlzcGxheVR5cGU6OkNvbnRlbnRzKSB7CiAgICAgICAgICAgICAgICAgVGV4dFVwZGF0ZSB0ZXh0
VXBkYXRlOwogICAgICAgICAgICAgICAgIHRleHRVcGRhdGUuaW5oZXJpdGVkRGlzcGxheUNvbnRl
bnRzU3R5bGUgPSBjcmVhdGVJbmhlcml0ZWREaXNwbGF5Q29udGVudHNTdHlsZUlmTmVlZGVkKHBh
cmVudC5zdHlsZSwgcGFyZW50Qm94U3R5bGUoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnQuaAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDcgKzE3Miw3IEBAIHByb3RlY3RlZDoKICAgICBjbGFz
cyBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkOwogCiBwcml2YXRlOgotICAgIGNvbnN0IFJlbmRl
clN0eWxlKiBjb21wdXRlZFN0eWxlKFBzZXVkb0lkID0gTk9QU0VVRE8pIGZpbmFsOworICAgIGNv
bnN0IFJlbmRlclN0eWxlKiBjb21wdXRlZFN0eWxlKFBzZXVkb0lkID0gUHNldWRvSWQ6Ok5vbmUp
IGZpbmFsOwogCiAgICAgdmlydHVhbCB2b2lkIGNsZWFyVGFyZ2V0KCkgeyB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcAkocmV2aXNpb24gMjMyMTA0KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsNyArOTMsNyBA
QCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHR0VsZW1lbnQ6OmNyCiAgICAgLy8gV2Ugc3Rp
bGwgaGF2ZSB0byBjcmVhdGUgcmVuZGVyZXJzIGZvciB0aGUgPGc+ICYgPGxpbmVhckdyYWRpZW50
PiBlbGVtZW50LCB0aG91Z2ggdGhlCiAgICAgLy8gc3VidHJlZSBtYXkgYmUgaGlkZGVuIC0gd2Ug
b25seSB3YW50IHRoZSByZXNvdXJjZSByZW5kZXJlcnMgdG8gZXhpc3Qgc28gdGhleSBjYW4gYmUK
ICAgICAvLyByZWZlcmVuY2VkIGZyb20gc29tZXdoZXJlIGVsc2UuCi0gICAgaWYgKHN0eWxlLmRp
c3BsYXkoKSA9PSBOT05FKQorICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6
Ok5vbmUpCiAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdIaWRkZW5Db250
YWluZXI+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiAKICAgICByZXR1cm4gY3JlYXRlUmVuZGVy
ZXI8UmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUp
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341130</attachid>
            <date>2018-05-23 14:30:46 -0700</date>
            <delta_ts>2018-05-23 17:02:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185901-20180523143045.patch</filename>
            <type>text/plain</type>
            <size>673317</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwMyBAQAorMjAxOC0wNS0yMiAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIE1vZGVybml6ZSBSZW5kZXJTdHlsZUNv
bnN0YW50cy5oIC0gUGFydCAyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODU5MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBWE9iamVjdENhY2hlOjppc05vZGVWaXNpYmxlIGNvbnN0KToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlMaXN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9sOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlz
SWdub3JlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVkaWFUaW1l
RGlzcGxheTo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQgY29uc3QpOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0RPTUhpZGRlbiBjb25zdCk6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRlZmF1bHRPYmplY3RJbmNsdXNpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNVbnZp
c2l0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6aXNWaXNpdGVkIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmlzRGF0
YVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBhbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU0FuaW1hdGlv
bnNGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjp1cGRh
dGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnQpOgorICAgICAgICAqIGFuaW1hdGlvbi9DU1NBbmlt
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQW5pbWF0aW9uOjpzeW5jUHJvcGVydGll
c1dpdGhCYWNraW5nQW5pbWF0aW9uKToKKyAgICAgICAgKiBhbmltYXRpb24vRGVjbGFyYXRpdmVB
bmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVjbGFyYXRpdmVBbmltYXRpb246Omlu
aXRpYWxpemUpOgorICAgICAgICAqIGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdFJlYWRPbmx5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0UmVhZE9ubHk6OmJhY2tpbmdBbmlt
YXRpb25Gb3JDb21wb3NpdGVkUmVuZGVyZXIgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVuZGVyVGV4dERl
Y29yYXRpb25TdHlsZUZsYWdzVG9DU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0
VG9QYWdlQnJlYWspOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvQ29sdW1uQnJlYWspOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6c3R5bGVkRWxlbWVudCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpzdHlsZWRS
ZW5kZXJlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlUmVuZGVyU3R5bGVGb3JQ
cm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpzaGFwZVByb3BlcnR5VmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eWluU3R5
bGUpOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAg
ICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBDYXB0aW9uU2lkZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQ3Vyc29yVHlwZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQ3Vyc29yVmlz
aWJpbGl0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3Bl
cmF0b3IgRGlzcGxheVR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZl
VmFsdWU6Om9wZXJhdG9yIEVtcHR5Q2VsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
cmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgTGlzdFN0eWxlUG9zaXRpb24gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIExpc3RTdHlsZVR5cGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEJyZWFr
QmV0d2VlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3Bl
cmF0b3IgQnJlYWtJbnNpZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZl
VmFsdWU6Om9wZXJhdG9yIFRleHRBbGlnbk1vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRleHRBbGlnbkxhc3QgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRleHRKdXN0aWZ5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0RGVj
b3JhdGlvblN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVl
OjpvcGVyYXRvciBUZXh0VHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
aW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBWaXNpYmlsaXR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBXaGl0ZVNwYWNlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBSdWJ5UG9zaXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRleHRF
bXBoYXNpc0ZpbGwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6
Om9wZXJhdG9yIFRleHRFbXBoYXNpc01hcmsgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFBvaW50ZXJFdmVudHMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEh5cGhlbnMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIExpbmVTbmFwIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBMaW5lQWxp
Z24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9y
IE9yZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVy
YXRvciBCb3JkZXJGaXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFs
dWU6Om9wZXJhdG9yIENvbHVtbkF4aXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJp
bWl0aXZlVmFsdWU6Om9wZXJhdG9yIENvbHVtblByb2dyZXNzaW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBDU1NCb3hUeXBlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0Wm9vbSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUNh
cHRpb25TaWRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2
ZVZhbHVlOjpvcGVyYXRvciBFQ3Vyc29yIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFRGlzcGxheSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUVtcHR5Q2Vs
bCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6
b3BlcmF0b3IgRUxpc3RTdHlsZVBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFTGlzdFN0eWxlVHlwZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3Ig
RVRleHRBbGlnbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRp
dmVWYWx1ZTo6b3BlcmF0b3IgRVRleHRUcmFuc2Zvcm0gY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVWaXNpYmlsaXR5IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRv
ciBFV2hpdGVTcGFjZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmlt
aXRpdmVWYWx1ZTo6b3BlcmF0b3IgRVBvaW50ZXJFdmVudHMgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVCb3JkZXJGaXQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTZWxlY3Rvcjo6cHNldWRvSWQpOgorICAgICAgICAqIGNzcy9DU1NUb1N0eWxl
TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkZp
bGxNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvblBs
YXlTdGF0ZSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW46CisgICAgICAgICog
Y3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRS
dWxlQ29sbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50UnVsZUNvbGxlY3Rvcjo6cnVsZU1hdGNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdCk6CisgICAgICAg
ICogY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmg6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hl
Y2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6Om1hdGNoIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6bWF0Y2hIb3N0UHNldWRvQ2xh
c3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6aGFzU2Nyb2xsYmFyUHNldWRvRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6Om1hdGNoUmVjdXJzaXZlbHkgY29u
c3QpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuaDoKKyAgICAgICAgKiBjc3MvU3R5
bGVCdWlsZGVyQ29udmVydGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRUZXh0QWxpZ24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0Q2xpcFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0U2hhcGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFja0xpc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjc3N0b0xlbmd0aENvbnZlcnNpb25EYXRhV2l0aFRl
eHRab29tRmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydFBhZ2VCcmVha0JldHdlZW4pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0UGFnZUJyZWFrSW5zaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENvbHVtbkJyZWFrQmV0d2Vlbik6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDb2x1bW5CcmVha0luc2lk
ZSk6CisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlSW1hZ2VSZXNvbHV0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbXB1dGVCYXNlU3BlY2lmaWVkRm9udFNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0VGV4dFpvb20pOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjppc1ZhbGlkRGlzcGxheVZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0RGlzcGxh
eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVEaXNw
bGF5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdl
YmtpdFRleHRFbXBoYXNpc1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJD
dXN0b206OmFwcGx5VmFsdWVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRl
ckN1c3RvbTo6ZGV0ZXJtaW5lUnVieVRleHRTaXplTXVsdGlwbGllcik6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVBbHQpOgorICAgICAgICAqIGNzcy9T
dHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxl
Rm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjplcXVpdmFsZW50QmxvY2tEaXNwbGF5KToK
KyAgICAgICAgKFdlYkNvcmU6OmRvZXNOb3RJbmhlcml0VGV4dERlY29yYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YWRqdXN0U3R5bGVGb3JJbnRlckNoYXJhY3RlclJ1
YnkpOgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0RGlzcGxheUNvbnRlbnRzU3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YWRqdXN0U1ZHRWxlbWVudFN0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxlUnVsZXNGb3JFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OmlzQ2FjaGVhYmxlSW5NYXRjaGVkUHJvcGVydGllc0NhY2hlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5TWF0Y2hlZFByb3BlcnRpZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjpQcm9wZXJ0
eTo6YXBwbHkpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJlc29sdmVyOjpTdGF0ZTo6ZWxlbWVudExpbmtTdGF0ZSBjb25zdCk6CisgICAg
ICAgICogY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0b3JDb21waWxlcjo6Y29uc3RydWN0RnJhZ21lbnRzSW50ZXJuYWwpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZVJl
cXVlc3RlZFBzZXVkb0VsZW1lbnRFcXVhbHNUb1NlbGVjdG9yUHNldWRvRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpTZWxlY3RvckNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlTWFya1BzZXVkb1N0eWxlRm9yUHNldWRvRWxlbWVudCk6CisgICAgICAgICogZG9tL0Rv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdHlsZUZvckVsZW1lbnRJ
Z25vcmluZ1BlbmRpbmdTdHlsZXNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
aXNQYWdlQm94VmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VmlzdWFs
bHlPcmRlcmVkKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojppc0ZvY3VzYWJsZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpoYXNEaXNwbGF5Q29udGVudHMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c3RvcmVEaXNwbGF5Q29udGVudHNTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OmJlZm9yZU9yQWZ0ZXJQc2V1ZG9FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OmNvbXB1dGVkU3R5bGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAg
ICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUVkaXRhYmlsaXR5RnJv
bUNvbXB1dGVkU3R5bGUpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjppc1BzZXVkb0VsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
aXNCZWZvcmVQc2V1ZG9FbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Omlz
QWZ0ZXJQc2V1ZG9FbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnBzZXVk
b0lkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmN1c3RvbVBzZXVkb0lkIGNvbnN0
KToKKyAgICAgICAgKiBkb20vUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRp
b246OnVwc3RyZWFtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpkb3duc3Ry
ZWFtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjppc0NhbmRpZGF0ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6cmVuZGVyc0luRGlmZmVyZW50UG9zaXRp
b24gY29uc3QpOgorICAgICAgICAqIGRvbS9Qb3NpdGlvbkl0ZXJhdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBvc2l0aW9uSXRlcmF0b3I6OmlzQ2FuZGlkYXRlIGNvbnN0KToKKyAgICAgICAg
KiBkb20vUHNldWRvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9FbGVtZW50
Ojpwc2V1ZG9FbGVtZW50TmFtZUZvckV2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9F
bGVtZW50OjpQc2V1ZG9FbGVtZW50KToKKyAgICAgICAgKiBkb20vVmlzaXRlZExpbmtTdGF0ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNpdGVkTGlua1N0YXRlOjpkZXRlcm1pbmVMaW5rU3Rh
dGVTbG93Q2FzZSk6CisgICAgICAgICogZG9tL1Zpc2l0ZWRMaW5rU3RhdGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RhdGU6OmRldGVybWluZUxpbmtTdGF0ZSk6CisgICAgICAg
ICogZWRpdGluZy9FZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzU3BlY2lhbEhUTUxF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmlzTm9kZVJlbmRlcmVkKToKKyAgICAgICAgKiBl
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYXNWaXNpYmxlVGV4
dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRCb3gpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlUmVwbGFjZWRFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6c2hvdWxkUmVwcmVzZW50Tm9kZU9mZnNldFpl
cm8pOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6
YWR2YW5jZSk6CisgICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZmluZFN0YXJ0T2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZEVu
ZE9mUGFyYWdyYXBoKToKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9FZGl0b3JJT1MubW06CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRp
bmdEaXJlY3Rpb24pOgorICAgICAgICAqIGh0bWwvSFRNTEFyZWFFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxBcmVhRWxlbWVudDo6aXNGb2N1c2FibGUgY29uc3QpOgorICAgICAg
ICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZUlubmVyVGV4dFN0eWxlKToKKyAgICAg
ICAgKiBodG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE9wdEdyb3VwRWxlbWVudDo6aXNGb2N1c2FibGUgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRN
TE9wdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6
OmlzRm9jdXNhYmxlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6Y3JlYXRlSW5uZXJU
ZXh0U3R5bGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGVj
dGlvblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
OjphZGp1c3RJbm5lclRleHRTdHlsZSBjb25zdCk6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1l
bnRTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmF1
dG9wbGF5UGVybWl0dGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmlzTWFpbkNvbnRlbnRG
b3JQdXJwb3Nlc09mQXV0b3BsYXkpOgorICAgICAgICAqIGh0bWwvUnVieUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UnVieUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6Cisg
ICAgICAgICogaHRtbC9SdWJ5VGV4dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVi
eVRleHRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvc2hh
ZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
Q29udHJvbElubmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmJ1aWxkT2JqZWN0Rm9yRWxlbWVudERhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnBzZXVkb0VsZW1lbnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50
OjpidWlsZE9iamVjdEZvck5vZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTGF5ZXIpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0
cmVlL0xheW91dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6aXNJbmxp
bmVCbG9ja0JveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6aXNCbG9j
a0xldmVsQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94Ojppc0lubGlu
ZUxldmVsQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94Ojppc0Jsb2Nr
Q29udGFpbmVyQm94IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbGVjdEN1cnNvcik6CisgICAgICAgICog
cGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2VhcmNoRm9yTGFiZWxz
QWJvdmVDZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZWFyY2hGb3JMYWJlbHNCZWZv
cmVFbGVtZW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OmNyZWF0ZVNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVZpZXc6OmFkanVzdFNjcm9sbFN0ZXBGb3JGaXhlZENvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0
aW9uL0FuaW1hdGlvbkJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6
cGxheVN0YXRlUGxheWluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNl
Ojp1cGRhdGVQbGF5U3RhdGUpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJh
c2UuaDoKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpibGVuZEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlBbmltYXRpb25XcmFwcGVyTWFwOjpDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXAp
OgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wb3NpdGVBbmltYXRpb246OnVwZGF0ZVRyYW5zaXRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUFuaW1hdGlvbjo6dXBkYXRlS2V5ZnJhbWVBbmltYXRp
b25zKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUFuaW1hdGlvbjo6c3VzcGVuZEFuaW1h
dGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlQW5pbWF0aW9uOjpyZXN1bWVBbmlt
YXRpb25zKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUFuaW1hdGlvbjo6YW5pbWF0ZSk6CisgICAgICAg
ICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6bm9kZVJl
c3BvbmRpbmdUb0NsaWNrRXZlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hbmltYXRpb24vQW5p
bWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbjo6QW5pbWF0aW9uKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjpBbmltYXRpb246OmNsZWFyUGxheVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlv
bjo6ZmlsbE1vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uOjpwbGF5U3Rh
dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uOjpzZXRGaWxsTW9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBbmltYXRpb246OnNldFBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpBbmltYXRpb246OmZpbGxzQmFja3dhcmRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFuaW1hdGlvbjo6ZmlsbHNGb3J3YXJkcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBbmlt
YXRpb246OmluaXRpYWxGaWxsTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb246Omlu
aXRpYWxQbGF5U3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlw
ZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpjcmVhdGVUcmFuc2Zvcm1Bbmlt
YXRpb25zRnJvbUtleWZyYW1lcyk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5k
b3cubW06CisgICAgICAgICgtW1dBS1dpbmRvdyBkdW1wVGlsZXNdKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tOgorICAgICAgICAoV2ViQ29yZTo6aXNMb29r
YWxpa2VDaGFyYWN0ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9DbGlwUGF0aE9wZXJhdGlvbi5o
OgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUJveDo6dmlzaWJsZVRvSGl0VGVzdGluZyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5n
L0lubGluZUZsb3dCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6YWRk
VG9MaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBsYWNlQm94ZXNJbkJs
b2NrRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OmFkZFRleHRC
b3hWaXN1YWxPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWlu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWludEJveERlY29yYXRpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBhaW50TWFzayk6CisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVGbG93Qm94Ojpjb21wdXRlT3ZlckFubm90YXRpb25BZGp1c3RtZW50
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OmNvbXB1dGVVbmRlckFu
bm90YXRpb25BZGp1c3RtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dC
b3g6OmNvbGxlY3RMZWFmQm94ZXNJbkxvZ2ljYWxPcmRlciBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL0lubGluZUZsb3dCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6
OklubGluZUZsb3dCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OmVtcGhhc2lzTWFya0V4aXN0c0FuZElz
QWJvdmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6Y3JlYXRlVGV4dFJ1biBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1BvaW50ZXJFdmVudHNIaXRSdWxlcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQb2ludGVyRXZlbnRzSGl0UnVsZXM6OlBvaW50ZXJFdmVudHNIaXRSdWxlcyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1BvaW50ZXJFdmVudHNIaXRSdWxlcy5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
Y29tcHV0ZVN0YXJ0UG9zaXRpb25EZWx0YUZvckNoaWxkQXZvaWRpbmdGbG9hdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjpwYWludE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6c2hv
dWxkUGFpbnRTZWxlY3Rpb25HYXBzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjphZGp1c3RMb2dpY2FsTGVmdE9mZnNldEZvckxpbmUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OmFkanVzdExvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6aXNDaGlsZEhpdFRlc3RDYW5kaWRhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNvbXB1dGVCbG9ja1ByZWZlcnJlZExvZ2ljYWxXaWR0aHMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmZpcnN0TGluZUJsb2NrIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRGaXJzdExldHRlckJsb2NrKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpnZXRGaXJzdExldHRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6Y3JlYXRlQW5vbnltb3VzQmxvY2tXaXRoU3R5bGVBbmREaXNwbGF5KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjaGlsZEJveElzVW5zcGxpdHRhYmxlRm9y
RnJhZ21lbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29u
c3RydWN0VGV4dFJ1bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0RXhj
bHVkZWRDaGlsZHJlbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRl
cmVyQW5kRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y3JlYXRlQW5v
bnltb3VzQmxvY2sgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojp3aWxsQ3JlYXRlQ29sdW1u
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dEJsb2Nr
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6YXBwbHlCZWZvcmVCcmVhayk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmFwcGx5QWZ0ZXJCcmVhayk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmFkanVzdEZvclVuc3BsaXR0YWJsZUNo
aWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6dXBkYXRlU3R5bGVzRm9y
Q29sdW1uQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojpjb21w
dXRlTG9naWNhbExvY2F0aW9uRm9yRmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2tGbG93Ojpsb3dlc3RJbml0aWFsTGV0dGVyTG9naWNhbEJvdHRvbSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmFkanVzdEZvckJvcmRlckZpdCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmZpdEJvcmRlclRvTGluZXNJZk5lZWRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxpbmVBdEluZGV4IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bGluZUNvdW50IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OmdldEhlaWdodEZvckxpbmVDb3VudCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmNsZWFyVHJ1bmNhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9ja0Zsb3c6OmZpbmRDbG9zZXN0VGV4dEF0QWJzb2x1dGVQb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxpbmVDb3VudEZvclRleHRBdXRvc2l6aW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6c2V0Q29tcHV0ZWRDb2x1bW5D
b3VudEFuZFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6dXBkYXRl
Q29sdW1uUHJvZ3Jlc3Npb25Gcm9tU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2tGbG93Ojppc1RvcExheW91dE92ZXJmbG93QWxsb3dlZCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmlzTGVmdExheW91dE92ZXJmbG93QWxsb3dlZCBjb25zdCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2tGbG93Ojpjb25zdHJ1Y3RMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
Rmxvdzo6dGV4dEFsaWdubWVudEZvckxpbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2tGbG93Ojp1cGRhdGVMb2dpY2FsV2lkdGhGb3JBbGlnbm1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25z
Rm9yTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpleHBhbnNpb25CZWhhdmlvckZvcklubGluZVRl
eHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5l
RGlyZWN0aW9uUG9zaXRpb25zRm9yU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9ja0Zsb3c6OmxheW91dFJ1bnNBbmRGbG9hdHNJblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrRmxvdzo6Y2hlY2tGbG9hdEluQ2xlYW5MaW5lKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrRmxvdzo6ZGVsZXRlRWxsaXBzaXNMaW5lQm94ZXMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpjaGVja0xpbmVzRm9yVGV4dE92ZXJmbG93KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6c3RhcnRBbGlnbmVkT2Zmc2V0Rm9yTGlu
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6Omhhc1ZlcnRpY2FsU2Nyb2xsYmFyV2l0aEF1dG9CZWhhdmlvciBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Omhhc0hvcml6b250YWxTY3JvbGxiYXJXaXRo
QXV0b0JlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmlzQ2FuZGlkYXRlRm9yT3Bh
cXVlbmVzc1Rlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludE1hc2spOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludENsaXBwaW5nTWFzayk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6OnBvc2l0aW9uTGluZUJveCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEluRnJhZ21lbnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9u
TWFyZ2lucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnNraXBDb250YWlu
aW5nQmxvY2tGb3JQZXJjZW50SGVpZ2h0Q2FsY3VsYXRpb24gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94Ojpwb3NpdGlvbkZvclBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6aXNVbnNwbGl0dGFibGVGb3JQYWdpbmF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94TW9kZWxPYmplY3Q6OmxvY2FsQ2FyZXRSZWN0Rm9yRW1wdHlFbGVtZW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQ291bnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwbGFuQ291bnRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJDb3VudGVyOjpvcmlnaW5hbFRleHQgY29uc3QpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y2hpbGREb2VzTm90QWZmZWN0V2lkdGhPckZsZXhpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRIb3Jpem9udGFsQm94
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6bGF5b3V0
VmVydGljYWxCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRldGFpbHNNYXJrZXI6OnBhaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJFbGVtZW50OjpjcmVhdGVGb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6
Y29tcHV0ZUZpcnN0TGluZVN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVs
ZW1lbnQ6OnByb3BhZ2F0ZVN0eWxlVG9Bbm9ueW1vdXNDaGlsZHJlbik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJFbGVtZW50OjpzdHlsZVdpbGxDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJFbGVtZW50Ojp3aWxsQmVSZW1vdmVkRnJvbVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRWxlbWVudDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRWxlbWVudDo6aXNWaXNpYmxlSW5Eb2N1bWVudFJlY3QgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6Z2V0Q2FjaGVkUHNldWRvU3R5bGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6Z2V0VW5jYWNoZWRQc2V1ZG9TdHlsZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzZWxlY3Rpb25Qc2V1ZG9T
dHlsZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnZpc2libGVUb0hpdFRlc3RpbmcgY29uc3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cGFpbnRPYmplY3QpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUZ1bGxTY3JlZW5TdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZUVtcHR5VHJhY2tzRm9yQXV0
b1JlcGVhdCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpyZXBhaW50T3JNYXJrRm9yTGF5b3V0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlcklubGluZTo6d2lsbEJlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVN0
eWxlT2ZBbm9ueW1vdXNCbG9ja0NvbnRpbnVhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW5saW5lOjp1cGRhdGVBbHdheXNDcmVhdGVMaW5lQm94ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW5saW5lOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmFkZEFubm90YXRlZFJlZ2lvbnMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6UmVuZGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVw
ZGF0ZURlc2NlbmRhbnREZXBlbmRlbnRGbGFncyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6Y3JlYXRlU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlUmVxdWlyZXNT
Y3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVEZWZpbmVzQXV0b21hdGljU2Nyb2xs
YmFyKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVSZWZlcmVuY2VCb3gpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyBjb25zdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUFmdGVyRGVzY2VuZGFudHMpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2Ny
b2xsYmFySGFzRGlzcGxheU5vbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUGx1Z2luIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvckZyYW1l
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYWludE9iamVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjppdGVtT2Zmc2V0Rm9yQWxpZ25tZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RC
b3g6OnBhaW50SXRlbUZvcmVncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJv
eDo6cGFpbnRJdGVtQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94
OjpjcmVhdGVTY3JvbGxiYXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0SXRlbTo6Y29tcHV0ZU1hcmtlclN0eWxl
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjplZmZlY3RpdmVMaXN0TWFya2VyVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpsaXN0TWFya2VyU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6Omxpc3RNYXJrZXJUZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnBhaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnVwZGF0ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGlzdE1hcmtlcjo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6dXBkYXRlTWFyZ2lucyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpzdWZmaXggY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6aXNJbnNpZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGlzdE1hcmtlcjo6Z2V0UmVsYXRpdmVNYXJrZXJSZWN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJN
ZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZWRpYVZv
bHVtZVNsaWRlckNvbnRhaW5lcjo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRl
eHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmxheW91dCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0OjphZGp1
c3RJbm5lclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmlmKToKKyAgICAgICAgKFJlbmRlck1l
bnVMaXN0OjppdGVtU3R5bGUgY29uc3QpOgorICAgICAgICAoUmVuZGVyTWVudUxpc3Q6Om1lbnVT
dHlsZSBjb25zdCk6CisgICAgICAgIChSZW5kZXJNZW51TGlzdDo6Y3JlYXRlU2Nyb2xsYmFyKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xk
ZXI6OmNyZWF0ZUFub255bW91cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFkZEFubm90YXRlZFJlZ2lvbnMp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6aXNBbm9ueW1vdXNCbG9jayBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmlzQmVmb3JlQ29udGVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmlzQWZ0ZXJDb250ZW50IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6
OnNob3VsZFBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjbGlwcGVk
T3ZlcmZsb3dSZWN0Rm9yUmVwYWludCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clJ1YnlCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJ1YnlCYXNlOjp0ZXh0QWxp
Z25tZW50Rm9yTGluZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNl
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyUnVieVJ1bjo6Y3JlYXRlUnVieUJhc2UgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyUnVieVJ1bjo6c3RhdGljQ3JlYXRlUnVieVJ1bik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJSdWJ5UnVuOjpsYXlvdXRCbG9jayk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclJ1YnlUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJ1YnlUZXh0Ojp0ZXh0
QWxpZ25tZW50Rm9yTGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSdWJ5VGV4
dDo6YWRqdXN0SW5saW5lRGlyZWN0aW9uTGluZUJvdW5kcyBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclJ1YnlUZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9s
bGJhci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwc2V1ZG9Gb3JTY3JvbGxiYXJQYXJ0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhcjo6dXBkYXRlU2Nyb2xsYmFyUGFydCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNlYXJjaEZpZWxkOjp1cGRhdGVDYW5jZWxCdXR0b25WaXNpYmlsaXR5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJjaEZpZWxkOjp2aXNpYmlsaXR5Rm9yQ2Fu
Y2VsQnV0dG9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJjaEZpZWxkOjpt
ZW51U3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2VhcmNoRmllbGQ6OmNy
ZWF0ZVNjcm9sbGJhcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlOjp3aWxsSW5zZXJ0VGFibGVTZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlOjpsYXlvdXRDYXB0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
YWJsZTo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpwYWludE9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6YWRqdXN0Qm9yZGVyQm94UmVjdEZv
clBhaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpwYWludE1hc2spOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OnJlY2FsY1NlY3Rpb25zIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpjcmVhdGVUYWJsZVdpdGhTdHlsZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUYWJsZUNlbGw6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRhYmxlQ2VsbDo6cGFpbnRDb2xsYXBzZWRCb3JkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRhYmxlQ2VsbDo6cGFpbnRCYWNrZ3JvdW5kc0JlaGluZENlbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGFibGVDZWxsOjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6cGFpbnRNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRhYmxlQ2VsbDo6Y3JlYXRlVGFibGVDZWxsV2l0aFN0eWxlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVD
b2w6OnVwZGF0ZUZyb21FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ29s
Ojppc0NoaWxkQWxsb3dlZCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q29sLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRhYmxlUm93OjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUYWJsZVJvdzo6cGFpbnRPdXRsaW5lRm9yUm93SWZOZWVkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGFibGVSb3c6OmNyZWF0ZVRhYmxlUm93V2l0aFN0eWxlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6YWRkQ2VsbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUYWJsZVNlY3Rpb246OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2Vj
dGlvbjo6Y3JlYXRlVGFibGVTZWN0aW9uV2l0aFN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpzdHlsZURpZENo
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9n
aWNhbFdpZHRocyk6CisgICAgICAgIChXZWJDb3JlOjphcHBseVRleHRUcmFuc2Zvcm0pOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGV4dEZyYWdtZW50OjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUZXh0RnJhZ21lbnQ6OmJsb2NrRm9yQWNjb21wYW55aW5nRmlyc3RMZXR0ZXIpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjphZGp1c3RNZW51TGlz
dFN0eWxlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpyZW5kZXJlck9ic2N1cmVzQmFja2dyb3VuZCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6
OnNldFdpZGdldCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnN0eWxlRGlkQ2hh
bmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSb290SW5saW5lQm94OjpwYWludEVsbGlwc2lzQm94IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OmxpbmVTbmFwQWRqdXN0bWVudCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjpsaW5lU2VsZWN0aW9uR2FwKToKKyAgICAgICAg
KFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OmNvbXB1dGVDYXJldFJlY3QgY29uc3QpOgorICAgICAg
ICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNp
bXBsZUxpbmVMYXlvdXQ6OmNhblVzZUZvckZvbnRBbmRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNpbXBsZUxpbmVMYXlvdXQ6OmNhblVzZUZvclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNp
bXBsZUxpbmVMYXlvdXQ6OmNvbXB1dGVMaW5lTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGVMaW5lTGF5b3V0Ojp1cGRhdGVMaW5lQ29uc3RyYWlucyk6CisgICAgICAgIChXZWJDb3JlOjpT
aW1wbGVMaW5lTGF5b3V0OjpjcmVhdGVMaW5lUnVucyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGVMaW5lTGF5b3V0Ojp0ZXh0QWxpZ25Gb3JMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBs
ZUxpbmVMYXlvdXQ6OmNsb3NlTGluZUVuZGluZ0FuZEFkanVzdFJ1bnMpOgorICAgICAgICAqIHJl
bmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNpbXBsZUxpbmVMYXlvdXQ6OnBhaW50Rmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVM
aW5lTGF5b3V0OjpoaXRUZXN0Rmxvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVM
YXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVM
aW5lTGF5b3V0OjpUZXh0RnJhZ21lbnRJdGVyYXRvcjo6U3R5bGU6OlN0eWxlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp0ZXh0RGVjb3JhdGlvblN0eWxlVG9TdHJva2VTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50VGV4dERlY29yYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6Y29sbGVjdFN0eWxlc0ZvclJlbmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcv
VGV4dERlY29yYXRpb25QYWludGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvQnJlYWtp
bmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OkJyZWFraW5n
Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OmNsZWFyTGluZUJy
ZWFrSWZGaXRzT25MaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkJyZWFraW5nQ29udGV4dDo6aGFu
ZGxlQlIpOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0OjpoYW5kbGVPdXRPZkZs
b3dQb3NpdGlvbmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkJyZWFraW5nQ29udGV4dDo6aGFuZGxl
VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OmNhbkJyZWFrQXRUaGlz
UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0OjpoYW5kbGVFbmRP
ZkxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9saW5lL0xpbmVJbmxpbmVIZWFkZXJzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpzaG91bGRDb2xsYXBzZVdoaXRlU3BhY2UpOgorICAgICAgICAqIHJl
bmRlcmluZy9saW5lL0xpbmVXaWR0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXdGbG9hdFNo
cmlua3NMaW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL01hdGhPcGVyYXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNYXRoT3BlcmF0b3I6OnBhaW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTEZyYWN0aW9uOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxNYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE1h
dGg6OmxheW91dEJsb2NrKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TE1lbmNsb3NlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE1lbmNsb3NlOjpw
YWludCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJvb3Q6OnBhaW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTFRva2VuOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9C
b3hTaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlUm91bmRlZFJlY3RGb3JCb3hT
aGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnJlZmVyZW5jZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFw
ZU91dHNpZGVJbmZvOjpzZXRSZWZlcmVuY2VCb3hMb2dpY2FsU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFwZU91dHNpZGVJbmZvOjpsb2dpY2FsVG9wT2Zmc2V0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXBlT3V0c2lkZUluZm86OmxvZ2ljYWxMZWZ0T2Zmc2V0IGNvbnN0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQ291bnRlckNvbnRlbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvdW50ZXJDb250ZW50OjpDb3VudGVyQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpD
b3VudGVyQ29udGVudDo6bGlzdFN0eWxlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNyZWF0
ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmNyZWF0ZVN0eWxlSW5oZXJpdGluZ0Zyb21Qc2V1ZG9TdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6Omhhc1VuaXF1ZVBzZXVkb1N0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjpnZXRDYWNoZWRQc2V1ZG9TdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6YWRkQ2FjaGVkUHNldWRvU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5b3V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OnJlcXVpcmVzUGFpbnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omh5
cGhlblN0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6dGV4dEVt
cGhhc2lzTWFya1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
dmlzaXRlZERlcGVuZGVudENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjp0ZXh0RW1waGFzaXNNYXJrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjpzZXRDb2x1bW5TdHlsZXNGcm9tUGFnaW5hdGlvbk1vZGUpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OnNldFN0eWxlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0UlRMT3Jk
ZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmRpc3BsYXkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnZpc2liaWxpdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnRleHRBbGlnbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6dGV4dFRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6d2hpdGVTcGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6ZW1wdHlDZWxscyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6Y2FwdGlvblNpZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omxp
c3RTdHlsZVR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omxpc3RT
dHlsZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjdXJz
b3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omluc2lkZUxpbmsgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmJvcmRlckZpdCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6cG9pbnRlckV2ZW50cyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0RGlzcGxheSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6c2V0T3JpZ2luYWxEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjpzZXRWaXNpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxl
OjpzZXRUZXh0QWxpZ24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRleHRU
cmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRleHREZWNvcmF0
aW9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRleHREZWNvcmF0
aW9uU2tpcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0VGV4dFVuZGVybGlu
ZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXREaXJlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRleHRab29tKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRXaGl0ZVNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjpzZXRFbXB0eUNlbGxzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjpzZXRDYXB0aW9uU2lkZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0
TGlzdFN0eWxlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0TGlzdFN0
eWxlUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0Q3Vyc29yVmlzaWJpbGl0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0SW5zaWRlTGluayk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0SHlwaGVucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6c2V0Qm9yZGVyRml0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpz
ZXRDb2x1bW5BeGlzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRDb2x1bW5Q
cm9ncmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0VGV4dEVtcGhh
c2lzRmlsbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0VGV4dEVtcGhhc2lz
TWFyayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0UnVieVBvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRCcmVha0JlZm9yZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0QnJlYWtBZnRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6c2V0QnJlYWtJbnNpZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OnNldEhhbmdpbmdQdW5jdHVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6c2V0TGluZVNuYXApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldExp
bmVBbGlnbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0UG9pbnRlckV2ZW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbERpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxCcmVha0JldHdlZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxCcmVha0luc2lkZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbENhcHRpb25TaWRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjppbml0aWFsQ29sdW1uQXhpcyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6aW5pdGlhbENvbHVtblByb2dyZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjppbml0aWFsRW1wdHlDZWxscyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6aW5pdGlhbExpc3RTdHlsZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjppbml0aWFsTGlzdFN0eWxlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6aW5pdGlhbFRleHRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OmluaXRpYWxWaXNpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxl
Ojppbml0aWFsV2hpdGVTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5p
dGlhbEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRB
bGlnbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHREZWNvcmF0
aW9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0Wm9v
bSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbEh5cGhlbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJGaXQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxSVExPcmRlcmluZyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFBvaW50ZXJFdmVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RW1waGFzaXNDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRFbXBoYXNpc0ZpbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RW1waGFzaXNNYXJrKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsUnVieVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VSZXNvbHV0aW9uU291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VSZXNvbHV0aW9uU25hcCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRBbGlnbkxhc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0SnVzdGlmeSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbEN1cnNvclZpc2liaWxpdHkpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b1JlcGVhdFR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lU25hcCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVBbGlnbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6Omhhc0FueVB1YmxpY1BzZXVkb1N0eWxlcyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6b3JpZ2luYWxEaXNwbGF5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6
aGFzUHNldWRvU3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Ok5v
bkluaGVyaXRlZEZsYWdzOjpzZXRIYXNQc2V1ZG9TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OnNldEhhc1BzZXVkb1N0eWxlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YXV0b1dyYXApOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OnByZXNlcnZlTmV3bGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6Y29sbGFwc2VXaGl0ZVNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxl
OjpicmVha09ubHlBZnRlcldoaXRlU3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU3R5bGU6Omhhc0lubGluZUNvbHVtbkF4aXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmlzRGlzcGxheVJlZ2lvblR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU3R5bGU6OmlzRGlzcGxheVJlcGxhY2VkVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6aXNEaXNwbGF5SW5saW5lVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6aXNEaXNwbGF5RmxleGlibGVCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU3R5bGU6OmlzRGlzcGxheUdyaWRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmlzRGlzcGxheUZsZXhpYmxlT3JHcmlkQm94KToKKyAgICAgICAgKFdlYkNvcmU6OnBzZXVk
b0VsZW1lbnRSZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGVDb25zdGFudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6Cisg
ICAgICAgIChXZWJDb3JlOjphbHdheXNQYWdlQnJlYWspOgorICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6UHNldWRvSWRT
ZXQ6OmhhcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9JZFNldDo6YWRkKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZU11
bHRpQ29sRGF0YTo6U3R5bGVNdWx0aUNvbERhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFy
ZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmg6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHQ29udGFpbmVyOjpwYWludCk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJ
bWFnZTo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6Om5vZGVBdEZs
b2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmVUZXh0OjpzdHlsZURpZENoYW5n
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6Y2hlY2tJbnRlcnNlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmNoZWNrRW5jbG9zdXJl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnJlcXVlc3RQYWludGluZ1Jlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OnBhdGhPbmx5Q2xpcHBpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpjYWxjdWxhdGVD
bGlwQ29udGVudFJlcGFpbnRSZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlTWFza2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNl
TWFza2VyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmNhbGN1bGF0ZU1hc2tDb250ZW50UmVwYWludFJlY3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdSb290OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCBjb25zdCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdTaGFwZTo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHU2hhcGU6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0Ojpub2RlQXRG
bG9hdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb25CYWNr
Z3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OmNvbnN0cnVjdFRleHRSdW4gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6Om5vZGVBdFBvaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUmVuZGVyU3VwcG9ydDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwcm9jZXNzUmVuZGVyU1ZHSW5saW5lVGV4dCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjptZWFzdXJlVGV4dFJlbmRlcmVyKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6QmxvY2s6OmRldGFjaCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyRmlyc3RMZXR0ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVGb3JGaXJzdExldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6Rmlyc3RMZXR0ZXI6OnVwZGF0ZUFmdGVyRGVzY2VuZGFu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6OkZpcnN0TGV0dGVyOjp1
cGRhdGVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6Rmlyc3RM
ZXR0ZXI6OmNyZWF0ZVJlbmRlcmVycyk6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1Jl
bmRlclRyZWVCdWlsZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVC
dWlsZGVyOjpJbmxpbmU6OmF0dGFjaElnbm9yaW5nQ29udGludWF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpJbmxpbmU6Om5ld0NoaWxkSXNJbmxpbmUpOgorICAg
ICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlckxpc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6Okxpc3Q6OnVwZGF0ZUl0ZW1NYXJrZXIp
OgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlck1hdGhNTC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6TWF0aE1MOjpjcmVhdGVN
YXRoTUxPcGVyYXRvcik6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVC
dWlsZGVyTXVsdGlDb2x1bW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxk
ZXI6Ok11bHRpQ29sdW1uOjpjcmVhdGVGcmFnbWVudGVkRmxvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUcmVlQnVpbGRlcjo6TXVsdGlDb2x1bW46OnByb2Nlc3NQb3NzaWJsZVNwYW5uZXJE
ZXNjZW5kYW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxk
ZXJSdWJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzQW5vbnltb3VzUnVieUlubGluZUJsb2Nr
KToKKyAgICAgICAgKFdlYkNvcmU6OmlzUnVieUJlZm9yZUJsb2NrKToKKyAgICAgICAgKFdlYkNv
cmU6OmlzUnVieUFmdGVyQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQW5vbnltb3Vz
UnVieUlubGluZUJsb2NrKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJl
ZUJ1aWxkZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6
VGFibGU6OmZpbmRPckNyZWF0ZVBhcmVudEZvckNoaWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcv
dXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VHJlZVVwZGF0ZXI6OnVwZGF0ZUJlZm9yZURlc2NlbmRhbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVBZnRlckRlc2NlbmRhbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6ZWxlbWVudEltcGxpY2l0VmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpDaGVja0ZvclZpc2liaWxpdHlDaGFuZ2U6OkNoZWNrRm9yVmlzaWJpbGl0eUNoYW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDaGVja0ZvclZpc2liaWxpdHlDaGFuZ2U6On5DaGVja0ZvclZpc2li
aWxpdHlDaGFuZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBk
YXRlckdlbmVyYXRlZENvbnRlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVw
ZGF0ZXI6OkdlbmVyYXRlZENvbnRlbnQ6OnVwZGF0ZVBzZXVkb0VsZW1lbnQpOgorICAgICAgICAq
IHN0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2aXN1YWxP
dmVyZmxvd0ZvckRlY29yYXRpb25zKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZUNoYW5nZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6ZGV0ZXJtaW5lQ2hhbmdlKToKKyAgICAgICAgKiBz
dHlsZS9TdHlsZUZvbnRTaXplRnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
Ojpjb21wdXRlZEZvbnRTaXplRnJvbVNwZWNpZmllZFNpemUpOgorICAgICAgICAqIHN0eWxlL1N0
eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpyZXNv
bHZlRm9yRG9jdW1lbnQpOgorICAgICAgICAqIHN0eWxlL1N0eWxlU2hhcmluZ1Jlc29sdmVyLmNw
cDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6YWZmZWN0c1JlbmRlcmVkU3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlUHNldWRvU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6cGFyZW50Qm94U3R5bGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OmNyZWF0ZUluaGVyaXRlZERpc3BsYXlDb250ZW50c1N0eWxlSWZOZWVk
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6cmVzb2x2ZUNvbXBv
c2VkVHJlZSk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
R0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR0VsZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcik6CisKIDIwMTgtMDUtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZSgpIHNob3VsZCBu
b3QgcHJvcGFnYXRlIGEgc3ViZnJhbWUncyBzY3JvbGwgdG8gaXRzIGNyb3NzLW9yaWdpbiBwYXJl
bnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg2LDcgKzI4Niw3IEBAIGJvb2wg
QVhPYmplY3RDYWNoZTo6aXNOb2RlVmlzaWJsZShOb2RlKiAKICAgICBpZiAoIXJlbmRlcmVyKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gcmVu
ZGVyZXItPnN0eWxlKCk7Ci0gICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBOT05FIHx8IHN0eWxl
LnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gRGlz
cGxheVR5cGU6Ok5vbmUgfHwgc3R5bGUudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2li
bGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyBXZSBhbHNvIG5lZWQgdG8g
Y29uc2lkZXIgYXJpYSBoaWRkZW4gc3RhdHVzLgpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHAJKHJldmlzaW9uIDIzMjEyMykK
KysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjMsNyArMTYzLDcgQEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNz
aWJpbGl0eUxpc3Q6OmRldAogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBSZW5kZXJlZCBs
aXN0IGl0ZW1zIGFsd2F5cyBjb3VudC4KICAgICAgICAgICAgIGlmIChsaXN0SXRlbS0+aXNMaXN0
SXRlbSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFoYXNWaXNpYmxlTWFya2VycyAmJiAobGlz
dEl0ZW0tPnN0eWxlKCkubGlzdFN0eWxlVHlwZSgpICE9IE5vbmVMaXN0U3R5bGUgfHwgbGlzdEl0
ZW0tPnN0eWxlKCkubGlzdFN0eWxlSW1hZ2UoKSB8fCBjaGlsZEhhc1BzZXVkb1Zpc2libGVMaXN0
SXRlbU1hcmtlcnMobGlzdEl0ZW0pKSkKKyAgICAgICAgICAgICAgICBpZiAoIWhhc1Zpc2libGVN
YXJrZXJzICYmIChsaXN0SXRlbS0+c3R5bGUoKS5saXN0U3R5bGVUeXBlKCkgIT0gTGlzdFN0eWxl
VHlwZTo6Tm9uZSB8fCBsaXN0SXRlbS0+c3R5bGUoKS5saXN0U3R5bGVJbWFnZSgpIHx8IGNoaWxk
SGFzUHNldWRvVmlzaWJsZUxpc3RJdGVtTWFya2VycyhsaXN0SXRlbSkpKQogICAgICAgICAgICAg
ICAgICAgICBoYXNWaXNpYmxlTWFya2VycyA9IHRydWU7CiAgICAgICAgICAgICAgICAgbGlzdEl0
ZW1Db3VudCsrOwogICAgICAgICAgICAgfSBlbHNlIGlmIChsaXN0SXRlbS0+bm9kZSgpICYmIGxp
c3RJdGVtLT5ub2RlKCktPmhhc1RhZ05hbWUobGlUYWcpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRy
b2xzLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw3
ICsxNzYsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbDo6aGVscFRlCiAKIGJv
b2wgQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbDo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9y
ZWQoKSBjb25zdAogewotICAgIGlmICghbV9yZW5kZXJlciB8fCBtX3JlbmRlcmVyLT5zdHlsZSgp
LnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8IGNvbnRyb2xUeXBlKCkgPT0gTWVkaWFUaW1lbGlu
ZUNvbnRhaW5lcikKKyAgICBpZiAoIW1fcmVuZGVyZXIgfHwgbV9yZW5kZXJlci0+c3R5bGUoKS52
aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSB8fCBjb250cm9sVHlwZSgpID09IE1l
ZGlhVGltZWxpbmVDb250YWluZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJu
IGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCeURlZmF1bHQoKTsKQEAgLTMwMiw3ICszMDIsNyBAQCBS
ZWY8QWNjZXNzaWJpbGl0eU9iamVjdD4gQWNjZXNzaWJpbGl0eU1lCiAKIGJvb2wgQWNjZXNzaWJp
bGl0eU1lZGlhVGltZURpc3BsYXk6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29u
c3QKIHsKLSAgICBpZiAoIW1fcmVuZGVyZXIgfHwgbV9yZW5kZXJlci0+c3R5bGUoKS52aXNpYmls
aXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAoIW1fcmVuZGVyZXIgfHwgbV9yZW5kZXJlci0+c3R5
bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICBpZiAoIW1fcmVuZGVyZXItPnN0eWxlKCkud2lkdGgoKS52YWx1ZSgpKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjc1LDcg
KzMyNzUsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRE9NSGlkZGVuKCkgCiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHJl
bmRlcmVyLT5zdHlsZSgpOwotICAgIHJldHVybiBzdHlsZS5kaXNwbGF5KCkgPT0gTk9ORSB8fCBz
dHlsZS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRTsKKyAgICByZXR1cm4gc3R5bGUuZGlzcGxheSgp
ID09IERpc3BsYXlUeXBlOjpOb25lIHx8IHN0eWxlLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5
OjpWaXNpYmxlOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzU2hvd2luZ1ZhbGlk
YXRpb25NZXNzYWdlKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24g
MjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0NCw3ICsxMTQ0LDcgQEAgQWNjZXNz
aWJpbGl0eU9iamVjdEluY2x1c2lvbiBBY2Nlc3NpYmlsaQogICAgIGlmICghbV9yZW5kZXJlcikK
ICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVj
dDsKIAotICAgIGlmIChtX3JlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxF
KSB7CisgICAgaWYgKG1fcmVuZGVyZXItPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxp
dHk6OlZpc2libGUpIHsKICAgICAgICAgLy8gYXJpYS1oaWRkZW4gaXMgbWVhbnQgdG8gb3ZlcnJp
ZGUgdmlzaWJpbGl0eSBhcyB0aGUgZGV0ZXJtaW5hbnQgaW4gQVggaGllcmFyY2h5IGluY2x1c2lv
bi4KICAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGdldEF0dHJpYnV0
ZShhcmlhX2hpZGRlbkF0dHIpLCAiZmFsc2UiKSkKICAgICAgICAgICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpEZWZhdWx0QmVoYXZpb3I7CkBAIC0xNTk2LDcgKzE1OTYs
NyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzVW52aXNpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgLy8gRklYTUU6IElzIGl0IGEgcHJpdmFjeSB2aW9sYXRpb24gdG8g
ZXhwb3NlIHVudmlzaXRlZCBpbmZvcm1hdGlvbiB0byBhY2Nlc3NpYmlsaXR5IEFQSXM/Ci0gICAg
cmV0dXJuIG1fcmVuZGVyZXItPnN0eWxlKCkuaXNMaW5rKCkgJiYgbV9yZW5kZXJlci0+c3R5bGUo
KS5pbnNpZGVMaW5rKCkgPT0gSW5zaWRlVW52aXNpdGVkTGluazsKKyAgICByZXR1cm4gbV9yZW5k
ZXJlci0+c3R5bGUoKS5pc0xpbmsoKSAmJiBtX3JlbmRlcmVyLT5zdHlsZSgpLmluc2lkZUxpbmso
KSA9PSBJbnNpZGVMaW5rOjpJbnNpZGVVbnZpc2l0ZWQ7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6aXNWaXNpdGVkKCkgY29uc3QKQEAgLTE2MDUsNyArMTYwNSw3IEBAIGJv
b2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNWaXNpdGUKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgLy8gRklYTUU6IElzIGl0IGEgcHJpdmFjeSB2aW9sYXRpb24gdG8gZXhwb3Nl
IHZpc2l0ZWQgaW5mb3JtYXRpb24gdG8gYWNjZXNzaWJpbGl0eSBBUElzPwotICAgIHJldHVybiBt
X3JlbmRlcmVyLT5zdHlsZSgpLmlzTGluaygpICYmIG1fcmVuZGVyZXItPnN0eWxlKCkuaW5zaWRl
TGluaygpID09IEluc2lkZVZpc2l0ZWRMaW5rOworICAgIHJldHVybiBtX3JlbmRlcmVyLT5zdHls
ZSgpLmlzTGluaygpICYmIG1fcmVuZGVyZXItPnN0eWxlKCkuaW5zaWRlTGluaygpID09IEluc2lk
ZUxpbms6Okluc2lkZVZpc2l0ZWQ7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6c2V0RWxlbWVudEF0dHJpYnV0ZVZhbHVlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUsIGJvb2wgdmFsdWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlUYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2Miw3ICsyNjIsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlUYWJsZTo6aXNEYXRh
VGFibGUoKSBjCiAgICAgICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgcmVuZGVyU3R5bGUgPSBj
ZWxsLT5zdHlsZSgpOwogCiAgICAgICAgICAgICAvLyBJZiB0aGUgZW1wdHktY2VsbHMgc3R5bGUg
aXMgc2V0LCB3ZSdsbCBjYWxsIGl0IGEgZGF0YSB0YWJsZS4KLSAgICAgICAgICAgIGlmIChyZW5k
ZXJTdHlsZS5lbXB0eUNlbGxzKCkgPT0gSElERSkKKyAgICAgICAgICAgIGlmIChyZW5kZXJTdHls
ZS5lbXB0eUNlbGxzKCkgPT0gRW1wdHlDZWxsOjpIaWRlKQogICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgICAgICAgICAvLyBJZiBhIGNlbGwgaGFzIG1hdGNoaW5nIGJvcmRlcmVk
IHNpZGVzLCBjYWxsIGl0IGEgKGZ1bGx5KSBib3JkZXJlZCBjZWxsLgpJbmRleDogU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFj
Y2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsMjIgKzE0MywyMiBAQCBzdGF0aWMgQXRrQXR0cmlidXRl
U2V0KiBnZXRBdHRyaWJ1dGVTZXRGCiAgICAgfQogCiAgICAgc3dpdGNoIChzdHlsZS0+dGV4dEFs
aWduKCkpIHsKLSAgICBjYXNlIFRBU1RBUlQ6Ci0gICAgY2FzZSBUQUVORDoKKyAgICBjYXNlIFRl
eHRBbGlnbk1vZGU6OlN0YXJ0OgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6RW5kOgogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIExFRlQ6Ci0gICAgY2FzZSBXRUJLSVRfTEVGVDoKKyAgICBjYXNl
IFRleHRBbGlnbk1vZGU6OkxlZnQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0
OgogICAgICAgICByZXN1bHQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChyZXN1bHQsIGF0a190ZXh0
X2F0dHJpYnV0ZV9nZXRfbmFtZShBVEtfVEVYVF9BVFRSX0pVU1RJRklDQVRJT04pLCAibGVmdCIp
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFJJR0hUOgotICAgIGNhc2UgV0VCS0lUX1JJR0hU
OgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2Rl
OjpXZWJLaXRSaWdodDoKICAgICAgICAgcmVzdWx0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQocmVz
dWx0LCBhdGtfdGV4dF9hdHRyaWJ1dGVfZ2V0X25hbWUoQVRLX1RFWFRfQVRUUl9KVVNUSUZJQ0FU
SU9OKSwgInJpZ2h0Iik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ0VOVEVSOgotICAgIGNh
c2UgV0VCS0lUX0NFTlRFUjoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKKyAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoKICAgICAgICAgcmVzdWx0ID0gYWRkVG9B
dGtBdHRyaWJ1dGVTZXQocmVzdWx0LCBhdGtfdGV4dF9hdHRyaWJ1dGVfZ2V0X25hbWUoQVRLX1RF
WFRfQVRUUl9KVVNUSUZJQ0FUSU9OKSwgImNlbnRlciIpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIEpVU1RJRlk6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5OgogICAgICAgICBy
ZXN1bHQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChyZXN1bHQsIGF0a190ZXh0X2F0dHJpYnV0ZV9n
ZXRfbmFtZShBVEtfVEVYVF9BVFRSX0pVU1RJRklDQVRJT04pLCAiZmlsbCIpOwogICAgIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuY3Bw
CShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9u
VGltZWxpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBBbmlt
YXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTQW5pbWF0aQogICAgICAgICByZXR1cm47CiAKICAgICAv
LyBJbiBjYXNlIHRoaXMgZWxlbWVudCBpcyBuZXdseSBnZXR0aW5nIGEgImRpc3BsYXk6IG5vbmUi
IHdlIG5lZWQgdG8gY2FuY2VsIGFsbCBvZiBpdHMgYW5pbWF0aW9ucyBhbmQgZGlzcmVnYXJkIG5l
dyBvbmVzLgotICAgIGlmIChvbGRTdHlsZSAmJiBvbGRTdHlsZS0+aGFzQW5pbWF0aW9ucygpICYm
IG9sZFN0eWxlLT5kaXNwbGF5KCkgIT0gTk9ORSAmJiBuZXdTdHlsZS5kaXNwbGF5KCkgPT0gTk9O
RSkgeworICAgIGlmIChvbGRTdHlsZSAmJiBvbGRTdHlsZS0+aGFzQW5pbWF0aW9ucygpICYmIG9s
ZFN0eWxlLT5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6Ok5vbmUgJiYgbmV3U3R5bGUuZGlzcGxh
eSgpID09IERpc3BsYXlUeXBlOjpOb25lKSB7CiAgICAgICAgIGlmIChtX2VsZW1lbnRUb0NTU0Fu
aW1hdGlvbkJ5TmFtZS5jb250YWlucygmZWxlbWVudCkpIHsKICAgICAgICAgICAgIGZvciAoY29u
c3QgYXV0byYgY3NzQW5pbWF0aW9uc0J5TmFtZU1hcEl0ZW0gOiBtX2VsZW1lbnRUb0NTU0FuaW1h
dGlvbkJ5TmFtZS50YWtlKCZlbGVtZW50KSkKICAgICAgICAgICAgICAgICBjYW5jZWxPclJlbW92
ZURlY2xhcmF0aXZlQW5pbWF0aW9uKGNzc0FuaW1hdGlvbnNCeU5hbWVNYXBJdGVtLnZhbHVlKTsK
QEAgLTIyOSw3ICsyMjksNyBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFu
c2l0CiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEluIGNhc2UgdGhpcyBlbGVtZW50IGlzIG5l
d2x5IGdldHRpbmcgYSAiZGlzcGxheTogbm9uZSIgd2UgbmVlZCB0byBjYW5jZWwgYWxsIG9mIGl0
cyBhbmltYXRpb25zIGFuZCBkaXNyZWdhcmQgbmV3IG9uZXMuCi0gICAgaWYgKG9sZFN0eWxlICYm
IG9sZFN0eWxlLT5oYXNUcmFuc2l0aW9ucygpICYmIG9sZFN0eWxlLT5kaXNwbGF5KCkgIT0gTk9O
RSAmJiBuZXdTdHlsZS5kaXNwbGF5KCkgPT0gTk9ORSkgeworICAgIGlmIChvbGRTdHlsZSAmJiBv
bGRTdHlsZS0+aGFzVHJhbnNpdGlvbnMoKSAmJiBvbGRTdHlsZS0+ZGlzcGxheSgpICE9IERpc3Bs
YXlUeXBlOjpOb25lICYmIG5ld1N0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSkg
ewogICAgICAgICBpZiAobV9lbGVtZW50VG9DU1NUcmFuc2l0aW9uQnlDU1NQcm9wZXJ0eUlELmNv
bnRhaW5zKCZlbGVtZW50KSkgewogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjc3NUcmFu
c2l0aW9uc0J5Q1NTUHJvcGVydHlJRE1hcEl0ZW0gOiBtX2VsZW1lbnRUb0NTU1RyYW5zaXRpb25C
eUNTU1Byb3BlcnR5SUQudGFrZSgmZWxlbWVudCkpCiAgICAgICAgICAgICAgICAgY2FuY2VsT3JS
ZW1vdmVEZWNsYXJhdGl2ZUFuaW1hdGlvbihjc3NUcmFuc2l0aW9uc0J5Q1NTUHJvcGVydHlJRE1h
cEl0ZW0udmFsdWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlv
bi5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NB
bmltYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxNiArNTUsMTYgQEAgdm9pZCBDU1NB
bmltYXRpb246OnN5bmNQcm9wZXJ0aWVzV2l0aEJhYwogICAgIGF1dG8qIHRpbWluZyA9IGVmZmVj
dCgpLT50aW1pbmcoKTsKIAogICAgIHN3aXRjaCAoYW5pbWF0aW9uLmZpbGxNb2RlKCkpIHsKLSAg
ICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlTm9uZToKKyAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2Rl
OjpOb25lOgogICAgICAgICB0aW1pbmctPnNldEZpbGwoRmlsbE1vZGU6Ok5vbmUpOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlQmFja3dhcmRzOgorICAgIGNhc2Ug
QW5pbWF0aW9uRmlsbE1vZGU6OkJhY2t3YXJkczoKICAgICAgICAgdGltaW5nLT5zZXRGaWxsKEZp
bGxNb2RlOjpCYWNrd2FyZHMpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEFuaW1hdGlvbkZp
bGxNb2RlRm9yd2FyZHM6CisgICAgY2FzZSBBbmltYXRpb25GaWxsTW9kZTo6Rm9yd2FyZHM6CiAg
ICAgICAgIHRpbWluZy0+c2V0RmlsbChGaWxsTW9kZTo6Rm9yd2FyZHMpOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlQm90aDoKKyAgICBjYXNlIEFuaW1hdGlvbkZp
bGxNb2RlOjpCb3RoOgogICAgICAgICB0aW1pbmctPnNldEZpbGwoRmlsbE1vZGU6OkJvdGgpOwog
ICAgICAgICBicmVhazsKICAgICB9CkBAIC04OCw5ICs4OCw5IEBAIHZvaWQgQ1NTQW5pbWF0aW9u
OjpzeW5jUHJvcGVydGllc1dpdGhCYWMKICAgICB0aW1pbmctPnNldEl0ZXJhdGlvbnMoaXRlcmF0
aW9uQ291bnQgPT0gQW5pbWF0aW9uOjpJdGVyYXRpb25Db3VudEluZmluaXRlID8gc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpIDogaXRlcmF0aW9uQ291bnQpOwogCiAgICAg
Ly8gU3luY2hyb25pemUgdGhlIHBsYXkgc3RhdGUKLSAgICBpZiAoYmFja2luZ0FuaW1hdGlvbigp
LnBsYXlTdGF0ZSgpID09IEFuaW1QbGF5U3RhdGVQbGF5aW5nICYmIHBsYXlTdGF0ZSgpID09IFdl
YkFuaW1hdGlvbjo6UGxheVN0YXRlOjpQYXVzZWQpCisgICAgaWYgKGJhY2tpbmdBbmltYXRpb24o
KS5wbGF5U3RhdGUoKSA9PSBBbmltYXRpb25QbGF5U3RhdGU6OlBsYXlpbmcgJiYgcGxheVN0YXRl
KCkgPT0gV2ViQW5pbWF0aW9uOjpQbGF5U3RhdGU6OlBhdXNlZCkKICAgICAgICAgcGxheSgpOwot
ICAgIGVsc2UgaWYgKGJhY2tpbmdBbmltYXRpb24oKS5wbGF5U3RhdGUoKSA9PSBBbmltUGxheVN0
YXRlUGF1c2VkICYmIHBsYXlTdGF0ZSgpID09IFdlYkFuaW1hdGlvbjo6UGxheVN0YXRlOjpSdW5u
aW5nKQorICAgIGVsc2UgaWYgKGJhY2tpbmdBbmltYXRpb24oKS5wbGF5U3RhdGUoKSA9PSBBbmlt
YXRpb25QbGF5U3RhdGU6OlBhdXNlZCAmJiBwbGF5U3RhdGUoKSA9PSBXZWJBbmltYXRpb246OlBs
YXlTdGF0ZTo6UnVubmluZykKICAgICAgICAgcGF1c2UoKTsKIAogICAgIHVuc3VzcGVuZEVmZmVj
dEludmFsaWRhdGlvbigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0
aXZlQW5pbWF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
RGVjbGFyYXRpdmVBbmltYXRpb24uY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02Nyw3ICs2Nyw3IEBAIHZvaWQgRGVjbGFyYXRpdmVBbmltYXRpb246OmluaXRpYWxpemUoY28K
ICAgICBzZXRUaW1lbGluZSgmdGFyZ2V0LmRvY3VtZW50KCkudGltZWxpbmUoKSk7CiAgICAgZG93
bmNhc3Q8S2V5ZnJhbWVFZmZlY3RSZWFkT25seT4oZWZmZWN0KCkpLT5jb21wdXRlRGVjbGFyYXRp
dmVBbmltYXRpb25CbGVuZGluZ0tleWZyYW1lcyhvbGRTdHlsZSwgbmV3U3R5bGUpOwogICAgIHN5
bmNQcm9wZXJ0aWVzV2l0aEJhY2tpbmdBbmltYXRpb24oKTsKLSAgICBpZiAoYmFja2luZ0FuaW1h
dGlvbigpLnBsYXlTdGF0ZSgpID09IEFuaW1QbGF5U3RhdGVQbGF5aW5nKQorICAgIGlmIChiYWNr
aW5nQW5pbWF0aW9uKCkucGxheVN0YXRlKCkgPT0gQW5pbWF0aW9uUGxheVN0YXRlOjpQbGF5aW5n
KQogICAgICAgICBwbGF5KCk7CiAgICAgZWxzZQogICAgICAgICBwYXVzZSgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0UmVhZE9ubHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdFJlYWRPbmx5LmNw
cAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1l
RWZmZWN0UmVhZE9ubHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjY1LDE2ICsxMjY1LDE2IEBA
IFJlZjxjb25zdCBBbmltYXRpb24+IEtleWZyYW1lRWZmZWN0UmVhZE8KICAgICBzd2l0Y2ggKGVm
ZmVjdFRpbWluZy0+ZmlsbCgpKSB7CiAgICAgY2FzZSBGaWxsTW9kZTo6Tm9uZToKICAgICBjYXNl
IEZpbGxNb2RlOjpBdXRvOgotICAgICAgICBhbmltYXRpb24tPnNldEZpbGxNb2RlKEFuaW1hdGlv
bkZpbGxNb2RlTm9uZSk7CisgICAgICAgIGFuaW1hdGlvbi0+c2V0RmlsbE1vZGUoQW5pbWF0aW9u
RmlsbE1vZGU6Ok5vbmUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZpbGxNb2RlOjpCYWNr
d2FyZHM6Ci0gICAgICAgIGFuaW1hdGlvbi0+c2V0RmlsbE1vZGUoQW5pbWF0aW9uRmlsbE1vZGVC
YWNrd2FyZHMpOworICAgICAgICBhbmltYXRpb24tPnNldEZpbGxNb2RlKEFuaW1hdGlvbkZpbGxN
b2RlOjpCYWNrd2FyZHMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZpbGxNb2RlOjpGb3J3
YXJkczoKLSAgICAgICAgYW5pbWF0aW9uLT5zZXRGaWxsTW9kZShBbmltYXRpb25GaWxsTW9kZUZv
cndhcmRzKTsKKyAgICAgICAgYW5pbWF0aW9uLT5zZXRGaWxsTW9kZShBbmltYXRpb25GaWxsTW9k
ZTo6Rm9yd2FyZHMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZpbGxNb2RlOjpCb3RoOgot
ICAgICAgICBhbmltYXRpb24tPnNldEZpbGxNb2RlKEFuaW1hdGlvbkZpbGxNb2RlQm90aCk7Cisg
ICAgICAgIGFuaW1hdGlvbi0+c2V0RmlsbE1vZGUoQW5pbWF0aW9uRmlsbE1vZGU6OkJvdGgpOwog
ICAgICAgICBicmVhazsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTc4MCwxNSArMTc4MCwxNSBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiByZW5k
ZXJUZXh0RGVjb3JhdGlvCiBzdGF0aWMgUmVmPENTU1ZhbHVlPiByZW5kZXJUZXh0RGVjb3JhdGlv
blN0eWxlRmxhZ3NUb0NTU1ZhbHVlKFRleHREZWNvcmF0aW9uU3R5bGUgdGV4dERlY29yYXRpb25T
dHlsZSkKIHsKICAgICBzd2l0Y2ggKHRleHREZWNvcmF0aW9uU3R5bGUpIHsKLSAgICBjYXNlIFRl
eHREZWNvcmF0aW9uU3R5bGVTb2xpZDoKKyAgICBjYXNlIFRleHREZWNvcmF0aW9uU3R5bGU6OlNv
bGlkOgogICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoQ1NTVmFsdWVTb2xpZCk7Ci0gICAgY2FzZSBUZXh0RGVjb3JhdGlvblN0eWxl
RG91YmxlOgorICAgIGNhc2UgVGV4dERlY29yYXRpb25TdHlsZTo6RG91YmxlOgogICAgICAgICBy
ZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVEb3VibGUpOwotICAgIGNhc2UgVGV4dERlY29yYXRpb25TdHlsZURvdHRlZDoKKyAgICBj
YXNlIFRleHREZWNvcmF0aW9uU3R5bGU6OkRvdHRlZDoKICAgICAgICAgcmV0dXJuIENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlRG90dGVkKTsK
LSAgICBjYXNlIFRleHREZWNvcmF0aW9uU3R5bGVEYXNoZWQ6CisgICAgY2FzZSBUZXh0RGVjb3Jh
dGlvblN0eWxlOjpEYXNoZWQ6CiAgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZURhc2hlZCk7Ci0gICAgY2FzZSBUZXh0
RGVjb3JhdGlvblN0eWxlV2F2eToKKyAgICBjYXNlIFRleHREZWNvcmF0aW9uU3R5bGU6Oldhdnk6
CiAgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShDU1NWYWx1ZVdhdnkpOwogICAgIH0KIApAQCAtMjI3MiwzMyArMjI3MiwzMyBAQCBz
dGF0aWMgYm9vbCBwb3NpdGlvbk9mZnNldFZhbHVlSXNSZW5kZXJlCiAKIHN0YXRpYyBDU1NWYWx1
ZUlEIGNvbnZlcnRUb1BhZ2VCcmVhayhCcmVha0JldHdlZW4gdmFsdWUpCiB7Ci0gICAgaWYgKHZh
bHVlID09IFBhZ2VCcmVha0JldHdlZW4gfHwgdmFsdWUgPT0gTGVmdFBhZ2VCcmVha0JldHdlZW4g
fHwgdmFsdWUgPT0gUmlnaHRQYWdlQnJlYWtCZXR3ZWVuCi0gICAgICAgIHx8IHZhbHVlID09IFJl
Y3RvUGFnZUJyZWFrQmV0d2VlbiB8fCB2YWx1ZSA9PSBWZXJzb1BhZ2VCcmVha0JldHdlZW4pCisg
ICAgaWYgKHZhbHVlID09IEJyZWFrQmV0d2Vlbjo6UGFnZSB8fCB2YWx1ZSA9PSBCcmVha0JldHdl
ZW46OkxlZnRQYWdlIHx8IHZhbHVlID09IEJyZWFrQmV0d2Vlbjo6UmlnaHRQYWdlCisgICAgICAg
IHx8IHZhbHVlID09IEJyZWFrQmV0d2Vlbjo6UmVjdG9QYWdlIHx8IHZhbHVlID09IEJyZWFrQmV0
d2Vlbjo6VmVyc29QYWdlKQogICAgICAgICByZXR1cm4gQ1NTVmFsdWVBbHdheXM7IC8vIENTUyAy
LjEgYWxsb3dzIHVzIHRvIG1hcCB0aGVzZSB0byBhbHdheXMuCi0gICAgaWYgKHZhbHVlID09IEF2
b2lkQnJlYWtCZXR3ZWVuIHx8IHZhbHVlID09IEF2b2lkUGFnZUJyZWFrQmV0d2VlbikKKyAgICBp
ZiAodmFsdWUgPT0gQnJlYWtCZXR3ZWVuOjpBdm9pZCB8fCB2YWx1ZSA9PSBCcmVha0JldHdlZW46
OkF2b2lkUGFnZSkKICAgICAgICAgcmV0dXJuIENTU1ZhbHVlQXZvaWQ7CiAgICAgcmV0dXJuIENT
U1ZhbHVlQXV0bzsKIH0KIAogc3RhdGljIENTU1ZhbHVlSUQgY29udmVydFRvQ29sdW1uQnJlYWso
QnJlYWtCZXR3ZWVuIHZhbHVlKQogewotICAgIGlmICh2YWx1ZSA9PSBDb2x1bW5CcmVha0JldHdl
ZW4pCisgICAgaWYgKHZhbHVlID09IEJyZWFrQmV0d2Vlbjo6Q29sdW1uKQogICAgICAgICByZXR1
cm4gQ1NTVmFsdWVBbHdheXM7Ci0gICAgaWYgKHZhbHVlID09IEF2b2lkQnJlYWtCZXR3ZWVuIHx8
IHZhbHVlID09IEF2b2lkQ29sdW1uQnJlYWtCZXR3ZWVuKQorICAgIGlmICh2YWx1ZSA9PSBCcmVh
a0JldHdlZW46OkF2b2lkIHx8IHZhbHVlID09IEJyZWFrQmV0d2Vlbjo6QXZvaWRDb2x1bW4pCiAg
ICAgICAgIHJldHVybiBDU1NWYWx1ZUF2b2lkOwogICAgIHJldHVybiBDU1NWYWx1ZUF1dG87CiB9
CiAKIHN0YXRpYyBDU1NWYWx1ZUlEIGNvbnZlcnRUb1BhZ2VCcmVhayhCcmVha0luc2lkZSB2YWx1
ZSkKIHsKLSAgICBpZiAodmFsdWUgPT0gQXZvaWRCcmVha0luc2lkZSB8fCB2YWx1ZSA9PSBBdm9p
ZFBhZ2VCcmVha0luc2lkZSkKKyAgICBpZiAodmFsdWUgPT0gQnJlYWtJbnNpZGU6OkF2b2lkIHx8
IHZhbHVlID09IEJyZWFrSW5zaWRlOjpBdm9pZFBhZ2UpCiAgICAgICAgIHJldHVybiBDU1NWYWx1
ZUF2b2lkOwogICAgIHJldHVybiBDU1NWYWx1ZUF1dG87CiB9CiAKIHN0YXRpYyBDU1NWYWx1ZUlE
IGNvbnZlcnRUb0NvbHVtbkJyZWFrKEJyZWFrSW5zaWRlIHZhbHVlKQogewotICAgIGlmICh2YWx1
ZSA9PSBBdm9pZEJyZWFrSW5zaWRlIHx8IHZhbHVlID09IEF2b2lkQ29sdW1uQnJlYWtJbnNpZGUp
CisgICAgaWYgKHZhbHVlID09IEJyZWFrSW5zaWRlOjpBdm9pZCB8fCB2YWx1ZSA9PSBCcmVha0lu
c2lkZTo6QXZvaWRDb2x1bW4pCiAgICAgICAgIHJldHVybiBDU1NWYWx1ZUF2b2lkOwogICAgIHJl
dHVybiBDU1NWYWx1ZUF1dG87CiB9CkBAIC0yMzcwLDIwICsyMzcwLDE5IEBAIEVsZW1lbnQqIENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OnN0eWxlZEUKICAgICBpZiAoIW1fZWxlbWVudCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgUHNldWRvRWxlbWVudCogcHNldWRvRWxlbWVudDsKLSAg
ICBpZiAobV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyID09IEJFRk9SRSAmJiAocHNldWRvRWxlbWVu
dCA9IG1fZWxlbWVudC0+YmVmb3JlUHNldWRvRWxlbWVudCgpKSkKKyAgICBpZiAobV9wc2V1ZG9F
bGVtZW50U3BlY2lmaWVyID09IFBzZXVkb0lkOjpCZWZvcmUgJiYgKHBzZXVkb0VsZW1lbnQgPSBt
X2VsZW1lbnQtPmJlZm9yZVBzZXVkb0VsZW1lbnQoKSkpCiAgICAgICAgIHJldHVybiBwc2V1ZG9F
bGVtZW50OwotICAgIGlmIChtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIgPT0gQUZURVIgJiYgKHBz
ZXVkb0VsZW1lbnQgPSBtX2VsZW1lbnQtPmFmdGVyUHNldWRvRWxlbWVudCgpKSkKKyAgICBpZiAo
bV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyID09IFBzZXVkb0lkOjpBZnRlciAmJiAocHNldWRvRWxl
bWVudCA9IG1fZWxlbWVudC0+YWZ0ZXJQc2V1ZG9FbGVtZW50KCkpKQogICAgICAgICByZXR1cm4g
cHNldWRvRWxlbWVudDsKICAgICByZXR1cm4gbV9lbGVtZW50LmdldCgpOwogfQogCi0KIFJlbmRl
ckVsZW1lbnQqIENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnN0eWxlZFJlbmRlcmVyKCkgY29uc3QK
IHsKICAgICBhdXRvKiBlbGVtZW50ID0gc3R5bGVkRWxlbWVudCgpOwogICAgIGlmICghZWxlbWVu
dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKG1fcHNldWRvRWxlbWVudFNwZWNp
ZmllciAhPSBOT1BTRVVETyAmJiBlbGVtZW50ID09IG1fZWxlbWVudC5nZXQoKSkKKyAgICBpZiAo
bV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyICE9IFBzZXVkb0lkOjpOb25lICYmIGVsZW1lbnQgPT0g
bV9lbGVtZW50LmdldCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoZWxlbWVu
dC0+aGFzRGlzcGxheUNvbnRlbnRzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjQ3
OCwxNCArMjQ3NywxNCBAQCBzdGF0aWMgaW5saW5lIGNvbnN0IFJlbmRlclN0eWxlKiBjb21wdXRl
CiAgICAgICAgICAgICBvd25lZFN0eWxlID0gdGltZWxpbmUtPmFuaW1hdGVkU3R5bGVGb3JSZW5k
ZXJlcigqcmVuZGVyZXIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBvd25lZFN0eWxlID0g
cmVuZGVyZXItPmFuaW1hdGlvbigpLmFuaW1hdGVkU3R5bGVGb3JSZW5kZXJlcigqcmVuZGVyZXIp
OwotICAgICAgICBpZiAocHNldWRvRWxlbWVudFNwZWNpZmllciAmJiAhZWxlbWVudC5pc1BzZXVk
b0VsZW1lbnQoKSkgeworICAgICAgICBpZiAocHNldWRvRWxlbWVudFNwZWNpZmllciAhPSBQc2V1
ZG9JZDo6Tm9uZSAmJiAhZWxlbWVudC5pc1BzZXVkb0VsZW1lbnQoKSkgewogICAgICAgICAgICAg
Ly8gRklYTUU6IFRoaXMgY2FjaGVkIHBzZXVkbyBzdHlsZSB3aWxsIG9ubHkgZXhpc3QgaWYgdGhl
IGFuaW1hdGlvbiBoYXMgYmVlbiBydW4gYXQgbGVhc3Qgb25jZS4KICAgICAgICAgICAgIHJldHVy
biBvd25lZFN0eWxlLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShwc2V1ZG9FbGVtZW50U3BlY2lmaWVy
KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gb3duZWRTdHlsZS5nZXQoKTsKICAgICB9CiAK
LSAgICByZXR1cm4gZWxlbWVudC5jb21wdXRlZFN0eWxlKGVsZW1lbnQuaXNQc2V1ZG9FbGVtZW50
KCkgPyBOT1BTRVVETyA6IHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpOworICAgIHJldHVybiBlbGVt
ZW50LmNvbXB1dGVkU3R5bGUoZWxlbWVudC5pc1BzZXVkb0VsZW1lbnQoKSA/IFBzZXVkb0lkOjpO
b25lIDogcHNldWRvRWxlbWVudFNwZWNpZmllcik7CiB9CiAKIHN0YXRpYyBSZWY8Q1NTVmFsdWU+
IHNoYXBlUHJvcGVydHlWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IFNoYXBl
VmFsdWUqIHNoYXBlVmFsdWUpCkBAIC0yNTA2LDcgKzI1MDUsNyBAQCBzdGF0aWMgUmVmPENTU1Zh
bHVlPiBzaGFwZVByb3BlcnR5VmFsdWUoCiAKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6
OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgbGlzdC0+YXBwZW5kKHZhbHVlRm9yQmFzaWNT
aGFwZShzdHlsZSwgKnNoYXBlVmFsdWUtPnNoYXBlKCkpKTsKLSAgICBpZiAoc2hhcGVWYWx1ZS0+
Y3NzQm94KCkgIT0gQm94TWlzc2luZykKKyAgICBpZiAoc2hhcGVWYWx1ZS0+Y3NzQm94KCkgIT0g
Q1NTQm94VHlwZTo6Qm94TWlzc2luZykKICAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9v
bDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUoc2hhcGVWYWx1ZS0+Y3NzQm94KCkpKTsKICAgICBy
ZXR1cm4gV1RGTW92ZShsaXN0KTsKIH0KQEAgLTMwMTYsNyArMzAxNSw3IEBAIFJlZlB0cjxDU1NW
YWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcjoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU9y
ZGVyOgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5v
cmRlcigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlGbG9hdDoKLSAgICAgICAgICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgIT0gTk9ORSAm
JiBzdHlsZS5oYXNPdXRPZkZsb3dQb3NpdGlvbigpKQorICAgICAgICAgICAgaWYgKHN0eWxlLmRp
c3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Tm9uZSAmJiBzdHlsZS5oYXNPdXRPZkZsb3dQb3NpdGlv
bigpKQogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlTm9uZSk7CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKHN0eWxlLmZsb2F0aW5nKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9u
dDogewpAQCAtMzE0NSw3ICszMTQ0LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOgogICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vTGltaXQpOwogICAgICAgICAgICAgcmV0dXJuIENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUuaHlwaGVuYXRpb25MaW1pdExpbmVzKCksIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckZpdDoKLSAgICAgICAgICAgIGlmIChzdHlsZS5ib3JkZXJGaXQoKSA9PSBCb3JkZXJG
aXRCb3JkZXIpCisgICAgICAgICAgICBpZiAoc3R5bGUuYm9yZGVyRml0KCkgPT0gQm9yZGVyRml0
OjpCb3JkZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoQ1NTVmFsdWVCb3JkZXIpOwogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVMaW5lcyk7CiAjaWYgRU5BQkxFKENT
U19JTUFHRV9PUklFTlRBVElPTikKQEAgLTMyMDAsNyArMzE5OSw3IEBAIFJlZlB0cjxDU1NWYWx1
ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcjoKICAgICAgICAgICAgIGZsb2F0IHZhbHVlOwogICAg
ICAgICAgICAgaWYgKG1hcmdpblJpZ2h0LmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKSB7CiAgICAg
ICAgICAgICAgICAgLy8gUmVuZGVyQm94IGdpdmVzIGEgbWFyZ2luUmlnaHQoKSB0aGF0IGlzIHRo
ZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSByaWdodC1lZGdlIG9mIHRoZSBjaGlsZCBib3gKLSAgICAg
ICAgICAgICAgICAvLyBhbmQgdGhlIHJpZ2h0LWVkZ2Ugb2YgdGhlIGNvbnRhaW5pbmcgYm94LCB3
aGVuIGRpc3BsYXkgPT0gQkxPQ0suIExldCdzIGNhbGN1bGF0ZSB0aGUgYWJzb2x1dGUKKyAgICAg
ICAgICAgICAgICAvLyBhbmQgdGhlIHJpZ2h0LWVkZ2Ugb2YgdGhlIGNvbnRhaW5pbmcgYm94LCB3
aGVuIGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OkJsb2NrLiBMZXQncyBjYWxjdWxhdGUgdGhlIGFi
c29sdXRlCiAgICAgICAgICAgICAgICAgLy8gdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBtYXJnaW4t
cmlnaHQgJSBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gUmVuZGVyQm94J3MgbWFyZ2luUmlnaHQoKSB2
YWx1ZS4KICAgICAgICAgICAgICAgICB2YWx1ZSA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChtYXJn
aW5SaWdodCwgZG93bmNhc3Q8UmVuZGVyQm94PigqcmVuZGVyZXIpLmNvbnRhaW5pbmdCbG9ja0xv
Z2ljYWxXaWR0aEZvckNvbnRlbnQoKSk7CiAgICAgICAgICAgICB9IGVsc2UKQEAgLTMzNDUsMjAg
KzMzNDQsMjAgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOgogICAg
ICAgICAgICAgcmV0dXJuIHJlbmRlckVtcGhhc2lzUG9zaXRpb25GbGFnc1RvQ1NTVmFsdWUoc3R5
bGUudGV4dEVtcGhhc2lzUG9zaXRpb24oKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRUZXh0RW1waGFzaXNTdHlsZToKICAgICAgICAgICAgIHN3aXRjaCAoc3R5bGUudGV4dEVtcGhh
c2lzTWFyaygpKSB7Ci0gICAgICAgICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtOb25lOgorICAg
ICAgICAgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrOjpOb25lOgogICAgICAgICAgICAgICAgIHJl
dHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7Ci0g
ICAgICAgICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtDdXN0b206CisgICAgICAgICAgICBjYXNl
IFRleHRFbXBoYXNpc01hcms6OkN1c3RvbToKICAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFs
dWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLnRleHRFbXBoYXNpc0N1c3RvbU1hcmsoKSwgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOwotICAgICAgICAgICAgY2FzZSBUZXh0RW1waGFzaXNN
YXJrQXV0bzoKKyAgICAgICAgICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFyazo6QXV0bzoKICAgICAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNpZiBBU1NFUlRfRElTQUJMRUQKICAg
ICAgICAgICAgICAgICBGQUxMVEhST1VHSDsKICNlbmRpZgotICAgICAgICAgICAgY2FzZSBUZXh0
RW1waGFzaXNNYXJrRG90OgotICAgICAgICAgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrQ2lyY2xl
OgotICAgICAgICAgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrRG91YmxlQ2lyY2xlOgotICAgICAg
ICAgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrVHJpYW5nbGU6Ci0gICAgICAgICAgICBjYXNlIFRl
eHRFbXBoYXNpc01hcmtTZXNhbWU6CisgICAgICAgICAgICBjYXNlIFRleHRFbXBoYXNpc01hcms6
OkRvdDoKKyAgICAgICAgICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFyazo6Q2lyY2xlOgorICAgICAg
ICAgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrOjpEb3VibGVDaXJjbGU6CisgICAgICAgICAgICBj
YXNlIFRleHRFbXBoYXNpc01hcms6OlRyaWFuZ2xlOgorICAgICAgICAgICAgY2FzZSBUZXh0RW1w
aGFzaXNNYXJrOjpTZXNhbWU6CiAgICAgICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVM
aXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVu
ZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUudGV4dEVtcGhhc2lzRmlsbCgpKSk7CiAg
ICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHls
ZS50ZXh0RW1waGFzaXNNYXJrKCkpKTsKQEAgLTM1NjAsMTYgKzM1NTksMTYgQEAgUmVmUHRyPENT
U1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOgogICAgICAgICAgICAgaWYgKHQpIHsKICAg
ICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHQtPnNpemUoKTsgKytpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodC0+YW5pbWF0aW9uKGkpLmZpbGxNb2RlKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSBBbmltYXRpb25GaWxsTW9kZU5vbmU6CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGU6Ok5vbmU6CiAgICAgICAgICAgICAg
ICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZU5vbmUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlRm9yd2FyZHM6CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGU6OkZvcndhcmRzOgogICAgICAgICAgICAg
ICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVGb3J3YXJkcykpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGVCYWNrd2FyZHM6CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGU6OkJhY2t3YXJkczoKICAgICAg
ICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRp
ZmllclZhbHVlKENTU1ZhbHVlQmFja3dhcmRzKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBbmltYXRpb25GaWxsTW9kZUJvdGg6Cisg
ICAgICAgICAgICAgICAgICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGU6OkJvdGg6CiAgICAgICAg
ICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShDU1NWYWx1ZUJvdGgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgICAgICB9CkBAIC0zNjA4LDExICszNjA3LDE0IEBAIFJlZlB0cjxDU1NW
YWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcjoKICAgICAgICAgICAgIGNvbnN0IEFuaW1hdGlv
bkxpc3QqIHQgPSBzdHlsZS5hbmltYXRpb25zKCk7CiAgICAgICAgICAgICBpZiAodCkgewogICAg
ICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdC0+c2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgICAgICAgICAgICAgaW50IHByb3AgPSB0LT5hbmltYXRpb24oaSkucGxheVN0YXRlKCk7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcm9wID09IEFuaW1QbGF5U3RhdGVQbGF5aW5nKQor
ICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHQtPmFuaW1hdGlvbihpKS5wbGF5U3RhdGUoKSkg
eworICAgICAgICAgICAgICAgICAgICBjYXNlIEFuaW1hdGlvblBsYXlTdGF0ZTo6UGxheWluZzoK
ICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRl
SWRlbnRpZmllclZhbHVlKENTU1ZhbHVlUnVubmluZykpOwotICAgICAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
Y2FzZSBBbmltYXRpb25QbGF5U3RhdGU6OlBhdXNlZDoKICAgICAgICAgICAgICAgICAgICAgICAg
IGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
UGF1c2VkKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENT
U1ZhbHVlUnVubmluZykpOwpAQCAtMzcwNSw3ICszNzA3LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBD
b21wdXRlZFN0eWxlRXh0cmFjdG9yOgogICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nOgot
ICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoc3R5
bGUucnRsT3JkZXJpbmcoKSA/IENTU1ZhbHVlVmlzdWFsIDogQ1NTVmFsdWVMb2dpY2FsKTsKKyAg
ICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKHN0eWxl
LnJ0bE9yZGVyaW5nKCkgPT0gT3JkZXI6OlZpc3VhbCA/IENTU1ZhbHVlVmlzdWFsIDogQ1NTVmFs
dWVMb2dpY2FsKTsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0VGFwSGlnaGxpZ2h0Q29sb3I6CiAgICAgICAgICAgICByZXR1cm4gY3VycmVu
dENvbG9yT3JWYWxpZENvbG9yKCZzdHlsZSwgc3R5bGUudGFwSGlnaGxpZ2h0Q29sb3IoKSk7CkBA
IC0zODMzLDcgKzM4MzUsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0
b3I6CiAgICAgICAgICAgICBpZiAoaXM8U2hhcGVDbGlwUGF0aE9wZXJhdGlvbj4oKm9wZXJhdGlv
bikpIHsKICAgICAgICAgICAgICAgICBhdXRvJiBzaGFwZU9wZXJhdGlvbiA9IGRvd25jYXN0PFNo
YXBlQ2xpcFBhdGhPcGVyYXRpb24+KCpvcGVyYXRpb24pOwogICAgICAgICAgICAgICAgIGxpc3Qt
PmFwcGVuZCh2YWx1ZUZvckJhc2ljU2hhcGUoc3R5bGUsIHNoYXBlT3BlcmF0aW9uLmJhc2ljU2hh
cGUoKSkpOwotICAgICAgICAgICAgICAgIGlmIChzaGFwZU9wZXJhdGlvbi5yZWZlcmVuY2VCb3go
KSAhPSBCb3hNaXNzaW5nKQorICAgICAgICAgICAgICAgIGlmIChzaGFwZU9wZXJhdGlvbi5yZWZl
cmVuY2VCb3goKSAhPSBDU1NCb3hUeXBlOjpCb3hNaXNzaW5nKQogICAgICAgICAgICAgICAgICAg
ICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHNoYXBlT3BlcmF0aW9uLnJl
ZmVyZW5jZUJveCgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoaXM8Qm94Q2xp
cFBhdGhPcGVyYXRpb24+KCpvcGVyYXRpb24pKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAkocmV2aXNpb24gMjMyMTIzKQorKysg
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MSw4ICs1MSw4IEBAIGVudW0gQWRqdXN0UGl4ZWxWYWx1ZXNGb3JDb21wdXRl
ZFN0eWxlIHsKIAogY2xhc3MgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvciB7CiBwdWJsaWM6Ci0gICAg
Q29tcHV0ZWRTdHlsZUV4dHJhY3RvcihOb2RlKiwgYm9vbCBhbGxvd1Zpc2l0ZWRTdHlsZSA9IGZh
bHNlLCBQc2V1ZG9JZCA9IE5PUFNFVURPKTsKLSAgICBDb21wdXRlZFN0eWxlRXh0cmFjdG9yKEVs
ZW1lbnQqLCBib29sIGFsbG93VmlzaXRlZFN0eWxlID0gZmFsc2UsIFBzZXVkb0lkID0gTk9QU0VV
RE8pOworICAgIENvbXB1dGVkU3R5bGVFeHRyYWN0b3IoTm9kZSosIGJvb2wgYWxsb3dWaXNpdGVk
U3R5bGUgPSBmYWxzZSwgUHNldWRvSWQgPSBQc2V1ZG9JZDo6Tm9uZSk7CisgICAgQ29tcHV0ZWRT
dHlsZUV4dHJhY3RvcihFbGVtZW50KiwgYm9vbCBhbGxvd1Zpc2l0ZWRTdHlsZSA9IGZhbHNlLCBQ
c2V1ZG9JZCA9IFBzZXVkb0lkOjpOb25lKTsKIAogICAgIFJlZlB0cjxDU1NWYWx1ZT4gcHJvcGVy
dHlWYWx1ZShDU1NQcm9wZXJ0eUlELCBFVXBkYXRlTGF5b3V0ID0gVXBkYXRlTGF5b3V0KTsKICAg
ICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlRm9yUHJvcGVydHlpblN0eWxlKGNvbnN0IFJlbmRlclN0
eWxlJiwgQ1NTUHJvcGVydHlJRCwgUmVuZGVyRWxlbWVudCogPSBudWxscHRyKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAkocmV2aXNp
b24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGlu
Z3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTA3Myw0NSArMTA3Myw0NSBAQCB0ZW1wbGF0ZTw+IGlu
bGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlCiAgICAgcmV0dXJuIEJveE9yaWVudDo6SG9yaXpv
bnRhbDsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1p
dGl2ZVZhbHVlKEVDYXB0aW9uU2lkZSBlKQordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKENhcHRpb25TaWRlIGUpCiAgICAgOiBDU1NWYWx1ZShQ
cmltaXRpdmVDbGFzcykKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lE
OwogICAgIHN3aXRjaCAoZSkgewotICAgIGNhc2UgQ0FQTEVGVDoKKyAgICBjYXNlIENhcHRpb25T
aWRlOjpMZWZ0OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUxlZnQ7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ0FQUklHSFQ6CisgICAgY2FzZSBDYXB0aW9uU2lkZTo6Umln
aHQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlUmlnaHQ7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQ0FQVE9QOgorICAgIGNhc2UgQ2FwdGlvblNpZGU6OlRvcDoKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVUb3A7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQ0FQQk9UVE9NOgorICAgIGNhc2UgQ2FwdGlvblNpZGU6OkJvdHRvbToKICAgICAgICAgbV92
YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVCb3R0b207CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0K
IAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVDYXB0aW9u
U2lkZSgpIGNvbnN0Cit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0
b3IgQ2FwdGlvblNpZGUoKSBjb25zdAogewogICAgIEFTU0VSVChpc1ZhbHVlSUQoKSk7CiAKICAg
ICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkgewogICAgIGNhc2UgQ1NTVmFsdWVMZWZ0OgotICAg
ICAgICByZXR1cm4gQ0FQTEVGVDsKKyAgICAgICAgcmV0dXJuIENhcHRpb25TaWRlOjpMZWZ0Owog
ICAgIGNhc2UgQ1NTVmFsdWVSaWdodDoKLSAgICAgICAgcmV0dXJuIENBUFJJR0hUOworICAgICAg
ICByZXR1cm4gQ2FwdGlvblNpZGU6OlJpZ2h0OwogICAgIGNhc2UgQ1NTVmFsdWVUb3A6Ci0gICAg
ICAgIHJldHVybiBDQVBUT1A7CisgICAgICAgIHJldHVybiBDYXB0aW9uU2lkZTo6VG9wOwogICAg
IGNhc2UgQ1NTVmFsdWVCb3R0b206Ci0gICAgICAgIHJldHVybiBDQVBCT1RUT007CisgICAgICAg
IHJldHVybiBDYXB0aW9uU2lkZTo6Qm90dG9tOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFr
OwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBDQVBUT1A7
CisgICAgcmV0dXJuIENhcHRpb25TaWRlOjpUb3A7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShDbGVhciBlKQpAQCAtMTE1NSwxNDAg
KzExNTUsMTQwIEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGUKICAg
ICByZXR1cm4gQ2xlYXI6Ok5vbmU7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShFQ3Vyc29yIGUpCit0ZW1wbGF0ZTw+IGlubGluZSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoQ3Vyc29yVHlwZSBlKQogICAgIDog
Q1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENT
U19WQUxVRV9JRDsKICAgICBzd2l0Y2ggKGUpIHsKLSAgICBjYXNlIEN1cnNvckF1dG86CisgICAg
Y2FzZSBDdXJzb3JUeXBlOjpBdXRvOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1
ZUF1dG87CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yRGVmYXVsdDoKKyAgICBjYXNl
IEN1cnNvclR5cGU6OkRlZmF1bHQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVl
RGVmYXVsdDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JOb25lOgorICAgIGNhc2Ug
Q3Vyc29yVHlwZTo6Tm9uZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb25l
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNvckNvbnRleHRNZW51OgorICAgIGNhc2Ug
Q3Vyc29yVHlwZTo6Q29udGV4dE1lbnU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlQ29udGV4dE1lbnU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29ySGVscDoKKyAg
ICBjYXNlIEN1cnNvclR5cGU6OkhlbHA6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlSGVscDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JQb2ludGVyOgorICAgIGNh
c2UgQ3Vyc29yVHlwZTo6UG9pbnRlcjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFs
dWVQb2ludGVyOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNvclByb2dyZXNzOgorICAg
IGNhc2UgQ3Vyc29yVHlwZTo6UHJvZ3Jlc3M6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlUHJvZ3Jlc3M7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yV2FpdDoKKyAg
ICBjYXNlIEN1cnNvclR5cGU6OldhaXQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlV2FpdDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JDZWxsOgorICAgIGNhc2Ug
Q3Vyc29yVHlwZTo6Q2VsbDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVDZWxs
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNvckNyb3NzaGFpcjoKKyAgICBjYXNlIEN1
cnNvclR5cGU6OkNyb3NzaGFpcjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVD
cm9zc2hhaXI7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yVGV4dDoKKyAgICBjYXNl
IEN1cnNvclR5cGU6OlRleHQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVGV4
dDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JWZXJ0aWNhbFRleHQ6CisgICAgY2Fz
ZSBDdXJzb3JUeXBlOjpWZXJ0aWNhbFRleHQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlVmVydGljYWxUZXh0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNvckFsaWFz
OgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6QWxpYXM6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9
IENTU1ZhbHVlQWxpYXM7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yQ29weToKKyAg
ICBjYXNlIEN1cnNvclR5cGU6OkNvcHk6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlQ29weTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JNb3ZlOgorICAgIGNhc2Ug
Q3Vyc29yVHlwZTo6TW92ZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVNb3Zl
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNvck5vRHJvcDoKKyAgICBjYXNlIEN1cnNv
clR5cGU6Ok5vRHJvcDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb0Ryb3A7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yTm90QWxsb3dlZDoKKyAgICBjYXNlIEN1
cnNvclR5cGU6Ok5vdEFsbG93ZWQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVl
Tm90QWxsb3dlZDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JHcmFiOgorICAgIGNh
c2UgQ3Vyc29yVHlwZTo6R3JhYjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVH
cmFiOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNvckdyYWJiaW5nOgorICAgIGNhc2Ug
Q3Vyc29yVHlwZTo6R3JhYmJpbmc6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVl
R3JhYmJpbmc7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yRVJlc2l6ZToKKyAgICBj
YXNlIEN1cnNvclR5cGU6OkVSZXNpemU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlRVJlc2l6ZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JOUmVzaXplOgorICAg
IGNhc2UgQ3Vyc29yVHlwZTo6TlJlc2l6ZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NT
VmFsdWVOUmVzaXplOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNvck5lUmVzaXplOgor
ICAgIGNhc2UgQ3Vyc29yVHlwZTo6TkVSZXNpemU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9
IENTU1ZhbHVlTmVSZXNpemU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yTndSZXNp
emU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpOV1Jlc2l6ZToKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVOd1Jlc2l6ZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JT
UmVzaXplOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6U1Jlc2l6ZToKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVTUmVzaXplOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNv
clNlUmVzaXplOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6U0VSZXNpemU6CiAgICAgICAgIG1fdmFs
dWUudmFsdWVJRCA9IENTU1ZhbHVlU2VSZXNpemU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
Q3Vyc29yU3dSZXNpemU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpTV1Jlc2l6ZToKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVTd1Jlc2l6ZTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBDdXJzb3JXUmVzaXplOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6V1Jlc2l6ZToKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVXUmVzaXplOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEN1cnNvckV3UmVzaXplOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6RVdSZXNpemU6CiAg
ICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRXdSZXNpemU7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQ3Vyc29yTnNSZXNpemU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpOU1Jlc2l6
ZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOc1Jlc2l6ZTsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JOZXN3UmVzaXplOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6
TkVTV1Jlc2l6ZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOZXN3UmVzaXpl
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNvck53c2VSZXNpemU6CisgICAgY2FzZSBD
dXJzb3JUeXBlOjpOV1NFUmVzaXplOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1
ZU53c2VSZXNpemU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yQ29sUmVzaXplOgor
ICAgIGNhc2UgQ3Vyc29yVHlwZTo6Q29sdW1uUmVzaXplOgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZUNvbFJlc2l6ZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JS
b3dSZXNpemU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpSb3dSZXNpemU6CiAgICAgICAgIG1fdmFs
dWUudmFsdWVJRCA9IENTU1ZhbHVlUm93UmVzaXplOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEN1cnNvckFsbFNjcm9sbDoKKyAgICBjYXNlIEN1cnNvclR5cGU6OkFsbFNjcm9sbDoKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBbGxTY3JvbGw7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQ3Vyc29yWm9vbUluOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6Wm9vbUluOgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVpvb21JbjsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBDdXJzb3Jab29tT3V0OgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6Wm9vbU91dDoKICAg
ICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVab29tT3V0OwogICAgICAgICBicmVhazsK
ICAgICB9CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRv
ciBFQ3Vyc29yKCkgY29uc3QKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpv
cGVyYXRvciBDdXJzb3JUeXBlKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNWYWx1ZUlEKCkpOwog
ICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUNvcHk6Ci0g
ICAgICAgIHJldHVybiBDdXJzb3JDb3B5OworICAgICAgICByZXR1cm4gQ3Vyc29yVHlwZTo6Q29w
eTsKICAgICBjYXNlIENTU1ZhbHVlV2Via2l0R3JhYjoKLSAgICAgICAgcmV0dXJuIEN1cnNvckdy
YWI7CisgICAgICAgIHJldHVybiBDdXJzb3JUeXBlOjpHcmFiOwogICAgIGNhc2UgQ1NTVmFsdWVX
ZWJraXRHcmFiYmluZzoKLSAgICAgICAgcmV0dXJuIEN1cnNvckdyYWJiaW5nOworICAgICAgICBy
ZXR1cm4gQ3Vyc29yVHlwZTo6R3JhYmJpbmc7CiAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdFpvb21J
bjoKLSAgICAgICAgcmV0dXJuIEN1cnNvclpvb21JbjsKKyAgICAgICAgcmV0dXJuIEN1cnNvclR5
cGU6Olpvb21JbjsKICAgICBjYXNlIENTU1ZhbHVlV2Via2l0Wm9vbU91dDoKLSAgICAgICAgcmV0
dXJuIEN1cnNvclpvb21PdXQ7CisgICAgICAgIHJldHVybiBDdXJzb3JUeXBlOjpab29tT3V0Owog
ICAgIGNhc2UgQ1NTVmFsdWVOb25lOgotICAgICAgICByZXR1cm4gQ3Vyc29yTm9uZTsKKyAgICAg
ICAgcmV0dXJuIEN1cnNvclR5cGU6Ok5vbmU7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEVDdXJzb3I+KG1fdmFsdWUudmFsdWVJRCAtIENTU1ZhbHVlQXV0byk7Cisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDdXJzb3JUeXBlPihtX3ZhbHVlLnZhbHVlSUQgLSBD
U1NWYWx1ZUF1dG8pOwogICAgIH0KIH0KIApAQCAtMTI5OCwxMCArMTI5OCwxMCBAQCB0ZW1wbGF0
ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTCiB7CiAgICAgbV9wcmltaXRpdmVVbml0
VHlwZSA9IENTU19WQUxVRV9JRDsKICAgICBzd2l0Y2ggKGUpIHsKLSAgICBjYXNlIEN1cnNvclZp
c2liaWxpdHlBdXRvOgorICAgIGNhc2UgQ3Vyc29yVmlzaWJpbGl0eTo6QXV0bzoKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBdXRvOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEN1cnNvclZpc2liaWxpdHlBdXRvSGlkZToKKyAgICBjYXNlIEN1cnNvclZpc2liaWxpdHk6OkF1
dG9IaWRlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUF1dG9IaWRlOwogICAg
ICAgICBicmVhazsKICAgICB9CkBAIC0xMzEyLDEzOSArMTMxMiwxMzkgQEAgdGVtcGxhdGU8PiBp
bmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZQogICAgIEFTU0VSVChpc1ZhbHVlSUQoKSk7CiAK
ICAgICBpZiAobV92YWx1ZS52YWx1ZUlEID09IENTU1ZhbHVlQXV0bykKLSAgICAgICAgcmV0dXJu
IEN1cnNvclZpc2liaWxpdHlBdXRvOworICAgICAgICByZXR1cm4gQ3Vyc29yVmlzaWJpbGl0eTo6
QXV0bzsKICAgICBpZiAobV92YWx1ZS52YWx1ZUlEID09IENTU1ZhbHVlQXV0b0hpZGUpCi0gICAg
ICAgIHJldHVybiBDdXJzb3JWaXNpYmlsaXR5QXV0b0hpZGU7CisgICAgICAgIHJldHVybiBDdXJz
b3JWaXNpYmlsaXR5OjpBdXRvSGlkZTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiBDdXJzb3JWaXNpYmlsaXR5QXV0bzsKKyAgICByZXR1cm4gQ3Vyc29yVmlzaWJpbGl0
eTo6QXV0bzsKIH0KICNlbmRpZgogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRURpc3BsYXkgZSkKK3RlbXBsYXRlPD4gaW5saW5lIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShEaXNwbGF5VHlwZSBlKQogICAgIDogQ1NT
VmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19W
QUxVRV9JRDsKICAgICBzd2l0Y2ggKGUpIHsKLSAgICBjYXNlIElOTElORToKKyAgICBjYXNlIERp
c3BsYXlUeXBlOjpJbmxpbmU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlSW5s
aW5lOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJMT0NLOgorICAgIGNhc2UgRGlzcGxheVR5
cGU6OkJsb2NrOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUJsb2NrOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIExJU1RfSVRFTToKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpM
aXN0SXRlbToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVMaXN0SXRlbTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDT01QQUNUOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OkNv
bXBhY3Q6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQ29tcGFjdDsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBJTkxJTkVfQkxPQ0s6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6
SW5saW5lQmxvY2s6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlSW5saW5lQmxv
Y2s7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVEFCTEU6CisgICAgY2FzZSBEaXNwbGF5VHlw
ZTo6VGFibGU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVGFibGU7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSU5MSU5FX1RBQkxFOgorICAgIGNhc2UgRGlzcGxheVR5cGU6
OklubGluZVRhYmxlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUlubGluZVRh
YmxlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRBQkxFX1JPV19HUk9VUDoKKyAgICBjYXNl
IERpc3BsYXlUeXBlOjpUYWJsZVJvd0dyb3VwOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZVRhYmxlUm93R3JvdXA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVEFCTEVfSEVB
REVSX0dST1VQOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlSGVhZGVyR3JvdXA6CiAgICAg
ICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVGFibGVIZWFkZXJHcm91cDsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBUQUJMRV9GT09URVJfR1JPVVA6CisgICAgY2FzZSBEaXNwbGF5VHlw
ZTo6VGFibGVGb290ZXJHcm91cDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVU
YWJsZUZvb3Rlckdyb3VwOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRBQkxFX1JPVzoKKyAg
ICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZVJvdzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0g
Q1NTVmFsdWVUYWJsZVJvdzsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUQUJMRV9DT0xVTU5f
R1JPVVA6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1bW5Hcm91cDoKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVUYWJsZUNvbHVtbkdyb3VwOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIFRBQkxFX0NPTFVNTjoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZUNv
bHVtbjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVUYWJsZUNvbHVtbjsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUQUJMRV9DRUxMOgorICAgIGNhc2UgRGlzcGxheVR5cGU6
OlRhYmxlQ2VsbDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVUYWJsZUNlbGw7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVEFCTEVfQ0FQVElPTjoKKyAgICBjYXNlIERpc3Bs
YXlUeXBlOjpUYWJsZUNhcHRpb246CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVl
VGFibGVDYXB0aW9uOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJPWDoKKyAgICBjYXNlIERp
c3BsYXlUeXBlOjpCb3g6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlV2Via2l0
Qm94OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIElOTElORV9CT1g6CisgICAgY2FzZSBEaXNw
bGF5VHlwZTo6SW5saW5lQm94OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVdl
YmtpdElubGluZUJveDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGTEVYOgotICAgIGNhc2Ug
V0VCS0lUX0ZMRVg6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6RmxleDoKKyAgICBjYXNlIERpc3Bs
YXlUeXBlOjpXZWJLaXRGbGV4OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUZs
ZXg7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSU5MSU5FX0ZMRVg6Ci0gICAgY2FzZSBXRUJL
SVRfSU5MSU5FX0ZMRVg6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6SW5saW5lRmxleDoKKyAgICBj
YXNlIERpc3BsYXlUeXBlOjpXZWJLaXRJbmxpbmVGbGV4OgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZUlubGluZUZsZXg7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgR1JJRDoK
KyAgICBjYXNlIERpc3BsYXlUeXBlOjpHcmlkOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZUdyaWQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSU5MSU5FX0dSSUQ6CisgICAg
Y2FzZSBEaXNwbGF5VHlwZTo6SW5saW5lR3JpZDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0g
Q1NTVmFsdWVJbmxpbmVHcmlkOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE5PTkU6CisgICAg
Y2FzZSBEaXNwbGF5VHlwZTo6Tm9uZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFs
dWVOb25lOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENPTlRFTlRTOgorICAgIGNhc2UgRGlz
cGxheVR5cGU6OkNvbnRlbnRzOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUNv
bnRlbnRzOwogICAgICAgICBicmVhazsKICAgICB9CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFRGlzcGxheSgpIGNvbnN0Cit0ZW1wbGF0ZTw+IGlu
bGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRGlzcGxheVR5cGUoKSBjb25zdAogewog
ICAgIEFTU0VSVChpc1ZhbHVlSUQoKSk7CiAKICAgICBpZiAobV92YWx1ZS52YWx1ZUlEID09IENT
U1ZhbHVlTm9uZSkKLSAgICAgICAgcmV0dXJuIE5PTkU7CisgICAgICAgIHJldHVybiBEaXNwbGF5
VHlwZTo6Tm9uZTsKIAotICAgIEVEaXNwbGF5IGRpc3BsYXkgPSBzdGF0aWNfY2FzdDxFRGlzcGxh
eT4obV92YWx1ZS52YWx1ZUlEIC0gQ1NTVmFsdWVJbmxpbmUpOwotICAgIEFTU0VSVChkaXNwbGF5
ID49IElOTElORSAmJiBkaXNwbGF5IDw9IE5PTkUpOwotICAgIGlmIChkaXNwbGF5ID09IFdFQktJ
VF9GTEVYKQotICAgICAgICByZXR1cm4gRkxFWDsKLSAgICBpZiAoZGlzcGxheSA9PSBXRUJLSVRf
SU5MSU5FX0ZMRVgpCi0gICAgICAgIHJldHVybiBJTkxJTkVfRkxFWDsKKyAgICBEaXNwbGF5VHlw
ZSBkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8RGlzcGxheVR5cGU+KG1fdmFsdWUudmFsdWVJRCAtIENT
U1ZhbHVlSW5saW5lKTsKKyAgICBBU1NFUlQoZGlzcGxheSA+PSBEaXNwbGF5VHlwZTo6SW5saW5l
ICYmIGRpc3BsYXkgPD0gRGlzcGxheVR5cGU6Ok5vbmUpOworICAgIGlmIChkaXNwbGF5ID09IERp
c3BsYXlUeXBlOjpXZWJLaXRGbGV4KQorICAgICAgICByZXR1cm4gRGlzcGxheVR5cGU6OkZsZXg7
CisgICAgaWYgKGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OldlYktpdElubGluZUZsZXgpCisgICAg
ICAgIHJldHVybiBEaXNwbGF5VHlwZTo6SW5saW5lRmxleDsKICAgICByZXR1cm4gZGlzcGxheTsK
IH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZh
bHVlKEVFbXB0eUNlbGwgZSkKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NQcmltaXRpdmVWYWx1ZShFbXB0eUNlbGwgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNs
YXNzKQogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dp
dGNoIChlKSB7Ci0gICAgY2FzZSBTSE9XOgorICAgIGNhc2UgRW1wdHlDZWxsOjpTaG93OgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVNob3c7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgSElERToKKyAgICBjYXNlIEVtcHR5Q2VsbDo6SGlkZToKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVIaWRlOwogICAgICAgICBicmVhazsKICAgICB9CiB9CiAKLXRlbXBs
YXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFRW1wdHlDZWxsKCkgY29u
c3QKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFbXB0eUNl
bGwoKSBjb25zdAogewogICAgIEFTU0VSVChpc1ZhbHVlSUQoKSk7CiAKICAgICBzd2l0Y2ggKG1f
dmFsdWUudmFsdWVJRCkgewogICAgIGNhc2UgQ1NTVmFsdWVTaG93OgotICAgICAgICByZXR1cm4g
U0hPVzsKKyAgICAgICAgcmV0dXJuIEVtcHR5Q2VsbDo6U2hvdzsKICAgICBjYXNlIENTU1ZhbHVl
SGlkZToKLSAgICAgICAgcmV0dXJuIEhJREU7CisgICAgICAgIHJldHVybiBFbXB0eUNlbGw6Okhp
ZGU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFNIT1c7CisgICAgcmV0dXJuIEVtcHR5Q2VsbDo6U2hv
dzsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2
ZVZhbHVlKEZsZXhEaXJlY3Rpb24gZSkKQEAgLTE2ODEsMjk3ICsxNjgxLDI5NyBAQCB0ZW1wbGF0
ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlCiAgICAgcmV0dXJuIExpbmVCcmVhazo6
QXV0bzsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1p
dGl2ZVZhbHVlKEVMaXN0U3R5bGVQb3NpdGlvbiBlKQordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKExpc3RTdHlsZVBvc2l0aW9uIGUpCiAgICAg
OiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0g
Q1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAoZSkgewotICAgIGNhc2UgT1VUU0lERToKKyAgICBj
YXNlIExpc3RTdHlsZVBvc2l0aW9uOjpPdXRzaWRlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQg
PSBDU1NWYWx1ZU91dHNpZGU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSU5TSURFOgorICAg
IGNhc2UgTGlzdFN0eWxlUG9zaXRpb246Okluc2lkZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVJbnNpZGU7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAotdGVtcGxhdGU8
PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVMaXN0U3R5bGVQb3NpdGlvbigp
IGNvbnN0Cit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgTGlz
dFN0eWxlUG9zaXRpb24oKSBjb25zdAogewogICAgIEFTU0VSVChpc1ZhbHVlSUQoKSk7CiAKICAg
ICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkgewogICAgIGNhc2UgQ1NTVmFsdWVPdXRzaWRlOgot
ICAgICAgICByZXR1cm4gT1VUU0lERTsKKyAgICAgICAgcmV0dXJuIExpc3RTdHlsZVBvc2l0aW9u
OjpPdXRzaWRlOwogICAgIGNhc2UgQ1NTVmFsdWVJbnNpZGU6Ci0gICAgICAgIHJldHVybiBJTlNJ
REU7CisgICAgICAgIHJldHVybiBMaXN0U3R5bGVQb3NpdGlvbjo6SW5zaWRlOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiBPVVRTSURFOworICAgIHJldHVybiBMaXN0U3R5bGVQb3NpdGlvbjo6T3V0c2lk
ZTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2
ZVZhbHVlKEVMaXN0U3R5bGVUeXBlIGUpCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoTGlzdFN0eWxlVHlwZSBlKQogICAgIDogQ1NTVmFsdWUo
UHJpbWl0aXZlQ2xhc3MpCiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9J
RDsKICAgICBzd2l0Y2ggKGUpIHsKLSAgICBjYXNlIEFmYXI6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpBZmFyOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUFmYXI7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQW1oYXJpYzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFt
aGFyaWM6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQW1oYXJpYzsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBBbWhhcmljQWJlZ2VkZToKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkFtaGFyaWNBYmVnZWRlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUFt
aGFyaWNBYmVnZWRlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEFyYWJpY0luZGljOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6QXJhYmljSW5kaWM6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlQXJhYmljSW5kaWM7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQXJtZW5p
YW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBcm1lbmlhbjoKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVBcm1lbmlhbjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBc3Rl
cmlza3M6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBc3Rlcmlza3M6CiAgICAgICAgIG1fdmFs
dWUudmFsdWVJRCA9IENTU1ZhbHVlQXN0ZXJpc2tzOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEJpbmFyeUxpc3RTdHlsZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkJpbmFyeToKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVCaW5hcnk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgQmVuZ2FsaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkJlbmdhbGk6CiAgICAgICAg
IG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQmVuZ2FsaTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBDYW1ib2RpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDYW1ib2RpYW46CiAgICAg
ICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQ2FtYm9kaWFuOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIENpcmNsZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNpcmNsZToKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVDaXJjbGU7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgQ2prRWFydGhseUJyYW5jaDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNqa0VhcnRo
bHlCcmFuY2g6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQ2prRWFydGhseUJy
YW5jaDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDamtIZWF2ZW5seVN0ZW06CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpDamtIZWF2ZW5seVN0ZW06CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlQ2prSGVhdmVubHlTdGVtOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENK
S0lkZW9ncmFwaGljOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q0pLSWRlb2dyYXBoaWM6CiAg
ICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQ2prSWRlb2dyYXBoaWM7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgRGVjaW1hbExlYWRpbmdaZXJvOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6RGVjaW1hbExlYWRpbmdaZXJvOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NW
YWx1ZURlY2ltYWxMZWFkaW5nWmVybzsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEZWNpbWFs
TGlzdFN0eWxlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGVjaW1hbDoKICAgICAgICAgbV92
YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVEZWNpbWFsOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IERldmFuYWdhcmk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEZXZhbmFnYXJpOgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZURldmFuYWdhcmk7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgRGlzYzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRpc2M6CiAgICAgICAgIG1f
dmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRGlzYzsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBF
dGhpb3BpYzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljOgogICAgICAgICBtX3Zh
bHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUV0aGlvcGljOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEV0aGlvcGljQWJlZ2VkZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2Vk
ZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVFdGhpb3BpY0FiZWdlZGU7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlQW1FdDoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZUFtRXQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlRXRoaW9waWNBYmVnZWRlQW1FdDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBFdGhpb3BpY0FiZWdlZGVHZXo6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0Fi
ZWdlZGVHZXo6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRXRoaW9waWNBYmVn
ZWRlR2V6OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZVRpRXI6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGVUaUVyOgogICAgICAgICBtX3Zh
bHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUV0aGlvcGljQWJlZ2VkZVRpRXI7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlVGlFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
OkV0aGlvcGljQWJlZ2VkZVRpRXQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVl
RXRoaW9waWNBYmVnZWRlVGlFdDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFdGhpb3BpY0hh
bGVoYW1lQWFFcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVBYUVy
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUV0aGlvcGljSGFsZWhhbWVBYUVy
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVBYUV0OgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUFhRXQ6CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlRXRoaW9waWNIYWxlaGFtZUFhRXQ7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUFtRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpF
dGhpb3BpY0hhbGVoYW1lQW1FdDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVF
dGhpb3BpY0hhbGVoYW1lQW1FdDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFdGhpb3BpY0hh
bGVoYW1lR2V6OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUdlejoK
ICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVFdGhpb3BpY0hhbGVoYW1lR2V6Owog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVPbUV0OgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZU9tRXQ6CiAgICAgICAgIG1fdmFsdWUudmFs
dWVJRCA9IENTU1ZhbHVlRXRoaW9waWNIYWxlaGFtZU9tRXQ7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgRXRoaW9waWNIYWxlaGFtZVNpZEV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRo
aW9waWNIYWxlaGFtZVNpZEV0OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUV0
aGlvcGljSGFsZWhhbWVTaWRFdDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFdGhpb3BpY0hh
bGVoYW1lU29FdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVTb0V0
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUV0aGlvcGljSGFsZWhhbWVTb0V0
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVUaUVyOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVRpRXI6CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlRXRoaW9waWNIYWxlaGFtZVRpRXI7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVRpRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpF
dGhpb3BpY0hhbGVoYW1lVGlFdDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVF
dGhpb3BpY0hhbGVoYW1lVGlFdDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFdGhpb3BpY0hh
bGVoYW1lVGlnOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVRpZzoK
ICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVFdGhpb3BpY0hhbGVoYW1lVGlnOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEZvb3Rub3RlczoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkZvb3Rub3RlczoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVGb290bm90
ZXM7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgR2VvcmdpYW46CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpHZW9yZ2lhbjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVHZW9y
Z2lhbjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHdWphcmF0aToKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6Okd1amFyYXRpOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUd1
amFyYXRpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEd1cm11a2hpOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6R3VybXVraGk6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVl
R3VybXVraGk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSGFuZ3VsOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6SGFuZ3VsOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUhh
bmd1bDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIYW5ndWxDb25zb25hbnQ6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpIYW5ndWxDb25zb25hbnQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlSGFuZ3VsQ29uc29uYW50OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEhl
YnJldzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkhlYnJldzoKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVIZWJyZXc7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSGlyYWdh
bmE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIaXJhZ2FuYToKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVIaXJhZ2FuYTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIaXJh
Z2FuYUlyb2hhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGlyYWdhbmFJcm9oYToKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVIaXJhZ2FuYUlyb2hhOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIEthbm5hZGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLYW5uYWRhOgog
ICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUthbm5hZGE7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgS2F0YWthbmE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLYXRha2FuYToK
ICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVLYXRha2FuYTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBLYXRha2FuYUlyb2hhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6S2F0
YWthbmFJcm9oYToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVLYXRha2FuYUly
b2hhOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEtobWVyOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6S2htZXI6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlS2htZXI7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGFvOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TGFv
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUxhbzsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBMb3dlckFscGhhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJBbHBo
YToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVMb3dlckFscGhhOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIExvd2VyQXJtZW5pYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpMb3dlckFybWVuaWFuOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUxvd2Vy
QXJtZW5pYW47CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTG93ZXJHcmVlazoKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6Okxvd2VyR3JlZWs6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlTG93ZXJHcmVlazsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMb3dlckhleGFkZWNp
bWFsOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJIZXhhZGVjaW1hbDoKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVMb3dlckhleGFkZWNpbWFsOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIExvd2VyTGF0aW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckxh
dGluOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUxvd2VyTGF0aW47CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgTG93ZXJOb3J3ZWdpYW46CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpMb3dlck5vcndlZ2lhbjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVM
b3dlck5vcndlZ2lhbjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMb3dlclJvbWFuOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJSb21hbjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVMb3dlclJvbWFuOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE1hbGF5YWxh
bToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok1hbGF5YWxhbToKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVNYWxheWFsYW07CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTW9u
Z29saWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TW9uZ29saWFuOgogICAgICAgICBtX3Zh
bHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU1vbmdvbGlhbjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBNeWFubWFyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TXlhbm1hcjoKICAgICAgICAgbV92
YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVNeWFubWFyOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IE5vbmVMaXN0U3R5bGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpOb25lOgogICAgICAgICBt
X3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5vbmU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
T2N0YWw6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpPY3RhbDoKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVPY3RhbDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPcml5YToK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok9yaXlhOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQg
PSBDU1NWYWx1ZU9yaXlhOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE9yb21vOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6T3JvbW86CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlT3JvbW87CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGVyc2lhbjoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OlBlcnNpYW46CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVl
UGVyc2lhbjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTaWRhbWE6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpTaWRhbWE6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlU2lk
YW1hOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNvbWFsaToKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OlNvbWFsaToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVTb21hbGk7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgU3F1YXJlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6U3F1YXJlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVNxdWFyZTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUZWx1Z3U6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpU
ZWx1Z3U6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVGVsdWd1OwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFRoYWk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaGFpOgog
ICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVRoYWk7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgVGliZXRhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpYmV0YW46CiAgICAg
ICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVGliZXRhbjsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBUaWdyZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JlOgogICAgICAgICBt
X3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVRpZ3JlOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IFRpZ3JpbnlhRXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55YUVyOgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVRpZ3JpbnlhRXI7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgVGlncmlueWFFckFiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdy
aW55YUVyQWJlZ2VkZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVUaWdyaW55
YUVyQWJlZ2VkZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUaWdyaW55YUV0OgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6VGlncmlueWFFdDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0g
Q1NTVmFsdWVUaWdyaW55YUV0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRpZ3JpbnlhRXRB
YmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmlueWFFdEFiZWdlZGU6CiAgICAg
ICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVGlncmlueWFFdEFiZWdlZGU7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgVXBwZXJBbHBoYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVw
cGVyQWxwaGE6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVXBwZXJBbHBoYTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBVcHBlckFybWVuaWFuOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6VXBwZXJBcm1lbmlhbjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFs
dWVVcHBlckFybWVuaWFuOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFVwcGVyR3JlZWs6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckdyZWVrOgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZVVwcGVyR3JlZWs7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVXBwZXJI
ZXhhZGVjaW1hbDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVySGV4YWRlY2ltYWw6CiAg
ICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVXBwZXJIZXhhZGVjaW1hbDsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBVcHBlckxhdGluOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
VXBwZXJMYXRpbjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVVcHBlckxhdGlu
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFVwcGVyTm9yd2VnaWFuOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6VXBwZXJOb3J3ZWdpYW46CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlVXBwZXJOb3J3ZWdpYW47CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVXBwZXJSb21h
bjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyUm9tYW46CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlVXBwZXJSb21hbjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBV
cmR1OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXJkdToKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVVcmR1OwogICAgICAgICBicmVhazsKICAgICB9CiB9CiAKLXRlbXBsYXRl
PD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFTGlzdFN0eWxlVHlwZSgpIGNv
bnN0Cit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgTGlzdFN0
eWxlVHlwZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzVmFsdWVJRCgpKTsKIAogICAgIHN3aXRj
aCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZU5vbmU6Ci0gICAgICAgIHJl
dHVybiBOb25lTGlzdFN0eWxlOworICAgICAgICByZXR1cm4gTGlzdFN0eWxlVHlwZTo6Tm9uZTsK
ICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RUxpc3RTdHlsZVR5cGU+
KG1fdmFsdWUudmFsdWVJRCAtIENTU1ZhbHVlRGlzYyk7CisgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxMaXN0U3R5bGVUeXBlPihtX3ZhbHVlLnZhbHVlSUQgLSBDU1NWYWx1ZURpc2MpOwogICAg
IH0KIH0KIApAQCAtMjIwMiwzNCArMjIwMiwzNCBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTCiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9J
RDsKICAgICBzd2l0Y2ggKGUpIHsKLSAgICBjYXNlIEF1dG9CcmVha0JldHdlZW46CisgICAgY2Fz
ZSBCcmVha0JldHdlZW46OkF1dG86CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVl
QXV0bzsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBdm9pZEJyZWFrQmV0d2VlbjoKKyAgICBj
YXNlIEJyZWFrQmV0d2Vlbjo6QXZvaWQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlQXZvaWQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQXZvaWRDb2x1bW5CcmVha0JldHdl
ZW46CisgICAgY2FzZSBCcmVha0JldHdlZW46OkF2b2lkQ29sdW1uOgogICAgICAgICBtX3ZhbHVl
LnZhbHVlSUQgPSBDU1NWYWx1ZUF2b2lkQ29sdW1uOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEF2b2lkUGFnZUJyZWFrQmV0d2VlbjoKKyAgICBjYXNlIEJyZWFrQmV0d2Vlbjo6QXZvaWRQYWdl
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUF2b2lkUGFnZTsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBDb2x1bW5CcmVha0JldHdlZW46CisgICAgY2FzZSBCcmVha0JldHdl
ZW46OkNvbHVtbjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVDb2x1bW47CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGFnZUJyZWFrQmV0d2VlbjoKKyAgICBjYXNlIEJyZWFr
QmV0d2Vlbjo6UGFnZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVQYWdlOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIExlZnRQYWdlQnJlYWtCZXR3ZWVuOgorICAgIGNhc2Ug
QnJlYWtCZXR3ZWVuOjpMZWZ0UGFnZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFs
dWVMZWZ0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFJpZ2h0UGFnZUJyZWFrQmV0d2VlbjoK
KyAgICBjYXNlIEJyZWFrQmV0d2Vlbjo6UmlnaHRQYWdlOgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZVJpZ2h0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFJlY3RvUGFnZUJy
ZWFrQmV0d2VlbjoKKyAgICBjYXNlIEJyZWFrQmV0d2Vlbjo6UmVjdG9QYWdlOgogICAgICAgICBt
X3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVJlY3RvOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IFZlcnNvUGFnZUJyZWFrQmV0d2VlbjoKKyAgICBjYXNlIEJyZWFrQmV0d2Vlbjo6VmVyc29QYWdl
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVZlcnNvOwogICAgICAgICBicmVh
azsKICAgICB9CkBAIC0yMjQxLDMxICsyMjQxLDMxIEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1By
aW1pdGl2ZVZhbHVlOjpvcGUKIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAg
Y2FzZSBDU1NWYWx1ZUF1dG86Ci0gICAgICAgIHJldHVybiBBdXRvQnJlYWtCZXR3ZWVuOworICAg
ICAgICByZXR1cm4gQnJlYWtCZXR3ZWVuOjpBdXRvOwogICAgIGNhc2UgQ1NTVmFsdWVBdm9pZDoK
LSAgICAgICAgcmV0dXJuIEF2b2lkQnJlYWtCZXR3ZWVuOworICAgICAgICByZXR1cm4gQnJlYWtC
ZXR3ZWVuOjpBdm9pZDsKICAgICBjYXNlIENTU1ZhbHVlQXZvaWRDb2x1bW46Ci0gICAgICAgIHJl
dHVybiBBdm9pZENvbHVtbkJyZWFrQmV0d2VlbjsKKyAgICAgICAgcmV0dXJuIEJyZWFrQmV0d2Vl
bjo6QXZvaWRDb2x1bW47CiAgICAgY2FzZSBDU1NWYWx1ZUF2b2lkUGFnZToKLSAgICAgICAgcmV0
dXJuIEF2b2lkUGFnZUJyZWFrQmV0d2VlbjsKKyAgICAgICAgcmV0dXJuIEJyZWFrQmV0d2Vlbjo6
QXZvaWRQYWdlOwogICAgIGNhc2UgQ1NTVmFsdWVDb2x1bW46Ci0gICAgICAgIHJldHVybiBDb2x1
bW5CcmVha0JldHdlZW47CisgICAgICAgIHJldHVybiBCcmVha0JldHdlZW46OkNvbHVtbjsKICAg
ICBjYXNlIENTU1ZhbHVlUGFnZToKLSAgICAgICAgcmV0dXJuIFBhZ2VCcmVha0JldHdlZW47Cisg
ICAgICAgIHJldHVybiBCcmVha0JldHdlZW46OlBhZ2U7CiAgICAgY2FzZSBDU1NWYWx1ZUxlZnQ6
Ci0gICAgICAgIHJldHVybiBMZWZ0UGFnZUJyZWFrQmV0d2VlbjsKKyAgICAgICAgcmV0dXJuIEJy
ZWFrQmV0d2Vlbjo6TGVmdFBhZ2U7CiAgICAgY2FzZSBDU1NWYWx1ZVJpZ2h0OgotICAgICAgICBy
ZXR1cm4gUmlnaHRQYWdlQnJlYWtCZXR3ZWVuOworICAgICAgICByZXR1cm4gQnJlYWtCZXR3ZWVu
OjpSaWdodFBhZ2U7CiAgICAgY2FzZSBDU1NWYWx1ZVJlY3RvOgotICAgICAgICByZXR1cm4gUmVj
dG9QYWdlQnJlYWtCZXR3ZWVuOworICAgICAgICByZXR1cm4gQnJlYWtCZXR3ZWVuOjpSZWN0b1Bh
Z2U7CiAgICAgY2FzZSBDU1NWYWx1ZVZlcnNvOgotICAgICAgICByZXR1cm4gVmVyc29QYWdlQnJl
YWtCZXR3ZWVuOworICAgICAgICByZXR1cm4gQnJlYWtCZXR3ZWVuOjpWZXJzb1BhZ2U7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIEF1dG9CcmVha0JldHdlZW47CisgICAgcmV0dXJuIEJyZWFrQmV0d2Vl
bjo6QXV0bzsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1By
aW1pdGl2ZVZhbHVlKEJyZWFrSW5zaWRlIGUpCkBAIC0yMjczLDE2ICsyMjczLDE2IEBAIHRlbXBs
YXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1MKIHsKICAgICBtX3ByaW1pdGl2ZVVu
aXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAoZSkgewotICAgIGNhc2UgQXV0b0Jy
ZWFrSW5zaWRlOgorICAgIGNhc2UgQnJlYWtJbnNpZGU6OkF1dG86CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlQXV0bzsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBdm9pZEJy
ZWFrSW5zaWRlOgorICAgIGNhc2UgQnJlYWtJbnNpZGU6OkF2b2lkOgogICAgICAgICBtX3ZhbHVl
LnZhbHVlSUQgPSBDU1NWYWx1ZUF2b2lkOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEF2b2lk
Q29sdW1uQnJlYWtJbnNpZGU6CisgICAgY2FzZSBCcmVha0luc2lkZTo6QXZvaWRDb2x1bW46CiAg
ICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXZvaWRDb2x1bW47CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQXZvaWRQYWdlQnJlYWtJbnNpZGU6CisgICAgY2FzZSBCcmVha0luc2lk
ZTo6QXZvaWRQYWdlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUF2b2lkUGFn
ZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjI5NCwxOSArMjI5NCwxOSBAQCB0ZW1wbGF0
ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlCiAgICAgCiAgICAgc3dpdGNoIChtX3Zh
bHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlQXV0bzoKLSAgICAgICAgcmV0dXJuIEF1
dG9CcmVha0luc2lkZTsKKyAgICAgICAgcmV0dXJuIEJyZWFrSW5zaWRlOjpBdXRvOwogICAgIGNh
c2UgQ1NTVmFsdWVBdm9pZDoKLSAgICAgICAgcmV0dXJuIEF2b2lkQnJlYWtJbnNpZGU7CisgICAg
ICAgIHJldHVybiBCcmVha0luc2lkZTo6QXZvaWQ7CiAgICAgY2FzZSBDU1NWYWx1ZUF2b2lkQ29s
dW1uOgotICAgICAgICByZXR1cm4gQXZvaWRDb2x1bW5CcmVha0luc2lkZTsKKyAgICAgICAgcmV0
dXJuIEJyZWFrSW5zaWRlOjpBdm9pZENvbHVtbjsKICAgICBjYXNlIENTU1ZhbHVlQXZvaWRQYWdl
OgotICAgICAgICByZXR1cm4gQXZvaWRQYWdlQnJlYWtJbnNpZGU7CisgICAgICAgIHJldHVybiBC
cmVha0luc2lkZTo6QXZvaWRQYWdlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBdXRvQnJlYWtJbnNp
ZGU7CisgICAgcmV0dXJuIEJyZWFrSW5zaWRlOjpBdXRvOwogfQogCiB0ZW1wbGF0ZTw+IGlubGlu
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoUG9zaXRpb25UeXBlIGUpCkBA
IC0yNDMwLDUzICsyNDMwLDUzIEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVl
OjpvcGUKICAgICByZXR1cm4gVGFibGVMYXlvdXRUeXBlOjpBdXRvOwogfQogCi10ZW1wbGF0ZTw+
IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRVRleHRBbGlnbiBl
KQordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVl
KFRleHRBbGlnbk1vZGUgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewogICAg
IG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoIChlKSB7Ci0g
ICAgY2FzZSBUQVNUQVJUOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CiAgICAgICAg
IG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlU3RhcnQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgVEFFTkQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpFbmQ6CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlRW5kOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExFRlQ6Cisg
ICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZUxlZnQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUklHSFQ6CisgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpSaWdodDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVS
aWdodDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDRU5URVI6CisgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpDZW50ZXI6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQ2VudGVy
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEpVU1RJRlk6CisgICAgY2FzZSBUZXh0QWxpZ25N
b2RlOjpKdXN0aWZ5OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUp1c3RpZnk7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgV0VCS0lUX0xFRlQ6CisgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRMZWZ0OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVdl
YmtpdExlZnQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgV0VCS0lUX1JJR0hUOgorICAgIGNh
c2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9
IENTU1ZhbHVlV2Via2l0UmlnaHQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgV0VCS0lUX0NF
TlRFUjoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoKICAgICAgICAgbV92
YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVXZWJraXRDZW50ZXI7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVU
ZXh0QWxpZ24oKSBjb25zdAordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9w
ZXJhdG9yIFRleHRBbGlnbk1vZGUoKSBjb25zdAogewogICAgIEFTU0VSVChpc1ZhbHVlSUQoKSk7
CiAKICAgICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkgewogICAgIGNhc2UgQ1NTVmFsdWVXZWJr
aXRBdXRvOiAvLyBMZWdhY3kgLXdlYmtpdC1hdXRvLiBFcWl1dmFsZW50IHRvIHN0YXJ0LgogICAg
IGNhc2UgQ1NTVmFsdWVTdGFydDoKLSAgICAgICAgcmV0dXJuIFRBU1RBUlQ7CisgICAgICAgIHJl
dHVybiBUZXh0QWxpZ25Nb2RlOjpTdGFydDsKICAgICBjYXNlIENTU1ZhbHVlRW5kOgotICAgICAg
ICByZXR1cm4gVEFFTkQ7CisgICAgICAgIHJldHVybiBUZXh0QWxpZ25Nb2RlOjpFbmQ7CiAgICAg
ZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVUZXh0QWxpZ24+KG1fdmFsdWUu
dmFsdWVJRCAtIENTU1ZhbHVlTGVmdCk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXh0
QWxpZ25Nb2RlPihtX3ZhbHVlLnZhbHVlSUQgLSBDU1NWYWx1ZUxlZnQpOwogICAgIH0KIH0KIApA
QCAtMjQ4NiwyNSArMjQ4NiwyNSBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTCiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsKICAgICBz
d2l0Y2ggKGUpIHsKLSAgICBjYXNlIFRleHRBbGlnbkxhc3RTdGFydDoKKyAgICBjYXNlIFRleHRB
bGlnbkxhc3Q6OlN0YXJ0OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVN0YXJ0
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRleHRBbGlnbkxhc3RFbmQ6CisgICAgY2FzZSBU
ZXh0QWxpZ25MYXN0OjpFbmQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRW5k
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRleHRBbGlnbkxhc3RMZWZ0OgorICAgIGNhc2Ug
VGV4dEFsaWduTGFzdDo6TGVmdDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVM
ZWZ0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRleHRBbGlnbkxhc3RSaWdodDoKKyAgICBj
YXNlIFRleHRBbGlnbkxhc3Q6OlJpZ2h0OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NW
YWx1ZVJpZ2h0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRleHRBbGlnbkxhc3RDZW50ZXI6
CisgICAgY2FzZSBUZXh0QWxpZ25MYXN0OjpDZW50ZXI6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlQ2VudGVyOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRleHRBbGlnbkxh
c3RKdXN0aWZ5OgorICAgIGNhc2UgVGV4dEFsaWduTGFzdDo6SnVzdGlmeToKICAgICAgICAgbV92
YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVKdXN0aWZ5OwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IFRleHRBbGlnbkxhc3RBdXRvOgorICAgIGNhc2UgVGV4dEFsaWduTGFzdDo6QXV0bzoKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBdXRvOwogICAgICAgICBicmVhazsKICAgICB9
CkBAIC0yNTE2LDI1ICsyNTE2LDI1IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpvcGUKIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NW
YWx1ZUF1dG86Ci0gICAgICAgIHJldHVybiBUZXh0QWxpZ25MYXN0QXV0bzsKKyAgICAgICAgcmV0
dXJuIFRleHRBbGlnbkxhc3Q6OkF1dG87CiAgICAgY2FzZSBDU1NWYWx1ZVN0YXJ0OgotICAgICAg
ICByZXR1cm4gVGV4dEFsaWduTGFzdFN0YXJ0OworICAgICAgICByZXR1cm4gVGV4dEFsaWduTGFz
dDo6U3RhcnQ7CiAgICAgY2FzZSBDU1NWYWx1ZUVuZDoKLSAgICAgICAgcmV0dXJuIFRleHRBbGln
bkxhc3RFbmQ7CisgICAgICAgIHJldHVybiBUZXh0QWxpZ25MYXN0OjpFbmQ7CiAgICAgY2FzZSBD
U1NWYWx1ZUxlZnQ6Ci0gICAgICAgIHJldHVybiBUZXh0QWxpZ25MYXN0TGVmdDsKKyAgICAgICAg
cmV0dXJuIFRleHRBbGlnbkxhc3Q6OkxlZnQ7CiAgICAgY2FzZSBDU1NWYWx1ZVJpZ2h0OgotICAg
ICAgICByZXR1cm4gVGV4dEFsaWduTGFzdFJpZ2h0OworICAgICAgICByZXR1cm4gVGV4dEFsaWdu
TGFzdDo6UmlnaHQ7CiAgICAgY2FzZSBDU1NWYWx1ZUNlbnRlcjoKLSAgICAgICAgcmV0dXJuIFRl
eHRBbGlnbkxhc3RDZW50ZXI7CisgICAgICAgIHJldHVybiBUZXh0QWxpZ25MYXN0OjpDZW50ZXI7
CiAgICAgY2FzZSBDU1NWYWx1ZUp1c3RpZnk6Ci0gICAgICAgIHJldHVybiBUZXh0QWxpZ25MYXN0
SnVzdGlmeTsKKyAgICAgICAgcmV0dXJuIFRleHRBbGlnbkxhc3Q6Okp1c3RpZnk7CiAgICAgZGVm
YXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgcmV0dXJuIFRleHRBbGlnbkxhc3RBdXRvOworICAgIHJldHVybiBUZXh0QWxpZ25MYXN0
OjpBdXRvOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJp
bWl0aXZlVmFsdWUoVGV4dEp1c3RpZnkgZSkKQEAgLTI1NDIsMTYgKzI1NDIsMTYgQEAgdGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTUwogewogICAgIG1fcHJpbWl0aXZlVW5p
dFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoIChlKSB7Ci0gICAgY2FzZSBUZXh0SnVz
dGlmeUF1dG86CisgICAgY2FzZSBUZXh0SnVzdGlmeTo6QXV0bzoKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVBdXRvOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRleHRKdXN0
aWZ5Tm9uZToKKyAgICBjYXNlIFRleHRKdXN0aWZ5OjpOb25lOgogICAgICAgICBtX3ZhbHVlLnZh
bHVlSUQgPSBDU1NWYWx1ZU5vbmU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVGV4dEp1c3Rp
ZnlJbnRlcldvcmQ6CisgICAgY2FzZSBUZXh0SnVzdGlmeTo6SW50ZXJXb3JkOgogICAgICAgICBt
X3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUludGVyV29yZDsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBUZXh0SnVzdGlmeURpc3RyaWJ1dGU6CisgICAgY2FzZSBUZXh0SnVzdGlmeTo6RGlzdHJp
YnV0ZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVEaXN0cmlidXRlOwogICAg
ICAgICBicmVhazsKICAgICB9CkBAIC0yNTYzLDE5ICsyNTYzLDE5IEBAIHRlbXBsYXRlPD4gaW5s
aW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGUKIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlE
KSB7CiAgICAgY2FzZSBDU1NWYWx1ZUF1dG86Ci0gICAgICAgIHJldHVybiBUZXh0SnVzdGlmeUF1
dG87CisgICAgICAgIHJldHVybiBUZXh0SnVzdGlmeTo6QXV0bzsKICAgICBjYXNlIENTU1ZhbHVl
Tm9uZToKLSAgICAgICAgcmV0dXJuIFRleHRKdXN0aWZ5Tm9uZTsKKyAgICAgICAgcmV0dXJuIFRl
eHRKdXN0aWZ5OjpOb25lOwogICAgIGNhc2UgQ1NTVmFsdWVJbnRlcldvcmQ6Ci0gICAgICAgIHJl
dHVybiBUZXh0SnVzdGlmeUludGVyV29yZDsKKyAgICAgICAgcmV0dXJuIFRleHRKdXN0aWZ5OjpJ
bnRlcldvcmQ7CiAgICAgY2FzZSBDU1NWYWx1ZURpc3RyaWJ1dGU6Ci0gICAgICAgIHJldHVybiBU
ZXh0SnVzdGlmeURpc3RyaWJ1dGU7CisgICAgICAgIHJldHVybiBUZXh0SnVzdGlmeTo6RGlzdHJp
YnV0ZTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGV4dEp1c3RpZnlBdXRvOworICAgIHJldHVybiBU
ZXh0SnVzdGlmeTo6QXV0bzsKIH0KICNlbmRpZiAvLyBDU1MzX1RFWFQKIApAQCAtMjYxMiwyMSAr
MjYxMiwyMSBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlCiAKICAg
ICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkgewogICAgIGNhc2UgQ1NTVmFsdWVTb2xpZDoKLSAg
ICAgICAgcmV0dXJuIFRleHREZWNvcmF0aW9uU3R5bGVTb2xpZDsKKyAgICAgICAgcmV0dXJuIFRl
eHREZWNvcmF0aW9uU3R5bGU6OlNvbGlkOwogICAgIGNhc2UgQ1NTVmFsdWVEb3VibGU6Ci0gICAg
ICAgIHJldHVybiBUZXh0RGVjb3JhdGlvblN0eWxlRG91YmxlOworICAgICAgICByZXR1cm4gVGV4
dERlY29yYXRpb25TdHlsZTo6RG91YmxlOwogICAgIGNhc2UgQ1NTVmFsdWVEb3R0ZWQ6Ci0gICAg
ICAgIHJldHVybiBUZXh0RGVjb3JhdGlvblN0eWxlRG90dGVkOworICAgICAgICByZXR1cm4gVGV4
dERlY29yYXRpb25TdHlsZTo6RG90dGVkOwogICAgIGNhc2UgQ1NTVmFsdWVEYXNoZWQ6Ci0gICAg
ICAgIHJldHVybiBUZXh0RGVjb3JhdGlvblN0eWxlRGFzaGVkOworICAgICAgICByZXR1cm4gVGV4
dERlY29yYXRpb25TdHlsZTo6RGFzaGVkOwogICAgIGNhc2UgQ1NTVmFsdWVXYXZ5OgotICAgICAg
ICByZXR1cm4gVGV4dERlY29yYXRpb25TdHlsZVdhdnk7CisgICAgICAgIHJldHVybiBUZXh0RGVj
b3JhdGlvblN0eWxlOjpXYXZ5OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBUZXh0RGVjb3JhdGlvblN0
eWxlU29saWQ7CisgICAgcmV0dXJuIFRleHREZWNvcmF0aW9uU3R5bGU6OlNvbGlkOwogfQogCiB0
ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoVGV4
dFVuZGVybGluZVBvc2l0aW9uIGUpCkBAIC0yNzEwLDQ1ICsyNzEwLDQ1IEBAIHRlbXBsYXRlPD4g
aW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGUKICAgICByZXR1cm4gVGV4dFNlY3VyaXR5OjpO
b25lOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0
aXZlVmFsdWUoRVRleHRUcmFuc2Zvcm0gZSkKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShUZXh0VHJhbnNmb3JtIGUpCiAgICAgOiBDU1NWYWx1
ZShQcmltaXRpdmVDbGFzcykKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVF
X0lEOwogICAgIHN3aXRjaCAoZSkgewotICAgIGNhc2UgQ0FQSVRBTElaRToKKyAgICBjYXNlIFRl
eHRUcmFuc2Zvcm06OkNhcGl0YWxpemU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlQ2FwaXRhbGl6ZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBVUFBFUkNBU0U6CisgICAg
Y2FzZSBUZXh0VHJhbnNmb3JtOjpVcHBlcmNhc2U6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9
IENTU1ZhbHVlVXBwZXJjYXNlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExPV0VSQ0FTRToK
KyAgICBjYXNlIFRleHRUcmFuc2Zvcm06Okxvd2VyY2FzZToKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVMb3dlcmNhc2U7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVFROT05F
OgorICAgIGNhc2UgVGV4dFRyYW5zZm9ybTo6Tm9uZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVOb25lOwogICAgICAgICBicmVhazsKICAgICB9CiB9CiAKLXRlbXBsYXRlPD4g
aW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFVGV4dFRyYW5zZm9ybSgpIGNvbnN0
Cit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgVGV4dFRyYW5z
Zm9ybSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzVmFsdWVJRCgpKTsKIAogICAgIHN3aXRjaCAo
bV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUNhcGl0YWxpemU6Ci0gICAgICAg
IHJldHVybiBDQVBJVEFMSVpFOworICAgICAgICByZXR1cm4gVGV4dFRyYW5zZm9ybTo6Q2FwaXRh
bGl6ZTsKICAgICBjYXNlIENTU1ZhbHVlVXBwZXJjYXNlOgotICAgICAgICByZXR1cm4gVVBQRVJD
QVNFOworICAgICAgICByZXR1cm4gVGV4dFRyYW5zZm9ybTo6VXBwZXJjYXNlOwogICAgIGNhc2Ug
Q1NTVmFsdWVMb3dlcmNhc2U6Ci0gICAgICAgIHJldHVybiBMT1dFUkNBU0U7CisgICAgICAgIHJl
dHVybiBUZXh0VHJhbnNmb3JtOjpMb3dlcmNhc2U7CiAgICAgY2FzZSBDU1NWYWx1ZU5vbmU6Ci0g
ICAgICAgIHJldHVybiBUVE5PTkU7CisgICAgICAgIHJldHVybiBUZXh0VHJhbnNmb3JtOjpOb25l
OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBUVE5PTkU7CisgICAgcmV0dXJuIFRleHRUcmFuc2Zvcm06
Ok5vbmU7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmlt
aXRpdmVWYWx1ZShFVW5pY29kZUJpZGkgZSkKQEAgLTI5ODUsOTEgKzI5ODUsOTEgQEAgdGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZQogICAgIHJldHVybiBWZXJ0aWNhbEFs
aWduOjpUb3A7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQ
cmltaXRpdmVWYWx1ZShFVmlzaWJpbGl0eSBlKQordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFZpc2liaWxpdHkgZSkKICAgICA6IENTU1ZhbHVl
KFByaW1pdGl2ZUNsYXNzKQogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVf
SUQ7CiAgICAgc3dpdGNoIChlKSB7Ci0gICAgY2FzZSBWSVNJQkxFOgorICAgIGNhc2UgVmlzaWJp
bGl0eTo6VmlzaWJsZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVWaXNpYmxl
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEhJRERFTjoKKyAgICBjYXNlIFZpc2liaWxpdHk6
OkhpZGRlbjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVIaWRkZW47CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ09MTEFQU0U6CisgICAgY2FzZSBWaXNpYmlsaXR5OjpDb2xs
YXBzZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVDb2xsYXBzZTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6b3BlcmF0b3IgRVZpc2liaWxpdHkoKSBjb25zdAordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6Om9wZXJhdG9yIFZpc2liaWxpdHkoKSBjb25zdAogewogICAgIEFTU0VSVChp
c1ZhbHVlSUQoKSk7CiAKICAgICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkgewogICAgIGNhc2Ug
Q1NTVmFsdWVIaWRkZW46Ci0gICAgICAgIHJldHVybiBISURERU47CisgICAgICAgIHJldHVybiBW
aXNpYmlsaXR5OjpIaWRkZW47CiAgICAgY2FzZSBDU1NWYWx1ZVZpc2libGU6Ci0gICAgICAgIHJl
dHVybiBWSVNJQkxFOworICAgICAgICByZXR1cm4gVmlzaWJpbGl0eTo6VmlzaWJsZTsKICAgICBj
YXNlIENTU1ZhbHVlQ29sbGFwc2U6Ci0gICAgICAgIHJldHVybiBDT0xMQVBTRTsKKyAgICAgICAg
cmV0dXJuIFZpc2liaWxpdHk6OkNvbGxhcHNlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFr
OwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBWSVNJQkxF
OworICAgIHJldHVybiBWaXNpYmlsaXR5OjpWaXNpYmxlOwogfQogCi10ZW1wbGF0ZTw+IGlubGlu
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRVdoaXRlU3BhY2UgZSkKK3Rl
bXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShXaGl0
ZVNwYWNlIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKICAgICBtX3ByaW1p
dGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAoZSkgewotICAgIGNhc2Ug
Tk9STUFMOgorICAgIGNhc2UgV2hpdGVTcGFjZTo6Tm9ybWFsOgogICAgICAgICBtX3ZhbHVlLnZh
bHVlSUQgPSBDU1NWYWx1ZU5vcm1hbDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUkU6Cisg
ICAgY2FzZSBXaGl0ZVNwYWNlOjpQcmU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlUHJlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBSRV9XUkFQOgorICAgIGNhc2UgV2hp
dGVTcGFjZTo6UHJlV3JhcDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVQcmVX
cmFwOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBSRV9MSU5FOgorICAgIGNhc2UgV2hpdGVT
cGFjZTo6UHJlTGluZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVQcmVMaW5l
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE5PV1JBUDoKKyAgICBjYXNlIFdoaXRlU3BhY2U6
Ok5vV3JhcDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb3dyYXA7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgS0hUTUxfTk9XUkFQOgorICAgIGNhc2UgV2hpdGVTcGFjZTo6
S0hUTUxOb1dyYXA6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlV2Via2l0Tm93
cmFwOwogICAgICAgICBicmVhazsKICAgICB9CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIENTU1By
aW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFV2hpdGVTcGFjZSgpIGNvbnN0Cit0ZW1wbGF0ZTw+IGlu
bGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgV2hpdGVTcGFjZSgpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKGlzVmFsdWVJRCgpKTsKIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7
CiAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdE5vd3JhcDoKLSAgICAgICAgcmV0dXJuIEtIVE1MX05P
V1JBUDsKKyAgICAgICAgcmV0dXJuIFdoaXRlU3BhY2U6OktIVE1MTm9XcmFwOwogICAgIGNhc2Ug
Q1NTVmFsdWVOb3dyYXA6Ci0gICAgICAgIHJldHVybiBOT1dSQVA7CisgICAgICAgIHJldHVybiBX
aGl0ZVNwYWNlOjpOb1dyYXA7CiAgICAgY2FzZSBDU1NWYWx1ZVByZToKLSAgICAgICAgcmV0dXJu
IFBSRTsKKyAgICAgICAgcmV0dXJuIFdoaXRlU3BhY2U6OlByZTsKICAgICBjYXNlIENTU1ZhbHVl
UHJlV3JhcDoKLSAgICAgICAgcmV0dXJuIFBSRV9XUkFQOworICAgICAgICByZXR1cm4gV2hpdGVT
cGFjZTo6UHJlV3JhcDsKICAgICBjYXNlIENTU1ZhbHVlUHJlTGluZToKLSAgICAgICAgcmV0dXJu
IFBSRV9MSU5FOworICAgICAgICByZXR1cm4gV2hpdGVTcGFjZTo6UHJlTGluZTsKICAgICBjYXNl
IENTU1ZhbHVlTm9ybWFsOgotICAgICAgICByZXR1cm4gTk9STUFMOworICAgICAgICByZXR1cm4g
V2hpdGVTcGFjZTo6Tm9ybWFsOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBOT1JNQUw7CisgICAgcmV0
dXJuIFdoaXRlU3BhY2U6Ok5vcm1hbDsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFdvcmRCcmVhayBlKQpAQCAtMzI1OCwxMyArMzI1
OCwxMyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTCiB7CiAgICAg
bV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsKICAgICBzd2l0Y2ggKHBvc2l0aW9u
KSB7Ci0gICAgY2FzZSBSdWJ5UG9zaXRpb25CZWZvcmU6CisgICAgY2FzZSBSdWJ5UG9zaXRpb246
OkJlZm9yZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVCZWZvcmU7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgUnVieVBvc2l0aW9uQWZ0ZXI6CisgICAgY2FzZSBSdWJ5UG9z
aXRpb246OkFmdGVyOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUFmdGVyOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFJ1YnlQb3NpdGlvbkludGVyQ2hhcmFjdGVyOgorICAg
IGNhc2UgUnVieVBvc2l0aW9uOjpJbnRlckNoYXJhY3RlcjoKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVJbnRlckNoYXJhY3RlcjsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAt
MzI3NiwxNyArMzI3NiwxNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6
b3BlCiAKICAgICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkgewogICAgIGNhc2UgQ1NTVmFsdWVC
ZWZvcmU6Ci0gICAgICAgIHJldHVybiBSdWJ5UG9zaXRpb25CZWZvcmU7CisgICAgICAgIHJldHVy
biBSdWJ5UG9zaXRpb246OkJlZm9yZTsKICAgICBjYXNlIENTU1ZhbHVlQWZ0ZXI6Ci0gICAgICAg
IHJldHVybiBSdWJ5UG9zaXRpb25BZnRlcjsKKyAgICAgICAgcmV0dXJuIFJ1YnlQb3NpdGlvbjo6
QWZ0ZXI7CiAgICAgY2FzZSBDU1NWYWx1ZUludGVyQ2hhcmFjdGVyOgotICAgICAgICByZXR1cm4g
UnVieVBvc2l0aW9uSW50ZXJDaGFyYWN0ZXI7CisgICAgICAgIHJldHVybiBSdWJ5UG9zaXRpb246
OkludGVyQ2hhcmFjdGVyOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBSdWJ5UG9zaXRpb25CZWZvcmU7
CisgICAgcmV0dXJuIFJ1YnlQb3NpdGlvbjo6QmVmb3JlOwogfQogCiB0ZW1wbGF0ZTw+IGlubGlu
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoVGV4dE92ZXJmbG93IG92ZXJm
bG93KQpAQCAtMzMyNSwxMCArMzMyNSwxMCBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTCiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsK
ICAgICBzd2l0Y2ggKGZpbGwpIHsKLSAgICBjYXNlIFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQ6Cisg
ICAgY2FzZSBUZXh0RW1waGFzaXNGaWxsOjpGaWxsZWQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlRmlsbGVkOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRleHRFbXBoYXNp
c0ZpbGxPcGVuOgorICAgIGNhc2UgVGV4dEVtcGhhc2lzRmlsbDo6T3BlbjoKICAgICAgICAgbV92
YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVPcGVuOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0z
MzQwLDE1ICszMzQwLDE1IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpv
cGUKIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUZp
bGxlZDoKLSAgICAgICAgcmV0dXJuIFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQ7CisgICAgICAgIHJl
dHVybiBUZXh0RW1waGFzaXNGaWxsOjpGaWxsZWQ7CiAgICAgY2FzZSBDU1NWYWx1ZU9wZW46Ci0g
ICAgICAgIHJldHVybiBUZXh0RW1waGFzaXNGaWxsT3BlbjsKKyAgICAgICAgcmV0dXJuIFRleHRF
bXBoYXNpc0ZpbGw6Ok9wZW47CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRleHRFbXBoYXNpc0ZpbGxG
aWxsZWQ7CisgICAgcmV0dXJuIFRleHRFbXBoYXNpc0ZpbGw6OkZpbGxlZDsKIH0KIAogdGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFRleHRFbXBo
YXNpc01hcmsgbWFyaykKQEAgLTMzNTYsMjQgKzMzNTYsMjQgQEAgdGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTUwogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1Nf
VkFMVUVfSUQ7CiAgICAgc3dpdGNoIChtYXJrKSB7Ci0gICAgY2FzZSBUZXh0RW1waGFzaXNNYXJr
RG90OgorICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFyazo6RG90OgogICAgICAgICBtX3ZhbHVlLnZh
bHVlSUQgPSBDU1NWYWx1ZURvdDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUZXh0RW1waGFz
aXNNYXJrQ2lyY2xlOgorICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFyazo6Q2lyY2xlOgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUNpcmNsZTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBUZXh0RW1waGFzaXNNYXJrRG91YmxlQ2lyY2xlOgorICAgIGNhc2UgVGV4dEVtcGhhc2lz
TWFyazo6RG91YmxlQ2lyY2xlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZURv
dWJsZUNpcmNsZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrVHJp
YW5nbGU6CisgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrOjpUcmlhbmdsZToKICAgICAgICAgbV92
YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVUcmlhbmdsZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBUZXh0RW1waGFzaXNNYXJrU2VzYW1lOgorICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFyazo6U2Vz
YW1lOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVNlc2FtZTsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrTm9uZToKLSAgICBjYXNlIFRleHRFbXBo
YXNpc01hcmtBdXRvOgotICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya0N1c3RvbToKKyAgICBjYXNl
IFRleHRFbXBoYXNpc01hcms6Ok5vbmU6CisgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrOjpBdXRv
OgorICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFyazo6Q3VzdG9tOgogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb25lOwogICAg
ICAgICBicmVhazsKQEAgLTMzODYsMjMgKzMzODYsMjMgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NT
UHJpbWl0aXZlVmFsdWU6Om9wZQogCiAgICAgc3dpdGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsKICAg
ICBjYXNlIENTU1ZhbHVlTm9uZToKLSAgICAgICAgcmV0dXJuIFRleHRFbXBoYXNpc01hcmtOb25l
OworICAgICAgICByZXR1cm4gVGV4dEVtcGhhc2lzTWFyazo6Tm9uZTsKICAgICBjYXNlIENTU1Zh
bHVlRG90OgotICAgICAgICByZXR1cm4gVGV4dEVtcGhhc2lzTWFya0RvdDsKKyAgICAgICAgcmV0
dXJuIFRleHRFbXBoYXNpc01hcms6OkRvdDsKICAgICBjYXNlIENTU1ZhbHVlQ2lyY2xlOgotICAg
ICAgICByZXR1cm4gVGV4dEVtcGhhc2lzTWFya0NpcmNsZTsKKyAgICAgICAgcmV0dXJuIFRleHRF
bXBoYXNpc01hcms6OkNpcmNsZTsKICAgICBjYXNlIENTU1ZhbHVlRG91YmxlQ2lyY2xlOgotICAg
ICAgICByZXR1cm4gVGV4dEVtcGhhc2lzTWFya0RvdWJsZUNpcmNsZTsKKyAgICAgICAgcmV0dXJu
IFRleHRFbXBoYXNpc01hcms6OkRvdWJsZUNpcmNsZTsKICAgICBjYXNlIENTU1ZhbHVlVHJpYW5n
bGU6Ci0gICAgICAgIHJldHVybiBUZXh0RW1waGFzaXNNYXJrVHJpYW5nbGU7CisgICAgICAgIHJl
dHVybiBUZXh0RW1waGFzaXNNYXJrOjpUcmlhbmdsZTsKICAgICBjYXNlIENTU1ZhbHVlU2VzYW1l
OgotICAgICAgICByZXR1cm4gVGV4dEVtcGhhc2lzTWFya1Nlc2FtZTsKKyAgICAgICAgcmV0dXJu
IFRleHRFbXBoYXNpc01hcms6OlNlc2FtZTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsK
ICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGV4dEVtcGhh
c2lzTWFya05vbmU7CisgICAgcmV0dXJuIFRleHRFbXBoYXNpc01hcms6Ok5vbmU7CiB9CiAKIHRl
bXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShUZXh0
T3JpZW50YXRpb24gZSkKQEAgLTM0NDUsNzUgKzM0NDUsNzUgQEAgdGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZQogICAgIHJldHVybiBUZXh0T3JpZW50YXRpb246Ok1peGVk
OwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZl
VmFsdWUoRVBvaW50ZXJFdmVudHMgZSkKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NQcmltaXRpdmVWYWx1ZShQb2ludGVyRXZlbnRzIGUpCiAgICAgOiBDU1NWYWx1ZShQ
cmltaXRpdmVDbGFzcykKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lE
OwogICAgIHN3aXRjaCAoZSkgewotICAgIGNhc2UgUEVfTk9ORToKKyAgICBjYXNlIFBvaW50ZXJF
dmVudHM6Ok5vbmU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTm9uZTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQRV9TVFJPS0U6CisgICAgY2FzZSBQb2ludGVyRXZlbnRz
OjpTdHJva2U6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlU3Ryb2tlOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFBFX0ZJTEw6CisgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpG
aWxsOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUZpbGw7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgUEVfUEFJTlRFRDoKKyAgICBjYXNlIFBvaW50ZXJFdmVudHM6OlBhaW50
ZWQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlUGFpbnRlZDsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBQRV9WSVNJQkxFOgorICAgIGNhc2UgUG9pbnRlckV2ZW50czo6Vmlz
aWJsZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVWaXNpYmxlOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFBFX1ZJU0lCTEVfU1RST0tFOgorICAgIGNhc2UgUG9pbnRlckV2
ZW50czo6VmlzaWJsZVN0cm9rZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVW
aXNpYmxlU3Ryb2tlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBFX1ZJU0lCTEVfRklMTDoK
KyAgICBjYXNlIFBvaW50ZXJFdmVudHM6OlZpc2libGVGaWxsOgogICAgICAgICBtX3ZhbHVlLnZh
bHVlSUQgPSBDU1NWYWx1ZVZpc2libGVGaWxsOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBF
X1ZJU0lCTEVfUEFJTlRFRDoKKyAgICBjYXNlIFBvaW50ZXJFdmVudHM6OlZpc2libGVQYWludGVk
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVZpc2libGVQYWludGVkOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFBFX0FVVE86CisgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpB
dXRvOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUF1dG87CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgUEVfQUxMOgorICAgIGNhc2UgUG9pbnRlckV2ZW50czo6QWxsOgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUFsbDsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRVBv
aW50ZXJFdmVudHMoKSBjb25zdAordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6
Om9wZXJhdG9yIFBvaW50ZXJFdmVudHMoKSBjb25zdAogewogICAgIEFTU0VSVChpc1ZhbHVlSUQo
KSk7CiAKICAgICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkgewogICAgIGNhc2UgQ1NTVmFsdWVB
bGw6Ci0gICAgICAgIHJldHVybiBQRV9BTEw7CisgICAgICAgIHJldHVybiBQb2ludGVyRXZlbnRz
OjpBbGw7CiAgICAgY2FzZSBDU1NWYWx1ZUF1dG86Ci0gICAgICAgIHJldHVybiBQRV9BVVRPOwor
ICAgICAgICByZXR1cm4gUG9pbnRlckV2ZW50czo6QXV0bzsKICAgICBjYXNlIENTU1ZhbHVlTm9u
ZToKLSAgICAgICAgcmV0dXJuIFBFX05PTkU7CisgICAgICAgIHJldHVybiBQb2ludGVyRXZlbnRz
OjpOb25lOwogICAgIGNhc2UgQ1NTVmFsdWVWaXNpYmxlUGFpbnRlZDoKLSAgICAgICAgcmV0dXJu
IFBFX1ZJU0lCTEVfUEFJTlRFRDsKKyAgICAgICAgcmV0dXJuIFBvaW50ZXJFdmVudHM6OlZpc2li
bGVQYWludGVkOwogICAgIGNhc2UgQ1NTVmFsdWVWaXNpYmxlRmlsbDoKLSAgICAgICAgcmV0dXJu
IFBFX1ZJU0lCTEVfRklMTDsKKyAgICAgICAgcmV0dXJuIFBvaW50ZXJFdmVudHM6OlZpc2libGVG
aWxsOwogICAgIGNhc2UgQ1NTVmFsdWVWaXNpYmxlU3Ryb2tlOgotICAgICAgICByZXR1cm4gUEVf
VklTSUJMRV9TVFJPS0U7CisgICAgICAgIHJldHVybiBQb2ludGVyRXZlbnRzOjpWaXNpYmxlU3Ry
b2tlOwogICAgIGNhc2UgQ1NTVmFsdWVWaXNpYmxlOgotICAgICAgICByZXR1cm4gUEVfVklTSUJM
RTsKKyAgICAgICAgcmV0dXJuIFBvaW50ZXJFdmVudHM6OlZpc2libGU7CiAgICAgY2FzZSBDU1NW
YWx1ZVBhaW50ZWQ6Ci0gICAgICAgIHJldHVybiBQRV9QQUlOVEVEOworICAgICAgICByZXR1cm4g
UG9pbnRlckV2ZW50czo6UGFpbnRlZDsKICAgICBjYXNlIENTU1ZhbHVlRmlsbDoKLSAgICAgICAg
cmV0dXJuIFBFX0ZJTEw7CisgICAgICAgIHJldHVybiBQb2ludGVyRXZlbnRzOjpGaWxsOwogICAg
IGNhc2UgQ1NTVmFsdWVTdHJva2U6Ci0gICAgICAgIHJldHVybiBQRV9TVFJPS0U7CisgICAgICAg
IHJldHVybiBQb2ludGVyRXZlbnRzOjpTdHJva2U7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFBFX0FM
TDsKKyAgICByZXR1cm4gUG9pbnRlckV2ZW50czo6QWxsOwogfQogCiB0ZW1wbGF0ZTw+IGlubGlu
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoS2VybmluZyBrZXJuaW5nKQpA
QCAtMzcyMiwxMyArMzcyMiwxMyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTCiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsKICAgICBz
d2l0Y2ggKGh5cGhlbnMpIHsKLSAgICBjYXNlIEh5cGhlbnNOb25lOgorICAgIGNhc2UgSHlwaGVu
czo6Tm9uZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb25lOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEh5cGhlbnNNYW51YWw6CisgICAgY2FzZSBIeXBoZW5zOjpNYW51
YWw6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTWFudWFsOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEh5cGhlbnNBdXRvOgorICAgIGNhc2UgSHlwaGVuczo6QXV0bzoKICAg
ICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBdXRvOwogICAgICAgICBicmVhazsKICAg
ICB9CkBAIC0zNzQwLDE3ICszNzQwLDE3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2
ZVZhbHVlOjpvcGUKIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBD
U1NWYWx1ZU5vbmU6Ci0gICAgICAgIHJldHVybiBIeXBoZW5zTm9uZTsKKyAgICAgICAgcmV0dXJu
IEh5cGhlbnM6Ok5vbmU7CiAgICAgY2FzZSBDU1NWYWx1ZU1hbnVhbDoKLSAgICAgICAgcmV0dXJu
IEh5cGhlbnNNYW51YWw7CisgICAgICAgIHJldHVybiBIeXBoZW5zOjpNYW51YWw7CiAgICAgY2Fz
ZSBDU1NWYWx1ZUF1dG86Ci0gICAgICAgIHJldHVybiBIeXBoZW5zQXV0bzsKKyAgICAgICAgcmV0
dXJuIEh5cGhlbnM6OkF1dG87CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEh5cGhlbnNBdXRvOworICAg
IHJldHVybiBIeXBoZW5zOjpBdXRvOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoTGluZVNuYXAgZ3JpZFNuYXApCkBAIC0zNzU4LDEz
ICszNzU4LDEzIEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1MKIHsK
ICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAoZ3Jp
ZFNuYXApIHsKLSAgICBjYXNlIExpbmVTbmFwTm9uZToKKyAgICBjYXNlIExpbmVTbmFwOjpOb25l
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5vbmU7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgTGluZVNuYXBCYXNlbGluZToKKyAgICBjYXNlIExpbmVTbmFwOjpCYXNlbGlu
ZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVCYXNlbGluZTsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBMaW5lU25hcENvbnRhaW46CisgICAgY2FzZSBMaW5lU25hcDo6Q29u
dGFpbjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVDb250YWluOwogICAgICAg
ICBicmVhazsKICAgICB9CkBAIC0zNzc2LDE3ICszNzc2LDE3IEBAIHRlbXBsYXRlPD4gaW5saW5l
IENTU1ByaW1pdGl2ZVZhbHVlOjpvcGUKIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7
CiAgICAgY2FzZSBDU1NWYWx1ZU5vbmU6Ci0gICAgICAgIHJldHVybiBMaW5lU25hcE5vbmU7Cisg
ICAgICAgIHJldHVybiBMaW5lU25hcDo6Tm9uZTsKICAgICBjYXNlIENTU1ZhbHVlQmFzZWxpbmU6
Ci0gICAgICAgIHJldHVybiBMaW5lU25hcEJhc2VsaW5lOworICAgICAgICByZXR1cm4gTGluZVNu
YXA6OkJhc2VsaW5lOwogICAgIGNhc2UgQ1NTVmFsdWVDb250YWluOgotICAgICAgICByZXR1cm4g
TGluZVNuYXBDb250YWluOworICAgICAgICByZXR1cm4gTGluZVNuYXA6OkNvbnRhaW47CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIExpbmVTbmFwTm9uZTsKKyAgICByZXR1cm4gTGluZVNuYXA6Ok5vbmU7
CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVW
YWx1ZShMaW5lQWxpZ24gbGluZUFsaWduKQpAQCAtMzc5NCwxMCArMzc5NCwxMCBAQCB0ZW1wbGF0
ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTCiB7CiAgICAgbV9wcmltaXRpdmVVbml0
VHlwZSA9IENTU19WQUxVRV9JRDsKICAgICBzd2l0Y2ggKGxpbmVBbGlnbikgewotICAgIGNhc2Ug
TGluZUFsaWduTm9uZToKKyAgICBjYXNlIExpbmVBbGlnbjo6Tm9uZToKICAgICAgICAgbV92YWx1
ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb25lOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVB
bGlnbkVkZ2VzOgorICAgIGNhc2UgTGluZUFsaWduOjpFZGdlczoKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVFZGdlczsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzgwOSwx
NSArMzgwOSwxNSBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlCiAK
ICAgICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkgewogICAgIGNhc2UgQ1NTVmFsdWVOb25lOgot
ICAgICAgICByZXR1cm4gTGluZUFsaWduTm9uZTsKKyAgICAgICAgcmV0dXJuIExpbmVBbGlnbjo6
Tm9uZTsKICAgICBjYXNlIENTU1ZhbHVlRWRnZXM6Ci0gICAgICAgIHJldHVybiBMaW5lQWxpZ25F
ZGdlczsKKyAgICAgICAgcmV0dXJuIExpbmVBbGlnbjo6RWRnZXM7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIExpbmVBbGlnbk5vbmU7CisgICAgcmV0dXJuIExpbmVBbGlnbjo6Tm9uZTsKIH0KIAogdGVt
cGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVTcGVh
a0FzIGUpCkBAIC0zODQ5LDE1ICszODQ5LDE1IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1p
dGl2ZVZhbHVlOjpvcGUKIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2Fz
ZSBDU1NWYWx1ZUxvZ2ljYWw6Ci0gICAgICAgIHJldHVybiBMb2dpY2FsT3JkZXI7CisgICAgICAg
IHJldHVybiBPcmRlcjo6TG9naWNhbDsKICAgICBjYXNlIENTU1ZhbHVlVmlzdWFsOgotICAgICAg
ICByZXR1cm4gVmlzdWFsT3JkZXI7CisgICAgICAgIHJldHVybiBPcmRlcjo6VmlzdWFsOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiBMb2dpY2FsT3JkZXI7CisgICAgcmV0dXJuIE9yZGVyOjpMb2dpY2Fs
OwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZl
VmFsdWUoT3JkZXIgZSkKQEAgLTM4NjUsMTAgKzM4NjUsMTAgQEAgdGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTUwogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1Nf
VkFMVUVfSUQ7CiAgICAgc3dpdGNoIChlKSB7Ci0gICAgY2FzZSBMb2dpY2FsT3JkZXI6CisgICAg
Y2FzZSBPcmRlcjo6TG9naWNhbDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVM
b2dpY2FsOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFZpc3VhbE9yZGVyOgorICAgIGNhc2Ug
T3JkZXI6OlZpc3VhbDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVWaXN1YWw7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTQyNTYsMzUgKzQyNTYsMzUgQEAgdGVtcGxhdGU8
PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZQogICAgIHJldHVybiBCb3JkZXJDb2xsYXBz
ZTo6U2VwYXJhdGU7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NQcmltaXRpdmVWYWx1ZShFQm9yZGVyRml0IGUpCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoQm9yZGVyRml0IGUpCiAgICAgOiBDU1NWYWx1
ZShQcmltaXRpdmVDbGFzcykKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVF
X0lEOwogICAgIHN3aXRjaCAoZSkgewotICAgIGNhc2UgQm9yZGVyRml0Qm9yZGVyOgorICAgIGNh
c2UgQm9yZGVyRml0OjpCb3JkZXI6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVl
Qm9yZGVyOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJvcmRlckZpdExpbmVzOgorICAgIGNh
c2UgQm9yZGVyRml0OjpMaW5lczoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVM
aW5lczsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUJvcmRlckZpdCgpIGNvbnN0Cit0ZW1wbGF0ZTw+IGlu
bGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQm9yZGVyRml0KCkgY29uc3QKIHsKICAg
ICBBU1NFUlQoaXNWYWx1ZUlEKCkpOwogCiAgICAgc3dpdGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsK
ICAgICBjYXNlIENTU1ZhbHVlQm9yZGVyOgotICAgICAgICByZXR1cm4gQm9yZGVyRml0Qm9yZGVy
OworICAgICAgICByZXR1cm4gQm9yZGVyRml0OjpCb3JkZXI7CiAgICAgY2FzZSBDU1NWYWx1ZUxp
bmVzOgotICAgICAgICByZXR1cm4gQm9yZGVyRml0TGluZXM7CisgICAgICAgIHJldHVybiBCb3Jk
ZXJGaXQ6OkxpbmVzOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBCb3JkZXJGaXRMaW5lczsKKyAgICBy
ZXR1cm4gQm9yZGVyRml0OjpMaW5lczsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEltYWdlUmVuZGVyaW5nIGltYWdlUmVuZGVyaW5n
KQpAQCAtNDQwNywxMyArNDQwNywxMyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTCiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsKICAg
ICBzd2l0Y2ggKGUpIHsKLSAgICBjYXNlIEhvcml6b250YWxDb2x1bW5BeGlzOgorICAgIGNhc2Ug
Q29sdW1uQXhpczo6SG9yaXpvbnRhbDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFs
dWVIb3Jpem9udGFsOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFZlcnRpY2FsQ29sdW1uQXhp
czoKKyAgICBjYXNlIENvbHVtbkF4aXM6OlZlcnRpY2FsOgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZVZlcnRpY2FsOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEF1dG9Db2x1
bW5BeGlzOgorICAgIGNhc2UgQ29sdW1uQXhpczo6QXV0bzoKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVBdXRvOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC00NDI1LDE3ICs0
NDI1LDE3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGUKIAogICAg
IHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUhvcml6b250YWw6
Ci0gICAgICAgIHJldHVybiBIb3Jpem9udGFsQ29sdW1uQXhpczsKKyAgICAgICAgcmV0dXJuIENv
bHVtbkF4aXM6Okhvcml6b250YWw7CiAgICAgY2FzZSBDU1NWYWx1ZVZlcnRpY2FsOgotICAgICAg
ICByZXR1cm4gVmVydGljYWxDb2x1bW5BeGlzOworICAgICAgICByZXR1cm4gQ29sdW1uQXhpczo6
VmVydGljYWw7CiAgICAgY2FzZSBDU1NWYWx1ZUF1dG86Ci0gICAgICAgIHJldHVybiBBdXRvQ29s
dW1uQXhpczsKKyAgICAgICAgcmV0dXJuIENvbHVtbkF4aXM6OkF1dG87CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
cmV0dXJuIEF1dG9Db2x1bW5BeGlzOworICAgIHJldHVybiBDb2x1bW5BeGlzOjpBdXRvOwogfQog
CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUo
Q29sdW1uUHJvZ3Jlc3Npb24gZSkKQEAgLTQ0NDMsMTAgKzQ0NDMsMTAgQEAgdGVtcGxhdGU8PiBp
bmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTUwogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUg
PSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoIChlKSB7Ci0gICAgY2FzZSBOb3JtYWxDb2x1bW5Q
cm9ncmVzc2lvbjoKKyAgICBjYXNlIENvbHVtblByb2dyZXNzaW9uOjpOb3JtYWw6CiAgICAgICAg
IG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTm9ybWFsOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFJldmVyc2VDb2x1bW5Qcm9ncmVzc2lvbjoKKyAgICBjYXNlIENvbHVtblByb2dyZXNzaW9u
OjpSZXZlcnNlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVJldmVyc2U7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTQ0NTgsMTUgKzQ0NTgsMTUgQEAgdGVtcGxhdGU8PiBp
bmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZQogCiAgICAgc3dpdGNoIChtX3ZhbHVlLnZhbHVl
SUQpIHsKICAgICBjYXNlIENTU1ZhbHVlTm9ybWFsOgotICAgICAgICByZXR1cm4gTm9ybWFsQ29s
dW1uUHJvZ3Jlc3Npb247CisgICAgICAgIHJldHVybiBDb2x1bW5Qcm9ncmVzc2lvbjo6Tm9ybWFs
OwogICAgIGNhc2UgQ1NTVmFsdWVSZXZlcnNlOgotICAgICAgICByZXR1cm4gUmV2ZXJzZUNvbHVt
blByb2dyZXNzaW9uOworICAgICAgICByZXR1cm4gQ29sdW1uUHJvZ3Jlc3Npb246OlJldmVyc2U7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIE5vcm1hbENvbHVtblByb2dyZXNzaW9uOworICAgIHJldHVy
biBDb2x1bW5Qcm9ncmVzc2lvbjo6Tm9ybWFsOwogfQogCiBlbnVtIExlbmd0aENvbnZlcnNpb24g
ewpAQCAtNDkwNSwyOCArNDkwNSwyOCBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTCiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsKICAg
ICBzd2l0Y2ggKGNzc0JveCkgewotICAgIGNhc2UgTWFyZ2luQm94OgorICAgIGNhc2UgQ1NTQm94
VHlwZTo6TWFyZ2luQm94OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU1hcmdp
bkJveDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBCb3JkZXJCb3g6CisgICAgY2FzZSBDU1NC
b3hUeXBlOjpCb3JkZXJCb3g6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQm9y
ZGVyQm94OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBhZGRpbmdCb3g6CisgICAgY2FzZSBD
U1NCb3hUeXBlOjpQYWRkaW5nQm94OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1
ZVBhZGRpbmdCb3g7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ29udGVudEJveDoKKyAgICBj
YXNlIENTU0JveFR5cGU6OkNvbnRlbnRCb3g6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlQ29udGVudEJveDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGaWxsOgorICAgIGNh
c2UgQ1NTQm94VHlwZTo6RmlsbDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVG
aWxsOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0cm9rZToKKyAgICBjYXNlIENTU0JveFR5
cGU6OlN0cm9rZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVTdHJva2U7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgVmlld0JveDoKKyAgICBjYXNlIENTU0JveFR5cGU6OlZp
ZXdCb3g6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVmlld0JveDsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBCb3hNaXNzaW5nOgorICAgIGNhc2UgQ1NTQm94VHlwZTo6Qm94
TWlzc2luZzoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlTm9uZTsKICAgICAgICAgYnJlYWs7CkBAIC00OTM3LDI1ICs0OTM3
LDI1IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGUKIHsKICAgICBz
d2l0Y2ggKHZhbHVlSUQoKSkgewogICAgIGNhc2UgQ1NTVmFsdWVNYXJnaW5Cb3g6Ci0gICAgICAg
IHJldHVybiBNYXJnaW5Cb3g7CisgICAgICAgIHJldHVybiBDU1NCb3hUeXBlOjpNYXJnaW5Cb3g7
CiAgICAgY2FzZSBDU1NWYWx1ZUJvcmRlckJveDoKLSAgICAgICAgcmV0dXJuIEJvcmRlckJveDsK
KyAgICAgICAgcmV0dXJuIENTU0JveFR5cGU6OkJvcmRlckJveDsKICAgICBjYXNlIENTU1ZhbHVl
UGFkZGluZ0JveDoKLSAgICAgICAgcmV0dXJuIFBhZGRpbmdCb3g7CisgICAgICAgIHJldHVybiBD
U1NCb3hUeXBlOjpQYWRkaW5nQm94OwogICAgIGNhc2UgQ1NTVmFsdWVDb250ZW50Qm94OgotICAg
ICAgICByZXR1cm4gQ29udGVudEJveDsKKyAgICAgICAgcmV0dXJuIENTU0JveFR5cGU6OkNvbnRl
bnRCb3g7CiAgICAgLy8gVGhlIGZvbGxvd2luZyBhcmUgdXNlZCBpbiBhbiBTVkcgY29udGV4dC4K
ICAgICBjYXNlIENTU1ZhbHVlRmlsbDoKLSAgICAgICAgcmV0dXJuIEZpbGw7CisgICAgICAgIHJl
dHVybiBDU1NCb3hUeXBlOjpGaWxsOwogICAgIGNhc2UgQ1NTVmFsdWVTdHJva2U6Ci0gICAgICAg
IHJldHVybiBTdHJva2U7CisgICAgICAgIHJldHVybiBDU1NCb3hUeXBlOjpTdHJva2U7CiAgICAg
Y2FzZSBDU1NWYWx1ZVZpZXdCb3g6Ci0gICAgICAgIHJldHVybiBWaWV3Qm94OworICAgICAgICBy
ZXR1cm4gQ1NTQm94VHlwZTo6Vmlld0JveDsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEJveE1pc3Npbmc7
CisgICAgcmV0dXJuIENTU0JveFR5cGU6OkJveE1pc3Npbmc7CiB9CiAKIHRlbXBsYXRlPD4gaW5s
aW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShJdGVtUG9zaXRpb24gaXRl
bVBvc2l0aW9uKQpAQCAtNTIwMSwxNSArNTIwMSwxNSBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6b3BlCiAKICAgICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkgewogICAg
IGNhc2UgQ1NTVmFsdWVOb3JtYWw6Ci0gICAgICAgIHJldHVybiBUZXh0Wm9vbU5vcm1hbDsKKyAg
ICAgICAgcmV0dXJuIFRleHRab29tOjpOb3JtYWw7CiAgICAgY2FzZSBDU1NWYWx1ZVJlc2V0Ogot
ICAgICAgICByZXR1cm4gVGV4dFpvb21SZXNldDsKKyAgICAgICAgcmV0dXJuIFRleHRab29tOjpS
ZXNldDsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGV4dFpvb21Ob3JtYWw7CisgICAgcmV0dXJuIFRl
eHRab29tOjpOb3JtYWw7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NQcmltaXRpdmVWYWx1ZShUZXh0Wm9vbSB0ZXh0Wm9vbSkKQEAgLTUyMTcsMTAgKzUyMTcs
MTAgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTUwogewogICAgIG1f
cHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoICh0ZXh0Wm9vbSkg
ewotICAgIGNhc2UgVGV4dFpvb21Ob3JtYWw6CisgICAgY2FzZSBUZXh0Wm9vbTo6Tm9ybWFsOgog
ICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5vcm1hbDsKICAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgVGV4dFpvb21SZXNldDoKKyAgICBjYXNlIFRleHRab29tOjpSZXNldDoKICAg
ICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVSZXNldDsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAkocmV2aXNpb24gMjMyMTIz
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjcwLDMxICsyNzAsMzEgQEAgUHNldWRvSWQgQ1NTU2VsZWN0b3I6OnBzZXVkb0lkKFBzZXVk
b0VsZQogewogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgUHNldWRvRWxlbWVudEZpcnN0
TGluZToKLSAgICAgICAgcmV0dXJuIEZJUlNUX0xJTkU7CisgICAgICAgIHJldHVybiBQc2V1ZG9J
ZDo6Rmlyc3RMaW5lOwogICAgIGNhc2UgUHNldWRvRWxlbWVudEZpcnN0TGV0dGVyOgotICAgICAg
ICByZXR1cm4gRklSU1RfTEVUVEVSOworICAgICAgICByZXR1cm4gUHNldWRvSWQ6OkZpcnN0TGV0
dGVyOwogICAgIGNhc2UgUHNldWRvRWxlbWVudFNlbGVjdGlvbjoKLSAgICAgICAgcmV0dXJuIFNF
TEVDVElPTjsKKyAgICAgICAgcmV0dXJuIFBzZXVkb0lkOjpTZWxlY3Rpb247CiAgICAgY2FzZSBQ
c2V1ZG9FbGVtZW50TWFya2VyOgotICAgICAgICByZXR1cm4gTUFSS0VSOworICAgICAgICByZXR1
cm4gUHNldWRvSWQ6Ok1hcmtlcjsKICAgICBjYXNlIFBzZXVkb0VsZW1lbnRCZWZvcmU6Ci0gICAg
ICAgIHJldHVybiBCRUZPUkU7CisgICAgICAgIHJldHVybiBQc2V1ZG9JZDo6QmVmb3JlOwogICAg
IGNhc2UgUHNldWRvRWxlbWVudEFmdGVyOgotICAgICAgICByZXR1cm4gQUZURVI7CisgICAgICAg
IHJldHVybiBQc2V1ZG9JZDo6QWZ0ZXI7CiAgICAgY2FzZSBQc2V1ZG9FbGVtZW50U2Nyb2xsYmFy
OgotICAgICAgICByZXR1cm4gU0NST0xMQkFSOworICAgICAgICByZXR1cm4gUHNldWRvSWQ6OlNj
cm9sbGJhcjsKICAgICBjYXNlIFBzZXVkb0VsZW1lbnRTY3JvbGxiYXJCdXR0b246Ci0gICAgICAg
IHJldHVybiBTQ1JPTExCQVJfQlVUVE9OOworICAgICAgICByZXR1cm4gUHNldWRvSWQ6OlNjcm9s
bGJhckJ1dHRvbjsKICAgICBjYXNlIFBzZXVkb0VsZW1lbnRTY3JvbGxiYXJDb3JuZXI6Ci0gICAg
ICAgIHJldHVybiBTQ1JPTExCQVJfQ09STkVSOworICAgICAgICByZXR1cm4gUHNldWRvSWQ6OlNj
cm9sbGJhckNvcm5lcjsKICAgICBjYXNlIFBzZXVkb0VsZW1lbnRTY3JvbGxiYXJUaHVtYjoKLSAg
ICAgICAgcmV0dXJuIFNDUk9MTEJBUl9USFVNQjsKKyAgICAgICAgcmV0dXJuIFBzZXVkb0lkOjpT
Y3JvbGxiYXJUaHVtYjsKICAgICBjYXNlIFBzZXVkb0VsZW1lbnRTY3JvbGxiYXJUcmFjazoKLSAg
ICAgICAgcmV0dXJuIFNDUk9MTEJBUl9UUkFDSzsKKyAgICAgICAgcmV0dXJuIFBzZXVkb0lkOjpT
Y3JvbGxiYXJUcmFjazsKICAgICBjYXNlIFBzZXVkb0VsZW1lbnRTY3JvbGxiYXJUcmFja1BpZWNl
OgotICAgICAgICByZXR1cm4gU0NST0xMQkFSX1RSQUNLX1BJRUNFOworICAgICAgICByZXR1cm4g
UHNldWRvSWQ6OlNjcm9sbGJhclRyYWNrUGllY2U7CiAgICAgY2FzZSBQc2V1ZG9FbGVtZW50UmVz
aXplcjoKLSAgICAgICAgcmV0dXJuIFJFU0laRVI7CisgICAgICAgIHJldHVybiBQc2V1ZG9JZDo6
UmVzaXplcjsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgY2FzZSBQc2V1ZG9FbGVtZW50
Q3VlOgogI2VuZGlmCkBAIC0zMDMsMTEgKzMwMywxMSBAQCBQc2V1ZG9JZCBDU1NTZWxlY3Rvcjo6
cHNldWRvSWQoUHNldWRvRWxlCiAgICAgY2FzZSBQc2V1ZG9FbGVtZW50VXNlckFnZW50Q3VzdG9t
OgogICAgIGNhc2UgUHNldWRvRWxlbWVudFdlYktpdEN1c3RvbToKICAgICBjYXNlIFBzZXVkb0Vs
ZW1lbnRXZWJLaXRDdXN0b21MZWdhY3lQcmVmaXhlZDoKLSAgICAgICAgcmV0dXJuIE5PUFNFVURP
OworICAgICAgICByZXR1cm4gUHNldWRvSWQ6Ok5vbmU7CiAgICAgfQogCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIE5PUFNFVURPOworICAgIHJldHVybiBQc2V1ZG9JZDo6
Tm9uZTsKIH0KIAogQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRUeXBlIENTU1NlbGVjdG9yOjpw
YXJzZVBzZXVkb0VsZW1lbnRUeXBlKGNvbnN0IFN0cmluZyYgbmFtZSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYzLDE2ICszNjMs
MTYgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25GaWxsTW9kZQogCiAgICAgc3dp
dGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSkgewogICAg
IGNhc2UgQ1NTVmFsdWVOb25lOgotICAgICAgICBsYXllci5zZXRGaWxsTW9kZShBbmltYXRpb25G
aWxsTW9kZU5vbmUpOworICAgICAgICBsYXllci5zZXRGaWxsTW9kZShBbmltYXRpb25GaWxsTW9k
ZTo6Tm9uZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVGb3J3YXJkczoKLSAg
ICAgICAgbGF5ZXIuc2V0RmlsbE1vZGUoQW5pbWF0aW9uRmlsbE1vZGVGb3J3YXJkcyk7CisgICAg
ICAgIGxheWVyLnNldEZpbGxNb2RlKEFuaW1hdGlvbkZpbGxNb2RlOjpGb3J3YXJkcyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVCYWNrd2FyZHM6Ci0gICAgICAgIGxheWVyLnNl
dEZpbGxNb2RlKEFuaW1hdGlvbkZpbGxNb2RlQmFja3dhcmRzKTsKKyAgICAgICAgbGF5ZXIuc2V0
RmlsbE1vZGUoQW5pbWF0aW9uRmlsbE1vZGU6OkJhY2t3YXJkcyk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQ1NTVmFsdWVCb3RoOgotICAgICAgICBsYXllci5zZXRGaWxsTW9kZShBbmltYXRp
b25GaWxsTW9kZUJvdGgpOworICAgICAgICBsYXllci5zZXRGaWxsTW9kZShBbmltYXRpb25GaWxs
TW9kZTo6Qm90aCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFr
OwpAQCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uUGxh
eVN0YXQKICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIEVBbmltUGxheVN0YXRlIHBsYXlTdGF0ZSA9IChkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZVBhdXNlZCkgPyBBbmltUGxh
eVN0YXRlUGF1c2VkIDogQW5pbVBsYXlTdGF0ZVBsYXlpbmc7CisgICAgQW5pbWF0aW9uUGxheVN0
YXRlIHBsYXlTdGF0ZSA9IChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVl
SUQoKSA9PSBDU1NWYWx1ZVBhdXNlZCkgPyBBbmltYXRpb25QbGF5U3RhdGU6OlBhdXNlZCA6IEFu
aW1hdGlvblBsYXlTdGF0ZTo6UGxheWluZzsKICAgICBsYXllci5zZXRQbGF5U3RhdGUocGxheVN0
YXRlKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4JKHJl
dmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC0yODcsNyArMjg3LDcgQEAgYm90dG9tCiAtd2Via2l0LWJhc2Vs
aW5lLW1pZGRsZQogLy8KIC8vIENTU19QUk9QX1RFWFRfQUxJR046Ci0vLyBUaGUgb3JkZXIgaGVy
ZSBtdXN0IG1hdGNoIHRoZSBvcmRlciBvZiB0aGUgRVRleHRBbGlnbiBlbnVtIGluIFJlbmRlclN0
eWxlQ29uc3RhbnRzLmguCisvLyBUaGUgb3JkZXIgaGVyZSBtdXN0IG1hdGNoIHRoZSBvcmRlciBv
ZiB0aGUgVGV4dEFsaWduTW9kZSBlbnVtIGluIFJlbmRlclN0eWxlQ29uc3RhbnRzLmguCiAvLwog
LXdlYmtpdC1hdXRvCiBsZWZ0CkBAIC0zMTIsNyArMzEyLDcgQEAgb3V0c2lkZQogaW5zaWRlCiAv
LwogLy8gQ1NTX1BST1BfTElTVF9TVFlMRV9UWVBFOgotLy8gVGhlIG9yZGVyIGhlcmUgbXVzdCBt
YXRjaCB0aGUgb3JkZXIgb2YgdGhlIEVMaXN0U3R5bGVUeXBlIGVudW0gaW4gUmVuZGVyU3R5bGVD
b25zdGFudHMuaC4KKy8vIFRoZSBvcmRlciBoZXJlIG11c3QgbWF0Y2ggdGhlIG9yZGVyIG9mIHRo
ZSBMaXN0U3R5bGVUeXBlIGVudW0gaW4gUmVuZGVyU3R5bGVDb25zdGFudHMuaC4KIC8vCiBkaXNj
CiBjaXJjbGUKQEAgLTM5Nyw3ICszOTcsNyBAQCBrYXRha2FuYS1pcm9oYQogLy9ub25lCiAvLwog
Ly8gQ1NTX1BST1BfRElTUExBWToKLS8vIFRoZSBvcmRlciBoZXJlIG11c3QgbWF0Y2ggdGhlIG9y
ZGVyIG9mIHRoZSBFRGlzcGxheSBlbnVtIGluIFJlbmRlclN0eWxlQ29uc3RhbnRzLmguCisvLyBU
aGUgb3JkZXIgaGVyZSBtdXN0IG1hdGNoIHRoZSBvcmRlciBvZiB0aGUgRGlzcGxheVR5cGUgZW51
bSBpbiBSZW5kZXJTdHlsZUNvbnN0YW50cy5oLgogLy8KIGlubGluZQogYmxvY2sKQEAgLTQyNiw3
ICs0MjYsNyBAQCBpbmxpbmUtZ3JpZAogLy9ub25lCiAvLwogLy8gQ1NTX1BST1BfQ1VSU09SOgot
Ly8gVGhlIG9yZGVyIGhlcmUgbXVzdCBtYXRjaCB0aGUgb3JkZXIgb2YgdGhlIEVDdXJzb3IgZW51
bSBpbiBSZW5kZXJTdHlsZUNvbnN0YW50cy5oLgorLy8gVGhlIG9yZGVyIGhlcmUgbXVzdCBtYXRj
aCB0aGUgb3JkZXIgb2YgdGhlIEN1cnNvclR5cGUgZW51bSBpbiBSZW5kZXJTdHlsZUNvbnN0YW50
cy5oLgogLy8KIGF1dG8KIGRlZmF1bHQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50
UnVsZUNvbGxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0VsZW1l
bnRSdWxlQ29sbGVjdG9yLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDcgKzE0
MCw3IEBAIGlubGluZSB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjphZGRFbGUKIHZvaWQgRWxl
bWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1J1bGVzKGNvbnN0IE1hdGNoUmVxdWVz
dCYgbWF0Y2hSZXF1ZXN0LCBTdHlsZVJlc29sdmVyOjpSdWxlUmFuZ2UmIHJ1bGVSYW5nZSkKIHsK
ICAgICBBU1NFUlQobWF0Y2hSZXF1ZXN0LnJ1bGVTZXQpOwotICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoIShtX21vZGUgPT0gU2VsZWN0b3JDaGVja2VyOjpNb2RlOjpDb2xsZWN0aW5nUnVsZXNJZ25v
cmluZ1ZpcnR1YWxQc2V1ZG9FbGVtZW50cyAmJiBtX3BzZXVkb1N0eWxlUmVxdWVzdC5wc2V1ZG9J
ZCAhPSBOT1BTRVVETyksICJXaGVuIGluIFN0eWxlSW52YWxpZGF0aW9uIG9yIFNoYXJpbmdSdWxl
cywgU2VsZWN0b3JDaGVja2VyIGRvZXMgbm90IHRyeSB0byBtYXRjaCB0aGUgcHNldWRvIElELiBX
aGlsZSBFbGVtZW50UnVsZUNvbGxlY3RvciBzdXBwb3J0cyBtYXRjaGluZyBhIHBhcnRpY3VsYXIg
cHNldWRvSWQgaW4gdGhpcyBjYXNlLCB0aGlzIHdvdWxkIGluZGljYXRlIGEgZXJyb3IgYXQgdGhl
IGNhbGwgc2l0ZSBzaW5jZSBtYXRjaGluZyBhIHBhcnRpY3VsYXIgZWxlbWVudCBzaG91bGQgYmUg
dW5uZWNlc3NhcnkuIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghKG1fbW9kZSA9PSBTZWxl
Y3RvckNoZWNrZXI6Ok1vZGU6OkNvbGxlY3RpbmdSdWxlc0lnbm9yaW5nVmlydHVhbFBzZXVkb0Vs
ZW1lbnRzICYmIG1fcHNldWRvU3R5bGVSZXF1ZXN0LnBzZXVkb0lkICE9IFBzZXVkb0lkOjpOb25l
KSwgIldoZW4gaW4gU3R5bGVJbnZhbGlkYXRpb24gb3IgU2hhcmluZ1J1bGVzLCBTZWxlY3RvckNo
ZWNrZXIgZG9lcyBub3QgdHJ5IHRvIG1hdGNoIHRoZSBwc2V1ZG8gSUQuIFdoaWxlIEVsZW1lbnRS
dWxlQ29sbGVjdG9yIHN1cHBvcnRzIG1hdGNoaW5nIGEgcGFydGljdWxhciBwc2V1ZG9JZCBpbiB0
aGlzIGNhc2UsIHRoaXMgd291bGQgaW5kaWNhdGUgYSBlcnJvciBhdCB0aGUgY2FsbCBzaXRlIHNp
bmNlIG1hdGNoaW5nIGEgcGFydGljdWxhciBlbGVtZW50IHNob3VsZCBiZSB1bm5lY2Vzc2FyeS4i
KTsKIAogICAgIGF1dG8qIHNoYWRvd1Jvb3QgPSBtX2VsZW1lbnQuY29udGFpbmluZ1NoYWRvd1Jv
b3QoKTsKICAgICBpZiAoc2hhZG93Um9vdCAmJiBzaGFkb3dSb290LT5tb2RlKCkgPT0gU2hhZG93
Um9vdE1vZGU6OlVzZXJBZ2VudCkKQEAgLTM2MCw3ICszNjAsNyBAQCBpbmxpbmUgYm9vbCBFbGVt
ZW50UnVsZUNvbGxlY3Rvcjo6cnVsZU1hCiAgICAgLy8gVGhpcyBpcyBsaW1pdGVkIHRvIEhUTUwg
b25seSBzbyB3ZSBkb24ndCBuZWVkIHRvIGNoZWNrIHRoZSBuYW1lc3BhY2UgKGJlY2F1c2Ugb2Yg
dGFnIG5hbWUgbWF0Y2gpLgogICAgIE1hdGNoQmFzZWRPblJ1bGVIYXNoIG1hdGNoQmFzZWRPblJ1
bGVIYXNoID0gcnVsZURhdGEubWF0Y2hCYXNlZE9uUnVsZUhhc2goKTsKICAgICBpZiAobWF0Y2hC
YXNlZE9uUnVsZUhhc2ggIT0gTWF0Y2hCYXNlZE9uUnVsZUhhc2g6Ok5vbmUgJiYgbV9lbGVtZW50
LmlzSFRNTEVsZW1lbnQoKSkgewotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fcHNldWRv
U3R5bGVSZXF1ZXN0LnBzZXVkb0lkID09IE5PUFNFVURPLCAiSWYgd2UgbWF0Y2ggYmFzZWQgb24g
dGhlIHJ1bGUgaGFzaCB3aGlsZSBjb2xsZWN0aW5nIGZvciBhIHBhcnRpY3VsYXIgcHNldWRvIGVs
ZW1lbnQgSUQsIHdlIHdvdWxkIGFkZCBpbmNvcnJlY3QgcnVsZXMgZm9yIHRoYXQgcHNldWRvIGVs
ZW1lbnQgSUQuIFdlIHNob3VsZCBuZXZlciBlbmQgaW4gcnVsZU1hdGNoZXMoKSB3aXRoIGEgcHNl
dWRvIGVsZW1lbnQgaWYgdGhlIHJ1bGVEYXRhIGNhbm5vdCBtYXRjaCBhbnkgcHNldWRvIGVsZW1l
bnQuIik7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9wc2V1ZG9TdHlsZVJlcXVlc3Qu
cHNldWRvSWQgPT0gUHNldWRvSWQ6Ok5vbmUsICJJZiB3ZSBtYXRjaCBiYXNlZCBvbiB0aGUgcnVs
ZSBoYXNoIHdoaWxlIGNvbGxlY3RpbmcgZm9yIGEgcGFydGljdWxhciBwc2V1ZG8gZWxlbWVudCBJ
RCwgd2Ugd291bGQgYWRkIGluY29ycmVjdCBydWxlcyBmb3IgdGhhdCBwc2V1ZG8gZWxlbWVudCBJ
RC4gV2Ugc2hvdWxkIG5ldmVyIGVuZCBpbiBydWxlTWF0Y2hlcygpIHdpdGggYSBwc2V1ZG8gZWxl
bWVudCBpZiB0aGUgcnVsZURhdGEgY2Fubm90IG1hdGNoIGFueSBwc2V1ZG8gZWxlbWVudC4iKTsK
IAogICAgICAgICBzd2l0Y2ggKG1hdGNoQmFzZWRPblJ1bGVIYXNoKSB7CiAgICAgICAgIGNhc2Ug
TWF0Y2hCYXNlZE9uUnVsZUhhc2g6Ok5vbmU6CkBAIC0zOTUsNyArMzk1LDcgQEAgaW5saW5lIGJv
b2wgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OnJ1bGVNYQogICAgICAgICBhdXRvIHNlbGVjdG9yQ2hl
Y2tlciA9IFNlbGVjdG9yQ29tcGlsZXI6OnJ1bGVDb2xsZWN0b3JTaW1wbGVTZWxlY3RvckNoZWNr
ZXJGdW5jdGlvbihjb21waWxlZFNlbGVjdG9yQ2hlY2tlciwgY29tcGlsZWRTZWxlY3Rvci5zdGF0
dXMpOwogI2lmICFBU1NFUlRfTVNHX0RJU0FCTEVECiAgICAgICAgIHVuc2lnbmVkIGlnbm9yZVNw
ZWNpZmljaXR5OwotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzZWxlY3RvckNoZWNrZXIo
Jm1fZWxlbWVudCwgJmlnbm9yZVNwZWNpZmljaXR5KSB8fCBtX3BzZXVkb1N0eWxlUmVxdWVzdC5w
c2V1ZG9JZCA9PSBOT1BTRVVETywgIldoZW4gbWF0Y2hpbmcgcHNldWRvIGVsZW1lbnRzLCB3ZSBz
aG91bGQgbmV2ZXIgY29tcGlsZSBhIHNlbGVjdG9yIGNoZWNrZXIgd2l0aG91dCBjb250ZXh0IHVu
bGVzcyBpdCBjYW5ub3QgbWF0Y2ggYW55dGhpbmcuIik7CisgICAgICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoIXNlbGVjdG9yQ2hlY2tlcigmbV9lbGVtZW50LCAmaWdub3JlU3BlY2lmaWNpdHkpIHx8
IG1fcHNldWRvU3R5bGVSZXF1ZXN0LnBzZXVkb0lkID09IFBzZXVkb0lkOjpOb25lLCAiV2hlbiBt
YXRjaGluZyBwc2V1ZG8gZWxlbWVudHMsIHdlIHNob3VsZCBuZXZlciBjb21waWxlIGEgc2VsZWN0
b3IgY2hlY2tlciB3aXRob3V0IGNvbnRleHQgdW5sZXNzIGl0IGNhbm5vdCBtYXRjaCBhbnl0aGlu
Zy4iKTsKICNlbmRpZgogI2lmIENTU19TRUxFQ1RPUl9KSVRfUFJPRklMSU5HCiAgICAgICAgIHJ1
bGVEYXRhLmNvbXBpbGVkU2VsZWN0b3JVc2VkKCk7CkBAIC00NTgsNyArNDU4LDcgQEAgdm9pZCBF
bGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdE1hdGNoaQogICAgIGZvciAodW5zaWduZWQgaSA9
IDAsIHNpemUgPSBydWxlcy0+c2l6ZSgpOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIGNvbnN0
IFJ1bGVEYXRhJiBydWxlRGF0YSA9IHJ1bGVzLT5kYXRhKClbaV07CiAKLSAgICAgICAgaWYgKCFy
dWxlRGF0YS5jYW5NYXRjaFBzZXVkb0VsZW1lbnQoKSAmJiBtX3BzZXVkb1N0eWxlUmVxdWVzdC5w
c2V1ZG9JZCAhPSBOT1BTRVVETykKKyAgICAgICAgaWYgKCFydWxlRGF0YS5jYW5NYXRjaFBzZXVk
b0VsZW1lbnQoKSAmJiBtX3BzZXVkb1N0eWxlUmVxdWVzdC5wc2V1ZG9JZCAhPSBQc2V1ZG9JZDo6
Tm9uZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChtX3NlbGVjdG9yRmls
dGVyICYmIG1fc2VsZWN0b3JGaWx0ZXItPmZhc3RSZWplY3RTZWxlY3RvcihydWxlRGF0YS5kZXNj
ZW5kYW50U2VsZWN0b3JJZGVudGlmaWVySGFzaGVzKCkpKQpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3
ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU2VsZWN0b3JGaWx0ZXIqIG1fc2VsZWN0b3JG
aWx0ZXIgeyBudWxscHRyIH07CiAKICAgICBib29sIG1faXNQcmludFN0eWxlIHsgZmFsc2UgfTsK
LSAgICBQc2V1ZG9TdHlsZVJlcXVlc3QgbV9wc2V1ZG9TdHlsZVJlcXVlc3QgeyBOT1BTRVVETyB9
OworICAgIFBzZXVkb1N0eWxlUmVxdWVzdCBtX3BzZXVkb1N0eWxlUmVxdWVzdCB7IFBzZXVkb0lk
OjpOb25lIH07CiAgICAgU2VsZWN0b3JDaGVja2VyOjpNb2RlIG1fbW9kZSB7IFNlbGVjdG9yQ2hl
Y2tlcjo6TW9kZTo6UmVzb2x2aW5nU3R5bGUgfTsKICAgICBib29sIG1faXNNYXRjaGluZ1Nsb3R0
ZWRQc2V1ZG9FbGVtZW50cyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzTWF0Y2hpbmdIb3N0UHNl
dWRvQ2xhc3MgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hl
Y2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tl
ci5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNo
ZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsMTUgKzE4NSwxNSBAQCBib29sIFNlbGVj
dG9yQ2hlY2tlcjo6bWF0Y2goY29uc3QgQ1NTU2VsCiAgICAgTWF0Y2hSZXN1bHQgcmVzdWx0ID0g
bWF0Y2hSZWN1cnNpdmVseShjaGVja2luZ0NvbnRleHQsIGNvbnRleHQsIHBzZXVkb0lkU2V0LCBz
cGVjaWZpY2l0eSk7CiAgICAgaWYgKHJlc3VsdC5tYXRjaCAhPSBNYXRjaDo6U2VsZWN0b3JNYXRj
aGVzKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGNoZWNraW5nQ29udGV4dC5wc2V1
ZG9JZCAhPSBOT1BTRVVETyAmJiAhcHNldWRvSWRTZXQuaGFzKGNoZWNraW5nQ29udGV4dC5wc2V1
ZG9JZCkpCisgICAgaWYgKGNoZWNraW5nQ29udGV4dC5wc2V1ZG9JZCAhPSBQc2V1ZG9JZDo6Tm9u
ZSAmJiAhcHNldWRvSWRTZXQuaGFzKGNoZWNraW5nQ29udGV4dC5wc2V1ZG9JZCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIGlmIChjaGVja2luZ0NvbnRleHQucHNldWRvSWQgPT0gTk9Q
U0VVRE8gJiYgcHNldWRvSWRTZXQpIHsKLSAgICAgICAgUHNldWRvSWRTZXQgcHVibGljUHNldWRv
SWRTZXQgPSBwc2V1ZG9JZFNldCAmIFBzZXVkb0lkU2V0Ojpmcm9tTWFzayhQVUJMSUNfUFNFVURP
SURfTUFTSyk7CisgICAgaWYgKGNoZWNraW5nQ29udGV4dC5wc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6
Tm9uZSAmJiBwc2V1ZG9JZFNldCkgeworICAgICAgICBQc2V1ZG9JZFNldCBwdWJsaWNQc2V1ZG9J
ZFNldCA9IHBzZXVkb0lkU2V0ICYgUHNldWRvSWRTZXQ6OmZyb21NYXNrKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQc2V1ZG9JZDo6UHVibGljUHNldWRvSWRNYXNrKSk7CiAgICAgICAgIGlmIChjaGVj
a2luZ0NvbnRleHQucmVzb2x2aW5nTW9kZSA9PSBNb2RlOjpSZXNvbHZpbmdTdHlsZSAmJiBwdWJs
aWNQc2V1ZG9JZFNldCkKICAgICAgICAgICAgIGNoZWNraW5nQ29udGV4dC5wc2V1ZG9JRFNldCA9
IHB1YmxpY1BzZXVkb0lkU2V0OwogCi0gICAgICAgIC8vIFdoZW4gaWdub3JpbmcgdmlydHVhbCBw
c2V1ZG8gZWxlbWVudHMsIHRoZSBjb250ZXh0J3MgcHNldWRvIHNob3VsZCBhbHNvIGJlIE5PUFNF
VURPIGJ1dCB0aGF0IGRvZXMKKyAgICAgICAgLy8gV2hlbiBpZ25vcmluZyB2aXJ0dWFsIHBzZXVk
byBlbGVtZW50cywgdGhlIGNvbnRleHQncyBwc2V1ZG8gc2hvdWxkIGFsc28gYmUgUHNldWRvSWQ6
Ok5vbmUgYnV0IHRoYXQgZG9lcwogICAgICAgICAvLyBub3QgY2F1c2UgYSBmYWlsdXJlLgogICAg
ICAgICByZXR1cm4gY2hlY2tpbmdDb250ZXh0LnJlc29sdmluZ01vZGUgPT0gTW9kZTo6Q29sbGVj
dGluZ1J1bGVzSWdub3JpbmdWaXJ0dWFsUHNldWRvRWxlbWVudHMgfHwgcmVzdWx0Lm1hdGNoVHlw
ZSA9PSBNYXRjaFR5cGU6OkVsZW1lbnQ7CiAgICAgfQpAQCAtMjA4LDcgKzIwOCw3IEBAIGJvb2wg
U2VsZWN0b3JDaGVja2VyOjptYXRjaEhvc3RQc2V1ZG9DbGEKICAgICBzcGVjaWZpY2l0eSA9IHNl
bGVjdG9yLnNpbXBsZVNlbGVjdG9yU3BlY2lmaWNpdHkoKTsKIAogICAgIGlmIChhdXRvKiBzZWxl
Y3Rvckxpc3QgPSBzZWxlY3Rvci5zZWxlY3Rvckxpc3QoKSkgewotICAgICAgICBMb2NhbENvbnRl
eHQgY29udGV4dCgqc2VsZWN0b3JMaXN0LT5maXJzdCgpLCBlbGVtZW50LCBWaXNpdGVkTWF0Y2hU
eXBlOjpFbmFibGVkLCBOT1BTRVVETyk7CisgICAgICAgIExvY2FsQ29udGV4dCBjb250ZXh0KCpz
ZWxlY3Rvckxpc3QtPmZpcnN0KCksIGVsZW1lbnQsIFZpc2l0ZWRNYXRjaFR5cGU6OkVuYWJsZWQs
IFBzZXVkb0lkOjpOb25lKTsKICAgICAgICAgY29udGV4dC5pbkZ1bmN0aW9uYWxQc2V1ZG9DbGFz
cyA9IHRydWU7CiAgICAgICAgIGNvbnRleHQucHNldWRvRWxlbWVudEVmZmVjdGl2ZSA9IGZhbHNl
OwogICAgICAgICBQc2V1ZG9JZFNldCBpZ25vcmVEeW5hbWljUHNldWRvOwpAQCAtMjIyLDEzICsy
MjIsMTMgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6Om1hdGNoSG9zdFBzZXVkb0NsYQogCiBpbmxp
bmUgc3RhdGljIGJvb2wgaGFzU2Nyb2xsYmFyUHNldWRvRWxlbWVudChjb25zdCBQc2V1ZG9JZFNl
dCYgZHluYW1pY1BzZXVkb0lkU2V0KQogewotICAgIFBzZXVkb0lkU2V0IHNjcm9sbGJhcklkU2V0
ID0geyBTQ1JPTExCQVIsIFNDUk9MTEJBUl9USFVNQiwgU0NST0xMQkFSX0JVVFRPTiwgU0NST0xM
QkFSX1RSQUNLLCBTQ1JPTExCQVJfVFJBQ0tfUElFQ0UsIFNDUk9MTEJBUl9DT1JORVIgfTsKKyAg
ICBQc2V1ZG9JZFNldCBzY3JvbGxiYXJJZFNldCA9IHsgUHNldWRvSWQ6OlNjcm9sbGJhciwgUHNl
dWRvSWQ6OlNjcm9sbGJhclRodW1iLCBQc2V1ZG9JZDo6U2Nyb2xsYmFyQnV0dG9uLCBQc2V1ZG9J
ZDo6U2Nyb2xsYmFyVHJhY2ssIFBzZXVkb0lkOjpTY3JvbGxiYXJUcmFja1BpZWNlLCBQc2V1ZG9J
ZDo6U2Nyb2xsYmFyQ29ybmVyIH07CiAgICAgaWYgKGR5bmFtaWNQc2V1ZG9JZFNldCAmIHNjcm9s
bGJhcklkU2V0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIC8vIFJFU0laRVIgZG9lcyBu
b3QgYWx3YXlzIGhhdmUgYSBzY3JvbGxiYXIgYnV0IGl0IGlzIGEgc2Nyb2xsYmFyLWxpa2UgcHNl
dWRvIGVsZW1lbnQKKyAgICAvLyBQc2V1ZG9JZDo6UmVzaXplciBkb2VzIG5vdCBhbHdheXMgaGF2
ZSBhIHNjcm9sbGJhciBidXQgaXQgaXMgYSBzY3JvbGxiYXItbGlrZSBwc2V1ZG8gZWxlbWVudAog
ICAgIC8vIGJlY2F1c2UgaXQgY2FuIGhhdmUgbW9yZSB0aGFuIG9uZSBwc2V1ZG8gZWxlbWVudC4K
LSAgICByZXR1cm4gZHluYW1pY1BzZXVkb0lkU2V0LmhhcyhSRVNJWkVSKTsKKyAgICByZXR1cm4g
ZHluYW1pY1BzZXVkb0lkU2V0LmhhcyhQc2V1ZG9JZDo6UmVzaXplcik7CiB9CiAKIHN0YXRpYyBT
ZWxlY3RvckNoZWNrZXI6OkxvY2FsQ29udGV4dCBsb2NhbENvbnRleHRGb3JQYXJlbnQoY29uc3Qg
U2VsZWN0b3JDaGVja2VyOjpMb2NhbENvbnRleHQmIGNvbnRleHQpCkBAIC0yOTMsNyArMjkzLDcg
QEAgU2VsZWN0b3JDaGVja2VyOjpNYXRjaFJlc3VsdCBTZWxlY3RvckNoZQogICAgICAgICAgICAg
ICAgIHJldHVybiBNYXRjaFJlc3VsdDo6ZmFpbHMoTWF0Y2g6OlNlbGVjdG9yRmFpbHNDb21wbGV0
ZWx5KTsKIAogICAgICAgICAgICAgUHNldWRvSWQgcHNldWRvSWQgPSBDU1NTZWxlY3Rvcjo6cHNl
dWRvSWQoY29udGV4dC5zZWxlY3Rvci0+cHNldWRvRWxlbWVudFR5cGUoKSk7Ci0gICAgICAgICAg
ICBpZiAocHNldWRvSWQgIT0gTk9QU0VVRE8pCisgICAgICAgICAgICBpZiAocHNldWRvSWQgIT0g
UHNldWRvSWQ6Ok5vbmUpCiAgICAgICAgICAgICAgICAgZHluYW1pY1BzZXVkb0lkU2V0LmFkZChw
c2V1ZG9JZCk7CiAgICAgICAgICAgICBtYXRjaFR5cGUgPSBNYXRjaFR5cGU6OlZpcnR1YWxQc2V1
ZG9FbGVtZW50T25seTsKICAgICAgICAgfQpAQCAtMzEyLDE0ICszMTIsMTQgQEAgU2VsZWN0b3JD
aGVja2VyOjpNYXRjaFJlc3VsdCBTZWxlY3RvckNoZQogCiAgICAgaWYgKHJlbGF0aW9uICE9IENT
U1NlbGVjdG9yOjpTdWJzZWxlY3RvcikgewogICAgICAgICAvLyBCYWlsLW91dCBpZiB0aGlzIHNl
bGVjdG9yIGlzIGlycmVsZXZhbnQgZm9yIHRoZSBwc2V1ZG9JZAotICAgICAgICBpZiAoY29udGV4
dC5wc2V1ZG9JZCAhPSBOT1BTRVVETyAmJiAhZHluYW1pY1BzZXVkb0lkU2V0Lmhhcyhjb250ZXh0
LnBzZXVkb0lkKSkKKyAgICAgICAgaWYgKGNvbnRleHQucHNldWRvSWQgIT0gUHNldWRvSWQ6Ok5v
bmUgJiYgIWR5bmFtaWNQc2V1ZG9JZFNldC5oYXMoY29udGV4dC5wc2V1ZG9JZCkpCiAgICAgICAg
ICAgICByZXR1cm4gTWF0Y2hSZXN1bHQ6OmZhaWxzKE1hdGNoOjpTZWxlY3RvckZhaWxzQ29tcGxl
dGVseSk7CiAKICAgICAgICAgLy8gRGlzYWJsZSA6dmlzaXRlZCBtYXRjaGluZyB3aGVuIHdlIHRy
eSB0byBtYXRjaCBhbnl0aGluZyBlbHNlIHRoYW4gYW4gYW5jZXN0b3JzLgogICAgICAgICBpZiAo
IWNvbnRleHQuc2VsZWN0b3ItPmhhc0Rlc2NlbmRhbnRPckNoaWxkUmVsYXRpb24oKSkKICAgICAg
ICAgICAgIG5leHRDb250ZXh0LnZpc2l0ZWRNYXRjaFR5cGUgPSBWaXNpdGVkTWF0Y2hUeXBlOjpE
aXNhYmxlZDsKIAotICAgICAgICBuZXh0Q29udGV4dC5wc2V1ZG9JZCA9IE5PUFNFVURPOworICAg
ICAgICBuZXh0Q29udGV4dC5wc2V1ZG9JZCA9IFBzZXVkb0lkOjpOb25lOwogICAgICAgICAvLyBW
aXJ0dWFsIHBzZXVkbyBlbGVtZW50IGlzIG9ubHkgZWZmZWN0aXZlIGluIHRoZSByaWdodG1vc3Qg
ZnJhZ21lbnQuCiAgICAgICAgIG5leHRDb250ZXh0LnBzZXVkb0VsZW1lbnRFZmZlY3RpdmUgPSBm
YWxzZTsKICAgICAgICAgbmV4dENvbnRleHQuaXNNYXRjaEVsZW1lbnQgPSBmYWxzZTsKQEAgLTQx
Myw3ICs0MTMsNyBAQCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoUmVzdWx0IFNlbGVjdG9yQ2hlCiAg
ICAgICAgICAgICAvLyBXZSBtYWtlIGFuIGV4Y2VwdGlvbiBmb3Igc2Nyb2xsYmFyIHBzZXVkbyBl
bGVtZW50cyBhbmQgYWxsb3cgYSBzZXQgb2YgcHNldWRvIGNsYXNzZXMgKGJ1dCBub3RoaW5nIGVs
c2UpCiAgICAgICAgICAgICAvLyB0byBmb2xsb3cgdGhlIHBzZXVkbyBlbGVtZW50cy4KICAgICAg
ICAgICAgIG5leHRDb250ZXh0Lmhhc1Njcm9sbGJhclBzZXVkbyA9IGhhc1Njcm9sbGJhclBzZXVk
b0VsZW1lbnQoZHluYW1pY1BzZXVkb0lkU2V0KTsKLSAgICAgICAgICAgIG5leHRDb250ZXh0Lmhh
c1NlbGVjdGlvblBzZXVkbyA9IGR5bmFtaWNQc2V1ZG9JZFNldC5oYXMoU0VMRUNUSU9OKTsKKyAg
ICAgICAgICAgIG5leHRDb250ZXh0Lmhhc1NlbGVjdGlvblBzZXVkbyA9IGR5bmFtaWNQc2V1ZG9J
ZFNldC5oYXMoUHNldWRvSWQ6OlNlbGVjdGlvbik7CiAgICAgICAgICAgICBpZiAoKGNvbnRleHQu
aXNNYXRjaEVsZW1lbnQgfHwgY2hlY2tpbmdDb250ZXh0LnJlc29sdmluZ01vZGUgPT0gTW9kZTo6
Q29sbGVjdGluZ1J1bGVzKSAmJiBkeW5hbWljUHNldWRvSWRTZXQKICAgICAgICAgICAgICAgICAm
JiAhbmV4dENvbnRleHQuaGFzU2VsZWN0aW9uUHNldWRvCiAgICAgICAgICAgICAgICAgJiYgIShu
ZXh0Q29udGV4dC5oYXNTY3JvbGxiYXJQc2V1ZG8gJiYgbmV4dENvbnRleHQuc2VsZWN0b3ItPm1h
dGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9TZWxlY3RvckNoZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
U2VsZWN0b3JDaGVja2VyLmgJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9TZWxlY3RvckNoZWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQCBwdWJs
aWM6CiAgICAgICAgIHsgfQogCiAgICAgICAgIGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6TW9kZSBy
ZXNvbHZpbmdNb2RlOwotICAgICAgICBQc2V1ZG9JZCBwc2V1ZG9JZCB7IE5PUFNFVURPIH07Cisg
ICAgICAgIFBzZXVkb0lkIHBzZXVkb0lkIHsgUHNldWRvSWQ6Ok5vbmUgfTsKICAgICAgICAgUmVu
ZGVyU2Nyb2xsYmFyKiBzY3JvbGxiYXIgeyBudWxscHRyIH07CiAgICAgICAgIFNjcm9sbGJhclBh
cnQgc2Nyb2xsYmFyUGFydCB7IE5vUGFydCB9OwogICAgICAgICBjb25zdCBDb250YWluZXJOb2Rl
KiBzY29wZSB7IG51bGxwdHIgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWls
ZGVyQ29udmVydGVyLmgJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBjb252ZXJ0U3RyaW5nT3JBdXRvKFN0eWxlUmVzb2x2
ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBTdHJpbmcgY29udmVydFN0cmluZ09y
Tm9uZShTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgVGV4dEVt
cGhhc2lzUG9zaXRpb24gY29udmVydFRleHRFbXBoYXNpc1Bvc2l0aW9uKFN0eWxlUmVzb2x2ZXIm
LCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBFVGV4dEFsaWduIGNvbnZlcnRUZXh0QWxp
Z24oU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIFRleHRBbGln
bk1vZGUgY29udmVydFRleHRBbGlnbihTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsK
ICAgICBzdGF0aWMgUmVmUHRyPENsaXBQYXRoT3BlcmF0aW9uPiBjb252ZXJ0Q2xpcFBhdGgoU3R5
bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIFJlc2l6ZSBjb252ZXJ0
UmVzaXplKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBpbnQg
Y29udmVydE1hcnF1ZWVSZXBldGl0aW9uKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYp
OwpAQCAtNTAyLDcgKzUwMiw3IEBAIGlubGluZSBUZXh0RW1waGFzaXNQb3NpdGlvbiBTdHlsZUJ1
aWxkZXIKICAgICByZXR1cm4gcG9zaXRpb247CiB9CiAKLWlubGluZSBFVGV4dEFsaWduIFN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRBbGlnbihTdHlsZVJlc29sdmVyJiBzdHlsZVJl
c29sdmVyLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgVGV4dEFsaWduTW9kZSBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0QWxpZ24oU3R5bGVSZXNvbHZlciYgc3R5bGVS
ZXNvbHZlciwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZh
bHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBBU1NFUlQocHJp
bWl0aXZlVmFsdWUuaXNWYWx1ZUlEKCkpOwpAQCAtNTExLDEwICs1MTEsMTAgQEAgaW5saW5lIEVU
ZXh0QWxpZ24gU3R5bGVCdWlsZGVyQ29udmVydGVyOgogICAgICAgICByZXR1cm4gcHJpbWl0aXZl
VmFsdWU7CiAKICAgICBhdXRvKiBwYXJlbnRTdHlsZSA9IHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5
bGUoKTsKLSAgICBpZiAocGFyZW50U3R5bGUtPnRleHRBbGlnbigpID09IFRBU1RBUlQpCi0gICAg
ICAgIHJldHVybiBwYXJlbnRTdHlsZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gTEVGVCA6
IFJJR0hUOwotICAgIGlmIChwYXJlbnRTdHlsZS0+dGV4dEFsaWduKCkgPT0gVEFFTkQpCi0gICAg
ICAgIHJldHVybiBwYXJlbnRTdHlsZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gUklHSFQg
OiBMRUZUOworICAgIGlmIChwYXJlbnRTdHlsZS0+dGV4dEFsaWduKCkgPT0gVGV4dEFsaWduTW9k
ZTo6U3RhcnQpCisgICAgICAgIHJldHVybiBwYXJlbnRTdHlsZS0+aXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpID8gVGV4dEFsaWduTW9kZTo6TGVmdCA6IFRleHRBbGlnbk1vZGU6OlJpZ2h0OworICAg
IGlmIChwYXJlbnRTdHlsZS0+dGV4dEFsaWduKCkgPT0gVGV4dEFsaWduTW9kZTo6RW5kKQorICAg
ICAgICByZXR1cm4gcGFyZW50U3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IFRleHRB
bGlnbk1vZGU6OlJpZ2h0IDogVGV4dEFsaWduTW9kZTo6TGVmdDsKICAgICByZXR1cm4gcGFyZW50
U3R5bGUtPnRleHRBbGlnbigpOwogfQogCkBAIC01MzIsNyArNTMyLDcgQEAgaW5saW5lIFJlZlB0
cjxDbGlwUGF0aE9wZXJhdGlvbj4gU3R5bGVCdQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICBDU1NCb3hUeXBlIHJlZmVyZW5jZUJveCA9IEJveE1pc3Npbmc7CisgICAgQ1NT
Qm94VHlwZSByZWZlcmVuY2VCb3ggPSBDU1NCb3hUeXBlOjpCb3hNaXNzaW5nOwogICAgIFJlZlB0
cjxDbGlwUGF0aE9wZXJhdGlvbj4gb3BlcmF0aW9uOwogCiAgICAgZm9yIChhdXRvJiBjdXJyZW50
VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgewpAQCAtNTQ4LDE0ICs1NDgs
MTQgQEAgaW5saW5lIFJlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4gU3R5bGVCdQogICAgICAgICAg
ICAgICAgIHx8IHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUZpbGwKICAgICAg
ICAgICAgICAgICB8fCBwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVTdHJva2UK
ICAgICAgICAgICAgICAgICB8fCBwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVW
aWV3Qm94KTsKLSAgICAgICAgICAgIEFTU0VSVChyZWZlcmVuY2VCb3ggPT0gQm94TWlzc2luZyk7
CisgICAgICAgICAgICBBU1NFUlQocmVmZXJlbmNlQm94ID09IENTU0JveFR5cGU6OkJveE1pc3Np
bmcpOwogICAgICAgICAgICAgcmVmZXJlbmNlQm94ID0gcHJpbWl0aXZlVmFsdWU7CiAgICAgICAg
IH0KICAgICB9CiAgICAgaWYgKG9wZXJhdGlvbikKICAgICAgICAgZG93bmNhc3Q8U2hhcGVDbGlw
UGF0aE9wZXJhdGlvbj4oKm9wZXJhdGlvbikuc2V0UmVmZXJlbmNlQm94KHJlZmVyZW5jZUJveCk7
CiAgICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVChyZWZlcmVuY2VCb3ggIT0gQm94TWlzc2luZyk7
CisgICAgICAgIEFTU0VSVChyZWZlcmVuY2VCb3ggIT0gQ1NTQm94VHlwZTo6Qm94TWlzc2luZyk7
CiAgICAgICAgIG9wZXJhdGlvbiA9IEJveENsaXBQYXRoT3BlcmF0aW9uOjpjcmVhdGUocmVmZXJl
bmNlQm94KTsKICAgICB9CiAKQEAgLTc3NSw3ICs3NzUsNyBAQCBpbmxpbmUgUmVmUHRyPFNoYXBl
VmFsdWU+IFN0eWxlQnVpbGRlckNvCiAgICAgICAgIHJldHVybiBTaGFwZVZhbHVlOjpjcmVhdGUo
c3R5bGVSZXNvbHZlci5zdHlsZUltYWdlKHZhbHVlKS5yZWxlYXNlTm9uTnVsbCgpKTsKIAogICAg
IFJlZlB0cjxCYXNpY1NoYXBlPiBzaGFwZTsKLSAgICBDU1NCb3hUeXBlIHJlZmVyZW5jZUJveCA9
IEJveE1pc3Npbmc7CisgICAgQ1NTQm94VHlwZSByZWZlcmVuY2VCb3ggPSBDU1NCb3hUeXBlOjpC
b3hNaXNzaW5nOwogICAgIGZvciAoYXV0byYgY3VycmVudFZhbHVlIDogZG93bmNhc3Q8Q1NTVmFs
dWVMaXN0Pih2YWx1ZSkpIHsKICAgICAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4oY3VycmVudFZhbHVlLmdldCgpKTsKICAgICAgICAgaWYgKHBy
aW1pdGl2ZVZhbHVlLmlzU2hhcGUoKSkKQEAgLTc5NCw3ICs3OTQsNyBAQCBpbmxpbmUgUmVmUHRy
PFNoYXBlVmFsdWU+IFN0eWxlQnVpbGRlckNvCiAgICAgaWYgKHNoYXBlKQogICAgICAgICByZXR1
cm4gU2hhcGVWYWx1ZTo6Y3JlYXRlKHNoYXBlLnJlbGVhc2VOb25OdWxsKCksIHJlZmVyZW5jZUJv
eCk7CiAKLSAgICBpZiAocmVmZXJlbmNlQm94ICE9IEJveE1pc3NpbmcpCisgICAgaWYgKHJlZmVy
ZW5jZUJveCAhPSBDU1NCb3hUeXBlOjpCb3hNaXNzaW5nKQogICAgICAgICByZXR1cm4gU2hhcGVW
YWx1ZTo6Y3JlYXRlKHJlZmVyZW5jZUJveCk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
QEAgLTkyMyw3ICs5MjMsNyBAQCBpbmxpbmUgYm9vbCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNy
ZWF0CiAgICAgICAgICAgICB1bnNpZ25lZCBhdXRvUmVwZWF0SW5kZXggPSAwOwogICAgICAgICAg
ICAgQ1NTVmFsdWVJRCBhdXRvUmVwZWF0SUQgPSBkb3duY2FzdDxDU1NHcmlkQXV0b1JlcGVhdFZh
bHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpLmF1dG9SZXBlYXRJRCgpOwogICAgICAgICAgICAgQVNT
RVJUKGF1dG9SZXBlYXRJRCA9PSBDU1NWYWx1ZUF1dG9GaWxsIHx8IGF1dG9SZXBlYXRJRCA9PSBD
U1NWYWx1ZUF1dG9GaXQpOwotICAgICAgICAgICAgdHJhY2tzRGF0YS5tX2F1dG9SZXBlYXRUeXBl
ID0gYXV0b1JlcGVhdElEID09IENTU1ZhbHVlQXV0b0ZpbGwgPyBBdXRvRmlsbCA6IEF1dG9GaXQ7
CisgICAgICAgICAgICB0cmFja3NEYXRhLm1fYXV0b1JlcGVhdFR5cGUgPSBhdXRvUmVwZWF0SUQg
PT0gQ1NTVmFsdWVBdXRvRmlsbCA/IEF1dG9SZXBlYXRUeXBlOjpGaWxsIDogQXV0b1JlcGVhdFR5
cGU6OkZpdDsKICAgICAgICAgICAgIGZvciAoYXV0byYgYXV0b1JlcGVhdFZhbHVlIDogZG93bmNh
c3Q8Q1NTVmFsdWVMaXN0PihjdXJyZW50VmFsdWUuZ2V0KCkpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKGlzPENTU0dyaWRMaW5lTmFtZXNWYWx1ZT4oYXV0b1JlcGVhdFZhbHVlKSkgewogICAgICAg
ICAgICAgICAgICAgICBjcmVhdGVHcmlkTGluZU5hbWVzTGlzdChhdXRvUmVwZWF0VmFsdWUuZ2V0
KCksIGF1dG9SZXBlYXRJbmRleCwgdHJhY2tzRGF0YS5tX2F1dG9SZXBlYXROYW1lZEdyaWRMaW5l
cywgdHJhY2tzRGF0YS5tX2F1dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkTGluZXMpOwpAQCAtMTA3
OCw3ICsxMDc4LDcgQEAgaW5saW5lIEdyaWRBdXRvRmxvdyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZQog
aW5saW5lIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
c3N0b0xlbmd0aENvbnZlcnNpb25EYXRhV2l0aFRleHRab29tRmFjdG9yKFN0eWxlUmVzb2x2ZXIm
IHN0eWxlUmVzb2x2ZXIpCiB7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gc3R5bGVSZXNvbHZlci5k
b2N1bWVudCgpLmZyYW1lKCkpIHsKLSAgICAgICAgZmxvYXQgdGV4dFpvb21GYWN0b3IgPSBzdHls
ZVJlc29sdmVyLnN0eWxlKCktPnRleHRab29tKCkgIT0gVGV4dFpvb21SZXNldCA/IGZyYW1lLT50
ZXh0Wm9vbUZhY3RvcigpIDogMS4wZjsKKyAgICAgICAgZmxvYXQgdGV4dFpvb21GYWN0b3IgPSBz
dHlsZVJlc29sdmVyLnN0eWxlKCktPnRleHRab29tKCkgIT0gVGV4dFpvb206OlJlc2V0ID8gZnJh
bWUtPnRleHRab29tRmFjdG9yKCkgOiAxLjBmOwogICAgICAgICByZXR1cm4gc3R5bGVSZXNvbHZl
ci5zdGF0ZSgpLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKS5jb3B5V2l0aEFkanVzdGVkWm9v
bShzdHlsZVJlc29sdmVyLnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSAqIHRleHRab29tRmFjdG9y
KTsKICAgICB9CiAgICAgcmV0dXJuIHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5jc3NUb0xlbmd0aENv
bnZlcnNpb25EYXRhKCk7CkBAIC0xNDY4LDkgKzE0NjgsOSBAQCBpbmxpbmUgQnJlYWtCZXR3ZWVu
IFN0eWxlQnVpbGRlckNvbnZlcnRlCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS52
YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBbHdheXMpCi0gICAgICAgIHJldHVybiBQYWdlQnJlYWtCZXR3
ZWVuOworICAgICAgICByZXR1cm4gQnJlYWtCZXR3ZWVuOjpQYWdlOwogICAgIGlmIChwcmltaXRp
dmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdm9pZCkKLSAgICAgICAgcmV0dXJuIEF2b2lk
UGFnZUJyZWFrQmV0d2VlbjsKKyAgICAgICAgcmV0dXJuIEJyZWFrQmV0d2Vlbjo6QXZvaWRQYWdl
OwogICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZTsKIH0KIApAQCAtMTQ3OCw3ICsxNDc4LDcgQEAg
aW5saW5lIEJyZWFrSW5zaWRlIFN0eWxlQnVpbGRlckNvbnZlcnRlcgogewogICAgIGF1dG8mIHBy
aW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBp
ZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlQXZvaWQpCi0gICAgICAgIHJl
dHVybiBBdm9pZFBhZ2VCcmVha0luc2lkZTsKKyAgICAgICAgcmV0dXJuIEJyZWFrSW5zaWRlOjpB
dm9pZFBhZ2U7CiAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlOwogfQogCkBAIC0xNDg2LDkgKzE0
ODYsOSBAQCBpbmxpbmUgQnJlYWtCZXR3ZWVuIFN0eWxlQnVpbGRlckNvbnZlcnRlCiB7CiAgICAg
YXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUp
OwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBbHdheXMpCi0g
ICAgICAgIHJldHVybiBDb2x1bW5CcmVha0JldHdlZW47CisgICAgICAgIHJldHVybiBCcmVha0Jl
dHdlZW46OkNvbHVtbjsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1Zh
bHVlQXZvaWQpCi0gICAgICAgIHJldHVybiBBdm9pZENvbHVtbkJyZWFrQmV0d2VlbjsKKyAgICAg
ICAgcmV0dXJuIEJyZWFrQmV0d2Vlbjo6QXZvaWRDb2x1bW47CiAgICAgcmV0dXJuIHByaW1pdGl2
ZVZhbHVlOwogfQogCkBAIC0xNDk2LDcgKzE0OTYsNyBAQCBpbmxpbmUgQnJlYWtJbnNpZGUgU3R5
bGVCdWlsZGVyQ29udmVydGVyCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1
ZUlEKCkgPT0gQ1NTVmFsdWVBdm9pZCkKLSAgICAgICAgcmV0dXJuIEF2b2lkQ29sdW1uQnJlYWtJ
bnNpZGU7CisgICAgICAgIHJldHVybiBCcmVha0luc2lkZTo6QXZvaWRDb2x1bW47CiAgICAgcmV0
dXJuIHByaW1pdGl2ZVZhbHVlOwogfQogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlQnVpbGRlckN1c3RvbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZUJ1aWxkZXJDdXN0b20uaAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlQnVpbGRlckN1c3RvbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNyArMTU2LDcgQEAg
cHJpdmF0ZToKIAogICAgIHRlbXBsYXRlIDxDU1NQcm9wZXJ0eUlEIGlkPgogICAgIHN0YXRpYyB2
b2lkIGFwcGx5VGV4dE9yQm94U2hhZG93VmFsdWUoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7
Ci0gICAgc3RhdGljIGJvb2wgaXNWYWxpZERpc3BsYXlWYWx1ZShTdHlsZVJlc29sdmVyJiwgRURp
c3BsYXkpOworICAgIHN0YXRpYyBib29sIGlzVmFsaWREaXNwbGF5VmFsdWUoU3R5bGVSZXNvbHZl
ciYsIERpc3BsYXlUeXBlKTsKIAogICAgIGVudW0gQ291bnRlckJlaGF2aW9yIHtJbmNyZW1lbnQg
PSAwLCBSZXNldH07CiAgICAgdGVtcGxhdGUgPENvdW50ZXJCZWhhdmlvciBjb3VudGVyQmVoYXZp
b3I+CkBAIC0zOTQsOSArMzk0LDkgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjph
cHBseVZhbAogICAgIGZvciAoYXV0byYgaXRlbSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFs
dWUpKSB7CiAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPihpdGVtLmdldCgpKTsKICAgICAgICAgaWYgKHByaW1pdGl2
ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUZyb21JbWFnZSkKLSAgICAgICAgICAgIHNvdXJj
ZSA9IEltYWdlUmVzb2x1dGlvbkZyb21JbWFnZTsKKyAgICAgICAgICAgIHNvdXJjZSA9IEltYWdl
UmVzb2x1dGlvblNvdXJjZTo6RnJvbUltYWdlOwogICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVW
YWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVTbmFwKQotICAgICAgICAgICAgc25hcCA9IEltYWdl
UmVzb2x1dGlvblNuYXBQaXhlbHM7CisgICAgICAgICAgICBzbmFwID0gSW1hZ2VSZXNvbHV0aW9u
U25hcDo6UGl4ZWxzOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXNvbHV0aW9uID0gcHJp
bWl0aXZlVmFsdWUuZG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19EUFBYKTsKICAg
ICB9CkBAIC02NTYsNyArNjU2LDcgQEAgc3RhdGljIGlubGluZSBmbG9hdCBjb21wdXRlQmFzZVNw
ZWNpZmllZAogewogICAgIGZsb2F0IHJlc3VsdCA9IHN0eWxlLnNwZWNpZmllZEZvbnRTaXplKCk7
CiAgICAgYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOwotICAgIGlmIChmcmFtZSAmJiBz
dHlsZS50ZXh0Wm9vbSgpICE9IFRleHRab29tUmVzZXQpCisgICAgaWYgKGZyYW1lICYmIHN0eWxl
LnRleHRab29tKCkgIT0gVGV4dFpvb206OlJlc2V0KQogICAgICAgICByZXN1bHQgKj0gZnJhbWUt
PnRleHRab29tRmFjdG9yKCk7CiAgICAgcmVzdWx0ICo9IHN0eWxlLmVmZmVjdGl2ZVpvb20oKTsK
ICAgICBpZiAocGVyY2VudGFnZUF1dG9zaXppbmdFbmFibGVkKQpAQCAtODE1LDkgKzgxNSw5IEBA
IGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWwKIHsKICAgICBhdXRvJiBw
cmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAg
aWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKLSAgICAgICAg
c3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0Wm9vbShUZXh0Wm9vbU5vcm1hbCk7CisgICAg
ICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dFpvb20oVGV4dFpvb206Ok5vcm1hbCk7
CiAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlUmVzZXQp
Ci0gICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dFpvb20oVGV4dFpvb21SZXNl
dCk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dFpvb20oVGV4dFpvb206
OlJlc2V0KTsKICAgICBzdHlsZVJlc29sdmVyLnN0YXRlKCkuc2V0Rm9udERpcnR5KHRydWUpOwog
fQogCkBAIC0xMDA0LDIzICsxMDA0LDIzIEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlWYWwKICAgICBzdHlsZVJlc29sdmVyLnNldEZvbnREZXNjcmlwdGlvbihmb250RGVz
Y3JpcHRpb24pOwogfQogCi1pbmxpbmUgYm9vbCBTdHlsZUJ1aWxkZXJDdXN0b206OmlzVmFsaWRE
aXNwbGF5VmFsdWUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgRURpc3BsYXkgZGlzcGxh
eSkKK2lubGluZSBib29sIFN0eWxlQnVpbGRlckN1c3RvbTo6aXNWYWxpZERpc3BsYXlWYWx1ZShT
dHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBEaXNwbGF5VHlwZSBkaXNwbGF5KQogewotICAg
IGlmIChpczxTVkdFbGVtZW50PihzdHlsZVJlc29sdmVyLmVsZW1lbnQoKSkgJiYgc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5zdHlsZVR5cGUoKSA9PSBOT1BTRVVETykKLSAgICAgICAgcmV0dXJuIGRp
c3BsYXkgPT0gSU5MSU5FIHx8IGRpc3BsYXkgPT0gQkxPQ0sgfHwgZGlzcGxheSA9PSBOT05FOwor
ICAgIGlmIChpczxTVkdFbGVtZW50PihzdHlsZVJlc29sdmVyLmVsZW1lbnQoKSkgJiYgc3R5bGVS
ZXNvbHZlci5zdHlsZSgpLT5zdHlsZVR5cGUoKSA9PSBQc2V1ZG9JZDo6Tm9uZSkKKyAgICAgICAg
cmV0dXJuIGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OklubGluZSB8fCBkaXNwbGF5ID09IERpc3Bs
YXlUeXBlOjpCbG9jayB8fCBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpOb25lOwogICAgIHJldHVy
biB0cnVlOwogfQogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJp
dERpc3BsYXkoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIHsKLSAgICBFRGlzcGxheSBk
aXNwbGF5ID0gc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5kaXNwbGF5KCk7CisgICAgRGlz
cGxheVR5cGUgZGlzcGxheSA9IHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+ZGlzcGxheSgp
OwogICAgIGlmIChpc1ZhbGlkRGlzcGxheVZhbHVlKHN0eWxlUmVzb2x2ZXIsIGRpc3BsYXkpKQog
ICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldERpc3BsYXkoZGlzcGxheSk7CiB9CiAK
IGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZURpc3BsYXkoU3R5bGVS
ZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewotICAgIEVEaXNwbGF5
IGRpc3BsYXkgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOworICAgIERpc3Bs
YXlUeXBlIGRpc3BsYXkgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAg
IGlmIChpc1ZhbGlkRGlzcGxheVZhbHVlKHN0eWxlUmVzb2x2ZXIsIGRpc3BsYXkpKQogICAgICAg
ICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldERpc3BsYXkoZGlzcGxheSk7CiB9CkBAIC0xMTE4
LDggKzExMTgsOCBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsCiAK
ICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2
YWx1ZSk7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgc3R5
bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNGaWxsKFRleHRFbXBoYXNpc0ZpbGxG
aWxsZWQpOwotICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRFbXBoYXNpc01h
cmsoVGV4dEVtcGhhc2lzTWFya0N1c3RvbSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUo
KS0+c2V0VGV4dEVtcGhhc2lzRmlsbChUZXh0RW1waGFzaXNGaWxsOjpGaWxsZWQpOworICAgICAg
ICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRFbXBoYXNpc01hcmsoVGV4dEVtcGhhc2lz
TWFyazo6Q3VzdG9tKTsKICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0RW1w
aGFzaXNDdXN0b21NYXJrKHByaW1pdGl2ZVZhbHVlLnN0cmluZ1ZhbHVlKCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMTEyOCw5ICsxMTI4LDkgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWls
ZGVyQ3VzdG9tOjphcHBseVZhbAogCiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9
PSBDU1NWYWx1ZUZpbGxlZCB8fCBwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVP
cGVuKSB7CiAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzRmls
bChwcmltaXRpdmVWYWx1ZSk7Ci0gICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4
dEVtcGhhc2lzTWFyayhUZXh0RW1waGFzaXNNYXJrQXV0byk7CisgICAgICAgIHN0eWxlUmVzb2x2
ZXIuc3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzTWFyayhUZXh0RW1waGFzaXNNYXJrOjpBdXRvKTsK
ICAgICB9IGVsc2UgewotICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRFbXBo
YXNpc0ZpbGwoVGV4dEVtcGhhc2lzRmlsbEZpbGxlZCk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXIu
c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzRmlsbChUZXh0RW1waGFzaXNGaWxsOjpGaWxsZWQpOwog
ICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRFbXBoYXNpc01hcmsocHJpbWl0
aXZlVmFsdWUpOwogICAgIH0KIH0KQEAgLTEyMTksMTMgKzEyMTksMTMgQEAgaW5saW5lIHZvaWQg
U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbAogewogICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUo
KS0+Y2xlYXJDdXJzb3JMaXN0KCk7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSkpIHsKLSAgICAgICAgRUN1cnNvciBjdXJzb3IgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpOworICAgICAgICBDdXJzb3JUeXBlIGN1cnNvciA9IGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgICAgIGlmIChzdHlsZVJlc29sdmVyLnN0eWxlKCktPmN1
cnNvcigpICE9IGN1cnNvcikKICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0
Q3Vyc29yKGN1cnNvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdHlsZVJlc29s
dmVyLnN0eWxlKCktPnNldEN1cnNvcihDdXJzb3JBdXRvKTsKKyAgICBzdHlsZVJlc29sdmVyLnN0
eWxlKCktPnNldEN1cnNvcihDdXJzb3JUeXBlOjpBdXRvKTsKICAgICBhdXRvJiBsaXN0ID0gZG93
bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSk7CiAgICAgZm9yIChhdXRvJiBpdGVtIDogbGlzdCkg
ewogICAgICAgICBpZiAoaXM8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZT4oaXRlbSkpIHsKQEAgLTE0MTQs
NyArMTQxNCw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWwKICAg
ICAgICAgICAgIGRpZFNldCA9IHRydWU7CiAgICAgICAgIH0gZWxzZSBpZiAoY29udGVudFZhbHVl
LmlzQXR0cigpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogQ2FuIGEgbmFtZXNwYWNlIGJlIHNw
ZWNpZmllZCBmb3IgYW4gYXR0cihmb28pPwotICAgICAgICAgICAgaWYgKHN0eWxlUmVzb2x2ZXIu
c3R5bGUoKS0+c3R5bGVUeXBlKCkgPT0gTk9QU0VVRE8pCisgICAgICAgICAgICBpZiAoc3R5bGVS
ZXNvbHZlci5zdHlsZSgpLT5zdHlsZVR5cGUoKSA9PSBQc2V1ZG9JZDo6Tm9uZSkKICAgICAgICAg
ICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEhhc0F0dHJDb250ZW50KCk7CiAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY29uc3RfY2FzdDxSZW5kZXJTdHlsZSo+KHN0
eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKSktPnNldEhhc0F0dHJDb250ZW50KCk7CkBAIC0xNDI2
LDEwICsxNDI2LDEwIEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWwK
ICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXIucnVsZVNldHMoKS5tdXRhYmxlRmVhdHVyZXMoKS5y
ZWdpc3RlckNvbnRlbnRBdHRyaWJ1dGUoYXR0ci5sb2NhbE5hbWUoKSk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoY29udGVudFZhbHVlLmlzQ291bnRlcigpKSB7CiAgICAgICAgICAgICBhdXRvKiBjb3Vu
dGVyVmFsdWUgPSBjb250ZW50VmFsdWUuY291bnRlclZhbHVlKCk7Ci0gICAgICAgICAgICBFTGlz
dFN0eWxlVHlwZSBsaXN0U3R5bGVUeXBlID0gTm9uZUxpc3RTdHlsZTsKKyAgICAgICAgICAgIExp
c3RTdHlsZVR5cGUgbGlzdFN0eWxlVHlwZSA9IExpc3RTdHlsZVR5cGU6Ok5vbmU7CiAgICAgICAg
ICAgICBDU1NWYWx1ZUlEIGxpc3RTdHlsZUlkZW50ID0gY291bnRlclZhbHVlLT5saXN0U3R5bGVJ
ZGVudCgpOwogICAgICAgICAgICAgaWYgKGxpc3RTdHlsZUlkZW50ICE9IENTU1ZhbHVlTm9uZSkK
LSAgICAgICAgICAgICAgICBsaXN0U3R5bGVUeXBlID0gc3RhdGljX2Nhc3Q8RUxpc3RTdHlsZVR5
cGU+KGxpc3RTdHlsZUlkZW50IC0gQ1NTVmFsdWVEaXNjKTsKKyAgICAgICAgICAgICAgICBsaXN0
U3R5bGVUeXBlID0gc3RhdGljX2Nhc3Q8TGlzdFN0eWxlVHlwZT4obGlzdFN0eWxlSWRlbnQgLSBD
U1NWYWx1ZURpc2MpOwogICAgICAgICAgICAgYXV0byBjb3VudGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxDb3VudGVyQ29udGVudD4oY291bnRlclZhbHVlLT5pZGVudGlmaWVyKCksIGxpc3RTdHlsZVR5
cGUsIGNvdW50ZXJWYWx1ZS0+c2VwYXJhdG9yKCkpOwogICAgICAgICAgICAgc3R5bGVSZXNvbHZl
ci5zdHlsZSgpLT5zZXRDb250ZW50KFdURk1vdmUoY291bnRlciksIGRpZFNldCk7CiAgICAgICAg
ICAgICBkaWRTZXQgPSB0cnVlOwpAQCAtMTYwMCw3ICsxNjAwLDcgQEAgaW5saW5lIGZsb2F0IFN0
eWxlQnVpbGRlckN1c3RvbTo6c21hbGxlcgogCiBpbmxpbmUgZmxvYXQgU3R5bGVCdWlsZGVyQ3Vz
dG9tOjpkZXRlcm1pbmVSdWJ5VGV4dFNpemVNdWx0aXBsaWVyKFN0eWxlUmVzb2x2ZXImIHN0eWxl
UmVzb2x2ZXIpCiB7Ci0gICAgaWYgKHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+cnVieVBvc2l0aW9u
KCkgIT0gUnVieVBvc2l0aW9uSW50ZXJDaGFyYWN0ZXIpCisgICAgaWYgKHN0eWxlUmVzb2x2ZXIu
c3R5bGUoKS0+cnVieVBvc2l0aW9uKCkgIT0gUnVieVBvc2l0aW9uOjpJbnRlckNoYXJhY3RlcikK
ICAgICAgICAgcmV0dXJuIDAuNWY7CiAKICAgICAvLyBGSVhNRTogVGhpcyBoYWNrIGlzIHRvIGVu
c3VyZSB0b25lIG1hcmtzIGFyZSB0aGUgc2FtZSBzaXplIGFzCkBAIC0xODEwLDcgKzE4MTAsNyBA
QCB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUFsdChTCiAgICAgICAgIHN0eWxl
UmVzb2x2ZXIuc3R5bGUoKS0+c2V0Q29udGVudEFsdFRleHQocHJpbWl0aXZlVmFsdWUuc3RyaW5n
VmFsdWUoKSk7CiAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUuaXNBdHRyKCkpIHsKICAgICAg
ICAgLy8gRklYTUU6IENhbiBhIG5hbWVzcGFjZSBiZSBzcGVjaWZpZWQgZm9yIGFuIGF0dHIoZm9v
KT8KLSAgICAgICAgaWYgKHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c3R5bGVUeXBlKCkgPT0gTk9Q
U0VVRE8pCisgICAgICAgIGlmIChzdHlsZVJlc29sdmVyLnN0eWxlKCktPnN0eWxlVHlwZSgpID09
IFBzZXVkb0lkOjpOb25lKQogICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRV
bmlxdWUoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29uc3RfY2FzdDxSZW5kZXJTdHls
ZSo+KHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKSktPnNldFVuaXF1ZSgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTksMTEg
KzM1OSwxMSBAQCBFbGVtZW50U3R5bGUgU3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JFbGVtCiAKICAg
ICBpZiAoZWxlbWVudC5pc0xpbmsoKSkgewogICAgICAgICBzdHlsZS5zZXRJc0xpbmsodHJ1ZSk7
Ci0gICAgICAgIEVJbnNpZGVMaW5rIGxpbmtTdGF0ZSA9IHN0YXRlLmVsZW1lbnRMaW5rU3RhdGUo
KTsKLSAgICAgICAgaWYgKGxpbmtTdGF0ZSAhPSBOb3RJbnNpZGVMaW5rKSB7CisgICAgICAgIElu
c2lkZUxpbmsgbGlua1N0YXRlID0gc3RhdGUuZWxlbWVudExpbmtTdGF0ZSgpOworICAgICAgICBp
ZiAobGlua1N0YXRlICE9IEluc2lkZUxpbms6Ok5vdEluc2lkZSkgewogICAgICAgICAgICAgYm9v
bCBmb3JjZVZpc2l0ZWQgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZvcmNlUHNldWRvU3Rh
dGUoZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVmlzaXRlZCk7CiAgICAgICAgICAg
ICBpZiAoZm9yY2VWaXNpdGVkKQotICAgICAgICAgICAgICAgIGxpbmtTdGF0ZSA9IEluc2lkZVZp
c2l0ZWRMaW5rOworICAgICAgICAgICAgICAgIGxpbmtTdGF0ZSA9IEluc2lkZUxpbms6Okluc2lk
ZVZpc2l0ZWQ7CiAgICAgICAgIH0KICAgICAgICAgc3R5bGUuc2V0SW5zaWRlTGluayhsaW5rU3Rh
dGUpOwogICAgIH0KQEAgLTY3Myw1MyArNjczLDUzIEBAIHN0YXRpYyB2b2lkIGFkZEludHJpbnNp
Y01hcmdpbnMoUmVuZGVyU3QKICAgICB9CiB9CiAKLXN0YXRpYyBFRGlzcGxheSBlcXVpdmFsZW50
QmxvY2tEaXNwbGF5KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRG9jdW1lbnQmIGRv
Y3VtZW50KQorc3RhdGljIERpc3BsYXlUeXBlIGVxdWl2YWxlbnRCbG9ja0Rpc3BsYXkoY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgc3dp
dGNoIChhdXRvIGRpc3BsYXkgPSBzdHlsZS5kaXNwbGF5KCkpIHsKLSAgICBjYXNlIEJMT0NLOgot
ICAgIGNhc2UgVEFCTEU6Ci0gICAgY2FzZSBCT1g6Ci0gICAgY2FzZSBGTEVYOgotICAgIGNhc2Ug
V0VCS0lUX0ZMRVg6Ci0gICAgY2FzZSBHUklEOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OkJsb2Nr
OgorICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OkJv
eDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpGbGV4OgorICAgIGNhc2UgRGlzcGxheVR5cGU6Oldl
YktpdEZsZXg6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6R3JpZDoKICAgICAgICAgcmV0dXJuIGRp
c3BsYXk7CiAKLSAgICBjYXNlIExJU1RfSVRFTToKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpMaXN0
SXRlbToKICAgICAgICAgLy8gSXQgaXMgYSBXaW5JRSBidWcgdGhhdCBmbG9hdGVkIGxpc3QgaXRl
bXMgbG9zZSB0aGVpciBidWxsZXRzLCBzbyB3ZSdsbCBlbXVsYXRlIHRoZSBxdWlyaywgYnV0IG9u
bHkgaW4gcXVpcmtzIG1vZGUuCiAgICAgICAgIGlmIChkb2N1bWVudC5pblF1aXJrc01vZGUoKSAm
JiBzdHlsZS5pc0Zsb2F0aW5nKCkpCi0gICAgICAgICAgICByZXR1cm4gQkxPQ0s7CisgICAgICAg
ICAgICByZXR1cm4gRGlzcGxheVR5cGU6OkJsb2NrOwogICAgICAgICByZXR1cm4gZGlzcGxheTsK
LSAgICBjYXNlIElOTElORV9UQUJMRToKLSAgICAgICAgcmV0dXJuIFRBQkxFOwotICAgIGNhc2Ug
SU5MSU5FX0JPWDoKLSAgICAgICAgcmV0dXJuIEJPWDsKLSAgICBjYXNlIElOTElORV9GTEVYOgot
ICAgIGNhc2UgV0VCS0lUX0lOTElORV9GTEVYOgotICAgICAgICByZXR1cm4gRkxFWDsKLSAgICBj
YXNlIElOTElORV9HUklEOgotICAgICAgICByZXR1cm4gR1JJRDsKLQotICAgIGNhc2UgSU5MSU5F
OgotICAgIGNhc2UgQ09NUEFDVDoKLSAgICBjYXNlIElOTElORV9CTE9DSzoKLSAgICBjYXNlIFRB
QkxFX1JPV19HUk9VUDoKLSAgICBjYXNlIFRBQkxFX0hFQURFUl9HUk9VUDoKLSAgICBjYXNlIFRB
QkxFX0ZPT1RFUl9HUk9VUDoKLSAgICBjYXNlIFRBQkxFX1JPVzoKLSAgICBjYXNlIFRBQkxFX0NP
TFVNTl9HUk9VUDoKLSAgICBjYXNlIFRBQkxFX0NPTFVNTjoKLSAgICBjYXNlIFRBQkxFX0NFTEw6
Ci0gICAgY2FzZSBUQUJMRV9DQVBUSU9OOgotICAgICAgICByZXR1cm4gQkxPQ0s7Ci0gICAgY2Fz
ZSBDT05URU5UUzoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpJbmxpbmVUYWJsZToKKyAgICAgICAg
cmV0dXJuIERpc3BsYXlUeXBlOjpUYWJsZTsKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpJbmxpbmVC
b3g6CisgICAgICAgIHJldHVybiBEaXNwbGF5VHlwZTo6Qm94OworICAgIGNhc2UgRGlzcGxheVR5
cGU6OklubGluZUZsZXg6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6V2ViS2l0SW5saW5lRmxleDoK
KyAgICAgICAgcmV0dXJuIERpc3BsYXlUeXBlOjpGbGV4OworICAgIGNhc2UgRGlzcGxheVR5cGU6
OklubGluZUdyaWQ6CisgICAgICAgIHJldHVybiBEaXNwbGF5VHlwZTo6R3JpZDsKKworICAgIGNh
c2UgRGlzcGxheVR5cGU6OklubGluZToKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpDb21wYWN0Ogor
ICAgIGNhc2UgRGlzcGxheVR5cGU6OklubGluZUJsb2NrOgorICAgIGNhc2UgRGlzcGxheVR5cGU6
OlRhYmxlUm93R3JvdXA6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFibGVIZWFkZXJHcm91cDoK
KyAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZUZvb3Rlckdyb3VwOgorICAgIGNhc2UgRGlzcGxh
eVR5cGU6OlRhYmxlUm93OgorICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlQ29sdW1uR3JvdXA6
CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1bW46CisgICAgY2FzZSBEaXNwbGF5VHlw
ZTo6VGFibGVDZWxsOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlQ2FwdGlvbjoKKyAgICAg
ICAgcmV0dXJuIERpc3BsYXlUeXBlOjpCbG9jazsKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpDb250
ZW50czoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBDT05U
RU5UUzsKLSAgICBjYXNlIE5PTkU6CisgICAgICAgIHJldHVybiBEaXNwbGF5VHlwZTo6Q29udGVu
dHM7CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6Tm9uZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgIHJldHVybiBOT05FOworICAgICAgICByZXR1cm4gRGlzcGxheVR5cGU6
Ok5vbmU7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBCTE9D
SzsKKyAgICByZXR1cm4gRGlzcGxheVR5cGU6OkJsb2NrOwogfQogCiAvLyBDU1MgcmVxdWlyZXMg
dGV4dC1kZWNvcmF0aW9uIHRvIGJlIHJlc2V0IGF0IGVhY2ggRE9NIGVsZW1lbnQgZm9yIHRhYmxl
cywgCkBAIC03MjcsOCArNzI3LDggQEAgc3RhdGljIEVEaXNwbGF5IGVxdWl2YWxlbnRCbG9ja0Rp
c3BsYXkoYwogLy8gYW5kIGFic29sdXRlIG9yIHJlbGF0aXZlbHkgcG9zaXRpb25lZCBlbGVtZW50
cy4KIHN0YXRpYyBib29sIGRvZXNOb3RJbmhlcml0VGV4dERlY29yYXRpb24oY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlLCBjb25zdCBFbGVtZW50KiBlbGVtZW50KQogewotICAgIHJldHVybiBzdHls
ZS5kaXNwbGF5KCkgPT0gVEFCTEUgfHwgc3R5bGUuZGlzcGxheSgpID09IElOTElORV9UQUJMRQot
ICAgICAgICB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gSU5MSU5FX0JMT0NLIHx8IHN0eWxlLmRpc3Bs
YXkoKSA9PSBJTkxJTkVfQk9YIHx8IChlbGVtZW50ICYmIGlzQXRTaGFkb3dCb3VuZGFyeSgqZWxl
bWVudCkpCisgICAgcmV0dXJuIHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGUg
fHwgc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpJbmxpbmVUYWJsZQorICAgICAgICB8
fCBzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OklubGluZUJsb2NrIHx8IHN0eWxlLmRp
c3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lQm94IHx8IChlbGVtZW50ICYmIGlzQXRTaGFk
b3dCb3VuZGFyeSgqZWxlbWVudCkpCiAgICAgICAgIHx8IHN0eWxlLmlzRmxvYXRpbmcoKSB8fCBz
dHlsZS5oYXNPdXRPZkZsb3dQb3NpdGlvbigpOwogfQogCkBAIC03NDIsOSArNzQyLDkgQEAgc3Rh
dGljIGJvb2wgaXNTY3JvbGxhYmxlT3ZlcmZsb3coT3ZlcmZsbwogdm9pZCBTdHlsZVJlc29sdmVy
OjphZGp1c3RTdHlsZUZvckludGVyQ2hhcmFjdGVyUnVieSgpCiB7CiAgICAgUmVuZGVyU3R5bGUq
IHN0eWxlID0gbV9zdGF0ZS5zdHlsZSgpOwotICAgIGlmIChzdHlsZS0+cnVieVBvc2l0aW9uKCkg
IT0gUnVieVBvc2l0aW9uSW50ZXJDaGFyYWN0ZXIgfHwgIW1fc3RhdGUuZWxlbWVudCgpIHx8ICFt
X3N0YXRlLmVsZW1lbnQoKS0+aGFzVGFnTmFtZShydFRhZykpCisgICAgaWYgKHN0eWxlLT5ydWJ5
UG9zaXRpb24oKSAhPSBSdWJ5UG9zaXRpb246OkludGVyQ2hhcmFjdGVyIHx8ICFtX3N0YXRlLmVs
ZW1lbnQoKSB8fCAhbV9zdGF0ZS5lbGVtZW50KCktPmhhc1RhZ05hbWUocnRUYWcpKQogICAgICAg
ICByZXR1cm47Ci0gICAgc3R5bGUtPnNldFRleHRBbGlnbihDRU5URVIpOworICAgIHN0eWxlLT5z
ZXRUZXh0QWxpZ24oVGV4dEFsaWduTW9kZTo6Q2VudGVyKTsKICAgICBpZiAoc3R5bGUtPmlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkpCiAgICAgICAgIHN0eWxlLT5zZXRXcml0aW5nTW9kZShMZWZ0
VG9SaWdodFdyaXRpbmdNb2RlKTsKIH0KQEAgLTc5NiwyMCArNzk2LDIwIEBAIHN0YXRpYyB2b2lk
IGFkanVzdERpc3BsYXlDb250ZW50c1N0eWxlKFIKIHsKICAgICBib29sIGRpc3BsYXlDb250ZW50
c0VuYWJsZWQgPSBpczxIVE1MU2xvdEVsZW1lbnQ+KGVsZW1lbnQpIHx8IFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZGlzcGxheUNvbnRlbnRzRW5hYmxlZCgpOwogICAg
IGlmICghZGlzcGxheUNvbnRlbnRzRW5hYmxlZCkgewotICAgICAgICBzdHlsZS5zZXREaXNwbGF5
KElOTElORSk7CisgICAgICAgIHN0eWxlLnNldERpc3BsYXkoRGlzcGxheVR5cGU6OklubGluZSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKCFlbGVtZW50KSB7Ci0gICAgICAgIGlm
IChzdHlsZS5zdHlsZVR5cGUoKSAhPSBCRUZPUkUgJiYgc3R5bGUuc3R5bGVUeXBlKCkgIT0gQUZU
RVIpCi0gICAgICAgICAgICBzdHlsZS5zZXREaXNwbGF5KE5PTkUpOworICAgICAgICBpZiAoc3R5
bGUuc3R5bGVUeXBlKCkgIT0gUHNldWRvSWQ6OkJlZm9yZSAmJiBzdHlsZS5zdHlsZVR5cGUoKSAh
PSBQc2V1ZG9JZDo6QWZ0ZXIpCisgICAgICAgICAgICBzdHlsZS5zZXREaXNwbGF5KERpc3BsYXlU
eXBlOjpOb25lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoZWxlbWVudC0+ZG9j
dW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKSA9PSBlbGVtZW50KSB7Ci0gICAgICAgIHN0eWxlLnNl
dERpc3BsYXkoQkxPQ0spOworICAgICAgICBzdHlsZS5zZXREaXNwbGF5KERpc3BsYXlUeXBlOjpC
bG9jayk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGhhc0VmZmVjdGl2ZURpc3Bs
YXlOb25lRm9yRGlzcGxheUNvbnRlbnRzKCplbGVtZW50KSkKLSAgICAgICAgc3R5bGUuc2V0RGlz
cGxheShOT05FKTsKKyAgICAgICAgc3R5bGUuc2V0RGlzcGxheShEaXNwbGF5VHlwZTo6Tm9uZSk7
CiB9CiAKIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRqdXN0U1ZHRWxlbWVudFN0eWxlKGNvbnN0IFNW
R0VsZW1lbnQmIHN2Z0VsZW1lbnQsIFJlbmRlclN0eWxlJiBzdHlsZSkKQEAgLTgyNiw3ICs4MjYs
NyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkanVzdFNWR0VsZW1lbnRTdHlsCiAKICAgICAvLyBT
VkcgdGV4dCBsYXlvdXQgY29kZSBleHBlY3RzIHVzIHRvIGJlIGEgYmxvY2stbGV2ZWwgc3R5bGUg
ZWxlbWVudC4KICAgICBpZiAoKHN2Z0VsZW1lbnQuaGFzVGFnTmFtZShTVkdOYW1lczo6Zm9yZWln
bk9iamVjdFRhZykgfHwgc3ZnRWxlbWVudC5oYXNUYWdOYW1lKFNWR05hbWVzOjp0ZXh0VGFnKSkg
JiYgc3R5bGUuaXNEaXNwbGF5SW5saW5lVHlwZSgpKQotICAgICAgICBzdHlsZS5zZXREaXNwbGF5
KEJMT0NLKTsKKyAgICAgICAgc3R5bGUuc2V0RGlzcGxheShEaXNwbGF5VHlwZTo6QmxvY2spOwog
fQogCiB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0eWxlKFJlbmRlclN0eWxlJiBz
dHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSog
cGFyZW50Qm94U3R5bGUsIGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCkBAIC04MzksMTAgKzgzOSwx
MCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0eWxlKFJlCiAgICAgLy8gQ2Fj
aGUgb3VyIG9yaWdpbmFsIGRpc3BsYXkuCiAgICAgc3R5bGUuc2V0T3JpZ2luYWxEaXNwbGF5KHN0
eWxlLmRpc3BsYXkoKSk7CiAKLSAgICBpZiAoc3R5bGUuZGlzcGxheSgpID09IENPTlRFTlRTKQor
ICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OkNvbnRlbnRzKQogICAgICAg
ICBhZGp1c3REaXNwbGF5Q29udGVudHNTdHlsZShzdHlsZSwgZWxlbWVudCk7CiAKLSAgICBpZiAo
c3R5bGUuZGlzcGxheSgpICE9IE5PTkUgJiYgc3R5bGUuZGlzcGxheSgpICE9IENPTlRFTlRTKSB7
CisgICAgaWYgKHN0eWxlLmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Tm9uZSAmJiBzdHlsZS5k
aXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6OkNvbnRlbnRzKSB7CiAgICAgICAgIGlmIChlbGVtZW50
KSB7CiAgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgPHRkPiB0aGF0IHNwZWNpZmllcyBhIGZs
b2F0IHByb3BlcnR5LCBpbiBxdWlya3MgbW9kZSB3ZSBqdXN0IGRyb3AgdGhlIGZsb2F0CiAgICAg
ICAgICAgICAvLyBwcm9wZXJ0eS4KQEAgLTg1MCwzMyArODUwLDMzIEBAIHZvaWQgU3R5bGVSZXNv
bHZlcjo6YWRqdXN0UmVuZGVyU3R5bGUoUmUKICAgICAgICAgICAgIC8vIHRoZXNlIHRhZ3MgdG8g
cmV0YWluIHRoZWlyIGRpc3BsYXkgdHlwZXMuCiAgICAgICAgICAgICBpZiAoZG9jdW1lbnQoKS5p
blF1aXJrc01vZGUoKSkgewogICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1l
KHRkVGFnKSkgewotICAgICAgICAgICAgICAgICAgICBzdHlsZS5zZXREaXNwbGF5KFRBQkxFX0NF
TEwpOworICAgICAgICAgICAgICAgICAgICBzdHlsZS5zZXREaXNwbGF5KERpc3BsYXlUeXBlOjpU
YWJsZUNlbGwpOwogICAgICAgICAgICAgICAgICAgICBzdHlsZS5zZXRGbG9hdGluZyhGbG9hdDo6
Tm8pOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXM8SFRNTFRhYmxlRWxlbWVudD4oKmVs
ZW1lbnQpKQotICAgICAgICAgICAgICAgICAgICBzdHlsZS5zZXREaXNwbGF5KHN0eWxlLmlzRGlz
cGxheUlubGluZVR5cGUoKSA/IElOTElORV9UQUJMRSA6IFRBQkxFKTsKKyAgICAgICAgICAgICAg
ICAgICAgc3R5bGUuc2V0RGlzcGxheShzdHlsZS5pc0Rpc3BsYXlJbmxpbmVUeXBlKCkgPyBEaXNw
bGF5VHlwZTo6SW5saW5lVGFibGUgOiBEaXNwbGF5VHlwZTo6VGFibGUpOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZSh0ZFRhZykgfHwgZWxlbWVu
dC0+aGFzVGFnTmFtZSh0aFRhZykpIHsKLSAgICAgICAgICAgICAgICBpZiAoc3R5bGUud2hpdGVT
cGFjZSgpID09IEtIVE1MX05PV1JBUCkgeworICAgICAgICAgICAgICAgIGlmIChzdHlsZS53aGl0
ZVNwYWNlKCkgPT0gV2hpdGVTcGFjZTo6S0hUTUxOb1dyYXApIHsKICAgICAgICAgICAgICAgICAg
ICAgLy8gRmlndXJlIG91dCBpZiB3ZSBhcmUgcmVhbGx5IG5vd3JhcHBpbmcgb3IgaWYgd2Ugc2hv
dWxkIGp1c3QKICAgICAgICAgICAgICAgICAgICAgLy8gdXNlIG5vcm1hbCBpbnN0ZWFkLiBJZiB0
aGUgd2lkdGggb2YgdGhlIGNlbGwgaXMgZml4ZWQsIHRoZW4KLSAgICAgICAgICAgICAgICAgICAg
Ly8gd2UgZG9uJ3QgYWN0dWFsbHkgdXNlIE5PV1JBUC4KKyAgICAgICAgICAgICAgICAgICAgLy8g
d2UgZG9uJ3QgYWN0dWFsbHkgdXNlIFdoaXRlU3BhY2U6Ok5vV3JhcC4KICAgICAgICAgICAgICAg
ICAgICAgaWYgKHN0eWxlLndpZHRoKCkuaXNGaXhlZCgpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgc3R5bGUuc2V0V2hpdGVTcGFjZShOT1JNQUwpOworICAgICAgICAgICAgICAgICAgICAgICAg
c3R5bGUuc2V0V2hpdGVTcGFjZShXaGl0ZVNwYWNlOjpOb3JtYWwpOwogICAgICAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS5zZXRXaGl0ZVNwYWNlKE5P
V1JBUCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS5zZXRXaGl0ZVNwYWNlKFdoaXRl
U3BhY2U6Ok5vV3JhcCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAvLyBUYWJsZXMgbmV2ZXIgc3VwcG9ydCB0aGUgLXdlYmtpdC0qIHZhbHVlcyBmb3Ig
dGV4dC1hbGlnbiBhbmQgd2lsbCByZXNldCBiYWNrIHRvIHRoZSBkZWZhdWx0LgotICAgICAgICAg
ICAgaWYgKGlzPEhUTUxUYWJsZUVsZW1lbnQ+KCplbGVtZW50KSAmJiAoc3R5bGUudGV4dEFsaWdu
KCkgPT0gV0VCS0lUX0xFRlQgfHwgc3R5bGUudGV4dEFsaWduKCkgPT0gV0VCS0lUX0NFTlRFUiB8
fCBzdHlsZS50ZXh0QWxpZ24oKSA9PSBXRUJLSVRfUklHSFQpKQotICAgICAgICAgICAgICAgIHN0
eWxlLnNldFRleHRBbGlnbihUQVNUQVJUKTsKKyAgICAgICAgICAgIGlmIChpczxIVE1MVGFibGVF
bGVtZW50PigqZWxlbWVudCkgJiYgKHN0eWxlLnRleHRBbGlnbigpID09IFRleHRBbGlnbk1vZGU6
OldlYktpdExlZnQgfHwgc3R5bGUudGV4dEFsaWduKCkgPT0gVGV4dEFsaWduTW9kZTo6V2ViS2l0
Q2VudGVyIHx8IHN0eWxlLnRleHRBbGlnbigpID09IFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0
KSkKKyAgICAgICAgICAgICAgICBzdHlsZS5zZXRUZXh0QWxpZ24oVGV4dEFsaWduTW9kZTo6U3Rh
cnQpOwogCiAgICAgICAgICAgICAvLyBGcmFtZXMgYW5kIGZyYW1lc2V0cyBuZXZlciBob25vciBw
b3NpdGlvbjpyZWxhdGl2ZSBvciBwb3NpdGlvbjphYnNvbHV0ZS4gVGhpcyBpcyBuZWNlc3Nhcnkg
dG8KICAgICAgICAgICAgIC8vIGZpeCBhIGNyYXNoIHdoZXJlIGEgc2l0ZSB0cmllcyB0byBwb3Np
dGlvbiB0aGVzZSBvYmplY3RzLiBUaGV5IGFsc28gbmV2ZXIgaG9ub3IgZGlzcGxheS4KICAgICAg
ICAgICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKGZyYW1lVGFnKSB8fCBlbGVtZW50LT5oYXNU
YWdOYW1lKGZyYW1lc2V0VGFnKSkgewogICAgICAgICAgICAgICAgIHN0eWxlLnNldFBvc2l0aW9u
KFBvc2l0aW9uVHlwZTo6U3RhdGljKTsKLSAgICAgICAgICAgICAgICBzdHlsZS5zZXREaXNwbGF5
KEJMT0NLKTsKKyAgICAgICAgICAgICAgICBzdHlsZS5zZXREaXNwbGF5KERpc3BsYXlUeXBlOjpC
bG9jayk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIFJ1YnkgdGV4dCBkb2VzIG5v
dCBzdXBwb3J0IGZsb2F0IG9yIHBvc2l0aW9uLiBUaGlzIG1pZ2h0IGNoYW5nZSB3aXRoIGV2b2x1
dGlvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbi4KQEAgLTg5MCwxMCArODkwLDEwIEBAIHZvaWQgU3R5
bGVSZXNvbHZlcjo6YWRqdXN0UmVuZGVyU3R5bGUoUmUKICAgICAgICAgICAgIC8vIGp1c3QgYSBz
aW5nbGUgZGVjbGFyYXRpb24gdGhhdCBzZXRzIHRoZSAndGV4dC1hbGlnbicgcHJvcGVydHkgdG8g
dGhlIHZhbHVlICdjZW50ZXInLgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hh
dHdnLm9yZy9tdWx0aXBhZ2UvcmVuZGVyaW5nLmh0bWwjcmVuZGVyaW5nCiAgICAgICAgICAgICBp
ZiAoZWxlbWVudC0+aGFzVGFnTmFtZSh0aFRhZykgJiYgIXN0eWxlLmhhc0V4cGxpY2l0bHlTZXRU
ZXh0QWxpZ24oKSAmJiBwYXJlbnRTdHlsZS50ZXh0QWxpZ24oKSA9PSBSZW5kZXJTdHlsZTo6aW5p
dGlhbFRleHRBbGlnbigpKQotICAgICAgICAgICAgICAgIHN0eWxlLnNldFRleHRBbGlnbihDRU5U
RVIpOworICAgICAgICAgICAgICAgIHN0eWxlLnNldFRleHRBbGlnbihUZXh0QWxpZ25Nb2RlOjpD
ZW50ZXIpOwogCiAgICAgICAgICAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShsZWdlbmRUYWcp
KQotICAgICAgICAgICAgICAgIHN0eWxlLnNldERpc3BsYXkoQkxPQ0spOworICAgICAgICAgICAg
ICAgIHN0eWxlLnNldERpc3BsYXkoRGlzcGxheVR5cGU6OkJsb2NrKTsKICAgICAgICAgfQogCiAg
ICAgICAgIC8vIEFic29sdXRlL2ZpeGVkIHBvc2l0aW9uZWQgZWxlbWVudHMsIGZsb2F0aW5nIGVs
ZW1lbnRzIGFuZCB0aGUgZG9jdW1lbnQgZWxlbWVudCBuZWVkIGJsb2NrLWxpa2Ugb3V0c2lkZSBk
aXNwbGF5LgpAQCAtOTAyLDI4ICs5MDIsMjggQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphZGp1c3RS
ZW5kZXJTdHlsZShSZQogCiAgICAgICAgIC8vIEZJWE1FOiBEb24ndCBzdXBwb3J0IHRoaXMgbXV0
YXRpb24gZm9yIHBzZXVkbyBzdHlsZXMgbGlrZSBmaXJzdC1sZXR0ZXIgb3IgZmlyc3QtbGluZSwg
c2luY2UgaXQncyBub3QgY29tcGxldGVseQogICAgICAgICAvLyBjbGVhciBob3cgdGhhdCBzaG91
bGQgd29yay4KLSAgICAgICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBJTkxJTkUgJiYgc3R5bGUu
c3R5bGVUeXBlKCkgPT0gTk9QU0VVRE8gJiYgc3R5bGUud3JpdGluZ01vZGUoKSAhPSBwYXJlbnRT
dHlsZS53cml0aW5nTW9kZSgpKQotICAgICAgICAgICAgc3R5bGUuc2V0RGlzcGxheShJTkxJTkVf
QkxPQ0spOworICAgICAgICBpZiAoc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpJbmxp
bmUgJiYgc3R5bGUuc3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6Ok5vbmUgJiYgc3R5bGUud3JpdGlu
Z01vZGUoKSAhPSBwYXJlbnRTdHlsZS53cml0aW5nTW9kZSgpKQorICAgICAgICAgICAgc3R5bGUu
c2V0RGlzcGxheShEaXNwbGF5VHlwZTo6SW5saW5lQmxvY2spOwogCiAgICAgICAgIC8vIEFmdGVy
IHBlcmZvcm1pbmcgdGhlIGRpc3BsYXkgbXV0YXRpb24sIGNoZWNrIHRhYmxlIHJvd3MuIFdlIGRv
IG5vdCBob25vciBwb3NpdGlvbjpyZWxhdGl2ZSBvciBwb3NpdGlvbjpzdGlja3kgb24KICAgICAg
ICAgLy8gdGFibGUgcm93cyBvciBjZWxscy4gVGhpcyBoYXMgYmVlbiBlc3RhYmxpc2hlZCBmb3Ig
cG9zaXRpb246cmVsYXRpdmUgaW4gQ1NTMi4xIChhbmQgY2F1c2VkIGEgY3Jhc2ggaW4gY29udGFp
bmluZ0Jsb2NrKCkKICAgICAgICAgLy8gb24gc29tZSBzaXRlcykuCi0gICAgICAgIGlmICgoc3R5
bGUuZGlzcGxheSgpID09IFRBQkxFX0hFQURFUl9HUk9VUCB8fCBzdHlsZS5kaXNwbGF5KCkgPT0g
VEFCTEVfUk9XX0dST1VQCi0gICAgICAgICAgICB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gVEFCTEVf
Rk9PVEVSX0dST1VQIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBUQUJMRV9ST1cpCisgICAgICAgIGlm
ICgoc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpUYWJsZUhlYWRlckdyb3VwIHx8IHN0
eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGVSb3dHcm91cAorICAgICAgICAgICAg
fHwgc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpUYWJsZUZvb3Rlckdyb3VwIHx8IHN0
eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGVSb3cpCiAgICAgICAgICAgICAmJiBz
dHlsZS5wb3NpdGlvbigpID09IFBvc2l0aW9uVHlwZTo6UmVsYXRpdmUpCiAgICAgICAgICAgICBz
dHlsZS5zZXRQb3NpdGlvbihQb3NpdGlvblR5cGU6OlN0YXRpYyk7CiAKICAgICAgICAgLy8gd3Jp
dGluZy1tb2RlIGRvZXMgbm90IGFwcGx5IHRvIHRhYmxlIHJvdyBncm91cHMsIHRhYmxlIGNvbHVt
biBncm91cHMsIHRhYmxlIHJvd3MsIGFuZCB0YWJsZSBjb2x1bW5zLgogICAgICAgICAvLyBGSVhN
RTogVGFibGUgY2VsbHMgc2hvdWxkIGJlIGFsbG93ZWQgdG8gYmUgcGVycGVuZGljdWxhciBvciBm
bGlwcGVkIHdpdGggcmVzcGVjdCB0byB0aGUgdGFibGUsIHRob3VnaC4KLSAgICAgICAgaWYgKHN0
eWxlLmRpc3BsYXkoKSA9PSBUQUJMRV9DT0xVTU4gfHwgc3R5bGUuZGlzcGxheSgpID09IFRBQkxF
X0NPTFVNTl9HUk9VUCB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gVEFCTEVfRk9PVEVSX0dST1VQCi0g
ICAgICAgICAgICB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gVEFCTEVfSEVBREVSX0dST1VQIHx8IHN0
eWxlLmRpc3BsYXkoKSA9PSBUQUJMRV9ST1cgfHwgc3R5bGUuZGlzcGxheSgpID09IFRBQkxFX1JP
V19HUk9VUAotICAgICAgICAgICAgfHwgc3R5bGUuZGlzcGxheSgpID09IFRBQkxFX0NFTEwpCisg
ICAgICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxlQ29sdW1uIHx8
IHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1bW5Hcm91cCB8fCBzdHls
ZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxlRm9vdGVyR3JvdXAKKyAgICAgICAgICAg
IHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGVIZWFkZXJHcm91cCB8fCBz
dHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxlUm93IHx8IHN0eWxlLmRpc3BsYXko
KSA9PSBEaXNwbGF5VHlwZTo6VGFibGVSb3dHcm91cAorICAgICAgICAgICAgfHwgc3R5bGUuZGlz
cGxheSgpID09IERpc3BsYXlUeXBlOjpUYWJsZUNlbGwpCiAgICAgICAgICAgICBzdHlsZS5zZXRX
cml0aW5nTW9kZShwYXJlbnRTdHlsZS53cml0aW5nTW9kZSgpKTsKIAogICAgICAgICAvLyBGSVhN
RTogU2luY2Ugd2UgZG9uJ3Qgc3VwcG9ydCBibG9jay1mbG93IG9uIGZsZXhpYmxlIGJveGVzIHll
dCwgZGlzYWxsb3cgc2V0dGluZwogICAgICAgICAvLyBvZiBibG9jay1mbG93IHRvIGFueXRoaW5n
IG90aGVyIHRoYW4gVG9wVG9Cb3R0b21Xcml0aW5nTW9kZS4KICAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2NDE4IC0gRmxleGlibGUgYm94IHN1cHBv
cnQuCi0gICAgICAgIGlmIChzdHlsZS53cml0aW5nTW9kZSgpICE9IFRvcFRvQm90dG9tV3JpdGlu
Z01vZGUgJiYgKHN0eWxlLmRpc3BsYXkoKSA9PSBCT1ggfHwgc3R5bGUuZGlzcGxheSgpID09IElO
TElORV9CT1gpKQorICAgICAgICBpZiAoc3R5bGUud3JpdGluZ01vZGUoKSAhPSBUb3BUb0JvdHRv
bVdyaXRpbmdNb2RlICYmIChzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OkJveCB8fCBz
dHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OklubGluZUJveCkpCiAgICAgICAgICAgICBz
dHlsZS5zZXRXcml0aW5nTW9kZShUb3BUb0JvdHRvbVdyaXRpbmdNb2RlKTsKIAogICAgICAgICAv
LyBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLWRpc3BsYXkvI3RyYW5zZm9ybWF0aW9ucwpAQCAt
OTc5LDggKzk3OSw4IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRqdXN0UmVuZGVyU3R5bGUoUmUK
ICAgICAgICAgICAgIGJvb2wgaXNWZXJ0aWNhbCA9IHN0eWxlLm1hcnF1ZWVEaXJlY3Rpb24oKSA9
PSBNYXJxdWVlRGlyZWN0aW9uOjpVcCB8fCBzdHlsZS5tYXJxdWVlRGlyZWN0aW9uKCkgPT0gTWFy
cXVlZURpcmVjdGlvbjo6RG93bjsKICAgICAgICAgICAgIC8vIE1ha2UgaG9yaXpvbnRhbCBtYXJx
dWVlcyBub3Qgd3JhcC4KICAgICAgICAgICAgIGlmICghaXNWZXJ0aWNhbCkgewotICAgICAgICAg
ICAgICAgIHN0eWxlLnNldFdoaXRlU3BhY2UoTk9XUkFQKTsKLSAgICAgICAgICAgICAgICBzdHls
ZS5zZXRUZXh0QWxpZ24oVEFTVEFSVCk7CisgICAgICAgICAgICAgICAgc3R5bGUuc2V0V2hpdGVT
cGFjZShXaGl0ZVNwYWNlOjpOb1dyYXApOworICAgICAgICAgICAgICAgIHN0eWxlLnNldFRleHRB
bGlnbihUZXh0QWxpZ25Nb2RlOjpTdGFydCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAv
LyBBcHBhcmVudGx5IHRoaXMgaXMgdGhlIGV4cGVjdGVkIGxlZ2FjeSBiZWhhdmlvci4KICAgICAg
ICAgICAgIGlmIChpc1ZlcnRpY2FsICYmIHN0eWxlLmhlaWdodCgpLmlzQXV0bygpKQpAQCAtMTAx
MCw4ICsxMDEwLDggQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphZGp1c3RSZW5kZXJTdHlsZShSZQog
CiAgICAgLy8gVGFibGUgcm93cywgc2VjdGlvbnMgYW5kIHRoZSB0YWJsZSBpdHNlbGYgd2lsbCBz
dXBwb3J0IG92ZXJmbG93OmhpZGRlbiBhbmQgd2lsbCBpZ25vcmUgc2Nyb2xsL2F1dG8uCiAgICAg
Ly8gRklYTUU6IEV2ZW50dWFsbHkgdGFibGUgc2VjdGlvbnMgd2lsbCBzdXBwb3J0IGF1dG8gYW5k
IHNjcm9sbC4KLSAgICBpZiAoc3R5bGUuZGlzcGxheSgpID09IFRBQkxFIHx8IHN0eWxlLmRpc3Bs
YXkoKSA9PSBJTkxJTkVfVEFCTEUKLSAgICAgICAgfHwgc3R5bGUuZGlzcGxheSgpID09IFRBQkxF
X1JPV19HUk9VUCB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gVEFCTEVfUk9XKSB7CisgICAgaWYgKHN0
eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGUgfHwgc3R5bGUuZGlzcGxheSgpID09
IERpc3BsYXlUeXBlOjpJbmxpbmVUYWJsZQorICAgICAgICB8fCBzdHlsZS5kaXNwbGF5KCkgPT0g
RGlzcGxheVR5cGU6OlRhYmxlUm93R3JvdXAgfHwgc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlU
eXBlOjpUYWJsZVJvdykgewogICAgICAgICBpZiAoc3R5bGUub3ZlcmZsb3dYKCkgIT0gT3ZlcmZs
b3c6OlZpc2libGUgJiYgc3R5bGUub3ZlcmZsb3dYKCkgIT0gT3ZlcmZsb3c6OkhpZGRlbikKICAg
ICAgICAgICAgIHN0eWxlLnNldE92ZXJmbG93WChPdmVyZmxvdzo6VmlzaWJsZSk7CiAgICAgICAg
IGlmIChzdHlsZS5vdmVyZmxvd1koKSAhPSBPdmVyZmxvdzo6VmlzaWJsZSAmJiBzdHlsZS5vdmVy
Zmxvd1koKSAhPSBPdmVyZmxvdzo6SGlkZGVuKQpAQCAtMTA1Miw3ICsxMDUyLDcgQEAgdm9pZCBT
dHlsZVJlc29sdmVyOjphZGp1c3RSZW5kZXJTdHlsZShSZQogICAgICAgICBSZW5kZXJUaGVtZTo6
c2luZ2xldG9uKCkuYWRqdXN0U3R5bGUoKnRoaXMsIHN0eWxlLCBlbGVtZW50LCBtX3N0YXRlLmhh
c1VBQXBwZWFyYW5jZSgpLCBtX3N0YXRlLmJvcmRlckRhdGEoKSwgbV9zdGF0ZS5iYWNrZ3JvdW5k
RGF0YSgpLCBtX3N0YXRlLmJhY2tncm91bmRDb2xvcigpKTsKIAogICAgIC8vIElmIHdlIGhhdmUg
Zmlyc3QtbGV0dGVyIHBzZXVkbyBzdHlsZSwgZG8gbm90IHNoYXJlIHRoaXMgc3R5bGUuCi0gICAg
aWYgKHN0eWxlLmhhc1BzZXVkb1N0eWxlKEZJUlNUX0xFVFRFUikpCisgICAgaWYgKHN0eWxlLmhh
c1BzZXVkb1N0eWxlKFBzZXVkb0lkOjpGaXJzdExldHRlcikpCiAgICAgICAgIHN0eWxlLnNldFVu
aXF1ZSgpOwogCiAgICAgLy8gRklYTUU6IHdoZW4gZHJvcHBpbmcgdGhlIC13ZWJraXQgcHJlZml4
IG9uIHRyYW5zZm9ybS1zdHlsZSwgd2Ugc2hvdWxkIGFsc28gaGF2ZSBvcGFjaXR5IDwgMSBjYXVz
ZSBmbGF0dGVuaW5nLgpAQCAtMTExMiw3ICsxMTEyLDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjp1
cGRhdGVGb250KCkKIAogVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiBTdHlsZVJlc29sdmVyOjpz
dHlsZVJ1bGVzRm9yRWxlbWVudChjb25zdCBFbGVtZW50KiBlbGVtZW50LCB1bnNpZ25lZCBydWxl
c1RvSW5jbHVkZSkKIHsKLSAgICByZXR1cm4gcHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoZWxl
bWVudCwgTk9QU0VVRE8sIHJ1bGVzVG9JbmNsdWRlKTsKKyAgICByZXR1cm4gcHNldWRvU3R5bGVS
dWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgUHNldWRvSWQ6Ok5vbmUsIHJ1bGVzVG9JbmNsdWRlKTsK
IH0KIAogVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiBTdHlsZVJlc29sdmVyOjpwc2V1ZG9TdHls
ZVJ1bGVzRm9yRWxlbWVudChjb25zdCBFbGVtZW50KiBlbGVtZW50LCBQc2V1ZG9JZCBwc2V1ZG9J
ZCwgdW5zaWduZWQgcnVsZXNUb0luY2x1ZGUpCkBAIC0xMjc5LDcgKzEyNzksNyBAQCBzdGF0aWMg
Ym9vbCBpc0NhY2hlYWJsZUluTWF0Y2hlZFByb3BlcnRpCiAgICAgaWYgKCZlbGVtZW50ID09IGVs
ZW1lbnQuZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIC8vIGNvbnRlbnQ6YXR0cigpIHZhbHVlIGRlcGVuZHMgb24gdGhlIGVsZW1lbnQgaXQg
aXMgYmVpbmcgYXBwbGllZCB0by4KLSAgICBpZiAoc3R5bGUtPmhhc0F0dHJDb250ZW50KCkgfHwg
KHN0eWxlLT5zdHlsZVR5cGUoKSAhPSBOT1BTRVVETyAmJiBwYXJlbnRTdHlsZS0+aGFzQXR0ckNv
bnRlbnQoKSkpCisgICAgaWYgKHN0eWxlLT5oYXNBdHRyQ29udGVudCgpIHx8IChzdHlsZS0+c3R5
bGVUeXBlKCkgIT0gUHNldWRvSWQ6Ok5vbmUgJiYgcGFyZW50U3R5bGUtPmhhc0F0dHJDb250ZW50
KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKHN0eWxlLT5oYXNBcHBlYXJhbmNl
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzMzksNyArMTMzOSw3IEBAIHZvaWQgU3R5
bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJvcGVydGkKICAgICAgICAgLy8gZWxlbWVudCBjb250
ZXh0LiBUaGlzIGlzIGZhc3QgYW5kIHNhdmVzIG1lbW9yeSBieSByZXVzaW5nIHRoZSBzdHlsZSBk
YXRhIHN0cnVjdHVyZXMuCiAgICAgICAgIHN0YXRlLnN0eWxlKCktPmNvcHlOb25Jbmhlcml0ZWRG
cm9tKCpjYWNoZUl0ZW0tPnJlbmRlclN0eWxlKTsKICAgICAgICAgaWYgKHN0YXRlLnBhcmVudFN0
eWxlKCktPmluaGVyaXRlZERhdGFTaGFyZWQoY2FjaGVJdGVtLT5wYXJlbnRSZW5kZXJTdHlsZS5n
ZXQoKSkgJiYgIWlzQXRTaGFkb3dCb3VuZGFyeShlbGVtZW50KSkgewotICAgICAgICAgICAgRUlu
c2lkZUxpbmsgbGlua1N0YXR1cyA9IHN0YXRlLnN0eWxlKCktPmluc2lkZUxpbmsoKTsKKyAgICAg
ICAgICAgIEluc2lkZUxpbmsgbGlua1N0YXR1cyA9IHN0YXRlLnN0eWxlKCktPmluc2lkZUxpbmso
KTsKICAgICAgICAgICAgIC8vIElmIHRoZSBjYWNoZSBpdGVtIHBhcmVudCBzdHlsZSBoYXMgaWRl
bnRpY2FsIGluaGVyaXRlZCBwcm9wZXJ0aWVzIHRvIHRoZSBjdXJyZW50IHBhcmVudCBzdHlsZSB0
aGVuIHRoZQogICAgICAgICAgICAgLy8gcmVzdWx0aW5nIHN0eWxlIHdpbGwgYmUgaWRlbnRpY2Fs
IHRvby4gV2UgY29weSB0aGUgaW5oZXJpdGVkIHByb3BlcnRpZXMgb3ZlciBmcm9tIHRoZSBjYWNo
ZSBhbmQgYXJlIGRvbmUuCiAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5pbmhlcml0RnJvbSgq
Y2FjaGVJdGVtLT5yZW5kZXJTdHlsZSk7CkBAIC0yMjM3LDcgKzIyMzcsNyBAQCB2b2lkIFN0eWxl
UmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6CiAgICAgICAgIHJlc29sdmVyLmFwcGx5UHJv
cGVydHkoaWQsIGNzc1ZhbHVlW1NlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hEZWZhdWx0XSwgU2VsZWN0
b3JDaGVja2VyOjpNYXRjaERlZmF1bHQsIG1hdGNoUmVzdWx0KTsKICAgICB9CiAKLSAgICBpZiAo
c3RhdGUuc3R5bGUoKS0+aW5zaWRlTGluaygpID09IE5vdEluc2lkZUxpbmspCisgICAgaWYgKHN0
YXRlLnN0eWxlKCktPmluc2lkZUxpbmsoKSA9PSBJbnNpZGVMaW5rOjpOb3RJbnNpZGUpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmIChjc3NWYWx1ZVtTZWxlY3RvckNoZWNrZXI6Ok1hdGNoTGlu
a10pIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAkocmV2aXNpb24gMjMyMTIz
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMzU3LDcgKzM1Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUqIHBh
cmVudFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRTdHlsZTsgfQogICAgICAgICBjb25z
dCBSZW5kZXJTdHlsZSogcm9vdEVsZW1lbnRTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdEVs
ZW1lbnRTdHlsZTsgfQogCi0gICAgICAgIEVJbnNpZGVMaW5rIGVsZW1lbnRMaW5rU3RhdGUoKSBj
b25zdCB7IHJldHVybiBtX2VsZW1lbnRMaW5rU3RhdGU7IH0KKyAgICAgICAgSW5zaWRlTGluayBl
bGVtZW50TGlua1N0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50TGlua1N0YXRlOyB9CiAK
ICAgICAgICAgdm9pZCBzZXRBcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoYm9vbCBpc0FwcGx5
KSB7IG1fYXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlID0gaXNBcHBseTsgfQogICAgICAgICB2
b2lkIHNldEFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoYm9vbCBpc0FwcGx5KSB7IG1f
YXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSA9IGlzQXBwbHk7IH0KQEAgLTQwOSw3ICs0
MDksNyBAQCBwdWJsaWM6CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gbV9v
d25lZFBhcmVudFN0eWxlOwogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSogbV9yb290RWxlbWVu
dFN0eWxlIHsgbnVsbHB0ciB9OwogCi0gICAgICAgIEVJbnNpZGVMaW5rIG1fZWxlbWVudExpbmtT
dGF0ZSB7IE5vdEluc2lkZUxpbmsgfTsKKyAgICAgICAgSW5zaWRlTGluayBtX2VsZW1lbnRMaW5r
U3RhdGUgeyBJbnNpZGVMaW5rOjpOb3RJbnNpZGUgfTsKIAogICAgICAgICBib29sIG1fYXBwbHlQ
cm9wZXJ0eVRvUmVndWxhclN0eWxlIHsgdHJ1ZSB9OwogICAgICAgICBib29sIG1fYXBwbHlQcm9w
ZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2
MCw3ICs5NjAsNyBAQCBzdGF0aWMgRnVuY3Rpb25UeXBlIGNvbnN0cnVjdEZyYWdtZW50c0luCiAg
ICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50VW5rbm93bjoKICAgICAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
RnVuY3Rpb25UeXBlOjpDYW5ub3RNYXRjaEFueXRoaW5nOwotICAgICAgICAgICAgLy8gRklYTUU6
IFN1cHBvcnQgUkVTSVpFUiwgU0VMRUNUSU9OIGV0Yy4KKyAgICAgICAgICAgIC8vIEZJWE1FOiBT
dXBwb3J0IFBzZXVkb0lkOjpSZXNpemVyLCBQc2V1ZG9JZDo6U2VsZWN0aW9uIGV0Yy4KICAgICAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgLy8gVGhpcyBicmFuY2ggaW5jbHVkZXMg
Y3VzdG9tIHBzZXVkbyBlbGVtZW50cy4KICAgICAgICAgICAgICAgICByZXR1cm4gRnVuY3Rpb25U
eXBlOjpDYW5ub3RDb21waWxlOwpAQCAtMzc2MiwxNCArMzc2MiwxNCBAQCB2b2lkIFNlbGVjdG9y
Q29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVSZXF1CiAgICAgQVNTRVJUKG1fc2VsZWN0b3JDb250ZXh0
ICE9IFNlbGVjdG9yQ29udGV4dDo6UXVlcnlTZWxlY3Rvcik7CiAKICAgICAvLyBNYWtlIHN1cmUg
dGhhdCB0aGUgcmVxdWVzdGVkIHBzZXVkb0lkIGVxdWFscyB0byB0aGUgcHNldWRvIGVsZW1lbnQg
b2YgdGhlIHJpZ2h0bW9zdCBmcmFnbWVudC4KLSAgICAvLyBJZiB0aGUgcmlnaHRtb3N0IGZyYWdt
ZW50IGRvZXNuJ3QgaGF2ZSBhIHBzZXVkbyBlbGVtZW50LCB0aGUgcmVxdWVzdGVkIHBzZXVkb0lk
IG5lZWQgdG8gYmUgTk9QU0VVRE8gdG8gc3VjY2VlZCB0aGUgbWF0Y2hpbmcuCi0gICAgLy8gT3Ro
ZXJ3aXNlLCBpZiB0aGUgcmVxdWVzdGVkIHBzZXVkb0lkIGlzIG5vdCBOT1BTRVVETywgdGhlIHJl
cXVlc3RlZCBwc2V1ZG9JZCBuZWVkIHRvIGVxdWFsIHRvIHRoZSBwc2V1ZG8gZWxlbWVudCBvZiB0
aGUgcmlnaHRtb3N0IGZyYWdtZW50LgorICAgIC8vIElmIHRoZSByaWdodG1vc3QgZnJhZ21lbnQg
ZG9lc24ndCBoYXZlIGEgcHNldWRvIGVsZW1lbnQsIHRoZSByZXF1ZXN0ZWQgcHNldWRvSWQgbmVl
ZCB0byBiZSBQc2V1ZG9JZDo6Tm9uZSB0byBzdWNjZWVkIHRoZSBtYXRjaGluZy4KKyAgICAvLyBP
dGhlcndpc2UsIGlmIHRoZSByZXF1ZXN0ZWQgcHNldWRvSWQgaXMgbm90IFBzZXVkb0lkOjpOb25l
LCB0aGUgcmVxdWVzdGVkIHBzZXVkb0lkIG5lZWQgdG8gZXF1YWwgdG8gdGhlIHBzZXVkbyBlbGVt
ZW50IG9mIHRoZSByaWdodG1vc3QgZnJhZ21lbnQuCiAgICAgaWYgKGZyYWdtZW50TWF0Y2hlc1Ro
ZVJpZ2h0bW9zdEVsZW1lbnQoZnJhZ21lbnQpKSB7CiAgICAgICAgIGlmICghZnJhZ21lbnQucHNl
dWRvRWxlbWVudFNlbGVjdG9yKQotICAgICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChtX2Fz
c2VtYmxlci5icmFuY2g4KEFzc2VtYmxlcjo6Tm90RXF1YWwsIEFzc2VtYmxlcjo6QWRkcmVzcyhj
aGVja2luZ0NvbnRleHQsIE9CSkVDVF9PRkZTRVRPRihTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5n
Q29udGV4dCwgcHNldWRvSWQpKSwgQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTk9QU0VVRE8pKSk7
CisgICAgICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKG1fYXNzZW1ibGVyLmJyYW5jaDgoQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgQXNzZW1ibGVyOjpBZGRyZXNzKGNoZWNraW5nQ29udGV4dCwgT0JK
RUNUX09GRlNFVE9GKFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0LCBwc2V1ZG9JZCkp
LCBBc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHNldWRvSWQ6
Ok5vbmUpKSkpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIEFzc2VtYmxlcjo6SnVtcCBz
a2lwID0gbV9hc3NlbWJsZXIuYnJhbmNoOChBc3NlbWJsZXI6OkVxdWFsLCBBc3NlbWJsZXI6OkFk
ZHJlc3MoY2hlY2tpbmdDb250ZXh0LCBPQkpFQ1RfT0ZGU0VUT0YoU2VsZWN0b3JDaGVja2VyOjpD
aGVja2luZ0NvbnRleHQsIHBzZXVkb0lkKSksIEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE5PUFNF
VURPKSk7Ci0gICAgICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKG1fYXNzZW1ibGVyLmJyYW5j
aDgoQXNzZW1ibGVyOjpOb3RFcXVhbCwgQXNzZW1ibGVyOjpBZGRyZXNzKGNoZWNraW5nQ29udGV4
dCwgT0JKRUNUX09GRlNFVE9GKFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0LCBwc2V1
ZG9JZCkpLCBBc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihDU1NTZWxlY3Rvcjo6cHNldWRvSWQoZnJh
Z21lbnQucHNldWRvRWxlbWVudFNlbGVjdG9yLT5wc2V1ZG9FbGVtZW50VHlwZSgpKSkpKTsKKyAg
ICAgICAgICAgIEFzc2VtYmxlcjo6SnVtcCBza2lwID0gbV9hc3NlbWJsZXIuYnJhbmNoOChBc3Nl
bWJsZXI6OkVxdWFsLCBBc3NlbWJsZXI6OkFkZHJlc3MoY2hlY2tpbmdDb250ZXh0LCBPQkpFQ1Rf
T0ZGU0VUT0YoU2VsZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRleHQsIHBzZXVkb0lkKSksIEFz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihQc2V1ZG9JZDo6Tm9u
ZSkpKTsKKyAgICAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQobV9hc3NlbWJsZXIuYnJhbmNo
OChBc3NlbWJsZXI6Ok5vdEVxdWFsLCBBc3NlbWJsZXI6OkFkZHJlc3MoY2hlY2tpbmdDb250ZXh0
LCBPQkpFQ1RfT0ZGU0VUT0YoU2VsZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRleHQsIHBzZXVk
b0lkKSksIEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NT
ZWxlY3Rvcjo6cHNldWRvSWQoZnJhZ21lbnQucHNldWRvRWxlbWVudFNlbGVjdG9yLT5wc2V1ZG9F
bGVtZW50VHlwZSgpKSkpKSk7CiAgICAgICAgICAgICBza2lwLmxpbmsoJm1fYXNzZW1ibGVyKTsK
ICAgICAgICAgfQogICAgIH0KQEAgLTM4NTIsMTUgKzM4NTIsMTUgQEAgdm9pZCBTZWxlY3RvckNv
ZGVHZW5lcmF0b3I6OmdlbmVyYXRlTWFyawogCiAgICAgQXNzZW1ibGVyOjpKdW1wTGlzdCBzdWNj
ZXNzQ2FzZXM7CiAKLSAgICAvLyBXaGVuIHRoZSByZXF1ZXN0ZWQgcHNldWRvSWQgaXNuJ3QgTk9Q
U0VVRE8sIHRoZXJlJ3Mgbm8gbmVlZCB0byBtYXJrIHRoZSBwc2V1ZG8gZWxlbWVudCBzdHlsZS4K
LSAgICBzdWNjZXNzQ2FzZXMuYXBwZW5kKG1fYXNzZW1ibGVyLmJyYW5jaDgoQXNzZW1ibGVyOjpO
b3RFcXVhbCwgQXNzZW1ibGVyOjpBZGRyZXNzKGNoZWNraW5nQ29udGV4dCwgT0JKRUNUX09GRlNF
VE9GKFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0LCBwc2V1ZG9JZCkpLCBBc3NlbWJs
ZXI6OlRydXN0ZWRJbW0zMihOT1BTRVVETykpKTsKKyAgICAvLyBXaGVuIHRoZSByZXF1ZXN0ZWQg
cHNldWRvSWQgaXNuJ3QgUHNldWRvSWQ6Ok5vbmUsIHRoZXJlJ3Mgbm8gbmVlZCB0byBtYXJrIHRo
ZSBwc2V1ZG8gZWxlbWVudCBzdHlsZS4KKyAgICBzdWNjZXNzQ2FzZXMuYXBwZW5kKG1fYXNzZW1i
bGVyLmJyYW5jaDgoQXNzZW1ibGVyOjpOb3RFcXVhbCwgQXNzZW1ibGVyOjpBZGRyZXNzKGNoZWNr
aW5nQ29udGV4dCwgT0JKRUNUX09GRlNFVE9GKFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250
ZXh0LCBwc2V1ZG9JZCkpLCBBc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHNldWRvSWQ6Ok5vbmUpKSkpOwogCiAgICAgLy8gV2hlbiByZXNvbHZpbmcgbW9kZSBp
cyBDb2xsZWN0aW5nUnVsZXNJZ25vcmluZ1ZpcnR1YWxQc2V1ZG9FbGVtZW50cywgdGhlcmUncyBu
byBuZWVkIHRvIG1hcmsgdGhlIHBzZXVkbyBlbGVtZW50IHN0eWxlLgogICAgIHN1Y2Nlc3NDYXNl
cy5hcHBlbmQoYnJhbmNoT25SZXNvbHZpbmdNb2RlV2l0aENoZWNraW5nQ29udGV4dChBc3NlbWJs
ZXI6OkVxdWFsLCBTZWxlY3RvckNoZWNrZXI6Ok1vZGU6OkNvbGxlY3RpbmdSdWxlc0lnbm9yaW5n
VmlydHVhbFBzZXVkb0VsZW1lbnRzLCBjaGVja2luZ0NvbnRleHQpKTsKIAogICAgIC8vIFdoZW4g
cmVzb2x2aW5nIG1vZGUgaXMgUmVzb2x2aW5nU3R5bGUsIG1hcmsgdGhlIHBzZXVkbyBzdHlsZSBm
b3IgcHNldWRvIGVsZW1lbnQuCiAgICAgUHNldWRvSWQgZHluYW1pY1BzZXVkbyA9IENTU1NlbGVj
dG9yOjpwc2V1ZG9JZChmcmFnbWVudC5wc2V1ZG9FbGVtZW50U2VsZWN0b3ItPnBzZXVkb0VsZW1l
bnRUeXBlKCkpOwotICAgIGlmIChkeW5hbWljUHNldWRvIDwgRklSU1RfSU5URVJOQUxfUFNFVURP
SUQpIHsKKyAgICBpZiAoZHluYW1pY1BzZXVkbyA8IFBzZXVkb0lkOjpGaXJzdEludGVybmFsUHNl
dWRvSWQpIHsKICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChicmFuY2hPblJlc29sdmluZ01v
ZGVXaXRoQ2hlY2tpbmdDb250ZXh0KEFzc2VtYmxlcjo6Tm90RXF1YWwsIFNlbGVjdG9yQ2hlY2tl
cjo6TW9kZTo6UmVzb2x2aW5nU3R5bGUsIGNoZWNraW5nQ29udGV4dCkpOwogCiAgICAgICAgIEFz
c2VtYmxlcjo6QWRkcmVzcyBwc2V1ZG9JRFNldEFkZHJlc3MoY2hlY2tpbmdDb250ZXh0LCBPQkpF
Q1RfT0ZGU0VUT0YoU2VsZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRleHQsIHBzZXVkb0lEU2V0
KSk7CkBAIC0zODcwLDcgKzM4NzAsNyBAQCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdGVNYXJrCiAgICAgfQogCiAgICAgLy8gV2UgaGF2ZSBhIHBzZXVkb0VsZW1lbnRTZWxlY3Rv
ciwgd2UgYXJlIG5vdCBpbiBDb2xsZWN0aW5nUnVsZXNJZ25vcmluZ1ZpcnR1YWxQc2V1ZG9FbGVt
ZW50cyBzbwotICAgIC8vIHdlIG11c3QgbWF0Y2ggdGhhdCBwc2V1ZG8gZWxlbWVudC4gU2luY2Ug
dGhlIGNvbnRleHQncyBwc2V1ZG8gc2VsZWN0b3IgaXMgTk9QU0VVRE8sIHdlIGZhaWwgbWF0Y2hp
bmcKKyAgICAvLyB3ZSBtdXN0IG1hdGNoIHRoYXQgcHNldWRvIGVsZW1lbnQuIFNpbmNlIHRoZSBj
b250ZXh0J3MgcHNldWRvIHNlbGVjdG9yIGlzIFBzZXVkb0lkOjpOb25lLCB3ZSBmYWlsIG1hdGNo
aW5nCiAgICAgLy8gYWZ0ZXIgdGhlIG1hcmtpbmcuCiAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZCht
X2Fzc2VtYmxlci5qdW1wKCkpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlz
aW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIwMDYsOCArMjAwNiw4IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUxheW91dEln
bm9yZVBlbmRpbmcKIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gRG9jdW1lbnQ6OnN0eWxl
Rm9yRWxlbWVudElnbm9yaW5nUGVuZGluZ1N0eWxlc2hlZXRzKEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgUHNldWRvSWQgcHNldWRvRWxlbWVudFNwZWNp
ZmllcikKIHsKICAgICBBU1NFUlQoJmVsZW1lbnQuZG9jdW1lbnQoKSA9PSB0aGlzKTsKLSAgICBB
U1NFUlQoIWVsZW1lbnQuaXNQc2V1ZG9FbGVtZW50KCkgfHwgIXBzZXVkb0VsZW1lbnRTcGVjaWZp
ZXIpOwotICAgIEFTU0VSVCghcHNldWRvRWxlbWVudFNwZWNpZmllciB8fCBwYXJlbnRTdHlsZSk7
CisgICAgQVNTRVJUKCFlbGVtZW50LmlzUHNldWRvRWxlbWVudCgpIHx8IHBzZXVkb0VsZW1lbnRT
cGVjaWZpZXIgPT0gUHNldWRvSWQ6Ok5vbmUpOworICAgIEFTU0VSVChwc2V1ZG9FbGVtZW50U3Bl
Y2lmaWVyID09IFBzZXVkb0lkOjpOb25lIHx8IHBhcmVudFN0eWxlKTsKIAogICAgIC8vIE9uIGlP
UyByZXF1ZXN0IGRlbGVnYXRlcyBjYWxsZWQgZHVyaW5nIHN0eWxlRm9yRWxlbWVudCBtYXkgcmVz
dWx0IGluIHJlLWVudGVyaW5nIFdlYktpdCBhbmQga2lsbGluZyB0aGUgc3R5bGUgcmVzb2x2ZXIu
CiAgICAgU3R5bGU6OlBvc3RSZXNvbHV0aW9uQ2FsbGJhY2tEaXNhYmxlciBkaXNhYmxlcigqdGhp
cyk7CkBAIC0yMDE1LDcgKzIwMTUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IERv
Y3VtZW50OjpzCiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gY2hhbmdlKG1faWdub3JlUGVuZGluZ1N0
eWxlc2hlZXRzLCB0cnVlKTsKICAgICBhdXRvJiByZXNvbHZlciA9IGVsZW1lbnQuc3R5bGVSZXNv
bHZlcigpOwogCi0gICAgaWYgKHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpCisgICAgaWYgKHBzZXVk
b0VsZW1lbnRTcGVjaWZpZXIgIT0gUHNldWRvSWQ6Ok5vbmUpCiAgICAgICAgIHJldHVybiByZXNv
bHZlci5wc2V1ZG9TdHlsZUZvckVsZW1lbnQoZWxlbWVudCwgUHNldWRvU3R5bGVSZXF1ZXN0KHBz
ZXVkb0VsZW1lbnRTcGVjaWZpZXIpLCAqcGFyZW50U3R5bGUpOwogCiAgICAgYXV0byBlbGVtZW50
U3R5bGUgPSByZXNvbHZlci5zdHlsZUZvckVsZW1lbnQoZWxlbWVudCwgcGFyZW50U3R5bGUpOwpA
QCAtMjEzMyw3ICsyMTMzLDcgQEAgYm9vbCBEb2N1bWVudDo6aXNQYWdlQm94VmlzaWJsZShpbnQg
cGFnZQogewogICAgIHVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHBhZ2VTdHlsZShzdHlsZVNjb3BlKCkucmVzb2x2ZXIoKS5zdHlsZUZvclBh
Z2UocGFnZUluZGV4KSk7Ci0gICAgcmV0dXJuIHBhZ2VTdHlsZS0+dmlzaWJpbGl0eSgpICE9IEhJ
RERFTjsgLy8gZGlzcGxheSBwcm9wZXJ0eSBkb2Vzbid0IGFwcGx5IHRvIEBwYWdlLgorICAgIHJl
dHVybiBwYWdlU3R5bGUtPnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpIaWRkZW47IC8vIGRp
c3BsYXkgcHJvcGVydHkgZG9lc24ndCBhcHBseSB0byBAcGFnZS4KIH0KIAogdm9pZCBEb2N1bWVu
dDo6cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoaW50IHBhZ2VJbmRleCwgSW50U2l6ZSYgcGFn
ZVNpemUsIGludCYgbWFyZ2luVG9wLCBpbnQmIG1hcmdpblJpZ2h0LCBpbnQmIG1hcmdpbkJvdHRv
bSwgaW50JiBtYXJnaW5MZWZ0KQpAQCAtMjU2Niw3ICsyNTY2LDcgQEAgdm9pZCBEb2N1bWVudDo6
c2V0VmlzdWFsbHlPcmRlcmVkKCkKIHsKICAgICBtX3Zpc3VhbGx5T3JkZXJlZCA9IHRydWU7CiAg
ICAgaWYgKHJlbmRlclZpZXcoKSkKLSAgICAgICAgcmVuZGVyVmlldygpLT5tdXRhYmxlU3R5bGUo
KS5zZXRSVExPcmRlcmluZyhWaXN1YWxPcmRlcik7CisgICAgICAgIHJlbmRlclZpZXcoKS0+bXV0
YWJsZVN0eWxlKCkuc2V0UlRMT3JkZXJpbmcoT3JkZXI6OlZpc3VhbCk7CiB9CiAKIFJlZjxEb2N1
bWVudFBhcnNlcj4gRG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU3OSw3ICs1NzksNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyhS
dW5Qb3N0TGF5b3V0VGFza3MgPSBSdW5Qb3N0TGF5b3V0VGFza3M6OkFzeW5jaHJvbm91c2x5KTsK
IAotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JFbGVtZW50SWdub3Jp
bmdQZW5kaW5nU3R5bGVzaGVldHMoRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRT
dHlsZSwgUHNldWRvSWQgPSBOT1BTRVVETyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBzdHlsZUZvckVsZW1lbnRJZ25vcmluZ1BlbmRpbmdTdHlsZXNoZWV0cyhFbGVtZW50Jiwg
Y29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBQc2V1ZG9JZCA9IFBzZXVkb0lkOjpOb25l
KTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBwYWdlIGJveCAobWFyZ2luIGJveGVzIGFuZCBw
YWdlIGJvcmRlcnMpIGlzIHZpc2libGUuCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1BhZ2VC
b3hWaXNpYmxlKGludCBwYWdlSW5kZXgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2
aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MjIsMTIgKzUyMiwxMiBAQCBib29sIEVsZW1lbnQ6OmlzRm9jdXNhYmxlKCkg
Y29uc3QKICAgICAgICAgLy8gRWxlbWVudHMgaW4gY2FudmFzIGZhbGxiYWNrIGNvbnRlbnQgYXJl
IG5vdCByZW5kZXJlZCwgYnV0IHRoZXkgYXJlIGFsbG93ZWQgdG8gYmUKICAgICAgICAgLy8gZm9j
dXNhYmxlIGFzIGxvbmcgYXMgdGhlaXIgY2FudmFzIGlzIGRpc3BsYXllZCBhbmQgdmlzaWJsZS4K
ICAgICAgICAgaWYgKGF1dG8qIGNhbnZhcyA9IGFuY2VzdG9yc09mVHlwZTxIVE1MQ2FudmFzRWxl
bWVudD4oKnRoaXMpLmZpcnN0KCkpCi0gICAgICAgICAgICByZXR1cm4gY2FudmFzLT5yZW5kZXJl
cigpICYmIGNhbnZhcy0+cmVuZGVyZXIoKS0+c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJM
RTsKKyAgICAgICAgICAgIHJldHVybiBjYW52YXMtPnJlbmRlcmVyKCkgJiYgY2FudmFzLT5yZW5k
ZXJlcigpLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlOwogICAg
IH0KIAogICAgIC8vIEZJWE1FOiBFdmVuIGlmIHdlIGFyZSBub3QgdmlzaWJsZSwgd2UgbWlnaHQg
aGF2ZSBhIGNoaWxkIHRoYXQgaXMgdmlzaWJsZS4KICAgICAvLyBIeWF0dCB3YW50cyB0byBmaXgg
dGhhdCBzb21lIGRheSB3aXRoIGEgImhhcyB2aXNpYmxlIGNvbnRlbnQiIGZsYWcgb3IgdGhlIGxp
a2UuCi0gICAgaWYgKCFyZW5kZXJlcigpIHx8IHJlbmRlcmVyKCktPnN0eWxlKCkudmlzaWJpbGl0
eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKCFyZW5kZXJlcigpIHx8IHJlbmRlcmVyKCktPnN0eWxl
KCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIHJldHVybiB0cnVlOwpAQCAtMTU0OCwxMiArMTU0OCwxMiBAQCBib29sIEVs
ZW1lbnQ6Omhhc0Rpc3BsYXlDb250ZW50cygpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSA9IGVsZW1lbnRSYXJlRGF0YSgpLT5jb21w
dXRlZFN0eWxlKCk7Ci0gICAgcmV0dXJuIHN0eWxlICYmIHN0eWxlLT5kaXNwbGF5KCkgPT0gQ09O
VEVOVFM7CisgICAgcmV0dXJuIHN0eWxlICYmIHN0eWxlLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5
cGU6OkNvbnRlbnRzOwogfQogCiB2b2lkIEVsZW1lbnQ6OnN0b3JlRGlzcGxheUNvbnRlbnRzU3R5
bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKIHsKLSAgICBBU1NFUlQoc3R5
bGUgJiYgc3R5bGUtPmRpc3BsYXkoKSA9PSBDT05URU5UUyk7CisgICAgQVNTRVJUKHN0eWxlICYm
IHN0eWxlLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OkNvbnRlbnRzKTsKICAgICBBU1NFUlQo
IXJlbmRlcmVyKCkgfHwgaXNQc2V1ZG9FbGVtZW50KCkpOwogICAgIGVuc3VyZUVsZW1lbnRSYXJl
RGF0YSgpLnNldENvbXB1dGVkU3R5bGUoV1RGTW92ZShzdHlsZSkpOwogfQpAQCAtMTY2OSw3ICsx
NjY5LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBFbGVtZW50OjppbWFnZVNvdXJjZQogCiBib29s
IEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewot
ICAgIHJldHVybiBzdHlsZS5kaXNwbGF5KCkgIT0gTk9ORSAmJiBzdHlsZS5kaXNwbGF5KCkgIT0g
Q09OVEVOVFM7CisgICAgcmV0dXJuIHN0eWxlLmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Tm9u
ZSAmJiBzdHlsZS5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6OkNvbnRlbnRzOwogfQogCiBSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCkBAIC0yNzIyLDkgKzI3
MjIsOSBAQCB2b2lkIEVsZW1lbnQ6OndpbGxCZWNvbWVGdWxsc2NyZWVuRWxlbWVuCiBzdGF0aWMg
UHNldWRvRWxlbWVudCogYmVmb3JlT3JBZnRlclBzZXVkb0VsZW1lbnQoRWxlbWVudCYgaG9zdCwg
UHNldWRvSWQgcHNldWRvRWxlbWVudFNwZWNpZmllcikKIHsKICAgICBzd2l0Y2ggKHBzZXVkb0Vs
ZW1lbnRTcGVjaWZpZXIpIHsKLSAgICBjYXNlIEJFRk9SRToKKyAgICBjYXNlIFBzZXVkb0lkOjpC
ZWZvcmU6CiAgICAgICAgIHJldHVybiBob3N0LmJlZm9yZVBzZXVkb0VsZW1lbnQoKTsKLSAgICBj
YXNlIEFGVEVSOgorICAgIGNhc2UgUHNldWRvSWQ6OkFmdGVyOgogICAgICAgICByZXR1cm4gaG9z
dC5hZnRlclBzZXVkb0VsZW1lbnQoKTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTI4MDIsNyArMjgwMiw3IEBAIGNvbnN0IFJlbmRlclN0eWxlKiBFbGVtZW50Ojpj
b21wdXRlZFN0eWwKICAgICBpZiAoIXN0eWxlKQogICAgICAgICBzdHlsZSA9ICZyZXNvbHZlQ29t
cHV0ZWRTdHlsZSgpOwogCi0gICAgaWYgKHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpIHsKKyAgICBp
ZiAocHNldWRvRWxlbWVudFNwZWNpZmllciAhPSBQc2V1ZG9JZDo6Tm9uZSkgewogICAgICAgICBp
ZiAoYXV0byogY2FjaGVkUHNldWRvU3R5bGUgPSBzdHlsZS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUo
cHNldWRvRWxlbWVudFNwZWNpZmllcikpCiAgICAgICAgICAgICByZXR1cm4gY2FjaGVkUHNldWRv
U3R5bGU7CiAgICAgICAgIHJldHVybiAmcmVzb2x2ZVBzZXVkb0VsZW1lbnRTdHlsZShwc2V1ZG9F
bGVtZW50U3BlY2lmaWVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkocmV2aXNpb24gMjMyMTIz
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIw
LDcgKzMyMCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lk
PiBpbnNlcnRBZGphY2VudEhUTUwoY29uc3QgU3RyaW5nJiB3aGVyZSwgY29uc3QgU3RyaW5nJiBo
dG1sKTsKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBpbnNlcnRBZGphY2Vu
dFRleHQoY29uc3QgU3RyaW5nJiB3aGVyZSwgY29uc3QgU3RyaW5nJiB0ZXh0KTsKIAotICAgIGNv
bnN0IFJlbmRlclN0eWxlKiBjb21wdXRlZFN0eWxlKFBzZXVkb0lkID0gTk9QU0VVRE8pIG92ZXJy
aWRlOworICAgIGNvbnN0IFJlbmRlclN0eWxlKiBjb21wdXRlZFN0eWxlKFBzZXVkb0lkID0gUHNl
dWRvSWQ6Ok5vbmUpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBuZWVkc1N0eWxlSW52YWxpZGF0aW9u
KCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgwLDcgKzY4MCw3
IEBAIHN0YXRpYyBOb2RlOjpFZGl0YWJpbGl0eSBjb21wdXRlRWRpdGFiaWwKICAgICAgICAgYXV0
byogc3R5bGUgPSBub2RlLT5pc0RvY3VtZW50Tm9kZSgpID8gbm9kZS0+cmVuZGVyU3R5bGUoKSA6
IGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpLT5jb21wdXRlZFN0eWxlKCk7CiAgICAgICAgIGlmICgh
c3R5bGUpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKHN0eWxlLT5kaXNwbGF5
KCkgPT0gTk9ORSkKKyAgICAgICAgaWYgKHN0eWxlLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6
Ok5vbmUpCiAgICAgICAgICAgICBjb250aW51ZTsKICNpZiBFTkFCTEUoVVNFUlNFTEVDVF9BTEwp
CiAgICAgICAgIC8vIEVsZW1lbnRzIHdpdGggdXNlci1zZWxlY3Q6IGFsbCBzdHlsZSBhcmUgY29u
c2lkZXJlZCBhdG9taWMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAkocmV2aXNpb24gMjMyMTIzKQorKysgU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjAyLDEwICsyMDIsMTAg
QEAgcHVibGljOgogICAgIGJvb2wgaXNTVkdFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZ2V0Rmxh
ZyhJc1NWR0ZsYWcpOyB9CiAgICAgYm9vbCBpc01hdGhNTEVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biBnZXRGbGFnKElzTWF0aE1MRmxhZyk7IH0KIAotICAgIGJvb2wgaXNQc2V1ZG9FbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gcHNldWRvSWQoKSAhPSBOT1BTRVVETzsgfQotICAgIGJvb2wgaXNCZWZv
cmVQc2V1ZG9FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gcHNldWRvSWQoKSA9PSBCRUZPUkU7IH0K
LSAgICBib29sIGlzQWZ0ZXJQc2V1ZG9FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gcHNldWRvSWQo
KSA9PSBBRlRFUjsgfQotICAgIFBzZXVkb0lkIHBzZXVkb0lkKCkgY29uc3QgeyByZXR1cm4gKGlz
RWxlbWVudE5vZGUoKSAmJiBoYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKSkgPyBjdXN0
b21Qc2V1ZG9JZCgpIDogTk9QU0VVRE87IH0KKyAgICBib29sIGlzUHNldWRvRWxlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIHBzZXVkb0lkKCkgIT0gUHNldWRvSWQ6Ok5vbmU7IH0KKyAgICBib29sIGlz
QmVmb3JlUHNldWRvRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHBzZXVkb0lkKCkgPT0gUHNldWRv
SWQ6OkJlZm9yZTsgfQorICAgIGJvb2wgaXNBZnRlclBzZXVkb0VsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiBwc2V1ZG9JZCgpID09IFBzZXVkb0lkOjpBZnRlcjsgfQorICAgIFBzZXVkb0lkIHBzZXVk
b0lkKCkgY29uc3QgeyByZXR1cm4gKGlzRWxlbWVudE5vZGUoKSAmJiBoYXNDdXN0b21TdHlsZVJl
c29sdmVDYWxsYmFja3MoKSkgPyBjdXN0b21Qc2V1ZG9JZCgpIDogUHNldWRvSWQ6Ok5vbmU7IH0K
IAogICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhQ29udHJvbEVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhQ29udHJvbHMoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQpAQCAtNDMyLDcgKzQzMiw3IEBAIHB1YmxpYzoKICAgICAvLyBXcmFwcGVy
IGZvciBub2RlcyB0aGF0IGRvbid0IGhhdmUgYSByZW5kZXJlciwgYnV0IHN0aWxsIGNhY2hlIHRo
ZSBzdHlsZSAobGlrZSBIVE1MT3B0aW9uRWxlbWVudCkuCiAgICAgY29uc3QgUmVuZGVyU3R5bGUq
IHJlbmRlclN0eWxlKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlclN0eWxlKiBj
b21wdXRlZFN0eWxlKFBzZXVkb0lkIHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIgPSBOT1BTRVVETyk7
CisgICAgdmlydHVhbCBjb25zdCBSZW5kZXJTdHlsZSogY29tcHV0ZWRTdHlsZShQc2V1ZG9JZCBw
c2V1ZG9FbGVtZW50U3BlY2lmaWVyID0gUHNldWRvSWQ6Ok5vbmUpOwogCiAgICAgZW51bSBjbGFz
cyBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCB7CiAgICAgICAgIERvbmUsCkBAIC02NDMsNyAr
NjQzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFBzZXVkb0lkIGN1c3RvbVBzZXVkb0lkKCkg
Y29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChoYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFj
a3MoKSk7Ci0gICAgICAgIHJldHVybiBOT1BTRVVETzsKKyAgICAgICAgcmV0dXJuIFBzZXVkb0lk
OjpOb25lOwogICAgIH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlZExhc3RSZWYo
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291
cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjg1LDcgKzY4
NSw3IEBAIFBvc2l0aW9uIFBvc2l0aW9uOjp1cHN0cmVhbShFZGl0aW5nQm91bmQKIAogICAgICAg
ICAvLyBza2lwIHBvc2l0aW9uIGluIHVucmVuZGVyZWQgb3IgaW52aXNpYmxlIG5vZGUKICAgICAg
ICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGN1cnJlbnROb2RlLnJlbmRlcmVyKCk7Ci0gICAg
ICAgIGlmICghcmVuZGVyZXIgfHwgcmVuZGVyZXItPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJ
U0lCTEUpCisgICAgICAgIGlmICghcmVuZGVyZXIgfHwgcmVuZGVyZXItPnN0eWxlKCkudmlzaWJp
bGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgZW5zdXJlTGluZUJveGVzSWZOZWVkZWQoKnJlbmRlcmVyKTsKICAgICAgICAgaWYgKHJ1
bGUgPT0gQ2FuQ3Jvc3NFZGl0aW5nQm91bmRhcnkgJiYgYm91bmRhcnlDcm9zc2VkKSB7CkBAIC04
MjAsNyArODIwLDcgQEAgUG9zaXRpb24gUG9zaXRpb246OmRvd25zdHJlYW0oRWRpdGluZ0JvdQog
CiAgICAgICAgIC8vIHNraXAgcG9zaXRpb24gaW4gdW5yZW5kZXJlZCBvciBpbnZpc2libGUgbm9k
ZQogICAgICAgICBhdXRvKiByZW5kZXJlciA9IGN1cnJlbnROb2RlLnJlbmRlcmVyKCk7Ci0gICAg
ICAgIGlmICghcmVuZGVyZXIgfHwgcmVuZGVyZXItPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJ
U0lCTEUpCisgICAgICAgIGlmICghcmVuZGVyZXIgfHwgcmVuZGVyZXItPnN0eWxlKCkudmlzaWJp
bGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgZW5zdXJlTGluZUJveGVzSWZOZWVkZWQoKnJlbmRlcmVyKTsKICAgICAgICAgaWYgKHJ1
bGUgPT0gQ2FuQ3Jvc3NFZGl0aW5nQm91bmRhcnkgJiYgYm91bmRhcnlDcm9zc2VkKSB7CkBAIC05
OTUsNyArOTk1LDcgQEAgYm9vbCBQb3NpdGlvbjo6aXNDYW5kaWRhdGUoKSBjb25zdAogICAgIGlm
ICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChyZW5kZXJlci0+
c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAocmVuZGVyZXItPnN0eWxl
KCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGlmIChyZW5kZXJlci0+aXNCUigpKSB7CkBAIC0xMDU4LDcgKzEwNTgsNyBA
QCBib29sIFBvc2l0aW9uOjpyZW5kZXJzSW5EaWZmZXJlbnRQb3NpdGlvCiAgICAgaWYgKCFwb3Np
dGlvblJlbmRlcmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAocmVuZGVyZXIt
PnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgcG9zaXRpb25SZW5kZXJlci0+c3R5
bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAocmVuZGVyZXItPnN0eWxlKCku
dmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgfHwgcG9zaXRpb25SZW5kZXJlci0+
c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIAogICAgIGlmIChkZXByZWNhdGVkTm9kZSgpID09IHBvc2l0aW9uLmRl
cHJlY2F0ZWROb2RlKCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbkl0ZXJh
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb25JdGVyYXRv
ci5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbkl0
ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDcgKzE1Miw3IEBAIGJvb2wgUG9zaXRp
b25JdGVyYXRvcjo6aXNDYW5kaWRhdGUoKSBjb24KICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxp
dHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkg
IT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYg
KHJlbmRlcmVyLT5pc0JSKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3Bw
CShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDkgKzU0LDkgQEAgU3RyaW5nIFBzZXVkb0VsZW1lbnQ6
OnBzZXVkb0VsZW1lbnROYW1lRgogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJp
bmc+IGFmdGVyKE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCI6OmFmdGVyIikpOwogICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGJlZm9yZShNQUtFX1NUQVRJQ19TVFJJTkdf
SU1QTCgiOjpiZWZvcmUiKSk7CiAgICAgc3dpdGNoIChwc2V1ZG9JZCkgewotICAgIGNhc2UgQUZU
RVI6CisgICAgY2FzZSBQc2V1ZG9JZDo6QWZ0ZXI6CiAgICAgICAgIHJldHVybiBhZnRlcjsKLSAg
ICBjYXNlIEJFRk9SRToKKyAgICBjYXNlIFBzZXVkb0lkOjpCZWZvcmU6CiAgICAgICAgIHJldHVy
biBiZWZvcmU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkBA
IC02OCw3ICs2OCw3IEBAIFBzZXVkb0VsZW1lbnQ6OlBzZXVkb0VsZW1lbnQoRWxlbWVudCYgaG8K
ICAgICAsIG1faG9zdEVsZW1lbnQoJmhvc3QpCiAgICAgLCBtX3BzZXVkb0lkKHBzZXVkb0lkKQog
ewotICAgIEFTU0VSVChwc2V1ZG9JZCA9PSBCRUZPUkUgfHwgcHNldWRvSWQgPT0gQUZURVIpOwor
ICAgIEFTU0VSVChwc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6QmVmb3JlIHx8IHBzZXVkb0lkID09IFBz
ZXVkb0lkOjpBZnRlcik7CiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9WaXNpdGVkTGlua1N0YXRlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVmlzaXRlZExpbmtTdGF0ZS5jcHAJKHJldmlz
aW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9WaXNpdGVkTGlua1N0YXRlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODUsMTggKzg1LDE4IEBAIHZvaWQgVmlzaXRlZExpbmtTdGF0ZTo6
aW52YWxpZGF0ZVN0eWxlRm8KICAgICB9CiB9CiAKLUVJbnNpZGVMaW5rIFZpc2l0ZWRMaW5rU3Rh
dGU6OmRldGVybWluZUxpbmtTdGF0ZVNsb3dDYXNlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCitJ
bnNpZGVMaW5rIFZpc2l0ZWRMaW5rU3RhdGU6OmRldGVybWluZUxpbmtTdGF0ZVNsb3dDYXNlKGNv
bnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQuaXNMaW5rKCkpOwog
CiAgICAgY29uc3QgQXRvbWljU3RyaW5nKiBhdHRyaWJ1dGUgPSBsaW5rQXR0cmlidXRlKGVsZW1l
bnQpOwogICAgIGlmICghYXR0cmlidXRlIHx8IGF0dHJpYnV0ZS0+aXNOdWxsKCkpCi0gICAgICAg
IHJldHVybiBOb3RJbnNpZGVMaW5rOworICAgICAgICByZXR1cm4gSW5zaWRlTGluazo6Tm90SW5z
aWRlOwogCiAgICAgLy8gQW4gZW1wdHkgaHJlZiByZWZlcnMgdG8gdGhlIGRvY3VtZW50IGl0c2Vs
ZiB3aGljaCBpcyBhbHdheXMgdmlzaXRlZC4gSXQgaXMgdXNlZnVsIHRvIGNoZWNrIHRoaXMgZXhw
bGljaXRseSBzbwogICAgIC8vIHRoYXQgdmlzaXRlZCBsaW5rcyBjYW4gYmUgdGVzdGVkIGluIHBs
YXRmb3JtIGluZGVwZW5kZW50IG1hbm5lciwgd2l0aG91dCBleHBsaWNpdCBzdXBwb3J0IGluIHRo
ZSB0ZXN0IGhhcm5lc3MuCiAgICAgaWYgKGF0dHJpYnV0ZS0+aXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gSW5zaWRlVmlzaXRlZExpbms7CisgICAgICAgIHJldHVybiBJbnNpZGVMaW5rOjpJbnNp
ZGVWaXNpdGVkOwogCiAgICAgU2hhcmVkU3RyaW5nSGFzaCBoYXNoOwogICAgIGlmIChpczxIVE1M
QW5jaG9yRWxlbWVudD4oZWxlbWVudCkpCkBAIC0xMDUsMjIgKzEwNSwyMiBAQCBFSW5zaWRlTGlu
ayBWaXNpdGVkTGlua1N0YXRlOjpkZXRlcm1pbmVMCiAgICAgICAgIGhhc2ggPSBjb21wdXRlVmlz
aXRlZExpbmtIYXNoKGVsZW1lbnQuZG9jdW1lbnQoKS5iYXNlVVJMKCksICphdHRyaWJ1dGUpOwog
CiAgICAgaWYgKCFoYXNoKQotICAgICAgICByZXR1cm4gSW5zaWRlVW52aXNpdGVkTGluazsKKyAg
ICAgICAgcmV0dXJuIEluc2lkZUxpbms6Okluc2lkZVVudmlzaXRlZDsKIAogICAgIEZyYW1lKiBm
cmFtZSA9IGVsZW1lbnQuZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCi0gICAg
ICAgIHJldHVybiBJbnNpZGVVbnZpc2l0ZWRMaW5rOworICAgICAgICByZXR1cm4gSW5zaWRlTGlu
azo6SW5zaWRlVW52aXNpdGVkOwogCiAgICAgUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCk7CiAg
ICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm4gSW5zaWRlVW52aXNpdGVkTGluazsKKyAgICAg
ICAgcmV0dXJuIEluc2lkZUxpbms6Okluc2lkZVVudmlzaXRlZDsKIAogICAgIG1fbGlua3NDaGVj
a2VkRm9yVmlzaXRlZFN0YXRlLmFkZChoYXNoKTsKIAogICAgIGlmICghcGFnZS0+dmlzaXRlZExp
bmtTdG9yZSgpLmlzTGlua1Zpc2l0ZWQoKnBhZ2UsIGhhc2gsIGVsZW1lbnQuZG9jdW1lbnQoKS5i
YXNlVVJMKCksICphdHRyaWJ1dGUpKQotICAgICAgICByZXR1cm4gSW5zaWRlVW52aXNpdGVkTGlu
azsKKyAgICAgICAgcmV0dXJuIEluc2lkZUxpbms6Okluc2lkZVVudmlzaXRlZDsKIAotICAgIHJl
dHVybiBJbnNpZGVWaXNpdGVkTGluazsKKyAgICByZXR1cm4gSW5zaWRlTGluazo6SW5zaWRlVmlz
aXRlZDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL1Zpc2l0ZWRMaW5rU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
VmlzaXRlZExpbmtTdGF0ZS5oCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vVmlzaXRlZExpbmtTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxOSArNDQsMTkgQEAg
cHVibGljOgogCiAgICAgdm9pZCBpbnZhbGlkYXRlU3R5bGVGb3JBbGxMaW5rcygpOwogICAgIHZv
aWQgaW52YWxpZGF0ZVN0eWxlRm9yTGluayhTaGFyZWRTdHJpbmdIYXNoKTsKLSAgICBFSW5zaWRl
TGluayBkZXRlcm1pbmVMaW5rU3RhdGUoY29uc3QgRWxlbWVudCYpOworICAgIEluc2lkZUxpbmsg
ZGV0ZXJtaW5lTGlua1N0YXRlKGNvbnN0IEVsZW1lbnQmKTsKIAogcHJpdmF0ZToKLSAgICBFSW5z
aWRlTGluayBkZXRlcm1pbmVMaW5rU3RhdGVTbG93Q2FzZShjb25zdCBFbGVtZW50Jik7CisgICAg
SW5zaWRlTGluayBkZXRlcm1pbmVMaW5rU3RhdGVTbG93Q2FzZShjb25zdCBFbGVtZW50Jik7CiAK
ICAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKICAgICBIYXNoU2V0PFNoYXJlZFN0cmluZ0hhc2gs
IFNoYXJlZFN0cmluZ0hhc2hIYXNoPiBtX2xpbmtzQ2hlY2tlZEZvclZpc2l0ZWRTdGF0ZTsKIH07
CiAKLWlubGluZSBFSW5zaWRlTGluayBWaXNpdGVkTGlua1N0YXRlOjpkZXRlcm1pbmVMaW5rU3Rh
dGUoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKK2lubGluZSBJbnNpZGVMaW5rIFZpc2l0ZWRMaW5r
U3RhdGU6OmRldGVybWluZUxpbmtTdGF0ZShjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewogICAg
IGlmICghZWxlbWVudC5pc0xpbmsoKSkKLSAgICAgICAgcmV0dXJuIE5vdEluc2lkZUxpbms7Cisg
ICAgICAgIHJldHVybiBJbnNpZGVMaW5rOjpOb3RJbnNpZGU7CiAgICAgcmV0dXJuIGRldGVybWlu
ZUxpbmtTdGF0ZVNsb3dDYXNlKGVsZW1lbnQpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZy5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1Niw3ICs0NTYsNyBAQCBzdGF0aWMgYm9v
bCBpc1NwZWNpYWxIVE1MRWxlbWVudChjb25zdCBOCiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLmRpc3BsYXkoKSA9
PSBUQUJMRSB8fCByZW5kZXJlci0+c3R5bGUoKS5kaXNwbGF5KCkgPT0gSU5MSU5FX1RBQkxFKQor
ICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxl
IHx8IHJlbmRlcmVyLT5zdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lVGFi
bGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLmlz
RmxvYXRpbmcoKSkKQEAgLTkzMyw3ICs5MzMsNyBAQCBSZWY8RWxlbWVudD4gY3JlYXRlVGFiU3Bh
bkVsZW1lbnQoRG9jdW1lCiBib29sIGlzTm9kZVJlbmRlcmVkKGNvbnN0IE5vZGUmIG5vZGUpCiB7
CiAgICAgYXV0byogcmVuZGVyZXIgPSBub2RlLnJlbmRlcmVyKCk7Ci0gICAgcmV0dXJuIHJlbmRl
cmVyICYmIHJlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFOworICAgIHJl
dHVybiByZW5kZXJlciAmJiByZW5kZXJlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJp
bGl0eTo6VmlzaWJsZTsKIH0KIAogdW5zaWduZWQgbnVtRW5jbG9zaW5nTWFpbEJsb2NrcXVvdGVz
KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dEl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRJdGVyYXRvci5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dEl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYwLDExICs1NjAsMTEgQEAg
dm9pZCBUZXh0SXRlcmF0b3I6OmFkdmFuY2UoKQogCiBzdGF0aWMgYm9vbCBoYXNWaXNpYmxlVGV4
dE5vZGUoUmVuZGVyVGV4dCYgcmVuZGVyZXIpCiB7Ci0gICAgaWYgKHJlbmRlcmVyLnN0eWxlKCku
dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpCisgICAgaWYgKHJlbmRlcmVyLnN0eWxlKCkudmlzaWJp
bGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IGlmIChpczxSZW5kZXJUZXh0RnJhZ21lbnQ+KHJlbmRlcmVyKSkgewogICAgICAgICBpZiAoYXV0
byBmaXJzdExldHRlciA9IGRvd25jYXN0PFJlbmRlclRleHRGcmFnbWVudD4ocmVuZGVyZXIpLmZp
cnN0TGV0dGVyKCkpIHsKLSAgICAgICAgICAgIGlmIChmaXJzdExldHRlci0+c3R5bGUoKS52aXNp
YmlsaXR5KCkgPT0gVklTSUJMRSkKKyAgICAgICAgICAgIGlmIChmaXJzdExldHRlci0+c3R5bGUo
KS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTYxOCw3ICs2MTgsNyBAQCBib29sIFRl
eHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAocmVuZGVyZXIuc3R5bGUo
KS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSAmJiAhKG1fYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JJ
Z25vcmVzU3R5bGVWaXNpYmlsaXR5KSkKKyAgICAgICAgaWYgKHJlbmRlcmVyLnN0eWxlKCkudmlz
aWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgJiYgIShtX2JlaGF2aW9yICYgVGV4dEl0
ZXJhdG9ySWdub3Jlc1N0eWxlVmlzaWJpbGl0eSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIGludCByZW5kZXJlclRleHRMZW5ndGggPSByZW5kZXJlclRleHQubGVuZ3RoKCk7
CiAgICAgICAgIGludCBlbmQgPSAoJnRleHROb2RlID09IG1fZW5kQ29udGFpbmVyKSA/IG1fZW5k
T2Zmc2V0IDogSU5UX01BWDsKQEAgLTYzMiw3ICs2MzIsNyBAQCBib29sIFRleHRJdGVyYXRvcjo6
aGFuZGxlVGV4dE5vZGUoKQogICAgIH0KIAogICAgIGlmIChjb25zdCBhdXRvKiBsYXlvdXQgPSBy
ZW5kZXJlci5zaW1wbGVMaW5lTGF5b3V0KCkpIHsKLSAgICAgICAgaWYgKHJlbmRlcmVyLnN0eWxl
KCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgJiYgIShtX2JlaGF2aW9yICYgVGV4dEl0ZXJhdG9y
SWdub3Jlc1N0eWxlVmlzaWJpbGl0eSkpCisgICAgICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLnZp
c2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICEobV9iZWhhdmlvciAmIFRleHRJ
dGVyYXRvcklnbm9yZXNTdHlsZVZpc2liaWxpdHkpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIEFTU0VSVChyZW5kZXJlci5wYXJlbnQoKSk7CiAgICAgICAgIEFTU0VSVChpczxS
ZW5kZXJCbG9ja0Zsb3c+KCpyZW5kZXJlci5wYXJlbnQoKSkpOwpAQCAtNzI3LDcgKzcyNyw3IEBA
IGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiAgICAgICAgIGhhbmRsZVRleHRO
b2RlRmlyc3RMZXR0ZXIoZG93bmNhc3Q8UmVuZGVyVGV4dEZyYWdtZW50PihyZW5kZXJlcikpOwog
CiAgICAgaWYgKCFyZW5kZXJlci5maXJzdFRleHRCb3goKSAmJiByZW5kZXJlclRleHQubGVuZ3Ro
KCkgJiYgIXNob3VsZEhhbmRsZUZpcnN0TGV0dGVyKSB7Ci0gICAgICAgIGlmIChyZW5kZXJlci5z
dHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFICYmICEobV9iZWhhdmlvciAmIFRleHRJdGVy
YXRvcklnbm9yZXNTdHlsZVZpc2liaWxpdHkpKQorICAgICAgICBpZiAocmVuZGVyZXIuc3R5bGUo
KS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhKG1fYmVoYXZpb3IgJiBU
ZXh0SXRlcmF0b3JJZ25vcmVzU3R5bGVWaXNpYmlsaXR5KSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgbV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFjZSA9IHRy
dWU7IC8vIGVudGlyZSBibG9jayBpcyBjb2xsYXBzZWQgc3BhY2UKICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC03NTMsNyArNzUzLDcgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRCb3go
KQogICAgIFRleHQmIHRleHROb2RlID0gZG93bmNhc3Q8VGV4dD4oKm1fbm9kZSk7CiAKICAgICBh
dXRvJiByZW5kZXJlciA9IG1fZmlyc3RMZXR0ZXJUZXh0ID8gKm1fZmlyc3RMZXR0ZXJUZXh0IDog
KnRleHROb2RlLnJlbmRlcmVyKCk7Ci0gICAgaWYgKHJlbmRlcmVyLnN0eWxlKCkudmlzaWJpbGl0
eSgpICE9IFZJU0lCTEUgJiYgIShtX2JlaGF2aW9yICYgVGV4dEl0ZXJhdG9ySWdub3Jlc1N0eWxl
VmlzaWJpbGl0eSkpIHsKKyAgICBpZiAocmVuZGVyZXIuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0g
VmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhKG1fYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JJZ25vcmVz
U3R5bGVWaXNpYmlsaXR5KSkgewogICAgICAgICBtX3RleHRCb3ggPSBudWxscHRyOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtODQ4LDcgKzg0OCw3IEBAIHN0YXRpYyBpbmxpbmUgUmVuZGVy
VGV4dCogZmlyc3RSZW5kZXJUZXgKIHZvaWQgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZUZp
cnN0TGV0dGVyKFJlbmRlclRleHRGcmFnbWVudCYgcmVuZGVyZXIpCiB7CiAgICAgaWYgKGF1dG8q
IGZpcnN0TGV0dGVyID0gcmVuZGVyZXIuZmlyc3RMZXR0ZXIoKSkgewotICAgICAgICBpZiAoZmly
c3RMZXR0ZXItPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgJiYgIShtX2JlaGF2aW9y
ICYgVGV4dEl0ZXJhdG9ySWdub3Jlc1N0eWxlVmlzaWJpbGl0eSkpCisgICAgICAgIGlmIChmaXJz
dExldHRlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAh
KG1fYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JJZ25vcmVzU3R5bGVWaXNpYmlsaXR5KSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKGF1dG8qIGZpcnN0TGV0dGVyVGV4dCA9IGZpcnN0
UmVuZGVyVGV4dEluRmlyc3RMZXR0ZXIoZmlyc3RMZXR0ZXIpKSB7CiAgICAgICAgICAgICBtX2hh
bmRsZWRGaXJzdExldHRlciA9IHRydWU7CkBAIC04NjcsNyArODY3LDcgQEAgYm9vbCBUZXh0SXRl
cmF0b3I6OmhhbmRsZVJlcGxhY2VkRWxlbWVudAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBhdXRvJiByZW5kZXJlciA9ICptX25vZGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKHJlbmRlcmVy
LnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgJiYgIShtX2JlaGF2aW9yICYgVGV4dEl0
ZXJhdG9ySWdub3Jlc1N0eWxlVmlzaWJpbGl0eSkpCisgICAgaWYgKHJlbmRlcmVyLnN0eWxlKCku
dmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgJiYgIShtX2JlaGF2aW9yICYgVGV4
dEl0ZXJhdG9ySWdub3Jlc1N0eWxlVmlzaWJpbGl0eSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGlmIChtX2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENvbGxhcHNlZFNwYWNlKSB7CkBAIC0x
MTE1LDcgKzExMTUsNyBAQCBib29sIFRleHRJdGVyYXRvcjo6c2hvdWxkUmVwcmVzZW50Tm9kZU9m
CiAgICAgLy8gSWYgdGhpcyBub2RlIGlzIHVucmVuZGVyZWQgb3IgaW52aXNpYmxlIHRoZSBWaXNp
YmxlUG9zaXRpb24gY2hlY2tzIGJlbG93IHdvbid0IGhhdmUgbXVjaCBtZWFuaW5nLgogICAgIC8v
IEFkZGl0aW9uYWxseSwgaWYgdGhlIHJhbmdlIHdlIGFyZSBpdGVyYXRpbmcgb3ZlciBjb250YWlu
cyBodWdlIHNlY3Rpb25zIG9mIHVucmVuZGVyZWQgY29udGVudCwgCiAgICAgLy8gd2Ugd291bGQg
Y3JlYXRlIFZpc2libGVQb3NpdGlvbnMgb24gZXZlcnkgY2FsbCB0byB0aGlzIGZ1bmN0aW9uIHdp
dGhvdXQgdGhpcyBjaGVjay4KLSAgICBpZiAoIW1fbm9kZS0+cmVuZGVyZXIoKSB8fCBtX25vZGUt
PnJlbmRlcmVyKCktPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUKKyAgICBpZiAoIW1f
bm9kZS0+cmVuZGVyZXIoKSB8fCBtX25vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCkudmlzaWJpbGl0
eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUKICAgICAgICAgfHwgKGlzPFJlbmRlckJsb2NrRmxv
dz4oKm1fbm9kZS0+cmVuZGVyZXIoKSkgJiYgIWRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKm1f
bm9kZS0+cmVuZGVyZXIoKSkuaGVpZ2h0KCkgJiYgIWlzPEhUTUxCb2R5RWxlbWVudD4oKm1fbm9k
ZSkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEzMzEsMTAgKzEzMzEsMTAgQEAgdm9p
ZCBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjphZAogICAgICAgICBpZiAoIW1faGFu
ZGxlZE5vZGUgJiYgIShtX25vZGUgPT0gbV9lbmRDb250YWluZXIgJiYgIW1fZW5kT2Zmc2V0KSkg
ewogICAgICAgICAgICAgYXV0byogcmVuZGVyZXIgPSBtX25vZGUtPnJlbmRlcmVyKCk7CiAgICAg
ICAgICAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzVGV4dCgpICYmIG1fbm9kZS0+aXNU
ZXh0Tm9kZSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLnZpc2li
aWxpdHkoKSA9PSBWSVNJQkxFICYmIG1fb2Zmc2V0ID4gMCkKKyAgICAgICAgICAgICAgICBpZiAo
cmVuZGVyZXItPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUgJiYg
bV9vZmZzZXQgPiAwKQogICAgICAgICAgICAgICAgICAgICBtX2hhbmRsZWROb2RlID0gaGFuZGxl
VGV4dE5vZGUoKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVuZGVyZXIgJiYgKHJlbmRlcmVy
LT5pc0ltYWdlKCkgfHwgcmVuZGVyZXItPmlzV2lkZ2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKHJlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFICYmIG1fb2Zmc2V0
ID4gMCkKKyAgICAgICAgICAgICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkudmlzaWJpbGl0eSgp
ID09IFZpc2liaWxpdHk6OlZpc2libGUgJiYgbV9vZmZzZXQgPiAwKQogICAgICAgICAgICAgICAg
ICAgICBtX2hhbmRsZWROb2RlID0gaGFuZGxlUmVwbGFjZWRFbGVtZW50KCk7CiAgICAgICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgICAgICBtX2hhbmRsZWROb2RlID0gaGFuZGxlTm9uVGV4dE5v
ZGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAJKHJldmlz
aW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTE4MSw3ICsxMTgxLDcgQEAgTm9kZSogZmluZFN0YXJ0T2ZQYXJh
Z3JhcGgoTm9kZSogc3RhcnRObwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAg
ICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gci0+c3R5bGUoKTsKLSAgICAgICAgaWYg
KHN0eWxlLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKSB7CisgICAgICAgIGlmIChzdHlsZS52aXNp
YmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkgewogICAgICAgICAgICAgbiA9IE5vZGVU
cmF2ZXJzYWw6OnByZXZpb3VzUG9zdE9yZGVyKCpuLCBzdGFydEJsb2NrKTsKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9CkBAIC0xMjQzLDcgKzEyNDMsNyBAQCBOb2RlKiBmaW5kRW5k
T2ZQYXJhZ3JhcGgoTm9kZSogc3RhcnROb2RlCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgfQogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSByLT5zdHlsZSgpOwotICAg
ICAgICBpZiAoc3R5bGUudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpIHsKKyAgICAgICAgaWYgKHN0
eWxlLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKSB7CiAgICAgICAgICAgICBu
ID0gTm9kZVRyYXZlcnNhbDo6bmV4dCgqbiwgc3RheUluc2lkZUJsb2NrKTsKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9F
ZGl0b3JJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRp
dG9ySU9TLm1tCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lv
cy9FZGl0b3JJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTkyLDM3ICs5MiwzNiBAQCB2b2lkIEVk
aXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCCiAgICAgICAgIHJldHVybjsKICAgICAg
ICAgCiAgICAgY29uc3QgY2hhciAqbmV3VmFsdWUgPSBudWxscHRyOwotICAgIEVUZXh0QWxpZ24g
dGV4dEFsaWduID0gKnZhbHVlOworICAgIFRleHRBbGlnbk1vZGUgdGV4dEFsaWduID0gKnZhbHVl
OwogICAgIHN3aXRjaCAodGV4dEFsaWduKSB7Ci0gICAgICAgIGNhc2UgVEFTVEFSVDoKLSAgICAg
ICAgY2FzZSBUQUVORDoKLSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChkaXJlY3Rpb24p
IHsKLSAgICAgICAgICAgICAgICBjYXNlIE5hdHVyYWxXcml0aW5nRGlyZWN0aW9uOgotICAgICAg
ICAgICAgICAgICAgICAvLyBuby1vcAotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICBjYXNlIExlZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlvbjoKLSAgICAgICAgICAg
ICAgICAgICAgbmV3VmFsdWUgPSAibGVmdCI7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIGNhc2UgUmlnaHRUb0xlZnRXcml0aW5nRGlyZWN0aW9uOgotICAgICAg
ICAgICAgICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBMRUZUOgotICAgICAgICBjYXNlIFdFQktJVF9MRUZUOgotICAgICAgICAgICAgbmV3
VmFsdWUgPSAicmlnaHQiOworICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CisgICAgY2Fz
ZSBUZXh0QWxpZ25Nb2RlOjpFbmQ6IHsKKyAgICAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKKyAg
ICAgICAgY2FzZSBOYXR1cmFsV3JpdGluZ0RpcmVjdGlvbjoKKyAgICAgICAgICAgIC8vIG5vLW9w
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBSSUdIVDoKLSAgICAgICAgY2FzZSBX
RUJLSVRfUklHSFQ6CisgICAgICAgIGNhc2UgTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uOgog
ICAgICAgICAgICAgbmV3VmFsdWUgPSAibGVmdCI7CiAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBDRU5URVI6Ci0gICAgICAgIGNhc2UgV0VCS0lUX0NFTlRFUjoKLSAgICAgICAgY2Fz
ZSBKVVNUSUZZOgotICAgICAgICAgICAgLy8gbm8tb3AKKyAgICAgICAgY2FzZSBSaWdodFRvTGVm
dFdyaXRpbmdEaXJlY3Rpb246CisgICAgICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7CiAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0TGVm
dDoKKyAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFRleHRBbGlnbk1vZGU6OlJpZ2h0OgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0Umln
aHQ6CisgICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENl
bnRlcjoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6Okp1c3RpZnk6CisgICAgICAgIC8vIG5vLW9w
CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGlmICghbmV3VmFsdWUpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIxMCw3ICsyMTAsNyBAQCBib29sIEhUTUxBcmVhRWxlbWVudDo6aXNNb3VzZUZvY3VzYWJsZSgp
CiBib29sIEhUTUxBcmVhRWxlbWVudDo6aXNGb2N1c2FibGUoKSBjb25zdAogewogICAgIFJlZlB0
cjxIVE1MSW1hZ2VFbGVtZW50PiBpbWFnZSA9IGltYWdlRWxlbWVudCgpOwotICAgIGlmICghaW1h
Z2UgfHwgIWltYWdlLT5yZW5kZXJlcigpIHx8IGltYWdlLT5yZW5kZXJlcigpLT5zdHlsZSgpLnZp
c2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmICghaW1hZ2UgfHwgIWltYWdlLT5yZW5kZXJl
cigpIHx8IGltYWdlLT5yZW5kZXJlcigpLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmls
aXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gc3VwcG9y
dHNGb2N1cygpICYmIEVsZW1lbnQ6OnRhYkluZGV4KCkgPj0gMDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDEx
ICsxMTYsMTEgQEAgYm9vbCBIVE1MRm9ybUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoYwogICAg
IGlmICghcGFyZW50SXNUYWJsZUVsZW1lbnRQYXJ0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAot
ICAgIEVEaXNwbGF5IGRpc3BsYXkgPSBzdHlsZS5kaXNwbGF5KCk7Ci0gICAgYm9vbCBmb3JtSXNU
YWJsZVBhcnQgPSBkaXNwbGF5ID09IFRBQkxFIHx8IGRpc3BsYXkgPT0gSU5MSU5FX1RBQkxFIHx8
IGRpc3BsYXkgPT0gVEFCTEVfUk9XX0dST1VQCi0gICAgICAgIHx8IGRpc3BsYXkgPT0gVEFCTEVf
SEVBREVSX0dST1VQIHx8IGRpc3BsYXkgPT0gVEFCTEVfRk9PVEVSX0dST1VQIHx8IGRpc3BsYXkg
PT0gVEFCTEVfUk9XCi0gICAgICAgIHx8IGRpc3BsYXkgPT0gVEFCTEVfQ09MVU1OX0dST1VQIHx8
IGRpc3BsYXkgPT0gVEFCTEVfQ09MVU1OIHx8IGRpc3BsYXkgPT0gVEFCTEVfQ0VMTAotICAgICAg
ICB8fCBkaXNwbGF5ID09IFRBQkxFX0NBUFRJT047CisgICAgRGlzcGxheVR5cGUgZGlzcGxheSA9
IHN0eWxlLmRpc3BsYXkoKTsKKyAgICBib29sIGZvcm1Jc1RhYmxlUGFydCA9IGRpc3BsYXkgPT0g
RGlzcGxheVR5cGU6OlRhYmxlIHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OklubGluZVRhYmxl
IHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OlRhYmxlUm93R3JvdXAKKyAgICAgICAgfHwgZGlz
cGxheSA9PSBEaXNwbGF5VHlwZTo6VGFibGVIZWFkZXJHcm91cCB8fCBkaXNwbGF5ID09IERpc3Bs
YXlUeXBlOjpUYWJsZUZvb3Rlckdyb3VwIHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OlRhYmxl
Um93CisgICAgICAgIHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OlRhYmxlQ29sdW1uR3JvdXAg
fHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1bW4gfHwgZGlzcGxheSA9PSBEaXNw
bGF5VHlwZTo6VGFibGVDZWxsCisgICAgICAgIHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OlRh
YmxlQ2FwdGlvbjsKIAogICAgIHJldHVybiBmb3JtSXNUYWJsZVBhcnQ7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAkocmV2aXNpb24gMjMyMTIzKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIEhUTUxJRnJhbWVFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjCiAKIGJvb2wgSFRNTElGcmFtZUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlKQogewotICAgIHJldHVybiBpc1VSTEFsbG93ZWQoKSAmJiBzdHls
ZS5kaXNwbGF5KCkgIT0gTk9ORTsKKyAgICByZXR1cm4gaXNVUkxBbGxvd2VkKCkgJiYgc3R5bGUu
ZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpOb25lOwogfQogCiBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gSFRNTElGcmFtZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHls
ZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDYw
LDEzICsyMDYwLDEzIEBAIFJlbmRlclN0eWxlIEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZUlubmUK
ICAgICB0ZXh0QmxvY2tTdHlsZS5pbmhlcml0RnJvbShzdHlsZSk7CiAgICAgYWRqdXN0SW5uZXJU
ZXh0U3R5bGUoc3R5bGUsIHRleHRCbG9ja1N0eWxlKTsKIAotICAgIHRleHRCbG9ja1N0eWxlLnNl
dFdoaXRlU3BhY2UoUFJFKTsKKyAgICB0ZXh0QmxvY2tTdHlsZS5zZXRXaGl0ZVNwYWNlKFdoaXRl
U3BhY2U6OlByZSk7CiAgICAgdGV4dEJsb2NrU3R5bGUuc2V0T3ZlcmZsb3dXcmFwKE92ZXJmbG93
V3JhcDo6Tm9ybWFsKTsKICAgICB0ZXh0QmxvY2tTdHlsZS5zZXRPdmVyZmxvd1goT3ZlcmZsb3c6
OkhpZGRlbik7CiAgICAgdGV4dEJsb2NrU3R5bGUuc2V0T3ZlcmZsb3dZKE92ZXJmbG93OjpIaWRk
ZW4pOwogICAgIHRleHRCbG9ja1N0eWxlLnNldFRleHRPdmVyZmxvdyhzaG91bGRUcnVuY2F0ZVRl
eHQoc3R5bGUpID8gVGV4dE92ZXJmbG93OjpFbGxpcHNpcyA6IFRleHRPdmVyZmxvdzo6Q2xpcCk7
CiAKLSAgICB0ZXh0QmxvY2tTdHlsZS5zZXREaXNwbGF5KEJMT0NLKTsKKyAgICB0ZXh0QmxvY2tT
dHlsZS5zZXREaXNwbGF5KERpc3BsYXlUeXBlOjpCbG9jayk7CiAKICAgICBpZiAoaGFzQXV0b0Zp
bGxTdHJvbmdQYXNzd29yZEJ1dHRvbigpKSB7CiAgICAgICAgIHRleHRCbG9ja1N0eWxlLnNldENv
bG9yKHsgMC4wZiwgMC4wZiwgMC4wZiwgMC42ZiB9KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjMsNyArNjMsNyBAQCBib29sIEhUTUxPcHRHcm91cEVsZW1lbnQ6OmlzRm9jdXNhYmxlKCkgCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBPcHRncm91cCBlbGVtZW50cyBkbyBub3QgaGF2
ZSBhIHJlbmRlcmVyLgogICAgIGF1dG8qIHN0eWxlID0gY29uc3RfY2FzdDxIVE1MT3B0R3JvdXBF
bGVtZW50Jj4oKnRoaXMpLmNvbXB1dGVkU3R5bGUoKTsKLSAgICByZXR1cm4gc3R5bGUgJiYgc3R5
bGUtPmRpc3BsYXkoKSAhPSBOT05FOworICAgIHJldHVybiBzdHlsZSAmJiBzdHlsZS0+ZGlzcGxh
eSgpICE9IERpc3BsYXlUeXBlOjpOb25lOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxP
cHRHcm91cEVsZW1lbnQ6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTkzLDcgKzkzLDcgQEAgYm9vbCBIVE1MT3B0aW9uRWxlbWVudDo6aXNGb2N1c2FibGUoKSBjbwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgLy8gT3B0aW9uIGVsZW1lbnRzIGRvIG5vdCBoYXZl
IGEgcmVuZGVyZXIuCiAgICAgYXV0byogc3R5bGUgPSBjb25zdF9jYXN0PEhUTUxPcHRpb25FbGVt
ZW50Jj4oKnRoaXMpLmNvbXB1dGVkU3R5bGUoKTsKLSAgICByZXR1cm4gc3R5bGUgJiYgc3R5bGUt
PmRpc3BsYXkoKSAhPSBOT05FOworICAgIHJldHVybiBzdHlsZSAmJiBzdHlsZS0+ZGlzcGxheSgp
ICE9IERpc3BsYXlUeXBlOjpOb25lOwogfQogCiBib29sIEhUTUxPcHRpb25FbGVtZW50OjptYXRj
aGVzRGVmYXVsdFBzZXVkb0NsYXNzKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUx
LDcgKzU1MSw3IEBAIFJlbmRlclN0eWxlIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNyZWF0ZUkKICAg
ICBhdXRvIHRleHRCbG9ja1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwogICAgIHRleHRC
bG9ja1N0eWxlLmluaGVyaXRGcm9tKHN0eWxlKTsKICAgICBhZGp1c3RJbm5lclRleHRTdHlsZShz
dHlsZSwgdGV4dEJsb2NrU3R5bGUpOwotICAgIHRleHRCbG9ja1N0eWxlLnNldERpc3BsYXkoQkxP
Q0spOworICAgIHRleHRCbG9ja1N0eWxlLnNldERpc3BsYXkoRGlzcGxheVR5cGU6OkJsb2NrKTsK
IAogI2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBXZSdyZSBhZGRpbmcgdGhyZWUgZXh0cmEgcGl4
ZWxzIG9mIHBhZGRpbmcgdG8gbGluZSB0ZXh0YXJlYXMgdXAgd2l0aCB0ZXh0IGZpZWxkcy4gIApJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDQsNyArMzA0LDcg
QEAgdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0U2VsZQogICAgICAgICBhdXRv
KiByZW5kZXJlclRleHRDb250cm9sID0gcmVuZGVyZXIoKTsKIAogICAgICAgICBpZiAoaW5uZXJU
ZXh0ICYmIHJlbmRlcmVyVGV4dENvbnRyb2wpIHsKLSAgICAgICAgICAgIGlmIChyZW5kZXJlclRl
eHRDb250cm9sLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBISURERU4gfHwgIWlubmVyVGV4dC0+
cmVuZGVyQm94KCkgfHwgIWlubmVyVGV4dC0+cmVuZGVyQm94KCktPmhlaWdodCgpKSB7CisgICAg
ICAgICAgICBpZiAocmVuZGVyZXJUZXh0Q29udHJvbC0+c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0g
VmlzaWJpbGl0eTo6SGlkZGVuIHx8ICFpbm5lclRleHQtPnJlbmRlckJveCgpIHx8ICFpbm5lclRl
eHQtPnJlbmRlckJveCgpLT5oZWlnaHQoKSkgewogICAgICAgICAgICAgICAgIGNhY2hlU2VsZWN0
aW9uKHN0YXJ0LCBlbmQsIGRpcmVjdGlvbik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgfQpAQCAtODIxLDE5ICs4MjEsMTkgQEAgdm9pZCBIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudDo6YWRqdXN0SQogICAgICAgICAvLyAod2hpY2ggY2Fubm90IGhhdmUgUlRMIGRpcmVj
dGlvbmFsaXR5KSB3aWxsIGFwcGVhciB0byB0aGUgcmlnaHQgb2YgdGhlIG1hc2tlZCBjaGFyYWN0
ZXJzLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzcwMjQzNzU+LgogICAgICAgICAKICAgICAgICAgc3dp
dGNoICh0ZXh0QmxvY2tTdHlsZS50ZXh0QWxpZ24oKSkgewotICAgICAgICBjYXNlIFRBU1RBUlQ6
Ci0gICAgICAgIGNhc2UgSlVTVElGWToKLSAgICAgICAgICAgIHRleHRCbG9ja1N0eWxlLnNldFRl
eHRBbGlnbihSSUdIVCk7CisgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CisgICAg
ICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKKyAgICAgICAgICAgIHRleHRCbG9ja1N0
eWxlLnNldFRleHRBbGlnbihUZXh0QWxpZ25Nb2RlOjpSaWdodCk7CiAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBUQUVORDoKLSAgICAgICAgICAgIHRleHRCbG9ja1N0eWxlLnNldFRl
eHRBbGlnbihMRUZUKTsKKyAgICAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpFbmQ6CisgICAgICAg
ICAgICB0ZXh0QmxvY2tTdHlsZS5zZXRUZXh0QWxpZ24oVGV4dEFsaWduTW9kZTo6TGVmdCk7CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBMRUZUOgotICAgICAgICBjYXNlIFJJR0hU
OgotICAgICAgICBjYXNlIENFTlRFUjoKLSAgICAgICAgY2FzZSBXRUJLSVRfTEVGVDoKLSAgICAg
ICAgY2FzZSBXRUJLSVRfUklHSFQ6Ci0gICAgICAgIGNhc2UgV0VCS0lUX0NFTlRFUjoKKyAgICAg
ICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgorICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6
OlJpZ2h0OgorICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKKyAgICAgICAgY2Fz
ZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgorICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6
OldlYktpdFJpZ2h0OgorICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzI5LDcgKzMyOSw3IEBAIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6YXV0b3BsYXlQZXJtaXQK
ICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiUmV0dXJuaW5nIEZBTFNFIGJlY2F1
c2UgZWxlbWVudCBoYXMgbm8gcmVuZGVyZXIiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KLSAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpIHsK
KyAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZp
c2libGUpIHsKICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiUmV0dXJuaW5nIEZB
TFNFIGJlY2F1c2UgZWxlbWVudCBpcyBub3QgdmlzaWJsZSIpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQpAQCAtODExLDcgKzgxMSw3IEBAIHN0YXRpYyBib29sIGlzTWFpbkNvbnRlbnRG
b3JQdXJwb3Nlc09mQXUKICAgICAvLyBFbGVtZW50cyB3aGljaCBhcmUgaGlkZGVuIGJ5IHN0eWxl
LCBvciBoYXZlIGJlZW4gc2Nyb2xsZWQgb3V0IG9mIHZpZXcsIGNhbm5vdCBiZSBtYWluIGNvbnRl
bnQuCiAgICAgLy8gQnV0IGVsZW1lbnRzIHdoaWNoIGhhdmUgYXVkaW8gJiB2aWRlbyBhbmQgYXJl
IGFscmVhZHkgcGxheWluZyBzaG91bGQgbm90IHN0b3AgcGxheWluZyBiZWNhdXNlCiAgICAgLy8g
dGhleSBhcmUgc2Nyb2xsZWQgb2ZmIHRoZSBwYWdlLgotICAgIGlmIChyZW5kZXJlci0+c3R5bGUo
KS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkudmlz
aWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAocmVuZGVyZXItPnZpc2libGVJblZpZXdwb3J0U3RhdGUoKSAhPSBWaXNpYmxlSW5W
aWV3cG9ydFN0YXRlOjpZZXMgJiYgIWVsZW1lbnQuaXNQbGF5aW5nKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvUnVieUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvUnVieUVsZW1lbnQuY3BwCShyZXZpc2lvbiAy
MzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1J1YnlFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTMsOSArNTMsOSBAQCBSZWY8UnVieUVsZW1lbnQ+IFJ1YnlFbGVtZW50OjpjcmVh
dGUoRG9jCiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBSdWJ5RWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYgaW5zZXJ0aW9uUG9zaXRpb24pCiB7Ci0gICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBJTkxJ
TkUpCisgICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lKQogICAg
ICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyUnVieUFzSW5saW5lPigqdGhpcywgV1RG
TW92ZShzdHlsZSkpOwotICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gQkxPQ0sgfHwgc3R5bGUu
ZGlzcGxheSgpID09IElOTElORV9CTE9DSykKKyAgICBpZiAoc3R5bGUuZGlzcGxheSgpID09IERp
c3BsYXlUeXBlOjpCbG9jayB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OklubGlu
ZUJsb2NrKQogICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyUnVieUFzQmxvY2s+
KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiAgICAgcmV0dXJuIEhUTUxFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoV1RGTW92ZShzdHlsZSksIGluc2VydGlvblBvc2l0aW9uKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvUnVieVRleHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL1J1YnlUZXh0RWxlbWVudC5jcHAJKHJldmlzaW9uIDIzMjEy
MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvUnVieVRleHRFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTYsNyArNTYsNyBAQCBSZWY8UnVieVRleHRFbGVtZW50PiBSdWJ5VGV4dEVsZW1l
bnQ6OmNyCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gUnVieVRleHRFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0
aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikKIHsKICAgICAvLyBSZW5kZXJSdWJ5VGV4dCByZXF1aXJl
cyBpdHMgcGFyZW50IHRvIGJlIFJlbmRlclJ1YnlSdW4uCi0gICAgaWYgKGlzUnVieShpbnNlcnRp
b25Qb3NpdGlvbi5wYXJlbnQoKSkgJiYgc3R5bGUuZGlzcGxheSgpID09IEJMT0NLKQorICAgIGlm
IChpc1J1YnkoaW5zZXJ0aW9uUG9zaXRpb24ucGFyZW50KCkpICYmIHN0eWxlLmRpc3BsYXkoKSA9
PSBEaXNwbGF5VHlwZTo6QmxvY2spCiAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5k
ZXJSdWJ5VGV4dD4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKICAgICByZXR1cm4gSFRNTEVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihXVEZNb3ZlKHN0eWxlKSwgaW5zZXJ0aW9uUG9zaXRp
b24pOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5l
ckVsZW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9U
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDgsNyArMTA4LDcgQEAgc3RkOjpvcHRpb25hbDxFbGVtZW50U3R5bGU+IFRl
eHRDb250cm9sSQogICAgIG5ld1N0eWxlLT5pbmhlcml0RnJvbSgqc2hhZG93SG9zdFN0eWxlKTsK
ICAgICBuZXdTdHlsZS0+c2V0RmxleEdyb3coMSk7CiAgICAgbmV3U3R5bGUtPnNldE1pbldpZHRo
KExlbmd0aCB7IDAsIEZpeGVkIH0pOyAvLyBOZWVkZWQgZm9yIGNvcnJlY3Qgc2hyaW5raW5nLgot
ICAgIG5ld1N0eWxlLT5zZXREaXNwbGF5KEJMT0NLKTsKKyAgICBuZXdTdHlsZS0+c2V0RGlzcGxh
eShEaXNwbGF5VHlwZTo6QmxvY2spOwogICAgIG5ld1N0eWxlLT5zZXREaXJlY3Rpb24oTFRSKTsK
ICAgICAvLyBXZSBkb24ndCB3YW50IHRoZSBzaGFkb3cgRE9NIHRvIGJlIGVkaXRhYmxlLCBzbyB3
ZSBzZXQgdGhpcyBibG9jayB0byByZWFkLW9ubHkgaW4gY2FzZSB0aGUgaW5wdXQgaXRzZWxmIGlz
IGVkaXRhYmxlLgogICAgIG5ld1N0eWxlLT5zZXRVc2VyTW9kaWZ5KFVzZXJNb2RpZnk6OlJlYWRP
bmx5KTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gVGV4
dENvbnRyb2xQCiAgICAgYXV0byBzdHlsZSA9IHJlc29sdmVTdHlsZSgmcGFyZW50U3R5bGUpOwog
CiAgICAgYXV0byYgY29udHJvbEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudD4oKmNvbnRhaW5pbmdTaGFkb3dSb290KCktPmhvc3QoKSk7Ci0gICAgc3R5bGUucmVu
ZGVyU3R5bGUtPnNldERpc3BsYXkoY29udHJvbEVsZW1lbnQuaXNQbGFjZWhvbGRlclZpc2libGUo
KSA/IEJMT0NLIDogTk9ORSk7CisgICAgc3R5bGUucmVuZGVyU3R5bGUtPnNldERpc3BsYXkoY29u
dHJvbEVsZW1lbnQuaXNQbGFjZWhvbGRlclZpc2libGUoKSA/IERpc3BsYXlUeXBlOjpCbG9jayA6
IERpc3BsYXlUeXBlOjpOb25lKTsKIAogICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50Pihjb250
cm9sRWxlbWVudCkpIHsKICAgICAgICAgYXV0byYgaW5wdXRFbGVtZW50ID0gZG93bmNhc3Q8SFRN
TElucHV0RWxlbWVudD4oY29udHJvbEVsZW1lbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01ODYsOSArNTg2LDkgQEAgc3RhdGljIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpP
dmVybAogICAgIH0KIAogICAgIGlmIChub2RlLT5pc1BzZXVkb0VsZW1lbnQoKSkgewotICAgICAg
ICBpZiAobm9kZS0+cHNldWRvSWQoKSA9PSBCRUZPUkUpCisgICAgICAgIGlmIChub2RlLT5wc2V1
ZG9JZCgpID09IFBzZXVkb0lkOjpCZWZvcmUpCiAgICAgICAgICAgICBlbGVtZW50RGF0YS0+c2V0
UHNldWRvRWxlbWVudCgiYmVmb3JlIik7Ci0gICAgICAgIGVsc2UgaWYgKG5vZGUtPnBzZXVkb0lk
KCkgPT0gQUZURVIpCisgICAgICAgIGVsc2UgaWYgKG5vZGUtPnBzZXVkb0lkKCkgPT0gUHNldWRv
SWQ6OkFmdGVyKQogICAgICAgICAgICAgZWxlbWVudERhdGEtPnNldFBzZXVkb0VsZW1lbnQoImFm
dGVyIik7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckNTU0FnZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRN
YXRjaGVkU3R5bGVzCiAKICAgICBFbGVtZW50KiBvcmlnaW5hbEVsZW1lbnQgPSBlbGVtZW50Owog
ICAgIFBzZXVkb0lkIGVsZW1lbnRQc2V1ZG9JZCA9IGVsZW1lbnQtPnBzZXVkb0lkKCk7Ci0gICAg
aWYgKGVsZW1lbnRQc2V1ZG9JZCkgeworICAgIGlmIChlbGVtZW50UHNldWRvSWQgIT0gUHNldWRv
SWQ6Ok5vbmUpIHsKICAgICAgICAgZWxlbWVudCA9IGRvd25jYXN0PFBzZXVkb0VsZW1lbnQ+KCpl
bGVtZW50KS5ob3N0RWxlbWVudCgpOwogICAgICAgICBpZiAoIWVsZW1lbnQpIHsKICAgICAgICAg
ICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJQc2V1ZG8gZWxlbWVudCBoYXMgbm8gcGFy
ZW50Iik7CkBAIC00NTUsNyArNDU1LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0
Y2hlZFN0eWxlcwogICAgICAgICAvLyBQc2V1ZG8gZWxlbWVudHMuCiAgICAgICAgIGlmICghaW5j
bHVkZVBzZXVkbyB8fCAqaW5jbHVkZVBzZXVkbykgewogICAgICAgICAgICAgYXV0byBwc2V1ZG9F
bGVtZW50cyA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpQc2V1ZG9J
ZE1hdGNoZXM+OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIGZvciAoUHNldWRvSWQgcHNldWRvSWQg
PSBGSVJTVF9QVUJMSUNfUFNFVURPSUQ7IHBzZXVkb0lkIDwgQUZURVJfTEFTVF9JTlRFUk5BTF9Q
U0VVRE9JRDsgcHNldWRvSWQgPSBzdGF0aWNfY2FzdDxQc2V1ZG9JZD4ocHNldWRvSWQgKyAxKSkg
eworICAgICAgICAgICAgZm9yIChQc2V1ZG9JZCBwc2V1ZG9JZCA9IFBzZXVkb0lkOjpGaXJzdFB1
YmxpY1BzZXVkb0lkOyBwc2V1ZG9JZCA8IFBzZXVkb0lkOjpBZnRlckxhc3RJbnRlcm5hbFBzZXVk
b0lkOyBwc2V1ZG9JZCA9IHN0YXRpY19jYXN0PFBzZXVkb0lkPihzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ocHNldWRvSWQpICsgMSkpIHsKICAgICAgICAgICAgICAgICBhdXRvIG1hdGNoZWRSdWxlcyA9
IHN0eWxlUmVzb2x2ZXIucHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgcHNldWRv
SWQsIFN0eWxlUmVzb2x2ZXI6OkFsbENTU1J1bGVzKTsKICAgICAgICAgICAgICAgICBpZiAoIW1h
dGNoZWRSdWxlcy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byBtYXRjaGVz
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM6OmNyZWF0ZSgpCkBA
IC00NzcsNyArNDc3LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxl
cwogICAgICAgICAgICAgICAgIFN0eWxlUmVzb2x2ZXImIHBhcmVudFN0eWxlUmVzb2x2ZXIgPSBw
YXJlbnRFbGVtZW50LT5zdHlsZVJlc29sdmVyKCk7CiAgICAgICAgICAgICAgICAgYXV0byBwYXJl
bnRNYXRjaGVkUnVsZXMgPSBwYXJlbnRTdHlsZVJlc29sdmVyLnN0eWxlUnVsZXNGb3JFbGVtZW50
KHBhcmVudEVsZW1lbnQsIFN0eWxlUmVzb2x2ZXI6OkFsbENTU1J1bGVzKTsKICAgICAgICAgICAg
ICAgICBhdXRvIGVudHJ5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHls
ZUVudHJ5OjpjcmVhdGUoKQotICAgICAgICAgICAgICAgICAgICAuc2V0TWF0Y2hlZENTU1J1bGVz
KGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QocGFyZW50TWF0Y2hlZFJ1bGVzLCBzdHlsZVJl
c29sdmVyLCAqcGFyZW50RWxlbWVudCwgTk9QU0VVRE8pKQorICAgICAgICAgICAgICAgICAgICAu
c2V0TWF0Y2hlZENTU1J1bGVzKGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QocGFyZW50TWF0
Y2hlZFJ1bGVzLCBzdHlsZVJlc29sdmVyLCAqcGFyZW50RWxlbWVudCwgUHNldWRvSWQ6Ok5vbmUp
KQogICAgICAgICAgICAgICAgICAgICAucmVsZWFzZSgpOwogICAgICAgICAgICAgICAgIGlmIChp
czxTdHlsZWRFbGVtZW50PigqcGFyZW50RWxlbWVudCkgJiYgZG93bmNhc3Q8U3R5bGVkRWxlbWVu
dD4oKnBhcmVudEVsZW1lbnQpLmNzc29tU3R5bGUoKS5sZW5ndGgoKSkgewogICAgICAgICAgICAg
ICAgICAgICBhdXRvJiBzdHlsZVNoZWV0ID0gYXNJbnNwZWN0b3JTdHlsZVNoZWV0KGRvd25jYXN0
PFN0eWxlZEVsZW1lbnQ+KCpwYXJlbnRFbGVtZW50KSk7CkBAIC04OTMsNyArODkzLDcgQEAgUmVm
UHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbAogICAgIGF1dG8gcmVzdWx0ID0g
SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD46OmNyZWF0
ZSgpOwogCiAgICAgU2VsZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRleHQgY29udGV4dChTZWxl
Y3RvckNoZWNrZXI6Ok1vZGU6OkNvbGxlY3RpbmdSdWxlcyk7Ci0gICAgY29udGV4dC5wc2V1ZG9J
ZCA9IHBzZXVkb0lkID8gcHNldWRvSWQgOiBlbGVtZW50LnBzZXVkb0lkKCk7CisgICAgY29udGV4
dC5wc2V1ZG9JZCA9IHBzZXVkb0lkICE9IFBzZXVkb0lkOjpOb25lID8gcHNldWRvSWQgOiBlbGVt
ZW50LnBzZXVkb0lkKCk7CiAgICAgU2VsZWN0b3JDaGVja2VyIHNlbGVjdG9yQ2hlY2tlcihlbGVt
ZW50LmRvY3VtZW50KCkpOwogCiAgICAgZm9yIChhdXRvJiBtYXRjaGVkUnVsZSA6IG1hdGNoZWRS
dWxlcykgewpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01BZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JET01BZ2VudC5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzcyLDEwICsxMzcyLDEwIEBAIHN0YXRpYyBTdHJpbmcgZG9jdW1lbnRCYXNlVVJMU3Ry
aW5nKERvY3UKIHN0YXRpYyBib29sIHBzZXVkb0VsZW1lbnRUeXBlKFBzZXVkb0lkIHBzZXVkb0lk
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpET006OlBzZXVkb1R5cGUqIHR5cGUpCiB7CiAgICAgc3dp
dGNoIChwc2V1ZG9JZCkgewotICAgIGNhc2UgQkVGT1JFOgorICAgIGNhc2UgUHNldWRvSWQ6OkJl
Zm9yZToKICAgICAgICAgKnR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpET006OlBzZXVkb1R5
cGU6OkJlZm9yZTsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBBRlRFUjoKKyAgICBj
YXNlIFBzZXVkb0lkOjpBZnRlcjoKICAgICAgICAgKnR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29s
OjpET006OlBzZXVkb1R5cGU6OkFmdGVyOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZh
dWx0OgpAQCAtMTUwMCw3ICsxNTAwLDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6
Tm9kZT4gSW5zcAogICAgICAgICBpZiAoc3RhdGUgIT0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9N
OjpDdXN0b21FbGVtZW50U3RhdGU6OkJ1aWx0aW4pCiAgICAgICAgICAgICB2YWx1ZS0+c2V0Q3Vz
dG9tRWxlbWVudFN0YXRlKHN0YXRlKTsKIAotICAgICAgICBpZiAoZWxlbWVudC5wc2V1ZG9JZCgp
KSB7CisgICAgICAgIGlmIChlbGVtZW50LnBzZXVkb0lkKCkgIT0gUHNldWRvSWQ6Ok5vbmUpIHsK
ICAgICAgICAgICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6UHNldWRvVHlwZSBwc2V1ZG9U
eXBlOwogICAgICAgICAgICAgaWYgKHBzZXVkb0VsZW1lbnRUeXBlKGVsZW1lbnQucHNldWRvSWQo
KSwgJnBzZXVkb1R5cGUpKQogICAgICAgICAgICAgICAgIHZhbHVlLT5zZXRQc2V1ZG9UeXBlKHBz
ZXVkb1R5cGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JMYXllclRyZWVBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAJKHJldmlzaW9uIDIzMjEyMykK
KysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEsOSArMTkxLDkgQEAgUmVmPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkxheWVyVHJlZTo6TGF5ZQogICAgIGlmIChpc0Fub255bW91cyAmJiAhcmVuZGVy
ZXItPmlzUmVuZGVyVmlldygpKSB7CiAgICAgICAgIGxheWVyT2JqZWN0LT5zZXRJc0Fub255bW91
cyh0cnVlKTsKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gcmVuZGVyZXItPnN0
eWxlKCk7Ci0gICAgICAgIGlmIChzdHlsZS5zdHlsZVR5cGUoKSA9PSBGSVJTVF9MRVRURVIpCisg
ICAgICAgIGlmIChzdHlsZS5zdHlsZVR5cGUoKSA9PSBQc2V1ZG9JZDo6Rmlyc3RMZXR0ZXIpCiAg
ICAgICAgICAgICBsYXllck9iamVjdC0+c2V0UHNldWRvRWxlbWVudCgiZmlyc3QtbGV0dGVyIik7
Ci0gICAgICAgIGVsc2UgaWYgKHN0eWxlLnN0eWxlVHlwZSgpID09IEZJUlNUX0xJTkUpCisgICAg
ICAgIGVsc2UgaWYgKHN0eWxlLnN0eWxlVHlwZSgpID09IFBzZXVkb0lkOjpGaXJzdExpbmUpCiAg
ICAgICAgICAgICBsYXllck9iamVjdC0+c2V0UHNldWRvRWxlbWVudCgiZmlyc3QtbGluZSIpOwog
ICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlv
dXRCb3guY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5
b3V0dHJlZS9MYXlvdXRCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsMjggKzE1MiwyOCBA
QCBib29sIEJveDo6aXNEZXNjZW5kYW50T2YoQ29udGFpbmVyJiBjb250CiAKIGJvb2wgQm94Ojpp
c0lubGluZUJsb2NrQm94KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdHlsZS5kaXNwbGF5KCkg
PT0gSU5MSU5FX0JMT0NLOworICAgIHJldHVybiBtX3N0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5
VHlwZTo6SW5saW5lQmxvY2s7CiB9CiAKIGJvb2wgQm94Ojppc0Jsb2NrTGV2ZWxCb3goKSBjb25z
dAogewogICAgIC8vIEJsb2NrIGxldmVsIGVsZW1lbnRzIGdlbmVyYXRlIGJsb2NrIGxldmVsIGJv
eGVzLgogICAgIGF1dG8gZGlzcGxheSA9IG1fc3R5bGUuZGlzcGxheSgpOwotICAgIHJldHVybiBk
aXNwbGF5ID09IEJMT0NLIHx8IGRpc3BsYXkgPT0gTElTVF9JVEVNIHx8IGRpc3BsYXkgPT0gVEFC
TEU7CisgICAgcmV0dXJuIGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OkJsb2NrIHx8IGRpc3BsYXkg
PT0gRGlzcGxheVR5cGU6Okxpc3RJdGVtIHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OlRhYmxl
OwogfQogCiBib29sIEJveDo6aXNJbmxpbmVMZXZlbEJveCgpIGNvbnN0CiB7CiAgICAgLy8gSW5s
aW5lIGxldmVsIGVsZW1lbnRzIGdlbmVyYXRlIGlubGluZSBsZXZlbCBib3hlcy4KICAgICBhdXRv
IGRpc3BsYXkgPSBtX3N0eWxlLmRpc3BsYXkoKTsKLSAgICByZXR1cm4gZGlzcGxheSA9PSBJTkxJ
TkUgfHwgZGlzcGxheSA9PSBJTkxJTkVfQkxPQ0sgfHwgZGlzcGxheSA9PSBJTkxJTkVfVEFCTEU7
CisgICAgcmV0dXJuIGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OklubGluZSB8fCBkaXNwbGF5ID09
IERpc3BsYXlUeXBlOjpJbmxpbmVCbG9jayB8fCBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpJbmxp
bmVUYWJsZTsKIH0KIAogYm9vbCBCb3g6OmlzQmxvY2tDb250YWluZXJCb3goKSBjb25zdAogewog
ICAgIC8vIElubGluZSBsZXZlbCBlbGVtZW50cyBnZW5lcmF0ZSBpbmxpbmUgbGV2ZWwgYm94ZXMu
CiAgICAgYXV0byBkaXNwbGF5ID0gbV9zdHlsZS5kaXNwbGF5KCk7Ci0gICAgcmV0dXJuIGRpc3Bs
YXkgPT0gQkxPQ0sgfHwgZGlzcGxheSA9PSBMSVNUX0lURU0gfHwgZGlzcGxheSA9PSBJTkxJTkVf
QkxPQ0sgfHwgZGlzcGxheSA9PSBUQUJMRV9DRUxMIHx8IGRpc3BsYXkgPT0gVEFCTEVfQ0FQVElP
TjsgLy8gVE9ETyAmJiAhcmVwbGFjZWQgZWxlbWVudAorICAgIHJldHVybiBkaXNwbGF5ID09IERp
c3BsYXlUeXBlOjpCbG9jayB8fCBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpMaXN0SXRlbSB8fCBk
aXNwbGF5ID09IERpc3BsYXlUeXBlOjpJbmxpbmVCbG9jayB8fCBkaXNwbGF5ID09IERpc3BsYXlU
eXBlOjpUYWJsZUNlbGwgfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDYXB0aW9uOyAv
LyBUT0RPICYmICFyZXBsYWNlZCBlbGVtZW50CiB9CiAKIGJvb2wgQm94Ojppc0luaXRpYWxDb250
YWluaW5nQmxvY2soKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEwLDcgKzE0MTAsNyBAQCBzdGQ6Om9wdGlvbmFsPEN1
cnNvcj4gRXZlbnRIYW5kbGVyOjpzZWxlCiAgICAgY29uc3QgQ3Vyc29yJiBpQmVhbSA9IGhvcml6
b250YWxUZXh0ID8gaUJlYW1DdXJzb3IoKSA6IHZlcnRpY2FsVGV4dEN1cnNvcigpOwogCiAjaWYg
RU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQotICAgIGlmIChzdHlsZSAmJiBzdHlsZS0+Y3Vyc29y
VmlzaWJpbGl0eSgpID09IEN1cnNvclZpc2liaWxpdHlBdXRvSGlkZSkKKyAgICBpZiAoc3R5bGUg
JiYgc3R5bGUtPmN1cnNvclZpc2liaWxpdHkoKSA9PSBDdXJzb3JWaXNpYmlsaXR5OjpBdXRvSGlk
ZSkKICAgICAgICAgc3RhcnRBdXRvSGlkZUN1cnNvclRpbWVyKCk7CiAgICAgZWxzZQogICAgICAg
ICBjYW5jZWxBdXRvSGlkZUN1cnNvclRpbWVyKCk7CkBAIC0xNDczLDggKzE0NzMsOCBAQCBzdGQ6
Om9wdGlvbmFsPEN1cnNvcj4gRXZlbnRIYW5kbGVyOjpzZWxlCiAgICAgICAgICYmICFtX2NhcHR1
cmluZ01vdXNlRXZlbnRzRWxlbWVudCkKICAgICAgICAgcmV0dXJuIGlCZWFtOwogCi0gICAgc3dp
dGNoIChzdHlsZSA/IHN0eWxlLT5jdXJzb3IoKSA6IEN1cnNvckF1dG8pIHsKLSAgICBjYXNlIEN1
cnNvckF1dG86IHsKKyAgICBzd2l0Y2ggKHN0eWxlID8gc3R5bGUtPmN1cnNvcigpIDogQ3Vyc29y
VHlwZTo6QXV0bykgeworICAgIGNhc2UgQ3Vyc29yVHlwZTo6QXV0bzogewogICAgICAgICBib29s
IGVkaXRhYmxlID0gbm9kZS0+aGFzRWRpdGFibGVTdHlsZSgpOwogCiAgICAgICAgIGlmICh1c2VI
YW5kQ3Vyc29yKG5vZGUsIHJlc3VsdC5pc092ZXJMaW5rKCksIHNoaWZ0S2V5KSkKQEAgLTE0OTIs
NzUgKzE0OTIsNzUgQEAgc3RkOjpvcHRpb25hbDxDdXJzb3I+IEV2ZW50SGFuZGxlcjo6c2VsZQog
ICAgICAgICAgICAgcmV0dXJuIGlCZWFtOwogICAgICAgICByZXR1cm4gcG9pbnRlckN1cnNvcigp
OwogICAgIH0KLSAgICBjYXNlIEN1cnNvckRlZmF1bHQ6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpE
ZWZhdWx0OgogICAgICAgICByZXR1cm4gcG9pbnRlckN1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29y
Tm9uZToKKyAgICBjYXNlIEN1cnNvclR5cGU6Ok5vbmU6CiAgICAgICAgIHJldHVybiBub25lQ3Vy
c29yKCk7Ci0gICAgY2FzZSBDdXJzb3JDb250ZXh0TWVudToKKyAgICBjYXNlIEN1cnNvclR5cGU6
OkNvbnRleHRNZW51OgogICAgICAgICByZXR1cm4gY29udGV4dE1lbnVDdXJzb3IoKTsKLSAgICBj
YXNlIEN1cnNvckhlbHA6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpIZWxwOgogICAgICAgICByZXR1
cm4gaGVscEN1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29yUG9pbnRlcjoKKyAgICBjYXNlIEN1cnNv
clR5cGU6OlBvaW50ZXI6CiAgICAgICAgIHJldHVybiBoYW5kQ3Vyc29yKCk7Ci0gICAgY2FzZSBD
dXJzb3JQcm9ncmVzczoKKyAgICBjYXNlIEN1cnNvclR5cGU6OlByb2dyZXNzOgogICAgICAgICBy
ZXR1cm4gcHJvZ3Jlc3NDdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNvcldhaXQ6CisgICAgY2FzZSBD
dXJzb3JUeXBlOjpXYWl0OgogICAgICAgICByZXR1cm4gd2FpdEN1cnNvcigpOwotICAgIGNhc2Ug
Q3Vyc29yQ2VsbDoKKyAgICBjYXNlIEN1cnNvclR5cGU6OkNlbGw6CiAgICAgICAgIHJldHVybiBj
ZWxsQ3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JDcm9zc2hhaXI6CisgICAgY2FzZSBDdXJzb3JU
eXBlOjpDcm9zc2hhaXI6CiAgICAgICAgIHJldHVybiBjcm9zc0N1cnNvcigpOwotICAgIGNhc2Ug
Q3Vyc29yVGV4dDoKKyAgICBjYXNlIEN1cnNvclR5cGU6OlRleHQ6CiAgICAgICAgIHJldHVybiBp
QmVhbUN1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29yVmVydGljYWxUZXh0OgorICAgIGNhc2UgQ3Vy
c29yVHlwZTo6VmVydGljYWxUZXh0OgogICAgICAgICByZXR1cm4gdmVydGljYWxUZXh0Q3Vyc29y
KCk7Ci0gICAgY2FzZSBDdXJzb3JBbGlhczoKKyAgICBjYXNlIEN1cnNvclR5cGU6OkFsaWFzOgog
ICAgICAgICByZXR1cm4gYWxpYXNDdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNvckNvcHk6CisgICAg
Y2FzZSBDdXJzb3JUeXBlOjpDb3B5OgogICAgICAgICByZXR1cm4gY29weUN1cnNvcigpOwotICAg
IGNhc2UgQ3Vyc29yTW92ZToKKyAgICBjYXNlIEN1cnNvclR5cGU6Ok1vdmU6CiAgICAgICAgIHJl
dHVybiBtb3ZlQ3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JOb0Ryb3A6CisgICAgY2FzZSBDdXJz
b3JUeXBlOjpOb0Ryb3A6CiAgICAgICAgIHJldHVybiBub0Ryb3BDdXJzb3IoKTsKLSAgICBjYXNl
IEN1cnNvck5vdEFsbG93ZWQ6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpOb3RBbGxvd2VkOgogICAg
ICAgICByZXR1cm4gbm90QWxsb3dlZEN1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29yR3JhYjoKKyAg
ICBjYXNlIEN1cnNvclR5cGU6OkdyYWI6CiAgICAgICAgIHJldHVybiBncmFiQ3Vyc29yKCk7Ci0g
ICAgY2FzZSBDdXJzb3JHcmFiYmluZzoKKyAgICBjYXNlIEN1cnNvclR5cGU6OkdyYWJiaW5nOgog
ICAgICAgICByZXR1cm4gZ3JhYmJpbmdDdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNvckVSZXNpemU6
CisgICAgY2FzZSBDdXJzb3JUeXBlOjpFUmVzaXplOgogICAgICAgICByZXR1cm4gZWFzdFJlc2l6
ZUN1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29yTlJlc2l6ZToKKyAgICBjYXNlIEN1cnNvclR5cGU6
Ok5SZXNpemU6CiAgICAgICAgIHJldHVybiBub3J0aFJlc2l6ZUN1cnNvcigpOwotICAgIGNhc2Ug
Q3Vyc29yTmVSZXNpemU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpORVJlc2l6ZToKICAgICAgICAg
cmV0dXJuIG5vcnRoRWFzdFJlc2l6ZUN1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29yTndSZXNpemU6
CisgICAgY2FzZSBDdXJzb3JUeXBlOjpOV1Jlc2l6ZToKICAgICAgICAgcmV0dXJuIG5vcnRoV2Vz
dFJlc2l6ZUN1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29yU1Jlc2l6ZToKKyAgICBjYXNlIEN1cnNv
clR5cGU6OlNSZXNpemU6CiAgICAgICAgIHJldHVybiBzb3V0aFJlc2l6ZUN1cnNvcigpOwotICAg
IGNhc2UgQ3Vyc29yU2VSZXNpemU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpTRVJlc2l6ZToKICAg
ICAgICAgcmV0dXJuIHNvdXRoRWFzdFJlc2l6ZUN1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29yU3dS
ZXNpemU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpTV1Jlc2l6ZToKICAgICAgICAgcmV0dXJuIHNv
dXRoV2VzdFJlc2l6ZUN1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29yV1Jlc2l6ZToKKyAgICBjYXNl
IEN1cnNvclR5cGU6OldSZXNpemU6CiAgICAgICAgIHJldHVybiB3ZXN0UmVzaXplQ3Vyc29yKCk7
Ci0gICAgY2FzZSBDdXJzb3JFd1Jlc2l6ZToKKyAgICBjYXNlIEN1cnNvclR5cGU6OkVXUmVzaXpl
OgogICAgICAgICByZXR1cm4gZWFzdFdlc3RSZXNpemVDdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNv
ck5zUmVzaXplOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6TlNSZXNpemU6CiAgICAgICAgIHJldHVy
biBub3J0aFNvdXRoUmVzaXplQ3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JOZXN3UmVzaXplOgor
ICAgIGNhc2UgQ3Vyc29yVHlwZTo6TkVTV1Jlc2l6ZToKICAgICAgICAgcmV0dXJuIG5vcnRoRWFz
dFNvdXRoV2VzdFJlc2l6ZUN1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29yTndzZVJlc2l6ZToKKyAg
ICBjYXNlIEN1cnNvclR5cGU6Ok5XU0VSZXNpemU6CiAgICAgICAgIHJldHVybiBub3J0aFdlc3RT
b3V0aEVhc3RSZXNpemVDdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNvckNvbFJlc2l6ZToKKyAgICBj
YXNlIEN1cnNvclR5cGU6OkNvbHVtblJlc2l6ZToKICAgICAgICAgcmV0dXJuIGNvbHVtblJlc2l6
ZUN1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29yUm93UmVzaXplOgorICAgIGNhc2UgQ3Vyc29yVHlw
ZTo6Um93UmVzaXplOgogICAgICAgICByZXR1cm4gcm93UmVzaXplQ3Vyc29yKCk7Ci0gICAgY2Fz
ZSBDdXJzb3JBbGxTY3JvbGw6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpBbGxTY3JvbGw6CiAgICAg
ICAgIHJldHVybiBtb3ZlQ3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3Jab29tSW46CisgICAgY2Fz
ZSBDdXJzb3JUeXBlOjpab29tSW46CiAgICAgICAgIHJldHVybiB6b29tSW5DdXJzb3IoKTsKLSAg
ICBjYXNlIEN1cnNvclpvb21PdXQ6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpab29tT3V0OgogICAg
ICAgICByZXR1cm4gem9vbU91dEN1cnNvcigpOwogICAgIH0KICAgICByZXR1cm4gcG9pbnRlckN1
cnNvcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODQsNyArMzg0
LDcgQEAgU3RyaW5nIEZyYW1lOjpzZWFyY2hGb3JMYWJlbHNBYm92ZUNlbGwoYwogICAgICAgICAv
LyBzZWFyY2ggd2l0aGluIHRoZSBhYm92ZSBjZWxsIHdlIGZvdW5kIGZvciBhIG1hdGNoCiAgICAg
ICAgIHNpemVfdCBsZW5ndGhTZWFyY2hlZCA9IDA7ICAgIAogICAgICAgICBmb3IgKFRleHQqIHRl
eHROb2RlID0gVGV4dE5vZGVUcmF2ZXJzYWw6OmZpcnN0V2l0aGluKCphYm92ZUNlbGwpOyB0ZXh0
Tm9kZTsgdGV4dE5vZGUgPSBUZXh0Tm9kZVRyYXZlcnNhbDo6bmV4dCgqdGV4dE5vZGUsIGFib3Zl
Q2VsbCkpIHsKLSAgICAgICAgICAgIGlmICghdGV4dE5vZGUtPnJlbmRlcmVyKCkgfHwgdGV4dE5v
ZGUtPnJlbmRlcmVyKCktPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgICAg
ICAgICBpZiAoIXRleHROb2RlLT5yZW5kZXJlcigpIHx8IHRleHROb2RlLT5yZW5kZXJlcigpLT5z
dHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgLy8gRm9yIGVhY2ggdGV4dCBjaHVuaywgcnVuIHRo
ZSByZWdleHAKICAgICAgICAgICAgIFN0cmluZyBub2RlU3RyaW5nID0gdGV4dE5vZGUtPmRhdGEo
KTsKQEAgLTQ0MSw3ICs0NDEsNyBAQCBTdHJpbmcgRnJhbWU6OnNlYXJjaEZvckxhYmVsc0JlZm9y
ZUVsZW1lCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIHNlYXJjaGVkQ2VsbEFib3ZlID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlmIChu
LT5pc1RleHROb2RlKCkgJiYgbi0+cmVuZGVyZXIoKSAmJiBuLT5yZW5kZXJlcigpLT5zdHlsZSgp
LnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKSB7CisgICAgICAgIH0gZWxzZSBpZiAobi0+aXNUZXh0
Tm9kZSgpICYmIG4tPnJlbmRlcmVyKCkgJiYgbi0+cmVuZGVyZXIoKS0+c3R5bGUoKS52aXNpYmls
aXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkgewogICAgICAgICAgICAgLy8gRm9yIGVhY2gg
dGV4dCBjaHVuaywgcnVuIHRoZSByZWdleHAKICAgICAgICAgICAgIFN0cmluZyBub2RlU3RyaW5n
ID0gbi0+bm9kZVZhbHVlKCk7CiAgICAgICAgICAgICAvLyBhZGQgMTAwIGZvciBzbG9wLCB0byBt
YWtlIGl0IG1vcmUgbGlrZWx5IHRoYXQgd2UnbGwgc2VhcmNoIHdob2xlIG5vZGVzCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0NywxNyArNTQ3LDE3
IEBAIFJlZjxTY3JvbGxiYXI+IEZyYW1lVmlldzo6Y3JlYXRlU2Nyb2xsYmEKIAogICAgIC8vIFRy
eSB0aGUgPGJvZHk+IGVsZW1lbnQgZmlyc3QgYXMgYSBzY3JvbGxiYXIgc291cmNlLgogICAgIEhU
TUxFbGVtZW50KiBib2R5ID0gZG9jID8gZG9jLT5ib2R5T3JGcmFtZXNldCgpIDogbnVsbHB0cjsK
LSAgICBpZiAoYm9keSAmJiBib2R5LT5yZW5kZXJlcigpICYmIGJvZHktPnJlbmRlcmVyKCktPnN0
eWxlKCkuaGFzUHNldWRvU3R5bGUoU0NST0xMQkFSKSkKKyAgICBpZiAoYm9keSAmJiBib2R5LT5y
ZW5kZXJlcigpICYmIGJvZHktPnJlbmRlcmVyKCktPnN0eWxlKCkuaGFzUHNldWRvU3R5bGUoUHNl
dWRvSWQ6OlNjcm9sbGJhcikpCiAgICAgICAgIHJldHVybiBSZW5kZXJTY3JvbGxiYXI6OmNyZWF0
ZUN1c3RvbVNjcm9sbGJhcigqdGhpcywgb3JpZW50YXRpb24sIGJvZHkpOwogICAgIAogICAgIC8v
IElmIHRoZSA8Ym9keT4gZGlkbid0IGhhdmUgYSBjdXN0b20gc3R5bGUsIHRoZW4gdGhlIHJvb3Qg
ZWxlbWVudCBtaWdodC4KICAgICBFbGVtZW50KiBkb2NFbGVtZW50ID0gZG9jID8gZG9jLT5kb2N1
bWVudEVsZW1lbnQoKSA6IG51bGxwdHI7Ci0gICAgaWYgKGRvY0VsZW1lbnQgJiYgZG9jRWxlbWVu
dC0+cmVuZGVyZXIoKSAmJiBkb2NFbGVtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLmhhc1BzZXVk
b1N0eWxlKFNDUk9MTEJBUikpCisgICAgaWYgKGRvY0VsZW1lbnQgJiYgZG9jRWxlbWVudC0+cmVu
ZGVyZXIoKSAmJiBkb2NFbGVtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLmhhc1BzZXVkb1N0eWxl
KFBzZXVkb0lkOjpTY3JvbGxiYXIpKQogICAgICAgICByZXR1cm4gUmVuZGVyU2Nyb2xsYmFyOjpj
cmVhdGVDdXN0b21TY3JvbGxiYXIoKnRoaXMsIG9yaWVudGF0aW9uLCBkb2NFbGVtZW50KTsKLSAg
ICAgICAgCisKICAgICAvLyBJZiB3ZSBoYXZlIGFuIG93bmluZyBpZnJhbWUvZnJhbWUgZWxlbWVu
dCwgdGhlbiBpdCBjYW4gc2V0IHRoZSBjdXN0b20gc2Nyb2xsYmFyIGFsc28uCiAgICAgUmVuZGVy
V2lkZ2V0KiBmcmFtZVJlbmRlcmVyID0gZnJhbWUoKS5vd25lclJlbmRlcmVyKCk7Ci0gICAgaWYg
KGZyYW1lUmVuZGVyZXIgJiYgZnJhbWVSZW5kZXJlci0+c3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShT
Q1JPTExCQVIpKQorICAgIGlmIChmcmFtZVJlbmRlcmVyICYmIGZyYW1lUmVuZGVyZXItPnN0eWxl
KCkuaGFzUHNldWRvU3R5bGUoUHNldWRvSWQ6OlNjcm9sbGJhcikpCiAgICAgICAgIHJldHVybiBS
ZW5kZXJTY3JvbGxiYXI6OmNyZWF0ZUN1c3RvbVNjcm9sbGJhcigqdGhpcywgb3JpZW50YXRpb24s
IG51bGxwdHIsICZmcmFtZSgpKTsKICAgICAKICAgICAvLyBOb2JvZHkgc2V0IGEgY3VzdG9tIHN0
eWxlLCBzbyB3ZSBqdXN0IHVzZSBhIG5hdGl2ZSBzY3JvbGxiYXIuCkBAIC0zNjE5LDcgKzM2MTks
NyBAQCBmbG9hdCBGcmFtZVZpZXc6OmFkanVzdFNjcm9sbFN0ZXBGb3JGaXhlCiAgICAgZmxvYXQg
Ym90dG9tT2JzY3VyZWRBcmVhID0gMDsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHBvc2l0aW9uZWRP
YmplY3QgOiAqcG9zaXRpb25lZE9iamVjdHMpIHsKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlID0gcG9zaXRpb25lZE9iamVjdC0+c3R5bGUoKTsKLSAgICAgICAgaWYgKHN0eWxlLnBv
c2l0aW9uKCkgIT0gUG9zaXRpb25UeXBlOjpGaXhlZCB8fCBzdHlsZS52aXNpYmlsaXR5KCkgPT0g
SElEREVOIHx8ICFzdHlsZS5vcGFjaXR5KCkpCisgICAgICAgIGlmIChzdHlsZS5wb3NpdGlvbigp
ICE9IFBvc2l0aW9uVHlwZTo6Rml4ZWQgfHwgc3R5bGUudmlzaWJpbGl0eSgpID09IFZpc2liaWxp
dHk6OkhpZGRlbiB8fCAhc3R5bGUub3BhY2l0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgRmxvYXRRdWFkIGNvbnRlbnRRdWFkID0gcG9zaXRpb25lZE9iamVjdC0+YWJzb2x1
dGVDb250ZW50UXVhZCgpOwpAQCAtMzgyOCw3ICszODI4LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnVw
ZGF0ZVNjcm9sbENvcm5lcigpCiAgICAgICAgIEVsZW1lbnQqIGJvZHkgPSBkb2MgPyBkb2MtPmJv
ZHlPckZyYW1lc2V0KCkgOiBudWxscHRyOwogICAgICAgICBpZiAoYm9keSAmJiBib2R5LT5yZW5k
ZXJlcigpKSB7CiAgICAgICAgICAgICByZW5kZXJlciA9IGJvZHktPnJlbmRlcmVyKCk7Ci0gICAg
ICAgICAgICBjb3JuZXJTdHlsZSA9IHJlbmRlcmVyLT5nZXRVbmNhY2hlZFBzZXVkb1N0eWxlKFBz
ZXVkb1N0eWxlUmVxdWVzdChTQ1JPTExCQVJfQ09STkVSKSwgJnJlbmRlcmVyLT5zdHlsZSgpKTsK
KyAgICAgICAgICAgIGNvcm5lclN0eWxlID0gcmVuZGVyZXItPmdldFVuY2FjaGVkUHNldWRvU3R5
bGUoUHNldWRvU3R5bGVSZXF1ZXN0KFBzZXVkb0lkOjpTY3JvbGxiYXJDb3JuZXIpLCAmcmVuZGVy
ZXItPnN0eWxlKCkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoIWNvcm5lclN0
eWxlKSB7CkBAIC0zODM2LDE0ICszODM2LDE0IEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3Jv
bGxDb3JuZXIoKQogICAgICAgICAgICAgRWxlbWVudCogZG9jRWxlbWVudCA9IGRvYyA/IGRvYy0+
ZG9jdW1lbnRFbGVtZW50KCkgOiBudWxscHRyOwogICAgICAgICAgICAgaWYgKGRvY0VsZW1lbnQg
JiYgZG9jRWxlbWVudC0+cmVuZGVyZXIoKSkgewogICAgICAgICAgICAgICAgIHJlbmRlcmVyID0g
ZG9jRWxlbWVudC0+cmVuZGVyZXIoKTsKLSAgICAgICAgICAgICAgICBjb3JuZXJTdHlsZSA9IHJl
bmRlcmVyLT5nZXRVbmNhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb1N0eWxlUmVxdWVzdChTQ1JPTExC
QVJfQ09STkVSKSwgJnJlbmRlcmVyLT5zdHlsZSgpKTsKKyAgICAgICAgICAgICAgICBjb3JuZXJT
dHlsZSA9IHJlbmRlcmVyLT5nZXRVbmNhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb1N0eWxlUmVxdWVz
dChQc2V1ZG9JZDo6U2Nyb2xsYmFyQ29ybmVyKSwgJnJlbmRlcmVyLT5zdHlsZSgpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKCFjb3JuZXJTdHlsZSkg
ewogICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhbiBvd25pbmcgaWZyYW1lL2ZyYW1lIGVsZW1l
bnQsIHRoZW4gaXQgY2FuIHNldCB0aGUgY3VzdG9tIHNjcm9sbGJhciBhbHNvLgogICAgICAgICAg
ICAgaWYgKFJlbmRlcldpZGdldCogcmVuZGVyZXIgPSBmcmFtZSgpLm93bmVyUmVuZGVyZXIoKSkK
LSAgICAgICAgICAgICAgICBjb3JuZXJTdHlsZSA9IHJlbmRlcmVyLT5nZXRVbmNhY2hlZFBzZXVk
b1N0eWxlKFBzZXVkb1N0eWxlUmVxdWVzdChTQ1JPTExCQVJfQ09STkVSKSwgJnJlbmRlcmVyLT5z
dHlsZSgpKTsKKyAgICAgICAgICAgICAgICBjb3JuZXJTdHlsZSA9IHJlbmRlcmVyLT5nZXRVbmNh
Y2hlZFBzZXVkb1N0eWxlKFBzZXVkb1N0eWxlUmVxdWVzdChQc2V1ZG9JZDo6U2Nyb2xsYmFyQ29y
bmVyKSwgJnJlbmRlcmVyLT5zdHlsZSgpKTsKICAgICAgICAgfQogICAgIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAJKHJldmlz
aW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgZG91YmxlIEFuaW1hdGlv
bkJhc2U6OmR1cmF0aW9uKCkgY29uc3QKIAogYm9vbCBBbmltYXRpb25CYXNlOjpwbGF5U3RhdGVQ
bGF5aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9hbmltYXRpb24tPnBsYXlTdGF0ZSgpID09
IEFuaW1QbGF5U3RhdGVQbGF5aW5nOworICAgIHJldHVybiBtX2FuaW1hdGlvbi0+cGxheVN0YXRl
KCkgPT0gQW5pbWF0aW9uUGxheVN0YXRlOjpQbGF5aW5nOwogfQogCiBib29sIEFuaW1hdGlvbkJh
c2U6OmFuaW1hdGlvbnNNYXRjaChjb25zdCBBbmltYXRpb24mIGFuaW1hdGlvbikgY29uc3QKQEAg
LTU1Miw3ICs1NTIsNyBAQCB2b2lkIEFuaW1hdGlvbkJhc2U6OmZpcmVBbmltYXRpb25FdmVudHNJ
CiAgICAgfQogfQogCi12b2lkIEFuaW1hdGlvbkJhc2U6OnVwZGF0ZVBsYXlTdGF0ZShFQW5pbVBs
YXlTdGF0ZSBwbGF5U3RhdGUpCit2b2lkIEFuaW1hdGlvbkJhc2U6OnVwZGF0ZVBsYXlTdGF0ZShB
bmltYXRpb25QbGF5U3RhdGUgcGxheVN0YXRlKQogewogICAgIGlmICghbV9jb21wb3NpdGVBbmlt
YXRpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTU2MCw3ICs1NjAsNyBAQCB2b2lkIEFuaW1hdGlv
bkJhc2U6OnVwZGF0ZVBsYXlTdGF0ZShFQW5pCiAgICAgLy8gV2hlbiB3ZSBnZXQgaGVyZSwgd2Ug
Y2FuIGhhdmUgb25lIG9mIDQgZGVzaXJlZCBzdGF0ZXM6IHJ1bm5pbmcsIHBhdXNlZCwgc3VzcGVu
ZGVkLCBwYXVzZWQgJiBzdXNwZW5kZWQuCiAgICAgLy8gVGhlIHN0YXRlIG1hY2hpbmUgY2FuIGJl
IGluIG9uZSBvZiB0d28gc3RhdGVzOiBydW5uaW5nLCBwYXVzZWQuCiAgICAgLy8gU2V0IHRoZSBz
dGF0ZSBtYWNoaW5lIHRvIHRoZSBkZXNpcmVkIHN0YXRlLgotICAgIGJvb2wgcGF1c2UgPSBwbGF5
U3RhdGUgPT0gQW5pbVBsYXlTdGF0ZVBhdXNlZCB8fCBtX2NvbXBvc2l0ZUFuaW1hdGlvbi0+aXNT
dXNwZW5kZWQoKTsKKyAgICBib29sIHBhdXNlID0gcGxheVN0YXRlID09IEFuaW1hdGlvblBsYXlT
dGF0ZTo6UGF1c2VkIHx8IG1fY29tcG9zaXRlQW5pbWF0aW9uLT5pc1N1c3BlbmRlZCgpOwogCiAg
ICAgaWYgKHBhdXNlID09IHBhdXNlZCgpICYmICFpc05ldygpKQogICAgICAgICByZXR1cm47Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5oCShy
ZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRp
b25CYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAg
fQogCiAgICAgLy8gQ2FsbGVkIHRvIGNoYW5nZSB0byBvciBmcm9tIHBhdXNlZCBzdGF0ZQotICAg
IHZvaWQgdXBkYXRlUGxheVN0YXRlKEVBbmltUGxheVN0YXRlKTsKKyAgICB2b2lkIHVwZGF0ZVBs
YXlTdGF0ZShBbmltYXRpb25QbGF5U3RhdGUpOwogICAgIGJvb2wgcGxheVN0YXRlUGxheWluZygp
IGNvbnN0OwogCiAgICAgYm9vbCB3YWl0aW5nVG9TdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fYW5p
bWF0aW9uU3RhdGUgPT0gQW5pbWF0aW9uU3RhdGU6Ok5ldyB8fCBtX2FuaW1hdGlvblN0YXRlID09
IEFuaW1hdGlvblN0YXRlOjpTdGFydFdhaXRUaW1lciB8fCBtX2FuaW1hdGlvblN0YXRlID09IEFu
aW1hdGlvblN0YXRlOjpQYXVzZWROZXc7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAJKHJldmlzaW9uIDIz
MjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ3LDE2ICsyNDcsMTYgQEAgc3RhdGljIGlubGlu
ZSBSZWZQdHI8U3R5bGVJbWFnZT4gYmxlbmRGaQogICAgIHJldHVybiBTdHlsZUdlbmVyYXRlZElt
YWdlOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQpKTsKIH0KIAotc3RhdGljIGlubGluZSBFVmlzaWJp
bGl0eSBibGVuZEZ1bmMoY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsaWVudCogYW5pbSwgRVZp
c2liaWxpdHkgZnJvbSwgRVZpc2liaWxpdHkgdG8sIGRvdWJsZSBwcm9ncmVzcykKK3N0YXRpYyBp
bmxpbmUgVmlzaWJpbGl0eSBibGVuZEZ1bmMoY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsaWVu
dCogYW5pbSwgVmlzaWJpbGl0eSBmcm9tLCBWaXNpYmlsaXR5IHRvLCBkb3VibGUgcHJvZ3Jlc3Mp
CiB7CiAgICAgLy8gQW55IG5vbi16ZXJvIHJlc3VsdCBtZWFucyB3ZSBjb25zaWRlciB0aGUgb2Jq
ZWN0IHRvIGJlIHZpc2libGUuIE9ubHkgYXQgMCBkbyB3ZSBjb25zaWRlciB0aGUgb2JqZWN0IHRv
IGJlCi0gICAgLy8gaW52aXNpYmxlLiBUaGUgaW52aXNpYmxlIHZhbHVlIHdlIHVzZSAoSElEREVO
IHZzLiBDT0xMQVBTRSkgZGVwZW5kcyBvbiB0aGUgc3BlY2lmaWVkIGZyb20vdG8gdmFsdWVzLgot
ICAgIGRvdWJsZSBmcm9tVmFsID0gZnJvbSA9PSBWSVNJQkxFID8gMS4gOiAwLjsKLSAgICBkb3Vi
bGUgdG9WYWwgPSB0byA9PSBWSVNJQkxFID8gMS4gOiAwLjsKKyAgICAvLyBpbnZpc2libGUuIFRo
ZSBpbnZpc2libGUgdmFsdWUgd2UgdXNlIChWaXNpYmlsaXR5OjpIaWRkZW4gdnMuIFZpc2liaWxp
dHk6OkNvbGxhcHNlKSBkZXBlbmRzIG9uIHRoZSBzcGVjaWZpZWQgZnJvbS90byB2YWx1ZXMuCisg
ICAgZG91YmxlIGZyb21WYWwgPSBmcm9tID09IFZpc2liaWxpdHk6OlZpc2libGUgPyAxLiA6IDAu
OworICAgIGRvdWJsZSB0b1ZhbCA9IHRvID09IFZpc2liaWxpdHk6OlZpc2libGUgPyAxLiA6IDAu
OwogICAgIGlmIChmcm9tVmFsID09IHRvVmFsKQogICAgICAgICByZXR1cm4gdG87CiAgICAgZG91
YmxlIHJlc3VsdCA9IGJsZW5kRnVuYyhhbmltLCBmcm9tVmFsLCB0b1ZhbCwgcHJvZ3Jlc3MpOwot
ICAgIHJldHVybiByZXN1bHQgPiAwLiA/IFZJU0lCTEUgOiAodG8gIT0gVklTSUJMRSA/IHRvIDog
ZnJvbSk7CisgICAgcmV0dXJuIHJlc3VsdCA+IDAuID8gVmlzaWJpbGl0eTo6VmlzaWJsZSA6ICh0
byAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlID8gdG8gOiBmcm9tKTsKIH0KIAogc3RhdGljIGlubGlu
ZSBMZW5ndGhCb3ggYmxlbmRGdW5jKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQqIGFu
aW0sIGNvbnN0IExlbmd0aEJveCYgZnJvbSwgY29uc3QgTGVuZ3RoQm94JiB0bywgZG91YmxlIHBy
b2dyZXNzKQpAQCAtMTU1Miw3ICsxNTUyLDcgQEAgQ1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVy
TWFwOjpDU1NQcm9wZQogICAgICAgICBuZXcgTGVuZ3RoUHJvcGVydHlXcmFwcGVyPExlbmd0aFNp
emU+KENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXMsICZSZW5kZXJTdHlsZTo6Ym9yZGVy
VG9wUmlnaHRSYWRpdXMsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyVG9wUmlnaHRSYWRpdXMpLAog
ICAgICAgICBuZXcgTGVuZ3RoUHJvcGVydHlXcmFwcGVyPExlbmd0aFNpemU+KENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tTGVmdFJhZGl1cywgJlJlbmRlclN0eWxlOjpib3JkZXJCb3R0b21MZWZ0UmFk
aXVzLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlckJvdHRvbUxlZnRSYWRpdXMpLAogICAgICAgICBu
ZXcgTGVuZ3RoUHJvcGVydHlXcmFwcGVyPExlbmd0aFNpemU+KENTU1Byb3BlcnR5Qm9yZGVyQm90
dG9tUmlnaHRSYWRpdXMsICZSZW5kZXJTdHlsZTo6Ym9yZGVyQm90dG9tUmlnaHRSYWRpdXMsICZS
ZW5kZXJTdHlsZTo6c2V0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMpLAotICAgICAgICBuZXcgUHJv
cGVydHlXcmFwcGVyPEVWaXNpYmlsaXR5PihDU1NQcm9wZXJ0eVZpc2liaWxpdHksICZSZW5kZXJT
dHlsZTo6dmlzaWJpbGl0eSwgJlJlbmRlclN0eWxlOjpzZXRWaXNpYmlsaXR5KSwKKyAgICAgICAg
bmV3IFByb3BlcnR5V3JhcHBlcjxWaXNpYmlsaXR5PihDU1NQcm9wZXJ0eVZpc2liaWxpdHksICZS
ZW5kZXJTdHlsZTo6dmlzaWJpbGl0eSwgJlJlbmRlclN0eWxlOjpzZXRWaXNpYmlsaXR5KSwKICAg
ICAgICAgbmV3IFByb3BlcnR5V3JhcHBlcjxmbG9hdD4oQ1NTUHJvcGVydHlab29tLCAmUmVuZGVy
U3R5bGU6Onpvb20sICZSZW5kZXJTdHlsZTo6c2V0Wm9vbVdpdGhvdXRSZXR1cm5WYWx1ZSksCiAK
ICAgICAgICAgbmV3IExlbmd0aFByb3BlcnR5V3JhcHBlcjxMZW5ndGhCb3g+KENTU1Byb3BlcnR5
Q2xpcCwgJlJlbmRlclN0eWxlOjpjbGlwLCAmUmVuZGVyU3R5bGU6OnNldENsaXApLApJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRp
b24uY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9Db21wb3NpdGVBbmltYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNyArMTcwLDcg
QEAgdm9pZCBDb21wb3NpdGVBbmltYXRpb246OnVwZGF0ZVRyYW5zaXRpbwogICAgICAgICAgICAg
ICAgICAgICAvLyBBZGQgdGhlIG5ldyB0cmFuc2l0aW9uCiAgICAgICAgICAgICAgICAgICAgIGF1
dG8gaW1wbGljaXRBbmltYXRpb24gPSBJbXBsaWNpdEFuaW1hdGlvbjo6Y3JlYXRlKGFuaW1hdGlv
biwgcHJvcCwgZWxlbWVudCwgKnRoaXMsIG1vZGlmaWVkQ3VycmVudFN0eWxlID8gKm1vZGlmaWVk
Q3VycmVudFN0eWxlIDogKmZyb21TdHlsZSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX3N1
c3BlbmRlZCAmJiBpbXBsaWNpdEFuaW1hdGlvbi0+aGFzU3R5bGUoKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGltcGxpY2l0QW5pbWF0aW9uLT51cGRhdGVQbGF5U3RhdGUoQW5pbVBsYXlTdGF0
ZVBhdXNlZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbXBsaWNpdEFuaW1hdGlvbi0+dXBk
YXRlUGxheVN0YXRlKEFuaW1hdGlvblBsYXlTdGF0ZTo6UGF1c2VkKTsKIAogICAgICAgICAgICAg
ICAgICAgICBMT0coQW5pbWF0aW9ucywgIkNyZWF0ZWQgSW1wbGljaXRBbmltYXRpb24gJXAgb24g
ZWxlbWVudCAlcCBmb3IgcHJvcGVydHkgJXMgZHVyYXRpb24gJS4yZiBkZWxheSAlLjJmIiwgaW1w
bGljaXRBbmltYXRpb24ucHRyKCksICZlbGVtZW50LCBnZXRQcm9wZXJ0eU5hbWUocHJvcCksIGFu
aW1hdGlvbi5kdXJhdGlvbigpLCBhbmltYXRpb24uZGVsYXkoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIG1fdHJhbnNpdGlvbnMuc2V0KHByb3AsIFdURk1vdmUoaW1wbGljaXRBbmltYXRpb24pKTsK
QEAgLTI1Myw3ICsyNTMsNyBAQCB2b2lkIENvbXBvc2l0ZUFuaW1hdGlvbjo6dXBkYXRlS2V5ZnJh
bWVBCiAgICAgICAgICAgICAgICAgTE9HKEFuaW1hdGlvbnMsICJDcmVhdGluZyBLZXlmcmFtZUFu
aW1hdGlvbiAlcCBvbiBlbGVtZW50ICVwIHdpdGgga2V5ZnJhbWVzICVzLCBkdXJhdGlvbiAlLjJm
LCBkZWxheSAlLjJmLCBpdGVyYXRpb25zICUuMmYiLCBrZXlmcmFtZUFuaW0uZ2V0KCksICZlbGVt
ZW50LCBhbmltYXRpb24ubmFtZSgpLnV0ZjgoKS5kYXRhKCksIGFuaW1hdGlvbi5kdXJhdGlvbigp
LCBhbmltYXRpb24uZGVsYXkoKSwgYW5pbWF0aW9uLml0ZXJhdGlvbkNvdW50KCkpOwogCiAgICAg
ICAgICAgICAgICAgaWYgKG1fc3VzcGVuZGVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIGtleWZy
YW1lQW5pbS0+dXBkYXRlUGxheVN0YXRlKEFuaW1QbGF5U3RhdGVQYXVzZWQpOworICAgICAgICAg
ICAgICAgICAgICBrZXlmcmFtZUFuaW0tPnVwZGF0ZVBsYXlTdGF0ZShBbmltYXRpb25QbGF5U3Rh
dGU6OlBhdXNlZCk7CiAgICAgICAgICAgICAgICAgICAgIExPRyhBbmltYXRpb25zLCAiICAoY3Jl
YXRlZCBpbiBzdXNwZW5kZWQvcGF1c2VkIHN0YXRlKSIpOwogICAgICAgICAgICAgICAgIH0KICNp
ZiAhTE9HX0RJU0FCTEVECkBAIC00NjQsMTMgKzQ2NCwxMyBAQCB2b2lkIENvbXBvc2l0ZUFuaW1h
dGlvbjo6c3VzcGVuZEFuaW1hdGlvCiAgICAgaWYgKCFtX2tleWZyYW1lQW5pbWF0aW9ucy5pc0Vt
cHR5KCkpIHsKICAgICAgICAgbV9rZXlmcmFtZUFuaW1hdGlvbnMuY2hlY2tDb25zaXN0ZW5jeSgp
OwogICAgICAgICBmb3IgKGF1dG8mIGFuaW1hdGlvbiA6IG1fa2V5ZnJhbWVBbmltYXRpb25zLnZh
bHVlcygpKQotICAgICAgICAgICAgYW5pbWF0aW9uLT51cGRhdGVQbGF5U3RhdGUoQW5pbVBsYXlT
dGF0ZVBhdXNlZCk7CisgICAgICAgICAgICBhbmltYXRpb24tPnVwZGF0ZVBsYXlTdGF0ZShBbmlt
YXRpb25QbGF5U3RhdGU6OlBhdXNlZCk7CiAgICAgfQogCiAgICAgaWYgKCFtX3RyYW5zaXRpb25z
LmlzRW1wdHkoKSkgewogICAgICAgICBmb3IgKGF1dG8mIHRyYW5zaXRpb24gOiBtX3RyYW5zaXRp
b25zLnZhbHVlcygpKSB7CiAgICAgICAgICAgICBpZiAodHJhbnNpdGlvbi0+aGFzU3R5bGUoKSkK
LSAgICAgICAgICAgICAgICB0cmFuc2l0aW9uLT51cGRhdGVQbGF5U3RhdGUoQW5pbVBsYXlTdGF0
ZVBhdXNlZCk7CisgICAgICAgICAgICAgICAgdHJhbnNpdGlvbi0+dXBkYXRlUGxheVN0YXRlKEFu
aW1hdGlvblBsYXlTdGF0ZTo6UGF1c2VkKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTQ4Niwx
NCArNDg2LDE0IEBAIHZvaWQgQ29tcG9zaXRlQW5pbWF0aW9uOjpyZXN1bWVBbmltYXRpb24KICAg
ICAgICAgbV9rZXlmcmFtZUFuaW1hdGlvbnMuY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgICAgICBm
b3IgKGF1dG8mIGFuaW1hdGlvbiA6IG1fa2V5ZnJhbWVBbmltYXRpb25zLnZhbHVlcygpKSB7CiAg
ICAgICAgICAgICBpZiAoYW5pbWF0aW9uLT5wbGF5U3RhdGVQbGF5aW5nKCkpCi0gICAgICAgICAg
ICAgICAgYW5pbWF0aW9uLT51cGRhdGVQbGF5U3RhdGUoQW5pbVBsYXlTdGF0ZVBsYXlpbmcpOwor
ICAgICAgICAgICAgICAgIGFuaW1hdGlvbi0+dXBkYXRlUGxheVN0YXRlKEFuaW1hdGlvblBsYXlT
dGF0ZTo6UGxheWluZyk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIW1fdHJhbnNpdGlv
bnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGZvciAoYXV0byYgdHJhbnNpdGlvbiA6IG1fdHJhbnNp
dGlvbnMudmFsdWVzKCkpIHsKICAgICAgICAgICAgIGlmICh0cmFuc2l0aW9uLT5oYXNTdHlsZSgp
KQotICAgICAgICAgICAgICAgIHRyYW5zaXRpb24tPnVwZGF0ZVBsYXlTdGF0ZShBbmltUGxheVN0
YXRlUGxheWluZyk7CisgICAgICAgICAgICAgICAgdHJhbnNpdGlvbi0+dXBkYXRlUGxheVN0YXRl
KEFuaW1hdGlvblBsYXlTdGF0ZTo6UGxheWluZyk7CiAgICAgICAgIH0KICAgICB9CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRp
b24uY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw5ICsxNjMsOSBA
QCBib29sIEtleWZyYW1lQW5pbWF0aW9uOjphbmltYXRlKENvbXBvc2l0CiAgICAgCiAgICAgLy8g
SWYgd2UgaGF2ZSBub3QgeWV0IHN0YXJ0ZWQsIHdlIHdpbGwgbm90IGhhdmUgYSB2YWxpZCBzdGFy
dCB0aW1lLCBzbyBqdXN0IHN0YXJ0IHRoZSBhbmltYXRpb24gaWYgbmVlZGVkLgogICAgIGlmIChp
c05ldygpKSB7Ci0gICAgICAgIGlmIChtX2FuaW1hdGlvbi0+cGxheVN0YXRlKCkgPT0gQW5pbVBs
YXlTdGF0ZVBsYXlpbmcgJiYgIWNvbXBvc2l0ZUFuaW1hdGlvbi5pc1N1c3BlbmRlZCgpKQorICAg
ICAgICBpZiAobV9hbmltYXRpb24tPnBsYXlTdGF0ZSgpID09IEFuaW1hdGlvblBsYXlTdGF0ZTo6
UGxheWluZyAmJiAhY29tcG9zaXRlQW5pbWF0aW9uLmlzU3VzcGVuZGVkKCkpCiAgICAgICAgICAg
ICB1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbWF0aW9uU3RhdGVJbnB1dDo6U3RhcnRBbmltYXRpb24s
IC0xKTsKLSAgICAgICAgZWxzZSBpZiAobV9hbmltYXRpb24tPnBsYXlTdGF0ZSgpID09IEFuaW1Q
bGF5U3RhdGVQYXVzZWQpCisgICAgICAgIGVsc2UgaWYgKG1fYW5pbWF0aW9uLT5wbGF5U3RhdGUo
KSA9PSBBbmltYXRpb25QbGF5U3RhdGU6OlBhdXNlZCkKICAgICAgICAgICAgIHVwZGF0ZVN0YXRl
TWFjaGluZShBbmltYXRpb25TdGF0ZUlucHV0OjpQbGF5U3RhdGVQYXVzZWQsIC0xKTsKICAgICB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCShyZXZpc2lvbiAyMzIxMjMp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQkod29ya2luZyBjb3B5KQpA
QCAtNDE4LDcgKzQxOCw3IEBAIE5vZGUqIEZyYW1lOjpub2RlUmVzcG9uZGluZ1RvQ2xpY2tFdmVu
dHMKICAgICAgICAgICAgICAgICBwb2ludGVyQ3Vyc29yU3RpbGxWYWxpZCA9IGZhbHNlOwogCiAg
ICAgICAgICAgICAvLyBJZiB3ZSBoYXZlbid0IHJlYWNoZWQgdGhlIGJvZHksIGFuZCB3ZSBhcmUg
c3RpbGwgcGF5aW5nIGF0dGVudGlvbiB0byBwb2ludGVyIGN1cnNvcnMsIGFuZCB0aGUgbm9kZSBo
YXMgYSBwb2ludGVyIGN1cnNvci4uLgotICAgICAgICAgICAgaWYgKHBvaW50ZXJDdXJzb3JTdGls
bFZhbGlkICYmIG5vZGUtPnJlbmRlclN0eWxlKCkgJiYgbm9kZS0+cmVuZGVyU3R5bGUoKS0+Y3Vy
c29yKCkgPT0gQ3Vyc29yUG9pbnRlcikKKyAgICAgICAgICAgIGlmIChwb2ludGVyQ3Vyc29yU3Rp
bGxWYWxpZCAmJiBub2RlLT5yZW5kZXJTdHlsZSgpICYmIG5vZGUtPnJlbmRlclN0eWxlKCktPmN1
cnNvcigpID09IEN1cnNvclR5cGU6OlBvaW50ZXIpCiAgICAgICAgICAgICAgICAgcG9pbnRlckN1
cnNvck5vZGUgPSBub2RlOwogICAgICAgICAgICAgLy8gV2Ugd2FudCB0aGUgbG93ZXN0IHVuYnJv
a2VuIGNoYWluIG9mIHBvaW50ZXIgY3Vyc29ycy4KICAgICAgICAgICAgIGVsc2UgaWYgKHBvaW50
ZXJDdXJzb3JOb2RlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0Fu
aW1hdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0
aW9uL0FuaW1hdGlvbi5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw4ICsz
OCw4IEBAIEFuaW1hdGlvbjo6QW5pbWF0aW9uKCkKICAgICAsIG1fdHJpZ2dlcihpbml0aWFsVHJp
Z2dlcigpKQogI2VuZGlmCiAgICAgLCBtX2RpcmVjdGlvbihpbml0aWFsRGlyZWN0aW9uKCkpCi0g
ICAgLCBtX2ZpbGxNb2RlKGluaXRpYWxGaWxsTW9kZSgpKQotICAgICwgbV9wbGF5U3RhdGUoaW5p
dGlhbFBsYXlTdGF0ZSgpKQorICAgICwgbV9maWxsTW9kZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
aW5pdGlhbEZpbGxNb2RlKCkpKQorICAgICwgbV9wbGF5U3RhdGUoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGluaXRpYWxQbGF5U3RhdGUoKSkpCiAgICAgLCBtX2RlbGF5U2V0KGZhbHNlKQogICAgICwg
bV9kaXJlY3Rpb25TZXQoZmFsc2UpCiAgICAgLCBtX2R1cmF0aW9uU2V0KGZhbHNlKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uaAkocmV2aXNp
b24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNs
ZWFyRmlsbE1vZGUoKSB7IG1fZmlsbE1vZGVTZXQgPSBmYWxzZTsgfQogICAgIHZvaWQgY2xlYXJJ
dGVyYXRpb25Db3VudCgpIHsgbV9pdGVyYXRpb25Db3VudFNldCA9IGZhbHNlOyB9CiAgICAgdm9p
ZCBjbGVhck5hbWUoKSB7IG1fbmFtZVNldCA9IGZhbHNlOyB9Ci0gICAgdm9pZCBjbGVhclBsYXlT
dGF0ZSgpIHsgbV9wbGF5U3RhdGVTZXQgPSBBbmltUGxheVN0YXRlUGxheWluZzsgfQorICAgIHZv
aWQgY2xlYXJQbGF5U3RhdGUoKSB7IG1fcGxheVN0YXRlU2V0ID0gZmFsc2U7IH0KICAgICB2b2lk
IGNsZWFyUHJvcGVydHkoKSB7IG1fcHJvcGVydHlTZXQgPSBmYWxzZTsgfQogICAgIHZvaWQgY2xl
YXJUaW1pbmdGdW5jdGlvbigpIHsgbV90aW1pbmdGdW5jdGlvblNldCA9IGZhbHNlOyB9CiAjaWYg
RU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIpCkBAIC0xMDksNyArMTA5LDEyIEBAIHB1Ymxp
YzoKIAogICAgIGRvdWJsZSBkZWxheSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVsYXk7IH0KIAotICAg
IGVudW0gQW5pbWF0aW9uTW9kZSB7IEFuaW1hdGVBbGwsIEFuaW1hdGVOb25lLCBBbmltYXRlU2lu
Z2xlUHJvcGVydHksIEFuaW1hdGVVbmtub3duUHJvcGVydHkgfTsKKyAgICBlbnVtIEFuaW1hdGlv
bk1vZGUgeworICAgICAgICBBbmltYXRlQWxsLAorICAgICAgICBBbmltYXRlTm9uZSwKKyAgICAg
ICAgQW5pbWF0ZVNpbmdsZVByb3BlcnR5LAorICAgICAgICBBbmltYXRlVW5rbm93blByb3BlcnR5
CisgICAgfTsKIAogICAgIGVudW0gQW5pbWF0aW9uRGlyZWN0aW9uIHsKICAgICAgICAgQW5pbWF0
aW9uRGlyZWN0aW9uTm9ybWFsLApAQCAtMTE3LDEwICsxMjIsMTEgQEAgcHVibGljOgogICAgICAg
ICBBbmltYXRpb25EaXJlY3Rpb25SZXZlcnNlLAogICAgICAgICBBbmltYXRpb25EaXJlY3Rpb25B
bHRlcm5hdGVSZXZlcnNlCiAgICAgfTsKKwogICAgIEFuaW1hdGlvbkRpcmVjdGlvbiBkaXJlY3Rp
b24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBbmltYXRpb25EaXJlY3Rpb24+KG1fZGly
ZWN0aW9uKTsgfQogICAgIGJvb2wgZGlyZWN0aW9uSXNGb3J3YXJkcygpIGNvbnN0IHsgcmV0dXJu
IG1fZGlyZWN0aW9uID09IEFuaW1hdGlvbkRpcmVjdGlvbk5vcm1hbCB8fCBtX2RpcmVjdGlvbiA9
PSBBbmltYXRpb25EaXJlY3Rpb25BbHRlcm5hdGU7IH0KIAotICAgIHVuc2lnbmVkIGZpbGxNb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9maWxsTW9kZTsgfQorICAgIEFuaW1hdGlvbkZpbGxNb2RlIGZp
bGxNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QW5pbWF0aW9uRmlsbE1vZGU+KG1f
ZmlsbE1vZGUpOyB9CiAKICAgICBkb3VibGUgZHVyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2R1
cmF0aW9uOyB9CiAKQEAgLTEyOCw3ICsxMzQsNyBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGl0ZXJh
dGlvbkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRpb25Db3VudDsgfQogICAgIGNvbnN0
IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogICAgIFN0eWxlOjpTY29w
ZU9yZGluYWwgbmFtZVN0eWxlU2NvcGVPcmRpbmFsKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lU3R5
bGVTY29wZU9yZGluYWw7IH0KLSAgICBFQW5pbVBsYXlTdGF0ZSBwbGF5U3RhdGUoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxFQW5pbVBsYXlTdGF0ZT4obV9wbGF5U3RhdGUpOyB9CisgICAg
QW5pbWF0aW9uUGxheVN0YXRlIHBsYXlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEFuaW1hdGlvblBsYXlTdGF0ZT4obV9wbGF5U3RhdGUpOyB9CiAgICAgQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHk7IH0KICAgICBjb25zdCBTdHJpbmcm
IHVua25vd25Qcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5rbm93blByb3BlcnR5OyB9CiAg
ICAgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90aW1p
bmdGdW5jdGlvbi5nZXQoKTsgfQpAQCAtMTQwLDcgKzE0Niw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldERlbGF5KGRvdWJsZSBjKSB7IG1fZGVsYXkgPSBjOyBtX2RlbGF5U2V0ID0gdHJ1ZTsgfQog
ICAgIHZvaWQgc2V0RGlyZWN0aW9uKEFuaW1hdGlvbkRpcmVjdGlvbiBkKSB7IG1fZGlyZWN0aW9u
ID0gZDsgbV9kaXJlY3Rpb25TZXQgPSB0cnVlOyB9CiAgICAgdm9pZCBzZXREdXJhdGlvbihkb3Vi
bGUgZCkgeyBBU1NFUlQoZCA+PSAwKTsgbV9kdXJhdGlvbiA9IGQ7IG1fZHVyYXRpb25TZXQgPSB0
cnVlOyB9Ci0gICAgdm9pZCBzZXRGaWxsTW9kZSh1bnNpZ25lZCBmKSB7IG1fZmlsbE1vZGUgPSBm
OyBtX2ZpbGxNb2RlU2V0ID0gdHJ1ZTsgfQorICAgIHZvaWQgc2V0RmlsbE1vZGUoQW5pbWF0aW9u
RmlsbE1vZGUgZikgeyBtX2ZpbGxNb2RlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGYpOyBtX2Zp
bGxNb2RlU2V0ID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0SXRlcmF0aW9uQ291bnQoZG91YmxlIGMp
IHsgbV9pdGVyYXRpb25Db3VudCA9IGM7IG1faXRlcmF0aW9uQ291bnRTZXQgPSB0cnVlOyB9CiAg
ICAgdm9pZCBzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSwgU3R5bGU6OlNjb3BlT3JkaW5hbCBz
Y29wZSA9IFN0eWxlOjpTY29wZU9yZGluYWw6OkVsZW1lbnQpCiAgICAgewpAQCAtMTQ4LDcgKzE1
NCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9uYW1lU3R5bGVTY29wZU9yZGluYWwgPSBzY29wZTsK
ICAgICAgICAgbV9uYW1lU2V0ID0gdHJ1ZTsKICAgICB9Ci0gICAgdm9pZCBzZXRQbGF5U3RhdGUo
RUFuaW1QbGF5U3RhdGUgZCkgeyBtX3BsYXlTdGF0ZSA9IGQ7IG1fcGxheVN0YXRlU2V0ID0gdHJ1
ZTsgfQorICAgIHZvaWQgc2V0UGxheVN0YXRlKEFuaW1hdGlvblBsYXlTdGF0ZSBkKSB7IG1fcGxh
eVN0YXRlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGQpOyBtX3BsYXlTdGF0ZVNldCA9IHRydWU7
IH0KICAgICB2b2lkIHNldFByb3BlcnR5KENTU1Byb3BlcnR5SUQgdCkgeyBtX3Byb3BlcnR5ID0g
dDsgbV9wcm9wZXJ0eVNldCA9IHRydWU7IH0KICAgICB2b2lkIHNldFVua25vd25Qcm9wZXJ0eShj
b25zdCBTdHJpbmcmIHByb3BlcnR5KSB7IG1fdW5rbm93blByb3BlcnR5ID0gcHJvcGVydHk7IH0K
ICAgICB2b2lkIHNldFRpbWluZ0Z1bmN0aW9uKFJlZlB0cjxUaW1pbmdGdW5jdGlvbj4mJiBmdW5j
dGlvbikgeyBtX3RpbWluZ0Z1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbik7IG1fdGltaW5nRnVu
Y3Rpb25TZXQgPSB0cnVlOyB9CkBAIC0xNjgsOCArMTc0LDggQEAgcHVibGljOgogICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBBbmltYXRpb24mIG8pIGNvbnN0IHsgcmV0dXJuIGFuaW1hdGlvbnNN
YXRjaChvKTsgfQogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBbmltYXRpb24mIG8pIGNvbnN0
IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KIAotICAgIGJvb2wgZmlsbHNCYWNrd2FyZHMoKSBj
b25zdCB7IHJldHVybiBtX2ZpbGxNb2RlU2V0ICYmIChtX2ZpbGxNb2RlID09IEFuaW1hdGlvbkZp
bGxNb2RlQmFja3dhcmRzIHx8IG1fZmlsbE1vZGUgPT0gQW5pbWF0aW9uRmlsbE1vZGVCb3RoKTsg
fQotICAgIGJvb2wgZmlsbHNGb3J3YXJkcygpIGNvbnN0IHsgcmV0dXJuIG1fZmlsbE1vZGVTZXQg
JiYgKG1fZmlsbE1vZGUgPT0gQW5pbWF0aW9uRmlsbE1vZGVGb3J3YXJkcyB8fCBtX2ZpbGxNb2Rl
ID09IEFuaW1hdGlvbkZpbGxNb2RlQm90aCk7IH0KKyAgICBib29sIGZpbGxzQmFja3dhcmRzKCkg
Y29uc3QgeyByZXR1cm4gbV9maWxsTW9kZVNldCAmJiAoZmlsbE1vZGUoKSA9PSBBbmltYXRpb25G
aWxsTW9kZTo6QmFja3dhcmRzIHx8IGZpbGxNb2RlKCkgPT0gQW5pbWF0aW9uRmlsbE1vZGU6OkJv
dGgpOyB9CisgICAgYm9vbCBmaWxsc0ZvcndhcmRzKCkgY29uc3QgeyByZXR1cm4gbV9maWxsTW9k
ZVNldCAmJiAoZmlsbE1vZGUoKSA9PSBBbmltYXRpb25GaWxsTW9kZTo6Rm9yd2FyZHMgfHwgZmls
bE1vZGUoKSA9PSBBbmltYXRpb25GaWxsTW9kZTo6Qm90aCk7IH0KIAogcHJpdmF0ZToKICAgICBX
RUJDT1JFX0VYUE9SVCBBbmltYXRpb24oKTsKQEAgLTIxMiwxMCArMjE4LDEwIEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgZG91YmxlIGluaXRpYWxEZWxheSgpIHsgcmV0dXJuIDA7IH0KICAgICBzdGF0
aWMgQW5pbWF0aW9uRGlyZWN0aW9uIGluaXRpYWxEaXJlY3Rpb24oKSB7IHJldHVybiBBbmltYXRp
b25EaXJlY3Rpb25Ob3JtYWw7IH0KICAgICBzdGF0aWMgZG91YmxlIGluaXRpYWxEdXJhdGlvbigp
IHsgcmV0dXJuIDA7IH0KLSAgICBzdGF0aWMgdW5zaWduZWQgaW5pdGlhbEZpbGxNb2RlKCkgeyBy
ZXR1cm4gQW5pbWF0aW9uRmlsbE1vZGVOb25lOyB9CisgICAgc3RhdGljIEFuaW1hdGlvbkZpbGxN
b2RlIGluaXRpYWxGaWxsTW9kZSgpIHsgcmV0dXJuIEFuaW1hdGlvbkZpbGxNb2RlOjpOb25lOyB9
CiAgICAgc3RhdGljIGRvdWJsZSBpbml0aWFsSXRlcmF0aW9uQ291bnQoKSB7IHJldHVybiAxLjA7
IH0KICAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBpbml0aWFsTmFtZSgpOwotICAgIHN0YXRpYyBF
QW5pbVBsYXlTdGF0ZSBpbml0aWFsUGxheVN0YXRlKCkgeyByZXR1cm4gQW5pbVBsYXlTdGF0ZVBs
YXlpbmc7IH0KKyAgICBzdGF0aWMgQW5pbWF0aW9uUGxheVN0YXRlIGluaXRpYWxQbGF5U3RhdGUo
KSB7IHJldHVybiBBbmltYXRpb25QbGF5U3RhdGU6OlBsYXlpbmc7IH0KICAgICBzdGF0aWMgQ1NT
UHJvcGVydHlJRCBpbml0aWFsUHJvcGVydHkoKSB7IHJldHVybiBDU1NQcm9wZXJ0eUludmFsaWQ7
IH0KICAgICBzdGF0aWMgUmVmPFRpbWluZ0Z1bmN0aW9uPiBpbml0aWFsVGltaW5nRnVuY3Rpb24o
KSB7IHJldHVybiBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoKTsgfQogI2lmIEVO
QUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaAkocmV2aXNpb24gMjMyMTIzKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC04NiwxNSArODYsNDAgQEAgZW51bSBJbnRlcnBvbGF0aW9uUXVhbGl0eSB7CiAg
ICAgSW50ZXJwb2xhdGlvbkhpZ2gKIH07CiAKLWVudW0gTGluZUNhcCB7IEJ1dHRDYXAsIFJvdW5k
Q2FwLCBTcXVhcmVDYXAgfTsKK2VudW0gTGluZUNhcCB7CisgICAgQnV0dENhcCwKKyAgICBSb3Vu
ZENhcCwKKyAgICBTcXVhcmVDYXAKK307CiAKLWVudW0gTGluZUpvaW4geyBNaXRlckpvaW4sIFJv
dW5kSm9pbiwgQmV2ZWxKb2luIH07CitlbnVtIExpbmVKb2luIHsKKyAgICBNaXRlckpvaW4sCisg
ICAgUm91bmRKb2luLAorICAgIEJldmVsSm9pbgorfTsKIAotZW51bSBIb3Jpem9udGFsQWxpZ25t
ZW50IHsgQWxpZ25MZWZ0LCBBbGlnblJpZ2h0LCBBbGlnbkhDZW50ZXIgfTsKK2VudW0gSG9yaXpv
bnRhbEFsaWdubWVudCB7CisgICAgQWxpZ25MZWZ0LAorICAgIEFsaWduUmlnaHQsCisgICAgQWxp
Z25IQ2VudGVyCit9OwogCi1lbnVtIFRleHRCYXNlbGluZSB7IEFscGhhYmV0aWNUZXh0QmFzZWxp
bmUsIFRvcFRleHRCYXNlbGluZSwgTWlkZGxlVGV4dEJhc2VsaW5lLCBCb3R0b21UZXh0QmFzZWxp
bmUsIElkZW9ncmFwaGljVGV4dEJhc2VsaW5lLCBIYW5naW5nVGV4dEJhc2VsaW5lIH07CitlbnVt
IFRleHRCYXNlbGluZSB7CisgICAgQWxwaGFiZXRpY1RleHRCYXNlbGluZSwKKyAgICBUb3BUZXh0
QmFzZWxpbmUsCisgICAgTWlkZGxlVGV4dEJhc2VsaW5lLAorICAgIEJvdHRvbVRleHRCYXNlbGlu
ZSwKKyAgICBJZGVvZ3JhcGhpY1RleHRCYXNlbGluZSwKKyAgICBIYW5naW5nVGV4dEJhc2VsaW5l
Cit9OwogCi1lbnVtIFRleHRBbGlnbiB7IFN0YXJ0VGV4dEFsaWduLCBFbmRUZXh0QWxpZ24sIExl
ZnRUZXh0QWxpZ24sIENlbnRlclRleHRBbGlnbiwgUmlnaHRUZXh0QWxpZ24gfTsKK2VudW0gVGV4
dEFsaWduIHsKKyAgICBTdGFydFRleHRBbGlnbiwKKyAgICBFbmRUZXh0QWxpZ24sCisgICAgTGVm
dFRleHRBbGlnbiwKKyAgICBDZW50ZXJUZXh0QWxpZ24sCisgICAgUmlnaHRUZXh0QWxpZ24KK307
CiAKIGVudW0gUmVuZGVyaW5nTW9kZSB7CiAgICAgVW5hY2NlbGVyYXRlZCwKQEAgLTExMiwxMiAr
MTM3LDYgQEAgU3RyaW5nIGJsZW5kTW9kZU5hbWUoQmxlbmRNb2RlKTsKIGJvb2wgcGFyc2VCbGVu
ZE1vZGUoY29uc3QgU3RyaW5nJiwgQmxlbmRNb2RlJik7CiBib29sIHBhcnNlQ29tcG9zaXRlQW5k
QmxlbmRPcGVyYXRvcihjb25zdCBTdHJpbmcmLCBDb21wb3NpdGVPcGVyYXRvciYsIEJsZW5kTW9k
ZSYpOwogCi1TdHJpbmcgdGV4dEFsaWduTmFtZShUZXh0QWxpZ24pOwotYm9vbCBwYXJzZVRleHRB
bGlnbihjb25zdCBTdHJpbmcmLCBUZXh0QWxpZ24mKTsKLQotU3RyaW5nIHRleHRCYXNlbGluZU5h
bWUoVGV4dEJhc2VsaW5lKTsKLWJvb2wgcGFyc2VUZXh0QmFzZWxpbmUoY29uc3QgU3RyaW5nJiwg
VGV4dEJhc2VsaW5lJik7Ci0KIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChXVEY6OlRleHRTdHJlYW0mLCBCbGVuZE1vZGUpOwogV0VCQ09SRV9FWFBPUlQgV1RGOjpU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIENvbXBvc2l0ZU9wZXJhdG9y
KTsKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRT
dHJlYW0mLCBXaW5kUnVsZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAJKHJldmlzaW9uIDIzMjEyMykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxODcsMTYgKzMxODcsMTYgQEAgdm9pZCBHcmFwaGljc0xh
eWVyQ0E6OnNldHVwQW5pbWF0aW9uKFBsYQogCiAgICAgUGxhdGZvcm1DQUFuaW1hdGlvbjo6Rmls
bE1vZGVUeXBlIGZpbGxNb2RlID0gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Tm9GaWxsTW9kZTsKICAg
ICBzd2l0Y2ggKGFuaW0tPmZpbGxNb2RlKCkpIHsKLSAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2Rl
Tm9uZToKKyAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlOjpOb25lOgogICAgICAgICBmaWxsTW9k
ZSA9IFBsYXRmb3JtQ0FBbmltYXRpb246OkZvcndhcmRzOyAvLyBVc2UgImZvcndhcmRzIiByYXRo
ZXIgdGhhbiAicmVtb3ZlZCIgYmVjYXVzZSB0aGUgc3R5bGUgc3lzdGVtIHdpbGwgcmVtb3ZlIHRo
ZSBhbmltYXRpb24gd2hlbiBpdCBpcyBmaW5pc2hlZC4gVGhpcyBhdm9pZHMgYSBmbGFzaC4KICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBbmltYXRpb25GaWxsTW9kZUJhY2t3YXJkczoKKyAgICBj
YXNlIEFuaW1hdGlvbkZpbGxNb2RlOjpCYWNrd2FyZHM6CiAgICAgICAgIGZpbGxNb2RlID0gUGxh
dGZvcm1DQUFuaW1hdGlvbjo6Qm90aDsgLy8gVXNlICJib3RoIiByYXRoZXIgdGhhbiAiYmFja3dh
cmRzIiBiZWNhdXNlIHRoZSBzdHlsZSBzeXN0ZW0gd2lsbCByZW1vdmUgdGhlIGFuaW1hdGlvbiB3
aGVuIGl0IGlzIGZpbmlzaGVkLiBUaGlzIGF2b2lkcyBhIGZsYXNoLgogICAgICAgICBicmVhazsK
LSAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlRm9yd2FyZHM6CisgICAgY2FzZSBBbmltYXRpb25G
aWxsTW9kZTo6Rm9yd2FyZHM6CiAgICAgICAgIGZpbGxNb2RlID0gUGxhdGZvcm1DQUFuaW1hdGlv
bjo6Rm9yd2FyZHM7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGVC
b3RoOgorICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGU6OkJvdGg6CiAgICAgICAgIGZpbGxNb2Rl
ID0gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Qm90aDsKICAgICAgICAgYnJlYWs7CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5kb3cubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5kb3cubW0JKHJldmlz
aW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02ODIsNyArNjgyLDcgQEAgLSAodm9pZClkdW1wVGlsZXMK
ICAgICBDR1JlY3Qgc2F2ZWRGcm96ZW5WaXNpYmxlUmVjdCA9IF9mcm96ZW5WaXNpYmxlUmVjdDsK
ICAgICBOU0xvZyhAIj09PT09PT09PT09PT09PT09Iik7CiAgICAgaWYgKCFDR1JlY3RJc051bGwo
X2Zyb3plblZpc2libGVSZWN0KSkgewotICAgICAgICBOU0xvZyhAIlZJU0lCTEUgUkVDVCBJUyBD
QUNIRUQ6IFslNi4xZiAlNi4xZiAlNi4xZiAlNi4xZl0iLCBfZnJvemVuVmlzaWJsZVJlY3Qub3Jp
Z2luLngsIF9mcm96ZW5WaXNpYmxlUmVjdC5vcmlnaW4ueSwgX2Zyb3plblZpc2libGVSZWN0LnNp
emUud2lkdGgsIF9mcm96ZW5WaXNpYmxlUmVjdC5zaXplLmhlaWdodCk7CisgICAgICAgIE5TTG9n
KEAiVmlzaWJpbGl0eTo6VmlzaWJsZSBSRUNUIElTIENBQ0hFRDogWyU2LjFmICU2LjFmICU2LjFm
ICU2LjFmXSIsIF9mcm96ZW5WaXNpYmxlUmVjdC5vcmlnaW4ueCwgX2Zyb3plblZpc2libGVSZWN0
Lm9yaWdpbi55LCBfZnJvemVuVmlzaWJsZVJlY3Quc2l6ZS53aWR0aCwgX2Zyb3plblZpc2libGVS
ZWN0LnNpemUuaGVpZ2h0KTsKICAgICAgICAgX2Zyb3plblZpc2libGVSZWN0ID0gQ0dSZWN0TnVs
bDsKICAgICB9CiAgICAgQ0dSZWN0IHZpc2libGVSZWN0ID0gW3NlbGYgdmlzaWJsZVJlY3RdOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0
cmFzLm1tCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViQ29yZU5TVVJMRXh0cmFzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsOCArMTc3LDggQEAg
c3RhdGljIEJPT0wgaXNMb29rYWxpa2VDaGFyYWN0ZXIoc3RkOjpvcAogICAgICAgICBjYXNlIDB4
MjMzRjogLyogQVBMIEZVTkNUSU9OQUwgU1lNQk9MIFNMQVNIIEJBUiAqLwogICAgICAgICBjYXNl
IDB4MjNBRTogLyogSU5URUdSQUwgRVhURU5TSU9OICovCiAgICAgICAgIGNhc2UgMHgyNDRBOiAv
KiBPQ1IgRE9VQkxFIEJBQ0tTTEFTSCAqLwotICAgICAgICBjYXNlIDB4MjU3MTogLyogQk9YIERS
QVdJTkdTIExJR0hUIERJQUdPTkFMIFVQUEVSIFJJR0hUIFRPIExPV0VSIExFRlQgKi8KLSAgICAg
ICAgY2FzZSAweDI1NzI6IC8qIEJPWCBEUkFXSU5HUyBMSUdIVCBESUFHT05BTCBVUFBFUiBMRUZU
IFRPIExPV0VSIFJJR0hUICovCisgICAgICAgIGNhc2UgMHgyNTcxOiAvKiBEaXNwbGF5VHlwZTo6
Qm94IERSQVdJTkdTIExJR0hUIERJQUdPTkFMIFVQUEVSIFJJR0hUIFRPIExPV0VSIExFRlQgKi8K
KyAgICAgICAgY2FzZSAweDI1NzI6IC8qIERpc3BsYXlUeXBlOjpCb3ggRFJBV0lOR1MgTElHSFQg
RElBR09OQUwgVVBQRVIgTEVGVCBUTyBMT1dFUiBSSUdIVCAqLwogICAgICAgICBjYXNlIDB4MjlG
NjogLyogU09MSURVUyBXSVRIIE9WRVJCQVIgKi8KICAgICAgICAgY2FzZSAweDI5Rjg6IC8qIEJJ
RyBTT0xJRFVTICovCiAgICAgICAgIGNhc2UgMHgyQUZCOiAvKiBUUklQTEUgU09MSURVUyBCSU5B
UlkgUkVMQVRJT04gKi8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DbGlwUGF0aE9w
ZXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DbGlwUGF0
aE9wZXJhdGlvbi5oCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvQ2xpcFBhdGhPcGVyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDcgKzEyMCw3IEBA
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgU2hhcGVDbGlwUGF0aE9wZXJhdGlvbihSZWY8QmFzaWNT
aGFwZT4mJiBzaGFwZSkKICAgICAgICAgOiBDbGlwUGF0aE9wZXJhdGlvbihTaGFwZSkKICAgICAg
ICAgLCBtX3NoYXBlKFdURk1vdmUoc2hhcGUpKQotICAgICAgICAsIG1fcmVmZXJlbmNlQm94KEJv
eE1pc3NpbmcpCisgICAgICAgICwgbV9yZWZlcmVuY2VCb3goQ1NTQm94VHlwZTo6Qm94TWlzc2lu
ZykKICAgICB7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
Qm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5o
CShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0MSw3ICsyNDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBp
bnZhbGlkYXRlUGFyZW50Q2hpbGRMaXN0KCk7CiAjZW5kaWYKIAotICAgIGJvb2wgdmlzaWJsZVRv
SGl0VGVzdGluZygpIGNvbnN0IHsgcmV0dXJuIHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5
KCkgPT0gVklTSUJMRSAmJiByZW5kZXJlcigpLnN0eWxlKCkucG9pbnRlckV2ZW50cygpICE9IFBF
X05PTkU7IH0KKyAgICBib29sIHZpc2libGVUb0hpdFRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBy
ZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUgJiYg
cmVuZGVyZXIoKS5zdHlsZSgpLnBvaW50ZXJFdmVudHMoKSAhPSBQb2ludGVyRXZlbnRzOjpOb25l
OyB9CiAKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlKCkgY29uc3QgeyByZXR1cm4g
bV9iaXRmaWVsZHMuZmlyc3RMaW5lKCkgPyByZW5kZXJlcigpLmZpcnN0TGluZVN0eWxlKCkgOiBy
ZW5kZXJlcigpLnN0eWxlKCk7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVGbG93Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lRmxvd0JveC5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDcgKzEy
OSw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6YWRkVG9MaW5lKElubGluZUJveCoKICAgICAgICAg
ICAgICAgICAgICAgfHwgKHBhcmVudFN0eWxlLnZlcnRpY2FsQWxpZ24oKSAhPSBWZXJ0aWNhbEFs
aWduOjpCYXNlbGluZSAmJiAhaXNSb290SW5saW5lQm94KCkpIHx8IGNoaWxkU3R5bGUudmVydGlj
YWxBbGlnbigpICE9IFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lKQogICAgICAgICAgICAgICAgICAg
ICBzaG91bGRDbGVhckRlc2NlbmRhbnRzSGF2ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUgPSB0
cnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGNoaWxkU3R5bGUuaGFzVGV4dENv
bWJpbmUoKSB8fCBjaGlsZFN0eWxlLnRleHRFbXBoYXNpc01hcmsoKSAhPSBUZXh0RW1waGFzaXNN
YXJrTm9uZSkKKyAgICAgICAgICAgIGlmIChjaGlsZFN0eWxlLmhhc1RleHRDb21iaW5lKCkgfHwg
Y2hpbGRTdHlsZS50ZXh0RW1waGFzaXNNYXJrKCkgIT0gVGV4dEVtcGhhc2lzTWFyazo6Tm9uZSkK
ICAgICAgICAgICAgICAgICBzaG91bGRDbGVhckRlc2NlbmRhbnRzSGF2ZVNhbWVMaW5lSGVpZ2h0
QW5kQmFzZWxpbmUgPSB0cnVlOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKGNo
aWxkLT5yZW5kZXJlcigpLmlzTGluZUJyZWFrKCkpIHsKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lk
IElubGluZUZsb3dCb3g6OmFkZFRvTGluZShJbmxpbmVCb3gqCiAgICAgICAgIGNvbnN0IFJlbmRl
clN0eWxlJiBjaGlsZFN0eWxlID0gY2hpbGQtPmxpbmVTdHlsZSgpOwogICAgICAgICBpZiAoY2hp
bGQtPmJlaGF2ZXNMaWtlVGV4dCgpKSB7CiAgICAgICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSog
Y2hpbGRTdHlsZSA9ICZjaGlsZC0+bGluZVN0eWxlKCk7Ci0gICAgICAgICAgICBpZiAoY2hpbGRT
dHlsZS0+bGV0dGVyU3BhY2luZygpIDwgMCB8fCBjaGlsZFN0eWxlLT50ZXh0U2hhZG93KCkgfHwg
Y2hpbGRTdHlsZS0+dGV4dEVtcGhhc2lzTWFyaygpICE9IFRleHRFbXBoYXNpc01hcmtOb25lIHx8
IGNoaWxkU3R5bGUtPmhhc1Bvc2l0aXZlU3Ryb2tlV2lkdGgoKSkKKyAgICAgICAgICAgIGlmIChj
aGlsZFN0eWxlLT5sZXR0ZXJTcGFjaW5nKCkgPCAwIHx8IGNoaWxkU3R5bGUtPnRleHRTaGFkb3co
KSB8fCBjaGlsZFN0eWxlLT50ZXh0RW1waGFzaXNNYXJrKCkgIT0gVGV4dEVtcGhhc2lzTWFyazo6
Tm9uZSB8fCBjaGlsZFN0eWxlLT5oYXNQb3NpdGl2ZVN0cm9rZVdpZHRoKCkpCiAgICAgICAgICAg
ICAgICAgY2hpbGQtPmNsZWFyS25vd25Ub0hhdmVOb092ZXJmbG93KCk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoY2hpbGQtPnJlbmRlcmVyKCkuaXNSZXBsYWNlZCgpKSB7CiAgICAgICAgICAgICBjb25z
dCBSZW5kZXJCb3gmIGJveCA9IGRvd25jYXN0PFJlbmRlckJveD4oY2hpbGQtPnJlbmRlcmVyKCkp
OwpAQCAtNjg0LDcgKzY4NCw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxv
Y2tEaXIKICAgICAgICAgICAgICAgICAvLyBUcmVhdCB0aGUgbGVhZGluZyBvbiB0aGUgZmlyc3Qg
YW5kIGxhc3QgbGluZXMgb2YgcnVieSBydW5zIGFzIG5vdCBiZWluZyBwYXJ0IG9mIHRoZSBvdmVy
YWxsIGxpbmVUb3AvbGluZUJvdHRvbS4KICAgICAgICAgICAgICAgICAvLyBSZWFsbHkgdGhpcyBp
cyBhIHdvcmthcm91bmQgaGFjayBmb3IgdGhlIGZhY3QgdGhhdCBydWJ5IHNob3VsZCBoYXZlIGJl
ZW4gZG9uZSBhcyBsaW5lIGxheW91dCBhbmQgbm90IGRvbmUgdXNpbmcKICAgICAgICAgICAgICAg
ICAvLyBpbmxpbmUtYmxvY2suCi0gICAgICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUo
KS5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkgPT0gKGNoaWxkLT5yZW5kZXJlcigpLnN0eWxl
KCkucnVieVBvc2l0aW9uKCkgPT0gUnVieVBvc2l0aW9uQWZ0ZXIpKQorICAgICAgICAgICAgICAg
IGlmIChyZW5kZXJlcigpLnN0eWxlKCkuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpID09IChj
aGlsZC0+cmVuZGVyZXIoKS5zdHlsZSgpLnJ1YnlQb3NpdGlvbigpID09IFJ1YnlQb3NpdGlvbjo6
QWZ0ZXIpKQogICAgICAgICAgICAgICAgICAgICBoYXNBbm5vdGF0aW9uc0JlZm9yZSA9IHRydWU7
CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBoYXNBbm5vdGF0aW9u
c0FmdGVyID0gdHJ1ZTsKQEAgLTg5NSw3ICs4OTUsNyBAQCBpbmxpbmUgdm9pZCBJbmxpbmVGbG93
Qm94OjphZGRUZXh0Qm94VmlzCiAgICAgaW50IHJpZ2h0R2x5cGhPdmVyZmxvdyA9IHN0cm9rZU92
ZXJmbG93ICsgcmlnaHRHbHlwaEVkZ2U7CiAKICAgICBib29sIGVtcGhhc2lzTWFya0lzQWJvdmU7
Ci0gICAgaWYgKGxpbmVTdHlsZS50ZXh0RW1waGFzaXNNYXJrKCkgIT0gVGV4dEVtcGhhc2lzTWFy
a05vbmUgJiYgdGV4dEJveC5lbXBoYXNpc01hcmtFeGlzdHNBbmRJc0Fib3ZlKGxpbmVTdHlsZSwg
ZW1waGFzaXNNYXJrSXNBYm92ZSkpIHsKKyAgICBpZiAobGluZVN0eWxlLnRleHRFbXBoYXNpc01h
cmsoKSAhPSBUZXh0RW1waGFzaXNNYXJrOjpOb25lICYmIHRleHRCb3guZW1waGFzaXNNYXJrRXhp
c3RzQW5kSXNBYm92ZShsaW5lU3R5bGUsIGVtcGhhc2lzTWFya0lzQWJvdmUpKSB7CiAgICAgICAg
IGludCBlbXBoYXNpc01hcmtIZWlnaHQgPSBsaW5lU3R5bGUuZm9udENhc2NhZGUoKS5lbXBoYXNp
c01hcmtIZWlnaHQobGluZVN0eWxlLnRleHRFbXBoYXNpc01hcmtTdHJpbmcoKSk7CiAgICAgICAg
IGlmIChlbXBoYXNpc01hcmtJc0Fib3ZlID09ICFsaW5lU3R5bGUuaXNGbGlwcGVkTGluZXNXcml0
aW5nTW9kZSgpKQogICAgICAgICAgICAgdG9wR2x5cGhPdmVyZmxvdyA9IHN0ZDo6bWluKHRvcEds
eXBoT3ZlcmZsb3csIC1lbXBoYXNpc01hcmtIZWlnaHQpOwpAQCAtMTE1NSw3ICsxMTU1LDcgQEAg
dm9pZCBJbmxpbmVGbG93Qm94OjpwYWludChQYWludEluZm8mIHBhaQogICAgICAgICBpZiAocGFp
bnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IHBhaW50SW5mby5waGFzZSA9PSBQ
YWludFBoYXNlU2VsZk91dGxpbmUpIHsKICAgICAgICAgICAgIC8vIEFkZCBvdXJzZWx2ZXMgdG8g
dGhlIHBhaW50IGluZm8gc3RydWN0J3MgbGlzdCBvZiBpbmxpbmVzIHRoYXQgbmVlZCB0byBwYWlu
dCB0aGVpcgogICAgICAgICAgICAgLy8gb3V0bGluZXMuCi0gICAgICAgICAgICBpZiAocmVuZGVy
ZXIoKS5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFICYmIHJlbmRlcmVyKCkuaGFzT3V0
bGluZSgpICYmICFpc1Jvb3RJbmxpbmVCb3goKSkgeworICAgICAgICAgICAgaWYgKHJlbmRlcmVy
KCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiByZW5kZXJl
cigpLmhhc091dGxpbmUoKSAmJiAhaXNSb290SW5saW5lQm94KCkpIHsKICAgICAgICAgICAgICAg
ICBSZW5kZXJJbmxpbmUmIGlubGluZUZsb3cgPSBkb3duY2FzdDxSZW5kZXJJbmxpbmU+KHJlbmRl
cmVyKCkpOwogCiAgICAgICAgICAgICAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jayA9
IG51bGxwdHI7CkBAIC0xMzM1LDcgKzEzMzUsNyBAQCBzdGF0aWMgTGF5b3V0UmVjdCBjbGlwUmVj
dEZvck5pbmVQaWVjZUltCiAKIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRCb3hEZWNvcmF0aW9u
cyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQog
ewotICAgIGlmICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdChyZW5kZXJlcigpKSB8
fCByZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgcGFpbnRJbmZv
LnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kKQorICAgIGlmICghcGFpbnRJbmZvLnNob3Vs
ZFBhaW50V2l0aGluUm9vdChyZW5kZXJlcigpKSB8fCByZW5kZXJlcigpLnN0eWxlKCkudmlzaWJp
bGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgfHwgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50
UGhhc2VGb3JlZ3JvdW5kKQogICAgICAgICByZXR1cm47CiAKICAgICBMYXlvdXRSZWN0IGZyYW1l
UmVjdCh0aGlzLT5mcmFtZVJlY3QoKSk7CkBAIC0xNDA3LDcgKzE0MDcsNyBAQCB2b2lkIElubGlu
ZUZsb3dCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMoCiAKIHZvaWQgSW5saW5lRmxvd0JveDo6cGFp
bnRNYXNrKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZz
ZXQpCiB7Ci0gICAgaWYgKCFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KHJlbmRlcmVy
KCkpIHx8IHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBwYWlu
dEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZU1hc2spCisgICAgaWYgKCFwYWludEluZm8uc2hvdWxk
UGFpbnRXaXRoaW5Sb290KHJlbmRlcmVyKCkpIHx8IHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmls
aXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQ
aGFzZU1hc2spCiAgICAgICAgIHJldHVybjsKIAogICAgIExheW91dFJlY3QgZnJhbWVSZWN0KHRo
aXMtPmZyYW1lUmVjdCgpKTsKQEAgLTE1NTIsNyArMTU1Miw3IEBAIExheW91dFVuaXQgSW5saW5l
Rmxvd0JveDo6Y29tcHV0ZU92ZXJBbm4KICAgICAgICAgaWYgKGlzPElubGluZUZsb3dCb3g+KCpj
aGlsZCkpCiAgICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1heChyZXN1bHQsIGRvd25jYXN0PElu
bGluZUZsb3dCb3g+KCpjaGlsZCkuY29tcHV0ZU92ZXJBbm5vdGF0aW9uQWRqdXN0bWVudChhbGxv
d2VkUG9zaXRpb24pKTsKICAgICAgICAgCi0gICAgICAgIGlmIChjaGlsZC0+cmVuZGVyZXIoKS5p
c1JlcGxhY2VkKCkgJiYgaXM8UmVuZGVyUnVieVJ1bj4oY2hpbGQtPnJlbmRlcmVyKCkpICYmIGNo
aWxkLT5yZW5kZXJlcigpLnN0eWxlKCkucnVieVBvc2l0aW9uKCkgPT0gUnVieVBvc2l0aW9uQmVm
b3JlKSB7CisgICAgICAgIGlmIChjaGlsZC0+cmVuZGVyZXIoKS5pc1JlcGxhY2VkKCkgJiYgaXM8
UmVuZGVyUnVieVJ1bj4oY2hpbGQtPnJlbmRlcmVyKCkpICYmIGNoaWxkLT5yZW5kZXJlcigpLnN0
eWxlKCkucnVieVBvc2l0aW9uKCkgPT0gUnVieVBvc2l0aW9uOjpCZWZvcmUpIHsKICAgICAgICAg
ICAgIGF1dG8mIHJ1YnlSdW4gPSBkb3duY2FzdDxSZW5kZXJSdWJ5UnVuPihjaGlsZC0+cmVuZGVy
ZXIoKSk7CiAgICAgICAgICAgICBSZW5kZXJSdWJ5VGV4dCogcnVieVRleHQgPSBydWJ5UnVuLnJ1
YnlUZXh0KCk7CiAgICAgICAgICAgICBpZiAoIXJ1YnlUZXh0KQpAQCAtMTU3Niw3ICsxNTc2LDcg
QEAgTGF5b3V0VW5pdCBJbmxpbmVGbG93Qm94Ojpjb21wdXRlT3ZlckFubgogICAgICAgICBpZiAo
aXM8SW5saW5lVGV4dEJveD4oKmNoaWxkKSkgewogICAgICAgICAgICAgY29uc3QgUmVuZGVyU3R5
bGUmIGNoaWxkTGluZVN0eWxlID0gY2hpbGQtPmxpbmVTdHlsZSgpOwogICAgICAgICAgICAgYm9v
bCBlbXBoYXNpc01hcmtJc0Fib3ZlOwotICAgICAgICAgICAgaWYgKGNoaWxkTGluZVN0eWxlLnRl
eHRFbXBoYXNpc01hcmsoKSAhPSBUZXh0RW1waGFzaXNNYXJrTm9uZSAmJiBkb3duY2FzdDxJbmxp
bmVUZXh0Qm94PigqY2hpbGQpLmVtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUoY2hpbGRMaW5l
U3R5bGUsIGVtcGhhc2lzTWFya0lzQWJvdmUpICYmIGVtcGhhc2lzTWFya0lzQWJvdmUpIHsKKyAg
ICAgICAgICAgIGlmIChjaGlsZExpbmVTdHlsZS50ZXh0RW1waGFzaXNNYXJrKCkgIT0gVGV4dEVt
cGhhc2lzTWFyazo6Tm9uZSAmJiBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PigqY2hpbGQpLmVtcGhh
c2lzTWFya0V4aXN0c0FuZElzQWJvdmUoY2hpbGRMaW5lU3R5bGUsIGVtcGhhc2lzTWFya0lzQWJv
dmUpICYmIGVtcGhhc2lzTWFya0lzQWJvdmUpIHsKICAgICAgICAgICAgICAgICBpZiAoIWNoaWxk
TGluZVN0eWxlLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSkgewogICAgICAgICAgICAgICAg
ICAgICBpbnQgdG9wT2ZFbXBoYXNpc01hcmsgPSBjaGlsZC0+bG9naWNhbFRvcCgpIC0gY2hpbGRM
aW5lU3R5bGUuZm9udENhc2NhZGUoKS5lbXBoYXNpc01hcmtIZWlnaHQoY2hpbGRMaW5lU3R5bGUu
dGV4dEVtcGhhc2lzTWFya1N0cmluZygpKTsKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0g
c3RkOjptYXgocmVzdWx0LCBhbGxvd2VkUG9zaXRpb24gLSB0b3BPZkVtcGhhc2lzTWFyayk7CkBA
IC0xNjAwLDcgKzE2MDAsNyBAQCBMYXlvdXRVbml0IElubGluZUZsb3dCb3g6OmNvbXB1dGVVbmRl
ckFuCiAgICAgICAgIGlmIChpczxJbmxpbmVGbG93Qm94PigqY2hpbGQpKQogICAgICAgICAgICAg
cmVzdWx0ID0gc3RkOjptYXgocmVzdWx0LCBkb3duY2FzdDxJbmxpbmVGbG93Qm94PigqY2hpbGQp
LmNvbXB1dGVVbmRlckFubm90YXRpb25BZGp1c3RtZW50KGFsbG93ZWRQb3NpdGlvbikpOwogCi0g
ICAgICAgIGlmIChjaGlsZC0+cmVuZGVyZXIoKS5pc1JlcGxhY2VkKCkgJiYgaXM8UmVuZGVyUnVi
eVJ1bj4oY2hpbGQtPnJlbmRlcmVyKCkpICYmIGNoaWxkLT5yZW5kZXJlcigpLnN0eWxlKCkucnVi
eVBvc2l0aW9uKCkgPT0gUnVieVBvc2l0aW9uQWZ0ZXIpIHsKKyAgICAgICAgaWYgKGNoaWxkLT5y
ZW5kZXJlcigpLmlzUmVwbGFjZWQoKSAmJiBpczxSZW5kZXJSdWJ5UnVuPihjaGlsZC0+cmVuZGVy
ZXIoKSkgJiYgY2hpbGQtPnJlbmRlcmVyKCkuc3R5bGUoKS5ydWJ5UG9zaXRpb24oKSA9PSBSdWJ5
UG9zaXRpb246OkFmdGVyKSB7CiAgICAgICAgICAgICBhdXRvJiBydWJ5UnVuID0gZG93bmNhc3Q8
UmVuZGVyUnVieVJ1bj4oY2hpbGQtPnJlbmRlcmVyKCkpOwogICAgICAgICAgICAgUmVuZGVyUnVi
eVRleHQqIHJ1YnlUZXh0ID0gcnVieVJ1bi5ydWJ5VGV4dCgpOwogICAgICAgICAgICAgaWYgKCFy
dWJ5VGV4dCkKQEAgLTE2MjUsNyArMTYyNSw3IEBAIExheW91dFVuaXQgSW5saW5lRmxvd0JveDo6
Y29tcHV0ZVVuZGVyQW4KICAgICAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBjaGlsZExpbmVT
dHlsZSA9IGNoaWxkLT5saW5lU3R5bGUoKTsKICAgICAgICAgICAgIGJvb2wgZW1waGFzaXNNYXJr
SXNBYm92ZTsKICAgICAgICAgICAgIGRvd25jYXN0PElubGluZVRleHRCb3g+KCpjaGlsZCkuZW1w
aGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92ZShjaGlsZExpbmVTdHlsZSwgZW1waGFzaXNNYXJrSXNB
Ym92ZSk7Ci0gICAgICAgICAgICBpZiAoY2hpbGRMaW5lU3R5bGUudGV4dEVtcGhhc2lzTWFyaygp
ICE9IFRleHRFbXBoYXNpc01hcmtOb25lICYmICFlbXBoYXNpc01hcmtJc0Fib3ZlKSB7CisgICAg
ICAgICAgICBpZiAoY2hpbGRMaW5lU3R5bGUudGV4dEVtcGhhc2lzTWFyaygpICE9IFRleHRFbXBo
YXNpc01hcms6Ok5vbmUgJiYgIWVtcGhhc2lzTWFya0lzQWJvdmUpIHsKICAgICAgICAgICAgICAg
ICBpZiAoIWNoaWxkTGluZVN0eWxlLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSkgewogICAg
ICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGJvdHRvbU9mRW1waGFzaXNNYXJrID0gY2hpbGQt
PmxvZ2ljYWxCb3R0b20oKSArIGNoaWxkTGluZVN0eWxlLmZvbnRDYXNjYWRlKCkuZW1waGFzaXNN
YXJrSGVpZ2h0KGNoaWxkTGluZVN0eWxlLnRleHRFbXBoYXNpc01hcmtTdHJpbmcoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWF4KHJlc3VsdCwgYm90dG9tT2ZFbXBoYXNp
c01hcmsgLSBhbGxvd2VkUG9zaXRpb24pOwpAQCAtMTY1NSw3ICsxNjU1LDcgQEAgdm9pZCBJbmxp
bmVGbG93Qm94Ojpjb2xsZWN0TGVhZkJveGVzSW5MbwogICAgICAgICBsZWFmQm94ZXNJbkxvZ2lj
YWxPcmRlci5hcHBlbmQobGVhZik7CiAgICAgfQogCi0gICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUo
KS5ydGxPcmRlcmluZygpID09IFZpc3VhbE9yZGVyKQorICAgIGlmIChyZW5kZXJlcigpLnN0eWxl
KCkucnRsT3JkZXJpbmcoKSA9PSBPcmRlcjo6VmlzdWFsKQogICAgICAgICByZXR1cm47CiAKICAg
ICAvLyBSZXZlcnNlIG9mIHJlb3JkZXJpbmcgb2YgdGhlIGxpbmUgKEwyIGFjY29yZGluZyB0byBC
aWRpIHNwZWMpOgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3gu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5o
CShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxv
d0JveC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICAgICAg
Ly8gYW4gaW52aXNpYmxlIG1hcmtlciBleGlzdHMuICBUaGUgc2lkZSBlZmZlY3Qgb2YgaGF2aW5n
IGFuIGludmlzaWJsZSBtYXJrZXIgaXMgdGhhdCB0aGUgcXVpcmtzIG1vZGUgYmVoYXZpb3Igb2Yg
c2hyaW5raW5nIGxpbmVzIHdpdGggbm8KICAgICAgICAgLy8gdGV4dCBjaGlsZHJlbiBtdXN0IG5v
dCBhcHBseS4gIFRoaXMgY2hhbmdlIGFsc28gbWVhbnMgdGhhdCBnYXBzIHdpbGwgZXhpc3QgYmV0
d2VlbiBpbWFnZSBidWxsZXQgbGlzdCBpdGVtcy4gIEV2ZW4gd2hlbiB0aGUgbGlzdCBidWxsZXQK
ICAgICAgICAgLy8gaXMgYW4gaW1hZ2UsIHRoZSBsaW5lIGlzIHN0aWxsIGNvbnNpZGVyZWQgdG8g
YmUgaW1tdW5lIGZyb20gdGhlIHF1aXJrLgotICAgICAgICBtX2hhc1RleHRDaGlsZHJlbiA9IHJl
bmRlcmVyLnN0eWxlKCkuZGlzcGxheSgpID09IExJU1RfSVRFTTsKKyAgICAgICAgbV9oYXNUZXh0
Q2hpbGRyZW4gPSByZW5kZXJlci5zdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6TGlz
dEl0ZW07CiAgICAgICAgIG1faGFzVGV4dERlc2NlbmRhbnRzID0gbV9oYXNUZXh0Q2hpbGRyZW47
CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3gu
Y3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
VGV4dEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2MSw3ICszNjEsNyBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgZW1waGFzaXNQb3NpdGlvbkhhc05lCiBib29sIElubGluZVRleHRCb3g6OmVtcGhh
c2lzTWFya0V4aXN0c0FuZElzQWJvdmUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBib29sJiBh
Ym92ZSkgY29uc3QKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBpZiB0aGVy
ZSBhcmUgdGV4dCBlbXBoYXNpcyBtYXJrcyBhbmQgdGhleSBhcmUgc3VwcHJlc3NlZCBieSBydWJ5
IHRleHQuCi0gICAgaWYgKHN0eWxlLnRleHRFbXBoYXNpc01hcmsoKSA9PSBUZXh0RW1waGFzaXNN
YXJrTm9uZSkKKyAgICBpZiAoc3R5bGUudGV4dEVtcGhhc2lzTWFyaygpID09IFRleHRFbXBoYXNp
c01hcms6Ok5vbmUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFRleHRFbXBoYXNpc1Bv
c2l0aW9uIGVtcGhhc2lzUG9zaXRpb24gPSBzdHlsZS50ZXh0RW1waGFzaXNQb3NpdGlvbigpOwpA
QCAtNDM0LDcgKzQzNCw3IEBAIHN0YXRpYyBNYXJrZWRUZXh0IGNyZWF0ZU1hcmtlZFRleHRGcm9t
U2UKIAogdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBMYXlvdXRVbml0IC8qbGluZVRvcCovLCBMYXlv
dXRVbml0IC8qbGluZUJvdHRvbSovKQogewotICAgIGlmIChpc0xpbmVCcmVhaygpIHx8ICFwYWlu
dEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KHJlbmRlcmVyKCkpIHx8IHJlbmRlcmVyKCkuc3R5
bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRQorICAgIGlmIChpc0xpbmVCcmVhaygpIHx8ICFw
YWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KHJlbmRlcmVyKCkpIHx8IHJlbmRlcmVyKCku
c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZQogICAgICAgICB8fCBt
X3RydW5jYXRpb24gPT0gY0Z1bGxUcnVuY2F0aW9uIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWlu
dFBoYXNlT3V0bGluZSB8fCAhbV9sZW4pCiAgICAgICAgIHJldHVybjsKIApAQCAtMTIzNSw3ICsx
MjM1LDcgQEAgZmxvYXQgSW5saW5lVGV4dEJveDo6cG9zaXRpb25Gb3JPZmZzZXQodQogVGV4dFJ1
biBJbmxpbmVUZXh0Qm94OjpjcmVhdGVUZXh0UnVuKGJvb2wgaWdub3JlQ29tYmluZWRUZXh0LCBi
b29sIGlnbm9yZUh5cGhlbikgY29uc3QKIHsKICAgICBjb25zdCBhdXRvJiBzdHlsZSA9IGxpbmVT
dHlsZSgpOwotICAgIFRleHRSdW4gdGV4dFJ1biB7IHRleHQoaWdub3JlQ29tYmluZWRUZXh0LCBp
Z25vcmVIeXBoZW4pLCB0ZXh0UG9zKCksIGV4cGFuc2lvbigpLCBleHBhbnNpb25CZWhhdmlvcigp
LCBkaXJlY3Rpb24oKSwgZGlyT3ZlcnJpZGUoKSB8fCBzdHlsZS5ydGxPcmRlcmluZygpID09IFZp
c3VhbE9yZGVyLCAhcmVuZGVyZXIoKS5jYW5Vc2VTaW1wbGVGb250Q29kZVBhdGgoKSB9OworICAg
IFRleHRSdW4gdGV4dFJ1biB7IHRleHQoaWdub3JlQ29tYmluZWRUZXh0LCBpZ25vcmVIeXBoZW4p
LCB0ZXh0UG9zKCksIGV4cGFuc2lvbigpLCBleHBhbnNpb25CZWhhdmlvcigpLCBkaXJlY3Rpb24o
KSwgZGlyT3ZlcnJpZGUoKSB8fCBzdHlsZS5ydGxPcmRlcmluZygpID09IE9yZGVyOjpWaXN1YWws
ICFyZW5kZXJlcigpLmNhblVzZVNpbXBsZUZvbnRDb2RlUGF0aCgpIH07CiAgICAgdGV4dFJ1bi5z
ZXRUYWJTaXplKCFzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSwgc3R5bGUudGFiU2l6ZSgpKTsK
ICAgICByZXR1cm4gdGV4dFJ1bjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Q
b2ludGVyRXZlbnRzSGl0UnVsZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9Qb2ludGVyRXZlbnRzSGl0UnVsZXMuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUG9pbnRlckV2ZW50c0hpdFJ1bGVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjIsNyArMjIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBvaW50
ZXJFdmVudHNIaXRSdWxlczo6UG9pbnRlckV2ZW50c0hpdFJ1bGVzKEVIaXRUZXN0aW5nIGhpdFRl
c3RpbmcsIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBFUG9pbnRlckV2ZW50cyBwb2lu
dGVyRXZlbnRzKQorUG9pbnRlckV2ZW50c0hpdFJ1bGVzOjpQb2ludGVyRXZlbnRzSGl0UnVsZXMo
RUhpdFRlc3RpbmcgaGl0VGVzdGluZywgY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIFBv
aW50ZXJFdmVudHMgcG9pbnRlckV2ZW50cykKICAgICA6IHJlcXVpcmVWaXNpYmxlKGZhbHNlKQog
ICAgICwgcmVxdWlyZUZpbGwoZmFsc2UpCiAgICAgLCByZXF1aXJlU3Ryb2tlKGZhbHNlKQpAQCAt
MzAsNzggKzMwLDc4IEBAIFBvaW50ZXJFdmVudHNIaXRSdWxlczo6UG9pbnRlckV2ZW50c0hpdFIK
ICAgICAsIGNhbkhpdEZpbGwoZmFsc2UpCiB7CiAgICAgaWYgKHJlcXVlc3Quc3ZnQ2xpcENvbnRl
bnQoKSkKLSAgICAgICAgcG9pbnRlckV2ZW50cyA9IFBFX0ZJTEw7CisgICAgICAgIHBvaW50ZXJF
dmVudHMgPSBQb2ludGVyRXZlbnRzOjpGaWxsOwogCiAgICAgaWYgKGhpdFRlc3RpbmcgPT0gU1ZH
X1BBVEhfSElUVEVTVElORykgewogICAgICAgICBzd2l0Y2ggKHBvaW50ZXJFdmVudHMpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNhc2UgUEVfVklTSUJMRV9QQUlOVEVEOgotICAgICAgICAgICAg
Y2FzZSBQRV9BVVRPOiAvLyAiYXV0byIgaXMgbGlrZSAidmlzaWJsZVBhaW50ZWQiIHdoZW4gaW4g
U1ZHIGNvbnRlbnQKKyAgICAgICAgICAgIGNhc2UgUG9pbnRlckV2ZW50czo6VmlzaWJsZVBhaW50
ZWQ6CisgICAgICAgICAgICBjYXNlIFBvaW50ZXJFdmVudHM6OkF1dG86IC8vICJhdXRvIiBpcyBs
aWtlICJ2aXNpYmxlUGFpbnRlZCIgd2hlbiBpbiBTVkcgY29udGVudAogICAgICAgICAgICAgICAg
IHJlcXVpcmVGaWxsID0gdHJ1ZTsKICAgICAgICAgICAgICAgICByZXF1aXJlU3Ryb2tlID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICBGQUxMVEhST1VHSDsKLSAgICAgICAgICAgIGNhc2UgUEVfVklT
SUJMRToKKyAgICAgICAgICAgIGNhc2UgUG9pbnRlckV2ZW50czo6VmlzaWJsZToKICAgICAgICAg
ICAgICAgICByZXF1aXJlVmlzaWJsZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgY2FuSGl0Rmls
bCA9IHRydWU7CiAgICAgICAgICAgICAgICAgY2FuSGl0U3Ryb2tlID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgUEVfVklTSUJMRV9GSUxMOgorICAgICAg
ICAgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpWaXNpYmxlRmlsbDoKICAgICAgICAgICAgICAgICBy
ZXF1aXJlVmlzaWJsZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgY2FuSGl0RmlsbCA9IHRydWU7
CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFBFX1ZJU0lCTEVfU1RS
T0tFOgorICAgICAgICAgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpWaXNpYmxlU3Ryb2tlOgogICAg
ICAgICAgICAgICAgIHJlcXVpcmVWaXNpYmxlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBjYW5I
aXRTdHJva2UgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2Fz
ZSBQRV9QQUlOVEVEOgorICAgICAgICAgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpQYWludGVkOgog
ICAgICAgICAgICAgICAgIHJlcXVpcmVGaWxsID0gdHJ1ZTsKICAgICAgICAgICAgICAgICByZXF1
aXJlU3Ryb2tlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBGQUxMVEhST1VHSDsKLSAgICAgICAg
ICAgIGNhc2UgUEVfQUxMOgorICAgICAgICAgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpBbGw6CiAg
ICAgICAgICAgICAgICAgY2FuSGl0RmlsbCA9IHRydWU7CiAgICAgICAgICAgICAgICAgY2FuSGl0
U3Ryb2tlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ug
UEVfRklMTDoKKyAgICAgICAgICAgIGNhc2UgUG9pbnRlckV2ZW50czo6RmlsbDoKICAgICAgICAg
ICAgICAgICBjYW5IaXRGaWxsID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGNhc2UgUEVfU1RST0tFOgorICAgICAgICAgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpT
dHJva2U6CiAgICAgICAgICAgICAgICAgY2FuSGl0U3Ryb2tlID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgUEVfTk9ORToKKyAgICAgICAgICAgIGNhc2Ug
UG9pbnRlckV2ZW50czo6Tm9uZToKICAgICAgICAgICAgICAgICAvLyBub3RoaW5nIHRvIGRvIGhl
cmUsIGRlZmF1bHRzIGFyZSBhbGwgZmFsc2UuCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBzd2l0Y2ggKHBvaW50ZXJFdmVudHMpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNhc2UgUEVfVklTSUJMRV9QQUlOVEVEOgotICAgICAgICAgICAg
Y2FzZSBQRV9BVVRPOiAvLyAiYXV0byIgaXMgbGlrZSAidmlzaWJsZVBhaW50ZWQiIHdoZW4gaW4g
U1ZHIGNvbnRlbnQKKyAgICAgICAgICAgIGNhc2UgUG9pbnRlckV2ZW50czo6VmlzaWJsZVBhaW50
ZWQ6CisgICAgICAgICAgICBjYXNlIFBvaW50ZXJFdmVudHM6OkF1dG86IC8vICJhdXRvIiBpcyBs
aWtlICJ2aXNpYmxlUGFpbnRlZCIgd2hlbiBpbiBTVkcgY29udGVudAogICAgICAgICAgICAgICAg
IHJlcXVpcmVWaXNpYmxlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICByZXF1aXJlRmlsbCA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgcmVxdWlyZVN0cm9rZSA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgY2FuSGl0RmlsbCA9IHRydWU7CiAgICAgICAgICAgICAgICAgY2FuSGl0U3Ryb2tlID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgUEVfVklTSUJMRV9G
SUxMOgotICAgICAgICAgICAgY2FzZSBQRV9WSVNJQkxFX1NUUk9LRToKLSAgICAgICAgICAgIGNh
c2UgUEVfVklTSUJMRToKKyAgICAgICAgICAgIGNhc2UgUG9pbnRlckV2ZW50czo6VmlzaWJsZUZp
bGw6CisgICAgICAgICAgICBjYXNlIFBvaW50ZXJFdmVudHM6OlZpc2libGVTdHJva2U6CisgICAg
ICAgICAgICBjYXNlIFBvaW50ZXJFdmVudHM6OlZpc2libGU6CiAgICAgICAgICAgICAgICAgcmVx
dWlyZVZpc2libGUgPSB0cnVlOwogICAgICAgICAgICAgICAgIGNhbkhpdEZpbGwgPSB0cnVlOwog
ICAgICAgICAgICAgICAgIGNhbkhpdFN0cm9rZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlIFBFX1BBSU5URUQ6CisgICAgICAgICAgICBjYXNlIFBvaW50
ZXJFdmVudHM6OlBhaW50ZWQ6CiAgICAgICAgICAgICAgICAgcmVxdWlyZUZpbGwgPSB0cnVlOwog
ICAgICAgICAgICAgICAgIHJlcXVpcmVTdHJva2UgPSB0cnVlOwogICAgICAgICAgICAgICAgIGNh
bkhpdEZpbGwgPSB0cnVlOwogICAgICAgICAgICAgICAgIGNhbkhpdFN0cm9rZSA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFBFX0ZJTEw6Ci0gICAgICAg
ICAgICBjYXNlIFBFX1NUUk9LRToKLSAgICAgICAgICAgIGNhc2UgUEVfQUxMOgorICAgICAgICAg
ICAgY2FzZSBQb2ludGVyRXZlbnRzOjpGaWxsOgorICAgICAgICAgICAgY2FzZSBQb2ludGVyRXZl
bnRzOjpTdHJva2U6CisgICAgICAgICAgICBjYXNlIFBvaW50ZXJFdmVudHM6OkFsbDoKICAgICAg
ICAgICAgICAgICBjYW5IaXRGaWxsID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBjYW5IaXRTdHJv
a2UgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBQRV9O
T05FOgorICAgICAgICAgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpOb25lOgogICAgICAgICAgICAg
ICAgIC8vIG5vdGhpbmcgdG8gZG8gaGVyZSwgZGVmYXVsdHMgYXJlIGFsbCBmYWxzZS4KICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1BvaW50ZXJFdmVudHNIaXRSdWxlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9Qb2ludGVyRXZlbnRzSGl0UnVsZXMuaAkocmV2aXNpb24gMjMyMTIzKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BvaW50ZXJFdmVudHNIaXRSdWxlcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIHB1YmxpYzoKICAgICAgICAgU1ZHX1RFWFRfSElUVEVT
VElORwogICAgIH07CiAKLSAgICBQb2ludGVyRXZlbnRzSGl0UnVsZXMoRUhpdFRlc3RpbmcsIGNv
bnN0IEhpdFRlc3RSZXF1ZXN0JiwgRVBvaW50ZXJFdmVudHMpOworICAgIFBvaW50ZXJFdmVudHNI
aXRSdWxlcyhFSGl0VGVzdGluZywgY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBQb2ludGVyRXZlbnRz
KTsKIAogICAgIGJvb2wgcmVxdWlyZVZpc2libGU7CiAgICAgYm9vbCByZXF1aXJlRmlsbDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24gMjMy
MTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzYwLDcgKzc2MCw3IEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2s6OmNvbXB1
dGVTdGFydFBvc2kKIAogICAgIExheW91dFVuaXQgc3RhcnRPZmYgPSBzdGFydE9mZnNldEZvckxp
bmVJbkZyYWdtZW50KGJsb2NrT2Zmc2V0LCBEb05vdEluZGVudFRleHQsIGZyYWdtZW50LCBsb2dp
Y2FsSGVpZ2h0Rm9yQ2hpbGQoY2hpbGQpKTsKIAotICAgIGlmIChzdHlsZSgpLnRleHRBbGlnbigp
ICE9IFdFQktJVF9DRU5URVIgJiYgIWNoaWxkLnN0eWxlKCkubWFyZ2luU3RhcnRVc2luZygmc3R5
bGUoKSkuaXNBdXRvKCkpIHsKKyAgICBpZiAoc3R5bGUoKS50ZXh0QWxpZ24oKSAhPSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXIgJiYgIWNoaWxkLnN0eWxlKCkubWFyZ2luU3RhcnRVc2luZygm
c3R5bGUoKSkuaXNBdXRvKCkpIHsKICAgICAgICAgaWYgKGNoaWxkTWFyZ2luU3RhcnQgPCAwKQog
ICAgICAgICAgICAgc3RhcnRPZmYgKz0gY2hpbGRNYXJnaW5TdGFydDsKICAgICAgICAgbmV3UG9z
aXRpb24gPSBzdGQ6Om1heChuZXdQb3NpdGlvbiwgc3RhcnRPZmYpOyAvLyBMZXQgdGhlIGZsb2F0
IHNpdCBpbiB0aGUgY2hpbGQncyBtYXJnaW4gaWYgaXQgY2FuIGZpdC4KQEAgLTExMDksNyArMTEw
OSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50KFBhaW50SW5mbyYgcGFpbnQKICAgICAvLyB6
LWluZGV4LiBXZSBwYWludCBhZnRlciB3ZSBwYWludGVkIHRoZSBiYWNrZ3JvdW5kL2JvcmRlciwg
c28gdGhhdCB0aGUgc2Nyb2xsYmFycyB3aWxsCiAgICAgLy8gc2l0IGFib3ZlIHRoZSBiYWNrZ3Jv
dW5kL2JvcmRlci4KICAgICBpZiAoKHBoYXNlID09IFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQg
fHwgcGhhc2UgPT0gUGFpbnRQaGFzZUNoaWxkQmxvY2tCYWNrZ3JvdW5kKSAmJiBoYXNPdmVyZmxv
d0NsaXAoKSAmJiBsYXllcigpCi0gICAgICAgICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJ
U0lCTEUgJiYgcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdCgqdGhpcykgJiYgIXBhaW50
SW5mby5wYWludFJvb3RCYWNrZ3JvdW5kT25seSgpKQorICAgICAgICAmJiBzdHlsZSgpLnZpc2li
aWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmIHBhaW50SW5mby5zaG91bGRQYWludFdp
dGhpblJvb3QoKnRoaXMpICYmICFwYWludEluZm8ucGFpbnRSb290QmFja2dyb3VuZE9ubHkoKSkK
ICAgICAgICAgbGF5ZXIoKS0+cGFpbnRPdmVyZmxvd0NvbnRyb2xzKHBhaW50SW5mby5jb250ZXh0
KCksIHJvdW5kZWRJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0KSwgc25hcHBlZEludFJlY3Qo
cGFpbnRJbmZvLnJlY3QpKTsKIH0KIApAQCAtMTIxOSw3ICsxMjE5LDcgQEAgdm9pZCBSZW5kZXJC
bG9jazo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJgogICAgIFBhaW50UGhhc2UgcGFpbnRQaGFzZSA9
IHBhaW50SW5mby5waGFzZTsKIAogICAgIC8vIDEuIHBhaW50IGJhY2tncm91bmQsIGJvcmRlcnMg
ZXRjCi0gICAgaWYgKChwYWludFBoYXNlID09IFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQgfHwg
cGFpbnRQaGFzZSA9PSBQYWludFBoYXNlQ2hpbGRCbG9ja0JhY2tncm91bmQpICYmIHN0eWxlKCku
dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpIHsKKyAgICBpZiAoKHBhaW50UGhhc2UgPT0gUGFpbnRQ
aGFzZUJsb2NrQmFja2dyb3VuZCB8fCBwYWludFBoYXNlID09IFBhaW50UGhhc2VDaGlsZEJsb2Nr
QmFja2dyb3VuZCkgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJs
ZSkgewogICAgICAgICBpZiAoaGFzVmlzaWJsZUJveERlY29yYXRpb25zKCkpCiAgICAgICAgICAg
ICBwYWludEJveERlY29yYXRpb25zKHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogICAgIH0KQEAg
LTEyMjgsMTIgKzEyMjgsMTIgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRPYmplY3QoUGFpbnRJ
bmZvJgogICAgIGlmIChwYWludFBoYXNlID09IFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQgfHwg
cGFpbnRQaGFzZSA9PSBQYWludFBoYXNlQ2hpbGRCbG9ja0JhY2tncm91bmQgfHwgcGFpbnRQaGFz
ZSA9PSBQYWludFBoYXNlU2VsZWN0aW9uKQogICAgICAgICBwYWludEV4Y2x1ZGVkQ2hpbGRyZW5J
bkJvcmRlcihwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKICAgICAKLSAgICBpZiAocGFpbnRQaGFz
ZSA9PSBQYWludFBoYXNlTWFzayAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKSB7
CisgICAgaWYgKHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZU1hc2sgJiYgc3R5bGUoKS52aXNpYmls
aXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkgewogICAgICAgICBwYWludE1hc2socGFpbnRJ
bmZvLCBwYWludE9mZnNldCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAocGFp
bnRQaGFzZSA9PSBQYWludFBoYXNlQ2xpcHBpbmdNYXNrICYmIHN0eWxlKCkudmlzaWJpbGl0eSgp
ID09IFZJU0lCTEUpIHsKKyAgICBpZiAocGFpbnRQaGFzZSA9PSBQYWludFBoYXNlQ2xpcHBpbmdN
YXNrICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUpIHsKICAg
ICAgICAgcGFpbnRDbGlwcGluZ01hc2socGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0xMjQ5LDcgKzEyNDksNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpw
YWludE9iamVjdChQYWludEluZm8mCiAgICAgLy8gQ29sdW1uIHJ1bGVzIG5lZWQgdG8gYWNjb3Vu
dCBmb3Igc2Nyb2xsaW5nIGFuZCBjbGlwcGluZy4KICAgICAvLyBGSVhNRTogQ2xpcHBpbmcgb2Yg
Y29sdW1uIHJ1bGVzIGRvZXMgbm90IHdvcmsuIFdlIHdpbGwgbmVlZCBhIHNlcGFyYXRlIHBhaW50
IHBoYXNlIGZvciBjb2x1bW4gcnVsZXMgSSBzdXNwZWN0IGluIG9yZGVyIHRvIGdldAogICAgIC8v
IGNsaXBwaW5nIGNvcnJlY3QgKHNpbmNlIGl0IGhhcyB0byBwYWludCBhcyBiYWNrZ3JvdW5kIGJ1
dCBpcyBzdGlsbCBjb25zaWRlcmVkICJjb250ZW50cyIpLgotICAgIGlmICgocGFpbnRQaGFzZSA9
PSBQYWludFBoYXNlQmxvY2tCYWNrZ3JvdW5kIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZUNo
aWxkQmxvY2tCYWNrZ3JvdW5kKSAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKQor
ICAgIGlmICgocGFpbnRQaGFzZSA9PSBQYWludFBoYXNlQmxvY2tCYWNrZ3JvdW5kIHx8IHBhaW50
UGhhc2UgPT0gUGFpbnRQaGFzZUNoaWxkQmxvY2tCYWNrZ3JvdW5kKSAmJiBzdHlsZSgpLnZpc2li
aWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICBwYWludENvbHVtblJ1bGVz
KHBhaW50SW5mbywgc2Nyb2xsZWRPZmZzZXQpOwogCiAgICAgLy8gRG9uZSB3aXRoIGJhY2tncm91
bmRzLCBib3JkZXJzIGFuZCBjb2x1bW4gcnVsZXMuCkBAIC0xMjcxLDEzICsxMjcxLDEzIEBAIHZv
aWQgUmVuZGVyQmxvY2s6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYKICAgICAgICAgcGFpbnRGbG9h
dHMocGFpbnRJbmZvLCBzY3JvbGxlZE9mZnNldCwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlU2Vs
ZWN0aW9uIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZVRleHRDbGlwKTsKIAogICAgIC8vIDUu
IHBhaW50IG91dGxpbmUuCi0gICAgaWYgKChwYWludFBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5l
IHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKSAmJiBoYXNPdXRsaW5lKCkg
JiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkKKyAgICBpZiAoKHBhaW50UGhhc2Ug
PT0gUGFpbnRQaGFzZU91dGxpbmUgfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlU2VsZk91dGxp
bmUpICYmIGhhc091dGxpbmUoKSAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5
OjpWaXNpYmxlKQogICAgICAgICBwYWludE91dGxpbmUocGFpbnRJbmZvLCBMYXlvdXRSZWN0KHBh
aW50T2Zmc2V0LCBzaXplKCkpKTsKIAogICAgIC8vIDYuIHBhaW50IGNvbnRpbnVhdGlvbiBvdXRs
aW5lcy4KICAgICBpZiAoKHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZU91dGxpbmUgfHwgcGFpbnRQ
aGFzZSA9PSBQYWludFBoYXNlQ2hpbGRPdXRsaW5lcykpIHsKICAgICAgICAgUmVuZGVySW5saW5l
KiBpbmxpbmVDb250ID0gaW5saW5lQ29udGludWF0aW9uKCk7Ci0gICAgICAgIGlmIChpbmxpbmVD
b250ICYmIGlubGluZUNvbnQtPmhhc091dGxpbmUoKSAmJiBpbmxpbmVDb250LT5zdHlsZSgpLnZp
c2liaWxpdHkoKSA9PSBWSVNJQkxFKSB7CisgICAgICAgIGlmIChpbmxpbmVDb250ICYmIGlubGlu
ZUNvbnQtPmhhc091dGxpbmUoKSAmJiBpbmxpbmVDb250LT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9
PSBWaXNpYmlsaXR5OjpWaXNpYmxlKSB7CiAgICAgICAgICAgICBSZW5kZXJJbmxpbmUqIGlubGlu
ZVJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVySW5saW5lPihpbmxpbmVDb250LT5lbGVtZW50KCkt
PnJlbmRlcmVyKCkpOwogICAgICAgICAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jayA9
IHRoaXMtPmNvbnRhaW5pbmdCbG9jaygpOwogCkBAIC0xMzczLDcgKzEzNzMsNyBAQCBib29sIFJl
bmRlckJsb2NrOjpzaG91bGRQYWludFNlbGVjdGlvbkdhCiAgICAgaWYgKHNldHRpbmdzKCkuc2Vs
ZWN0aW9uUGFpbnRpbmdXaXRob3V0U2VsZWN0aW9uR2Fwc0VuYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHNlbGVjdGlvblN0YXRlKCkgIT0gU2VsZWN0aW9uTm9u
ZSAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFICYmIGlzU2VsZWN0aW9uUm9vdCgp
OworICAgIHJldHVybiBzZWxlY3Rpb25TdGF0ZSgpICE9IFNlbGVjdGlvbk5vbmUgJiYgc3R5bGUo
KS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiBpc1NlbGVjdGlvblJvb3Qo
KTsKIH0KIAogYm9vbCBSZW5kZXJCbG9jazo6aXNTZWxlY3Rpb25Sb290KCkgY29uc3QKQEAgLTE4
NjYsNyArMTg2Niw3IEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2s6OmFkanVzdExvZ2ljYWxMZWYK
ICAgICBpZiAoYXBwbHlUZXh0SW5kZW50ICYmIHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpKQogICAgICAgICBsZWZ0ICs9IHRleHRJbmRlbnRPZmZzZXQoKTsKIAotICAgIGlmIChzdHls
ZSgpLmxpbmVBbGlnbigpID09IExpbmVBbGlnbk5vbmUpCisgICAgaWYgKHN0eWxlKCkubGluZUFs
aWduKCkgPT0gTGluZUFsaWduOjpOb25lKQogICAgICAgICByZXR1cm4gbGVmdDsKICAgICAKICAg
ICAvLyBQdXNoIGluIG91ciBsZWZ0IG9mZnNldCBzbyB0aGF0IGl0IGlzIGFsaWduZWQgd2l0aCB0
aGUgY2hhcmFjdGVyIGdyaWQuCkBAIC0xOTA2LDcgKzE5MDYsNyBAQCBMYXlvdXRVbml0IFJlbmRl
ckJsb2NrOjphZGp1c3RMb2dpY2FsUmlnCiAgICAgaWYgKGFwcGx5VGV4dEluZGVudCAmJiAhc3R5
bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCiAgICAgICAgIHJpZ2h0IC09IHRleHRJbmRl
bnRPZmZzZXQoKTsKICAgICAKLSAgICBpZiAoc3R5bGUoKS5saW5lQWxpZ24oKSA9PSBMaW5lQWxp
Z25Ob25lKQorICAgIGlmIChzdHlsZSgpLmxpbmVBbGlnbigpID09IExpbmVBbGlnbjo6Tm9uZSkK
ICAgICAgICAgcmV0dXJuIHJpZ2h0OwogICAgIAogICAgIC8vIFB1c2ggaW4gb3VyIHJpZ2h0IG9m
ZnNldCBzbyB0aGF0IGl0IGlzIGFsaWduZWQgd2l0aCB0aGUgY2hhcmFjdGVyIGdyaWQuCkBAIC0y
MTM0LDcgKzIxMzQsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxvY2s6OnBvc2l0aW9uRm9y
CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0NoaWxkSGl0VGVzdENhbmRpZGF0ZShjb25zdCBSZW5k
ZXJCb3gmIGJveCkKIHsKLSAgICByZXR1cm4gYm94LmhlaWdodCgpICYmIGJveC5zdHlsZSgpLnZp
c2liaWxpdHkoKSA9PSBWSVNJQkxFICYmICFib3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYg
IWJveC5pc0luRmxvd1JlbmRlckZyYWdtZW50ZWRGbG93KCk7CisgICAgcmV0dXJuIGJveC5oZWln
aHQoKSAmJiBib3guc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAm
JiAhYm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmICFib3guaXNJbkZsb3dSZW5kZXJGcmFn
bWVudGVkRmxvdygpOwogfQogCiAvLyBWYWxpZCBjYW5kaWRhdGVzIGluIGEgRnJhZ21lbnRlZEZs
b3cgbXVzdCBiZSByZW5kZXJlZCBieSB0aGUgZnJhZ21lbnQuCkBAIC0yMjU4LDcgKzIyNTgsNyBA
QCB2b2lkIFJlbmRlckJsb2NrOjpjb21wdXRlUHJlZmVycmVkTG9naWNhCiB2b2lkIFJlbmRlckJs
b2NrOjpjb21wdXRlQmxvY2tQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxv
Z2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBjb25zdAogewogICAgIGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZVRvVXNlID0gc3R5bGUoKTsKLSAgICBib29sIG5vd3JhcCA9
IHN0eWxlVG9Vc2Uud2hpdGVTcGFjZSgpID09IE5PV1JBUDsKKyAgICBib29sIG5vd3JhcCA9IHN0
eWxlVG9Vc2Uud2hpdGVTcGFjZSgpID09IFdoaXRlU3BhY2U6Ok5vV3JhcDsKIAogICAgIFJlbmRl
ck9iamVjdCogY2hpbGQgPSBmaXJzdENoaWxkKCk7CiAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5p
bmdCbG9jayA9IHRoaXMtPmNvbnRhaW5pbmdCbG9jaygpOwpAQCAtMjU1MCw3ICsyNTUwLDcgQEAg
UmVuZGVyQmxvY2sqIFJlbmRlckJsb2NrOjpmaXJzdExpbmVCbG9jawogICAgIFJlbmRlckJsb2Nr
KiBmaXJzdExpbmVCbG9jayA9IGNvbnN0X2Nhc3Q8UmVuZGVyQmxvY2sqPih0aGlzKTsKICAgICBi
b29sIGhhc1BzZXVkbyA9IGZhbHNlOwogICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGhhc1Bz
ZXVkbyA9IGZpcnN0TGluZUJsb2NrLT5zdHlsZSgpLmhhc1BzZXVkb1N0eWxlKEZJUlNUX0xJTkUp
OworICAgICAgICBoYXNQc2V1ZG8gPSBmaXJzdExpbmVCbG9jay0+c3R5bGUoKS5oYXNQc2V1ZG9T
dHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKTsKICAgICAgICAgaWYgKGhhc1BzZXVkbykKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBSZW5kZXJFbGVtZW50KiBwYXJlbnRCbG9jayA9IGZpcnN0
TGluZUJsb2NrLT5wYXJlbnQoKTsKQEAgLTI1NzAsNyArMjU3MCw3IEBAIHN0YXRpYyBpbmxpbmUg
UmVuZGVyQmxvY2sqIGZpbmRGaXJzdExldHQKIHsKICAgICBSZW5kZXJCbG9jayogZmlyc3RMZXR0
ZXJCbG9jayA9IHN0YXJ0OwogICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGJvb2wgY2FuSGF2
ZUZpcnN0TGV0dGVyUmVuZGVyZXIgPSBmaXJzdExldHRlckJsb2NrLT5zdHlsZSgpLmhhc1BzZXVk
b1N0eWxlKEZJUlNUX0xFVFRFUikKKyAgICAgICAgYm9vbCBjYW5IYXZlRmlyc3RMZXR0ZXJSZW5k
ZXJlciA9IGZpcnN0TGV0dGVyQmxvY2stPnN0eWxlKCkuaGFzUHNldWRvU3R5bGUoUHNldWRvSWQ6
OkZpcnN0TGV0dGVyKQogICAgICAgICAgICAgJiYgZmlyc3RMZXR0ZXJCbG9jay0+Y2FuSGF2ZUdl
bmVyYXRlZENoaWxkcmVuKCkKICAgICAgICAgICAgICYmIGlzUmVuZGVyQmxvY2tGbG93T3JSZW5k
ZXJCdXR0b24oKmZpcnN0TGV0dGVyQmxvY2spOwogICAgICAgICBpZiAoY2FuSGF2ZUZpcnN0TGV0
dGVyUmVuZGVyZXIpCkBAIC0yNTk1LDcgKzI1OTUsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpnZXRG
aXJzdExldHRlcihSZW5kZXJPCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIERvbid0IHJlY3Vy
Ci0gICAgaWYgKHN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gRklSU1RfTEVUVEVSKQorICAgIGlmIChz
dHlsZSgpLnN0eWxlVHlwZSgpID09IFBzZXVkb0lkOjpGaXJzdExldHRlcikKICAgICAgICAgcmV0
dXJuOwogICAgIAogICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGRlc3Ryb3kgdGhlIGZpcnN0LWxl
dHRlciBvYmplY3QgaWYgaXQgaXMgbm8gbG9uZ2VyIHRoZSBmaXJzdCBjaGlsZC4gTmVlZCB0byBm
aW5kCkBAIC0yNjIwLDcgKzI2MjAsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpnZXRGaXJzdExldHRl
cihSZW5kZXJPCiAgICAgICAgIGlmIChpczxSZW5kZXJMaXN0TWFya2VyPihjdXJyZW50KSkKICAg
ICAgICAgICAgIGZpcnN0TGV0dGVyID0gY3VycmVudC5uZXh0U2libGluZygpOwogICAgICAgICBl
bHNlIGlmIChjdXJyZW50LmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewotICAg
ICAgICAgICAgaWYgKGN1cnJlbnQuc3R5bGUoKS5zdHlsZVR5cGUoKSA9PSBGSVJTVF9MRVRURVIp
IHsKKyAgICAgICAgICAgIGlmIChjdXJyZW50LnN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gUHNldWRv
SWQ6OkZpcnN0TGV0dGVyKSB7CiAgICAgICAgICAgICAgICAgZmlyc3RMZXR0ZXIgPSBjdXJyZW50
LmZpcnN0Q2hpbGQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAg
LTI2MjksNyArMjYyOSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmdldEZpcnN0TGV0dGVyKFJlbmRl
ck8KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBlbHNlIGlmIChjdXJyZW50LmlzRmxleGli
bGVCb3hJbmNsdWRpbmdEZXByZWNhdGVkKCkgfHwgY3VycmVudC5pc1JlbmRlckdyaWQoKSkKICAg
ICAgICAgICAgIGZpcnN0TGV0dGVyID0gY3VycmVudC5uZXh0U2libGluZygpOwotICAgICAgICBl
bHNlIGlmIChjdXJyZW50LnN0eWxlKCkuaGFzUHNldWRvU3R5bGUoRklSU1RfTEVUVEVSKSAmJiBj
dXJyZW50LmNhbkhhdmVHZW5lcmF0ZWRDaGlsZHJlbigpKSAgeworICAgICAgICBlbHNlIGlmIChj
dXJyZW50LnN0eWxlKCkuaGFzUHNldWRvU3R5bGUoUHNldWRvSWQ6OkZpcnN0TGV0dGVyKSAmJiBj
dXJyZW50LmNhbkhhdmVHZW5lcmF0ZWRDaGlsZHJlbigpKSAgewogICAgICAgICAgICAgLy8gV2Ug
Zm91bmQgYSBsb3dlci1sZXZlbCBub2RlIHdpdGggZmlyc3QtbGV0dGVyLCB3aGljaCBzdXBlcnNl
ZGVzIHRoZSBoaWdoZXItbGV2ZWwgc3R5bGUKICAgICAgICAgICAgIGZpcnN0TGV0dGVyQ29udGFp
bmVyID0gJmN1cnJlbnQ7CiAgICAgICAgICAgICBmaXJzdExldHRlciA9IGN1cnJlbnQuZmlyc3RD
aGlsZCgpOwpAQCAtMjg2OCwxNCArMjg2OCwxNCBAQCB2b2lkIFJlbmRlckJsb2NrOjphZGRGb2N1
c1JpbmdSZWN0cyhWZWN0CiAgICAgICAgIGlubGluZUNvbnRpbnVhdGlvbi0+YWRkRm9jdXNSaW5n
UmVjdHMocmVjdHMsIGZsb29yZWRMYXlvdXRQb2ludChMYXlvdXRQb2ludChhZGRpdGlvbmFsT2Zm
c2V0ICsgaW5saW5lQ29udGludWF0aW9uLT5jb250YWluaW5nQmxvY2soKS0+bG9jYXRpb24oKSAt
IGxvY2F0aW9uKCkpKSwgcGFpbnRDb250YWluZXIpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyQmxv
Y2s+IFJlbmRlckJsb2NrOjpjcmVhdGVBbm9ueW1vdXNCbG9ja1dpdGhTdHlsZUFuZERpc3BsYXko
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEVEaXNwbGF5IGRp
c3BsYXkpCitSZW5kZXJQdHI8UmVuZGVyQmxvY2s+IFJlbmRlckJsb2NrOjpjcmVhdGVBbm9ueW1v
dXNCbG9ja1dpdGhTdHlsZUFuZERpc3BsYXkoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUsIERpc3BsYXlUeXBlIGRpc3BsYXkpCiB7CiAgICAgLy8gRklYTUU6IERv
IHdlIG5lZWQgdG8gY29udmVydCBhbGwgb3VyIGlubGluZSBkaXNwbGF5cyB0byBibG9jay10eXBl
IGluIHRoZSBhbm9ueW1vdXMgbG9naWMgPwogICAgIFJlbmRlclB0cjxSZW5kZXJCbG9jaz4gbmV3
Qm94OwotICAgIGlmIChkaXNwbGF5ID09IEZMRVggfHwgZGlzcGxheSA9PSBJTkxJTkVfRkxFWCkK
LSAgICAgICAgbmV3Qm94ID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyRmxleGlibGVCb3g+KGRvY3Vt
ZW50LCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSwg
RkxFWCkpOworICAgIGlmIChkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpGbGV4IHx8IGRpc3BsYXkg
PT0gRGlzcGxheVR5cGU6OklubGluZUZsZXgpCisgICAgICAgIG5ld0JveCA9IGNyZWF0ZVJlbmRl
cmVyPFJlbmRlckZsZXhpYmxlQm94Pihkb2N1bWVudCwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255
bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUsIERpc3BsYXlUeXBlOjpGbGV4KSk7CiAgICAgZWxz
ZQotICAgICAgICBuZXdCb3ggPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJCbG9ja0Zsb3c+KGRvY3Vt
ZW50LCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSwg
QkxPQ0spKTsKKyAgICAgICAgbmV3Qm94ID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyQmxvY2tGbG93
Pihkb2N1bWVudCwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXko
c3R5bGUsIERpc3BsYXlUeXBlOjpCbG9jaykpOwogICAgIAogICAgIG5ld0JveC0+aW5pdGlhbGl6
ZVN0eWxlKCk7CiAgICAgcmV0dXJuIG5ld0JveDsKQEAgLTI5MzAsOSArMjkzMCw5IEBAIGJvb2wg
UmVuZGVyQmxvY2s6OmNoaWxkQm94SXNVbnNwbGl0dGFibGUKICAgICBSZW5kZXJGcmFnbWVudGVk
RmxvdyogZnJhZ21lbnRlZEZsb3cgPSBlbmNsb3NpbmdGcmFnbWVudGVkRmxvdygpOwogICAgIGJv
b2wgY2hlY2tDb2x1bW5CcmVha3MgPSBmcmFnbWVudGVkRmxvdyAmJiBmcmFnbWVudGVkRmxvdy0+
c2hvdWxkQ2hlY2tDb2x1bW5CcmVha3MoKTsKICAgICBib29sIGNoZWNrUGFnZUJyZWFrcyA9ICFj
aGVja0NvbHVtbkJyZWFrcyAmJiB2aWV3KCkuZnJhbWVWaWV3KCkubGF5b3V0Q29udGV4dCgpLmxh
eW91dFN0YXRlKCktPnBhZ2VMb2dpY2FsSGVpZ2h0KCk7Ci0gICAgcmV0dXJuIGNoaWxkLmlzVW5z
cGxpdHRhYmxlRm9yUGFnaW5hdGlvbigpIHx8IGNoaWxkLnN0eWxlKCkuYnJlYWtJbnNpZGUoKSA9
PSBBdm9pZEJyZWFrSW5zaWRlCi0gICAgICAgIHx8IChjaGVja0NvbHVtbkJyZWFrcyAmJiBjaGls
ZC5zdHlsZSgpLmJyZWFrSW5zaWRlKCkgPT0gQXZvaWRDb2x1bW5CcmVha0luc2lkZSkKLSAgICAg
ICAgfHwgKGNoZWNrUGFnZUJyZWFrcyAmJiBjaGlsZC5zdHlsZSgpLmJyZWFrSW5zaWRlKCkgPT0g
QXZvaWRQYWdlQnJlYWtJbnNpZGUpOworICAgIHJldHVybiBjaGlsZC5pc1Vuc3BsaXR0YWJsZUZv
clBhZ2luYXRpb24oKSB8fCBjaGlsZC5zdHlsZSgpLmJyZWFrSW5zaWRlKCkgPT0gQnJlYWtJbnNp
ZGU6OkF2b2lkCisgICAgICAgIHx8IChjaGVja0NvbHVtbkJyZWFrcyAmJiBjaGlsZC5zdHlsZSgp
LmJyZWFrSW5zaWRlKCkgPT0gQnJlYWtJbnNpZGU6OkF2b2lkQ29sdW1uKQorICAgICAgICB8fCAo
Y2hlY2tQYWdlQnJlYWtzICYmIGNoaWxkLnN0eWxlKCkuYnJlYWtJbnNpZGUoKSA9PSBCcmVha0lu
c2lkZTo6QXZvaWRQYWdlKTsKIH0KIAogdm9pZCBSZW5kZXJCbG9jazo6Y29tcHV0ZUZyYWdtZW50
UmFuZ2VGb3JCb3hDaGlsZChjb25zdCBSZW5kZXJCb3gmIGJveCkgY29uc3QKQEAgLTMwOTYsNyAr
MzA5Niw3IEBAIGNvbnN0IGNoYXIqIFJlbmRlckJsb2NrOjpyZW5kZXJOYW1lKCkgY28KIFRleHRS
dW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oU3RyaW5nVmlldyBzdHJpbmdWaWV3LCBj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbiwgVGV4
dFJ1bkZsYWdzIGZsYWdzKQogewogICAgIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiA9IExU
UjsKLSAgICBib29sIGRpcmVjdGlvbmFsT3ZlcnJpZGUgPSBzdHlsZS5ydGxPcmRlcmluZygpID09
IFZpc3VhbE9yZGVyOworICAgIGJvb2wgZGlyZWN0aW9uYWxPdmVycmlkZSA9IHN0eWxlLnJ0bE9y
ZGVyaW5nKCkgPT0gT3JkZXI6OlZpc3VhbDsKICAgICBpZiAoZmxhZ3MgIT0gRGVmYXVsdFRleHRS
dW5GbGFncykgewogICAgICAgICBpZiAoZmxhZ3MgJiBSZXNwZWN0RGlyZWN0aW9uKQogICAgICAg
ICAgICAgdGV4dERpcmVjdGlvbiA9IHN0eWxlLmRpcmVjdGlvbigpOwpAQCAtMzIzMSwxMCArMzIz
MSwxMCBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRFeGNsdWRlZENoaWxkcmVuCiAgICAgTGF5
b3V0VW5pdCBsb2dpY2FsTGVmdDsKICAgICBpZiAoc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKCkpIHsKICAgICAgICAgc3dpdGNoIChsZWdlbmQuc3R5bGUoKS50ZXh0QWxpZ24oKSkgewot
ICAgICAgICBjYXNlIENFTlRFUjoKKyAgICAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpDZW50ZXI6
CiAgICAgICAgICAgICBsb2dpY2FsTGVmdCA9IChsb2dpY2FsV2lkdGgoKSAtIGxvZ2ljYWxXaWR0
aEZvckNoaWxkKGxlZ2VuZCkpIC8gMjsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFJJR0hUOgorICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlJpZ2h0OgogICAgICAgICAgICAg
bG9naWNhbExlZnQgPSBsb2dpY2FsV2lkdGgoKSAtIGJvcmRlckVuZCgpIC0gcGFkZGluZ0VuZCgp
IC0gbG9naWNhbFdpZHRoRm9yQ2hpbGQobGVnZW5kKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBkZWZhdWx0OgpAQCAtMzI0MywxMCArMzI0MywxMCBAQCB2b2lkIFJlbmRlckJsb2NrOjps
YXlvdXRFeGNsdWRlZENoaWxkcmVuCiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBz
d2l0Y2ggKGxlZ2VuZC5zdHlsZSgpLnRleHRBbGlnbigpKSB7Ci0gICAgICAgIGNhc2UgTEVGVDoK
KyAgICAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgogICAgICAgICAgICAgbG9naWNhbExl
ZnQgPSBib3JkZXJTdGFydCgpICsgcGFkZGluZ1N0YXJ0KCk7CiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBDRU5URVI6IHsKKyAgICAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpDZW50
ZXI6IHsKICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBleHRyYSBwaXhlbCBnb2Vz
IHRvIHRoZSBlbmQgc2lkZSBpbiBSVEwgKHNpbmNlIGl0IHdlbnQgdG8gdGhlIGVuZCBzaWRlCiAg
ICAgICAgICAgICAvLyBpbiBMVFIpLgogICAgICAgICAgICAgTGF5b3V0VW5pdCBjZW50ZXJlZFdp
ZHRoID0gbG9naWNhbFdpZHRoKCkgLSBsb2dpY2FsV2lkdGhGb3JDaGlsZChsZWdlbmQpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgJKHJldmlzaW9uIDIzMjEyMykK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xODYsOCArMTg2LDggQEAgcHVibGljOgogICAgIHZvaWQgYWRkQ29udGludWF0aW9uV2l0
aE91dGxpbmUoUmVuZGVySW5saW5lKik7CiAgICAgYm9vbCBwYWludHNDb250aW51YXRpb25PdXRs
aW5lKFJlbmRlcklubGluZSopOwogCi0gICAgc3RhdGljIFJlbmRlclB0cjxSZW5kZXJCbG9jaz4g
Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyQW5kRGlzcGxheShjb25zdCBSZW5kZXJC
b3gmIHBhcmVudCwgRURpc3BsYXkgPSBCTE9DSyk7Ci0gICAgUmVuZGVyUHRyPFJlbmRlckJsb2Nr
PiBjcmVhdGVBbm9ueW1vdXNCbG9jayhFRGlzcGxheSA9IEJMT0NLKSBjb25zdDsKKyAgICBzdGF0
aWMgUmVuZGVyUHRyPFJlbmRlckJsb2NrPiBjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVy
ZXJBbmREaXNwbGF5KGNvbnN0IFJlbmRlckJveCYgcGFyZW50LCBEaXNwbGF5VHlwZSA9IERpc3Bs
YXlUeXBlOjpCbG9jayk7CisgICAgUmVuZGVyUHRyPFJlbmRlckJsb2NrPiBjcmVhdGVBbm9ueW1v
dXNCbG9jayhEaXNwbGF5VHlwZSA9IERpc3BsYXlUeXBlOjpCbG9jaykgY29uc3Q7CiAKICAgICBS
ZW5kZXJQdHI8UmVuZGVyQm94PiBjcmVhdGVBbm9ueW1vdXNCb3hXaXRoU2FtZVR5cGVBcyhjb25z
dCBSZW5kZXJCb3gmKSBjb25zdCBvdmVycmlkZTsKIApAQCAtNDE4LDcgKzQxOCw3IEBAIHByb3Rl
Y3RlZDoKICAgICB2b2lkIGJsb2NrV2lsbEJlRGVzdHJveWVkKCk7CiAKIHByaXZhdGU6Ci0gICAg
c3RhdGljIFJlbmRlclB0cjxSZW5kZXJCbG9jaz4gY3JlYXRlQW5vbnltb3VzQmxvY2tXaXRoU3R5
bGVBbmREaXNwbGF5KERvY3VtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBFRGlzcGxheSk7Cisg
ICAgc3RhdGljIFJlbmRlclB0cjxSZW5kZXJCbG9jaz4gY3JlYXRlQW5vbnltb3VzQmxvY2tXaXRo
U3R5bGVBbmREaXNwbGF5KERvY3VtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBEaXNwbGF5VHlw
ZSk7CiAKICAgICAvLyBGSVhNRS1CTE9DS0ZMT1c6IFJlbW92ZSB2aXJ0dWFsaXphaW9uIHdoZW4g
YWxsIGNhbGxlcnMgaGF2ZSBtb3ZlZCB0byBSZW5kZXJCbG9ja0Zsb3cKICAgICB2aXJ0dWFsIExh
eW91dFVuaXQgbG9naWNhbFJpZ2h0RmxvYXRPZmZzZXRGb3JMaW5lKExheW91dFVuaXQsIExheW91
dFVuaXQgZml4ZWRPZmZzZXQsIExheW91dFVuaXQpIGNvbnN0IHsgcmV0dXJuIGZpeGVkT2Zmc2V0
OyB9OwpAQCAtNTI1LDcgKzUyNSw3IEBAIExheW91dFVuaXQgYmxvY2tEaXJlY3Rpb25PZmZzZXQo
UmVuZGVyQmwKIExheW91dFVuaXQgaW5saW5lRGlyZWN0aW9uT2Zmc2V0KFJlbmRlckJsb2NrJiBy
b290QmxvY2ssIGNvbnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290QmxvY2spOwogVmlzaWJs
ZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnRSZXNwZWN0aW5nRWRpdGluZ0JvdW5kYXJpZXMoUmVu
ZGVyQmxvY2smLCBSZW5kZXJCb3gmLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCi1pbmxpbmUgUmVu
ZGVyUHRyPFJlbmRlckJsb2NrPiBSZW5kZXJCbG9jazo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVu
dFJlbmRlcmVyQW5kRGlzcGxheShjb25zdCBSZW5kZXJCb3gmIHBhcmVudCwgRURpc3BsYXkgZGlz
cGxheSkKK2lubGluZSBSZW5kZXJQdHI8UmVuZGVyQmxvY2s+IFJlbmRlckJsb2NrOjpjcmVhdGVB
bm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXJBbmREaXNwbGF5KGNvbnN0IFJlbmRlckJveCYgcGFy
ZW50LCBEaXNwbGF5VHlwZSBkaXNwbGF5KQogewogICAgIHJldHVybiBjcmVhdGVBbm9ueW1vdXNC
bG9ja1dpdGhTdHlsZUFuZERpc3BsYXkocGFyZW50LmRvY3VtZW50KCksIHBhcmVudC5zdHlsZSgp
LCBkaXNwbGF5KTsKIH0KQEAgLTUzNSw3ICs1MzUsNyBAQCBpbmxpbmUgUmVuZGVyUHRyPFJlbmRl
ckJveD4gUmVuZGVyQmxvY2s6CiAgICAgcmV0dXJuIGNyZWF0ZUFub255bW91c0Jsb2NrV2l0aFN0
eWxlQW5kRGlzcGxheShkb2N1bWVudCgpLCByZW5kZXJlci5zdHlsZSgpLCBzdHlsZSgpLmRpc3Bs
YXkoKSk7CiB9CiAKLWlubGluZSBSZW5kZXJQdHI8UmVuZGVyQmxvY2s+IFJlbmRlckJsb2NrOjpj
cmVhdGVBbm9ueW1vdXNCbG9jayhFRGlzcGxheSBkaXNwbGF5KSBjb25zdAoraW5saW5lIFJlbmRl
clB0cjxSZW5kZXJCbG9jaz4gUmVuZGVyQmxvY2s6OmNyZWF0ZUFub255bW91c0Jsb2NrKERpc3Bs
YXlUeXBlIGRpc3BsYXkpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNyZWF0ZUFub255bW91c0Jsb2Nr
V2l0aFN0eWxlQW5kRGlzcGxheShkb2N1bWVudCgpLCBzdHlsZSgpLCBkaXNwbGF5KTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCShyZXZp
c2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDE4LDcgKzQxOCw3IEBAIGJvb2wgUmVuZGVyQmxvY2tG
bG93Ojp3aWxsQ3JlYXRlQ29sdW1ucygKICAgICBpZiAoIWZpcnN0Q2hpbGQoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKHN0eWxlKCkuc3R5bGVUeXBlKCkgIT0gTk9QU0VVRE8p
CisgICAgaWYgKHN0eWxlKCkuc3R5bGVUeXBlKCkgIT0gUHNldWRvSWQ6Ok5vbmUpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIC8vIElmIG92ZXJmbG93LXkgaXMgc2V0IHRvIHBhZ2VkLXgg
b3IgcGFnZWQteSBvbiB0aGUgYm9keSBvciBodG1sIGVsZW1lbnQsIHdlJ2xsIGhhbmRsZSB0aGUg
cGFnaW5hdGluZyBpbiB0aGUgUmVuZGVyVmlldyBpbnN0ZWFkLgpAQCAtNTY4LDcgKzU2OCw3IEBA
IHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRCbG9jayhib29sIHIKICAgICAvLyBGSVhNRTog
VGhpcyByZXBhaW50IGxvZ2ljIHNob3VsZCBiZSBtb3ZlZCBpbnRvIGEgc2VwYXJhdGUgaGVscGVy
IGZ1bmN0aW9uIQogICAgIC8vIFJlcGFpbnQgd2l0aCBvdXIgbmV3IGJvdW5kcyBpZiB0aGV5IGFy
ZSBkaWZmZXJlbnQgZnJvbSBvdXIgb2xkIGJvdW5kcy4KICAgICBib29sIGRpZEZ1bGxSZXBhaW50
ID0gcmVwYWludGVyLnJlcGFpbnRBZnRlckxheW91dCgpOwotICAgIGlmICghZGlkRnVsbFJlcGFp
bnQgJiYgcmVwYWludExvZ2ljYWxUb3AgIT0gcmVwYWludExvZ2ljYWxCb3R0b20gJiYgKHN0eWxl
VG9Vc2UudmlzaWJpbGl0eSgpID09IFZJU0lCTEUgfHwgZW5jbG9zaW5nTGF5ZXIoKS0+aGFzVmlz
aWJsZUNvbnRlbnQoKSkpIHsKKyAgICBpZiAoIWRpZEZ1bGxSZXBhaW50ICYmIHJlcGFpbnRMb2dp
Y2FsVG9wICE9IHJlcGFpbnRMb2dpY2FsQm90dG9tICYmIChzdHlsZVRvVXNlLnZpc2liaWxpdHko
KSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlIHx8IGVuY2xvc2luZ0xheWVyKCktPmhhc1Zpc2libGVD
b250ZW50KCkpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBjb3VsZCB0aWdodGVuIHVwIHRoZSBs
ZWZ0IGFuZCByaWdodCBpbnZhbGlkYXRpb24gcG9pbnRzIGlmIHdlIGxldCBsYXlvdXRJbmxpbmVD
aGlsZHJlbiBmaWxsIHRoZW0gaW4gYmFzZWQgb2ZmIHRoZSBwYXJ0aWN1bGFyIGxpbmVzCiAgICAg
ICAgIC8vIGl0IGhhZCB0byBsYXkgb3V0LiBXZSB3b3VsZG4ndCBuZWVkIHRoZSBoYXNPdmVyZmxv
d0NsaXAoKSBoYWNrIGluIHRoYXQgY2FzZSBlaXRoZXIuCiAgICAgICAgIExheW91dFVuaXQgcmVw
YWludExvZ2ljYWxMZWZ0ID0gbG9naWNhbExlZnRWaXN1YWxPdmVyZmxvdygpOwpAQCAtMTUwMSw3
ICsxNTAxLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9ja0Zsb3c6OmFwcGx5QmVmb3JlQgogICAg
IGJvb2wgY2hlY2tDb2x1bW5CcmVha3MgPSBmcmFnbWVudGVkRmxvdyAmJiBmcmFnbWVudGVkRmxv
dy0+c2hvdWxkQ2hlY2tDb2x1bW5CcmVha3MoKTsKICAgICBib29sIGNoZWNrUGFnZUJyZWFrcyA9
ICFjaGVja0NvbHVtbkJyZWFrcyAmJiB2aWV3KCkuZnJhbWVWaWV3KCkubGF5b3V0Q29udGV4dCgp
LmxheW91dFN0YXRlKCktPnBhZ2VMb2dpY2FsSGVpZ2h0KCk7IC8vIEZJWE1FOiBPbmNlIGNvbHVt
bnMgY2FuIHByaW50IHdlIGhhdmUgdG8gY2hlY2sgdGhpcy4KICAgICBib29sIGNoZWNrRnJhZ21l
bnRCcmVha3MgPSBmYWxzZTsKLSAgICBib29sIGNoZWNrQmVmb3JlQWx3YXlzID0gKGNoZWNrQ29s
dW1uQnJlYWtzICYmIGNoaWxkLnN0eWxlKCkuYnJlYWtCZWZvcmUoKSA9PSBDb2x1bW5CcmVha0Jl
dHdlZW4pCisgICAgYm9vbCBjaGVja0JlZm9yZUFsd2F5cyA9IChjaGVja0NvbHVtbkJyZWFrcyAm
JiBjaGlsZC5zdHlsZSgpLmJyZWFrQmVmb3JlKCkgPT0gQnJlYWtCZXR3ZWVuOjpDb2x1bW4pCiAg
ICAgICAgIHx8IChjaGVja1BhZ2VCcmVha3MgJiYgYWx3YXlzUGFnZUJyZWFrKGNoaWxkLnN0eWxl
KCkuYnJlYWtCZWZvcmUoKSkpOwogICAgIGlmIChjaGVja0JlZm9yZUFsd2F5cyAmJiBpbk5vcm1h
bEZsb3coY2hpbGQpICYmIGhhc05leHRQYWdlKGxvZ2ljYWxPZmZzZXQsIEluY2x1ZGVQYWdlQm91
bmRhcnkpKSB7CiAgICAgICAgIGlmIChjaGVja0NvbHVtbkJyZWFrcykgewpAQCAtMTUyNiw3ICsx
NTI2LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9ja0Zsb3c6OmFwcGx5QWZ0ZXJCcgogICAgIGJv
b2wgY2hlY2tDb2x1bW5CcmVha3MgPSBmcmFnbWVudGVkRmxvdyAmJiBmcmFnbWVudGVkRmxvdy0+
c2hvdWxkQ2hlY2tDb2x1bW5CcmVha3MoKTsKICAgICBib29sIGNoZWNrUGFnZUJyZWFrcyA9ICFj
aGVja0NvbHVtbkJyZWFrcyAmJiB2aWV3KCkuZnJhbWVWaWV3KCkubGF5b3V0Q29udGV4dCgpLmxh
eW91dFN0YXRlKCktPnBhZ2VMb2dpY2FsSGVpZ2h0KCk7IC8vIEZJWE1FOiBPbmNlIGNvbHVtbnMg
Y2FuIHByaW50IHdlIGhhdmUgdG8gY2hlY2sgdGhpcy4KICAgICBib29sIGNoZWNrRnJhZ21lbnRC
cmVha3MgPSBmYWxzZTsKLSAgICBib29sIGNoZWNrQWZ0ZXJBbHdheXMgPSAoY2hlY2tDb2x1bW5C
cmVha3MgJiYgY2hpbGQuc3R5bGUoKS5icmVha0FmdGVyKCkgPT0gQ29sdW1uQnJlYWtCZXR3ZWVu
KQorICAgIGJvb2wgY2hlY2tBZnRlckFsd2F5cyA9IChjaGVja0NvbHVtbkJyZWFrcyAmJiBjaGls
ZC5zdHlsZSgpLmJyZWFrQWZ0ZXIoKSA9PSBCcmVha0JldHdlZW46OkNvbHVtbikKICAgICAgICAg
fHwgKGNoZWNrUGFnZUJyZWFrcyAmJiBhbHdheXNQYWdlQnJlYWsoY2hpbGQuc3R5bGUoKS5icmVh
a0FmdGVyKCkpKTsKICAgICBpZiAoY2hlY2tBZnRlckFsd2F5cyAmJiBpbk5vcm1hbEZsb3coY2hp
bGQpICYmIGhhc05leHRQYWdlKGxvZ2ljYWxPZmZzZXQsIEluY2x1ZGVQYWdlQm91bmRhcnkpKSB7
CiAgICAgICAgIExheW91dFVuaXQgbWFyZ2luT2Zmc2V0ID0gbWFyZ2luSW5mby5jYW5Db2xsYXBz
ZVdpdGhNYXJnaW5CZWZvcmUoKSA/IExheW91dFVuaXQoKSA6IG1hcmdpbkluZm8ubWFyZ2luKCk7
CkBAIC0xODU0LDcgKzE4NTQsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrRmxvdzo6YWRqdXN0
Rm9yVW5zCiAgICAgICAgIGlmICghaGFzVW5pZm9ybVBhZ2VMb2dpY2FsSGVpZ2h0ICYmICFwdXNo
VG9OZXh0UGFnZVdpdGhNaW5pbXVtTG9naWNhbEhlaWdodChyZW1haW5pbmdMb2dpY2FsSGVpZ2h0
LCBsb2dpY2FsT2Zmc2V0LCBjaGlsZExvZ2ljYWxIZWlnaHQpKQogICAgICAgICAgICAgcmV0dXJu
IGxvZ2ljYWxPZmZzZXQ7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gbG9naWNhbE9mZnNldCArIHJl
bWFpbmluZ0xvZ2ljYWxIZWlnaHQ7Ci0gICAgICAgIGJvb2wgaXNJbml0aWFsTGV0dGVyID0gY2hp
bGQuaXNGbG9hdGluZygpICYmIGNoaWxkLnN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gRklSU1RfTEVU
VEVSICYmIGNoaWxkLnN0eWxlKCkuaW5pdGlhbExldHRlckRyb3AoKSA+IDA7CisgICAgICAgIGJv
b2wgaXNJbml0aWFsTGV0dGVyID0gY2hpbGQuaXNGbG9hdGluZygpICYmIGNoaWxkLnN0eWxlKCku
c3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6OkZpcnN0TGV0dGVyICYmIGNoaWxkLnN0eWxlKCkuaW5p
dGlhbExldHRlckRyb3AoKSA+IDA7CiAgICAgICAgIGlmIChpc0luaXRpYWxMZXR0ZXIpIHsKICAg
ICAgICAgICAgIC8vIEluY3JlYXNlIG91ciBsb2dpY2FsIGhlaWdodCB0byBlbnN1cmUgdGhhdCBs
aW5lcyBhbGwgZ2V0IHB1c2hlZCBhbG9uZyB3aXRoIHRoZSBsZXR0ZXIuCiAgICAgICAgICAgICBz
ZXRMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxPZmZzZXQgKyByZW1haW5pbmdMb2dpY2FsSGVpZ2h0KTsK
QEAgLTIwMzUsNyArMjAzNSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpzdHlsZURpZENoYW5n
ZShTdHkKIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojp1cGRhdGVTdHlsZXNGb3JDb2x1bW5DaGlsZHJl
bigpCiB7CiAgICAgZm9yIChhdXRvKiBjaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hpbGQgJiYg
KGNoaWxkLT5pc0luRmxvd1JlbmRlckZyYWdtZW50ZWRGbG93KCkgfHwgY2hpbGQtPmlzUmVuZGVy
TXVsdGlDb2x1bW5TZXQoKSk7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nQm94KCkpCi0gICAg
ICAgIGNoaWxkLT5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRo
RGlzcGxheShzdHlsZSgpLCBCTE9DSykpOworICAgICAgICBjaGlsZC0+c2V0U3R5bGUoUmVuZGVy
U3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwgRGlzcGxheVR5
cGU6OkJsb2NrKSk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpzdHlsZVdpbGxDaGFuZ2Uo
U3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSkKQEAgLTIz
NDUsNyArMjM0NSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlTG9naWNhbExvY2EK
ICAgICBMYXlvdXRVbml0IGZsb2F0TG9naWNhbExlZnQ7CiAKICAgICBib29sIGluc2lkZUZyYWdt
ZW50ZWRGbG93ID0gZW5jbG9zaW5nRnJhZ21lbnRlZEZsb3coKTsKLSAgICBib29sIGlzSW5pdGlh
bExldHRlciA9IGNoaWxkQm94LnN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gRklSU1RfTEVUVEVSICYm
IGNoaWxkQm94LnN0eWxlKCkuaW5pdGlhbExldHRlckRyb3AoKSA+IDA7CisgICAgYm9vbCBpc0lu
aXRpYWxMZXR0ZXIgPSBjaGlsZEJveC5zdHlsZSgpLnN0eWxlVHlwZSgpID09IFBzZXVkb0lkOjpG
aXJzdExldHRlciAmJiBjaGlsZEJveC5zdHlsZSgpLmluaXRpYWxMZXR0ZXJEcm9wKCkgPiAwOwog
ICAgIAogICAgIGlmIChpc0luaXRpYWxMZXR0ZXIpIHsKICAgICAgICAgaW50IGxldHRlckNsZWFy
YW5jZSA9IGxvd2VzdEluaXRpYWxMZXR0ZXJMb2dpY2FsQm90dG9tKCkgLSBsb2dpY2FsVG9wT2Zm
c2V0OwpAQCAtMjYxNSw3ICsyNjE1LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9ja0Zsb3c6Omxv
d2VzdEluaXRpYQogICAgIGF1dG8gZW5kID0gZmxvYXRpbmdPYmplY3RTZXQuZW5kKCk7CiAgICAg
Zm9yIChhdXRvIGl0ID0gZmxvYXRpbmdPYmplY3RTZXQuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KSB7CiAgICAgICAgIGNvbnN0IGF1dG8mIGZsb2F0aW5nT2JqZWN0ID0gKml0LT5nZXQoKTsKLSAg
ICAgICAgaWYgKGZsb2F0aW5nT2JqZWN0LmlzUGxhY2VkKCkgJiYgZmxvYXRpbmdPYmplY3QucmVu
ZGVyZXIoKS5zdHlsZSgpLnN0eWxlVHlwZSgpID09IEZJUlNUX0xFVFRFUiAmJiBmbG9hdGluZ09i
amVjdC5yZW5kZXJlcigpLnN0eWxlKCkuaW5pdGlhbExldHRlckRyb3AoKSA+IDApCisgICAgICAg
IGlmIChmbG9hdGluZ09iamVjdC5pc1BsYWNlZCgpICYmIGZsb2F0aW5nT2JqZWN0LnJlbmRlcmVy
KCkuc3R5bGUoKS5zdHlsZVR5cGUoKSA9PSBQc2V1ZG9JZDo6Rmlyc3RMZXR0ZXIgJiYgZmxvYXRp
bmdPYmplY3QucmVuZGVyZXIoKS5zdHlsZSgpLmluaXRpYWxMZXR0ZXJEcm9wKCkgPiAwKQogICAg
ICAgICAgICAgbG93ZXN0RmxvYXRCb3R0b20gPSBzdGQ6Om1heChsb3dlc3RGbG9hdEJvdHRvbSwg
bG9naWNhbEJvdHRvbUZvckZsb2F0KGZsb2F0aW5nT2JqZWN0KSk7CiAgICAgfQogICAgIHJldHVy
biBsb3dlc3RGbG9hdEJvdHRvbTsKQEAgLTI5MDcsNyArMjkwNyw3IEBAIGJvb2wgUmVuZGVyQmxv
Y2tGbG93OjpoaXRUZXN0SW5saW5lQ2hpbGQKIAogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmFkanVz
dEZvckJvcmRlckZpdChMYXlvdXRVbml0IHgsIExheW91dFVuaXQmIGxlZnQsIExheW91dFVuaXQm
IHJpZ2h0KSBjb25zdAogewotICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxF
KQorICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQog
ICAgICAgICByZXR1cm47CiAKICAgICAvLyBXZSBkb24ndCBkZWFsIHdpdGggcmVsYXRpdmUgcG9z
aXRpb25pbmcuICBPdXIgYXNzdW1wdGlvbiBpcyB0aGF0IHlvdSBzaHJpbmsgdG8gZml0IHRoZSBs
aW5lcyB3aXRob3V0IGFjY291bnRpbmcKQEAgLTI5MjYsNyArMjkyNiw3IEBAIHZvaWQgUmVuZGVy
QmxvY2tGbG93OjphZGp1c3RGb3JCb3JkZXJGaXQKICAgICAgICAgICAgIGlmICghb2JqLT5pc0Zs
b2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoaXM8
UmVuZGVyQmxvY2tGbG93Pigqb2JqKSAmJiAhb2JqLT5oYXNPdmVyZmxvd0NsaXAoKSkKICAgICAg
ICAgICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93Pigqb2JqKS5hZGp1c3RGb3JC
b3JkZXJGaXQoeCArIG9iai0+eCgpLCBsZWZ0LCByaWdodCk7Ci0gICAgICAgICAgICAgICAgZWxz
ZSBpZiAob2JqLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKSB7CisgICAgICAgICAg
ICAgICAgZWxzZSBpZiAob2JqLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpW
aXNpYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBhIHJlcGxhY2VkIGVsZW1l
bnQgb3Igc29tZSBraW5kIG9mIG5vbi1ibG9jay1mbG93IG9iamVjdC4KICAgICAgICAgICAgICAg
ICAgICAgbGVmdCA9IHN0ZDo6bWluKGxlZnQsIHggKyBvYmotPngoKSk7CiAgICAgICAgICAgICAg
ICAgICAgIHJpZ2h0ID0gc3RkOjptYXgocmlnaHQsIHggKyBvYmotPngoKSArIG9iai0+d2lkdGgo
KSk7CkBAIC0yOTUzLDcgKzI5NTMsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6YWRqdXN0Rm9y
Qm9yZGVyRml0CiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpmaXRCb3JkZXJUb0xpbmVzSWZOZWVk
ZWQoKQogewotICAgIGlmIChzdHlsZSgpLmJvcmRlckZpdCgpID09IEJvcmRlckZpdEJvcmRlciB8
fCBoYXNPdmVycmlkZUNvbnRlbnRMb2dpY2FsV2lkdGgoKSkKKyAgICBpZiAoc3R5bGUoKS5ib3Jk
ZXJGaXQoKSA9PSBCb3JkZXJGaXQ6OkJvcmRlciB8fCBoYXNPdmVycmlkZUNvbnRlbnRMb2dpY2Fs
V2lkdGgoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gV2FsayBhbnkgbm9ybWFsIGZsb3cg
bGluZXMgdG8gc251Z2x5IGZpdC4KQEAgLTMxNTMsNyArMzE1Myw3IEBAIFJvb3RJbmxpbmVCb3gq
IFJlbmRlckJsb2NrRmxvdzo6bGluZUF0SW4KIHsKICAgICBBU1NFUlQoaSA+PSAwKTsKIAotICAg
IGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChzdHlsZSgpLnZp
c2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIGlmIChjaGlsZHJlbklubGluZSgpKSB7CkBAIC0zMTc2LDcgKzMxNzYsNyBAQCBS
b290SW5saW5lQm94KiBSZW5kZXJCbG9ja0Zsb3c6OmxpbmVBdEluCiAKIGludCBSZW5kZXJCbG9j
a0Zsb3c6OmxpbmVDb3VudChjb25zdCBSb290SW5saW5lQm94KiBzdG9wUm9vdElubGluZUJveCwg
Ym9vbCogZm91bmQpIGNvbnN0CiB7Ci0gICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJ
U0lCTEUpCisgICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2li
bGUpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaW50IGNvdW50ID0gMDsKQEAgLTMyMTQsNyAr
MzIxNCw3IEBAIGludCBSZW5kZXJCbG9ja0Zsb3c6OmxpbmVDb3VudChjb25zdCBSb28KIAogc3Rh
dGljIGludCBnZXRIZWlnaHRGb3JMaW5lQ291bnQoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBibG9j
aywgaW50IGxpbmVDb3VudCwgYm9vbCBpbmNsdWRlRWRnZUJvcmRlclBhZGRpbmcsIGJvb2wgZm9y
d2FyZCwgaW50JiBjb3VudCkKIHsKLSAgICBpZiAoYmxvY2suc3R5bGUoKS52aXNpYmlsaXR5KCkg
IT0gVklTSUJMRSkKKyAgICBpZiAoYmxvY2suc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJp
bGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgLy8gRklYTUU6IE9ydGhv
Z29uYWwgd3JpdGluZyBtb2RlcyBkb24ndCB3b3JrIGhlcmUsIGJ1dCBpdCdzIG5vdCBldmVuIGNs
ZWFyIGhvdyB0aGV5IHNob3VsZCBiZWhhdmUgYW55d2F5LgpAQCAtMzI2NCw3ICszMjY0LDcgQEAg
aW50IFJlbmRlckJsb2NrRmxvdzo6bG9naWNhbEhlaWdodEV4Y2x1ZAogCiB2b2lkIFJlbmRlckJs
b2NrRmxvdzo6Y2xlYXJUcnVuY2F0aW9uKCkKIHsKLSAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5
KCkgIT0gVklTSUJMRSkKKyAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0
eTo6VmlzaWJsZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGNoaWxkcmVuSW5saW5lKCkg
JiYgaGFzTWFya3VwVHJ1bmNhdGlvbigpKSB7CkBAIC0zMzIzLDcgKzMzMjMsNyBAQCBSZW5kZXJU
ZXh0KiBSZW5kZXJCbG9ja0Zsb3c6OmZpbmRDbG9zZXN0CiAgICAgaWYgKCFibG9jay0+Y2hpbGRy
ZW5JbmxpbmUoKSkgewogICAgICAgICAvLyBMb29rIGFtb25nIG91ciBpbW1lZGlhdGUgY2hpbGRy
ZW4gZm9yIGFuIGFsdGVybmF0ZSBib3ggdGhhdCBjb250YWlucyB0aGUgcG9pbnQuCiAgICAgICAg
IGZvciAoUmVuZGVyQm94KiBjaGlsZCA9IGJsb2NrLT5maXJzdENoaWxkQm94KCk7IGNoaWxkOyBj
aGlsZCA9IGNoaWxkLT5uZXh0U2libGluZ0JveCgpKSB7Ci0gICAgICAgICAgICBpZiAoIWNoaWxk
LT5oZWlnaHQoKSB8fCBjaGlsZC0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gV2ViQ29yZTo6VklT
SUJMRSB8fCBjaGlsZC0+aXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgpKQorICAgICAg
ICAgICAgaWYgKCFjaGlsZC0+aGVpZ2h0KCkgfHwgY2hpbGQtPnN0eWxlKCkudmlzaWJpbGl0eSgp
ICE9IFdlYkNvcmU6OlZpc2liaWxpdHk6OlZpc2libGUgfHwgY2hpbGQtPmlzRmxvYXRpbmdPck91
dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgIGZsb2F0IHRvcCA9IGNoaWxkLT55KCk7CiAgICAgICAgICAgICAKQEAgLTM3MDcsNyArMzcw
Nyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCByZXNpemVUZXh0UGVybWl0dGVkKGMKIAogaW50IFJl
bmRlckJsb2NrRmxvdzo6bGluZUNvdW50Rm9yVGV4dEF1dG9zaXppbmcoKQogewotICAgIGlmIChz
dHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChzdHlsZSgpLnZpc2liaWxp
dHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAo
Y2hpbGRyZW5JbmxpbmUoKSkKICAgICAgICAgcmV0dXJuIGxpbmVDb3VudCgpOwpAQCAtMzg4OCw3
ICszODg4LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnNldENvbXB1dGVkQ29sdW1uQwogICAg
ICAgICByZXR1cm47CiAgICAgbXVsdGlDb2x1bW5GbG93KCktPnNldENvbHVtbkNvdW50QW5kV2lk
dGgoY291bnQsIHdpZHRoKTsKICAgICBtdWx0aUNvbHVtbkZsb3coKS0+c2V0UHJvZ3Jlc3Npb25J
c0lubGluZShzdHlsZSgpLmhhc0lubGluZUNvbHVtbkF4aXMoKSk7Ci0gICAgbXVsdGlDb2x1bW5G
bG93KCktPnNldFByb2dyZXNzaW9uSXNSZXZlcnNlZChzdHlsZSgpLmNvbHVtblByb2dyZXNzaW9u
KCkgPT0gUmV2ZXJzZUNvbHVtblByb2dyZXNzaW9uKTsKKyAgICBtdWx0aUNvbHVtbkZsb3coKS0+
c2V0UHJvZ3Jlc3Npb25Jc1JldmVyc2VkKHN0eWxlKCkuY29sdW1uUHJvZ3Jlc3Npb24oKSA9PSBD
b2x1bW5Qcm9ncmVzc2lvbjo6UmV2ZXJzZSk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojp1
cGRhdGVDb2x1bW5Qcm9ncmVzc2lvbkZyb21TdHlsZShSZW5kZXJTdHlsZSYgc3R5bGUpCkBAIC0z
OTA1LDcgKzM5MDUsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6dXBkYXRlQ29sdW1uUHJvZ3Jl
CiAgICAgfQogCiAgICAgYm9vbCBvbGRQcm9ncmVzc2lvbklzUmV2ZXJzZWQgPSBtdWx0aUNvbHVt
bkZsb3coKS0+cHJvZ3Jlc3Npb25Jc1JldmVyc2VkKCk7Ci0gICAgYm9vbCBuZXdQcm9ncmVzc2lv
bklzUmV2ZXJzZWQgPSBzdHlsZS5jb2x1bW5Qcm9ncmVzc2lvbigpID09IFJldmVyc2VDb2x1bW5Q
cm9ncmVzc2lvbjsKKyAgICBib29sIG5ld1Byb2dyZXNzaW9uSXNSZXZlcnNlZCA9IHN0eWxlLmNv
bHVtblByb2dyZXNzaW9uKCkgPT0gQ29sdW1uUHJvZ3Jlc3Npb246OlJldmVyc2U7CiAgICAgaWYg
KG9sZFByb2dyZXNzaW9uSXNSZXZlcnNlZCAhPSBuZXdQcm9ncmVzc2lvbklzUmV2ZXJzZWQpIHsK
ICAgICAgICAgbXVsdGlDb2x1bW5GbG93KCktPnNldFByb2dyZXNzaW9uSXNSZXZlcnNlZChuZXdQ
cm9ncmVzc2lvbklzUmV2ZXJzZWQpOwogICAgICAgICBuZWVkc0xheW91dCA9IHRydWU7CkBAIC0z
OTMzLDcgKzM5MzMsNyBAQCB1bnNpZ25lZCBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVkQ29sdW1u
CiBib29sIFJlbmRlckJsb2NrRmxvdzo6aXNUb3BMYXlvdXRPdmVyZmxvd0FsbG93ZWQoKSBjb25z
dAogewogICAgIGJvb2wgaGFzVG9wT3ZlcmZsb3cgPSBSZW5kZXJCbG9jazo6aXNUb3BMYXlvdXRP
dmVyZmxvd0FsbG93ZWQoKTsKLSAgICBpZiAoIW11bHRpQ29sdW1uRmxvdygpIHx8IHN0eWxlKCku
Y29sdW1uUHJvZ3Jlc3Npb24oKSA9PSBOb3JtYWxDb2x1bW5Qcm9ncmVzc2lvbikKKyAgICBpZiAo
IW11bHRpQ29sdW1uRmxvdygpIHx8IHN0eWxlKCkuY29sdW1uUHJvZ3Jlc3Npb24oKSA9PSBDb2x1
bW5Qcm9ncmVzc2lvbjo6Tm9ybWFsKQogICAgICAgICByZXR1cm4gaGFzVG9wT3ZlcmZsb3c7CiAg
ICAgCiAgICAgaWYgKCEoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSBeICFzdHlsZSgpLmhhc0lu
bGluZUNvbHVtbkF4aXMoKSkpCkBAIC0zOTQ1LDcgKzM5NDUsNyBAQCBib29sIFJlbmRlckJsb2Nr
Rmxvdzo6aXNUb3BMYXlvdXRPdmVyZmxvCiBib29sIFJlbmRlckJsb2NrRmxvdzo6aXNMZWZ0TGF5
b3V0T3ZlcmZsb3dBbGxvd2VkKCkgY29uc3QKIHsKICAgICBib29sIGhhc0xlZnRPdmVyZmxvdyA9
IFJlbmRlckJsb2NrOjppc0xlZnRMYXlvdXRPdmVyZmxvd0FsbG93ZWQoKTsKLSAgICBpZiAoIW11
bHRpQ29sdW1uRmxvdygpIHx8IHN0eWxlKCkuY29sdW1uUHJvZ3Jlc3Npb24oKSA9PSBOb3JtYWxD
b2x1bW5Qcm9ncmVzc2lvbikKKyAgICBpZiAoIW11bHRpQ29sdW1uRmxvdygpIHx8IHN0eWxlKCku
Y29sdW1uUHJvZ3Jlc3Npb24oKSA9PSBDb2x1bW5Qcm9ncmVzc2lvbjo6Tm9ybWFsKQogICAgICAg
ICByZXR1cm4gaGFzTGVmdE92ZXJmbG93OwogICAgIAogICAgIGlmIChpc0hvcml6b250YWxXcml0
aW5nTW9kZSgpIF4gIXN0eWxlKCkuaGFzSW5saW5lQ29sdW1uQXhpcygpKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAkocmV2aXNpb24gMjMyMTIzKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCSh3b3JraW5nIGNv
cHkpCkBAIC01MzIsNyArNTMyLDcgQEAgcHVibGljOgogICAgIFJvb3RJbmxpbmVCb3gqIGNyZWF0
ZUFuZEFwcGVuZFJvb3RJbmxpbmVCb3goKTsKIAogICAgIExheW91dFVuaXQgc3RhcnRBbGlnbmVk
T2Zmc2V0Rm9yTGluZShMYXlvdXRVbml0IHBvc2l0aW9uLCBJbmRlbnRUZXh0T3JOb3Qgc2hvdWxk
SW5kZW50VGV4dCk7Ci0gICAgdmlydHVhbCBFVGV4dEFsaWduIHRleHRBbGlnbm1lbnRGb3JMaW5l
KGJvb2wgZW5kc1dpdGhTb2Z0QnJlYWspIGNvbnN0OworICAgIHZpcnR1YWwgVGV4dEFsaWduTW9k
ZSB0ZXh0QWxpZ25tZW50Rm9yTGluZShib29sIGVuZHNXaXRoU29mdEJyZWFrKSBjb25zdDsKICAg
ICB2aXJ0dWFsIHZvaWQgYWRqdXN0SW5saW5lRGlyZWN0aW9uTGluZUJvdW5kcyhpbnQgLyogZXhw
YW5zaW9uT3Bwb3J0dW5pdHlDb3VudCAqLywgZmxvYXQmIC8qIGxvZ2ljYWxMZWZ0ICovLCBmbG9h
dCYgLyogbG9naWNhbFdpZHRoICovKSBjb25zdCB7IH0KICAgICBSb290SW5saW5lQm94KiBjb25z
dHJ1Y3RMaW5lKEJpZGlSdW5MaXN0PEJpZGlSdW4+JiwgY29uc3QgTGluZUluZm8mKTsKIApAQCAt
NTQ4LDcgKzU0OCw3IEBAIHByaXZhdGU6ICAgICAgICAKICAgICB2b2lkIGNvbXB1dGVJbmxpbmVE
aXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKFJvb3RJbmxpbmVCb3gqLCBjb25zdCBMaW5lSW5mbyYs
IEJpZGlSdW4qIGZpcnN0UnVuLCBCaWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVuLCBib29sIHJlYWNo
ZWRFbmQsIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiwgVmVydGljYWxQb3NpdGlv
bkNhY2hlJiwgV29yZE1lYXN1cmVtZW50cyYpOwogICAgIHZvaWQgdXBkYXRlUnVieUZvckp1c3Rp
ZmllZFRleHQoUmVuZGVyUnVieVJ1biYsIEJpZGlSdW4mLCBjb25zdCBWZWN0b3I8dW5zaWduZWQs
IDE2PiYgZXhwYW5zaW9uT3Bwb3J0dW5pdGllcywgdW5zaWduZWQmIGV4cGFuc2lvbk9wcG9ydHVu
aXR5Q291bnQsIGZsb2F0JiB0b3RhbExvZ2ljYWxXaWR0aCwgZmxvYXQgYXZhaWxhYmxlTG9naWNh
bFdpZHRoLCBzaXplX3QmIGV4cGFuc2lvbkluZGV4KTsKICAgICB2b2lkIGNvbXB1dGVFeHBhbnNp
b25Gb3JKdXN0aWZpZWRUZXh0KEJpZGlSdW4qIGZpcnN0UnVuLCBCaWRpUnVuKiB0cmFpbGluZ1Nw
YWNlUnVuLCBjb25zdCBWZWN0b3I8dW5zaWduZWQsIDE2PiYgZXhwYW5zaW9uT3Bwb3J0dW5pdGll
cywgdW5zaWduZWQgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCwgZmxvYXQgdG90YWxMb2dpY2Fs
V2lkdGgsIGZsb2F0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7Ci0gICAgQmlkaVJ1biogY29tcHV0
ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQoUm9vdElubGluZUJveCosIGNvbnN0
IExpbmVJbmZvJiwgRVRleHRBbGlnbiwgZmxvYXQmIGxvZ2ljYWxMZWZ0LAorICAgIEJpZGlSdW4q
IGNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JTZWdtZW50KFJvb3RJbmxpbmVCb3gq
LCBjb25zdCBMaW5lSW5mbyYsIFRleHRBbGlnbk1vZGUsIGZsb2F0JiBsb2dpY2FsTGVmdCwKICAg
ICAgICAgZmxvYXQmIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgQmlkaVJ1biogZmlyc3RSdW4sIEJp
ZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4sIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFw
JiB0ZXh0Qm94RGF0YU1hcCwgVmVydGljYWxQb3NpdGlvbkNhY2hlJiwgV29yZE1lYXN1cmVtZW50
cyYpOwogICAgIHZvaWQgY29tcHV0ZUJsb2NrRGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZShSb290
SW5saW5lQm94KiwgQmlkaVJ1biosIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiwg
VmVydGljYWxQb3NpdGlvbkNhY2hlJik7CiAgICAgQmlkaVJ1biogaGFuZGxlVHJhaWxpbmdTcGFj
ZXMoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mLCBCaWRpQ29udGV4dCopOwpAQCAtNTc1LDcgKzU3NSw3
IEBAIHByaXZhdGU6ICAgICAgICAKICAgICAvLyBwYWdlL2NvbHVtbiB0aGF0IGhhcyBhIGRpZmZl
cmVudCBhdmFpbGFibGUgbGluZSB3aWR0aCB0aGFuIHRoZSBvbGQgb25lLiBVc2VkIHRvIGtub3cg
d2hlbiB5b3UgaGF2ZSB0byBkaXJ0eSBhCiAgICAgLy8gbGluZSwgaS5lLiwgdGhhdCBpdCBjYW4n
dCBiZSByZS11c2VkLgogICAgIGJvb2wgbGluZVdpZHRoRm9yUGFnaW5hdGVkTGluZUNoYW5nZWQo
Um9vdElubGluZUJveCosIExheW91dFVuaXQgbGluZURlbHRhLCBSZW5kZXJGcmFnbWVudGVkRmxv
dyopIGNvbnN0OwotICAgIHZvaWQgdXBkYXRlTG9naWNhbFdpZHRoRm9yQWxpZ25tZW50KGNvbnN0
IEVUZXh0QWxpZ24mLCBjb25zdCBSb290SW5saW5lQm94KiwgQmlkaVJ1biogdHJhaWxpbmdTcGFj
ZVJ1biwgZmxvYXQmIGxvZ2ljYWxMZWZ0LCBmbG9hdCYgdG90YWxMb2dpY2FsV2lkdGgsIGZsb2F0
JiBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIGludCBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KTsK
KyAgICB2b2lkIHVwZGF0ZUxvZ2ljYWxXaWR0aEZvckFsaWdubWVudChjb25zdCBUZXh0QWxpZ25N
b2RlJiwgY29uc3QgUm9vdElubGluZUJveCosIEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4sIGZs
b2F0JiBsb2dpY2FsTGVmdCwgZmxvYXQmIHRvdGFsTG9naWNhbFdpZHRoLCBmbG9hdCYgYXZhaWxh
YmxlTG9naWNhbFdpZHRoLCBpbnQgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCk7CiAvLyBFTkQg
TUVUSE9EUyBERUZJTkVEIElOIFJlbmRlckJsb2NrTGluZUxheW91dAogCiAgICAgdm9pZCBjb21w
dXRlSW5saW5lUHJlZmVycmVkTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lk
dGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAkocmV2aXNp
b24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxh
eW91dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNiw3ICszMDYsNyBAQCBSb290SW5saW5lQm94
KiBSZW5kZXJCbG9ja0Zsb3c6OmNvbnN0cnVjCiAgICAgICAgICAgICBwYXJlbnRCb3gtPmFkZFRv
TGluZShib3gpOwogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCB2aXN1YWxseU9yZGVyZWQgPSBy
LT5yZW5kZXJlcigpLnN0eWxlKCkucnRsT3JkZXJpbmcoKSA9PSBWaXN1YWxPcmRlcjsKKyAgICAg
ICAgYm9vbCB2aXN1YWxseU9yZGVyZWQgPSByLT5yZW5kZXJlcigpLnN0eWxlKCkucnRsT3JkZXJp
bmcoKSA9PSBPcmRlcjo6VmlzdWFsOwogICAgICAgICBib3gtPnNldEJpZGlMZXZlbChyLT5sZXZl
bCgpKTsKIAogICAgICAgICBpZiAoaXM8SW5saW5lVGV4dEJveD4oKmJveCkpIHsKQEAgLTM0Miw0
MiArMzQyLDQyIEBAIFJvb3RJbmxpbmVCb3gqIFJlbmRlckJsb2NrRmxvdzo6Y29uc3RydWMKICAg
ICByZXR1cm4gbGFzdFJvb3RCb3goKTsKIH0KIAotRVRleHRBbGlnbiBSZW5kZXJCbG9ja0Zsb3c6
OnRleHRBbGlnbm1lbnRGb3JMaW5lKGJvb2wgZW5kc1dpdGhTb2Z0QnJlYWspIGNvbnN0CitUZXh0
QWxpZ25Nb2RlIFJlbmRlckJsb2NrRmxvdzo6dGV4dEFsaWdubWVudEZvckxpbmUoYm9vbCBlbmRz
V2l0aFNvZnRCcmVhaykgY29uc3QKIHsKLSAgICBFVGV4dEFsaWduIGFsaWdubWVudCA9IHN0eWxl
KCkudGV4dEFsaWduKCk7CisgICAgVGV4dEFsaWduTW9kZSBhbGlnbm1lbnQgPSBzdHlsZSgpLnRl
eHRBbGlnbigpOwogI2lmIEVOQUJMRShDU1MzX1RFWFQpCiAgICAgVGV4dEp1c3RpZnkgdGV4dEp1
c3RpZnkgPSBzdHlsZSgpLnRleHRKdXN0aWZ5KCk7Ci0gICAgaWYgKGFsaWdubWVudCA9PSBKVVNU
SUZZICYmIHRleHRKdXN0aWZ5ID09IFRleHRKdXN0aWZ5Tm9uZSkKLSAgICAgICAgcmV0dXJuIHN0
eWxlKCkuZGlyZWN0aW9uKCkgPT0gTFRSID8gTEVGVCA6IFJJR0hUOworICAgIGlmIChhbGlnbm1l
bnQgPT0gVGV4dEFsaWduTW9kZTo6SnVzdGlmeSAmJiB0ZXh0SnVzdGlmeSA9PSBUZXh0SnVzdGlm
eTo6Tm9uZSkKKyAgICAgICAgcmV0dXJuIHN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gTFRSID8gVGV4
dEFsaWduTW9kZTo6TGVmdCA6IFRleHRBbGlnbk1vZGU6OlJpZ2h0OwogI2VuZGlmCiAKICAgICBp
ZiAoZW5kc1dpdGhTb2Z0QnJlYWspCiAgICAgICAgIHJldHVybiBhbGlnbm1lbnQ7CiAKICNpZiAh
RU5BQkxFKENTUzNfVEVYVCkKLSAgICByZXR1cm4gKGFsaWdubWVudCA9PSBKVVNUSUZZKSA/IFRB
U1RBUlQgOiBhbGlnbm1lbnQ7CisgICAgcmV0dXJuIChhbGlnbm1lbnQgPT0gVGV4dEFsaWduTW9k
ZTo6SnVzdGlmeSkgPyBUZXh0QWxpZ25Nb2RlOjpTdGFydCA6IGFsaWdubWVudDsKICNlbHNlCi0g
ICAgaWYgKGFsaWdubWVudCAhPSBKVVNUSUZZKQorICAgIGlmIChhbGlnbm1lbnQgIT0gVGV4dEFs
aWduTW9kZTo6SnVzdGlmeSkKICAgICAgICAgcmV0dXJuIGFsaWdubWVudDsKIAogICAgIFRleHRB
bGlnbkxhc3QgYWxpZ25tZW50TGFzdCA9IHN0eWxlKCkudGV4dEFsaWduTGFzdCgpOwogICAgIHN3
aXRjaCAoYWxpZ25tZW50TGFzdCkgewotICAgIGNhc2UgVGV4dEFsaWduTGFzdFN0YXJ0OgotICAg
ICAgICByZXR1cm4gVEFTVEFSVDsKLSAgICBjYXNlIFRleHRBbGlnbkxhc3RFbmQ6Ci0gICAgICAg
IHJldHVybiBUQUVORDsKLSAgICBjYXNlIFRleHRBbGlnbkxhc3RMZWZ0OgotICAgICAgICByZXR1
cm4gTEVGVDsKLSAgICBjYXNlIFRleHRBbGlnbkxhc3RSaWdodDoKLSAgICAgICAgcmV0dXJuIFJJ
R0hUOwotICAgIGNhc2UgVGV4dEFsaWduTGFzdENlbnRlcjoKLSAgICAgICAgcmV0dXJuIENFTlRF
UjsKLSAgICBjYXNlIFRleHRBbGlnbkxhc3RKdXN0aWZ5OgotICAgICAgICByZXR1cm4gSlVTVElG
WTsKLSAgICBjYXNlIFRleHRBbGlnbkxhc3RBdXRvOgotICAgICAgICBpZiAodGV4dEp1c3RpZnkg
PT0gVGV4dEp1c3RpZnlEaXN0cmlidXRlKQotICAgICAgICAgICAgcmV0dXJuIEpVU1RJRlk7Ci0g
ICAgICAgIHJldHVybiBUQVNUQVJUOworICAgIGNhc2UgVGV4dEFsaWduTGFzdDo6U3RhcnQ6Cisg
ICAgICAgIHJldHVybiBUZXh0QWxpZ25Nb2RlOjpTdGFydDsKKyAgICBjYXNlIFRleHRBbGlnbkxh
c3Q6OkVuZDoKKyAgICAgICAgcmV0dXJuIFRleHRBbGlnbk1vZGU6OkVuZDsKKyAgICBjYXNlIFRl
eHRBbGlnbkxhc3Q6OkxlZnQ6CisgICAgICAgIHJldHVybiBUZXh0QWxpZ25Nb2RlOjpMZWZ0Owor
ICAgIGNhc2UgVGV4dEFsaWduTGFzdDo6UmlnaHQ6CisgICAgICAgIHJldHVybiBUZXh0QWxpZ25N
b2RlOjpSaWdodDsKKyAgICBjYXNlIFRleHRBbGlnbkxhc3Q6OkNlbnRlcjoKKyAgICAgICAgcmV0
dXJuIFRleHRBbGlnbk1vZGU6OkNlbnRlcjsKKyAgICBjYXNlIFRleHRBbGlnbkxhc3Q6Okp1c3Rp
Znk6CisgICAgICAgIHJldHVybiBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5OworICAgIGNhc2UgVGV4
dEFsaWduTGFzdDo6QXV0bzoKKyAgICAgICAgaWYgKHRleHRKdXN0aWZ5ID09IFRleHRKdXN0aWZ5
OjpEaXN0cmlidXRlKQorICAgICAgICAgICAgcmV0dXJuIFRleHRBbGlnbk1vZGU6Okp1c3RpZnk7
CisgICAgICAgIHJldHVybiBUZXh0QWxpZ25Nb2RlOjpTdGFydDsKICAgICB9CiAgICAgcmV0dXJu
IGFsaWdubWVudDsKICNlbmRpZgpAQCAtNjE0LDcgKzYxNCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tG
bG93Ojpjb21wdXRlRXhwYW5zaW9uRm8KICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyQmxvY2tGbG93
Ojp1cGRhdGVMb2dpY2FsV2lkdGhGb3JBbGlnbm1lbnQoY29uc3QgRVRleHRBbGlnbiYgdGV4dEFs
aWduLCBjb25zdCBSb290SW5saW5lQm94KiByb290SW5saW5lQm94LCBCaWRpUnVuKiB0cmFpbGlu
Z1NwYWNlUnVuLCBmbG9hdCYgbG9naWNhbExlZnQsIGZsb2F0JiB0b3RhbExvZ2ljYWxXaWR0aCwg
ZmxvYXQmIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgaW50IGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291
bnQpCit2b2lkIFJlbmRlckJsb2NrRmxvdzo6dXBkYXRlTG9naWNhbFdpZHRoRm9yQWxpZ25tZW50
KGNvbnN0IFRleHRBbGlnbk1vZGUmIHRleHRBbGlnbiwgY29uc3QgUm9vdElubGluZUJveCogcm9v
dElubGluZUJveCwgQmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1biwgZmxvYXQmIGxvZ2ljYWxMZWZ0
LCBmbG9hdCYgdG90YWxMb2dpY2FsV2lkdGgsIGZsb2F0JiBhdmFpbGFibGVMb2dpY2FsV2lkdGgs
IGludCBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KQogewogICAgIFRleHREaXJlY3Rpb24gZGly
ZWN0aW9uOwogICAgIGlmIChyb290SW5saW5lQm94ICYmIHN0eWxlKCkudW5pY29kZUJpZGkoKSA9
PSBQbGFpbnRleHQpCkBAIC02MjcsMTkgKzYyNywxOSBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6
dXBkYXRlTG9naWNhbFdpZHRoCiAgICAgLy8gb2JqZWN0cyBob3Jpem9udGFsbHkuIFRoZSB0b3Rh
bCB3aWR0aCBvZiB0aGUgbGluZSBjYW4gYmUgaW5jcmVhc2VkIGlmIHdlIGVuZCB1cAogICAgIC8v
IGp1c3RpZnlpbmcgdGV4dC4KICAgICBzd2l0Y2ggKHRleHRBbGlnbikgewotICAgIGNhc2UgTEVG
VDoKLSAgICBjYXNlIFdFQktJVF9MRUZUOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoK
KyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdExlZnQ6CiAgICAgICAgIHVwZGF0ZUxvZ2lj
YWxXaWR0aEZvckxlZnRBbGlnbmVkQmxvY2soc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9u
KCksIHRyYWlsaW5nU3BhY2VSdW4sIGxvZ2ljYWxMZWZ0LCB0b3RhbExvZ2ljYWxXaWR0aCwgYXZh
aWxhYmxlTG9naWNhbFdpZHRoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSSUdIVDoKLSAg
ICBjYXNlIFdFQktJVF9SSUdIVDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlJpZ2h0OgorICAg
IGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQ6CiAgICAgICAgIHVwZGF0ZUxvZ2ljYWxX
aWR0aEZvclJpZ2h0QWxpZ25lZEJsb2NrKHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
LCB0cmFpbGluZ1NwYWNlUnVuLCBsb2dpY2FsTGVmdCwgdG90YWxMb2dpY2FsV2lkdGgsIGF2YWls
YWJsZUxvZ2ljYWxXaWR0aCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ0VOVEVSOgotICAg
IGNhc2UgV0VCS0lUX0NFTlRFUjoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKKyAg
ICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoKICAgICAgICAgdXBkYXRlTG9naWNh
bFdpZHRoRm9yQ2VudGVyQWxpZ25lZEJsb2NrKHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpLCB0cmFpbGluZ1NwYWNlUnVuLCBsb2dpY2FsTGVmdCwgdG90YWxMb2dpY2FsV2lkdGgsIGF2
YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSlVTVElGWToK
KyAgICBjYXNlIFRleHRBbGlnbk1vZGU6Okp1c3RpZnk6CiAgICAgICAgIGFkanVzdElubGluZURp
cmVjdGlvbkxpbmVCb3VuZHMoZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCwgbG9naWNhbExlZnQs
IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiAgICAgICAgIGlmIChleHBhbnNpb25PcHBvcnR1bml0
eUNvdW50KSB7CiAgICAgICAgICAgICBpZiAodHJhaWxpbmdTcGFjZVJ1bikgewpAQCAtNjQ5LDEz
ICs2NDksMTMgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnVwZGF0ZUxvZ2ljYWxXaWR0aAogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2Fz
ZSBUQVNUQVJUOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CiAgICAgICAgIGlmIChk
aXJlY3Rpb24gPT0gTFRSKQogICAgICAgICAgICAgdXBkYXRlTG9naWNhbFdpZHRoRm9yTGVmdEFs
aWduZWRCbG9jayhzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSwgdHJhaWxpbmdTcGFj
ZVJ1biwgbG9naWNhbExlZnQsIHRvdGFsTG9naWNhbFdpZHRoLCBhdmFpbGFibGVMb2dpY2FsV2lk
dGgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB1cGRhdGVMb2dpY2FsV2lkdGhGb3JSaWdo
dEFsaWduZWRCbG9jayhzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSwgdHJhaWxpbmdT
cGFjZVJ1biwgbG9naWNhbExlZnQsIHRvdGFsTG9naWNhbFdpZHRoLCBhdmFpbGFibGVMb2dpY2Fs
V2lkdGgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRBRU5EOgorICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6RW5kOgogICAgICAgICBpZiAoZGlyZWN0aW9uID09IExUUikKICAgICAgICAgICAg
IHVwZGF0ZUxvZ2ljYWxXaWR0aEZvclJpZ2h0QWxpZ25lZEJsb2NrKHN0eWxlKCkuaXNMZWZ0VG9S
aWdodERpcmVjdGlvbigpLCB0cmFpbGluZ1NwYWNlUnVuLCBsb2dpY2FsTGVmdCwgdG90YWxMb2dp
Y2FsV2lkdGgsIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiAgICAgICAgIGVsc2UKQEAgLTY3NSw3
ICs2NzUsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVMb2dpY2FsSW5saW5lUG9zaXRpb25zCiAKIHZv
aWQgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yTGlu
ZShSb290SW5saW5lQm94KiBsaW5lQm94LCBjb25zdCBMaW5lSW5mbyYgbGluZUluZm8sIEJpZGlS
dW4qIGZpcnN0UnVuLCBCaWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVuLCBib29sIHJlYWNoZWRFbmQs
IEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiB0ZXh0Qm94RGF0YU1hcCwgVmVydGlj
YWxQb3NpdGlvbkNhY2hlJiB2ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUsIFdvcmRNZWFzdXJlbWVudHMm
IHdvcmRNZWFzdXJlbWVudHMpCiB7Ci0gICAgRVRleHRBbGlnbiB0ZXh0QWxpZ24gPSB0ZXh0QWxp
Z25tZW50Rm9yTGluZSghcmVhY2hlZEVuZCAmJiAhbGluZUJveC0+ZW5kc1dpdGhCcmVhaygpKTsK
KyAgICBUZXh0QWxpZ25Nb2RlIHRleHRBbGlnbiA9IHRleHRBbGlnbm1lbnRGb3JMaW5lKCFyZWFj
aGVkRW5kICYmICFsaW5lQm94LT5lbmRzV2l0aEJyZWFrKCkpOwogICAgIAogICAgIC8vIENTUyAy
LjE6ICInVGV4dC1pbmRlbnQnIG9ubHkgYWZmZWN0cyBhIGxpbmUgaWYgaXQgaXMgdGhlIGZpcnN0
IGZvcm1hdHRlZCBsaW5lIG9mIGFuIGVsZW1lbnQuIEZvciBleGFtcGxlLCB0aGUgZmlyc3QgbGlu
ZSBvZiBhbiBhbm9ueW1vdXMgYmxvY2sgCiAgICAgLy8gYm94IGlzIG9ubHkgYWZmZWN0ZWQgaWYg
aXQgaXMgdGhlIGZpcnN0IGNoaWxkIG9mIGl0cyBwYXJlbnQgZWxlbWVudC4iCkBAIC03MDIsNyAr
NzAyLDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbmxpbmVEaXJlYwogICAgIGxp
bmVCb3gtPnBsYWNlQm94ZXNJbklubGluZURpcmVjdGlvbihsaW5lTG9naWNhbExlZnQsIG5lZWRz
V29yZFNwYWNpbmcpOwogfQogCi1zdGF0aWMgaW5saW5lIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFu
c2lvbkJlaGF2aW9yRm9ySW5saW5lVGV4dEJveChSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrLCBJbmxp
bmVUZXh0Qm94JiB0ZXh0Qm94LCBCaWRpUnVuKiBwcmV2aW91c1J1biwgQmlkaVJ1biogbmV4dFJ1
biwgRVRleHRBbGlnbiB0ZXh0QWxpZ24sIGJvb2wgaXNBZnRlckV4cGFuc2lvbikKK3N0YXRpYyBp
bmxpbmUgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3JGb3JJbmxpbmVUZXh0Qm94
KFJlbmRlckJsb2NrRmxvdyYgYmxvY2ssIElubGluZVRleHRCb3gmIHRleHRCb3gsIEJpZGlSdW4q
IHByZXZpb3VzUnVuLCBCaWRpUnVuKiBuZXh0UnVuLCBUZXh0QWxpZ25Nb2RlIHRleHRBbGlnbiwg
Ym9vbCBpc0FmdGVyRXhwYW5zaW9uKQogewogICAgIC8vIFRhdGVjaHV5b2tvIGlzIG1vZGVsZWQg
YXMgdGhlIE9iamVjdCBSZXBsYWNlbWVudCBDaGFyYWN0ZXIgKFUrRkZGQyksIHdoaWNoIGNhbiBu
ZXZlciBoYXZlIGV4cGFuc2lvbiBvcHBvcnR1bml0aWVzIGluc2lkZSBub3IgaW50cmluc2ljYWxs
eSBhZGphY2VudCB0byBpdC4KICAgICBpZiAodGV4dEJveC5yZW5kZXJlcigpLnN0eWxlKCkudGV4
dENvbWJpbmUoKSA9PSBUZXh0Q29tYmluZTo6SG9yaXpvbnRhbCkKQEAgLTcxMSw3ICs3MTEsNyBA
QCBzdGF0aWMgaW5saW5lIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvCiAgICAgRXhwYW5zaW9u
QmVoYXZpb3IgcmVzdWx0ID0gMDsKICAgICBib29sIHNldExlYWRpbmdFeHBhbnNpb24gPSBmYWxz
ZTsKICAgICBib29sIHNldFRyYWlsaW5nRXhwYW5zaW9uID0gZmFsc2U7Ci0gICAgaWYgKHRleHRB
bGlnbiA9PSBKVVNUSUZZKSB7CisgICAgaWYgKHRleHRBbGlnbiA9PSBUZXh0QWxpZ25Nb2RlOjpK
dXN0aWZ5KSB7CiAgICAgICAgIC8vIElmIHRoZSBuZXh0IGJveCBpcyBydWJ5LCBhbmQgd2UncmUg
anVzdGlmeWluZywgYW5kIHRoZSBmaXJzdCBib3ggaW4gdGhlIHJ1YnkgYmFzZSBoYXMgYSBsZWFk
aW5nIGV4cGFuc2lvbiwgYW5kIHdlIGFyZSBhIHRleHQgYm94LCB0aGVuIGZvcmNlIGEgdHJhaWxp
bmcgZXhwYW5zaW9uLgogICAgICAgICBpZiAobmV4dFJ1biAmJiBpczxSZW5kZXJSdWJ5UnVuPihu
ZXh0UnVuLT5yZW5kZXJlcigpKSAmJiBkb3duY2FzdDxSZW5kZXJSdWJ5UnVuPihuZXh0UnVuLT5y
ZW5kZXJlcigpKS5ydWJ5QmFzZSgpICYmIG5leHRSdW4tPnJlbmRlcmVyKCkuc3R5bGUoKS5jb2xs
YXBzZVdoaXRlU3BhY2UoKSkgewogICAgICAgICAgICAgYXV0byYgcnVieUJhc2UgPSAqZG93bmNh
c3Q8UmVuZGVyUnVieVJ1bj4obmV4dFJ1bi0+cmVuZGVyZXIoKSkucnVieUJhc2UoKTsKQEAgLTgy
NSw3ICs4MjUsNyBAQCBzdGF0aWMgYm9vbCBpc0xhc3RJbkZsb3dSdW4oQmlkaVJ1biYgcnVuCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAgICAgCi1CaWRpUnVuKiBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1
dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JTZWdtZW50KFJvb3RJbmxpbmVCb3gqIGxpbmVC
b3gsIGNvbnN0IExpbmVJbmZvJiBsaW5lSW5mbywgRVRleHRBbGlnbiB0ZXh0QWxpZ24sIGZsb2F0
JiBsb2dpY2FsTGVmdCwgCitCaWRpUnVuKiBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbmxpbmVE
aXJlY3Rpb25Qb3NpdGlvbnNGb3JTZWdtZW50KFJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsIGNvbnN0
IExpbmVJbmZvJiBsaW5lSW5mbywgVGV4dEFsaWduTW9kZSB0ZXh0QWxpZ24sIGZsb2F0JiBsb2dp
Y2FsTGVmdCwgCiAgICAgZmxvYXQmIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgQmlkaVJ1biogZmly
c3RSdW4sIEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4sIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFj
a0ZvbnRzTWFwJiB0ZXh0Qm94RGF0YU1hcCwgVmVydGljYWxQb3NpdGlvbkNhY2hlJiB2ZXJ0aWNh
bFBvc2l0aW9uQ2FjaGUsCiAgICAgV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cykK
IHsKQEAgLTg4Miw3ICs4ODIsNyBAQCBCaWRpUnVuKiBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJ
bmxpbmVECiAgICAgICAgICAgICAgICAgY2FuSGFuZ1B1bmN0dWF0aW9uQXRFbmQgPSBmYWxzZTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHRleHRBbGlnbiA9
PSBKVVNUSUZZICYmIHJ1biAhPSB0cmFpbGluZ1NwYWNlUnVuKQorICAgICAgICAgICAgaWYgKHRl
eHRBbGlnbiA9PSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5ICYmIHJ1biAhPSB0cmFpbGluZ1NwYWNl
UnVuKQogICAgICAgICAgICAgICAgIGNvbXB1dGVFeHBhbnNpb25PcHBvcnR1bml0aWVzKCp0aGlz
LCB0ZXh0Qm94LCBwcmV2aW91c1J1biwgcnVuLT5uZXh0KCksIHJlbmRlclRleHQuc3RyaW5nVmll
dyhydW4tPm1fc3RhcnQsIHJ1bi0+bV9zdG9wKSwgcnVuLT5ib3goKS0+ZGlyZWN0aW9uKCkpOwog
CiAgICAgICAgICAgICBpZiAodW5zaWduZWQgbGVuZ3RoID0gcmVuZGVyVGV4dC50ZXh0KCkubGVu
Z3RoKCkpIHsKQEAgLTg5Nyw3ICs4OTcsNyBAQCBCaWRpUnVuKiBSZW5kZXJCbG9ja0Zsb3c6OmNv
bXB1dGVJbmxpbmVECiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjYW5IYW5nUHVuY3R1
YXRpb25BdFN0YXJ0ID0gZmFsc2U7CiAgICAgICAgICAgICBib29sIGVuY291bnRlcmVkSnVzdGlm
aWVkUnVieSA9IGZhbHNlOwotICAgICAgICAgICAgaWYgKGlzPFJlbmRlclJ1YnlSdW4+KHJ1bi0+
cmVuZGVyZXIoKSkgJiYgdGV4dEFsaWduID09IEpVU1RJRlkgJiYgcnVuICE9IHRyYWlsaW5nU3Bh
Y2VSdW4gJiYgZG93bmNhc3Q8UmVuZGVyUnVieVJ1bj4ocnVuLT5yZW5kZXJlcigpKS5ydWJ5QmFz
ZSgpKSB7CisgICAgICAgICAgICBpZiAoaXM8UmVuZGVyUnVieVJ1bj4ocnVuLT5yZW5kZXJlcigp
KSAmJiB0ZXh0QWxpZ24gPT0gVGV4dEFsaWduTW9kZTo6SnVzdGlmeSAmJiBydW4gIT0gdHJhaWxp
bmdTcGFjZVJ1biAmJiBkb3duY2FzdDxSZW5kZXJSdWJ5UnVuPihydW4tPnJlbmRlcmVyKCkpLnJ1
YnlCYXNlKCkpIHsKICAgICAgICAgICAgICAgICBhdXRvKiBydWJ5QmFzZSA9IGRvd25jYXN0PFJl
bmRlclJ1YnlSdW4+KHJ1bi0+cmVuZGVyZXIoKSkucnVieUJhc2UoKTsKICAgICAgICAgICAgICAg
ICBpZiAocnVieUJhc2UtPmZpcnN0Um9vdEJveCgpICYmICFydWJ5QmFzZS0+Zmlyc3RSb290Qm94
KCktPm5leHRSb290Qm94KCkgJiYgcnVuLT5yZW5kZXJlcigpLnN0eWxlKCkuY29sbGFwc2VXaGl0
ZVNwYWNlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgcnVieUJhc2UtPnNldElzQWZ0ZXJFeHBh
bnNpb24oaXNBZnRlckV4cGFuc2lvbik7CkBAIC05NDAsNyArOTQwLDcgQEAgQmlkaVJ1biogUmVu
ZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5lRAogICAgIH0KIAogICAgIGlmIChpczxSZW5kZXJS
dWJ5QmFzZT4oKnRoaXMpICYmICFleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KQotICAgICAgICB0
ZXh0QWxpZ24gPSBDRU5URVI7CisgICAgICAgIHRleHRBbGlnbiA9IFRleHRBbGlnbk1vZGU6OkNl
bnRlcjsKIAogICAgIHVwZGF0ZUxvZ2ljYWxXaWR0aEZvckFsaWdubWVudCh0ZXh0QWxpZ24sIGxp
bmVCb3gsIHRyYWlsaW5nU3BhY2VSdW4sIGxvZ2ljYWxMZWZ0LCB0b3RhbExvZ2ljYWxXaWR0aCwg
YXZhaWxhYmxlTG9naWNhbFdpZHRoLCBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KTsKIApAQCAt
MTM3OCw3ICsxMzc4LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dFJ1bnNBbmRGbG9h
dAogICAgICAgICAgICAgaWYgKGxhc3RSb290Qm94KCkpCiAgICAgICAgICAgICAgICAgbGFzdFJv
b3RCb3goKS0+c2V0TGluZUJyZWFrSW5mbyhlbmQucmVuZGVyZXIoKSwgZW5kLm9mZnNldCgpLCBy
ZXNvbHZlci5zdGF0dXMoKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBWaXN1YWxE
aXJlY3Rpb25PdmVycmlkZSBvdmVycmlkZSA9IChzdHlsZVRvVXNlLnJ0bE9yZGVyaW5nKCkgPT0g
VmlzdWFsT3JkZXIgPyAoc3R5bGVUb1VzZS5kaXJlY3Rpb24oKSA9PSBMVFIgPyBWaXN1YWxMZWZ0
VG9SaWdodE92ZXJyaWRlIDogVmlzdWFsUmlnaHRUb0xlZnRPdmVycmlkZSkgOiBOb1Zpc3VhbE92
ZXJyaWRlKTsKKyAgICAgICAgICAgIFZpc3VhbERpcmVjdGlvbk92ZXJyaWRlIG92ZXJyaWRlID0g
KHN0eWxlVG9Vc2UucnRsT3JkZXJpbmcoKSA9PSBPcmRlcjo6VmlzdWFsID8gKHN0eWxlVG9Vc2Uu
ZGlyZWN0aW9uKCkgPT0gTFRSID8gVmlzdWFsTGVmdFRvUmlnaHRPdmVycmlkZSA6IFZpc3VhbFJp
Z2h0VG9MZWZ0T3ZlcnJpZGUpIDogTm9WaXN1YWxPdmVycmlkZSk7CiAKICAgICAgICAgICAgIGlm
IChpc05ld1VCQVBhcmFncmFwaCAmJiBzdHlsZVRvVXNlLnVuaWNvZGVCaWRpKCkgPT0gUGxhaW50
ZXh0ICYmICFyZXNvbHZlci5jb250ZXh0KCktPnBhcmVudCgpKSB7CiAgICAgICAgICAgICAgICAg
VGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBzdHlsZVRvVXNlLmRpcmVjdGlvbigpOwpAQCAtMTc2
Myw3ICsxNzYzLDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNoZWNrRmxvYXRJbkNsZWFuTAog
ICAgICAgICBmbG9hdEJveE9uQ2xlYW5MaW5lLmhlaWdodCgpICsgZmxvYXRCb3hPbkNsZWFuTGlu
ZS52ZXJ0aWNhbE1hcmdpbkV4dGVudCgpKTsKICAgICAKICAgICAvLyBXZSBoYXZlIHRvIHJlc2V0
IHRoZSBjYXAtaGVpZ2h0IGFsaWdubWVudCBkb25lIGJ5IHRoZSBmaXJzdC1sZXR0ZXIgZmxvYXRz
IHdoZW4gaW5pdGlhbC1sZXR0ZXIgaXMgc2V0LCBzbyBqdXN0IGFsd2F5cyB0cmVhdCBmaXJzdC1s
ZXR0ZXIgZmxvYXRzIGFzIGRpcnR5LgotICAgIGlmIChvcmlnaW5hbEZsb2F0UmVjdC5zaXplKCkg
PT0gbmV3U2l6ZSAmJiAoZmxvYXRCb3hPbkNsZWFuTGluZS5zdHlsZSgpLnN0eWxlVHlwZSgpICE9
IEZJUlNUX0xFVFRFUiB8fCAhZmxvYXRCb3hPbkNsZWFuTGluZS5zdHlsZSgpLmluaXRpYWxMZXR0
ZXJEcm9wKCkpKQorICAgIGlmIChvcmlnaW5hbEZsb2F0UmVjdC5zaXplKCkgPT0gbmV3U2l6ZSAm
JiAoZmxvYXRCb3hPbkNsZWFuTGluZS5zdHlsZSgpLnN0eWxlVHlwZSgpICE9IFBzZXVkb0lkOjpG
aXJzdExldHRlciB8fCAhZmxvYXRCb3hPbkNsZWFuTGluZS5zdHlsZSgpLmluaXRpYWxMZXR0ZXJE
cm9wKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBMYXlvdXRVbml0IGZsb2F0VG9wID0gaXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG9yaWdpbmFsRmxvYXRSZWN0LnkoKSA6IG9yaWdpbmFs
RmxvYXRSZWN0LngoKTsKQEAgLTIwODksNyArMjA4OSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93
OjphZGRPdmVyZmxvd0Zyb21JbmwKIAogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmRlbGV0ZUVsbGlw
c2lzTGluZUJveGVzKCkKIHsKLSAgICBFVGV4dEFsaWduIHRleHRBbGlnbiA9IHN0eWxlKCkudGV4
dEFsaWduKCk7CisgICAgVGV4dEFsaWduTW9kZSB0ZXh0QWxpZ24gPSBzdHlsZSgpLnRleHRBbGln
bigpOwogICAgIGJvb2wgbHRyID0gc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CiAg
ICAgSW5kZW50VGV4dE9yTm90IHNob3VsZEluZGVudFRleHQgPSBJbmRlbnRUZXh0OwogICAgIGZv
ciAoUm9vdElubGluZUJveCogY3VyciA9IGZpcnN0Um9vdEJveCgpOyBjdXJyOyBjdXJyID0gY3Vy
ci0+bmV4dFJvb3RCb3goKSkgewpAQCAtMjEyNiw3ICsyMTI2LDcgQEAgdm9pZCBSZW5kZXJCbG9j
a0Zsb3c6OmNoZWNrTGluZXNGb3JUZXh0TwogICAgIC8vIGNoZWNrIHRoZSBsZWZ0IGVkZ2Ugb2Yg
dGhlIGxpbmUgYm94IHRvIHNlZSBpZiBpdCBpcyBsZXNzCiAgICAgLy8gSW5jbHVkZSB0aGUgc2Ny
b2xsYmFyIGZvciBvdmVyZmxvdyBibG9ja3MsIHdoaWNoIG1lYW5zIHdlIHdhbnQgdG8gdXNlICJj
b250ZW50V2lkdGgoKSIKICAgICBib29sIGx0ciA9IHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpOwotICAgIEVUZXh0QWxpZ24gdGV4dEFsaWduID0gc3R5bGUoKS50ZXh0QWxpZ24oKTsK
KyAgICBUZXh0QWxpZ25Nb2RlIHRleHRBbGlnbiA9IHN0eWxlKCkudGV4dEFsaWduKCk7CiAgICAg
Ym9vbCBmaXJzdExpbmUgPSB0cnVlOwogICAgIGZvciAoUm9vdElubGluZUJveCogY3VyciA9IGZp
cnN0Um9vdEJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dFJvb3RCb3goKSkgewogICAgICAg
ICBJbmRlbnRUZXh0T3JOb3Qgc2hvdWxkSW5kZW50VGV4dCA9IGZpcnN0TGluZSA/IEluZGVudFRl
eHQgOiBEb05vdEluZGVudFRleHQ7CkBAIC0yMjE0LDE4ICsyMjE0LDE4IEBAIGJvb2wgUmVuZGVy
QmxvY2tGbG93Ojpwb3NpdGlvbk5ld0Zsb2F0T24KIAogTGF5b3V0VW5pdCBSZW5kZXJCbG9ja0Zs
b3c6OnN0YXJ0QWxpZ25lZE9mZnNldEZvckxpbmUoTGF5b3V0VW5pdCBwb3NpdGlvbiwgSW5kZW50
VGV4dE9yTm90IHNob3VsZEluZGVudFRleHQpCiB7Ci0gICAgRVRleHRBbGlnbiB0ZXh0QWxpZ24g
PSBzdHlsZSgpLnRleHRBbGlnbigpOworICAgIFRleHRBbGlnbk1vZGUgdGV4dEFsaWduID0gc3R5
bGUoKS50ZXh0QWxpZ24oKTsKICAgICBib29sIHNob3VsZEFwcGx5SW5kZW50VGV4dCA9IGZhbHNl
OwogICAgIHN3aXRjaCAodGV4dEFsaWduKSB7Ci0gICAgY2FzZSBMRUZUOgotICAgIGNhc2UgV0VC
S0lUX0xFRlQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgorICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0TGVmdDoKICAgICAgICAgc2hvdWxkQXBwbHlJbmRlbnRUZXh0ID0gc3R5
bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
UklHSFQ6Ci0gICAgY2FzZSBXRUJLSVRfUklHSFQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpS
aWdodDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0OgogICAgICAgICBzaG91
bGRBcHBseUluZGVudFRleHQgPSAhc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgVEFTVEFSVDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6
OlN0YXJ0OgogICAgICAgICBzaG91bGRBcHBseUluZGVudFRleHQgPSB0cnVlOwogICAgICAgICBi
cmVhazsKICAgICBkZWZhdWx0OgpAQCAtMjIzNSw3ICsyMjM1LDcgQEAgTGF5b3V0VW5pdCBSZW5k
ZXJCbG9ja0Zsb3c6OnN0YXJ0QWxpZ25lZAogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjQ1MjIKICAgICAvLyBUaGlzIHF1aXJrIGlzIGZvciBsZWdhY3kg
Y29udGVudCB0aGF0IGRvZXNuJ3Qgd29yayBwcm9wZXJseSB3aXRoIHRoZSBjZW50ZXIgcG9zaXRp
b25pbmcgc2NoZW1lCiAgICAgLy8gYmVpbmcgaG9ub3JlZCAoZS5nLiwgZXB1YnMpLgotICAgIGlm
IChzaG91bGRBcHBseUluZGVudFRleHQgfHwgc2V0dGluZ3MoKS51c2VMZWdhY3lUZXh0QWxpZ25Q
b3NpdGlvbmVkRWxlbWVudEJlaGF2aW9yKCkpIC8vIEZJWE1FOiBIYW5kbGUgVEFFTkQgaGVyZQor
ICAgIGlmIChzaG91bGRBcHBseUluZGVudFRleHQgfHwgc2V0dGluZ3MoKS51c2VMZWdhY3lUZXh0
QWxpZ25Qb3NpdGlvbmVkRWxlbWVudEJlaGF2aW9yKCkpIC8vIEZJWE1FOiBIYW5kbGUgVGV4dEFs
aWduTW9kZTo6RW5kIGhlcmUKICAgICAgICAgcmV0dXJuIHN0YXJ0T2Zmc2V0Rm9yTGluZShwb3Np
dGlvbiwgc2hvdWxkSW5kZW50VGV4dCk7CiAKICAgICAvLyB1cGRhdGVMb2dpY2FsV2lkdGhGb3JB
bGlnbm1lbnQoKSBoYW5kbGVzIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGJsb2NrIHNvIG5vIG5lZWQg
dG8gY29uc2lkZXIgaXQgaGVyZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NDAsMTMgKzk0MCwxMyBAQCB2b2lkIFJlbmRl
ckJveDo6cGFuU2Nyb2xsKGNvbnN0IEludFBvaW50CiAKIGJvb2wgUmVuZGVyQm94OjpoYXNWZXJ0
aWNhbFNjcm9sbGJhcldpdGhBdXRvQmVoYXZpb3IoKSBjb25zdAogewotICAgIGJvb2wgb3ZlcmZs
b3dTY3JvbGxBY3RzTGlrZUF1dG8gPSBzdHlsZSgpLm92ZXJmbG93WSgpID09IE92ZXJmbG93OjpT
Y3JvbGwgJiYgIXN0eWxlKCkuaGFzUHNldWRvU3R5bGUoU0NST0xMQkFSKSAmJiBTY3JvbGxiYXJU
aGVtZTo6dGhlbWUoKS51c2VzT3ZlcmxheVNjcm9sbGJhcnMoKTsKKyAgICBib29sIG92ZXJmbG93
U2Nyb2xsQWN0c0xpa2VBdXRvID0gc3R5bGUoKS5vdmVyZmxvd1koKSA9PSBPdmVyZmxvdzo6U2Ny
b2xsICYmICFzdHlsZSgpLmhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkOjpTY3JvbGxiYXIpICYmIFNj
cm9sbGJhclRoZW1lOjp0aGVtZSgpLnVzZXNPdmVybGF5U2Nyb2xsYmFycygpOwogICAgIHJldHVy
biBoYXNPdmVyZmxvd0NsaXAoKSAmJiAoc3R5bGUoKS5vdmVyZmxvd1koKSA9PSBPdmVyZmxvdzo6
QXV0byB8fCBzdHlsZSgpLm92ZXJmbG93WSgpID09IE92ZXJmbG93OjpPdmVybGF5IHx8IG92ZXJm
bG93U2Nyb2xsQWN0c0xpa2VBdXRvKTsKIH0KIAogYm9vbCBSZW5kZXJCb3g6Omhhc0hvcml6b250
YWxTY3JvbGxiYXJXaXRoQXV0b0JlaGF2aW9yKCkgY29uc3QKIHsKLSAgICBib29sIG92ZXJmbG93
U2Nyb2xsQWN0c0xpa2VBdXRvID0gc3R5bGUoKS5vdmVyZmxvd1goKSA9PSBPdmVyZmxvdzo6U2Ny
b2xsICYmICFzdHlsZSgpLmhhc1BzZXVkb1N0eWxlKFNDUk9MTEJBUikgJiYgU2Nyb2xsYmFyVGhl
bWU6OnRoZW1lKCkudXNlc092ZXJsYXlTY3JvbGxiYXJzKCk7CisgICAgYm9vbCBvdmVyZmxvd1Nj
cm9sbEFjdHNMaWtlQXV0byA9IHN0eWxlKCkub3ZlcmZsb3dYKCkgPT0gT3ZlcmZsb3c6OlNjcm9s
bCAmJiAhc3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6U2Nyb2xsYmFyKSAmJiBTY3Jv
bGxiYXJUaGVtZTo6dGhlbWUoKS51c2VzT3ZlcmxheVNjcm9sbGJhcnMoKTsKICAgICByZXR1cm4g
aGFzT3ZlcmZsb3dDbGlwKCkgJiYgKHN0eWxlKCkub3ZlcmZsb3dYKCkgPT0gT3ZlcmZsb3c6OkF1
dG8gfHwgc3R5bGUoKS5vdmVyZmxvd1goKSA9PSBPdmVyZmxvdzo6T3ZlcmxheSB8fCBvdmVyZmxv
d1Njcm9sbEFjdHNMaWtlQXV0byk7CiB9CiAKQEAgLTEzOTgsNyArMTM5OCw3IEBAIHN0YXRpYyBi
b29sIGlzQ2FuZGlkYXRlRm9yT3BhcXVlbmVzc1Rlc3QKICAgICBjb25zdCBSZW5kZXJTdHlsZSYg
Y2hpbGRTdHlsZSA9IGNoaWxkQm94LnN0eWxlKCk7CiAgICAgaWYgKGNoaWxkU3R5bGUucG9zaXRp
b24oKSAhPSBQb3NpdGlvblR5cGU6OlN0YXRpYyAmJiBjaGlsZEJveC5jb250YWluaW5nQmxvY2so
KSAhPSBjaGlsZEJveC5wYXJlbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChj
aGlsZFN0eWxlLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChjaGlsZFN0eWxlLnZp
c2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaWYgKGNoaWxkU3R5bGUuc2hhcGVPdXRzaWRlKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTE0OTIsNyArMTQ5Miw3IEBAIGJvb2wgUmVuZGVyQm94OjpiYWNrZ3JvdW5kSGFzT3Bh
cXVlVG9wTGEKIAogdm9pZCBSZW5kZXJCb3g6OnBhaW50TWFzayhQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewotICAgIGlmICghcGFpbnRJbmZv
LnNob3VsZFBhaW50V2l0aGluUm9vdCgqdGhpcykgfHwgc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0g
VklTSUJMRSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZU1hc2sgfHwgcGFpbnRJbmZv
LmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKCFwYWludEluZm8uc2hvdWxk
UGFpbnRXaXRoaW5Sb290KCp0aGlzKSB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmls
aXR5OjpWaXNpYmxlIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlTWFzayB8fCBwYWlu
dEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgTGF5b3V0UmVjdCBwYWludFJlY3QgPSBMYXlvdXRSZWN0KHBhaW50T2Zmc2V0LCBzaXplKCkp
OwpAQCAtMTUwMiw3ICsxNTAyLDcgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50TWFzayhQYWludElu
Zm8mIHBhaQogCiB2b2lkIFJlbmRlckJveDo6cGFpbnRDbGlwcGluZ01hc2soUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKLSAgICBpZiAoIXBh
aW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QoKnRoaXMpIHx8IHN0eWxlKCkudmlzaWJpbGl0
eSgpICE9IFZJU0lCTEUgfHwgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VDbGlwcGluZ01h
c2sgfHwgcGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKCFw
YWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KCp0aGlzKSB8fCBzdHlsZSgpLnZpc2liaWxp
dHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBo
YXNlQ2xpcHBpbmdNYXNrIHx8IHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm47CiAKICAgICBMYXlvdXRSZWN0IHBhaW50UmVjdCA9IExheW91dFJl
Y3QocGFpbnRPZmZzZXQsIHNpemUoKSk7CkBAIC0yMDY1LDcgKzIwNjUsNyBAQCB2b2lkIFJlbmRl
ckJveDo6ZGlydHlMaW5lQm94ZXMoYm9vbCBmdWxsCiB2b2lkIFJlbmRlckJveDo6cG9zaXRpb25M
aW5lQm94KElubGluZUVsZW1lbnRCb3gmIGJveCkKIHsKICAgICBpZiAoaXNPdXRPZkZsb3dQb3Np
dGlvbmVkKCkpIHsKLSAgICAgICAgLy8gQ2FjaGUgdGhlIHggcG9zaXRpb24gb25seSBpZiB3ZSB3
ZXJlIGFuIElOTElORSB0eXBlIG9yaWdpbmFsbHkuCisgICAgICAgIC8vIENhY2hlIHRoZSB4IHBv
c2l0aW9uIG9ubHkgaWYgd2Ugd2VyZSBhbiBEaXNwbGF5VHlwZTo6SW5saW5lIHR5cGUgb3JpZ2lu
YWxseS4KICAgICAgICAgYm9vbCB3YXNJbmxpbmUgPSBzdHlsZSgpLmlzT3JpZ2luYWxEaXNwbGF5
SW5saW5lVHlwZSgpOwogICAgICAgICBpZiAod2FzSW5saW5lKSB7CiAgICAgICAgICAgICAvLyBU
aGUgdmFsdWUgaXMgY2FjaGVkIGluIHRoZSB4UG9zIG9mIHRoZSBib3guICBXZSBvbmx5IG5lZWQg
dGhpcyB2YWx1ZSBpZgpAQCAtMjEwNiw3ICsyMTA2LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmRlbGV0
ZUxpbmVCb3hXcmFwcGVyKCkKIAogTGF5b3V0UmVjdCBSZW5kZXJCb3g6OmNsaXBwZWRPdmVyZmxv
d1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIpIGNvbnN0CiB7Ci0gICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUg
JiYgIWVuY2xvc2luZ0xheWVyKCktPmhhc1Zpc2libGVDb250ZW50KCkpCisgICAgaWYgKHN0eWxl
KCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgJiYgIWVuY2xvc2luZ0xheWVy
KCktPmhhc1Zpc2libGVDb250ZW50KCkpCiAgICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CiAg
ICAgTGF5b3V0UmVjdCByID0gdmlzdWFsT3ZlcmZsb3dSZWN0KCk7CiAgICAgLy8gRklYTUU6IGxh
eW91dERlbHRhIG5lZWRzIHRvIGJlIGFwcGxpZWQgaW4gcGFydHMgYmVmb3JlL2FmdGVyIHRyYW5z
Zm9ybXMgYW5kCkBAIC0yMzEyLDcgKzIzMTIsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxv
Z2ljYWxXaWR0aEluRnJhCiAgICAgLy8gd2lkdGguICBVc2UgdGhlIHdpZHRoIGZyb20gdGhlIHN0
eWxlIGNvbnRleHQuCiAgICAgLy8gRklYTUU6IEFjY291bnQgZm9yIGJsb2NrLWZsb3cgaW4gZmxl
eGlibGUgYm94ZXMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ2NDE4Ci0gICAgaWYgKGhhc092ZXJyaWRlQ29udGVudExvZ2ljYWxXaWR0aCgpICYmIChp
c1J1YnlSdW4oKSB8fCBzdHlsZSgpLmJvcmRlckZpdCgpID09IEJvcmRlckZpdExpbmVzIHx8IChw
YXJlbnQoKS0+aXNGbGV4aWJsZUJveEluY2x1ZGluZ0RlcHJlY2F0ZWQoKSkpKSB7CisgICAgaWYg
KGhhc092ZXJyaWRlQ29udGVudExvZ2ljYWxXaWR0aCgpICYmIChpc1J1YnlSdW4oKSB8fCBzdHls
ZSgpLmJvcmRlckZpdCgpID09IEJvcmRlckZpdDo6TGluZXMgfHwgKHBhcmVudCgpLT5pc0ZsZXhp
YmxlQm94SW5jbHVkaW5nRGVwcmVjYXRlZCgpKSkpIHsKICAgICAgICAgY29tcHV0ZWRWYWx1ZXMu
bV9leHRlbnQgPSBvdmVycmlkZUNvbnRlbnRMb2dpY2FsV2lkdGgoKSArIGJvcmRlckFuZFBhZGRp
bmdMb2dpY2FsV2lkdGgoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI1ODAsNyArMjU4
MCw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uTWEKIAogICAgIC8v
IENhc2UgT25lOiBUaGUgb2JqZWN0IGlzIGJlaW5nIGNlbnRlcmVkIGluIHRoZSBjb250YWluaW5n
IGJsb2NrJ3MgYXZhaWxhYmxlIGxvZ2ljYWwgd2lkdGguCiAgICAgaWYgKChtYXJnaW5TdGFydExl
bmd0aC5pc0F1dG8oKSAmJiBtYXJnaW5FbmRMZW5ndGguaXNBdXRvKCkgJiYgY2hpbGRXaWR0aCA8
IGNvbnRhaW5lcldpZHRoKQotICAgICAgICB8fCAoIW1hcmdpblN0YXJ0TGVuZ3RoLmlzQXV0bygp
ICYmICFtYXJnaW5FbmRMZW5ndGguaXNBdXRvKCkgJiYgY29udGFpbmluZ0Jsb2NrLnN0eWxlKCku
dGV4dEFsaWduKCkgPT0gV0VCS0lUX0NFTlRFUikpIHsKKyAgICAgICAgfHwgKCFtYXJnaW5TdGFy
dExlbmd0aC5pc0F1dG8oKSAmJiAhbWFyZ2luRW5kTGVuZ3RoLmlzQXV0bygpICYmIGNvbnRhaW5p
bmdCbG9jay5zdHlsZSgpLnRleHRBbGlnbigpID09IFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRl
cikpIHsKICAgICAgICAgLy8gT3RoZXIgYnJvd3NlcnMgY2VudGVyIHRoZSBtYXJnaW4gYm94IGZv
ciBhbGlnbj1jZW50ZXIgZWxlbWVudHMgc28gd2UgbWF0Y2ggdGhlbSBoZXJlLgogICAgICAgICBM
YXlvdXRVbml0IG1hcmdpblN0YXJ0V2lkdGggPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2lu
U3RhcnRMZW5ndGgsIGNvbnRhaW5lcldpZHRoKTsKICAgICAgICAgTGF5b3V0VW5pdCBtYXJnaW5F
bmRXaWR0aCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChtYXJnaW5FbmRMZW5ndGgsIGNvbnRhaW5l
cldpZHRoKTsKQEAgLTI1OTgsOCArMjU5OCw4IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlSW5s
aW5lRGlyZWN0aW9uTWEKICAgICB9IAogICAgIAogICAgIC8vIENhc2UgVGhyZWU6IFRoZSBvYmpl
Y3QgaXMgYmVpbmcgcHVzaGVkIHRvIHRoZSBlbmQgb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2sncyBh
dmFpbGFibGUgbG9naWNhbCB3aWR0aC4KLSAgICBib29sIHB1c2hUb0VuZEZyb21UZXh0QWxpZ24g
PSAhbWFyZ2luRW5kTGVuZ3RoLmlzQXV0bygpICYmICgoIWNvbnRhaW5pbmdCbG9ja1N0eWxlLmlz
TGVmdFRvUmlnaHREaXJlY3Rpb24oKSAmJiBjb250YWluaW5nQmxvY2tTdHlsZS50ZXh0QWxpZ24o
KSA9PSBXRUJLSVRfTEVGVCkKLSAgICAgICAgfHwgKGNvbnRhaW5pbmdCbG9ja1N0eWxlLmlzTGVm
dFRvUmlnaHREaXJlY3Rpb24oKSAmJiBjb250YWluaW5nQmxvY2tTdHlsZS50ZXh0QWxpZ24oKSA9
PSBXRUJLSVRfUklHSFQpKTsKKyAgICBib29sIHB1c2hUb0VuZEZyb21UZXh0QWxpZ24gPSAhbWFy
Z2luRW5kTGVuZ3RoLmlzQXV0bygpICYmICgoIWNvbnRhaW5pbmdCbG9ja1N0eWxlLmlzTGVmdFRv
UmlnaHREaXJlY3Rpb24oKSAmJiBjb250YWluaW5nQmxvY2tTdHlsZS50ZXh0QWxpZ24oKSA9PSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0KQorICAgICAgICB8fCAoY29udGFpbmluZ0Jsb2NrU3R5
bGUuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpICYmIGNvbnRhaW5pbmdCbG9ja1N0eWxlLnRleHRB
bGlnbigpID09IFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0KSk7CiAgICAgaWYgKChtYXJnaW5T
dGFydExlbmd0aC5pc0F1dG8oKSB8fCBwdXNoVG9FbmRGcm9tVGV4dEFsaWduKSAmJiBjaGlsZFdp
ZHRoIDwgY29udGFpbmVyV2lkdGgpIHsKICAgICAgICAgbWFyZ2luRW5kID0gdmFsdWVGb3JMZW5n
dGgobWFyZ2luRW5kTGVuZ3RoLCBjb250YWluZXJXaWR0aCk7CiAgICAgICAgIG1hcmdpblN0YXJ0
ID0gY29udGFpbmVyV2lkdGggLSBjaGlsZFdpZHRoIC0gbWFyZ2luRW5kOwpAQCAtMjg1Nyw3ICsy
ODU3LDcgQEAgYm9vbCBSZW5kZXJCb3g6OnNraXBDb250YWluaW5nQmxvY2tGb3JQZQogICAgIC8v
IG9iamVjdHMsIHN1Y2ggYXMgdGFibGUtY2VsbHMgYW5kIGZsZXhib3hlcywgd2lsbCBiZSB0cmVh
dGVkIGFzIGlmIHRoZXkgd2VyZQogICAgIC8vIG5vbi1hbm9ueW1vdXMuCiAgICAgaWYgKGNvbnRh
aW5pbmdCbG9jay5pc0Fub255bW91cygpKQotICAgICAgICByZXR1cm4gY29udGFpbmluZ0Jsb2Nr
LnN0eWxlKCkuZGlzcGxheSgpID09IEJMT0NLIHx8IGNvbnRhaW5pbmdCbG9jay5zdHlsZSgpLmRp
c3BsYXkoKSA9PSBJTkxJTkVfQkxPQ0s7CisgICAgICAgIHJldHVybiBjb250YWluaW5nQmxvY2su
c3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OkJsb2NrIHx8IGNvbnRhaW5pbmdCbG9j
ay5zdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lQmxvY2s7CiAgICAgCiAg
ICAgLy8gRm9yIHF1aXJrcyBtb2RlLCB3ZSBza2lwIG1vc3QgYXV0by1oZWlnaHQgY29udGFpbmlu
ZyBibG9ja3Mgd2hlbiBjb21wdXRpbmcKICAgICAvLyBwZXJjZW50YWdlcy4KQEAgLTQzODYsNyAr
NDM4Niw3IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJCb3g6OnBvc2l0aW9uRm9yUG8KICAgICAg
ICAgfQogCiAgICAgICAgIGlmICgoIXJlbmRlcmVyLmZpcnN0Q2hpbGQoKSAmJiAhcmVuZGVyZXIu
aXNJbmxpbmUoKSAmJiAhaXM8UmVuZGVyQmxvY2tGbG93PihyZW5kZXJlcikpCi0gICAgICAgICAg
ICB8fCByZW5kZXJlci5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgICAgICAg
ICAgfHwgcmVuZGVyZXIuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJs
ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIExheW91dFVuaXQgdG9wID0gcmVu
ZGVyZXIuYm9yZGVyVG9wKCkgKyByZW5kZXJlci5wYWRkaW5nVG9wKCkgKyAoaXM8UmVuZGVyVGFi
bGVSb3c+KCp0aGlzKSA/IExheW91dFVuaXQoKSA6IHJlbmRlcmVyLnkoKSk7CkBAIC00NjM0LDcg
KzQ2MzQsNyBAQCBib29sIFJlbmRlckJveDo6aXNVbnNwbGl0dGFibGVGb3JQYWdpbmF0CiAgICAg
cmV0dXJuIGlzUmVwbGFjZWQoKQogICAgICAgICB8fCBoYXNVbnNwbGl0dGFibGVTY3JvbGxpbmdP
dmVyZmxvdygpCiAgICAgICAgIHx8IChwYXJlbnQoKSAmJiBpc1dyaXRpbmdNb2RlUm9vdCgpKQot
ICAgICAgICB8fCAoaXNGbG9hdGluZygpICYmIHN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gRklSU1Rf
TEVUVEVSICYmIHN0eWxlKCkuaW5pdGlhbExldHRlckRyb3AoKSA+IDApOworICAgICAgICB8fCAo
aXNGbG9hdGluZygpICYmIHN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6OkZpcnN0TGV0
dGVyICYmIHN0eWxlKCkuaW5pdGlhbExldHRlckRyb3AoKSA+IDApOwogfQogCiBMYXlvdXRVbml0
IFJlbmRlckJveDo6bGluZUhlaWdodChib29sIC8qZmlyc3RMaW5lKi8sIExpbmVEaXJlY3Rpb25N
b2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSAvKmxpbmVQb3NpdGlvbk1vZGUqLykgY29u
c3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU4MCwyMyArMjU4
MCwyMyBAQCBMYXlvdXRSZWN0IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpsb2NhbENhCiAgICAgQ2Fy
ZXRBbGlnbm1lbnQgYWxpZ25tZW50ID0gYWxpZ25MZWZ0OwogCiAgICAgc3dpdGNoIChjdXJyZW50
U3R5bGUudGV4dEFsaWduKCkpIHsKLSAgICBjYXNlIExFRlQ6Ci0gICAgY2FzZSBXRUJLSVRfTEVG
VDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2Rl
OjpXZWJLaXRMZWZ0OgogICAgICAgICBicmVhazsKLSAgICBjYXNlIENFTlRFUjoKLSAgICBjYXNl
IFdFQktJVF9DRU5URVI6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpDZW50ZXI6CisgICAgY2Fz
ZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRDZW50ZXI6CiAgICAgICAgIGFsaWdubWVudCA9IGFsaWdu
Q2VudGVyOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFJJR0hUOgotICAgIGNhc2UgV0VCS0lU
X1JJR0hUOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CisgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRSaWdodDoKICAgICAgICAgYWxpZ25tZW50ID0gYWxpZ25SaWdodDsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBKVVNUSUZZOgotICAgIGNhc2UgVEFTVEFSVDoKKyAgICBj
YXNlIFRleHRBbGlnbk1vZGU6Okp1c3RpZnk6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpTdGFy
dDoKICAgICAgICAgaWYgKCFjdXJyZW50U3R5bGUuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQog
ICAgICAgICAgICAgYWxpZ25tZW50ID0gYWxpZ25SaWdodDsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBUQUVORDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkVuZDoKICAgICAgICAgaWYgKGN1
cnJlbnRTdHlsZS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCiAgICAgICAgICAgICBhbGlnbm1l
bnQgPSBhbGlnblJpZ2h0OwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCShyZXZpc2lvbiAyMzIxMjMpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjcxLDcgKzI3MSw3IEBAIHByb3RlY3RlZDoKICAgICBEZWNvZGluZ01vZGUg
ZGVjb2RpbmdNb2RlRm9ySW1hZ2VEcmF3KGNvbnN0IEltYWdlJiwgY29uc3QgUGFpbnRJbmZvJikg
Y29uc3Q7CiAKIHB1YmxpYzoKLSAgICAvLyBGb3IgUmVuZGVyQmxvY2tzIGFuZCBSZW5kZXJJbmxp
bmVzIHdpdGggbV9zdHlsZS0+c3R5bGVUeXBlKCkgPT0gRklSU1RfTEVUVEVSLCB0aGlzIHRyYWNr
cyB0aGVpciByZW1haW5pbmcgdGV4dCBmcmFnbWVudHMKKyAgICAvLyBGb3IgUmVuZGVyQmxvY2tz
IGFuZCBSZW5kZXJJbmxpbmVzIHdpdGggbV9zdHlsZS0+c3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6
OkZpcnN0TGV0dGVyLCB0aGlzIHRyYWNrcyB0aGVpciByZW1haW5pbmcgdGV4dCBmcmFnbWVudHMK
ICAgICBSZW5kZXJUZXh0RnJhZ21lbnQqIGZpcnN0TGV0dGVyUmVtYWluaW5nVGV4dCgpIGNvbnN0
OwogICAgIHZvaWQgc2V0Rmlyc3RMZXR0ZXJSZW1haW5pbmdUZXh0KFJlbmRlclRleHRGcmFnbWVu
dCYpOwogICAgIHZvaWQgY2xlYXJGaXJzdExldHRlclJlbWFpbmluZ1RleHQoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAJKHJldmlzaW9uIDIzMjEy
MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQwLDE0ICsxNDAsMTQgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q291bnRl
clBsYW4+IHBsYW5DbwogICAgIGF1dG8mIHN0eWxlID0gcmVuZGVyZXIuc3R5bGUoKTsKIAogICAg
IHN3aXRjaCAoc3R5bGUuc3R5bGVUeXBlKCkpIHsKLSAgICBjYXNlIE5PUFNFVURPOgorICAgIGNh
c2UgUHNldWRvSWQ6Ok5vbmU6CiAgICAgICAgIC8vIFNvbWV0aW1lcyBlbGVtZW50cyBoYXZlIG1v
cmUgdGhlbiBvbmUgcmVuZGVyZXIuIE9ubHkgdGhlIGZpcnN0IG9uZSBnZXRzIHRoZSBjb3VudGVy
CiAgICAgICAgIC8vIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL2NvdW50ZXItY3Jhc2guaHRt
bAogICAgICAgICBpZiAoZ2VuZXJhdGluZ0VsZW1lbnQtPnJlbmRlcmVyKCkgIT0gJnJlbmRlcmVy
KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBCRUZPUkU6Ci0gICAgY2FzZSBBRlRFUjoKKyAgICBjYXNlIFBzZXVkb0lkOjpCZWZvcmU6
CisgICAgY2FzZSBQc2V1ZG9JZDo6QWZ0ZXI6CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7IC8vIENvdW50ZXJzIGFyZSBmb3JiaWRkZW4g
ZnJvbSBhbGwgb3RoZXIgcHNldWRvIGVsZW1lbnRzLgpAQCAtMzg0LDcgKzM4NCw3IEBAIFN0cmlu
ZyBSZW5kZXJDb3VudGVyOjpvcmlnaW5hbFRleHQoKSBjb24KICAgICAgICAgICAgIGlmICghYmVm
b3JlQWZ0ZXJDb250YWluZXItPmlzQW5vbnltb3VzKCkgJiYgIWJlZm9yZUFmdGVyQ29udGFpbmVy
LT5pc1BzZXVkb0VsZW1lbnQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7IC8v
IFJlbmRlckNvdW50ZXJzIGFyZSByZXN0cmljdGVkIHRvIGJlZm9yZSBhbmQgYWZ0ZXIgcHNldWRv
IGVsZW1lbnRzCiAgICAgICAgICAgICBQc2V1ZG9JZCBjb250YWluZXJTdHlsZSA9IGJlZm9yZUFm
dGVyQ29udGFpbmVyLT5zdHlsZSgpLnN0eWxlVHlwZSgpOwotICAgICAgICAgICAgaWYgKChjb250
YWluZXJTdHlsZSA9PSBCRUZPUkUpIHx8IChjb250YWluZXJTdHlsZSA9PSBBRlRFUikpCisgICAg
ICAgICAgICBpZiAoKGNvbnRhaW5lclN0eWxlID09IFBzZXVkb0lkOjpCZWZvcmUpIHx8IChjb250
YWluZXJTdHlsZSA9PSBQc2V1ZG9JZDo6QWZ0ZXIpKQogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgYmVmb3JlQWZ0ZXJDb250YWluZXIgPSBiZWZvcmVBZnRlckNvbnRhaW5lci0+
cGFyZW50KCk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCShyZXZpc2lvbiAyMzIx
MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxl
Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHN0YXRpYyBMYXlvdXRV
bml0IG1hcmdpbldpZHRoRm9yQ2hpbGQoUmUKIHN0YXRpYyBib29sIGNoaWxkRG9lc05vdEFmZmVj
dFdpZHRoT3JGbGV4aW5nKFJlbmRlck9iamVjdCogY2hpbGQpCiB7CiAgICAgLy8gUG9zaXRpb25l
ZCBjaGlsZHJlbiBhbmQgY29sbGFwc2VkIGNoaWxkcmVuIGRvbid0IGFmZmVjdCB0aGUgbWluL21h
eCB3aWR0aC4KLSAgICByZXR1cm4gY2hpbGQtPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpIHx8IGNo
aWxkLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBDT0xMQVBTRTsKKyAgICByZXR1cm4gY2hpbGQt
PmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpIHx8IGNoaWxkLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9
PSBWaXNpYmlsaXR5OjpDb2xsYXBzZTsKIH0KIAogc3RhdGljIExheW91dFVuaXQgY29udGVudFdp
ZHRoRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkKQEAgLTQ4Myw3ICs0ODMsNyBAQCB2b2lkIFJl
bmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6bGF5b3V0CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIExheW91dFNpemUmIGNoaWxkTGF5b3V0RGVsdGEgPSBjaGlsZExheW91dERlbHRhc1tjaGls
ZEluZGV4KytdOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoY2hpbGQtPnN0eWxlKCku
dmlzaWJpbGl0eSgpID09IENPTExBUFNFKSB7CisgICAgICAgICAgICBpZiAoY2hpbGQtPnN0eWxl
KCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OkNvbGxhcHNlKSB7CiAgICAgICAgICAgICAg
ICAgLy8gdmlzaWJpbGl0eTogY29sbGFwc2VkIGNoaWxkcmVuIGRvIG5vdCBwYXJ0aWNpcGF0ZSBp
biBvdXIgcG9zaXRpb25pbmcuCiAgICAgICAgICAgICAgICAgLy8gQnV0IHdlIG5lZWQgdG8gbGF5
IHRoZW0gb3V0LgogICAgICAgICAgICAgICAgIGxheW91dENoaWxkSWZOZWVkZWRBcHBseWluZ0Rl
bHRhKGNoaWxkLCBjaGlsZExheW91dERlbHRhKTsKQEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lkIFJl
bmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6bGF5b3V0CiAKICAgICAgICAgICAgICAgICAgICAg
Ly8gTm93IGRpc3RyaWJ1dGUgdGhlIHNwYWNlIHRvIG9iamVjdHMuCiAgICAgICAgICAgICAgICAg
ICAgIGZvciAoUmVuZGVyQm94KiBjaGlsZCA9IGl0ZXJhdG9yLmZpcnN0KCk7IGNoaWxkICYmIHNw
YWNlQXZhaWxhYmxlVGhpc1Bhc3MgJiYgdG90YWxGbGV4OyBjaGlsZCA9IGl0ZXJhdG9yLm5leHQo
KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkLT5zdHlsZSgpLnZpc2liaWxp
dHkoKSA9PSBDT0xMQVBTRSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZC0+c3R5
bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6Q29sbGFwc2UpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChh
bGxvd2VkQ2hpbGRGbGV4KGNoaWxkLCBleHBhbmRpbmcsIGkpKSB7CkBAIC03MjcsNyArNzI3LDcg
QEAgdm9pZCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmxheW91dAogICAgICAgICAgICAg
CiAgICAgICAgICAgICBMYXlvdXRTaXplJiBjaGlsZExheW91dERlbHRhID0gY2hpbGRMYXlvdXRE
ZWx0YXNbY2hpbGRJbmRleCsrXTsKIAotICAgICAgICAgICAgaWYgKGNoaWxkLT5zdHlsZSgpLnZp
c2liaWxpdHkoKSA9PSBDT0xMQVBTRSkgeworICAgICAgICAgICAgaWYgKGNoaWxkLT5zdHlsZSgp
LnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpDb2xsYXBzZSkgewogICAgICAgICAgICAgICAg
IC8vIHZpc2liaWxpdHk6IGNvbGxhcHNlZCBjaGlsZHJlbiBkbyBub3QgcGFydGljaXBhdGUgaW4g
b3VyIHBvc2l0aW9uaW5nLgogICAgICAgICAgICAgICAgIC8vIEJ1dCB3ZSBuZWVkIHRvIGxheSB0
aGVtIGRvd24uCiAgICAgICAgICAgICAgICAgbGF5b3V0Q2hpbGRJZk5lZWRlZEFwcGx5aW5nRGVs
dGEoY2hpbGQsIGNoaWxkTGF5b3V0RGVsdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTgsNyArMTE4LDcgQEAgUGF0aCBSZW5kZXJEZXRhaWxzTWFya2VyOjpnZXRQ
YXRoKGNvbnN0IAogCiB2b2lkIFJlbmRlckRldGFpbHNNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7Ci0gICAgaWYgKHBh
aW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBzdHlsZSgpLnZpc2liaWxp
dHkoKSAhPSBWSVNJQkxFKSB7CisgICAgaWYgKHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNl
Rm9yZWdyb3VuZCB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxl
KSB7CiAgICAgICAgIFJlbmRlckJsb2NrRmxvdzo6cGFpbnQocGFpbnRJbmZvLCBwYWludE9mZnNl
dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw0OSAr
MTUxLDQ5IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBSZW5kZXJFbGVtZW50OjoKICAgICB9
CiAKICAgICBzd2l0Y2ggKHN0eWxlLmRpc3BsYXkoKSkgewotICAgIGNhc2UgTk9ORToKLSAgICBj
YXNlIENPTlRFTlRTOgorICAgIGNhc2UgRGlzcGxheVR5cGU6Ok5vbmU6CisgICAgY2FzZSBEaXNw
bGF5VHlwZTo6Q29udGVudHM6CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNhc2UgSU5M
SU5FOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OklubGluZToKICAgICAgICAgaWYgKGNyZWF0aW9u
VHlwZSA9PSBDcmVhdGVBbGxSZW5kZXJlcnMpCiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUmVu
ZGVyZXI8UmVuZGVySW5saW5lPihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSk7CiAgICAgICAgIEZB
TExUSFJPVUdIOyAvLyBGaWVsZHNldHMgc2hvdWxkIG1ha2UgYSBibG9jayBmbG93IGlmIGRpc3Bs
YXk6aW5saW5lIGlzIHNldC4KLSAgICBjYXNlIEJMT0NLOgotICAgIGNhc2UgSU5MSU5FX0JMT0NL
OgotICAgIGNhc2UgQ09NUEFDVDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpCbG9jazoKKyAgICBj
YXNlIERpc3BsYXlUeXBlOjpJbmxpbmVCbG9jazoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpDb21w
YWN0OgogICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyQmxvY2tGbG93PihlbGVt
ZW50LCBXVEZNb3ZlKHN0eWxlKSk7Ci0gICAgY2FzZSBMSVNUX0lURU06CisgICAgY2FzZSBEaXNw
bGF5VHlwZTo6TGlzdEl0ZW06CiAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJM
aXN0SXRlbT4oZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpOwotICAgIGNhc2UgRkxFWDoKLSAgICBj
YXNlIElOTElORV9GTEVYOgotICAgIGNhc2UgV0VCS0lUX0ZMRVg6Ci0gICAgY2FzZSBXRUJLSVRf
SU5MSU5FX0ZMRVg6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6RmxleDoKKyAgICBjYXNlIERpc3Bs
YXlUeXBlOjpJbmxpbmVGbGV4OgorICAgIGNhc2UgRGlzcGxheVR5cGU6OldlYktpdEZsZXg6Cisg
ICAgY2FzZSBEaXNwbGF5VHlwZTo6V2ViS2l0SW5saW5lRmxleDoKICAgICAgICAgcmV0dXJuIGNy
ZWF0ZVJlbmRlcmVyPFJlbmRlckZsZXhpYmxlQm94PihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSk7
Ci0gICAgY2FzZSBHUklEOgotICAgIGNhc2UgSU5MSU5FX0dSSUQ6CisgICAgY2FzZSBEaXNwbGF5
VHlwZTo6R3JpZDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpJbmxpbmVHcmlkOgogICAgICAgICBy
ZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyR3JpZD4oZWxlbWVudCwgV1RGTW92ZShzdHlsZSkp
OwotICAgIGNhc2UgQk9YOgotICAgIGNhc2UgSU5MSU5FX0JPWDoKKyAgICBjYXNlIERpc3BsYXlU
eXBlOjpCb3g6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6SW5saW5lQm94OgogICAgICAgICByZXR1
cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94PihlbGVtZW50LCBX
VEZNb3ZlKHN0eWxlKSk7CiAgICAgZGVmYXVsdDogewogICAgICAgICBpZiAoY3JlYXRpb25UeXBl
ID09IE9ubHlDcmVhdGVCbG9ja0FuZEZsZXhib3hSZW5kZXJlcnMpCiAgICAgICAgICAgICByZXR1
cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyQmxvY2tGbG93PihlbGVtZW50LCBXVEZNb3ZlKHN0eWxl
KSk7CiAgICAgICAgIHN3aXRjaCAoc3R5bGUuZGlzcGxheSgpKSB7Ci0gICAgICAgIGNhc2UgVEFC
TEU6Ci0gICAgICAgIGNhc2UgSU5MSU5FX1RBQkxFOgorICAgICAgICBjYXNlIERpc3BsYXlUeXBl
OjpUYWJsZToKKyAgICAgICAgY2FzZSBEaXNwbGF5VHlwZTo6SW5saW5lVGFibGU6CiAgICAgICAg
ICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyVGFibGU+KGVsZW1lbnQsIFdURk1vdmUo
c3R5bGUpKTsKLSAgICAgICAgY2FzZSBUQUJMRV9DRUxMOgorICAgICAgICBjYXNlIERpc3BsYXlU
eXBlOjpUYWJsZUNlbGw6CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVy
VGFibGVDZWxsPihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSk7Ci0gICAgICAgIGNhc2UgVEFCTEVf
Q0FQVElPTjoKKyAgICAgICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFibGVDYXB0aW9uOgogICAgICAg
ICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclRhYmxlQ2FwdGlvbj4oZWxlbWVudCwg
V1RGTW92ZShzdHlsZSkpOwotICAgICAgICBjYXNlIFRBQkxFX1JPV19HUk9VUDoKLSAgICAgICAg
Y2FzZSBUQUJMRV9IRUFERVJfR1JPVVA6Ci0gICAgICAgIGNhc2UgVEFCTEVfRk9PVEVSX0dST1VQ
OgorICAgICAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZVJvd0dyb3VwOgorICAgICAgICBjYXNl
IERpc3BsYXlUeXBlOjpUYWJsZUhlYWRlckdyb3VwOgorICAgICAgICBjYXNlIERpc3BsYXlUeXBl
OjpUYWJsZUZvb3Rlckdyb3VwOgogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJl
bmRlclRhYmxlU2VjdGlvbj4oZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpOwotICAgICAgICBjYXNl
IFRBQkxFX1JPVzoKKyAgICAgICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFibGVSb3c6CiAgICAgICAg
ICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyVGFibGVSb3c+KGVsZW1lbnQsIFdURk1v
dmUoc3R5bGUpKTsKLSAgICAgICAgY2FzZSBUQUJMRV9DT0xVTU5fR1JPVVA6Ci0gICAgICAgIGNh
c2UgVEFCTEVfQ09MVU1OOgorICAgICAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZUNvbHVtbkdy
b3VwOgorICAgICAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZUNvbHVtbjoKICAgICAgICAgICAg
IHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJUYWJsZUNvbD4oZWxlbWVudCwgV1RGTW92ZShz
dHlsZSkpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMTUsNyAr
MjE1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5kZXJFbGVtZQogICAgICAg
ICBSZW5kZXJCbG9jayogZmlyc3RMaW5lQmxvY2sgPSByZW5kZXJlckZvckZpcnN0TGluZVN0eWxl
LmZpcnN0TGluZUJsb2NrKCk7CiAgICAgICAgIGlmICghZmlyc3RMaW5lQmxvY2spCiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgYXV0byogZmlyc3RMaW5lU3R5bGUgPSBmaXJz
dExpbmVCbG9jay0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUoRklSU1RfTElORSwgJnN0eWxlKCkpOwor
ICAgICAgICBhdXRvKiBmaXJzdExpbmVTdHlsZSA9IGZpcnN0TGluZUJsb2NrLT5nZXRDYWNoZWRQ
c2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5lLCAmc3R5bGUoKSk7CiAgICAgICAgIGlmICgh
Zmlyc3RMaW5lU3R5bGUpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0
dXJuIFJlbmRlclN0eWxlOjpjbG9uZVB0cigqZmlyc3RMaW5lU3R5bGUpOwpAQCAtMjM3LDcgKzIz
Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVyRWxlbWUKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIGF1dG8gc3R5bGUgPSBjb21wb3NlZFRyZWVQ
YXJlbnRFbGVtZW50LT5zdHlsZVJlc29sdmVyKCkuc3R5bGVGb3JFbGVtZW50KCpjb21wb3NlZFRy
ZWVQYXJlbnRFbGVtZW50LCAmcGFyZW50U3R5bGUpLnJlbmRlclN0eWxlOwotICAgICAgICBBU1NF
UlQoc3R5bGUtPmRpc3BsYXkoKSA9PSBDT05URU5UUyk7CisgICAgICAgIEFTU0VSVChzdHlsZS0+
ZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpDb250ZW50cyk7CiAKICAgICAgICAgLy8gV2UgYWN0
IGFzIGlmIHRoZXJlIHdhcyBhbiB1bnN0eWxlZCA8c3Bhbj4gYXJvdW5kIHRoZSB0ZXh0IG5vZGUu
IE9ubHkgc3R5bGluZyBoYXBwZW5zIHZpYSBpbmhlcml0YW5jZS4KICAgICAgICAgYXV0byBmaXJz
dExpbmVTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVQdHIoKTsKQEAgLTY1MCw3ICs2NTAsNyBA
QCB2b2lkIFJlbmRlckVsZW1lbnQ6OnByb3BhZ2F0ZVN0eWxlVG9Bbm9uCiB7CiAgICAgLy8gRklY
TUU6IFdlIGNvdWxkIHNhdmUgdGhpcyBjYWxsIHdoZW4gdGhlIGNoYW5nZSBvbmx5IGFmZmVjdGVk
IG5vbi1pbmhlcml0ZWQgcHJvcGVydGllcy4KICAgICBmb3IgKGF1dG8mIGVsZW1lbnRDaGlsZCA6
IGNoaWxkcmVuT2ZUeXBlPFJlbmRlckVsZW1lbnQ+KCp0aGlzKSkgewotICAgICAgICBpZiAoIWVs
ZW1lbnRDaGlsZC5pc0Fub255bW91cygpIHx8IGVsZW1lbnRDaGlsZC5zdHlsZSgpLnN0eWxlVHlw
ZSgpICE9IE5PUFNFVURPKQorICAgICAgICBpZiAoIWVsZW1lbnRDaGlsZC5pc0Fub255bW91cygp
IHx8IGVsZW1lbnRDaGlsZC5zdHlsZSgpLnN0eWxlVHlwZSgpICE9IFBzZXVkb0lkOjpOb25lKQog
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKHByb3BhZ2F0aW9uVHlwZSA9PSBQ
cm9wYWdhdGVUb0Jsb2NrQ2hpbGRyZW5Pbmx5ICYmICFpczxSZW5kZXJCbG9jaz4oZWxlbWVudENo
aWxkKSkKQEAgLTcyNCw5ICs3MjQsOSBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OnN0eWxlV2lsbENo
YW5nZShTdHlsCiAgICAgICAgIC8vIEtlZXAgbGF5ZXIgaGllcmFyY2h5IHZpc2liaWxpdHkgYml0
cyB1cCB0byBkYXRlIGlmIHZpc2liaWxpdHkgY2hhbmdlcy4KICAgICAgICAgaWYgKG1fc3R5bGUu
dmlzaWJpbGl0eSgpICE9IG5ld1N0eWxlLnZpc2liaWxpdHkoKSkgewogICAgICAgICAgICAgaWYg
KFJlbmRlckxheWVyKiBsYXllciA9IGVuY2xvc2luZ0xheWVyKCkpIHsKLSAgICAgICAgICAgICAg
ICBpZiAobmV3U3R5bGUudmlzaWJpbGl0eSgpID09IFZJU0lCTEUpCisgICAgICAgICAgICAgICAg
aWYgKG5ld1N0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAg
ICAgICAgICAgICAgICBsYXllci0+c2V0SGFzVmlzaWJsZUNvbnRlbnQoKTsKLSAgICAgICAgICAg
ICAgICBlbHNlIGlmIChsYXllci0+aGFzVmlzaWJsZUNvbnRlbnQoKSAmJiAodGhpcyA9PSAmbGF5
ZXItPnJlbmRlcmVyKCkgfHwgbGF5ZXItPnJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkg
IT0gVklTSUJMRSkpIHsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChsYXllci0+aGFzVmlzaWJs
ZUNvbnRlbnQoKSAmJiAodGhpcyA9PSAmbGF5ZXItPnJlbmRlcmVyKCkgfHwgbGF5ZXItPnJlbmRl
cmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkpIHsKICAg
ICAgICAgICAgICAgICAgICAgbGF5ZXItPmRpcnR5VmlzaWJsZUNvbnRlbnRTdGF0dXMoKTsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKGRpZmYgPiBTdHlsZURpZmZlcmVuY2U6OlJlcGFpbnRMYXll
cikKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGFpbnQoKTsKQEAgLTc1MSw3ICs3NTEsNyBA
QCB2b2lkIFJlbmRlckVsZW1lbnQ6OnN0eWxlV2lsbENoYW5nZShTdHlsCiAgICAgICAgICAgICBz
ZXRGbG9hdGluZyhmYWxzZSk7CiAgICAgICAgICAgICBjbGVhclBvc2l0aW9uZWRTdGF0ZSgpOwog
ICAgICAgICB9Ci0gICAgICAgIGlmIChuZXdTdHlsZS5oYXNQc2V1ZG9TdHlsZShGSVJTVF9MSU5F
KSB8fCBvbGRTdHlsZS0+aGFzUHNldWRvU3R5bGUoRklSU1RfTElORSkpCisgICAgICAgIGlmIChu
ZXdTdHlsZS5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKSB8fCBvbGRTdHlsZS0+
aGFzUHNldWRvU3R5bGUoUHNldWRvSWQ6OkZpcnN0TGluZSkpCiAgICAgICAgICAgICBpbnZhbGlk
YXRlQ2FjaGVkRmlyc3RMaW5lU3R5bGUoKTsKIAogICAgICAgICBzZXRIb3Jpem9udGFsV3JpdGlu
Z01vZGUodHJ1ZSk7CkBAIC04NTMsNyArODUzLDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50OjppbnNl
cnRlZEludG9UcmVlKCkKIAogICAgIC8vIElmIHx0aGlzfCBpcyB2aXNpYmxlIGJ1dCB0aGlzIG9i
amVjdCB3YXMgbm90LCB0ZWxsIHRoZSBsYXllciBpdCBoYXMgc29tZSB2aXNpYmxlIGNvbnRlbnQK
ICAgICAvLyB0aGF0IG5lZWRzIHRvIGJlIGRyYXduIGFuZCBsYXllciB2aXNpYmlsaXR5IG9wdGlt
aXphdGlvbiBjYW4ndCBiZSB1c2VkCi0gICAgaWYgKHBhcmVudCgpLT5zdHlsZSgpLnZpc2liaWxp
dHkoKSAhPSBWSVNJQkxFICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUgJiYgIWhh
c0xheWVyKCkpIHsKKyAgICBpZiAocGFyZW50KCktPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZp
c2liaWxpdHk6OlZpc2libGUgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6
VmlzaWJsZSAmJiAhaGFzTGF5ZXIoKSkgewogICAgICAgICBpZiAoIWxheWVyKQogICAgICAgICAg
ICAgbGF5ZXIgPSBwYXJlbnQoKS0+ZW5jbG9zaW5nTGF5ZXIoKTsKICAgICAgICAgaWYgKGxheWVy
KQpAQCAtODY3LDcgKzg2Nyw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6d2lsbEJlUmVtb3ZlZEZy
b21UcmUKIHsKICAgICAvLyBJZiB3ZSByZW1vdmUgYSB2aXNpYmxlIGNoaWxkIGZyb20gYW4gaW52
aXNpYmxlIHBhcmVudCwgd2UgZG9uJ3Qga25vdyB0aGUgbGF5ZXIgdmlzaWJpbGl0eSBhbnkgbW9y
ZS4KICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSBudWxscHRyOwotICAgIGlmIChwYXJlbnQoKS0+
c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9
PSBWSVNJQkxFICYmICFoYXNMYXllcigpKSB7CisgICAgaWYgKHBhcmVudCgpLT5zdHlsZSgpLnZp
c2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmIHN0eWxlKCkudmlzaWJpbGl0eSgp
ID09IFZpc2liaWxpdHk6OlZpc2libGUgJiYgIWhhc0xheWVyKCkpIHsKICAgICAgICAgaWYgKChs
YXllciA9IHBhcmVudCgpLT5lbmNsb3NpbmdMYXllcigpKSkKICAgICAgICAgICAgIGxheWVyLT5k
aXJ0eVZpc2libGVDb250ZW50U3RhdHVzKCk7CiAgICAgfQpAQCAtMTA3OSw3ICsxMDc5LDcgQEAg
Ym9vbCBSZW5kZXJFbGVtZW50OjpyZXBhaW50QWZ0ZXJMYXlvdXRJZgogCiAgICAgYm9vbCBmdWxs
UmVwYWludCA9IHNlbGZOZWVkc0xheW91dCgpOwogICAgIC8vIFByZXN1bWFibHkgYSBiYWNrZ3Jv
dW5kIG9yIGEgYm9yZGVyIGV4aXN0cyBpZiBib3JkZXItZml0OmxpbmVzIHdhcyBzcGVjaWZpZWQu
Ci0gICAgaWYgKCFmdWxsUmVwYWludCAmJiBzdHlsZSgpLmJvcmRlckZpdCgpID09IEJvcmRlckZp
dExpbmVzKQorICAgIGlmICghZnVsbFJlcGFpbnQgJiYgc3R5bGUoKS5ib3JkZXJGaXQoKSA9PSBC
b3JkZXJGaXQ6OkxpbmVzKQogICAgICAgICBmdWxsUmVwYWludCA9IHRydWU7CiAgICAgaWYgKCFm
dWxsUmVwYWludCkgewogICAgICAgICAvLyBUaGlzIEFTU0VSVCBmYWlscyBkdWUgdG8gYW5pbWF0
aW9ucy4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzA0OApA
QCAtMTIwOCw3ICsxMjA4LDcgQEAgYm9vbCBSZW5kZXJFbGVtZW50Ojppc1Zpc2libGVJbkRvY3Vt
ZW50UgogewogICAgIGlmIChkb2N1bWVudCgpLmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAh
PSBWSVNJQkxFKQorICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpW
aXNpYmxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKHZpZXcoKS5mcmFtZVZpZXco
KS5pc09mZnNjcmVlbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzIwLDcgKzEzMjAs
NyBAQCBib29sIFJlbmRlckVsZW1lbnQ6OnJlcGFpbnRGb3JQYXVzZWRJbWFnCiAKIGNvbnN0IFJl
bmRlclN0eWxlKiBSZW5kZXJFbGVtZW50OjpnZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZCBw
c2V1ZG8sIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSkgY29uc3QKIHsKLSAgICBpZiAo
cHNldWRvIDwgRklSU1RfSU5URVJOQUxfUFNFVURPSUQgJiYgIXN0eWxlKCkuaGFzUHNldWRvU3R5
bGUocHNldWRvKSkKKyAgICBpZiAocHNldWRvIDwgUHNldWRvSWQ6OkZpcnN0SW50ZXJuYWxQc2V1
ZG9JZCAmJiAhc3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShwc2V1ZG8pKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIFJlbmRlclN0eWxlKiBjYWNoZWRTdHlsZSA9IHN0eWxlKCkuZ2V0Q2Fj
aGVkUHNldWRvU3R5bGUocHNldWRvKTsKQEAgLTEzMzUsNyArMTMzNSw3IEBAIGNvbnN0IFJlbmRl
clN0eWxlKiBSZW5kZXJFbGVtZW50OjpnZXRDYWMKIAogc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBSZW5kZXJFbGVtZW50OjpnZXRVbmNhY2hlZFBzZXVkb1N0eWxlKGNvbnN0IFBzZXVkb1N0
eWxlUmVxdWVzdCYgcHNldWRvU3R5bGVSZXF1ZXN0LCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50
U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBvd25TdHlsZSkgY29uc3QKIHsKLSAgICBpZiAocHNl
dWRvU3R5bGVSZXF1ZXN0LnBzZXVkb0lkIDwgRklSU1RfSU5URVJOQUxfUFNFVURPSUQgJiYgIW93
blN0eWxlICYmICFzdHlsZSgpLmhhc1BzZXVkb1N0eWxlKHBzZXVkb1N0eWxlUmVxdWVzdC5wc2V1
ZG9JZCkpCisgICAgaWYgKHBzZXVkb1N0eWxlUmVxdWVzdC5wc2V1ZG9JZCA8IFBzZXVkb0lkOjpG
aXJzdEludGVybmFsUHNldWRvSWQgJiYgIW93blN0eWxlICYmICFzdHlsZSgpLmhhc1BzZXVkb1N0
eWxlKHBzZXVkb1N0eWxlUmVxdWVzdC5wc2V1ZG9JZCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgaWYgKCFwYXJlbnRTdHlsZSkgewpAQCAtMTM4NCwxMSArMTM4NCwxMSBAQCBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRlckVsZW1lCiAgICAgaWYgKFNoYWRvd1Jvb3Qq
IHJvb3QgPSBlbGVtZW50KCktPmNvbnRhaW5pbmdTaGFkb3dSb290KCkpIHsKICAgICAgICAgaWYg
KHJvb3QtPm1vZGUoKSA9PSBTaGFkb3dSb290TW9kZTo6VXNlckFnZW50KSB7CiAgICAgICAgICAg
ICBpZiAoRWxlbWVudCogc2hhZG93SG9zdCA9IGVsZW1lbnQoKS0+c2hhZG93SG9zdCgpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBzaGFkb3dIb3N0LT5yZW5kZXJlcigpLT5nZXRVbmNhY2hlZFBz
ZXVkb1N0eWxlKFBzZXVkb1N0eWxlUmVxdWVzdChTRUxFQ1RJT04pKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gc2hhZG93SG9zdC0+cmVuZGVyZXIoKS0+Z2V0VW5jYWNoZWRQc2V1ZG9TdHlsZShQ
c2V1ZG9TdHlsZVJlcXVlc3QoUHNldWRvSWQ6OlNlbGVjdGlvbikpOwogICAgICAgICB9CiAgICAg
fQogCi0gICAgcmV0dXJuIGdldFVuY2FjaGVkUHNldWRvU3R5bGUoUHNldWRvU3R5bGVSZXF1ZXN0
KFNFTEVDVElPTikpOworICAgIHJldHVybiBnZXRVbmNhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb1N0
eWxlUmVxdWVzdChQc2V1ZG9JZDo6U2VsZWN0aW9uKSk7CiB9CiAKIENvbG9yIFJlbmRlckVsZW1l
bnQ6OnNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw3
ICsxNDAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1
cm4gc3R5bGUoKS5vcGFjaXR5KCkgPCAxLjBmOyB9CiAgICAgZmxvYXQgb3BhY2l0eSgpIGNvbnN0
IHsgcmV0dXJuIHN0eWxlKCkub3BhY2l0eSgpOyB9CiAKLSAgICBib29sIHZpc2libGVUb0hpdFRl
c3RpbmcoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFICYm
IHN0eWxlKCkucG9pbnRlckV2ZW50cygpICE9IFBFX05PTkU7IH0KKyAgICBib29sIHZpc2libGVU
b0hpdFRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNp
YmlsaXR5OjpWaXNpYmxlICYmIHN0eWxlKCkucG9pbnRlckV2ZW50cygpICE9IFBvaW50ZXJFdmVu
dHM6Ok5vbmU7IH0KIAogICAgIGJvb2wgaGFzQmFja2dyb3VuZCgpIGNvbnN0IHsgcmV0dXJuIHN0
eWxlKCkuaGFzQmFja2dyb3VuZCgpOyB9CiAgICAgYm9vbCBoYXNNYXNrKCkgY29uc3QgeyByZXR1
cm4gc3R5bGUoKS5oYXNNYXNrKCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAkocmV2aXNpb24gMjMyMTIzKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTE0LDcgKzExNCw3IEBAIGludCBSZW5kZXJGaWxlVXBsb2FkQ29u
dHJvbDo6bWF4RmlsZW5hbWUKIAogdm9pZCBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cGFpbnRP
YmplY3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNl
dCkKIHsKLSAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAo
c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0
dXJuOwogICAgIAogICAgIC8vIFB1c2ggYSBjbGlwLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03MSw3ICs3MSw3IEBAIHN0YXRpYyBSZW5kZXJTdHlsZSBjcmVhdGVGdWxsU2NyZWVuU3R5
bGUKICAgICBmdWxsc2NyZWVuU3R5bGUuc2V0Rm9udERlc2NyaXB0aW9uKHsgfSk7CiAgICAgZnVs
bHNjcmVlblN0eWxlLmZvbnRDYXNjYWRlKCkudXBkYXRlKG51bGxwdHIpOwogCi0gICAgZnVsbHNj
cmVlblN0eWxlLnNldERpc3BsYXkoRkxFWCk7CisgICAgZnVsbHNjcmVlblN0eWxlLnNldERpc3Bs
YXkoRGlzcGxheVR5cGU6OkZsZXgpOwogICAgIGZ1bGxzY3JlZW5TdHlsZS5zZXRKdXN0aWZ5Q29u
dGVudFBvc2l0aW9uKENvbnRlbnRQb3NpdGlvbjo6Q2VudGVyKTsKICAgICBmdWxsc2NyZWVuU3R5
bGUuc2V0QWxpZ25JdGVtc1Bvc2l0aW9uKEl0ZW1Qb3NpdGlvbjo6Q2VudGVyKTsKICAgICBmdWxs
c2NyZWVuU3R5bGUuc2V0RmxleERpcmVjdGlvbihGbGV4RGlyZWN0aW9uOjpDb2x1bW4pOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAkocmV2aXNpb24gMjMyMTIz
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MjQsOCArNTI0LDggQEAgdW5zaWduZWQgUmVuZGVyR3JpZDo6Y29tcHV0ZUF1dG9S
ZXBlYXRUcgogc3RkOjp1bmlxdWVfcHRyPE9yZGVyZWRUcmFja0luZGV4U2V0PiBSZW5kZXJHcmlk
Ojpjb21wdXRlRW1wdHlUcmFja3NGb3JBdXRvUmVwZWF0KEdyaWQmIGdyaWQsIEdyaWRUcmFja1Np
emluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CiB7CiAgICAgYm9vbCBpc1Jvd0F4aXMgPSBk
aXJlY3Rpb24gPT0gRm9yQ29sdW1uczsKLSAgICBpZiAoKGlzUm93QXhpcyAmJiBzdHlsZSgpLmdy
aWRBdXRvUmVwZWF0Q29sdW1uc1R5cGUoKSAhPSBBdXRvRml0KQotICAgICAgICB8fCAoIWlzUm93
QXhpcyAmJiBzdHlsZSgpLmdyaWRBdXRvUmVwZWF0Um93c1R5cGUoKSAhPSBBdXRvRml0KSkKKyAg
ICBpZiAoKGlzUm93QXhpcyAmJiBzdHlsZSgpLmdyaWRBdXRvUmVwZWF0Q29sdW1uc1R5cGUoKSAh
PSBBdXRvUmVwZWF0VHlwZTo6Rml0KQorICAgICAgICB8fCAoIWlzUm93QXhpcyAmJiBzdHlsZSgp
LmdyaWRBdXRvUmVwZWF0Um93c1R5cGUoKSAhPSBBdXRvUmVwZWF0VHlwZTo6Rml0KSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8T3JkZXJlZFRyYWNrSW5k
ZXhTZXQ+IGVtcHR5VHJhY2tJbmRleGVzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTcsNyArMjk3LDcgQEAg
dm9pZCBSZW5kZXJJbWFnZTo6cmVwYWludE9yTWFya0ZvckxheW91dAogewogI2lmIEVOQUJMRShD
U1NfSU1BR0VfUkVTT0xVVElPTikKICAgICBkb3VibGUgc2NhbGUgPSBzdHlsZSgpLmltYWdlUmVz
b2x1dGlvbigpOwotICAgIGlmIChzdHlsZSgpLmltYWdlUmVzb2x1dGlvblNuYXAoKSA9PSBJbWFn
ZVJlc29sdXRpb25TbmFwUGl4ZWxzKQorICAgIGlmIChzdHlsZSgpLmltYWdlUmVzb2x1dGlvblNu
YXAoKSA9PSBJbWFnZVJlc29sdXRpb25TbmFwOjpQaXhlbHMpCiAgICAgICAgIHNjYWxlID0gcm91
bmRGb3JJbXByZWNpc2VDb252ZXJzaW9uPGludD4oc2NhbGUpOwogICAgIGlmIChzY2FsZSA8PSAw
KQogICAgICAgICBzY2FsZSA9IDE7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW5saW5lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW5saW5lLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklubGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgdm9p
ZCBSZW5kZXJJbmxpbmU6OndpbGxCZURlc3Ryb3llZCgpCiB7CiAjaWYgIUFTU0VSVF9ESVNBQkxF
RAogICAgIC8vIE1ha2Ugc3VyZSB3ZSBkbyBub3QgcmV0YWluICJ0aGlzIiBpbiB0aGUgY29udGlu
dWF0aW9uIG91dGxpbmUgdGFibGUgbWFwIG9mIG91ciBjb250YWluaW5nIGJsb2Nrcy4KLSAgICBp
ZiAocGFyZW50KCkgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSAmJiBoYXNPdXRs
aW5lKCkpIHsKKyAgICBpZiAocGFyZW50KCkgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlz
aWJpbGl0eTo6VmlzaWJsZSAmJiBoYXNPdXRsaW5lKCkpIHsKICAgICAgICAgYm9vbCBjb250YWlu
aW5nQmxvY2tQYWludHNDb250aW51YXRpb25PdXRsaW5lID0gY29udGludWF0aW9uKCkgfHwgaXND
b250aW51YXRpb24oKTsKICAgICAgICAgaWYgKGNvbnRhaW5pbmdCbG9ja1BhaW50c0NvbnRpbnVh
dGlvbk91dGxpbmUpIHsKICAgICAgICAgICAgIGlmIChSZW5kZXJCbG9jayogY2IgPSBjb250YWlu
aW5nQmxvY2soKSkgewpAQCAtMTQ4LDcgKzE0OCw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVN0eWxl
T2ZBbm9ueW1vdXNCbG9ja0MKICAgICAgICAgUmVuZGVySW5saW5lKiBjb250aW51YXRpb24gPSBi
bG9jay5pbmxpbmVDb250aW51YXRpb24oKTsKICAgICAgICAgaWYgKG9sZFN0eWxlLT5oYXNJbkZs
b3dQb3NpdGlvbigpICYmIGluRmxvd1Bvc2l0aW9uZWRJbmxpbmVBbmNlc3Rvcihjb250aW51YXRp
b24pKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGF1dG8gYmxvY2tTdHlsZSA9IFJl
bmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KGJsb2NrLnN0eWxlKCks
IEJMT0NLKTsKKyAgICAgICAgYXV0byBibG9ja1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFu
b255bW91c1N0eWxlV2l0aERpc3BsYXkoYmxvY2suc3R5bGUoKSwgRGlzcGxheVR5cGU6OkJsb2Nr
KTsKICAgICAgICAgYmxvY2tTdHlsZS5zZXRQb3NpdGlvbihuZXdTdHlsZS0+cG9zaXRpb24oKSk7
CiAgICAgICAgIGJsb2NrLnNldFN0eWxlKFdURk1vdmUoYmxvY2tTdHlsZSkpOwogICAgIH0KQEAg
LTIxMSw3ICsyMTEsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6dXBkYXRlQWx3YXlzQ3JlYXRlTGlu
CiAgICAgYm9vbCBhbHdheXNDcmVhdGVMaW5lQm94ZXMgPSAocGFyZW50UmVuZGVySW5saW5lICYm
IHBhcmVudFJlbmRlcklubGluZS0+YWx3YXlzQ3JlYXRlTGluZUJveGVzKCkpCiAgICAgICAgIHx8
IChwYXJlbnRSZW5kZXJJbmxpbmUgJiYgcGFyZW50U3R5bGUtPnZlcnRpY2FsQWxpZ24oKSAhPSBW
ZXJ0aWNhbEFsaWduOjpCYXNlbGluZSkKICAgICAgICAgfHwgc3R5bGUoKS52ZXJ0aWNhbEFsaWdu
KCkgIT0gVmVydGljYWxBbGlnbjo6QmFzZWxpbmUKLSAgICAgICAgfHwgc3R5bGUoKS50ZXh0RW1w
aGFzaXNNYXJrKCkgIT0gVGV4dEVtcGhhc2lzTWFya05vbmUKKyAgICAgICAgfHwgc3R5bGUoKS50
ZXh0RW1waGFzaXNNYXJrKCkgIT0gVGV4dEVtcGhhc2lzTWFyazo6Tm9uZQogICAgICAgICB8fCAo
Y2hlY2tGb250cyAmJiAoIXBhcmVudFN0eWxlLT5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzKCku
aGFzSWRlbnRpY2FsQXNjZW50RGVzY2VudEFuZExpbmVHYXAoc3R5bGUoKS5mb250Q2FzY2FkZSgp
LmZvbnRNZXRyaWNzKCkpCiAgICAgICAgIHx8IHBhcmVudFN0eWxlLT5saW5lSGVpZ2h0KCkgIT0g
c3R5bGUoKS5saW5lSGVpZ2h0KCkpKTsKIApAQCAtODE4LDcgKzgxOCw3IEBAIExheW91dFJlY3Qg
UmVuZGVySW5saW5lOjpsaW5lc1Zpc3VhbE92ZXIKIExheW91dFJlY3QgUmVuZGVySW5saW5lOjpj
bGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAogewogICAgIC8vIE9ubHkgZmlyc3QtbGV0dGVyIHJl
bmRlcmVycyBhcmUgYWxsb3dlZCBpbiBoZXJlIGR1cmluZyBsYXlvdXQuIFRoZXkgbXV0YXRlIHRo
ZSB0cmVlIHRyaWdnZXJpbmcgcmVwYWludHMuCi0gICAgQVNTRVJUKCF2aWV3KCkuZnJhbWVWaWV3
KCkubGF5b3V0Q29udGV4dCgpLmlzUGFpbnRPZmZzZXRDYWNoZUVuYWJsZWQoKSB8fCBzdHlsZSgp
LnN0eWxlVHlwZSgpID09IEZJUlNUX0xFVFRFUiB8fCBoYXNTZWxmUGFpbnRpbmdMYXllcigpKTsK
KyAgICBBU1NFUlQoIXZpZXcoKS5mcmFtZVZpZXcoKS5sYXlvdXRDb250ZXh0KCkuaXNQYWludE9m
ZnNldENhY2hlRW5hYmxlZCgpIHx8IHN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6OkZp
cnN0TGV0dGVyIHx8IGhhc1NlbGZQYWludGluZ0xheWVyKCkpOwogCiAgICAgaWYgKCFmaXJzdExp
bmVCb3hJbmNsdWRpbmdDdWxsaW5nKCkgJiYgIWNvbnRpbnVhdGlvbigpKQogICAgICAgICByZXR1
cm4gTGF5b3V0UmVjdCgpOwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6
OnBhaW50T3V0bGluZUZvckxpbmUoRwogdm9pZCBSZW5kZXJJbmxpbmU6OmFkZEFubm90YXRlZFJl
Z2lvbnMoVmVjdG9yPEFubm90YXRlZFJlZ2lvblZhbHVlPiYgcmVnaW9ucykKIHsKICAgICAvLyBD
b252ZXJ0IHRoZSBzdHlsZSByZWdpb25zIHRvIGFic29sdXRlIGNvb3JkaW5hdGVzLgotICAgIGlm
IChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChzdHlsZSgpLnZpc2li
aWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1cm47CiAKICAgICBj
b25zdCBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+JiBzdHlsZVJlZ2lvbnMgPSBzdHlsZSgp
LmRhc2hib2FyZFJlZ2lvbnMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM1LDcgKzMzNSw3IEBAIFJlbmRl
ckxheWVyOjpSZW5kZXJMYXllcihSZW5kZXJMYXllck1vZGUKIAogICAgIGlmICghcmVuZGVyZXIo
KS5maXJzdENoaWxkKCkpIHsKICAgICAgICAgbV92aXNpYmxlQ29udGVudFN0YXR1c0RpcnR5ID0g
ZmFsc2U7Ci0gICAgICAgIG1faGFzVmlzaWJsZUNvbnRlbnQgPSByZW5kZXJlcigpLnN0eWxlKCku
dmlzaWJpbGl0eSgpID09IFZJU0lCTEU7CisgICAgICAgIG1faGFzVmlzaWJsZUNvbnRlbnQgPSBy
ZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGU7CiAg
ICAgfQogCiAgICAgaWYgKEVsZW1lbnQqIGVsZW1lbnQgPSByZW5kZXJlcigpLmVsZW1lbnQoKSkg
ewpAQCAtMTI2NCwxNCArMTI2NCwxNCBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVEZXNjZW5k
YW50RGVwZW5kCiAgICAgfQogCiAgICAgaWYgKG1fdmlzaWJsZUNvbnRlbnRTdGF0dXNEaXJ0eSkg
ewotICAgICAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxF
KQorICAgICAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmls
aXR5OjpWaXNpYmxlKQogICAgICAgICAgICAgbV9oYXNWaXNpYmxlQ29udGVudCA9IHRydWU7CiAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgLy8gbGF5ZXIgbWF5IGJlIGhpZGRlbiBidXQgc3Rp
bGwgaGF2ZSBzb21lIHZpc2libGUgY29udGVudCwgY2hlY2sgZm9yIHRoaXMKICAgICAgICAgICAg
IG1faGFzVmlzaWJsZUNvbnRlbnQgPSBmYWxzZTsKICAgICAgICAgICAgIFJlbmRlck9iamVjdCog
ciA9IHJlbmRlcmVyKCkuZmlyc3RDaGlsZCgpOwogICAgICAgICAgICAgd2hpbGUgKHIpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSAmJiAh
ci0+aGFzTGF5ZXIoKSkgeworICAgICAgICAgICAgICAgIGlmIChyLT5zdHlsZSgpLnZpc2liaWxp
dHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICFyLT5oYXNMYXllcigpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIG1faGFzVmlzaWJsZUNvbnRlbnQgPSB0cnVlOwogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CkBAIC0zMTQ4LDcgKzMxNDgsNyBAQCBSZWY8
U2Nyb2xsYmFyPiBSZW5kZXJMYXllcjo6Y3JlYXRlU2Nyb2xsCiAgICAgUmVmUHRyPFNjcm9sbGJh
cj4gd2lkZ2V0OwogICAgIEFTU0VSVChyZW5kZXJlckZvclNjcm9sbGJhcihyZW5kZXJlcigpKSk7
CiAgICAgYXV0byYgYWN0dWFsUmVuZGVyZXIgPSAqcmVuZGVyZXJGb3JTY3JvbGxiYXIocmVuZGVy
ZXIoKSk7Ci0gICAgYm9vbCBoYXNDdXN0b21TY3JvbGxiYXJTdHlsZSA9IGlzPFJlbmRlckJveD4o
YWN0dWFsUmVuZGVyZXIpICYmIGRvd25jYXN0PFJlbmRlckJveD4oYWN0dWFsUmVuZGVyZXIpLnN0
eWxlKCkuaGFzUHNldWRvU3R5bGUoU0NST0xMQkFSKTsKKyAgICBib29sIGhhc0N1c3RvbVNjcm9s
bGJhclN0eWxlID0gaXM8UmVuZGVyQm94PihhY3R1YWxSZW5kZXJlcikgJiYgZG93bmNhc3Q8UmVu
ZGVyQm94PihhY3R1YWxSZW5kZXJlcikuc3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6
U2Nyb2xsYmFyKTsKICAgICBpZiAoaGFzQ3VzdG9tU2Nyb2xsYmFyU3R5bGUpCiAgICAgICAgIHdp
ZGdldCA9IFJlbmRlclNjcm9sbGJhcjo6Y3JlYXRlQ3VzdG9tU2Nyb2xsYmFyKCp0aGlzLCBvcmll
bnRhdGlvbiwgZG93bmNhc3Q8UmVuZGVyQm94PihhY3R1YWxSZW5kZXJlcikuZWxlbWVudCgpKTsK
ICAgICBlbHNlIHsKQEAgLTM0NjYsMTQgKzM0NjYsMTQgQEAgYm9vbCBSZW5kZXJMYXllcjo6aGFz
VmVydGljYWxPdmVyZmxvdygpIAogc3RhdGljIGJvb2wgc3R5bGVSZXF1aXJlc1Njcm9sbGJhcihj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIFNjcm9sbGJhck9yaWVudGF0aW9uIGF4aXMpCiB7CiAg
ICAgT3ZlcmZsb3cgb3ZlcmZsb3cgPSBheGlzID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jp
em9udGFsU2Nyb2xsYmFyID8gc3R5bGUub3ZlcmZsb3dYKCkgOiBzdHlsZS5vdmVyZmxvd1koKTsK
LSAgICBib29sIG92ZXJmbG93U2Nyb2xsQWN0c0xpa2VBdXRvID0gb3ZlcmZsb3cgPT0gT3ZlcmZs
b3c6OlNjcm9sbCAmJiAhc3R5bGUuaGFzUHNldWRvU3R5bGUoU0NST0xMQkFSKSAmJiBTY3JvbGxi
YXJUaGVtZTo6dGhlbWUoKS51c2VzT3ZlcmxheVNjcm9sbGJhcnMoKTsKKyAgICBib29sIG92ZXJm
bG93U2Nyb2xsQWN0c0xpa2VBdXRvID0gb3ZlcmZsb3cgPT0gT3ZlcmZsb3c6OlNjcm9sbCAmJiAh
c3R5bGUuaGFzUHNldWRvU3R5bGUoUHNldWRvSWQ6OlNjcm9sbGJhcikgJiYgU2Nyb2xsYmFyVGhl
bWU6OnRoZW1lKCkudXNlc092ZXJsYXlTY3JvbGxiYXJzKCk7CiAgICAgcmV0dXJuIG92ZXJmbG93
ID09IE92ZXJmbG93OjpTY3JvbGwgJiYgIW92ZXJmbG93U2Nyb2xsQWN0c0xpa2VBdXRvOwogfQog
CiBzdGF0aWMgYm9vbCBzdHlsZURlZmluZXNBdXRvbWF0aWNTY3JvbGxiYXIoY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlLCBTY3JvbGxiYXJPcmllbnRhdGlvbiBheGlzKQogewogICAgIE92ZXJmbG93
IG92ZXJmbG93ID0gYXhpcyA9PSBTY3JvbGxiYXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbFNjcm9s
bGJhciA/IHN0eWxlLm92ZXJmbG93WCgpIDogc3R5bGUub3ZlcmZsb3dZKCk7Ci0gICAgYm9vbCBv
dmVyZmxvd1Njcm9sbEFjdHNMaWtlQXV0byA9IG92ZXJmbG93ID09IE92ZXJmbG93OjpTY3JvbGwg
JiYgIXN0eWxlLmhhc1BzZXVkb1N0eWxlKFNDUk9MTEJBUikgJiYgU2Nyb2xsYmFyVGhlbWU6OnRo
ZW1lKCkudXNlc092ZXJsYXlTY3JvbGxiYXJzKCk7CisgICAgYm9vbCBvdmVyZmxvd1Njcm9sbEFj
dHNMaWtlQXV0byA9IG92ZXJmbG93ID09IE92ZXJmbG93OjpTY3JvbGwgJiYgIXN0eWxlLmhhc1Bz
ZXVkb1N0eWxlKFBzZXVkb0lkOjpTY3JvbGxiYXIpICYmIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgp
LnVzZXNPdmVybGF5U2Nyb2xsYmFycygpOwogICAgIHJldHVybiBvdmVyZmxvdyA9PSBPdmVyZmxv
dzo6QXV0byB8fCBvdmVyZmxvdyA9PSBPdmVyZmxvdzo6T3ZlcmxheSB8fCBvdmVyZmxvd1Njcm9s
bEFjdHNMaWtlQXV0bzsKIH0KIApAQCAtNDA5NCwyMyArNDA5NCwyMyBAQCBzdGF0aWMgaW5saW5l
IExheW91dFJlY3QgY29tcHV0ZVJlZmVyZW5jCiAgICAgTGF5b3V0UmVjdCByZWZlcmVuY2VCb3g7
CiAgICAgY29uc3QgYXV0byYgYm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlcik7CiAg
ICAgc3dpdGNoIChjbGlwcGluZ1BhdGgucmVmZXJlbmNlQm94KCkpIHsKLSAgICBjYXNlIENvbnRl
bnRCb3g6CisgICAgY2FzZSBDU1NCb3hUeXBlOjpDb250ZW50Qm94OgogICAgICAgICByZWZlcmVu
Y2VCb3ggPSBib3guY29udGVudEJveFJlY3QoKTsKICAgICAgICAgcmVmZXJlbmNlQm94Lm1vdmUo
b2Zmc2V0RnJvbVJvb3QpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBhZGRpbmdCb3g6Cisg
ICAgY2FzZSBDU1NCb3hUeXBlOjpQYWRkaW5nQm94OgogICAgICAgICByZWZlcmVuY2VCb3ggPSBi
b3gucGFkZGluZ0JveFJlY3QoKTsKICAgICAgICAgcmVmZXJlbmNlQm94Lm1vdmUob2Zmc2V0RnJv
bVJvb3QpOwogICAgICAgICBicmVhazsKICAgICAvLyBGSVhNRTogU3VwcG9ydCBtYXJnaW4tYm94
LiBVc2UgYm91bmRpbmcgY2xpZW50IHJlY3QgZm9yIG5vdy4KICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3OTg0Ci0gICAgY2FzZSBNYXJnaW5Cb3g6Cisg
ICAgY2FzZSBDU1NCb3hUeXBlOjpNYXJnaW5Cb3g6CiAgICAgLy8gZmlsbCwgc3Ryb2tlLCB2aWV3
LWJveCBjb21wdXRlIHRvIGJvcmRlci1ib3ggZm9yIEhUTUwgZWxlbWVudHMuCi0gICAgY2FzZSBG
aWxsOgotICAgIGNhc2UgU3Ryb2tlOgotICAgIGNhc2UgVmlld0JveDoKLSAgICBjYXNlIEJvcmRl
ckJveDoKLSAgICBjYXNlIEJveE1pc3Npbmc6CisgICAgY2FzZSBDU1NCb3hUeXBlOjpGaWxsOgor
ICAgIGNhc2UgQ1NTQm94VHlwZTo6U3Ryb2tlOgorICAgIGNhc2UgQ1NTQm94VHlwZTo6Vmlld0Jv
eDoKKyAgICBjYXNlIENTU0JveFR5cGU6OkJvcmRlckJveDoKKyAgICBjYXNlIENTU0JveFR5cGU6
OkJveE1pc3Npbmc6CiAgICAgICAgIHJlZmVyZW5jZUJveCA9IGJveC5ib3JkZXJCb3hSZWN0KCk7
CiAgICAgICAgIHJlZmVyZW5jZUJveC5tb3ZlKG9mZnNldEZyb21Sb290KTsKICAgICAgICAgYnJl
YWs7CkBAIC02MDQxLDcgKzYwNDEsNyBAQCBib29sIFJlbmRlckxheWVyOjpiYWNrZ3JvdW5kSXNL
bm93blRvQmVPCiAKICAgICAvLyBXZSBjYW4ndCB1c2UgaGFzVmlzaWJsZUNvbnRlbnQoKSwgYmVj
YXVzZSB0aGF0IHdpbGwgYmUgdHJ1ZSBpZiBvdXIgcmVuZGVyZXIgaXMgaGlkZGVuLCBidXQgc29t
ZSBjaGlsZAogICAgIC8vIGlzIHZpc2libGUgYW5kIHRoYXQgY2hpbGQgZG9lc24ndCBjb3ZlciB0
aGUgZW50aXJlIHJlY3QuCi0gICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkg
IT0gVklTSUJMRSkKKyAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBW
aXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAocGFp
bnRzV2l0aEZpbHRlcnMoKSAmJiByZW5kZXJlcigpLnN0eWxlKCkuZmlsdGVyKCkuaGFzRmlsdGVy
VGhhdEFmZmVjdHNPcGFjaXR5KCkpCkBAIC02NzMwLDcgKzY3MzAsNyBAQCB2b2lkIFJlbmRlckxh
eWVyOjp1cGRhdGVTY3JvbGxhYmxlQXJlYVNlCiB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVTY3Jv
bGxDb3JuZXJTdHlsZSgpCiB7CiAgICAgUmVuZGVyRWxlbWVudCogYWN0dWFsUmVuZGVyZXIgPSBy
ZW5kZXJlckZvclNjcm9sbGJhcihyZW5kZXJlcigpKTsKLSAgICBhdXRvIGNvcm5lciA9IHJlbmRl
cmVyKCkuaGFzT3ZlcmZsb3dDbGlwKCkgPyBhY3R1YWxSZW5kZXJlci0+Z2V0VW5jYWNoZWRQc2V1
ZG9TdHlsZShQc2V1ZG9TdHlsZVJlcXVlc3QoU0NST0xMQkFSX0NPUk5FUiksICZhY3R1YWxSZW5k
ZXJlci0+c3R5bGUoKSkgOiBudWxscHRyOworICAgIGF1dG8gY29ybmVyID0gcmVuZGVyZXIoKS5o
YXNPdmVyZmxvd0NsaXAoKSA/IGFjdHVhbFJlbmRlcmVyLT5nZXRVbmNhY2hlZFBzZXVkb1N0eWxl
KFBzZXVkb1N0eWxlUmVxdWVzdChQc2V1ZG9JZDo6U2Nyb2xsYmFyQ29ybmVyKSwgJmFjdHVhbFJl
bmRlcmVyLT5zdHlsZSgpKSA6IG51bGxwdHI7CiAKICAgICBpZiAoIWNvcm5lcikgewogICAgICAg
ICBjbGVhclNjcm9sbENvcm5lcigpOwpAQCAtNjc1Nyw3ICs2NzU3LDcgQEAgdm9pZCBSZW5kZXJM
YXllcjo6Y2xlYXJTY3JvbGxDb3JuZXIoKQogdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlUmVzaXpl
clN0eWxlKCkKIHsKICAgICBSZW5kZXJFbGVtZW50KiBhY3R1YWxSZW5kZXJlciA9IHJlbmRlcmVy
Rm9yU2Nyb2xsYmFyKHJlbmRlcmVyKCkpOwotICAgIGF1dG8gcmVzaXplciA9IHJlbmRlcmVyKCku
aGFzT3ZlcmZsb3dDbGlwKCkgPyBhY3R1YWxSZW5kZXJlci0+Z2V0VW5jYWNoZWRQc2V1ZG9TdHls
ZShQc2V1ZG9TdHlsZVJlcXVlc3QoUkVTSVpFUiksICZhY3R1YWxSZW5kZXJlci0+c3R5bGUoKSkg
OiBudWxscHRyOworICAgIGF1dG8gcmVzaXplciA9IHJlbmRlcmVyKCkuaGFzT3ZlcmZsb3dDbGlw
KCkgPyBhY3R1YWxSZW5kZXJlci0+Z2V0VW5jYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9TdHlsZVJl
cXVlc3QoUHNldWRvSWQ6OlJlc2l6ZXIpLCAmYWN0dWFsUmVuZGVyZXItPnN0eWxlKCkpIDogbnVs
bHB0cjsKIAogICAgIGlmICghcmVzaXplcikgewogICAgICAgICBjbGVhclJlc2l6ZXIoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
CShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIzOSw4ICsxMjM5LDggQEAgdm9pZCBS
ZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUFmdGVyRGVzYwogCiAgICAgbV9ncmFwaGljc0xheWVy
LT5zZXRDb250ZW50c1Zpc2libGUobV9vd25pbmdMYXllci5oYXNWaXNpYmxlQ29udGVudCgpIHx8
IGhhc1Zpc2libGVOb25Db21wb3NpdGVkRGVzY2VuZGFudHMoKSk7CiAgICAgaWYgKG1fc2Nyb2xs
aW5nTGF5ZXIpIHsKLSAgICAgICAgbV9zY3JvbGxpbmdMYXllci0+c2V0Q29udGVudHNWaXNpYmxl
KHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSk7Ci0gICAgICAgIG1f
c2Nyb2xsaW5nTGF5ZXItPnNldFVzZXJJbnRlcmFjdGlvbkVuYWJsZWQocmVuZGVyZXIoKS5zdHls
ZSgpLnBvaW50ZXJFdmVudHMoKSAhPSBQRV9OT05FKTsKKyAgICAgICAgbV9zY3JvbGxpbmdMYXll
ci0+c2V0Q29udGVudHNWaXNpYmxlKHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0g
VmlzaWJpbGl0eTo6VmlzaWJsZSk7CisgICAgICAgIG1fc2Nyb2xsaW5nTGF5ZXItPnNldFVzZXJJ
bnRlcmFjdGlvbkVuYWJsZWQocmVuZGVyZXIoKS5zdHlsZSgpLnBvaW50ZXJFdmVudHMoKSAhPSBQ
b2ludGVyRXZlbnRzOjpOb25lKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCShyZXZpc2lvbiAyMzIx
MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTEyLDggKzUxMiw4IEBAIHN0YXRpYyBib29sIHNjcm9sbGJh
ckhhc0Rpc3BsYXlOb25lKFNjcm8KICAgICBpZiAoIXNjcm9sbGJhciB8fCAhc2Nyb2xsYmFyLT5p
c0N1c3RvbVNjcm9sbGJhcigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHNjcm9sbGJhclN0eWxlID0gc3RhdGljX2Nhc3Q8UmVuZGVy
U2Nyb2xsYmFyKj4oc2Nyb2xsYmFyKS0+Z2V0U2Nyb2xsYmFyUHNldWRvU3R5bGUoU2Nyb2xsYmFy
QkdQYXJ0LCBTQ1JPTExCQVIpOwotICAgIHJldHVybiBzY3JvbGxiYXJTdHlsZSAmJiBzY3JvbGxi
YXJTdHlsZS0+ZGlzcGxheSgpID09IE5PTkU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBzY3JvbGxiYXJTdHlsZSA9IHN0YXRpY19jYXN0PFJlbmRlclNjcm9sbGJhcio+KHNjcm9s
bGJhciktPmdldFNjcm9sbGJhclBzZXVkb1N0eWxlKFNjcm9sbGJhckJHUGFydCwgUHNldWRvSWQ6
OlNjcm9sbGJhcik7CisgICAgcmV0dXJuIHNjcm9sbGJhclN0eWxlICYmIHNjcm9sbGJhclN0eWxl
LT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmU7CiB9CiAKIC8vIEZJWE1FOiBDYW4gd2Ug
bWFrZSB8bGF5ZXJ8IGNvbnN0IFJlbmRlckxheWVyJj8KQEAgLTI0MzIsNyArMjQzMiw3IEBAIGJv
b2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXAKICAgICBtX3JlZXZhbHVhdGVD
b21wb3NpdGluZ0FmdGVyTGF5b3V0ID0gdHJ1ZTsKICAgICAKICAgICBhdXRvJiBwbHVnaW5SZW5k
ZXJlciA9IGRvd25jYXN0PFJlbmRlcldpZGdldD4ocmVuZGVyZXIpOwotICAgIGlmIChwbHVnaW5S
ZW5kZXJlci5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChwbHVnaW5S
ZW5kZXJlci5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBJZiB3ZSBjYW4ndCByZWxpYWJseSBrbm93IHRo
ZSBzaXplIG9mIHRoZSBwbHVnaW4geWV0LCBkb24ndCBjaGFuZ2UgY29tcG9zaXRpbmcgc3RhdGUu
CkBAIC0yNDUwLDcgKzI0NTAsNyBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWly
ZXNDb21wCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8mIGZyYW1lUmVuZGVyZXIg
PSBkb3duY2FzdDxSZW5kZXJXaWRnZXQ+KHJlbmRlcmVyKTsKLSAgICBpZiAoZnJhbWVSZW5kZXJl
ci5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChmcmFtZVJlbmRlcmVy
LnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGlmICghZnJhbWVSZW5kZXJlci5yZXF1aXJlc0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmcoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dEJveC5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaXN0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEwLDcgKzMxMCw3IEBAIHZvaWQg
UmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtKFBhaW50SW5mbyYKIAogdm9pZCBSZW5kZXJMaXN0Qm94
OjpwYWludE9iamVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2Zmc2V0KQogewotICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQor
ICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAg
ICAgICByZXR1cm47CiAgICAgCiAgICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNl
Rm9yZWdyb3VuZCkgewpAQCAtMzg2LDE3ICszODYsMTcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94Ojpw
YWludFNjcm9sbGJhcihQYWludAogCiBzdGF0aWMgTGF5b3V0U2l6ZSBpdGVtT2Zmc2V0Rm9yQWxp
Z25tZW50KFRleHRSdW4gdGV4dFJ1biwgY29uc3QgUmVuZGVyU3R5bGUqIGl0ZW1TdHlsZSwgRm9u
dENhc2NhZGUgaXRlbUZvbnQsIExheW91dFJlY3QgaXRlbUJvdWRpbmdCb3gpCiB7Ci0gICAgRVRl
eHRBbGlnbiBhY3R1YWxBbGlnbm1lbnQgPSBpdGVtU3R5bGUtPnRleHRBbGlnbigpOwotICAgIC8v
IEZJWE1FOiBGaXJlZm94IGRvZXNuJ3QgcmVzcGVjdCBKVVNUSUZZLiBTaG91bGQgd2U/Ci0gICAg
Ly8gRklYTUU6IEhhbmRsZSBUQUVORCBoZXJlCi0gICAgaWYgKGFjdHVhbEFsaWdubWVudCA9PSBU
QVNUQVJUIHx8IGFjdHVhbEFsaWdubWVudCA9PSBKVVNUSUZZKQotICAgICAgYWN0dWFsQWxpZ25t
ZW50ID0gaXRlbVN0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBMRUZUIDogUklHSFQ7
CisgICAgVGV4dEFsaWduTW9kZSBhY3R1YWxBbGlnbm1lbnQgPSBpdGVtU3R5bGUtPnRleHRBbGln
bigpOworICAgIC8vIEZJWE1FOiBGaXJlZm94IGRvZXNuJ3QgcmVzcGVjdCBUZXh0QWxpZ25Nb2Rl
OjpKdXN0aWZ5LiBTaG91bGQgd2U/CisgICAgLy8gRklYTUU6IEhhbmRsZSBUZXh0QWxpZ25Nb2Rl
OjpFbmQgaGVyZQorICAgIGlmIChhY3R1YWxBbGlnbm1lbnQgPT0gVGV4dEFsaWduTW9kZTo6U3Rh
cnQgfHwgYWN0dWFsQWxpZ25tZW50ID09IFRleHRBbGlnbk1vZGU6Okp1c3RpZnkpCisgICAgICAg
IGFjdHVhbEFsaWdubWVudCA9IGl0ZW1TdHlsZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8g
VGV4dEFsaWduTW9kZTo6TGVmdCA6IFRleHRBbGlnbk1vZGU6OlJpZ2h0OwogCiAgICAgTGF5b3V0
U2l6ZSBvZmZzZXQgPSBMYXlvdXRTaXplKDAsIGl0ZW1Gb250LmZvbnRNZXRyaWNzKCkuYXNjZW50
KCkpOwotICAgIGlmIChhY3R1YWxBbGlnbm1lbnQgPT0gUklHSFQgfHwgYWN0dWFsQWxpZ25tZW50
ID09IFdFQktJVF9SSUdIVCkgeworICAgIGlmIChhY3R1YWxBbGlnbm1lbnQgPT0gVGV4dEFsaWdu
TW9kZTo6UmlnaHQgfHwgYWN0dWFsQWxpZ25tZW50ID09IFRleHRBbGlnbk1vZGU6OldlYktpdFJp
Z2h0KSB7CiAgICAgICAgIGZsb2F0IHRleHRXaWR0aCA9IGl0ZW1Gb250LndpZHRoKHRleHRSdW4p
OwogICAgICAgICBvZmZzZXQuc2V0V2lkdGgoaXRlbUJvdWRpbmdCb3gud2lkdGgoKSAtIHRleHRX
aWR0aCAtIG9wdGlvbnNTcGFjaW5nSG9yaXpvbnRhbCk7Ci0gICAgfSBlbHNlIGlmIChhY3R1YWxB
bGlnbm1lbnQgPT0gQ0VOVEVSIHx8IGFjdHVhbEFsaWdubWVudCA9PSBXRUJLSVRfQ0VOVEVSKSB7
CisgICAgfSBlbHNlIGlmIChhY3R1YWxBbGlnbm1lbnQgPT0gVGV4dEFsaWduTW9kZTo6Q2VudGVy
IHx8IGFjdHVhbEFsaWdubWVudCA9PSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRDZW50ZXIpIHsKICAg
ICAgICAgZmxvYXQgdGV4dFdpZHRoID0gaXRlbUZvbnQud2lkdGgodGV4dFJ1bik7CiAgICAgICAg
IG9mZnNldC5zZXRXaWR0aCgoaXRlbUJvdWRpbmdCb3gud2lkdGgoKSAtIHRleHRXaWR0aCkgLyAy
KTsKICAgICB9IGVsc2UKQEAgLTQxMSw3ICs0MTEsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBh
aW50SXRlbUZvcmVncm91bmQoCiAKICAgICBhdXRvJiBpdGVtU3R5bGUgPSAqbGlzdEl0ZW1FbGVt
ZW50LT5jb21wdXRlZFN0eWxlKCk7CiAKLSAgICBpZiAoaXRlbVN0eWxlLnZpc2liaWxpdHkoKSA9
PSBISURERU4pCisgICAgaWYgKGl0ZW1TdHlsZS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6
SGlkZGVuKQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgaXRlbVRleHQ7CkBAIC00NjUs
NyArNDY1LDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1CYWNrZ3JvdW5kKAogICAg
ICAgICBiYWNrQ29sb3IgPSBpdGVtU3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9y
RmlsdGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKIAogICAgIC8vIERyYXcgdGhlIGJh
Y2tncm91bmQgZm9yIHRoaXMgbGlzdCBib3ggaXRlbQotICAgIGlmIChpdGVtU3R5bGUudmlzaWJp
bGl0eSgpID09IEhJRERFTikKKyAgICBpZiAoaXRlbVN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNp
YmlsaXR5OjpIaWRkZW4pCiAgICAgICAgIHJldHVybjsKIAogICAgIExheW91dFJlY3QgaXRlbVJl
Y3QgPSBpdGVtQm91bmRpbmdCb3hSZWN0KHBhaW50T2Zmc2V0LCBsaXN0SW5kZXgpOwpAQCAtOTE0
LDcgKzkxNCw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6bG9nTW9ja1Njcm9sbEFuaW1hdG8KIFJl
ZjxTY3JvbGxiYXI+IFJlbmRlckxpc3RCb3g6OmNyZWF0ZVNjcm9sbGJhcigpCiB7CiAgICAgUmVm
UHRyPFNjcm9sbGJhcj4gd2lkZ2V0OwotICAgIGJvb2wgaGFzQ3VzdG9tU2Nyb2xsYmFyU3R5bGUg
PSBzdHlsZSgpLmhhc1BzZXVkb1N0eWxlKFNDUk9MTEJBUik7CisgICAgYm9vbCBoYXNDdXN0b21T
Y3JvbGxiYXJTdHlsZSA9IHN0eWxlKCkuaGFzUHNldWRvU3R5bGUoUHNldWRvSWQ6OlNjcm9sbGJh
cik7CiAgICAgaWYgKGhhc0N1c3RvbVNjcm9sbGJhclN0eWxlKQogICAgICAgICB3aWRnZXQgPSBS
ZW5kZXJTY3JvbGxiYXI6OmNyZWF0ZUN1c3RvbVNjcm9sbGJhcigqdGhpcywgVmVydGljYWxTY3Jv
bGxiYXIsICZzZWxlY3RFbGVtZW50KCkpOwogICAgIGVsc2UgewpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03MSw3ICs3MSw3IEBAIFJlbmRlclN0eWxlIFJlbmRlckxpc3RJdGVtOjpjb21wdXRlTWFy
a2UKICAgICBmb250RGVzY3JpcHRpb24uc2V0VmFyaWFudE51bWVyaWNTcGFjaW5nKEZvbnRWYXJp
YW50TnVtZXJpY1NwYWNpbmc6OlRhYnVsYXJOdW1iZXJzKTsKICAgICBwYXJlbnRTdHlsZS5zZXRG
b250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKICAgICBwYXJlbnRTdHlsZS5mb250Q2Fz
Y2FkZSgpLnVwZGF0ZSgmZG9jdW1lbnQoKS5mb250U2VsZWN0b3IoKSk7Ci0gICAgaWYgKGF1dG8g
bWFya2VyU3R5bGUgPSBnZXRDYWNoZWRQc2V1ZG9TdHlsZShNQVJLRVIsICZwYXJlbnRTdHlsZSkp
CisgICAgaWYgKGF1dG8gbWFya2VyU3R5bGUgPSBnZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9J
ZDo6TWFya2VyLCAmcGFyZW50U3R5bGUpKQogICAgICAgICByZXR1cm4gUmVuZGVyU3R5bGU6OmNs
b25lKCptYXJrZXJTdHlsZSk7CiAgICAgYXV0byBtYXJrZXJTdHlsZSA9IFJlbmRlclN0eWxlOjpj
cmVhdGUoKTsKICAgICBtYXJrZXJTdHlsZS5pbmhlcml0RnJvbShwYXJlbnRTdHlsZSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCShyZXZp
c2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwNSwxOTcgKzQwNSwxOTcgQEAgc3RhdGljIE5FVkVS
X0lOTElORSB2b2lkIHRvQ0pLSWRlb2dyYXBoaQogICAgIGJ1aWxkZXIuYXBwZW5kKGNoYXJhY3Rl
cnMsIGxlbmd0aCk7CiB9CiAKLXN0YXRpYyBFTGlzdFN0eWxlVHlwZSBlZmZlY3RpdmVMaXN0TWFy
a2VyVHlwZShFTGlzdFN0eWxlVHlwZSB0eXBlLCBpbnQgdmFsdWUpCitzdGF0aWMgTGlzdFN0eWxl
VHlwZSBlZmZlY3RpdmVMaXN0TWFya2VyVHlwZShMaXN0U3R5bGVUeXBlIHR5cGUsIGludCB2YWx1
ZSkKIHsKICAgICAvLyBOb3RlLCB0aGUgZm9sbG93aW5nIHN3aXRjaCBzdGF0ZW1lbnQgaGFzIGJl
ZW4gZXhwbGljaXRseSBncm91cGVkCiAgICAgLy8gYnkgbGlzdC1zdHlsZS10eXBlIG9yZGluYWwg
cmFuZ2UuCiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBBcmFiaWNJbmRpYzoKLSAgICBj
YXNlIEJlbmdhbGk6Ci0gICAgY2FzZSBCaW5hcnlMaXN0U3R5bGU6Ci0gICAgY2FzZSBDYW1ib2Rp
YW46Ci0gICAgY2FzZSBDaXJjbGU6Ci0gICAgY2FzZSBEZWNpbWFsTGVhZGluZ1plcm86Ci0gICAg
Y2FzZSBEZWNpbWFsTGlzdFN0eWxlOgotICAgIGNhc2UgRGV2YW5hZ2FyaToKLSAgICBjYXNlIERp
c2M6Ci0gICAgY2FzZSBHdWphcmF0aToKLSAgICBjYXNlIEd1cm11a2hpOgotICAgIGNhc2UgS2Fu
bmFkYToKLSAgICBjYXNlIEtobWVyOgotICAgIGNhc2UgTGFvOgotICAgIGNhc2UgTG93ZXJIZXhh
ZGVjaW1hbDoKLSAgICBjYXNlIE1hbGF5YWxhbToKLSAgICBjYXNlIE1vbmdvbGlhbjoKLSAgICBj
YXNlIE15YW5tYXI6Ci0gICAgY2FzZSBOb25lTGlzdFN0eWxlOgotICAgIGNhc2UgT2N0YWw6Ci0g
ICAgY2FzZSBPcml5YToKLSAgICBjYXNlIFBlcnNpYW46Ci0gICAgY2FzZSBTcXVhcmU6Ci0gICAg
Y2FzZSBUZWx1Z3U6Ci0gICAgY2FzZSBUaGFpOgotICAgIGNhc2UgVGliZXRhbjoKLSAgICBjYXNl
IFVwcGVySGV4YWRlY2ltYWw6Ci0gICAgY2FzZSBVcmR1OgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6QXJhYmljSW5kaWM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpCZW5nYWxpOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6QmluYXJ5OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2FtYm9k
aWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2lyY2xlOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6RGVjaW1hbExlYWRpbmdaZXJvOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGVjaW1h
bDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRldmFuYWdhcmk6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpEaXNjOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6R3VqYXJhdGk6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpHdXJtdWtoaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okthbm5h
ZGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLaG1lcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkxhbzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VySGV4YWRlY2ltYWw6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpNYWxheWFsYW06CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpN
b25nb2xpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpNeWFubWFyOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6Tm9uZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok9jdGFsOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6T3JpeWE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpQZXJzaWFu
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6U3F1YXJlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6VGVsdWd1OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGhhaToKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OlRpYmV0YW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckhleGFkZWNp
bWFsOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXJkdToKICAgICAgICAgcmV0dXJuIHR5cGU7
IC8vIENhbiByZXByZXNlbnQgYWxsIG9yZGluYWxzLgotICAgIGNhc2UgQXJtZW5pYW46Ci0gICAg
ICAgIHJldHVybiAodmFsdWUgPCAxIHx8IHZhbHVlID4gOTk5OTk5OTkpID8gRGVjaW1hbExpc3RT
dHlsZSA6IHR5cGU7Ci0gICAgY2FzZSBDSktJZGVvZ3JhcGhpYzoKLSAgICAgICAgcmV0dXJuICh2
YWx1ZSA8IDApID8gRGVjaW1hbExpc3RTdHlsZSA6IHR5cGU7Ci0gICAgY2FzZSBHZW9yZ2lhbjoK
LSAgICAgICAgcmV0dXJuICh2YWx1ZSA8IDEgfHwgdmFsdWUgPiAxOTk5OSkgPyBEZWNpbWFsTGlz
dFN0eWxlIDogdHlwZTsKLSAgICBjYXNlIEhlYnJldzoKLSAgICAgICAgcmV0dXJuICh2YWx1ZSA8
IDAgfHwgdmFsdWUgPiA5OTk5OTkpID8gRGVjaW1hbExpc3RTdHlsZSA6IHR5cGU7Ci0gICAgY2Fz
ZSBMb3dlclJvbWFuOgotICAgIGNhc2UgVXBwZXJSb21hbjoKLSAgICAgICAgcmV0dXJuICh2YWx1
ZSA8IDEgfHwgdmFsdWUgPiAzOTk5KSA/IERlY2ltYWxMaXN0U3R5bGUgOiB0eXBlOwotICAgIGNh
c2UgQWZhcjoKLSAgICBjYXNlIEFtaGFyaWM6Ci0gICAgY2FzZSBBbWhhcmljQWJlZ2VkZToKLSAg
ICBjYXNlIEFzdGVyaXNrczoKLSAgICBjYXNlIENqa0VhcnRobHlCcmFuY2g6Ci0gICAgY2FzZSBD
amtIZWF2ZW5seVN0ZW06Ci0gICAgY2FzZSBFdGhpb3BpYzoKLSAgICBjYXNlIEV0aGlvcGljQWJl
Z2VkZToKLSAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZUFtRXQ6Ci0gICAgY2FzZSBFdGhpb3BpY0Fi
ZWdlZGVHZXo6Ci0gICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVUaUVyOgotICAgIGNhc2UgRXRoaW9w
aWNBYmVnZWRlVGlFdDoKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVBYUVyOgotICAgIGNhc2Ug
RXRoaW9waWNIYWxlaGFtZUFhRXQ6Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lQW1FdDoKLSAg
ICBjYXNlIEV0aGlvcGljSGFsZWhhbWVHZXo6Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lT21F
dDoKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVTaWRFdDoKLSAgICBjYXNlIEV0aGlvcGljSGFs
ZWhhbWVTb0V0OgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVRpRXI6Ci0gICAgY2FzZSBFdGhp
b3BpY0hhbGVoYW1lVGlFdDoKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVUaWc6Ci0gICAgY2Fz
ZSBGb290bm90ZXM6Ci0gICAgY2FzZSBIYW5ndWw6Ci0gICAgY2FzZSBIYW5ndWxDb25zb25hbnQ6
Ci0gICAgY2FzZSBIaXJhZ2FuYToKLSAgICBjYXNlIEhpcmFnYW5hSXJvaGE6Ci0gICAgY2FzZSBL
YXRha2FuYToKLSAgICBjYXNlIEthdGFrYW5hSXJvaGE6Ci0gICAgY2FzZSBMb3dlckFscGhhOgot
ICAgIGNhc2UgTG93ZXJBcm1lbmlhbjoKLSAgICBjYXNlIExvd2VyR3JlZWs6Ci0gICAgY2FzZSBM
b3dlckxhdGluOgotICAgIGNhc2UgTG93ZXJOb3J3ZWdpYW46Ci0gICAgY2FzZSBPcm9tbzoKLSAg
ICBjYXNlIFNpZGFtYToKLSAgICBjYXNlIFNvbWFsaToKLSAgICBjYXNlIFRpZ3JlOgotICAgIGNh
c2UgVGlncmlueWFFcjoKLSAgICBjYXNlIFRpZ3JpbnlhRXJBYmVnZWRlOgotICAgIGNhc2UgVGln
cmlueWFFdDoKLSAgICBjYXNlIFRpZ3JpbnlhRXRBYmVnZWRlOgotICAgIGNhc2UgVXBwZXJBbHBo
YToKLSAgICBjYXNlIFVwcGVyQXJtZW5pYW46Ci0gICAgY2FzZSBVcHBlckdyZWVrOgotICAgIGNh
c2UgVXBwZXJMYXRpbjoKLSAgICBjYXNlIFVwcGVyTm9yd2VnaWFuOgotICAgICAgICByZXR1cm4g
KHZhbHVlIDwgMSkgPyBEZWNpbWFsTGlzdFN0eWxlIDogdHlwZTsKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OkFybWVuaWFuOgorICAgICAgICByZXR1cm4gKHZhbHVlIDwgMSB8fCB2YWx1ZSA+IDk5
OTk5OTk5KSA/IExpc3RTdHlsZVR5cGU6OkRlY2ltYWwgOiB0eXBlOworICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6Q0pLSWRlb2dyYXBoaWM6CisgICAgICAgIHJldHVybiAodmFsdWUgPCAwKSA/IExp
c3RTdHlsZVR5cGU6OkRlY2ltYWwgOiB0eXBlOworICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6R2Vv
cmdpYW46CisgICAgICAgIHJldHVybiAodmFsdWUgPCAxIHx8IHZhbHVlID4gMTk5OTkpID8gTGlz
dFN0eWxlVHlwZTo6RGVjaW1hbCA6IHR5cGU7CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIZWJy
ZXc6CisgICAgICAgIHJldHVybiAodmFsdWUgPCAwIHx8IHZhbHVlID4gOTk5OTk5KSA/IExpc3RT
dHlsZVR5cGU6OkRlY2ltYWwgOiB0eXBlOworICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJS
b21hbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyUm9tYW46CisgICAgICAgIHJldHVy
biAodmFsdWUgPCAxIHx8IHZhbHVlID4gMzk5OSkgPyBMaXN0U3R5bGVUeXBlOjpEZWNpbWFsIDog
dHlwZTsKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFmYXI6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpBbWhhcmljOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QW1oYXJpY0FiZWdlZGU6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBc3Rlcmlza3M6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpDamtFYXJ0aGx5QnJhbmNoOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2prSGVhdmVubHlT
dGVtOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWM6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3Bp
Y0FiZWdlZGVBbUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlR2V6
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlVGlFcjoKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZVRpRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpFdGhpb3BpY0hhbGVoYW1lQWFFcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlv
cGljSGFsZWhhbWVBYUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFt
ZUFtRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lR2V6OgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZU9tRXQ6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lU2lkRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpFdGhpb3BpY0hhbGVoYW1lU29FdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGlj
SGFsZWhhbWVUaUVyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVRp
RXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lVGlnOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6Rm9vdG5vdGVzOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGFu
Z3VsOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGFuZ3VsQ29uc29uYW50OgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6SGlyYWdhbmE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIaXJhZ2Fu
YUlyb2hhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6S2F0YWthbmE6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpLYXRha2FuYUlyb2hhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJB
bHBoYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyQXJtZW5pYW46CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpMb3dlckdyZWVrOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJM
YXRpbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyTm9yd2VnaWFuOgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6T3JvbW86CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpTaWRhbWE6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpTb21hbGk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpU
aWdyZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXI6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpUaWdyaW55YUVyQWJlZ2VkZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRp
Z3JpbnlhRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55YUV0QWJlZ2VkZToKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyQWxwaGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpVcHBlckFybWVuaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJHcmVlazoKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyTGF0aW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpVcHBlck5vcndlZ2lhbjoKKyAgICAgICAgcmV0dXJuICh2YWx1ZSA8IDEpID8gTGlzdFN0eWxl
VHlwZTo6RGVjaW1hbCA6IHR5cGU7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIHR5cGU7CiB9CiAKLXN0YXRpYyBVQ2hhciBsaXN0TWFya2VyU3VmZml4KEVM
aXN0U3R5bGVUeXBlIHR5cGUsIGludCB2YWx1ZSkKK3N0YXRpYyBVQ2hhciBsaXN0TWFya2VyU3Vm
Zml4KExpc3RTdHlsZVR5cGUgdHlwZSwgaW50IHZhbHVlKQogewogICAgIC8vIElmIHRoZSBsaXN0
LXN0eWxlLXR5cGUgY2Fubm90IHJlcHJlc2VudCB8dmFsdWV8IGJlY2F1c2UgaXQncyBvdXRzaWRl
IGl0cwogICAgIC8vIG9yZGluYWwgcmFuZ2UgdGhlbiB3ZSBmYWxsIGJhY2sgdG8gc29tZSBsaXN0
IHN0eWxlIHRoYXQgY2FuIHJlcHJlc2VudCB8dmFsdWV8LgotICAgIEVMaXN0U3R5bGVUeXBlIGVm
ZmVjdGl2ZVR5cGUgPSBlZmZlY3RpdmVMaXN0TWFya2VyVHlwZSh0eXBlLCB2YWx1ZSk7CisgICAg
TGlzdFN0eWxlVHlwZSBlZmZlY3RpdmVUeXBlID0gZWZmZWN0aXZlTGlzdE1hcmtlclR5cGUodHlw
ZSwgdmFsdWUpOwogCiAgICAgLy8gTm90ZSwgdGhlIGZvbGxvd2luZyBzd2l0Y2ggc3RhdGVtZW50
IGhhcyBiZWVuIGV4cGxpY2l0bHkKICAgICAvLyBncm91cGVkIGJ5IGxpc3Qtc3R5bGUtdHlwZSBz
dWZmaXguCiAgICAgc3dpdGNoIChlZmZlY3RpdmVUeXBlKSB7Ci0gICAgY2FzZSBBc3Rlcmlza3M6
Ci0gICAgY2FzZSBDaXJjbGU6Ci0gICAgY2FzZSBEaXNjOgotICAgIGNhc2UgRm9vdG5vdGVzOgot
ICAgIGNhc2UgTm9uZUxpc3RTdHlsZToKLSAgICBjYXNlIFNxdWFyZToKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OkFzdGVyaXNrczoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNpcmNsZToKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OkRpc2M6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpGb290
bm90ZXM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpOb25lOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6U3F1YXJlOgogICAgICAgICByZXR1cm4gJyAnOwotICAgIGNhc2UgQWZhcjoKLSAgICBj
YXNlIEFtaGFyaWM6Ci0gICAgY2FzZSBBbWhhcmljQWJlZ2VkZToKLSAgICBjYXNlIEV0aGlvcGlj
OgotICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlOgotICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlQW1F
dDoKLSAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZUdlejoKLSAgICBjYXNlIEV0aGlvcGljQWJlZ2Vk
ZVRpRXI6Ci0gICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVUaUV0OgotICAgIGNhc2UgRXRoaW9waWNI
YWxlaGFtZUFhRXI6Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lQWFFdDoKLSAgICBjYXNlIEV0
aGlvcGljSGFsZWhhbWVBbUV0OgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUdlejoKLSAgICBj
YXNlIEV0aGlvcGljSGFsZWhhbWVPbUV0OgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVNpZEV0
OgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVNvRXQ6Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVo
YW1lVGlFcjoKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVUaUV0OgotICAgIGNhc2UgRXRoaW9w
aWNIYWxlaGFtZVRpZzoKLSAgICBjYXNlIE9yb21vOgotICAgIGNhc2UgU2lkYW1hOgotICAgIGNh
c2UgU29tYWxpOgotICAgIGNhc2UgVGlncmU6Ci0gICAgY2FzZSBUaWdyaW55YUVyOgotICAgIGNh
c2UgVGlncmlueWFFckFiZWdlZGU6Ci0gICAgY2FzZSBUaWdyaW55YUV0OgotICAgIGNhc2UgVGln
cmlueWFFdEFiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBZmFyOgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6QW1oYXJpYzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFtaGFyaWNB
YmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWM6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhp
b3BpY0FiZWdlZGVBbUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRl
R2V6OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlVGlFcjoKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZVRpRXQ6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lQWFFcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0
aGlvcGljSGFsZWhhbWVBYUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxl
aGFtZUFtRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lR2V6Ogor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZU9tRXQ6CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lU2lkRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpFdGhpb3BpY0hhbGVoYW1lU29FdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlv
cGljSGFsZWhhbWVUaUVyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFt
ZVRpRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lVGlnOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6T3JvbW86CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpTaWRh
bWE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpTb21hbGk6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpUaWdyZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXI6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55YUVyQWJlZ2VkZToKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OlRpZ3JpbnlhRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55YUV0QWJlZ2Vk
ZToKICAgICAgICAgcmV0dXJuIGV0aGlvcGljUHJlZmFjZUNvbG9uOwotICAgIGNhc2UgQXJtZW5p
YW46Ci0gICAgY2FzZSBBcmFiaWNJbmRpYzoKLSAgICBjYXNlIEJlbmdhbGk6Ci0gICAgY2FzZSBC
aW5hcnlMaXN0U3R5bGU6Ci0gICAgY2FzZSBDYW1ib2RpYW46Ci0gICAgY2FzZSBDSktJZGVvZ3Jh
cGhpYzoKLSAgICBjYXNlIENqa0VhcnRobHlCcmFuY2g6Ci0gICAgY2FzZSBDamtIZWF2ZW5seVN0
ZW06Ci0gICAgY2FzZSBEZWNpbWFsTGVhZGluZ1plcm86Ci0gICAgY2FzZSBEZWNpbWFsTGlzdFN0
eWxlOgotICAgIGNhc2UgRGV2YW5hZ2FyaToKLSAgICBjYXNlIEdlb3JnaWFuOgotICAgIGNhc2Ug
R3VqYXJhdGk6Ci0gICAgY2FzZSBHdXJtdWtoaToKLSAgICBjYXNlIEhhbmd1bDoKLSAgICBjYXNl
IEhhbmd1bENvbnNvbmFudDoKLSAgICBjYXNlIEhlYnJldzoKLSAgICBjYXNlIEhpcmFnYW5hOgot
ICAgIGNhc2UgSGlyYWdhbmFJcm9oYToKLSAgICBjYXNlIEthbm5hZGE6Ci0gICAgY2FzZSBLYXRh
a2FuYToKLSAgICBjYXNlIEthdGFrYW5hSXJvaGE6Ci0gICAgY2FzZSBLaG1lcjoKLSAgICBjYXNl
IExhbzoKLSAgICBjYXNlIExvd2VyQWxwaGE6Ci0gICAgY2FzZSBMb3dlckFybWVuaWFuOgotICAg
IGNhc2UgTG93ZXJHcmVlazoKLSAgICBjYXNlIExvd2VySGV4YWRlY2ltYWw6Ci0gICAgY2FzZSBM
b3dlckxhdGluOgotICAgIGNhc2UgTG93ZXJOb3J3ZWdpYW46Ci0gICAgY2FzZSBMb3dlclJvbWFu
OgotICAgIGNhc2UgTWFsYXlhbGFtOgotICAgIGNhc2UgTW9uZ29saWFuOgotICAgIGNhc2UgTXlh
bm1hcjoKLSAgICBjYXNlIE9jdGFsOgotICAgIGNhc2UgT3JpeWE6Ci0gICAgY2FzZSBQZXJzaWFu
OgotICAgIGNhc2UgVGVsdWd1OgotICAgIGNhc2UgVGhhaToKLSAgICBjYXNlIFRpYmV0YW46Ci0g
ICAgY2FzZSBVcHBlckFscGhhOgotICAgIGNhc2UgVXBwZXJBcm1lbmlhbjoKLSAgICBjYXNlIFVw
cGVyR3JlZWs6Ci0gICAgY2FzZSBVcHBlckhleGFkZWNpbWFsOgotICAgIGNhc2UgVXBwZXJMYXRp
bjoKLSAgICBjYXNlIFVwcGVyTm9yd2VnaWFuOgotICAgIGNhc2UgVXBwZXJSb21hbjoKLSAgICBj
YXNlIFVyZHU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBcm1lbmlhbjoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkFyYWJpY0luZGljOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QmVuZ2Fs
aToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkJpbmFyeToKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkNhbWJvZGlhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNKS0lkZW9ncmFwaGljOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2prRWFydGhseUJyYW5jaDoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OkNqa0hlYXZlbmx5U3RlbToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRlY2lt
YWxMZWFkaW5nWmVybzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRlY2ltYWw6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpEZXZhbmFnYXJpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6R2Vv
cmdpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpHdWphcmF0aToKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6Okd1cm11a2hpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGFuZ3VsOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6SGFuZ3VsQ29uc29uYW50OgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6SGVicmV3OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGlyYWdhbmE6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpIaXJhZ2FuYUlyb2hhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
S2FubmFkYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkthdGFrYW5hOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6S2F0YWthbmFJcm9oYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OktobWVy
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TGFvOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
TG93ZXJBbHBoYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyQXJtZW5pYW46CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckdyZWVrOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
TG93ZXJIZXhhZGVjaW1hbDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyTGF0aW46Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlck5vcndlZ2lhbjoKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6Okxvd2VyUm9tYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpNYWxheWFsYW06Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpNb25nb2xpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpNeWFubWFyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6T2N0YWw6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpPcml5YToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlBlcnNpYW46CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpUZWx1Z3U6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaGFp
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGliZXRhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OlVwcGVyQWxwaGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckFybWVuaWFuOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJHcmVlazoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OlVwcGVySGV4YWRlY2ltYWw6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckxhdGlu
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJOb3J3ZWdpYW46CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpVcHBlclJvbWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXJkdToKICAg
ICAgICAgcmV0dXJuICcuJzsKICAgICB9CiAKQEAgLTYwMyw1MTggKzYwMyw1MTggQEAgc3RhdGlj
IFVDaGFyIGxpc3RNYXJrZXJTdWZmaXgoRUxpc3RTdHlsZQogICAgIHJldHVybiAnLic7CiB9CiAK
LVN0cmluZyBsaXN0TWFya2VyVGV4dChFTGlzdFN0eWxlVHlwZSB0eXBlLCBpbnQgdmFsdWUpCitT
dHJpbmcgbGlzdE1hcmtlclRleHQoTGlzdFN0eWxlVHlwZSB0eXBlLCBpbnQgdmFsdWUpCiB7CiAg
ICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogCiAgICAgLy8gSWYgdGhlIGxpc3Qtc3R5bGUtdHlw
ZSwgc2F5IGhlYnJldywgY2Fubm90IHJlcHJlc2VudCB8dmFsdWV8IGJlY2F1c2UgaXQncyBvdXRz
aWRlCiAgICAgLy8gaXRzIG9yZGluYWwgcmFuZ2UgdGhlbiB3ZSBmYWxsYmFjayB0byBzb21lIGxp
c3Qgc3R5bGUgdGhhdCBjYW4gcmVwcmVzZW50IHx2YWx1ZXwuCiAgICAgc3dpdGNoIChlZmZlY3Rp
dmVMaXN0TWFya2VyVHlwZSh0eXBlLCB2YWx1ZSkpIHsKLSAgICAgICAgY2FzZSBOb25lTGlzdFN0
eWxlOgotICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpOb25lOgorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgICAgICBj
YXNlIEFzdGVyaXNrczogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IExDaGFyIGFzdGVyaXNr
c1N5bWJvbHNbMV0gPSB7IDB4MkEgfTsKLSAgICAgICAgICAgIHRvU3ltYm9saWMoYnVpbGRlciwg
dmFsdWUsIGFzdGVyaXNrc1N5bWJvbHMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgLy8gV2UgdXNlIHRoZSBzYW1lIGNoYXJhY3RlcnMgZm9yIHRleHQgc2VjdXJpdHku
Ci0gICAgICAgIC8vIFNlZSBSZW5kZXJUZXh0OjpzZXRJbnRlcm5hbFN0cmluZy4KLSAgICAgICAg
Y2FzZSBDaXJjbGU6Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCh3aGl0ZUJ1bGxldCk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBEaXNjOgotICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoYnVsbGV0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZvb3Ru
b3RlczogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGZvb3Rub3Rlc1N5bWJvbHNb
NF0gPSB7IDB4MDAyQSwgMHgyMDUxLCAweDIwMjAsIDB4MjAyMSB9OwotICAgICAgICAgICAgdG9T
eW1ib2xpYyhidWlsZGVyLCB2YWx1ZSwgZm9vdG5vdGVzU3ltYm9scyk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFNxdWFyZToKLSAgICAgICAgICAgIC8vIFRo
ZSBDU1MgMi4xIHRlc3Qgc3VpdGUgdXNlcyBVKzI1RUUgQkxBQ0sgTUVESVVNIFNNQUxMIFNRVUFS
RQotICAgICAgICAgICAgLy8gaW5zdGVhZCwgYnV0IEkgdGhpbmsgdGhpcyBsb29rcyBiZXR0ZXIu
Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZChibGFja1NxdWFyZSk7Ci0gICAgICAgICAgICBi
cmVhazsKLQotICAgICAgICBjYXNlIERlY2ltYWxMaXN0U3R5bGU6Ci0gICAgICAgICAgICBidWls
ZGVyLmFwcGVuZE51bWJlcih2YWx1ZSk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkFzdGVyaXNrczogeworICAgICAgICBzdGF0aWMgY29uc3QgTENoYXIgYXN0
ZXJpc2tzU3ltYm9sc1sxXSA9IHsgMHgyQSB9OworICAgICAgICB0b1N5bWJvbGljKGJ1aWxkZXIs
IHZhbHVlLCBhc3Rlcmlza3NTeW1ib2xzKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIC8v
IFdlIHVzZSB0aGUgc2FtZSBjaGFyYWN0ZXJzIGZvciB0ZXh0IHNlY3VyaXR5LgorICAgIC8vIFNl
ZSBSZW5kZXJUZXh0OjpzZXRJbnRlcm5hbFN0cmluZy4KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
OkNpcmNsZToKKyAgICAgICAgYnVpbGRlci5hcHBlbmQod2hpdGVCdWxsZXQpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRpc2M6CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKGJ1bGxldCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Rm9v
dG5vdGVzOiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBmb290bm90ZXNTeW1ib2xzWzRd
ID0geyAweDAwMkEsIDB4MjA1MSwgMHgyMDIwLCAweDIwMjEgfTsKKyAgICAgICAgdG9TeW1ib2xp
YyhidWlsZGVyLCB2YWx1ZSwgZm9vdG5vdGVzU3ltYm9scyk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlNxdWFyZToKKyAgICAgICAgLy8gVGhlIENTUyAy
LjEgdGVzdCBzdWl0ZSB1c2VzIFUrMjVFRSBCTEFDSyBNRURJVU0gU01BTEwgU1FVQVJFCisgICAg
ICAgIC8vIGluc3RlYWQsIGJ1dCBJIHRoaW5rIHRoaXMgbG9va3MgYmV0dGVyLgorICAgICAgICBi
dWlsZGVyLmFwcGVuZChibGFja1NxdWFyZSk7CisgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGNh
c2UgRGVjaW1hbExlYWRpbmdaZXJvOgotICAgICAgICAgICAgaWYgKHZhbHVlIDwgLTkgfHwgdmFs
dWUgPiA5KSB7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIodmFsdWUpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHZh
bHVlIDwgMCkgewotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLTAiKTsK
LSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcigtdmFsdWUpOyAvLyAtMDEgdG8g
LTA5Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgnMCcpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIodmFs
dWUpOyAvLyAwMCB0byAwOQotICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpEZWNpbWFsOgorICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcih2YWx1ZSk7CisgICAg
ICAgIGJyZWFrOwogCi0gICAgICAgIGNhc2UgQXJhYmljSW5kaWM6IHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBVQ2hhciBhcmFiaWNJbmRpY051bWVyYWxzWzEwXSA9IHsKLSAgICAgICAgICAg
ICAgICAweDA2NjAsIDB4MDY2MSwgMHgwNjYyLCAweDA2NjMsIDB4MDY2NCwgMHgwNjY1LCAweDA2
NjYsIDB4MDY2NywgMHgwNjY4LCAweDA2NjkKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0
b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIGFyYWJpY0luZGljTnVtZXJhbHMpOworICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6RGVjaW1hbExlYWRpbmdaZXJvOgorICAgICAgICBpZiAodmFsdWUgPCAt
OSB8fCB2YWx1ZSA+IDkpIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKHZhbHVl
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0KLSAgICAgICAgY2FzZSBCaW5hcnlM
aXN0U3R5bGU6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBMQ2hhciBiaW5hcnlOdW1lcmFs
c1syXSA9IHsgJzAnLCAnMScgfTsKLSAgICAgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1
ZSwgYmluYXJ5TnVtZXJhbHMpOworICAgICAgICBpZiAodmFsdWUgPCAwKSB7CisgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIi0wIik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZE51bWJlcigtdmFsdWUpOyAvLyAtMDEgdG8gLTA5CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQorICAgICAgICBidWlsZGVyLmFwcGVuZCgnMCcpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZE51bWJlcih2YWx1ZSk7IC8vIDAwIHRvIDA5CisgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGNh
c2UgQmVuZ2FsaTogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGJlbmdhbGlOdW1l
cmFsc1sxMF0gPSB7Ci0gICAgICAgICAgICAgICAgMHgwOUU2LCAweDA5RTcsIDB4MDlFOCwgMHgw
OUU5LCAweDA5RUEsIDB4MDlFQiwgMHgwOUVDLCAweDA5RUQsIDB4MDlFRSwgMHgwOUVGCi0gICAg
ICAgICAgICB9OwotICAgICAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBiZW5nYWxp
TnVtZXJhbHMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OkFyYWJpY0luZGljOiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBhcmFi
aWNJbmRpY051bWVyYWxzWzEwXSA9IHsKKyAgICAgICAgICAgIDB4MDY2MCwgMHgwNjYxLCAweDA2
NjIsIDB4MDY2MywgMHgwNjY0LCAweDA2NjUsIDB4MDY2NiwgMHgwNjY3LCAweDA2NjgsIDB4MDY2
OQorICAgICAgICB9OworICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIGFyYWJpY0lu
ZGljTnVtZXJhbHMpOworICAgICAgICBicmVhazsKKyAgICB9CiAKLSAgICAgICAgY2FzZSBDYW1i
b2RpYW46Ci0gICAgICAgIGNhc2UgS2htZXI6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBV
Q2hhciBraG1lck51bWVyYWxzWzEwXSA9IHsKLSAgICAgICAgICAgICAgICAweDE3RTAsIDB4MTdF
MSwgMHgxN0UyLCAweDE3RTMsIDB4MTdFNCwgMHgxN0U1LCAweDE3RTYsIDB4MTdFNywgMHgxN0U4
LCAweDE3RTkKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b051bWVyaWMoYnVpbGRlciwg
dmFsdWUsIGtobWVyTnVtZXJhbHMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICAgICAgY2FzZSBEZXZhbmFnYXJpOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIg
ZGV2YW5hZ2FyaU51bWVyYWxzWzEwXSA9IHsKLSAgICAgICAgICAgICAgICAweDA5NjYsIDB4MDk2
NywgMHgwOTY4LCAweDA5NjksIDB4MDk2QSwgMHgwOTZCLCAweDA5NkMsIDB4MDk2RCwgMHgwOTZF
LCAweDA5NkYKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b051bWVyaWMoYnVpbGRlciwg
dmFsdWUsIGRldmFuYWdhcmlOdW1lcmFscyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIEd1amFyYXRpOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNo
YXIgZ3VqYXJhdGlOdW1lcmFsc1sxMF0gPSB7Ci0gICAgICAgICAgICAgICAgMHgwQUU2LCAweDBB
RTcsIDB4MEFFOCwgMHgwQUU5LCAweDBBRUEsIDB4MEFFQiwgMHgwQUVDLCAweDBBRUQsIDB4MEFF
RSwgMHgwQUVGCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIs
IHZhbHVlLCBndWphcmF0aU51bWVyYWxzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgR3VybXVraGk6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hh
ciBndXJtdWtoaU51bWVyYWxzWzEwXSA9IHsKLSAgICAgICAgICAgICAgICAweDBBNjYsIDB4MEE2
NywgMHgwQTY4LCAweDBBNjksIDB4MEE2QSwgMHgwQTZCLCAweDBBNkMsIDB4MEE2RCwgMHgwQTZF
LCAweDBBNkYKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b051bWVyaWMoYnVpbGRlciwg
dmFsdWUsIGd1cm11a2hpTnVtZXJhbHMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBLYW5uYWRhOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIg
a2FubmFkYU51bWVyYWxzWzEwXSA9IHsKLSAgICAgICAgICAgICAgICAweDBDRTYsIDB4MENFNywg
MHgwQ0U4LCAweDBDRTksIDB4MENFQSwgMHgwQ0VCLCAweDBDRUMsIDB4MENFRCwgMHgwQ0VFLCAw
eDBDRUYKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFs
dWUsIGthbm5hZGFOdW1lcmFscyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
ICAgICBjYXNlIExvd2VySGV4YWRlY2ltYWw6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBM
Q2hhciBsb3dlckhleGFkZWNpbWFsTnVtZXJhbHNbMTZdID0gewotICAgICAgICAgICAgICAgICcw
JywgJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2JywgJzcnLCAnOCcsICc5JywgJ2EnLCAnYics
ICdjJywgJ2QnLCAnZScsICdmJwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvTnVtZXJp
YyhidWlsZGVyLCB2YWx1ZSwgbG93ZXJIZXhhZGVjaW1hbE51bWVyYWxzKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgTGFvOiB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgVUNoYXIgbGFvTnVtZXJhbHNbMTBdID0gewotICAgICAgICAgICAgICAgIDB4MEVE
MCwgMHgwRUQxLCAweDBFRDIsIDB4MEVEMywgMHgwRUQ0LCAweDBFRDUsIDB4MEVENiwgMHgwRUQ3
LCAweDBFRDgsIDB4MEVEOQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvTnVtZXJpYyhi
dWlsZGVyLCB2YWx1ZSwgbGFvTnVtZXJhbHMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBNYWxheWFsYW06IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBV
Q2hhciBtYWxheWFsYW1OdW1lcmFsc1sxMF0gPSB7Ci0gICAgICAgICAgICAgICAgMHgwRDY2LCAw
eDBENjcsIDB4MEQ2OCwgMHgwRDY5LCAweDBENkEsIDB4MEQ2QiwgMHgwRDZDLCAweDBENkQsIDB4
MEQ2RSwgMHgwRDZGCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9OdW1lcmljKGJ1aWxk
ZXIsIHZhbHVlLCBtYWxheWFsYW1OdW1lcmFscyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgICAgICBjYXNlIE1vbmdvbGlhbjogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IFVDaGFyIG1vbmdvbGlhbk51bWVyYWxzWzEwXSA9IHsKLSAgICAgICAgICAgICAgICAweDE4MTAs
IDB4MTgxMSwgMHgxODEyLCAweDE4MTMsIDB4MTgxNCwgMHgxODE1LCAweDE4MTYsIDB4MTgxNywg
MHgxODE4LCAweDE4MTkKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b051bWVyaWMoYnVp
bGRlciwgdmFsdWUsIG1vbmdvbGlhbk51bWVyYWxzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgTXlhbm1hcjogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IFVDaGFyIG15YW5tYXJOdW1lcmFsc1sxMF0gPSB7Ci0gICAgICAgICAgICAgICAgMHgxMDQwLCAw
eDEwNDEsIDB4MTA0MiwgMHgxMDQzLCAweDEwNDQsIDB4MTA0NSwgMHgxMDQ2LCAweDEwNDcsIDB4
MTA0OCwgMHgxMDQ5Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9OdW1lcmljKGJ1aWxk
ZXIsIHZhbHVlLCBteWFubWFyTnVtZXJhbHMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBPY3RhbDogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IExDaGFy
IG9jdGFsTnVtZXJhbHNbOF0gPSB7Ci0gICAgICAgICAgICAgICAgJzAnLCAnMScsICcyJywgJzMn
LCAnNCcsICc1JywgJzYnLCAnNycKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b051bWVy
aWMoYnVpbGRlciwgdmFsdWUsIG9jdGFsTnVtZXJhbHMpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICAgICAgY2FzZSBPcml5YTogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IFVDaGFyIG9yaXlhTnVtZXJhbHNbMTBdID0gewotICAgICAgICAgICAgICAgIDB4MEI2NiwgMHgw
QjY3LCAweDBCNjgsIDB4MEI2OSwgMHgwQjZBLCAweDBCNkIsIDB4MEI2QywgMHgwQjZELCAweDBC
NkUsIDB4MEI2RgotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvTnVtZXJpYyhidWlsZGVy
LCB2YWx1ZSwgb3JpeWFOdW1lcmFscyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIFBlcnNpYW46Ci0gICAgICAgIGNhc2UgVXJkdTogewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IFVDaGFyIHVyZHVOdW1lcmFsc1sxMF0gPSB7Ci0gICAgICAgICAgICAgICAg
MHgwNkYwLCAweDA2RjEsIDB4MDZGMiwgMHgwNkYzLCAweDA2RjQsIDB4MDZGNSwgMHgwNkY2LCAw
eDA2RjcsIDB4MDZGOCwgMHgwNkY5Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9OdW1l
cmljKGJ1aWxkZXIsIHZhbHVlLCB1cmR1TnVtZXJhbHMpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICAgICAgY2FzZSBUZWx1Z3U6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBVQ2hhciB0ZWx1Z3VOdW1lcmFsc1sxMF0gPSB7Ci0gICAgICAgICAgICAgICAgMHgwQzY2LCAw
eDBDNjcsIDB4MEM2OCwgMHgwQzY5LCAweDBDNkEsIDB4MEM2QiwgMHgwQzZDLCAweDBDNkQsIDB4
MEM2RSwgMHgwQzZGCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9OdW1lcmljKGJ1aWxk
ZXIsIHZhbHVlLCB0ZWx1Z3VOdW1lcmFscyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIFRpYmV0YW46IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hh
ciB0aWJldGFuTnVtZXJhbHNbMTBdID0gewotICAgICAgICAgICAgICAgIDB4MEYyMCwgMHgwRjIx
LCAweDBGMjIsIDB4MEYyMywgMHgwRjI0LCAweDBGMjUsIDB4MEYyNiwgMHgwRjI3LCAweDBGMjgs
IDB4MEYyOQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2
YWx1ZSwgdGliZXRhbk51bWVyYWxzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgVGhhaTogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIHRoYWlO
dW1lcmFsc1sxMF0gPSB7Ci0gICAgICAgICAgICAgICAgMHgwRTUwLCAweDBFNTEsIDB4MEU1Miwg
MHgwRTUzLCAweDBFNTQsIDB4MEU1NSwgMHgwRTU2LCAweDBFNTcsIDB4MEU1OCwgMHgwRTU5Ci0g
ICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCB0aGFp
TnVtZXJhbHMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBV
cHBlckhleGFkZWNpbWFsOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgTENoYXIgdXBwZXJI
ZXhhZGVjaW1hbE51bWVyYWxzWzE2XSA9IHsKLSAgICAgICAgICAgICAgICAnMCcsICcxJywgJzIn
LCAnMycsICc0JywgJzUnLCAnNicsICc3JywgJzgnLCAnOScsICdBJywgJ0InLCAnQycsICdEJywg
J0UnLCAnRicKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b051bWVyaWMoYnVpbGRlciwg
dmFsdWUsIHVwcGVySGV4YWRlY2ltYWxOdW1lcmFscyk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QmluYXJ5OiB7CisgICAgICAgIHN0YXRp
YyBjb25zdCBMQ2hhciBiaW5hcnlOdW1lcmFsc1syXSA9IHsgJzAnLCAnMScgfTsKKyAgICAgICAg
dG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBiaW5hcnlOdW1lcmFscyk7CisgICAgICAgIGJyZWFr
OworICAgIH0KIAotICAgICAgICBjYXNlIExvd2VyQWxwaGE6Ci0gICAgICAgIGNhc2UgTG93ZXJM
YXRpbjogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IExDaGFyIGxvd2VyTGF0aW5BbHBoYWJl
dFsyNl0gPSB7Ci0gICAgICAgICAgICAgICAgJ2EnLCAnYicsICdjJywgJ2QnLCAnZScsICdmJywg
J2cnLCAnaCcsICdpJywgJ2onLCAnaycsICdsJywgJ20nLAotICAgICAgICAgICAgICAgICduJywg
J28nLCAncCcsICdxJywgJ3InLCAncycsICd0JywgJ3UnLCAndicsICd3JywgJ3gnLCAneScsICd6
JwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1
ZSwgbG93ZXJMYXRpbkFscGhhYmV0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgVXBwZXJBbHBoYToKLSAgICAgICAgY2FzZSBVcHBlckxhdGluOiB7Ci0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgTENoYXIgdXBwZXJMYXRpbkFscGhhYmV0WzI2XSA9IHsKLSAg
ICAgICAgICAgICAgICAnQScsICdCJywgJ0MnLCAnRCcsICdFJywgJ0YnLCAnRycsICdIJywgJ0kn
LCAnSicsICdLJywgJ0wnLCAnTScsCi0gICAgICAgICAgICAgICAgJ04nLCAnTycsICdQJywgJ1En
LCAnUicsICdTJywgJ1QnLCAnVScsICdWJywgJ1cnLCAnWCcsICdZJywgJ1onCi0gICAgICAgICAg
ICB9OwotICAgICAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCB1cHBlckxhdGlu
QWxwaGFiZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBM
b3dlckdyZWVrOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgbG93ZXJHcmVla0Fs
cGhhYmV0WzI0XSA9IHsKLSAgICAgICAgICAgICAgICAweDAzQjEsIDB4MDNCMiwgMHgwM0IzLCAw
eDAzQjQsIDB4MDNCNSwgMHgwM0I2LCAweDAzQjcsIDB4MDNCOCwKLSAgICAgICAgICAgICAgICAw
eDAzQjksIDB4MDNCQSwgMHgwM0JCLCAweDAzQkMsIDB4MDNCRCwgMHgwM0JFLCAweDAzQkYsIDB4
MDNDMCwKLSAgICAgICAgICAgICAgICAweDAzQzEsIDB4MDNDMywgMHgwM0M0LCAweDAzQzUsIDB4
MDNDNiwgMHgwM0M3LCAweDAzQzgsIDB4MDNDOQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAg
IHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgbG93ZXJHcmVla0FscGhhYmV0KTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpCZW5nYWxp
OiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBiZW5nYWxpTnVtZXJhbHNbMTBdID0gewor
ICAgICAgICAgICAgMHgwOUU2LCAweDA5RTcsIDB4MDlFOCwgMHgwOUU5LCAweDA5RUEsIDB4MDlF
QiwgMHgwOUVDLCAweDA5RUQsIDB4MDlFRSwgMHgwOUVGCisgICAgICAgIH07CisgICAgICAgIHRv
TnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgYmVuZ2FsaU51bWVyYWxzKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQogCi0gICAgICAgIGNhc2UgSGlyYWdhbmE6IHsKLSAgICAgICAgICAgIC8vIEZJWE1F
OiBUaGlzIHRhYmxlIGNvbWVzIGZyb20gdGhlIENTUzMgZHJhZnQsIGFuZCBpcyBwcm9iYWJseQot
ICAgICAgICAgICAgLy8gaW5jb3JyZWN0LCBnaXZlbiB0aGUgY29tbWVudHMgaW4gdGhhdCBkcmFm
dC4KLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBoaXJhZ2FuYUFscGhhYmV0WzQ4XSA9
IHsKLSAgICAgICAgICAgICAgICAweDMwNDIsIDB4MzA0NCwgMHgzMDQ2LCAweDMwNDgsIDB4MzA0
QSwgMHgzMDRCLCAweDMwNEQsIDB4MzA0RiwKLSAgICAgICAgICAgICAgICAweDMwNTEsIDB4MzA1
MywgMHgzMDU1LCAweDMwNTcsIDB4MzA1OSwgMHgzMDVCLCAweDMwNUQsIDB4MzA1RiwKLSAgICAg
ICAgICAgICAgICAweDMwNjEsIDB4MzA2NCwgMHgzMDY2LCAweDMwNjgsIDB4MzA2QSwgMHgzMDZC
LCAweDMwNkMsIDB4MzA2RCwKLSAgICAgICAgICAgICAgICAweDMwNkUsIDB4MzA2RiwgMHgzMDcy
LCAweDMwNzUsIDB4MzA3OCwgMHgzMDdCLCAweDMwN0UsIDB4MzA3RiwKLSAgICAgICAgICAgICAg
ICAweDMwODAsIDB4MzA4MSwgMHgzMDgyLCAweDMwODQsIDB4MzA4NiwgMHgzMDg4LCAweDMwODks
IDB4MzA4QSwKLSAgICAgICAgICAgICAgICAweDMwOEIsIDB4MzA4QywgMHgzMDhELCAweDMwOEYs
IDB4MzA5MCwgMHgzMDkxLCAweDMwOTIsIDB4MzA5MwotICAgICAgICAgICAgfTsKLSAgICAgICAg
ICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgaGlyYWdhbmFBbHBoYWJldCk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEhpcmFnYW5hSXJvaGE6IHsK
LSAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHRhYmxlIGNvbWVzIGZyb20gdGhlIENTUzMgZHJh
ZnQsIGFuZCBpcyBwcm9iYWJseQotICAgICAgICAgICAgLy8gaW5jb3JyZWN0LCBnaXZlbiB0aGUg
Y29tbWVudHMgaW4gdGhhdCBkcmFmdC4KLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBo
aXJhZ2FuYUlyb2hhQWxwaGFiZXRbNDddID0gewotICAgICAgICAgICAgICAgIDB4MzA0NCwgMHgz
MDhELCAweDMwNkYsIDB4MzA2QiwgMHgzMDdCLCAweDMwNzgsIDB4MzA2OCwgMHgzMDYxLAotICAg
ICAgICAgICAgICAgIDB4MzA4QSwgMHgzMDZDLCAweDMwOEIsIDB4MzA5MiwgMHgzMDhGLCAweDMw
NEIsIDB4MzA4OCwgMHgzMDVGLAotICAgICAgICAgICAgICAgIDB4MzA4QywgMHgzMDVELCAweDMw
NjQsIDB4MzA2RCwgMHgzMDZBLCAweDMwODksIDB4MzA4MCwgMHgzMDQ2LAotICAgICAgICAgICAg
ICAgIDB4MzA5MCwgMHgzMDZFLCAweDMwNEEsIDB4MzA0RiwgMHgzMDg0LCAweDMwN0UsIDB4MzA1
MSwgMHgzMDc1LAotICAgICAgICAgICAgICAgIDB4MzA1MywgMHgzMDQ4LCAweDMwNjYsIDB4MzA0
MiwgMHgzMDU1LCAweDMwNEQsIDB4MzA4NiwgMHgzMDgxLAotICAgICAgICAgICAgICAgIDB4MzA3
RiwgMHgzMDU3LCAweDMwOTEsIDB4MzA3MiwgMHgzMDgyLCAweDMwNUIsIDB4MzA1OQotICAgICAg
ICAgICAgfTsKLSAgICAgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgaGlyYWdh
bmFJcm9oYUFscGhhYmV0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2UgS2F0YWthbmE6IHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHRhYmxlIGNvbWVz
IGZyb20gdGhlIENTUzMgZHJhZnQsIGFuZCBpcyBwcm9iYWJseQotICAgICAgICAgICAgLy8gaW5j
b3JyZWN0LCBnaXZlbiB0aGUgY29tbWVudHMgaW4gdGhhdCBkcmFmdC4KLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBVQ2hhciBrYXRha2FuYUFscGhhYmV0WzQ4XSA9IHsKLSAgICAgICAgICAgICAg
ICAweDMwQTIsIDB4MzBBNCwgMHgzMEE2LCAweDMwQTgsIDB4MzBBQSwgMHgzMEFCLCAweDMwQUQs
IDB4MzBBRiwKLSAgICAgICAgICAgICAgICAweDMwQjEsIDB4MzBCMywgMHgzMEI1LCAweDMwQjcs
IDB4MzBCOSwgMHgzMEJCLCAweDMwQkQsIDB4MzBCRiwKLSAgICAgICAgICAgICAgICAweDMwQzEs
IDB4MzBDNCwgMHgzMEM2LCAweDMwQzgsIDB4MzBDQSwgMHgzMENCLCAweDMwQ0MsIDB4MzBDRCwK
LSAgICAgICAgICAgICAgICAweDMwQ0UsIDB4MzBDRiwgMHgzMEQyLCAweDMwRDUsIDB4MzBEOCwg
MHgzMERCLCAweDMwREUsIDB4MzBERiwKLSAgICAgICAgICAgICAgICAweDMwRTAsIDB4MzBFMSwg
MHgzMEUyLCAweDMwRTQsIDB4MzBFNiwgMHgzMEU4LCAweDMwRTksIDB4MzBFQSwKLSAgICAgICAg
ICAgICAgICAweDMwRUIsIDB4MzBFQywgMHgzMEVELCAweDMwRUYsIDB4MzBGMCwgMHgzMEYxLCAw
eDMwRjIsIDB4MzBGMwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvQWxwaGFiZXRpYyhi
dWlsZGVyLCB2YWx1ZSwga2F0YWthbmFBbHBoYWJldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotICAgICAgICBjYXNlIEthdGFrYW5hSXJvaGE6IHsKLSAgICAgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIHRhYmxlIGNvbWVzIGZyb20gdGhlIENTUzMgZHJhZnQsIGFuZCBpcyBwcm9iYWJs
eQotICAgICAgICAgICAgLy8gaW5jb3JyZWN0LCBnaXZlbiB0aGUgY29tbWVudHMgaW4gdGhhdCBk
cmFmdC4KLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBrYXRha2FuYUlyb2hhQWxwaGFi
ZXRbNDddID0gewotICAgICAgICAgICAgICAgIDB4MzBBNCwgMHgzMEVELCAweDMwQ0YsIDB4MzBD
QiwgMHgzMERCLCAweDMwRDgsIDB4MzBDOCwgMHgzMEMxLAotICAgICAgICAgICAgICAgIDB4MzBF
QSwgMHgzMENDLCAweDMwRUIsIDB4MzBGMiwgMHgzMEVGLCAweDMwQUIsIDB4MzBFOCwgMHgzMEJG
LAotICAgICAgICAgICAgICAgIDB4MzBFQywgMHgzMEJELCAweDMwQzQsIDB4MzBDRCwgMHgzMENB
LCAweDMwRTksIDB4MzBFMCwgMHgzMEE2LAotICAgICAgICAgICAgICAgIDB4MzBGMCwgMHgzMENF
LCAweDMwQUEsIDB4MzBBRiwgMHgzMEU0LCAweDMwREUsIDB4MzBCMSwgMHgzMEQ1LAotICAgICAg
ICAgICAgICAgIDB4MzBCMywgMHgzMEE4LCAweDMwQzYsIDB4MzBBMiwgMHgzMEI1LCAweDMwQUQs
IDB4MzBFNiwgMHgzMEUxLAotICAgICAgICAgICAgICAgIDB4MzBERiwgMHgzMEI3LCAweDMwRjEs
IDB4MzBEMiwgMHgzMEUyLCAweDMwQkIsIDB4MzBCOQotICAgICAgICAgICAgfTsKLSAgICAgICAg
ICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwga2F0YWthbmFJcm9oYUFscGhhYmV0KTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpD
YW1ib2RpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLaG1lcjogeworICAgICAgICBzdGF0
aWMgY29uc3QgVUNoYXIga2htZXJOdW1lcmFsc1sxMF0gPSB7CisgICAgICAgICAgICAweDE3RTAs
IDB4MTdFMSwgMHgxN0UyLCAweDE3RTMsIDB4MTdFNCwgMHgxN0U1LCAweDE3RTYsIDB4MTdFNywg
MHgxN0U4LCAweDE3RTkKKyAgICAgICAgfTsKKyAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZh
bHVlLCBraG1lck51bWVyYWxzKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6RGV2YW5hZ2FyaTogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZGV2
YW5hZ2FyaU51bWVyYWxzWzEwXSA9IHsKKyAgICAgICAgICAgIDB4MDk2NiwgMHgwOTY3LCAweDA5
NjgsIDB4MDk2OSwgMHgwOTZBLCAweDA5NkIsIDB4MDk2QywgMHgwOTZELCAweDA5NkUsIDB4MDk2
RgorICAgICAgICB9OworICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIGRldmFuYWdh
cmlOdW1lcmFscyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6Okd1amFyYXRpOiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBndWphcmF0aU51bWVy
YWxzWzEwXSA9IHsKKyAgICAgICAgICAgIDB4MEFFNiwgMHgwQUU3LCAweDBBRTgsIDB4MEFFOSwg
MHgwQUVBLCAweDBBRUIsIDB4MEFFQywgMHgwQUVELCAweDBBRUUsIDB4MEFFRgorICAgICAgICB9
OworICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIGd1amFyYXRpTnVtZXJhbHMpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpHdXJtdWtoaTog
eworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZ3VybXVraGlOdW1lcmFsc1sxMF0gPSB7Cisg
ICAgICAgICAgICAweDBBNjYsIDB4MEE2NywgMHgwQTY4LCAweDBBNjksIDB4MEE2QSwgMHgwQTZC
LCAweDBBNkMsIDB4MEE2RCwgMHgwQTZFLCAweDBBNkYKKyAgICAgICAgfTsKKyAgICAgICAgdG9O
dW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBndXJtdWtoaU51bWVyYWxzKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6S2FubmFkYTogeworICAgICAgICBzdGF0
aWMgY29uc3QgVUNoYXIga2FubmFkYU51bWVyYWxzWzEwXSA9IHsKKyAgICAgICAgICAgIDB4MENF
NiwgMHgwQ0U3LCAweDBDRTgsIDB4MENFOSwgMHgwQ0VBLCAweDBDRUIsIDB4MENFQywgMHgwQ0VE
LCAweDBDRUUsIDB4MENFRgorICAgICAgICB9OworICAgICAgICB0b051bWVyaWMoYnVpbGRlciwg
dmFsdWUsIGthbm5hZGFOdW1lcmFscyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6Okxvd2VySGV4YWRlY2ltYWw6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0
IExDaGFyIGxvd2VySGV4YWRlY2ltYWxOdW1lcmFsc1sxNl0gPSB7CisgICAgICAgICAgICAnMCcs
ICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JywgJzgnLCAnOScsICdhJywgJ2InLCAn
YycsICdkJywgJ2UnLCAnZicKKyAgICAgICAgfTsKKyAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIs
IHZhbHVlLCBsb3dlckhleGFkZWNpbWFsTnVtZXJhbHMpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMYW86IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVD
aGFyIGxhb051bWVyYWxzWzEwXSA9IHsKKyAgICAgICAgICAgIDB4MEVEMCwgMHgwRUQxLCAweDBF
RDIsIDB4MEVEMywgMHgwRUQ0LCAweDBFRDUsIDB4MEVENiwgMHgwRUQ3LCAweDBFRDgsIDB4MEVE
OQorICAgICAgICB9OworICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIGxhb051bWVy
YWxzKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TWFs
YXlhbGFtOiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBtYWxheWFsYW1OdW1lcmFsc1sx
MF0gPSB7CisgICAgICAgICAgICAweDBENjYsIDB4MEQ2NywgMHgwRDY4LCAweDBENjksIDB4MEQ2
QSwgMHgwRDZCLCAweDBENkMsIDB4MEQ2RCwgMHgwRDZFLCAweDBENkYKKyAgICAgICAgfTsKKyAg
ICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBtYWxheWFsYW1OdW1lcmFscyk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok1vbmdvbGlhbjogewor
ICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgbW9uZ29saWFuTnVtZXJhbHNbMTBdID0geworICAg
ICAgICAgICAgMHgxODEwLCAweDE4MTEsIDB4MTgxMiwgMHgxODEzLCAweDE4MTQsIDB4MTgxNSwg
MHgxODE2LCAweDE4MTcsIDB4MTgxOCwgMHgxODE5CisgICAgICAgIH07CisgICAgICAgIHRvTnVt
ZXJpYyhidWlsZGVyLCB2YWx1ZSwgbW9uZ29saWFuTnVtZXJhbHMpOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpNeWFubWFyOiB7CisgICAgICAgIHN0YXRp
YyBjb25zdCBVQ2hhciBteWFubWFyTnVtZXJhbHNbMTBdID0geworICAgICAgICAgICAgMHgxMDQw
LCAweDEwNDEsIDB4MTA0MiwgMHgxMDQzLCAweDEwNDQsIDB4MTA0NSwgMHgxMDQ2LCAweDEwNDcs
IDB4MTA0OCwgMHgxMDQ5CisgICAgICAgIH07CisgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2
YWx1ZSwgbXlhbm1hck51bWVyYWxzKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6T2N0YWw6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IExDaGFyIG9jdGFs
TnVtZXJhbHNbOF0gPSB7CisgICAgICAgICAgICAnMCcsICcxJywgJzInLCAnMycsICc0JywgJzUn
LCAnNicsICc3JworICAgICAgICB9OworICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUs
IG9jdGFsTnVtZXJhbHMpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpPcml5YTogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgb3JpeWFOdW1lcmFs
c1sxMF0gPSB7CisgICAgICAgICAgICAweDBCNjYsIDB4MEI2NywgMHgwQjY4LCAweDBCNjksIDB4
MEI2QSwgMHgwQjZCLCAweDBCNkMsIDB4MEI2RCwgMHgwQjZFLCAweDBCNkYKKyAgICAgICAgfTsK
KyAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBvcml5YU51bWVyYWxzKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6UGVyc2lhbjoKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OlVyZHU6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIHVy
ZHVOdW1lcmFsc1sxMF0gPSB7CisgICAgICAgICAgICAweDA2RjAsIDB4MDZGMSwgMHgwNkYyLCAw
eDA2RjMsIDB4MDZGNCwgMHgwNkY1LCAweDA2RjYsIDB4MDZGNywgMHgwNkY4LCAweDA2RjkKKyAg
ICAgICAgfTsKKyAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCB1cmR1TnVtZXJhbHMp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUZWx1Z3U6
IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIHRlbHVndU51bWVyYWxzWzEwXSA9IHsKKyAg
ICAgICAgICAgIDB4MEM2NiwgMHgwQzY3LCAweDBDNjgsIDB4MEM2OSwgMHgwQzZBLCAweDBDNkIs
IDB4MEM2QywgMHgwQzZELCAweDBDNkUsIDB4MEM2RgorICAgICAgICB9OworICAgICAgICB0b051
bWVyaWMoYnVpbGRlciwgdmFsdWUsIHRlbHVndU51bWVyYWxzKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGliZXRhbjogeworICAgICAgICBzdGF0aWMg
Y29uc3QgVUNoYXIgdGliZXRhbk51bWVyYWxzWzEwXSA9IHsKKyAgICAgICAgICAgIDB4MEYyMCwg
MHgwRjIxLCAweDBGMjIsIDB4MEYyMywgMHgwRjI0LCAweDBGMjUsIDB4MEYyNiwgMHgwRjI3LCAw
eDBGMjgsIDB4MEYyOQorICAgICAgICB9OworICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFs
dWUsIHRpYmV0YW5OdW1lcmFscyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OlRoYWk6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIHRoYWlOdW1l
cmFsc1sxMF0gPSB7CisgICAgICAgICAgICAweDBFNTAsIDB4MEU1MSwgMHgwRTUyLCAweDBFNTMs
IDB4MEU1NCwgMHgwRTU1LCAweDBFNTYsIDB4MEU1NywgMHgwRTU4LCAweDBFNTkKKyAgICAgICAg
fTsKKyAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCB0aGFpTnVtZXJhbHMpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckhleGFkZWNp
bWFsOiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBMQ2hhciB1cHBlckhleGFkZWNpbWFsTnVtZXJh
bHNbMTZdID0geworICAgICAgICAgICAgJzAnLCAnMScsICcyJywgJzMnLCAnNCcsICc1JywgJzYn
LCAnNycsICc4JywgJzknLCAnQScsICdCJywgJ0MnLCAnRCcsICdFJywgJ0YnCisgICAgICAgIH07
CisgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgdXBwZXJIZXhhZGVjaW1hbE51bWVy
YWxzKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCi0gICAgICAgIGNhc2UgQWZhcjoKLSAgICAg
ICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lQWFFdDoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVo
YW1lQWFFcjogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGV0aGlvcGljSGFsZWhh
bWVBYUVyQWxwaGFiZXRbMThdID0gewotICAgICAgICAgICAgICAgIDB4MTIwMCwgMHgxMjA4LCAw
eDEyMTAsIDB4MTIxOCwgMHgxMjI4LCAweDEyMzAsIDB4MTI2MCwgMHgxMjcwLCAweDEyOTAsCi0g
ICAgICAgICAgICAgICAgMHgxMkEwLCAweDEyQTgsIDB4MTJDOCwgMHgxMkQwLCAweDEyRTgsIDB4
MTJGMCwgMHgxMzA4LCAweDEzMzgsIDB4MTM0OAotICAgICAgICAgICAgfTsKLSAgICAgICAgICAg
IHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNIYWxlaGFtZUFhRXJBbHBoYWJl
dCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEFtaGFyaWM6
Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUFtRXQ6IHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBVQ2hhciBldGhpb3BpY0hhbGVoYW1lQW1FdEFscGhhYmV0WzMzXSA9IHsKLSAgICAg
ICAgICAgICAgICAweDEyMDAsIDB4MTIwOCwgMHgxMjEwLCAweDEyMTgsIDB4MTIyMCwgMHgxMjI4
LCAweDEyMzAsIDB4MTIzOCwgMHgxMjQwLAotICAgICAgICAgICAgICAgIDB4MTI2MCwgMHgxMjcw
LCAweDEyNzgsIDB4MTI4MCwgMHgxMjkwLCAweDEyOTgsIDB4MTJBMCwgMHgxMkE4LCAweDEyQjgs
Ci0gICAgICAgICAgICAgICAgMHgxMkM4LCAweDEyRDAsIDB4MTJEOCwgMHgxMkUwLCAweDEyRTgs
IDB4MTJGMCwgMHgxMzAwLCAweDEzMDgsIDB4MTMyMCwKLSAgICAgICAgICAgICAgICAweDEzMjgs
IDB4MTMzMCwgMHgxMzM4LCAweDEzNDAsIDB4MTM0OCwgMHgxMzUwCi0gICAgICAgICAgICB9Owot
ICAgICAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBldGhpb3BpY0hhbGVoYW1l
QW1FdEFscGhhYmV0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgQW1oYXJpY0FiZWdlZGU6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlQW1FdDogewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGV0aGlvcGljQWJlZ2VkZUFtRXRBbHBoYWJl
dFszM10gPSB7Ci0gICAgICAgICAgICAgICAgMHgxMkEwLCAweDEyNjAsIDB4MTMwOCwgMHgxMkYw
LCAweDEzMDAsIDB4MTIwMCwgMHgxMkM4LCAweDEyRDgsIDB4MTJFMCwKLSAgICAgICAgICAgICAg
ICAweDEyMTAsIDB4MTMyMCwgMHgxMzI4LCAweDEyRTgsIDB4MTJBOCwgMHgxMkI4LCAweDEyMDgs
IDB4MTIxOCwgMHgxMjkwLAotICAgICAgICAgICAgICAgIDB4MTI5OCwgMHgxMjIwLCAweDEyRDAs
IDB4MTM0OCwgMHgxMzM4LCAweDEyNDAsIDB4MTIyOCwgMHgxMjMwLCAweDEyMzgsCi0gICAgICAg
ICAgICAgICAgMHgxMjcwLCAweDEyNzgsIDB4MTI4MCwgMHgxMzQwLCAweDEzMzAsIDB4MTM1MAot
ICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwg
ZXRoaW9waWNBYmVnZWRlQW1FdEFscGhhYmV0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgQ2prRWFydGhseUJyYW5jaDogewotICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IFVDaGFyIGNqa0VhcnRobHlCcmFuY2hBbHBoYWJldFsxMl0gPSB7Ci0gICAgICAgICAg
ICAgICAgMHg1QjUwLCAweDRFMTEsIDB4NUJDNSwgMHg1MzZGLCAweDhGQjAsIDB4NURGMywgMHg1
MzQ4LCAweDY3MkEsIDB4NzUzMywKLSAgICAgICAgICAgICAgICAweDkxNDksIDB4NjIwQywgMHg0
RUE1Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZh
bHVlLCBjamtFYXJ0aGx5QnJhbmNoQWxwaGFiZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBDamtIZWF2ZW5seVN0ZW06IHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBVQ2hhciBjamtIZWF2ZW5seVN0ZW1BbHBoYWJldFsxMF0gPSB7Ci0gICAgICAgICAg
ICAgICAgMHg3NTMyLCAweDRFNTksIDB4NEUxOSwgMHg0RTAxLCAweDYyMEEsIDB4NURGMSwgMHg1
RTlBLCAweDhGOUIsIDB4NThFQywKLSAgICAgICAgICAgICAgICAweDc2NzgKLSAgICAgICAgICAg
IH07Ci0gICAgICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGNqa0hlYXZlbmx5
U3RlbUFscGhhYmV0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgRXRoaW9waWM6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUdlejogewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGV0aGlvcGljSGFsZWhhbWVHZXpBbHBoYWJldFsyNl0g
PSB7Ci0gICAgICAgICAgICAgICAgMHgxMjAwLCAweDEyMDgsIDB4MTIxMCwgMHgxMjE4LCAweDEy
MjAsIDB4MTIyOCwgMHgxMjMwLCAweDEyNDAsIDB4MTI2MCwKLSAgICAgICAgICAgICAgICAweDEy
NzAsIDB4MTI4MCwgMHgxMjkwLCAweDEyQTAsIDB4MTJBOCwgMHgxMkM4LCAweDEyRDAsIDB4MTJE
OCwgMHgxMkU4LAotICAgICAgICAgICAgICAgIDB4MTJGMCwgMHgxMzA4LCAweDEzMjAsIDB4MTMz
MCwgMHgxMzM4LCAweDEzNDAsIDB4MTM0OCwgMHgxMzUwCi0gICAgICAgICAgICB9OwotICAgICAg
ICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBldGhpb3BpY0hhbGVoYW1lR2V6QWxw
aGFiZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBFdGhp
b3BpY0FiZWdlZGU6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlR2V6OiB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZXRoaW9waWNBYmVnZWRlR2V6QWxwaGFiZXRbMjZdID0g
ewotICAgICAgICAgICAgICAgIDB4MTJBMCwgMHgxMjYwLCAweDEzMDgsIDB4MTJGMCwgMHgxMjAw
LCAweDEyQzgsIDB4MTJEOCwgMHgxMjEwLCAweDEzMjAsCi0gICAgICAgICAgICAgICAgMHgxMkU4
LCAweDEyQTgsIDB4MTIwOCwgMHgxMjE4LCAweDEyOTAsIDB4MTIyMCwgMHgxMkQwLCAweDEzNDgs
IDB4MTMzOCwKLSAgICAgICAgICAgICAgICAweDEyNDAsIDB4MTIyOCwgMHgxMjMwLCAweDEyNzAs
IDB4MTI4MCwgMHgxMzQwLCAweDEzMzAsIDB4MTM1MAotICAgICAgICAgICAgfTsKLSAgICAgICAg
ICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNBYmVnZWRlR2V6QWxwaGFi
ZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBIYW5ndWxD
b25zb25hbnQ6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBoYW5ndWxDb25zb25h
bnRBbHBoYWJldFsxNF0gPSB7Ci0gICAgICAgICAgICAgICAgMHgzMTMxLCAweDMxMzQsIDB4MzEz
NywgMHgzMTM5LCAweDMxNDEsIDB4MzE0MiwgMHgzMTQ1LCAweDMxNDcsIDB4MzE0OCwKLSAgICAg
ICAgICAgICAgICAweDMxNEEsIDB4MzE0QiwgMHgzMTRDLCAweDMxNEQsIDB4MzE0RQotICAgICAg
ICAgICAgfTsKLSAgICAgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgaGFuZ3Vs
Q29uc29uYW50QWxwaGFiZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBIYW5ndWw6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBoYW5ndWxB
bHBoYWJldFsxNF0gPSB7Ci0gICAgICAgICAgICAgICAgMHhBQzAwLCAweEIwOTgsIDB4QjJFNCwg
MHhCNzdDLCAweEI5QzgsIDB4QkMxNCwgMHhDMEFDLCAweEM1NDQsIDB4Qzc5MCwKLSAgICAgICAg
ICAgICAgICAweENDMjgsIDB4Q0U3NCwgMHhEMEMwLCAweEQzMEMsIDB4RDU1OAotICAgICAgICAg
ICAgfTsKLSAgICAgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgaGFuZ3VsQWxw
aGFiZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBPcm9t
bzoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lT21FdDogewotICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IFVDaGFyIGV0aGlvcGljSGFsZWhhbWVPbUV0QWxwaGFiZXRbMjVdID0gewotICAg
ICAgICAgICAgICAgIDB4MTIwMCwgMHgxMjA4LCAweDEyMTgsIDB4MTIyOCwgMHgxMjMwLCAweDEy
MzgsIDB4MTI0MCwgMHgxMjYwLCAweDEyNzAsCi0gICAgICAgICAgICAgICAgMHgxMjc4LCAweDEy
OTAsIDB4MTI5OCwgMHgxMkEwLCAweDEyQTgsIDB4MTJDOCwgMHgxMkU4LCAweDEyRjAsIDB4MTJG
OCwKLSAgICAgICAgICAgICAgICAweDEzMDAsIDB4MTMwOCwgMHgxMzIwLCAweDEzMjgsIDB4MTMz
OCwgMHgxMzMwLCAweDEzNDgKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b0FscGhhYmV0
aWMoYnVpbGRlciwgdmFsdWUsIGV0aGlvcGljSGFsZWhhbWVPbUV0QWxwaGFiZXQpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBTaWRhbWE6Ci0gICAgICAgIGNh
c2UgRXRoaW9waWNIYWxlaGFtZVNpZEV0OiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNo
YXIgZXRoaW9waWNIYWxlaGFtZVNpZEV0QWxwaGFiZXRbMjZdID0gewotICAgICAgICAgICAgICAg
IDB4MTIwMCwgMHgxMjA4LCAweDEyMTAsIDB4MTIxOCwgMHgxMjI4LCAweDEyMzAsIDB4MTIzOCwg
MHgxMjQwLCAweDEyNjAsCi0gICAgICAgICAgICAgICAgMHgxMjcwLCAweDEyNzgsIDB4MTI5MCwg
MHgxMjk4LCAweDEyQTAsIDB4MTJBOCwgMHgxMkM4LCAweDEyRTgsIDB4MTJGMCwKLSAgICAgICAg
ICAgICAgICAweDEyRjgsIDB4MTMwMCwgMHgxMzA4LCAweDEzMjAsIDB4MTMyOCwgMHgxMzM4LCAw
eDEzMzAsIDB4MTM0OAotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvQWxwaGFiZXRpYyhi
dWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNIYWxlaGFtZVNpZEV0QWxwaGFiZXQpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBTb21hbGk6Ci0gICAgICAgIGNhc2Ug
RXRoaW9waWNIYWxlaGFtZVNvRXQ6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBl
dGhpb3BpY0hhbGVoYW1lU29FdEFscGhhYmV0WzIyXSA9IHsKLSAgICAgICAgICAgICAgICAweDEy
MDAsIDB4MTIwOCwgMHgxMjEwLCAweDEyMTgsIDB4MTIyOCwgMHgxMjMwLCAweDEyMzgsIDB4MTI0
MCwgMHgxMjYwLAotICAgICAgICAgICAgICAgIDB4MTI3MCwgMHgxMjkwLCAweDEyQTAsIDB4MTJB
OCwgMHgxMkI4LCAweDEyQzgsIDB4MTJEMCwgMHgxMkU4LCAweDEyRjAsCi0gICAgICAgICAgICAg
ICAgMHgxMzAwLCAweDEzMDgsIDB4MTMzOCwgMHgxMzQ4Ci0gICAgICAgICAgICB9OwotICAgICAg
ICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBldGhpb3BpY0hhbGVoYW1lU29FdEFs
cGhhYmV0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVGln
cmU6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVRpZzogewotICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IFVDaGFyIGV0aGlvcGljSGFsZWhhbWVUaWdBbHBoYWJldFsyN10gPSB7Ci0gICAg
ICAgICAgICAgICAgMHgxMjAwLCAweDEyMDgsIDB4MTIxMCwgMHgxMjE4LCAweDEyMjgsIDB4MTIz
MCwgMHgxMjM4LCAweDEyNDAsIDB4MTI2MCwKLSAgICAgICAgICAgICAgICAweDEyNzAsIDB4MTI3
OCwgMHgxMjkwLCAweDEyQTAsIDB4MTJBOCwgMHgxMkM4LCAweDEyRDAsIDB4MTJEOCwgMHgxMkU4
LAotICAgICAgICAgICAgICAgIDB4MTJGMCwgMHgxMzAwLCAweDEzMDgsIDB4MTMyMCwgMHgxMzI4
LCAweDEzMzgsIDB4MTMzMCwgMHgxMzQ4LCAweDEzNTAKLSAgICAgICAgICAgIH07Ci0gICAgICAg
ICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGV0aGlvcGljSGFsZWhhbWVUaWdBbHBo
YWJldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFRpZ3Jp
bnlhRXI6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVRpRXI6IHsKLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBVQ2hhciBldGhpb3BpY0hhbGVoYW1lVGlFckFscGhhYmV0WzMxXSA9IHsK
LSAgICAgICAgICAgICAgICAweDEyMDAsIDB4MTIwOCwgMHgxMjEwLCAweDEyMTgsIDB4MTIyOCwg
MHgxMjMwLCAweDEyMzgsIDB4MTI0MCwgMHgxMjUwLAotICAgICAgICAgICAgICAgIDB4MTI2MCwg
MHgxMjcwLCAweDEyNzgsIDB4MTI5MCwgMHgxMjk4LCAweDEyQTAsIDB4MTJBOCwgMHgxMkI4LCAw
eDEyQzgsCi0gICAgICAgICAgICAgICAgMHgxMkQwLCAweDEyRDgsIDB4MTJFMCwgMHgxMkU4LCAw
eDEyRjAsIDB4MTMwMCwgMHgxMzA4LCAweDEzMjAsIDB4MTMyOCwKLSAgICAgICAgICAgICAgICAw
eDEzMzAsIDB4MTMzOCwgMHgxMzQ4LCAweDEzNTAKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAg
ICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGV0aGlvcGljSGFsZWhhbWVUaUVyQWxwaGFi
ZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUaWdyaW55
YUVyQWJlZ2VkZToKLSAgICAgICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVUaUVyOiB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZXRoaW9waWNBYmVnZWRlVGlFckFscGhhYmV0WzMxXSA9
IHsKLSAgICAgICAgICAgICAgICAweDEyQTAsIDB4MTI2MCwgMHgxMzA4LCAweDEyRjAsIDB4MTMw
MCwgMHgxMjAwLCAweDEyQzgsIDB4MTJEOCwgMHgxMkUwLAotICAgICAgICAgICAgICAgIDB4MTIx
MCwgMHgxMzIwLCAweDEzMjgsIDB4MTJFOCwgMHgxMkE4LCAweDEyQjgsIDB4MTIwOCwgMHgxMjE4
LCAweDEyOTAsCi0gICAgICAgICAgICAgICAgMHgxMjk4LCAweDEyRDAsIDB4MTM0OCwgMHgxMzM4
LCAweDEyNDAsIDB4MTI1MCwgMHgxMjI4LCAweDEyMzAsIDB4MTIzOCwKLSAgICAgICAgICAgICAg
ICAweDEyNzAsIDB4MTI3OCwgMHgxMzMwLCAweDEzNTAKLSAgICAgICAgICAgIH07Ci0gICAgICAg
ICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGV0aGlvcGljQWJlZ2VkZVRpRXJBbHBo
YWJldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFRpZ3Jp
bnlhRXQ6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVRpRXQ6IHsKLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBVQ2hhciBldGhpb3BpY0hhbGVoYW1lVGlFdEFscGhhYmV0WzM0XSA9IHsK
LSAgICAgICAgICAgICAgICAweDEyMDAsIDB4MTIwOCwgMHgxMjEwLCAweDEyMTgsIDB4MTIyMCwg
MHgxMjI4LCAweDEyMzAsIDB4MTIzOCwgMHgxMjQwLAotICAgICAgICAgICAgICAgIDB4MTI1MCwg
MHgxMjYwLCAweDEyNzAsIDB4MTI3OCwgMHgxMjgwLCAweDEyOTAsIDB4MTI5OCwgMHgxMkEwLCAw
eDEyQTgsCi0gICAgICAgICAgICAgICAgMHgxMkI4LCAweDEyQzgsIDB4MTJEMCwgMHgxMkQ4LCAw
eDEyRTAsIDB4MTJFOCwgMHgxMkYwLCAweDEzMDAsIDB4MTMwOCwKLSAgICAgICAgICAgICAgICAw
eDEzMjAsIDB4MTMyOCwgMHgxMzMwLCAweDEzMzgsIDB4MTM0MCwgMHgxMzQ4LCAweDEzNTAKLSAg
ICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGV0
aGlvcGljSGFsZWhhbWVUaUV0QWxwaGFiZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBUaWdyaW55YUV0QWJlZ2VkZToKLSAgICAgICAgY2FzZSBFdGhpb3Bp
Y0FiZWdlZGVUaUV0OiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZXRoaW9waWNB
YmVnZWRlVGlFdEFscGhhYmV0WzM0XSA9IHsKLSAgICAgICAgICAgICAgICAweDEyQTAsIDB4MTI2
MCwgMHgxMzA4LCAweDEyRjAsIDB4MTMwMCwgMHgxMjAwLCAweDEyQzgsIDB4MTJEOCwgMHgxMkUw
LAotICAgICAgICAgICAgICAgIDB4MTIxMCwgMHgxMzIwLCAweDEzMjgsIDB4MTJFOCwgMHgxMkE4
LCAweDEyQjgsIDB4MTIwOCwgMHgxMjE4LCAweDEyOTAsCi0gICAgICAgICAgICAgICAgMHgxMjk4
LCAweDEyMjAsIDB4MTJEMCwgMHgxMzQ4LCAweDEzMzgsIDB4MTI0MCwgMHgxMjUwLCAweDEyMjgs
IDB4MTIzMCwKLSAgICAgICAgICAgICAgICAweDEyMzgsIDB4MTI3MCwgMHgxMjc4LCAweDEyODAs
IDB4MTM0MCwgMHgxMzMwLCAweDEzNTAKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b0Fs
cGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGV0aGlvcGljQWJlZ2VkZVRpRXRBbHBoYWJldCk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFVwcGVyR3JlZWs6IHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciB1cHBlckdyZWVrQWxwaGFiZXRbMjRdID0g
ewotICAgICAgICAgICAgICAgIDB4MDM5MSwgMHgwMzkyLCAweDAzOTMsIDB4MDM5NCwgMHgwMzk1
LCAweDAzOTYsIDB4MDM5NywgMHgwMzk4LCAweDAzOTksCi0gICAgICAgICAgICAgICAgMHgwMzlB
LCAweDAzOUIsIDB4MDM5QywgMHgwMzlELCAweDAzOUUsIDB4MDM5RiwgMHgwM0EwLCAweDAzQTEs
IDB4MDNBMywKLSAgICAgICAgICAgICAgICAweDAzQTQsIDB4MDNBNSwgMHgwM0E2LCAweDAzQTcs
IDB4MDNBOCwgMHgwM0E5Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9BbHBoYWJldGlj
KGJ1aWxkZXIsIHZhbHVlLCB1cHBlckdyZWVrQWxwaGFiZXQpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBMb3dlck5vcndlZ2lhbjogewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IExDaGFyIGxvd2VyTm9yd2VnaWFuQWxwaGFiZXRbMjldID0gewotICAgICAg
ICAgICAgICAgIDB4NjEsIDB4NjIsIDB4NjMsIDB4NjQsIDB4NjUsIDB4NjYsIDB4NjcsIDB4Njgs
IDB4NjksCi0gICAgICAgICAgICAgICAgMHg2QSwgMHg2QiwgMHg2QywgMHg2RCwgMHg2RSwgMHg2
RiwgMHg3MCwgMHg3MSwgMHg3MiwKLSAgICAgICAgICAgICAgICAweDczLCAweDc0LCAweDc1LCAw
eDc2LCAweDc3LCAweDc4LCAweDc5LCAweDdBLCAweEU2LAotICAgICAgICAgICAgICAgIDB4Rjgs
IDB4RTUKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwg
dmFsdWUsIGxvd2VyTm9yd2VnaWFuQWxwaGFiZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBVcHBlck5vcndlZ2lhbjogewotICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IExDaGFyIHVwcGVyTm9yd2VnaWFuQWxwaGFiZXRbMjldID0gewotICAgICAgICAgICAg
ICAgIDB4NDEsIDB4NDIsIDB4NDMsIDB4NDQsIDB4NDUsIDB4NDYsIDB4NDcsIDB4NDgsIDB4NDks
Ci0gICAgICAgICAgICAgICAgMHg0QSwgMHg0QiwgMHg0QywgMHg0RCwgMHg0RSwgMHg0RiwgMHg1
MCwgMHg1MSwgMHg1MiwKLSAgICAgICAgICAgICAgICAweDUzLCAweDU0LCAweDU1LCAweDU2LCAw
eDU3LCAweDU4LCAweDU5LCAweDVBLCAweEM2LAotICAgICAgICAgICAgICAgIDB4RDgsIDB4QzUK
LSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUs
IHVwcGVyTm9yd2VnaWFuQWxwaGFiZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBDSktJZGVvZ3JhcGhpYzogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IFVDaGFyIHRyYWRpdGlvbmFsQ2hpbmVzZUluZm9ybWFsVGFibGVbMTZdID0gewotICAgICAgICAg
ICAgICAgIDB4ODQyQywgMHg1MTA0LCAweDUxNDYsCi0gICAgICAgICAgICAgICAgMHg1MzQxLCAw
eDc2N0UsIDB4NTM0MywKLSAgICAgICAgICAgICAgICAweDk2RjYsIDB4NEUwMCwgMHg0RThDLCAw
eDRFMDksIDB4NTZEQiwKLSAgICAgICAgICAgICAgICAweDRFOTQsIDB4NTE2RCwgMHg0RTAzLCAw
eDUxNkIsIDB4NEU1RAotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvQ0pLSWRlb2dyYXBo
aWMoYnVpbGRlciwgdmFsdWUsIHRyYWRpdGlvbmFsQ2hpbmVzZUluZm9ybWFsVGFibGUpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2Vy
QWxwaGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckxhdGluOiB7CisgICAgICAgIHN0
YXRpYyBjb25zdCBMQ2hhciBsb3dlckxhdGluQWxwaGFiZXRbMjZdID0geworICAgICAgICAgICAg
J2EnLCAnYicsICdjJywgJ2QnLCAnZScsICdmJywgJ2cnLCAnaCcsICdpJywgJ2onLCAnaycsICds
JywgJ20nLAorICAgICAgICAgICAgJ24nLCAnbycsICdwJywgJ3EnLCAncicsICdzJywgJ3QnLCAn
dScsICd2JywgJ3cnLCAneCcsICd5JywgJ3onCisgICAgICAgIH07CisgICAgICAgIHRvQWxwaGFi
ZXRpYyhidWlsZGVyLCB2YWx1ZSwgbG93ZXJMYXRpbkFscGhhYmV0KTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJBbHBoYToKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OlVwcGVyTGF0aW46IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IExDaGFyIHVw
cGVyTGF0aW5BbHBoYWJldFsyNl0gPSB7CisgICAgICAgICAgICAnQScsICdCJywgJ0MnLCAnRCcs
ICdFJywgJ0YnLCAnRycsICdIJywgJ0knLCAnSicsICdLJywgJ0wnLCAnTScsCisgICAgICAgICAg
ICAnTicsICdPJywgJ1AnLCAnUScsICdSJywgJ1MnLCAnVCcsICdVJywgJ1YnLCAnVycsICdYJywg
J1knLCAnWicKKyAgICAgICAgfTsKKyAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVl
LCB1cHBlckxhdGluQWxwaGFiZXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpMb3dlckdyZWVrOiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBs
b3dlckdyZWVrQWxwaGFiZXRbMjRdID0geworICAgICAgICAgICAgMHgwM0IxLCAweDAzQjIsIDB4
MDNCMywgMHgwM0I0LCAweDAzQjUsIDB4MDNCNiwgMHgwM0I3LCAweDAzQjgsCisgICAgICAgICAg
ICAweDAzQjksIDB4MDNCQSwgMHgwM0JCLCAweDAzQkMsIDB4MDNCRCwgMHgwM0JFLCAweDAzQkYs
IDB4MDNDMCwKKyAgICAgICAgICAgIDB4MDNDMSwgMHgwM0MzLCAweDAzQzQsIDB4MDNDNSwgMHgw
M0M2LCAweDAzQzcsIDB4MDNDOCwgMHgwM0M5CisgICAgICAgIH07CisgICAgICAgIHRvQWxwaGFi
ZXRpYyhidWlsZGVyLCB2YWx1ZSwgbG93ZXJHcmVla0FscGhhYmV0KTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQogCi0gICAgICAgIGNhc2UgTG93ZXJSb21hbjoKLSAgICAgICAgICAgIHRvUm9tYW4o
YnVpbGRlciwgdmFsdWUsIGZhbHNlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFVwcGVyUm9tYW46Ci0gICAgICAgICAgICB0b1JvbWFuKGJ1aWxkZXIsIHZhbHVlLCB0cnVlKTsK
LSAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGlyYWdhbmE6IHsK
KyAgICAgICAgLy8gRklYTUU6IFRoaXMgdGFibGUgY29tZXMgZnJvbSB0aGUgQ1NTMyBkcmFmdCwg
YW5kIGlzIHByb2JhYmx5CisgICAgICAgIC8vIGluY29ycmVjdCwgZ2l2ZW4gdGhlIGNvbW1lbnRz
IGluIHRoYXQgZHJhZnQuCisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBoaXJhZ2FuYUFscGhh
YmV0WzQ4XSA9IHsKKyAgICAgICAgICAgIDB4MzA0MiwgMHgzMDQ0LCAweDMwNDYsIDB4MzA0OCwg
MHgzMDRBLCAweDMwNEIsIDB4MzA0RCwgMHgzMDRGLAorICAgICAgICAgICAgMHgzMDUxLCAweDMw
NTMsIDB4MzA1NSwgMHgzMDU3LCAweDMwNTksIDB4MzA1QiwgMHgzMDVELCAweDMwNUYsCisgICAg
ICAgICAgICAweDMwNjEsIDB4MzA2NCwgMHgzMDY2LCAweDMwNjgsIDB4MzA2QSwgMHgzMDZCLCAw
eDMwNkMsIDB4MzA2RCwKKyAgICAgICAgICAgIDB4MzA2RSwgMHgzMDZGLCAweDMwNzIsIDB4MzA3
NSwgMHgzMDc4LCAweDMwN0IsIDB4MzA3RSwgMHgzMDdGLAorICAgICAgICAgICAgMHgzMDgwLCAw
eDMwODEsIDB4MzA4MiwgMHgzMDg0LCAweDMwODYsIDB4MzA4OCwgMHgzMDg5LCAweDMwOEEsCisg
ICAgICAgICAgICAweDMwOEIsIDB4MzA4QywgMHgzMDhELCAweDMwOEYsIDB4MzA5MCwgMHgzMDkx
LCAweDMwOTIsIDB4MzA5MworICAgICAgICB9OworICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRl
ciwgdmFsdWUsIGhpcmFnYW5hQWxwaGFiZXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpIaXJhZ2FuYUlyb2hhOiB7CisgICAgICAgIC8vIEZJWE1FOiBU
aGlzIHRhYmxlIGNvbWVzIGZyb20gdGhlIENTUzMgZHJhZnQsIGFuZCBpcyBwcm9iYWJseQorICAg
ICAgICAvLyBpbmNvcnJlY3QsIGdpdmVuIHRoZSBjb21tZW50cyBpbiB0aGF0IGRyYWZ0LgorICAg
ICAgICBzdGF0aWMgY29uc3QgVUNoYXIgaGlyYWdhbmFJcm9oYUFscGhhYmV0WzQ3XSA9IHsKKyAg
ICAgICAgICAgIDB4MzA0NCwgMHgzMDhELCAweDMwNkYsIDB4MzA2QiwgMHgzMDdCLCAweDMwNzgs
IDB4MzA2OCwgMHgzMDYxLAorICAgICAgICAgICAgMHgzMDhBLCAweDMwNkMsIDB4MzA4QiwgMHgz
MDkyLCAweDMwOEYsIDB4MzA0QiwgMHgzMDg4LCAweDMwNUYsCisgICAgICAgICAgICAweDMwOEMs
IDB4MzA1RCwgMHgzMDY0LCAweDMwNkQsIDB4MzA2QSwgMHgzMDg5LCAweDMwODAsIDB4MzA0NiwK
KyAgICAgICAgICAgIDB4MzA5MCwgMHgzMDZFLCAweDMwNEEsIDB4MzA0RiwgMHgzMDg0LCAweDMw
N0UsIDB4MzA1MSwgMHgzMDc1LAorICAgICAgICAgICAgMHgzMDUzLCAweDMwNDgsIDB4MzA2Niwg
MHgzMDQyLCAweDMwNTUsIDB4MzA0RCwgMHgzMDg2LCAweDMwODEsCisgICAgICAgICAgICAweDMw
N0YsIDB4MzA1NywgMHgzMDkxLCAweDMwNzIsIDB4MzA4MiwgMHgzMDVCLCAweDMwNTkKKyAgICAg
ICAgfTsKKyAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBoaXJhZ2FuYUlyb2hh
QWxwaGFiZXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpLYXRha2FuYTogeworICAgICAgICAvLyBGSVhNRTogVGhpcyB0YWJsZSBjb21lcyBmcm9tIHRo
ZSBDU1MzIGRyYWZ0LCBhbmQgaXMgcHJvYmFibHkKKyAgICAgICAgLy8gaW5jb3JyZWN0LCBnaXZl
biB0aGUgY29tbWVudHMgaW4gdGhhdCBkcmFmdC4KKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFy
IGthdGFrYW5hQWxwaGFiZXRbNDhdID0geworICAgICAgICAgICAgMHgzMEEyLCAweDMwQTQsIDB4
MzBBNiwgMHgzMEE4LCAweDMwQUEsIDB4MzBBQiwgMHgzMEFELCAweDMwQUYsCisgICAgICAgICAg
ICAweDMwQjEsIDB4MzBCMywgMHgzMEI1LCAweDMwQjcsIDB4MzBCOSwgMHgzMEJCLCAweDMwQkQs
IDB4MzBCRiwKKyAgICAgICAgICAgIDB4MzBDMSwgMHgzMEM0LCAweDMwQzYsIDB4MzBDOCwgMHgz
MENBLCAweDMwQ0IsIDB4MzBDQywgMHgzMENELAorICAgICAgICAgICAgMHgzMENFLCAweDMwQ0Ys
IDB4MzBEMiwgMHgzMEQ1LCAweDMwRDgsIDB4MzBEQiwgMHgzMERFLCAweDMwREYsCisgICAgICAg
ICAgICAweDMwRTAsIDB4MzBFMSwgMHgzMEUyLCAweDMwRTQsIDB4MzBFNiwgMHgzMEU4LCAweDMw
RTksIDB4MzBFQSwKKyAgICAgICAgICAgIDB4MzBFQiwgMHgzMEVDLCAweDMwRUQsIDB4MzBFRiwg
MHgzMEYwLCAweDMwRjEsIDB4MzBGMiwgMHgzMEYzCisgICAgICAgIH07CisgICAgICAgIHRvQWxw
aGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwga2F0YWthbmFBbHBoYWJldCk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkthdGFrYW5hSXJvaGE6IHsKKyAgICAg
ICAgLy8gRklYTUU6IFRoaXMgdGFibGUgY29tZXMgZnJvbSB0aGUgQ1NTMyBkcmFmdCwgYW5kIGlz
IHByb2JhYmx5CisgICAgICAgIC8vIGluY29ycmVjdCwgZ2l2ZW4gdGhlIGNvbW1lbnRzIGluIHRo
YXQgZHJhZnQuCisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBrYXRha2FuYUlyb2hhQWxwaGFi
ZXRbNDddID0geworICAgICAgICAgICAgMHgzMEE0LCAweDMwRUQsIDB4MzBDRiwgMHgzMENCLCAw
eDMwREIsIDB4MzBEOCwgMHgzMEM4LCAweDMwQzEsCisgICAgICAgICAgICAweDMwRUEsIDB4MzBD
QywgMHgzMEVCLCAweDMwRjIsIDB4MzBFRiwgMHgzMEFCLCAweDMwRTgsIDB4MzBCRiwKKyAgICAg
ICAgICAgIDB4MzBFQywgMHgzMEJELCAweDMwQzQsIDB4MzBDRCwgMHgzMENBLCAweDMwRTksIDB4
MzBFMCwgMHgzMEE2LAorICAgICAgICAgICAgMHgzMEYwLCAweDMwQ0UsIDB4MzBBQSwgMHgzMEFG
LCAweDMwRTQsIDB4MzBERSwgMHgzMEIxLCAweDMwRDUsCisgICAgICAgICAgICAweDMwQjMsIDB4
MzBBOCwgMHgzMEM2LCAweDMwQTIsIDB4MzBCNSwgMHgzMEFELCAweDMwRTYsIDB4MzBFMSwKKyAg
ICAgICAgICAgIDB4MzBERiwgMHgzMEI3LCAweDMwRjEsIDB4MzBEMiwgMHgzMEUyLCAweDMwQkIs
IDB4MzBCOQorICAgICAgICB9OworICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUs
IGthdGFrYW5hSXJvaGFBbHBoYWJldCk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAotICAgICAg
ICBjYXNlIEFybWVuaWFuOgotICAgICAgICBjYXNlIFVwcGVyQXJtZW5pYW46Ci0gICAgICAgICAg
ICAvLyBDU1MzIHNheXMgImFybWVuaWFuIiBtZWFucyAibG93ZXItYXJtZW5pYW4iLgotICAgICAg
ICAgICAgLy8gQnV0IHRoZSBDU1MyLjEgdGVzdCBzdWl0ZSBjb250YWlucyB1cHBlcmNhc2UgdGVz
dCByZXN1bHRzIGZvciAiYXJtZW5pYW4iLAotICAgICAgICAgICAgLy8gc28gd2UnbGwgbWF0Y2gg
dGhlIHRlc3Qgc3VpdGUuCi0gICAgICAgICAgICB0b0FybWVuaWFuKGJ1aWxkZXIsIHZhbHVlLCB0
cnVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIExvd2VyQXJtZW5pYW46Ci0g
ICAgICAgICAgICB0b0FybWVuaWFuKGJ1aWxkZXIsIHZhbHVlLCBmYWxzZSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBHZW9yZ2lhbjoKLSAgICAgICAgICAgIHRvR2VvcmdpYW4o
YnVpbGRlciwgdmFsdWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSGVicmV3
OgotICAgICAgICAgICAgdG9IZWJyZXcoYnVpbGRlciwgdmFsdWUpOwotICAgICAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBZmFyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6RXRoaW9waWNIYWxlaGFtZUFhRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3Bp
Y0hhbGVoYW1lQWFFcjogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZXRoaW9waWNIYWxl
aGFtZUFhRXJBbHBoYWJldFsxOF0gPSB7CisgICAgICAgICAgICAweDEyMDAsIDB4MTIwOCwgMHgx
MjEwLCAweDEyMTgsIDB4MTIyOCwgMHgxMjMwLCAweDEyNjAsIDB4MTI3MCwgMHgxMjkwLAorICAg
ICAgICAgICAgMHgxMkEwLCAweDEyQTgsIDB4MTJDOCwgMHgxMkQwLCAweDEyRTgsIDB4MTJGMCwg
MHgxMzA4LCAweDEzMzgsIDB4MTM0OAorICAgICAgICB9OworICAgICAgICB0b0FscGhhYmV0aWMo
YnVpbGRlciwgdmFsdWUsIGV0aGlvcGljSGFsZWhhbWVBYUVyQWxwaGFiZXQpOworICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBbWhhcmljOgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUFtRXQ6IHsKKyAgICAgICAgc3RhdGljIGNv
bnN0IFVDaGFyIGV0aGlvcGljSGFsZWhhbWVBbUV0QWxwaGFiZXRbMzNdID0geworICAgICAgICAg
ICAgMHgxMjAwLCAweDEyMDgsIDB4MTIxMCwgMHgxMjE4LCAweDEyMjAsIDB4MTIyOCwgMHgxMjMw
LCAweDEyMzgsIDB4MTI0MCwKKyAgICAgICAgICAgIDB4MTI2MCwgMHgxMjcwLCAweDEyNzgsIDB4
MTI4MCwgMHgxMjkwLCAweDEyOTgsIDB4MTJBMCwgMHgxMkE4LCAweDEyQjgsCisgICAgICAgICAg
ICAweDEyQzgsIDB4MTJEMCwgMHgxMkQ4LCAweDEyRTAsIDB4MTJFOCwgMHgxMkYwLCAweDEzMDAs
IDB4MTMwOCwgMHgxMzIwLAorICAgICAgICAgICAgMHgxMzI4LCAweDEzMzAsIDB4MTMzOCwgMHgx
MzQwLCAweDEzNDgsIDB4MTM1MAorICAgICAgICB9OworICAgICAgICB0b0FscGhhYmV0aWMoYnVp
bGRlciwgdmFsdWUsIGV0aGlvcGljSGFsZWhhbWVBbUV0QWxwaGFiZXQpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBbWhhcmljQWJlZ2VkZToKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZUFtRXQ6IHsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IFVDaGFyIGV0aGlvcGljQWJlZ2VkZUFtRXRBbHBoYWJldFszM10gPSB7CisgICAgICAg
ICAgICAweDEyQTAsIDB4MTI2MCwgMHgxMzA4LCAweDEyRjAsIDB4MTMwMCwgMHgxMjAwLCAweDEy
QzgsIDB4MTJEOCwgMHgxMkUwLAorICAgICAgICAgICAgMHgxMjEwLCAweDEzMjAsIDB4MTMyOCwg
MHgxMkU4LCAweDEyQTgsIDB4MTJCOCwgMHgxMjA4LCAweDEyMTgsIDB4MTI5MCwKKyAgICAgICAg
ICAgIDB4MTI5OCwgMHgxMjIwLCAweDEyRDAsIDB4MTM0OCwgMHgxMzM4LCAweDEyNDAsIDB4MTIy
OCwgMHgxMjMwLCAweDEyMzgsCisgICAgICAgICAgICAweDEyNzAsIDB4MTI3OCwgMHgxMjgwLCAw
eDEzNDAsIDB4MTMzMCwgMHgxMzUwCisgICAgICAgIH07CisgICAgICAgIHRvQWxwaGFiZXRpYyhi
dWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNBYmVnZWRlQW1FdEFscGhhYmV0KTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2prRWFydGhseUJyYW5jaDogewor
ICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgY2prRWFydGhseUJyYW5jaEFscGhhYmV0WzEyXSA9
IHsKKyAgICAgICAgICAgIDB4NUI1MCwgMHg0RTExLCAweDVCQzUsIDB4NTM2RiwgMHg4RkIwLCAw
eDVERjMsIDB4NTM0OCwgMHg2NzJBLCAweDc1MzMsCisgICAgICAgICAgICAweDkxNDksIDB4NjIw
QywgMHg0RUE1CisgICAgICAgIH07CisgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1
ZSwgY2prRWFydGhseUJyYW5jaEFscGhhYmV0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2prSGVhdmVubHlTdGVtOiB7CisgICAgICAgIHN0YXRpYyBj
b25zdCBVQ2hhciBjamtIZWF2ZW5seVN0ZW1BbHBoYWJldFsxMF0gPSB7CisgICAgICAgICAgICAw
eDc1MzIsIDB4NEU1OSwgMHg0RTE5LCAweDRFMDEsIDB4NjIwQSwgMHg1REYxLCAweDVFOUEsIDB4
OEY5QiwgMHg1OEVDLAorICAgICAgICAgICAgMHg3Njc4CisgICAgICAgIH07CisgICAgICAgIHRv
QWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgY2prSGVhdmVubHlTdGVtQWxwaGFiZXQpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpYzoKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVHZXo6IHsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IFVDaGFyIGV0aGlvcGljSGFsZWhhbWVHZXpBbHBoYWJldFsyNl0gPSB7CisgICAg
ICAgICAgICAweDEyMDAsIDB4MTIwOCwgMHgxMjEwLCAweDEyMTgsIDB4MTIyMCwgMHgxMjI4LCAw
eDEyMzAsIDB4MTI0MCwgMHgxMjYwLAorICAgICAgICAgICAgMHgxMjcwLCAweDEyODAsIDB4MTI5
MCwgMHgxMkEwLCAweDEyQTgsIDB4MTJDOCwgMHgxMkQwLCAweDEyRDgsIDB4MTJFOCwKKyAgICAg
ICAgICAgIDB4MTJGMCwgMHgxMzA4LCAweDEzMjAsIDB4MTMzMCwgMHgxMzM4LCAweDEzNDAsIDB4
MTM0OCwgMHgxMzUwCisgICAgICAgIH07CisgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2
YWx1ZSwgZXRoaW9waWNIYWxlaGFtZUdlekFscGhhYmV0KTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlR2V6OiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBV
Q2hhciBldGhpb3BpY0FiZWdlZGVHZXpBbHBoYWJldFsyNl0gPSB7CisgICAgICAgICAgICAweDEy
QTAsIDB4MTI2MCwgMHgxMzA4LCAweDEyRjAsIDB4MTIwMCwgMHgxMkM4LCAweDEyRDgsIDB4MTIx
MCwgMHgxMzIwLAorICAgICAgICAgICAgMHgxMkU4LCAweDEyQTgsIDB4MTIwOCwgMHgxMjE4LCAw
eDEyOTAsIDB4MTIyMCwgMHgxMkQwLCAweDEzNDgsIDB4MTMzOCwKKyAgICAgICAgICAgIDB4MTI0
MCwgMHgxMjI4LCAweDEyMzAsIDB4MTI3MCwgMHgxMjgwLCAweDEzNDAsIDB4MTMzMCwgMHgxMzUw
CisgICAgICAgIH07CisgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9w
aWNBYmVnZWRlR2V6QWxwaGFiZXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpIYW5ndWxDb25zb25hbnQ6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVD
aGFyIGhhbmd1bENvbnNvbmFudEFscGhhYmV0WzE0XSA9IHsKKyAgICAgICAgICAgIDB4MzEzMSwg
MHgzMTM0LCAweDMxMzcsIDB4MzEzOSwgMHgzMTQxLCAweDMxNDIsIDB4MzE0NSwgMHgzMTQ3LCAw
eDMxNDgsCisgICAgICAgICAgICAweDMxNEEsIDB4MzE0QiwgMHgzMTRDLCAweDMxNEQsIDB4MzE0
RQorICAgICAgICB9OworICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGhhbmd1
bENvbnNvbmFudEFscGhhYmV0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6SGFuZ3VsOiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBoYW5ndWxB
bHBoYWJldFsxNF0gPSB7CisgICAgICAgICAgICAweEFDMDAsIDB4QjA5OCwgMHhCMkU0LCAweEI3
N0MsIDB4QjlDOCwgMHhCQzE0LCAweEMwQUMsIDB4QzU0NCwgMHhDNzkwLAorICAgICAgICAgICAg
MHhDQzI4LCAweENFNzQsIDB4RDBDMCwgMHhEMzBDLCAweEQ1NTgKKyAgICAgICAgfTsKKyAgICAg
ICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBoYW5ndWxBbHBoYWJldCk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok9yb21vOgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZU9tRXQ6IHsKKyAgICAgICAgc3RhdGljIGNv
bnN0IFVDaGFyIGV0aGlvcGljSGFsZWhhbWVPbUV0QWxwaGFiZXRbMjVdID0geworICAgICAgICAg
ICAgMHgxMjAwLCAweDEyMDgsIDB4MTIxOCwgMHgxMjI4LCAweDEyMzAsIDB4MTIzOCwgMHgxMjQw
LCAweDEyNjAsIDB4MTI3MCwKKyAgICAgICAgICAgIDB4MTI3OCwgMHgxMjkwLCAweDEyOTgsIDB4
MTJBMCwgMHgxMkE4LCAweDEyQzgsIDB4MTJFOCwgMHgxMkYwLCAweDEyRjgsCisgICAgICAgICAg
ICAweDEzMDAsIDB4MTMwOCwgMHgxMzIwLCAweDEzMjgsIDB4MTMzOCwgMHgxMzMwLCAweDEzNDgK
KyAgICAgICAgfTsKKyAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBldGhpb3Bp
Y0hhbGVoYW1lT21FdEFscGhhYmV0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6U2lkYW1hOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNI
YWxlaGFtZVNpZEV0OiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBldGhpb3BpY0hhbGVo
YW1lU2lkRXRBbHBoYWJldFsyNl0gPSB7CisgICAgICAgICAgICAweDEyMDAsIDB4MTIwOCwgMHgx
MjEwLCAweDEyMTgsIDB4MTIyOCwgMHgxMjMwLCAweDEyMzgsIDB4MTI0MCwgMHgxMjYwLAorICAg
ICAgICAgICAgMHgxMjcwLCAweDEyNzgsIDB4MTI5MCwgMHgxMjk4LCAweDEyQTAsIDB4MTJBOCwg
MHgxMkM4LCAweDEyRTgsIDB4MTJGMCwKKyAgICAgICAgICAgIDB4MTJGOCwgMHgxMzAwLCAweDEz
MDgsIDB4MTMyMCwgMHgxMzI4LCAweDEzMzgsIDB4MTMzMCwgMHgxMzQ4CisgICAgICAgIH07Cisg
ICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNIYWxlaGFtZVNpZEV0
QWxwaGFiZXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpTb21hbGk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lU29FdDog
eworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZXRoaW9waWNIYWxlaGFtZVNvRXRBbHBoYWJl
dFsyMl0gPSB7CisgICAgICAgICAgICAweDEyMDAsIDB4MTIwOCwgMHgxMjEwLCAweDEyMTgsIDB4
MTIyOCwgMHgxMjMwLCAweDEyMzgsIDB4MTI0MCwgMHgxMjYwLAorICAgICAgICAgICAgMHgxMjcw
LCAweDEyOTAsIDB4MTJBMCwgMHgxMkE4LCAweDEyQjgsIDB4MTJDOCwgMHgxMkQwLCAweDEyRTgs
IDB4MTJGMCwKKyAgICAgICAgICAgIDB4MTMwMCwgMHgxMzA4LCAweDEzMzgsIDB4MTM0OAorICAg
ICAgICB9OworICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGV0aGlvcGljSGFs
ZWhhbWVTb0V0QWxwaGFiZXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpUaWdyZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhh
bWVUaWc6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGV0aGlvcGljSGFsZWhhbWVUaWdB
bHBoYWJldFsyN10gPSB7CisgICAgICAgICAgICAweDEyMDAsIDB4MTIwOCwgMHgxMjEwLCAweDEy
MTgsIDB4MTIyOCwgMHgxMjMwLCAweDEyMzgsIDB4MTI0MCwgMHgxMjYwLAorICAgICAgICAgICAg
MHgxMjcwLCAweDEyNzgsIDB4MTI5MCwgMHgxMkEwLCAweDEyQTgsIDB4MTJDOCwgMHgxMkQwLCAw
eDEyRDgsIDB4MTJFOCwKKyAgICAgICAgICAgIDB4MTJGMCwgMHgxMzAwLCAweDEzMDgsIDB4MTMy
MCwgMHgxMzI4LCAweDEzMzgsIDB4MTMzMCwgMHgxMzQ4LCAweDEzNTAKKyAgICAgICAgfTsKKyAg
ICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBldGhpb3BpY0hhbGVoYW1lVGlnQWxw
aGFiZXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpU
aWdyaW55YUVyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVRpRXI6
IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGV0aGlvcGljSGFsZWhhbWVUaUVyQWxwaGFi
ZXRbMzFdID0geworICAgICAgICAgICAgMHgxMjAwLCAweDEyMDgsIDB4MTIxMCwgMHgxMjE4LCAw
eDEyMjgsIDB4MTIzMCwgMHgxMjM4LCAweDEyNDAsIDB4MTI1MCwKKyAgICAgICAgICAgIDB4MTI2
MCwgMHgxMjcwLCAweDEyNzgsIDB4MTI5MCwgMHgxMjk4LCAweDEyQTAsIDB4MTJBOCwgMHgxMkI4
LCAweDEyQzgsCisgICAgICAgICAgICAweDEyRDAsIDB4MTJEOCwgMHgxMkUwLCAweDEyRTgsIDB4
MTJGMCwgMHgxMzAwLCAweDEzMDgsIDB4MTMyMCwgMHgxMzI4LAorICAgICAgICAgICAgMHgxMzMw
LCAweDEzMzgsIDB4MTM0OCwgMHgxMzUwCisgICAgICAgIH07CisgICAgICAgIHRvQWxwaGFiZXRp
YyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNIYWxlaGFtZVRpRXJBbHBoYWJldCk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXJBYmVnZWRl
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlVGlFcjogeworICAgICAg
ICBzdGF0aWMgY29uc3QgVUNoYXIgZXRoaW9waWNBYmVnZWRlVGlFckFscGhhYmV0WzMxXSA9IHsK
KyAgICAgICAgICAgIDB4MTJBMCwgMHgxMjYwLCAweDEzMDgsIDB4MTJGMCwgMHgxMzAwLCAweDEy
MDAsIDB4MTJDOCwgMHgxMkQ4LCAweDEyRTAsCisgICAgICAgICAgICAweDEyMTAsIDB4MTMyMCwg
MHgxMzI4LCAweDEyRTgsIDB4MTJBOCwgMHgxMkI4LCAweDEyMDgsIDB4MTIxOCwgMHgxMjkwLAor
ICAgICAgICAgICAgMHgxMjk4LCAweDEyRDAsIDB4MTM0OCwgMHgxMzM4LCAweDEyNDAsIDB4MTI1
MCwgMHgxMjI4LCAweDEyMzAsIDB4MTIzOCwKKyAgICAgICAgICAgIDB4MTI3MCwgMHgxMjc4LCAw
eDEzMzAsIDB4MTM1MAorICAgICAgICB9OworICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwg
dmFsdWUsIGV0aGlvcGljQWJlZ2VkZVRpRXJBbHBoYWJldCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXQ6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lVGlFdDogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNo
YXIgZXRoaW9waWNIYWxlaGFtZVRpRXRBbHBoYWJldFszNF0gPSB7CisgICAgICAgICAgICAweDEy
MDAsIDB4MTIwOCwgMHgxMjEwLCAweDEyMTgsIDB4MTIyMCwgMHgxMjI4LCAweDEyMzAsIDB4MTIz
OCwgMHgxMjQwLAorICAgICAgICAgICAgMHgxMjUwLCAweDEyNjAsIDB4MTI3MCwgMHgxMjc4LCAw
eDEyODAsIDB4MTI5MCwgMHgxMjk4LCAweDEyQTAsIDB4MTJBOCwKKyAgICAgICAgICAgIDB4MTJC
OCwgMHgxMkM4LCAweDEyRDAsIDB4MTJEOCwgMHgxMkUwLCAweDEyRTgsIDB4MTJGMCwgMHgxMzAw
LCAweDEzMDgsCisgICAgICAgICAgICAweDEzMjAsIDB4MTMyOCwgMHgxMzMwLCAweDEzMzgsIDB4
MTM0MCwgMHgxMzQ4LCAweDEzNTAKKyAgICAgICAgfTsKKyAgICAgICAgdG9BbHBoYWJldGljKGJ1
aWxkZXIsIHZhbHVlLCBldGhpb3BpY0hhbGVoYW1lVGlFdEFscGhhYmV0KTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmlueWFFdEFiZWdlZGU6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGVUaUV0OiB7CisgICAgICAgIHN0
YXRpYyBjb25zdCBVQ2hhciBldGhpb3BpY0FiZWdlZGVUaUV0QWxwaGFiZXRbMzRdID0geworICAg
ICAgICAgICAgMHgxMkEwLCAweDEyNjAsIDB4MTMwOCwgMHgxMkYwLCAweDEzMDAsIDB4MTIwMCwg
MHgxMkM4LCAweDEyRDgsIDB4MTJFMCwKKyAgICAgICAgICAgIDB4MTIxMCwgMHgxMzIwLCAweDEz
MjgsIDB4MTJFOCwgMHgxMkE4LCAweDEyQjgsIDB4MTIwOCwgMHgxMjE4LCAweDEyOTAsCisgICAg
ICAgICAgICAweDEyOTgsIDB4MTIyMCwgMHgxMkQwLCAweDEzNDgsIDB4MTMzOCwgMHgxMjQwLCAw
eDEyNTAsIDB4MTIyOCwgMHgxMjMwLAorICAgICAgICAgICAgMHgxMjM4LCAweDEyNzAsIDB4MTI3
OCwgMHgxMjgwLCAweDEzNDAsIDB4MTMzMCwgMHgxMzUwCisgICAgICAgIH07CisgICAgICAgIHRv
QWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNBYmVnZWRlVGlFdEFscGhhYmV0KTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJHcmVl
azogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgdXBwZXJHcmVla0FscGhhYmV0WzI0XSA9
IHsKKyAgICAgICAgICAgIDB4MDM5MSwgMHgwMzkyLCAweDAzOTMsIDB4MDM5NCwgMHgwMzk1LCAw
eDAzOTYsIDB4MDM5NywgMHgwMzk4LCAweDAzOTksCisgICAgICAgICAgICAweDAzOUEsIDB4MDM5
QiwgMHgwMzlDLCAweDAzOUQsIDB4MDM5RSwgMHgwMzlGLCAweDAzQTAsIDB4MDNBMSwgMHgwM0Ez
LAorICAgICAgICAgICAgMHgwM0E0LCAweDAzQTUsIDB4MDNBNiwgMHgwM0E3LCAweDAzQTgsIDB4
MDNBOQorICAgICAgICB9OworICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIHVw
cGVyR3JlZWtBbHBoYWJldCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6Okxvd2VyTm9yd2VnaWFuOiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBMQ2hhciBs
b3dlck5vcndlZ2lhbkFscGhhYmV0WzI5XSA9IHsKKyAgICAgICAgICAgIDB4NjEsIDB4NjIsIDB4
NjMsIDB4NjQsIDB4NjUsIDB4NjYsIDB4NjcsIDB4NjgsIDB4NjksCisgICAgICAgICAgICAweDZB
LCAweDZCLCAweDZDLCAweDZELCAweDZFLCAweDZGLCAweDcwLCAweDcxLCAweDcyLAorICAgICAg
ICAgICAgMHg3MywgMHg3NCwgMHg3NSwgMHg3NiwgMHg3NywgMHg3OCwgMHg3OSwgMHg3QSwgMHhF
NiwKKyAgICAgICAgICAgIDB4RjgsIDB4RTUKKyAgICAgICAgfTsKKyAgICAgICAgdG9BbHBoYWJl
dGljKGJ1aWxkZXIsIHZhbHVlLCBsb3dlck5vcndlZ2lhbkFscGhhYmV0KTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJOb3J3ZWdpYW46IHsKKyAg
ICAgICAgc3RhdGljIGNvbnN0IExDaGFyIHVwcGVyTm9yd2VnaWFuQWxwaGFiZXRbMjldID0gewor
ICAgICAgICAgICAgMHg0MSwgMHg0MiwgMHg0MywgMHg0NCwgMHg0NSwgMHg0NiwgMHg0NywgMHg0
OCwgMHg0OSwKKyAgICAgICAgICAgIDB4NEEsIDB4NEIsIDB4NEMsIDB4NEQsIDB4NEUsIDB4NEYs
IDB4NTAsIDB4NTEsIDB4NTIsCisgICAgICAgICAgICAweDUzLCAweDU0LCAweDU1LCAweDU2LCAw
eDU3LCAweDU4LCAweDU5LCAweDVBLCAweEM2LAorICAgICAgICAgICAgMHhEOCwgMHhDNQorICAg
ICAgICB9OworICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIHVwcGVyTm9yd2Vn
aWFuQWxwaGFiZXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpDSktJZGVvZ3JhcGhpYzogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgdHJhZGl0
aW9uYWxDaGluZXNlSW5mb3JtYWxUYWJsZVsxNl0gPSB7CisgICAgICAgICAgICAweDg0MkMsIDB4
NTEwNCwgMHg1MTQ2LAorICAgICAgICAgICAgMHg1MzQxLCAweDc2N0UsIDB4NTM0MywKKyAgICAg
ICAgICAgIDB4OTZGNiwgMHg0RTAwLCAweDRFOEMsIDB4NEUwOSwgMHg1NkRCLAorICAgICAgICAg
ICAgMHg0RTk0LCAweDUxNkQsIDB4NEUwMywgMHg1MTZCLCAweDRFNUQKKyAgICAgICAgfTsKKyAg
ICAgICAgdG9DSktJZGVvZ3JhcGhpYyhidWlsZGVyLCB2YWx1ZSwgdHJhZGl0aW9uYWxDaGluZXNl
SW5mb3JtYWxUYWJsZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6TG93ZXJSb21hbjoKKyAgICAgICAgdG9Sb21hbihidWlsZGVyLCB2YWx1ZSwgZmFs
c2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyUm9tYW46
CisgICAgICAgIHRvUm9tYW4oYnVpbGRlciwgdmFsdWUsIHRydWUpOworICAgICAgICBicmVhazsK
KworICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QXJtZW5pYW46CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpVcHBlckFybWVuaWFuOgorICAgICAgICAvLyBDU1MzIHNheXMgImFybWVuaWFuIiBtZWFu
cyAibG93ZXItYXJtZW5pYW4iLgorICAgICAgICAvLyBCdXQgdGhlIENTUzIuMSB0ZXN0IHN1aXRl
IGNvbnRhaW5zIHVwcGVyY2FzZSB0ZXN0IHJlc3VsdHMgZm9yICJhcm1lbmlhbiIsCisgICAgICAg
IC8vIHNvIHdlJ2xsIG1hdGNoIHRoZSB0ZXN0IHN1aXRlLgorICAgICAgICB0b0FybWVuaWFuKGJ1
aWxkZXIsIHZhbHVlLCB0cnVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpMb3dlckFybWVuaWFuOgorICAgICAgICB0b0FybWVuaWFuKGJ1aWxkZXIsIHZhbHVlLCBm
YWxzZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6R2VvcmdpYW46
CisgICAgICAgIHRvR2VvcmdpYW4oYnVpbGRlciwgdmFsdWUpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OkhlYnJldzoKKyAgICAgICAgdG9IZWJyZXcoYnVpbGRlciwg
dmFsdWUpOworICAgICAgICBicmVhazsKICAgICB9CiAKICAgICByZXR1cm4gYnVpbGRlci50b1N0
cmluZygpOwpAQCAtMTE4Niw3ICsxMTg2LDcgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpwYWlu
dChQYWludEluZm8mIAogICAgIGlmIChwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVn
cm91bmQpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5
KCkgIT0gVklTSUJMRSkKKyAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0
eTo6VmlzaWJsZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTGF5b3V0UG9pbnQgYm94T3JpZ2lu
KHBhaW50T2Zmc2V0ICsgbG9jYXRpb24oKSk7CkBAIC0xMjI3LDk4ICsxMjI3LDk4IEBAIHZvaWQg
UmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiAKICAgICBjb250ZXh0LnNldFN0cm9r
ZVRoaWNrbmVzcygxLjBmKTsKICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihjb2xvcik7CiAKLSAg
ICBFTGlzdFN0eWxlVHlwZSB0eXBlID0gc3R5bGUoKS5saXN0U3R5bGVUeXBlKCk7CisgICAgTGlz
dFN0eWxlVHlwZSB0eXBlID0gc3R5bGUoKS5saXN0U3R5bGVUeXBlKCk7CiAgICAgc3dpdGNoICh0
eXBlKSB7Ci0gICAgICAgIGNhc2UgRGlzYzoKLSAgICAgICAgICAgIGNvbnRleHQuZHJhd0VsbGlw
c2UobWFya2VyUmVjdCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgQ2lyY2xl
OgotICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsK
LSAgICAgICAgICAgIGNvbnRleHQuZHJhd0VsbGlwc2UobWFya2VyUmVjdCk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGNhc2UgU3F1YXJlOgotICAgICAgICAgICAgY29udGV4dC5kcmF3
UmVjdChtYXJrZXJSZWN0KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBOb25l
TGlzdFN0eWxlOgotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIEFmYXI6Ci0gICAg
ICAgIGNhc2UgQW1oYXJpYzoKLSAgICAgICAgY2FzZSBBbWhhcmljQWJlZ2VkZToKLSAgICAgICAg
Y2FzZSBBcmFiaWNJbmRpYzoKLSAgICAgICAgY2FzZSBBcm1lbmlhbjoKLSAgICAgICAgY2FzZSBC
aW5hcnlMaXN0U3R5bGU6Ci0gICAgICAgIGNhc2UgQmVuZ2FsaToKLSAgICAgICAgY2FzZSBDYW1i
b2RpYW46Ci0gICAgICAgIGNhc2UgQ0pLSWRlb2dyYXBoaWM6Ci0gICAgICAgIGNhc2UgQ2prRWFy
dGhseUJyYW5jaDoKLSAgICAgICAgY2FzZSBDamtIZWF2ZW5seVN0ZW06Ci0gICAgICAgIGNhc2Ug
RGVjaW1hbExlYWRpbmdaZXJvOgotICAgICAgICBjYXNlIERlY2ltYWxMaXN0U3R5bGU6Ci0gICAg
ICAgIGNhc2UgRGV2YW5hZ2FyaToKLSAgICAgICAgY2FzZSBFdGhpb3BpYzoKLSAgICAgICAgY2Fz
ZSBFdGhpb3BpY0FiZWdlZGU6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlQW1FdDoKLSAg
ICAgICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVHZXo6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNBYmVn
ZWRlVGlFcjoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVUaUV0OgotICAgICAgICBjYXNl
IEV0aGlvcGljSGFsZWhhbWVBYUVyOgotICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVBYUV0
OgotICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVBbUV0OgotICAgICAgICBjYXNlIEV0aGlv
cGljSGFsZWhhbWVHZXo6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZU9tRXQ6Ci0gICAg
ICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVNpZEV0OgotICAgICAgICBjYXNlIEV0aGlvcGljSGFs
ZWhhbWVTb0V0OgotICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVUaUVyOgotICAgICAgICBj
YXNlIEV0aGlvcGljSGFsZWhhbWVUaUV0OgotICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVU
aWc6Ci0gICAgICAgIGNhc2UgR2VvcmdpYW46Ci0gICAgICAgIGNhc2UgR3VqYXJhdGk6Ci0gICAg
ICAgIGNhc2UgR3VybXVraGk6Ci0gICAgICAgIGNhc2UgSGFuZ3VsOgotICAgICAgICBjYXNlIEhh
bmd1bENvbnNvbmFudDoKLSAgICAgICAgY2FzZSBIZWJyZXc6Ci0gICAgICAgIGNhc2UgSGlyYWdh
bmE6Ci0gICAgICAgIGNhc2UgSGlyYWdhbmFJcm9oYToKLSAgICAgICAgY2FzZSBLYW5uYWRhOgot
ICAgICAgICBjYXNlIEthdGFrYW5hOgotICAgICAgICBjYXNlIEthdGFrYW5hSXJvaGE6Ci0gICAg
ICAgIGNhc2UgS2htZXI6Ci0gICAgICAgIGNhc2UgTGFvOgotICAgICAgICBjYXNlIExvd2VyQWxw
aGE6Ci0gICAgICAgIGNhc2UgTG93ZXJBcm1lbmlhbjoKLSAgICAgICAgY2FzZSBMb3dlckdyZWVr
OgotICAgICAgICBjYXNlIExvd2VySGV4YWRlY2ltYWw6Ci0gICAgICAgIGNhc2UgTG93ZXJMYXRp
bjoKLSAgICAgICAgY2FzZSBMb3dlck5vcndlZ2lhbjoKLSAgICAgICAgY2FzZSBMb3dlclJvbWFu
OgotICAgICAgICBjYXNlIE1hbGF5YWxhbToKLSAgICAgICAgY2FzZSBNb25nb2xpYW46Ci0gICAg
ICAgIGNhc2UgTXlhbm1hcjoKLSAgICAgICAgY2FzZSBPY3RhbDoKLSAgICAgICAgY2FzZSBPcml5
YToKLSAgICAgICAgY2FzZSBPcm9tbzoKLSAgICAgICAgY2FzZSBQZXJzaWFuOgotICAgICAgICBj
YXNlIFNpZGFtYToKLSAgICAgICAgY2FzZSBTb21hbGk6Ci0gICAgICAgIGNhc2UgVGVsdWd1Ogot
ICAgICAgICBjYXNlIFRoYWk6Ci0gICAgICAgIGNhc2UgVGliZXRhbjoKLSAgICAgICAgY2FzZSBU
aWdyZToKLSAgICAgICAgY2FzZSBUaWdyaW55YUVyOgotICAgICAgICBjYXNlIFRpZ3JpbnlhRXJB
YmVnZWRlOgotICAgICAgICBjYXNlIFRpZ3JpbnlhRXQ6Ci0gICAgICAgIGNhc2UgVGlncmlueWFF
dEFiZWdlZGU6Ci0gICAgICAgIGNhc2UgVXBwZXJBbHBoYToKLSAgICAgICAgY2FzZSBVcHBlckFy
bWVuaWFuOgotICAgICAgICBjYXNlIFVwcGVyR3JlZWs6Ci0gICAgICAgIGNhc2UgVXBwZXJIZXhh
ZGVjaW1hbDoKLSAgICAgICAgY2FzZSBVcHBlckxhdGluOgotICAgICAgICBjYXNlIFVwcGVyTm9y
d2VnaWFuOgotICAgICAgICBjYXNlIFVwcGVyUm9tYW46Ci0gICAgICAgIGNhc2UgVXJkdToKLSAg
ICAgICAgY2FzZSBBc3Rlcmlza3M6Ci0gICAgICAgIGNhc2UgRm9vdG5vdGVzOgotICAgICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEaXNjOgorICAgICAgICBjb250ZXh0
LmRyYXdFbGxpcHNlKG1hcmtlclJlY3QpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpDaXJjbGU6CisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp0
cmFuc3BhcmVudCk7CisgICAgICAgIGNvbnRleHQuZHJhd0VsbGlwc2UobWFya2VyUmVjdCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlNxdWFyZToKKyAgICAgICAg
Y29udGV4dC5kcmF3UmVjdChtYXJrZXJSZWN0KTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6Tm9uZToKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6QWZhcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFtaGFyaWM6CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpBbWhhcmljQWJlZ2VkZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFy
YWJpY0luZGljOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QXJtZW5pYW46CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpCaW5hcnk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpCZW5nYWxpOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2FtYm9kaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6Q0pLSWRlb2dyYXBoaWM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDamtFYXJ0aGx5QnJh
bmNoOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2prSGVhdmVubHlTdGVtOgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6RGVjaW1hbExlYWRpbmdaZXJvOgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6RGVjaW1hbDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRldmFuYWdhcmk6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpYzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlv
cGljQWJlZ2VkZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZUFtRXQ6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGVHZXo6CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGVUaUVyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6RXRoaW9waWNBYmVnZWRlVGlFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGlj
SGFsZWhhbWVBYUVyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUFh
RXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lQW1FdDoKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVHZXo6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lT21FdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0
aGlvcGljSGFsZWhhbWVTaWRFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFs
ZWhhbWVTb0V0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVRpRXI6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lVGlFdDoKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVUaWc6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpHZW9yZ2lhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okd1amFyYXRpOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6R3VybXVraGk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIYW5n
dWw6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIYW5ndWxDb25zb25hbnQ6CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpIZWJyZXc6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIaXJhZ2FuYToK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkhpcmFnYW5hSXJvaGE6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpLYW5uYWRhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6S2F0YWthbmE6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpLYXRha2FuYUlyb2hhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6S2htZXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMYW86CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpMb3dlckFscGhhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJBcm1lbmlh
bjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyR3JlZWs6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpMb3dlckhleGFkZWNpbWFsOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJM
YXRpbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyTm9yd2VnaWFuOgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6TG93ZXJSb21hbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok1hbGF5
YWxhbToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok1vbmdvbGlhbjoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6Ok15YW5tYXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpPY3RhbDoKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6Ok9yaXlhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6T3JvbW86
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpQZXJzaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6U2lkYW1hOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6U29tYWxpOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6VGVsdWd1OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGhhaToKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OlRpYmV0YW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdy
ZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXI6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpUaWdyaW55YUVyQWJlZ2VkZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3Jp
bnlhRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55YUV0QWJlZ2VkZToKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyQWxwaGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpV
cHBlckFybWVuaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJHcmVlazoKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OlVwcGVySGV4YWRlY2ltYWw6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpVcHBlckxhdGluOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJOb3J3ZWdpYW46
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlclJvbWFuOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6VXJkdToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFzdGVyaXNrczoKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OkZvb3Rub3RlczoKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGlm
IChtX3RleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC0xMzQwLDcgKzEzNDAsNyBA
QCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYgCiAgICAgRmxvYXRQb2lu
dCB0ZXh0T3JpZ2luID0gRmxvYXRQb2ludChtYXJrZXJSZWN0LngoKSwgbWFya2VyUmVjdC55KCkg
KyBzdHlsZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KCkpOwogICAgIHRleHRPcmlnaW4gPSByb3Vu
ZFBvaW50VG9EZXZpY2VQaXhlbHMoTGF5b3V0UG9pbnQodGV4dE9yaWdpbiksIGRvY3VtZW50KCku
ZGV2aWNlU2NhbGVGYWN0b3IoKSwgc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpOwog
Ci0gICAgaWYgKHR5cGUgPT0gQXN0ZXJpc2tzIHx8IHR5cGUgPT0gRm9vdG5vdGVzKQorICAgIGlm
ICh0eXBlID09IExpc3RTdHlsZVR5cGU6OkFzdGVyaXNrcyB8fCB0eXBlID09IExpc3RTdHlsZVR5
cGU6OkZvb3Rub3RlcykKICAgICAgICAgY29udGV4dC5kcmF3VGV4dChmb250LCB0ZXh0UnVuLCB0
ZXh0T3JpZ2luKTsKICAgICBlbHNlIHsKICAgICAgICAgY29uc3QgVUNoYXIgc3VmZml4ID0gbGlz
dE1hcmtlclN1ZmZpeCh0eXBlLCBtX2xpc3RJdGVtLnZhbHVlKCkpOwpAQCAtMTQ0OCw5MiArMTQ0
OCw5MiBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnVwZGF0ZUNvbnRlbnQoKQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgRUxpc3RTdHlsZVR5cGUgdHlwZSA9IHN0eWxlKCkubGlzdFN0
eWxlVHlwZSgpOworICAgIExpc3RTdHlsZVR5cGUgdHlwZSA9IHN0eWxlKCkubGlzdFN0eWxlVHlw
ZSgpOwogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgTm9uZUxpc3RTdHlsZToKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6Ok5vbmU6CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ2lyY2xl
OgotICAgIGNhc2UgRGlzYzoKLSAgICBjYXNlIFNxdWFyZToKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkNpcmNsZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRpc2M6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpTcXVhcmU6CiAgICAgICAgIG1fdGV4dCA9IGxpc3RNYXJrZXJUZXh0KHR5cGUs
IDApOyAvLyB2YWx1ZSBpcyBpZ25vcmVkIGZvciB0aGVzZSB0eXBlcwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIEFzdGVyaXNrczoKLSAgICBjYXNlIEZvb3Rub3RlczoKLSAgICBjYXNlIEFmYXI6
Ci0gICAgY2FzZSBBbWhhcmljOgotICAgIGNhc2UgQW1oYXJpY0FiZWdlZGU6Ci0gICAgY2FzZSBB
cmFiaWNJbmRpYzoKLSAgICBjYXNlIEFybWVuaWFuOgotICAgIGNhc2UgQmluYXJ5TGlzdFN0eWxl
OgotICAgIGNhc2UgQmVuZ2FsaToKLSAgICBjYXNlIENhbWJvZGlhbjoKLSAgICBjYXNlIENKS0lk
ZW9ncmFwaGljOgotICAgIGNhc2UgQ2prRWFydGhseUJyYW5jaDoKLSAgICBjYXNlIENqa0hlYXZl
bmx5U3RlbToKLSAgICBjYXNlIERlY2ltYWxMZWFkaW5nWmVybzoKLSAgICBjYXNlIERlY2ltYWxM
aXN0U3R5bGU6Ci0gICAgY2FzZSBEZXZhbmFnYXJpOgotICAgIGNhc2UgRXRoaW9waWM6Ci0gICAg
Y2FzZSBFdGhpb3BpY0FiZWdlZGU6Ci0gICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVBbUV0OgotICAg
IGNhc2UgRXRoaW9waWNBYmVnZWRlR2V6OgotICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlVGlFcjoK
LSAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZVRpRXQ6Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1l
QWFFcjoKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVBYUV0OgotICAgIGNhc2UgRXRoaW9waWNI
YWxlaGFtZUFtRXQ6Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lR2V6OgotICAgIGNhc2UgRXRo
aW9waWNIYWxlaGFtZU9tRXQ6Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lU2lkRXQ6Ci0gICAg
Y2FzZSBFdGhpb3BpY0hhbGVoYW1lU29FdDoKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVUaUVy
OgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVRpRXQ6Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVo
YW1lVGlnOgotICAgIGNhc2UgR2VvcmdpYW46Ci0gICAgY2FzZSBHdWphcmF0aToKLSAgICBjYXNl
IEd1cm11a2hpOgotICAgIGNhc2UgSGFuZ3VsOgotICAgIGNhc2UgSGFuZ3VsQ29uc29uYW50Ogot
ICAgIGNhc2UgSGVicmV3OgotICAgIGNhc2UgSGlyYWdhbmE6Ci0gICAgY2FzZSBIaXJhZ2FuYUly
b2hhOgotICAgIGNhc2UgS2FubmFkYToKLSAgICBjYXNlIEthdGFrYW5hOgotICAgIGNhc2UgS2F0
YWthbmFJcm9oYToKLSAgICBjYXNlIEtobWVyOgotICAgIGNhc2UgTGFvOgotICAgIGNhc2UgTG93
ZXJBbHBoYToKLSAgICBjYXNlIExvd2VyQXJtZW5pYW46Ci0gICAgY2FzZSBMb3dlckdyZWVrOgot
ICAgIGNhc2UgTG93ZXJIZXhhZGVjaW1hbDoKLSAgICBjYXNlIExvd2VyTGF0aW46Ci0gICAgY2Fz
ZSBMb3dlck5vcndlZ2lhbjoKLSAgICBjYXNlIExvd2VyUm9tYW46Ci0gICAgY2FzZSBNYWxheWFs
YW06Ci0gICAgY2FzZSBNb25nb2xpYW46Ci0gICAgY2FzZSBNeWFubWFyOgotICAgIGNhc2UgT2N0
YWw6Ci0gICAgY2FzZSBPcml5YToKLSAgICBjYXNlIE9yb21vOgotICAgIGNhc2UgUGVyc2lhbjoK
LSAgICBjYXNlIFNpZGFtYToKLSAgICBjYXNlIFNvbWFsaToKLSAgICBjYXNlIFRlbHVndToKLSAg
ICBjYXNlIFRoYWk6Ci0gICAgY2FzZSBUaWJldGFuOgotICAgIGNhc2UgVGlncmU6Ci0gICAgY2Fz
ZSBUaWdyaW55YUVyOgotICAgIGNhc2UgVGlncmlueWFFckFiZWdlZGU6Ci0gICAgY2FzZSBUaWdy
aW55YUV0OgotICAgIGNhc2UgVGlncmlueWFFdEFiZWdlZGU6Ci0gICAgY2FzZSBVcHBlckFscGhh
OgotICAgIGNhc2UgVXBwZXJBcm1lbmlhbjoKLSAgICBjYXNlIFVwcGVyR3JlZWs6Ci0gICAgY2Fz
ZSBVcHBlckhleGFkZWNpbWFsOgotICAgIGNhc2UgVXBwZXJMYXRpbjoKLSAgICBjYXNlIFVwcGVy
Tm9yd2VnaWFuOgotICAgIGNhc2UgVXBwZXJSb21hbjoKLSAgICBjYXNlIFVyZHU6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpBc3Rlcmlza3M6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpGb290
bm90ZXM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBZmFyOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6QW1oYXJpYzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFtaGFyaWNBYmVnZWRlOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QXJhYmljSW5kaWM6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpBcm1lbmlhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkJpbmFyeToKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OkJlbmdhbGk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDYW1ib2Rp
YW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDSktJZGVvZ3JhcGhpYzoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkNqa0VhcnRobHlCcmFuY2g6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpD
amtIZWF2ZW5seVN0ZW06CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEZWNpbWFsTGVhZGluZ1pl
cm86CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEZWNpbWFsOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6RGV2YW5hZ2FyaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6RXRoaW9waWNBYmVnZWRlQW1FdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlv
cGljQWJlZ2VkZUdlejoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZVRp
RXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGVUaUV0OgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUFhRXI6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lQWFFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0
aGlvcGljSGFsZWhhbWVBbUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxl
aGFtZUdlejoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVPbUV0Ogor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVNpZEV0OgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVNvRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpFdGhpb3BpY0hhbGVoYW1lVGlFcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlv
cGljSGFsZWhhbWVUaUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFt
ZVRpZzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okdlb3JnaWFuOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6R3VqYXJhdGk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpHdXJtdWtoaToKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6Okhhbmd1bDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okhh
bmd1bENvbnNvbmFudDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkhlYnJldzoKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OkhpcmFnYW5hOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGlyYWdh
bmFJcm9oYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okthbm5hZGE6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpLYXRha2FuYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkthdGFrYW5hSXJv
aGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLaG1lcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkxhbzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyQWxwaGE6CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpMb3dlckFybWVuaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93
ZXJHcmVlazoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VySGV4YWRlY2ltYWw6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckxhdGluOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
TG93ZXJOb3J3ZWdpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlclJvbWFuOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6TWFsYXlhbGFtOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
TW9uZ29saWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TXlhbm1hcjoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6Ok9jdGFsOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6T3JpeWE6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpPcm9tbzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlBlcnNp
YW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpTaWRhbWE6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpTb21hbGk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUZWx1Z3U6CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpUaGFpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGliZXRhbjoKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGln
cmlueWFFcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXJBYmVnZWRlOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmlueWFFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
OlRpZ3JpbnlhRXRBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJBbHBoYToK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyQXJtZW5pYW46CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpVcHBlckdyZWVrOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJIZXhhZGVj
aW1hbDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyTGF0aW46CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpVcHBlck5vcndlZ2lhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVy
Um9tYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcmR1OgogICAgICAgICBtX3RleHQgPSBs
aXN0TWFya2VyVGV4dCh0eXBlLCBtX2xpc3RJdGVtLnZhbHVlKCkpOwogICAgICAgICBicmVhazsK
ICAgICB9CkBAIC0xNTU1LDEwNiArMTU1NSwxMDYgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpj
b21wdXRlUHJlZmVycmVkTAogICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUoKS5m
b250Q2FzY2FkZSgpOwogCiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGggPSAwOwotICAgIEVM
aXN0U3R5bGVUeXBlIHR5cGUgPSBzdHlsZSgpLmxpc3RTdHlsZVR5cGUoKTsKKyAgICBMaXN0U3R5
bGVUeXBlIHR5cGUgPSBzdHlsZSgpLmxpc3RTdHlsZVR5cGUoKTsKICAgICBzd2l0Y2ggKHR5cGUp
IHsKLSAgICAgICAgY2FzZSBOb25lTGlzdFN0eWxlOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgQXN0ZXJpc2tzOgotICAgICAgICBjYXNlIEZvb3Rub3RlczogeworICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6Tm9uZToKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpBc3Rlcmlza3M6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpGb290bm90ZXM6IHsKKyAg
ICAgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihtX3RleHQs
IHN0eWxlKCkpOworICAgICAgICBsb2dpY2FsV2lkdGggPSBmb250LndpZHRoKHJ1bik7IC8vIG5v
IHN1ZmZpeCBmb3IgdGhlc2UgdHlwZXMKKyAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6Q2lyY2xlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGlzYzoKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OlNxdWFyZToKKyAgICAgICAgbG9naWNhbFdpZHRoID0gKGZv
bnQuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSAqIDIgLyAzICsgMSkgLyAyICsgMjsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBZmFyOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6QW1oYXJpYzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFtaGFyaWNBYmVnZWRlOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QXJhYmljSW5kaWM6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpBcm1lbmlhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkJpbmFyeToKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OkJlbmdhbGk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDYW1ib2Rp
YW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDSktJZGVvZ3JhcGhpYzoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkNqa0VhcnRobHlCcmFuY2g6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpD
amtIZWF2ZW5seVN0ZW06CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEZWNpbWFsTGVhZGluZ1pl
cm86CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEZWNpbWFsOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6RGV2YW5hZ2FyaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6RXRoaW9waWNBYmVnZWRlQW1FdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlv
cGljQWJlZ2VkZUdlejoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZVRp
RXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGVUaUV0OgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUFhRXI6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lQWFFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0
aGlvcGljSGFsZWhhbWVBbUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxl
aGFtZUdlejoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVPbUV0Ogor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVNpZEV0OgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVNvRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpFdGhpb3BpY0hhbGVoYW1lVGlFcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlv
cGljSGFsZWhhbWVUaUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFt
ZVRpZzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okdlb3JnaWFuOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6R3VqYXJhdGk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpHdXJtdWtoaToKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6Okhhbmd1bDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okhh
bmd1bENvbnNvbmFudDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkhlYnJldzoKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OkhpcmFnYW5hOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGlyYWdh
bmFJcm9oYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okthbm5hZGE6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpLYXRha2FuYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkthdGFrYW5hSXJv
aGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLaG1lcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkxhbzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyQWxwaGE6CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpMb3dlckFybWVuaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93
ZXJHcmVlazoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VySGV4YWRlY2ltYWw6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckxhdGluOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
TG93ZXJOb3J3ZWdpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlclJvbWFuOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6TWFsYXlhbGFtOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
TW9uZ29saWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TXlhbm1hcjoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6Ok9jdGFsOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6T3JpeWE6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpPcm9tbzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlBlcnNp
YW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpTaWRhbWE6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpTb21hbGk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUZWx1Z3U6CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpUaGFpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGliZXRhbjoKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGln
cmlueWFFcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXJBYmVnZWRlOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmlueWFFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
OlRpZ3JpbnlhRXRBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJBbHBoYToK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyQXJtZW5pYW46CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpVcHBlckdyZWVrOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJIZXhhZGVj
aW1hbDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyTGF0aW46CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpVcHBlck5vcndlZ2lhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVy
Um9tYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcmR1OgorICAgICAgICBpZiAobV90ZXh0
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGxvZ2ljYWxXaWR0aCA9IDA7CisgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1
bihtX3RleHQsIHN0eWxlKCkpOwotICAgICAgICAgICAgbG9naWNhbFdpZHRoID0gZm9udC53aWR0
aChydW4pOyAvLyBubyBzdWZmaXggZm9yIHRoZXNlIHR5cGVzCisgICAgICAgICAgICBMYXlvdXRV
bml0IGl0ZW1XaWR0aCA9IGZvbnQud2lkdGgocnVuKTsKKyAgICAgICAgICAgIFVDaGFyIHN1ZmZp
eFNwYWNlWzJdID0geyBsaXN0TWFya2VyU3VmZml4KHR5cGUsIG1fbGlzdEl0ZW0udmFsdWUoKSks
ICcgJyB9OworICAgICAgICAgICAgTGF5b3V0VW5pdCBzdWZmaXhTcGFjZVdpZHRoID0gZm9udC53
aWR0aChSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihzdWZmaXhTcGFjZSwgMiwgc3R5bGUo
KSkpOworICAgICAgICAgICAgbG9naWNhbFdpZHRoID0gaXRlbVdpZHRoICsgc3VmZml4U3BhY2VX
aWR0aDsKICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2lyY2xl
OgotICAgICAgICBjYXNlIERpc2M6Ci0gICAgICAgIGNhc2UgU3F1YXJlOgotICAgICAgICAgICAg
bG9naWNhbFdpZHRoID0gKGZvbnQuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSAqIDIgLyAzICsgMSkg
LyAyICsgMjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEFmYXI6Ci0gICAgICAg
IGNhc2UgQW1oYXJpYzoKLSAgICAgICAgY2FzZSBBbWhhcmljQWJlZ2VkZToKLSAgICAgICAgY2Fz
ZSBBcmFiaWNJbmRpYzoKLSAgICAgICAgY2FzZSBBcm1lbmlhbjoKLSAgICAgICAgY2FzZSBCaW5h
cnlMaXN0U3R5bGU6Ci0gICAgICAgIGNhc2UgQmVuZ2FsaToKLSAgICAgICAgY2FzZSBDYW1ib2Rp
YW46Ci0gICAgICAgIGNhc2UgQ0pLSWRlb2dyYXBoaWM6Ci0gICAgICAgIGNhc2UgQ2prRWFydGhs
eUJyYW5jaDoKLSAgICAgICAgY2FzZSBDamtIZWF2ZW5seVN0ZW06Ci0gICAgICAgIGNhc2UgRGVj
aW1hbExlYWRpbmdaZXJvOgotICAgICAgICBjYXNlIERlY2ltYWxMaXN0U3R5bGU6Ci0gICAgICAg
IGNhc2UgRGV2YW5hZ2FyaToKLSAgICAgICAgY2FzZSBFdGhpb3BpYzoKLSAgICAgICAgY2FzZSBF
dGhpb3BpY0FiZWdlZGU6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlQW1FdDoKLSAgICAg
ICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVHZXo6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNBYmVnZWRl
VGlFcjoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVUaUV0OgotICAgICAgICBjYXNlIEV0
aGlvcGljSGFsZWhhbWVBYUVyOgotICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVBYUV0Ogot
ICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVBbUV0OgotICAgICAgICBjYXNlIEV0aGlvcGlj
SGFsZWhhbWVHZXo6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZU9tRXQ6Ci0gICAgICAg
IGNhc2UgRXRoaW9waWNIYWxlaGFtZVNpZEV0OgotICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhh
bWVTb0V0OgotICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVUaUVyOgotICAgICAgICBjYXNl
IEV0aGlvcGljSGFsZWhhbWVUaUV0OgotICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVUaWc6
Ci0gICAgICAgIGNhc2UgR2VvcmdpYW46Ci0gICAgICAgIGNhc2UgR3VqYXJhdGk6Ci0gICAgICAg
IGNhc2UgR3VybXVraGk6Ci0gICAgICAgIGNhc2UgSGFuZ3VsOgotICAgICAgICBjYXNlIEhhbmd1
bENvbnNvbmFudDoKLSAgICAgICAgY2FzZSBIZWJyZXc6Ci0gICAgICAgIGNhc2UgSGlyYWdhbmE6
Ci0gICAgICAgIGNhc2UgSGlyYWdhbmFJcm9oYToKLSAgICAgICAgY2FzZSBLYW5uYWRhOgotICAg
ICAgICBjYXNlIEthdGFrYW5hOgotICAgICAgICBjYXNlIEthdGFrYW5hSXJvaGE6Ci0gICAgICAg
IGNhc2UgS2htZXI6Ci0gICAgICAgIGNhc2UgTGFvOgotICAgICAgICBjYXNlIExvd2VyQWxwaGE6
Ci0gICAgICAgIGNhc2UgTG93ZXJBcm1lbmlhbjoKLSAgICAgICAgY2FzZSBMb3dlckdyZWVrOgot
ICAgICAgICBjYXNlIExvd2VySGV4YWRlY2ltYWw6Ci0gICAgICAgIGNhc2UgTG93ZXJMYXRpbjoK
LSAgICAgICAgY2FzZSBMb3dlck5vcndlZ2lhbjoKLSAgICAgICAgY2FzZSBMb3dlclJvbWFuOgot
ICAgICAgICBjYXNlIE1hbGF5YWxhbToKLSAgICAgICAgY2FzZSBNb25nb2xpYW46Ci0gICAgICAg
IGNhc2UgTXlhbm1hcjoKLSAgICAgICAgY2FzZSBPY3RhbDoKLSAgICAgICAgY2FzZSBPcml5YToK
LSAgICAgICAgY2FzZSBPcm9tbzoKLSAgICAgICAgY2FzZSBQZXJzaWFuOgotICAgICAgICBjYXNl
IFNpZGFtYToKLSAgICAgICAgY2FzZSBTb21hbGk6Ci0gICAgICAgIGNhc2UgVGVsdWd1OgotICAg
ICAgICBjYXNlIFRoYWk6Ci0gICAgICAgIGNhc2UgVGliZXRhbjoKLSAgICAgICAgY2FzZSBUaWdy
ZToKLSAgICAgICAgY2FzZSBUaWdyaW55YUVyOgotICAgICAgICBjYXNlIFRpZ3JpbnlhRXJBYmVn
ZWRlOgotICAgICAgICBjYXNlIFRpZ3JpbnlhRXQ6Ci0gICAgICAgIGNhc2UgVGlncmlueWFFdEFi
ZWdlZGU6Ci0gICAgICAgIGNhc2UgVXBwZXJBbHBoYToKLSAgICAgICAgY2FzZSBVcHBlckFybWVu
aWFuOgotICAgICAgICBjYXNlIFVwcGVyR3JlZWs6Ci0gICAgICAgIGNhc2UgVXBwZXJIZXhhZGVj
aW1hbDoKLSAgICAgICAgY2FzZSBVcHBlckxhdGluOgotICAgICAgICBjYXNlIFVwcGVyTm9yd2Vn
aWFuOgotICAgICAgICBjYXNlIFVwcGVyUm9tYW46Ci0gICAgICAgIGNhc2UgVXJkdToKLSAgICAg
ICAgICAgIGlmIChtX3RleHQuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGxvZ2ljYWxXaWR0
aCA9IDA7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBUZXh0UnVuIHJ1biA9
IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKG1fdGV4dCwgc3R5bGUoKSk7Ci0gICAgICAg
ICAgICAgICAgTGF5b3V0VW5pdCBpdGVtV2lkdGggPSBmb250LndpZHRoKHJ1bik7Ci0gICAgICAg
ICAgICAgICAgVUNoYXIgc3VmZml4U3BhY2VbMl0gPSB7IGxpc3RNYXJrZXJTdWZmaXgodHlwZSwg
bV9saXN0SXRlbS52YWx1ZSgpKSwgJyAnIH07Ci0gICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBz
dWZmaXhTcGFjZVdpZHRoID0gZm9udC53aWR0aChSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1
bihzdWZmaXhTcGFjZSwgMiwgc3R5bGUoKSkpOwotICAgICAgICAgICAgICAgIGxvZ2ljYWxXaWR0
aCA9IGl0ZW1XaWR0aCArIHN1ZmZpeFNwYWNlV2lkdGg7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgbV9taW5QcmVmZXJyZWRM
b2dpY2FsV2lkdGggPSBsb2dpY2FsV2lkdGg7CkBAIC0xNjc2LDkgKzE2NzYsOSBAQCB2b2lkIFJl
bmRlckxpc3RNYXJrZXI6OnVwZGF0ZU1hcmdpbnMoKQogICAgICAgICBpZiAoaXNJbWFnZSgpKQog
ICAgICAgICAgICAgbWFyZ2luRW5kID0gY01hcmtlclBhZGRpbmc7CiAgICAgICAgIGVsc2Ugc3dp
dGNoIChzdHlsZSgpLmxpc3RTdHlsZVR5cGUoKSkgewotICAgICAgICAgICAgY2FzZSBEaXNjOgot
ICAgICAgICAgICAgY2FzZSBDaXJjbGU6Ci0gICAgICAgICAgICBjYXNlIFNxdWFyZToKKyAgICAg
ICAgICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGlzYzoKKyAgICAgICAgICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6Q2lyY2xlOgorICAgICAgICAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpTcXVhcmU6
CiAgICAgICAgICAgICAgICAgbWFyZ2luU3RhcnQgPSAtMTsKICAgICAgICAgICAgICAgICBtYXJn
aW5FbmQgPSBmb250TWV0cmljcy5hc2NlbnQoKSAtIG1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgp
ICsgMTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE2OTIsMTUgKzE2OTIsMTUgQEAgdm9p
ZCBSZW5kZXJMaXN0TWFya2VyOjp1cGRhdGVNYXJnaW5zKCkKICAgICAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSBmb250TWV0cmljcy5hc2NlbnQoKSAqIDIgLyAz
OwogICAgICAgICAgICAgICAgIHN3aXRjaCAoc3R5bGUoKS5saXN0U3R5bGVUeXBlKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgY2FzZSBEaXNjOgotICAgICAgICAgICAgICAgICAgICBjYXNlIENp
cmNsZToKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBTcXVhcmU6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBtYXJnaW5TdGFydCA9IC1vZmZzZXQgLSBjTWFya2VyUGFkZGluZyAtIDE7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBOb25l
TGlzdFN0eWxlOgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5TdGFydCA9IG1f
dGV4dC5pc0VtcHR5KCkgPyBMYXlvdXRVbml0KCkgOiAtbWluUHJlZmVycmVkTG9naWNhbFdpZHRo
KCkgLSBvZmZzZXQgLyAyOworICAgICAgICAgICAgICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGlz
YzoKKyAgICAgICAgICAgICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNpcmNsZToKKyAgICAgICAg
ICAgICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlNxdWFyZToKKyAgICAgICAgICAgICAgICAgICAg
bWFyZ2luU3RhcnQgPSAtb2Zmc2V0IC0gY01hcmtlclBhZGRpbmcgLSAxOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok5vbmU6
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgICAgIG1hcmdpblN0YXJ0ID0gbV90ZXh0LmlzRW1wdHkoKSA/IExheW91
dFVuaXQoKSA6IC1taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSAtIG9mZnNldCAvIDI7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgbWFyZ2luRW5kID0gLW1h
cmdpblN0YXJ0IC0gbWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCk7CkBAIC0xNzEwLDE1ICsxNzEw
LDE1IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6dXBkYXRlTWFyZ2lucygpCiAgICAgICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gZm9udE1ldHJpY3MuYXNjZW50
KCkgKiAyIC8gMzsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKHN0eWxlKCkubGlzdFN0eWxlVHlw
ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgRGlzYzoKLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSBDaXJjbGU6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgU3F1YXJlOgotICAgICAg
ICAgICAgICAgICAgICAgICAgbWFyZ2luRW5kID0gb2Zmc2V0ICsgY01hcmtlclBhZGRpbmcgKyAx
IC0gbWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBOb25lTGlzdFN0eWxlOgotICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBtYXJnaW5FbmQgPSBtX3RleHQuaXNFbXB0eSgpID8gMCA6IG9m
ZnNldCAvIDI7CisgICAgICAgICAgICAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEaXNjOgorICAg
ICAgICAgICAgICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2lyY2xlOgorICAgICAgICAgICAgICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6U3F1YXJlOgorICAgICAgICAgICAgICAgICAgICBtYXJnaW5F
bmQgPSBvZmZzZXQgKyBjTWFya2VyUGFkZGluZyArIDEgLSBtaW5QcmVmZXJyZWRMb2dpY2FsV2lk
dGgoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpOb25lOgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBtYXJnaW5FbmQgPSBtX3RleHQu
aXNFbXB0eSgpID8gMCA6IG9mZnNldCAvIDI7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgbWFyZ2luU3RhcnQgPSAtbWFyZ2luRW5kIC0gbWluUHJlZmVycmVk
TG9naWNhbFdpZHRoKCk7CkBAIC0xNzQ2LDcgKzE3NDYsNyBAQCBpbnQgUmVuZGVyTGlzdE1hcmtl
cjo6YmFzZWxpbmVQb3NpdGlvbihGCiAKIFN0cmluZyBSZW5kZXJMaXN0TWFya2VyOjpzdWZmaXgo
KSBjb25zdAogewotICAgIEVMaXN0U3R5bGVUeXBlIHR5cGUgPSBzdHlsZSgpLmxpc3RTdHlsZVR5
cGUoKTsKKyAgICBMaXN0U3R5bGVUeXBlIHR5cGUgPSBzdHlsZSgpLmxpc3RTdHlsZVR5cGUoKTsK
ICAgICBjb25zdCBVQ2hhciBzdWZmaXggPSBsaXN0TWFya2VyU3VmZml4KHR5cGUsIG1fbGlzdEl0
ZW0udmFsdWUoKSk7CiAKICAgICBpZiAoc3VmZml4ID09ICcgJykKQEAgLTE3NjcsNyArMTc2Nyw3
IEBAIFN0cmluZyBSZW5kZXJMaXN0TWFya2VyOjpzdWZmaXgoKSBjb25zdAogCiBib29sIFJlbmRl
ckxpc3RNYXJrZXI6OmlzSW5zaWRlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9saXN0SXRlbS5u
b3RJbkxpc3QoKSB8fCBzdHlsZSgpLmxpc3RTdHlsZVBvc2l0aW9uKCkgPT0gSU5TSURFOworICAg
IHJldHVybiBtX2xpc3RJdGVtLm5vdEluTGlzdCgpIHx8IHN0eWxlKCkubGlzdFN0eWxlUG9zaXRp
b24oKSA9PSBMaXN0U3R5bGVQb3NpdGlvbjo6SW5zaWRlOwogfQogCiBGbG9hdFJlY3QgUmVuZGVy
TGlzdE1hcmtlcjo6Z2V0UmVsYXRpdmVNYXJrZXJSZWN0KCkKQEAgLTE3NzYsMTEwICsxNzc2LDEx
MCBAQCBGbG9hdFJlY3QgUmVuZGVyTGlzdE1hcmtlcjo6Z2V0UmVsYXRpdmVNCiAgICAgICAgIHJl
dHVybiBGbG9hdFJlY3QoMCwgMCwgbV9pbWFnZS0+aW1hZ2VTaXplKHRoaXMsIHN0eWxlKCkuZWZm
ZWN0aXZlWm9vbSgpKS53aWR0aCgpLCBtX2ltYWdlLT5pbWFnZVNpemUodGhpcywgc3R5bGUoKS5l
ZmZlY3RpdmVab29tKCkpLmhlaWdodCgpKTsKICAgICAKICAgICBGbG9hdFJlY3QgcmVsYXRpdmVS
ZWN0OwotICAgIEVMaXN0U3R5bGVUeXBlIHR5cGUgPSBzdHlsZSgpLmxpc3RTdHlsZVR5cGUoKTsK
KyAgICBMaXN0U3R5bGVUeXBlIHR5cGUgPSBzdHlsZSgpLmxpc3RTdHlsZVR5cGUoKTsKICAgICBz
d2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBBc3Rlcmlza3M6Ci0gICAgICAgIGNhc2UgRm9v
dG5vdGVzOiB7Ci0gICAgICAgICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlKCku
Zm9udENhc2NhZGUoKTsKLSAgICAgICAgICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNv
bnN0cnVjdFRleHRSdW4obV90ZXh0LCBzdHlsZSgpKTsKLSAgICAgICAgICAgIHJlbGF0aXZlUmVj
dCA9IEZsb2F0UmVjdCgwLCAwLCBmb250LndpZHRoKHJ1biksIGZvbnQuZm9udE1ldHJpY3MoKS5o
ZWlnaHQoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIERp
c2M6Ci0gICAgICAgIGNhc2UgQ2lyY2xlOgotICAgICAgICBjYXNlIFNxdWFyZTogewotICAgICAg
ICAgICAgLy8gRklYTUU6IEFyZSB0aGVzZSBwYXJ0aWN1bGFyIHJvdW5kaW5nIHJ1bGVzIG5lY2Vz
c2FyeT8KLSAgICAgICAgICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxl
KCkuZm9udE1ldHJpY3MoKTsKLSAgICAgICAgICAgIGludCBhc2NlbnQgPSBmb250TWV0cmljcy5h
c2NlbnQoKTsKLSAgICAgICAgICAgIGludCBidWxsZXRXaWR0aCA9IChhc2NlbnQgKiAyIC8gMyAr
IDEpIC8gMjsKLSAgICAgICAgICAgIHJlbGF0aXZlUmVjdCA9IEZsb2F0UmVjdCgxLCAzICogKGFz
Y2VudCAtIGFzY2VudCAqIDIgLyAzKSAvIDIsIGJ1bGxldFdpZHRoLCBidWxsZXRXaWR0aCk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIE5vbmVMaXN0U3R5bGU6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBc3Rlcmlza3M6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpGb290bm90ZXM6IHsKKyAgICAgICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBzdHls
ZSgpLmZvbnRDYXNjYWRlKCk7CisgICAgICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNv
bnN0cnVjdFRleHRSdW4obV90ZXh0LCBzdHlsZSgpKTsKKyAgICAgICAgcmVsYXRpdmVSZWN0ID0g
RmxvYXRSZWN0KDAsIDAsIGZvbnQud2lkdGgocnVuKSwgZm9udC5mb250TWV0cmljcygpLmhlaWdo
dCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGlz
YzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNpcmNsZToKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OlNxdWFyZTogeworICAgICAgICAvLyBGSVhNRTogQXJlIHRoZXNlIHBhcnRpY3VsYXIgcm91
bmRpbmcgcnVsZXMgbmVjZXNzYXJ5PworICAgICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1l
dHJpY3MgPSBzdHlsZSgpLmZvbnRNZXRyaWNzKCk7CisgICAgICAgIGludCBhc2NlbnQgPSBmb250
TWV0cmljcy5hc2NlbnQoKTsKKyAgICAgICAgaW50IGJ1bGxldFdpZHRoID0gKGFzY2VudCAqIDIg
LyAzICsgMSkgLyAyOworICAgICAgICByZWxhdGl2ZVJlY3QgPSBGbG9hdFJlY3QoMSwgMyAqIChh
c2NlbnQgLSBhc2NlbnQgKiAyIC8gMykgLyAyLCBidWxsZXRXaWR0aCwgYnVsbGV0V2lkdGgpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpOb25lOgorICAg
ICAgICByZXR1cm4gRmxvYXRSZWN0KCk7CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBZmFyOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QW1oYXJpYzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
OkFtaGFyaWNBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QXJhYmljSW5kaWM6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBcm1lbmlhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
OkJpbmFyeToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkJlbmdhbGk6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpDYW1ib2RpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDSktJZGVvZ3Jh
cGhpYzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNqa0VhcnRobHlCcmFuY2g6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpDamtIZWF2ZW5seVN0ZW06CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpEZWNpbWFsTGVhZGluZ1plcm86CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEZWNpbWFsOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGV2YW5hZ2FyaToKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkV0aGlvcGljOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlQW1FdDoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZUdlejoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
OkV0aGlvcGljQWJlZ2VkZVRpRXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0Fi
ZWdlZGVUaUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUFhRXI6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lQWFFdDoKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVBbUV0OgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6RXRoaW9waWNIYWxlaGFtZUdlejoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlv
cGljSGFsZWhhbWVPbUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFt
ZVNpZEV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVNvRXQ6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lVGlFcjoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVUaUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6RXRoaW9waWNIYWxlaGFtZVRpZzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okdlb3JnaWFu
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6R3VqYXJhdGk6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpHdXJtdWtoaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okhhbmd1bDoKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6Okhhbmd1bENvbnNvbmFudDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
OkhlYnJldzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkhpcmFnYW5hOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6SGlyYWdhbmFJcm9oYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okthbm5h
ZGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLYXRha2FuYToKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OkthdGFrYW5hSXJvaGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLaG1lcjoKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OkxhbzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2Vy
QWxwaGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckFybWVuaWFuOgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6TG93ZXJHcmVlazoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2Vy
SGV4YWRlY2ltYWw6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckxhdGluOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJOb3J3ZWdpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpMb3dlclJvbWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TWFsYXlhbGFtOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6TW9uZ29saWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TXlh
bm1hcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok9jdGFsOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6T3JpeWE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpPcm9tbzoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OlBlcnNpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpTaWRhbWE6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpTb21hbGk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpU
ZWx1Z3U6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaGFpOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6VGliZXRhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JlOgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6VGlncmlueWFFcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3Jp
bnlhRXJBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmlueWFFdDoKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXRBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6VXBwZXJBbHBoYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyQXJtZW5pYW46
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckdyZWVrOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6VXBwZXJIZXhhZGVjaW1hbDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyTGF0
aW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlck5vcndlZ2lhbjoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OlVwcGVyUm9tYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcmR1Ogor
ICAgICAgICBpZiAobV90ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBGbG9hdFJl
Y3QoKTsKLSAgICAgICAgY2FzZSBBZmFyOgotICAgICAgICBjYXNlIEFtaGFyaWM6Ci0gICAgICAg
IGNhc2UgQW1oYXJpY0FiZWdlZGU6Ci0gICAgICAgIGNhc2UgQXJhYmljSW5kaWM6Ci0gICAgICAg
IGNhc2UgQXJtZW5pYW46Ci0gICAgICAgIGNhc2UgQmluYXJ5TGlzdFN0eWxlOgotICAgICAgICBj
YXNlIEJlbmdhbGk6Ci0gICAgICAgIGNhc2UgQ2FtYm9kaWFuOgotICAgICAgICBjYXNlIENKS0lk
ZW9ncmFwaGljOgotICAgICAgICBjYXNlIENqa0VhcnRobHlCcmFuY2g6Ci0gICAgICAgIGNhc2Ug
Q2prSGVhdmVubHlTdGVtOgotICAgICAgICBjYXNlIERlY2ltYWxMZWFkaW5nWmVybzoKLSAgICAg
ICAgY2FzZSBEZWNpbWFsTGlzdFN0eWxlOgotICAgICAgICBjYXNlIERldmFuYWdhcmk6Ci0gICAg
ICAgIGNhc2UgRXRoaW9waWM6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlOgotICAgICAg
ICBjYXNlIEV0aGlvcGljQWJlZ2VkZUFtRXQ6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNBYmVnZWRl
R2V6OgotICAgICAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZVRpRXI6Ci0gICAgICAgIGNhc2UgRXRo
aW9waWNBYmVnZWRlVGlFdDoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lQWFFcjoKLSAg
ICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lQWFFdDoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hh
bGVoYW1lQW1FdDoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lR2V6OgotICAgICAgICBj
YXNlIEV0aGlvcGljSGFsZWhhbWVPbUV0OgotICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVT
aWRFdDoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lU29FdDoKLSAgICAgICAgY2FzZSBF
dGhpb3BpY0hhbGVoYW1lVGlFcjoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lVGlFdDoK
LSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lVGlnOgotICAgICAgICBjYXNlIEdlb3JnaWFu
OgotICAgICAgICBjYXNlIEd1amFyYXRpOgotICAgICAgICBjYXNlIEd1cm11a2hpOgotICAgICAg
ICBjYXNlIEhhbmd1bDoKLSAgICAgICAgY2FzZSBIYW5ndWxDb25zb25hbnQ6Ci0gICAgICAgIGNh
c2UgSGVicmV3OgotICAgICAgICBjYXNlIEhpcmFnYW5hOgotICAgICAgICBjYXNlIEhpcmFnYW5h
SXJvaGE6Ci0gICAgICAgIGNhc2UgS2FubmFkYToKLSAgICAgICAgY2FzZSBLYXRha2FuYToKLSAg
ICAgICAgY2FzZSBLYXRha2FuYUlyb2hhOgotICAgICAgICBjYXNlIEtobWVyOgotICAgICAgICBj
YXNlIExhbzoKLSAgICAgICAgY2FzZSBMb3dlckFscGhhOgotICAgICAgICBjYXNlIExvd2VyQXJt
ZW5pYW46Ci0gICAgICAgIGNhc2UgTG93ZXJHcmVlazoKLSAgICAgICAgY2FzZSBMb3dlckhleGFk
ZWNpbWFsOgotICAgICAgICBjYXNlIExvd2VyTGF0aW46Ci0gICAgICAgIGNhc2UgTG93ZXJOb3J3
ZWdpYW46Ci0gICAgICAgIGNhc2UgTG93ZXJSb21hbjoKLSAgICAgICAgY2FzZSBNYWxheWFsYW06
Ci0gICAgICAgIGNhc2UgTW9uZ29saWFuOgotICAgICAgICBjYXNlIE15YW5tYXI6Ci0gICAgICAg
IGNhc2UgT2N0YWw6Ci0gICAgICAgIGNhc2UgT3JpeWE6Ci0gICAgICAgIGNhc2UgT3JvbW86Ci0g
ICAgICAgIGNhc2UgUGVyc2lhbjoKLSAgICAgICAgY2FzZSBTaWRhbWE6Ci0gICAgICAgIGNhc2Ug
U29tYWxpOgotICAgICAgICBjYXNlIFRlbHVndToKLSAgICAgICAgY2FzZSBUaGFpOgotICAgICAg
ICBjYXNlIFRpYmV0YW46Ci0gICAgICAgIGNhc2UgVGlncmU6Ci0gICAgICAgIGNhc2UgVGlncmlu
eWFFcjoKLSAgICAgICAgY2FzZSBUaWdyaW55YUVyQWJlZ2VkZToKLSAgICAgICAgY2FzZSBUaWdy
aW55YUV0OgotICAgICAgICBjYXNlIFRpZ3JpbnlhRXRBYmVnZWRlOgotICAgICAgICBjYXNlIFVw
cGVyQWxwaGE6Ci0gICAgICAgIGNhc2UgVXBwZXJBcm1lbmlhbjoKLSAgICAgICAgY2FzZSBVcHBl
ckdyZWVrOgotICAgICAgICBjYXNlIFVwcGVySGV4YWRlY2ltYWw6Ci0gICAgICAgIGNhc2UgVXBw
ZXJMYXRpbjoKLSAgICAgICAgY2FzZSBVcHBlck5vcndlZ2lhbjoKLSAgICAgICAgY2FzZSBVcHBl
clJvbWFuOgotICAgICAgICBjYXNlIFVyZHU6Ci0gICAgICAgICAgICBpZiAobV90ZXh0LmlzRW1w
dHkoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gRmxvYXRSZWN0KCk7Ci0gICAgICAgICAgICBj
b25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKTsKLSAgICAgICAg
ICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4obV90ZXh0LCBz
dHlsZSgpKTsKLSAgICAgICAgICAgIGZsb2F0IGl0ZW1XaWR0aCA9IGZvbnQud2lkdGgocnVuKTsK
LSAgICAgICAgICAgIFVDaGFyIHN1ZmZpeFNwYWNlWzJdID0geyBsaXN0TWFya2VyU3VmZml4KHR5
cGUsIG1fbGlzdEl0ZW0udmFsdWUoKSksICcgJyB9OwotICAgICAgICAgICAgZmxvYXQgc3VmZml4
U3BhY2VXaWR0aCA9IGZvbnQud2lkdGgoUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oc3Vm
Zml4U3BhY2UsIDIsIHN0eWxlKCkpKTsKLSAgICAgICAgICAgIHJlbGF0aXZlUmVjdCA9IEZsb2F0
UmVjdCgwLCAwLCBpdGVtV2lkdGggKyBzdWZmaXhTcGFjZVdpZHRoLCBmb250LmZvbnRNZXRyaWNz
KCkuaGVpZ2h0KCkpOworICAgICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlKCku
Zm9udENhc2NhZGUoKTsKKyAgICAgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3Ry
dWN0VGV4dFJ1bihtX3RleHQsIHN0eWxlKCkpOworICAgICAgICBmbG9hdCBpdGVtV2lkdGggPSBm
b250LndpZHRoKHJ1bik7CisgICAgICAgIFVDaGFyIHN1ZmZpeFNwYWNlWzJdID0geyBsaXN0TWFy
a2VyU3VmZml4KHR5cGUsIG1fbGlzdEl0ZW0udmFsdWUoKSksICcgJyB9OworICAgICAgICBmbG9h
dCBzdWZmaXhTcGFjZVdpZHRoID0gZm9udC53aWR0aChSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4
dFJ1bihzdWZmaXhTcGFjZSwgMiwgc3R5bGUoKSkpOworICAgICAgICByZWxhdGl2ZVJlY3QgPSBG
bG9hdFJlY3QoMCwgMCwgaXRlbVdpZHRoICsgc3VmZml4U3BhY2VXaWR0aCwgZm9udC5mb250TWV0
cmljcygpLmhlaWdodCgpKTsKICAgICB9CiAKICAgICBpZiAoIXN0eWxlKCkuaXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RNYXJrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGlzdE1hcmtlci5oCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdE1hcmtlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyTGlzdEl0ZW07CiAKLVN0cmluZyBsaXN0
TWFya2VyVGV4dChFTGlzdFN0eWxlVHlwZSwgaW50IHZhbHVlKTsKK1N0cmluZyBsaXN0TWFya2Vy
VGV4dChMaXN0U3R5bGVUeXBlLCBpbnQgdmFsdWUpOwogCiAvLyBVc2VkIHRvIHJlbmRlciB0aGUg
bGlzdCBpdGVtJ3MgbWFya2VyLgogLy8gVGhlIFJlbmRlckxpc3RNYXJrZXIgYWx3YXlzIGhhcyB0
byBiZSBhIGNoaWxkIG9mIGEgUmVuZGVyTGlzdEl0ZW0uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHJl
dmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBS
ZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcjo6bAogewogICAgIFJlbmRlckJsb2NrRmxv
dzo6bGF5b3V0KCk7CiAKLSAgICBpZiAoc3R5bGUoKS5kaXNwbGF5KCkgPT0gTk9ORSB8fCAhaXM8
UmVuZGVyQm94PihuZXh0U2libGluZygpKSkKKyAgICBpZiAoc3R5bGUoKS5kaXNwbGF5KCkgPT0g
RGlzcGxheVR5cGU6Ok5vbmUgfHwgIWlzPFJlbmRlckJveD4obmV4dFNpYmxpbmcoKSkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIFJlbmRlckJveCYgYnV0dG9uQm94ID0gZG93bmNhc3Q8UmVuZGVy
Qm94PigqbmV4dFNpYmxpbmcoKSk7CkBAIC05OCw3ICs5OCw3IEBAIFJlbmRlclRleHRUcmFja0Nv
bnRhaW5lckVsZW1lbnQ6OlJlbmRlclQKIHZvaWQgUmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxl
bWVudDo6bGF5b3V0KCkKIHsKICAgICBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dCgpOwotICAgIGlm
IChzdHlsZSgpLmRpc3BsYXkoKSA9PSBOT05FKQorICAgIGlmIChzdHlsZSgpLmRpc3BsYXkoKSA9
PSBEaXNwbGF5VHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKG1lZGlh
Q29udHJvbEVsZW1lbnRUeXBlKGVsZW1lbnQoKSkgPT0gTWVkaWFUZXh0VHJhY2tEaXNwbGF5Q29u
dGFpbmVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0
LmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck1lbnVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDEyICsxMjcsMTIgQEAgdm9pZCBS
ZW5kZXJNZW51TGlzdDo6YWRqdXN0SW5uZXJTdHlsZSgpCiAgICAgaWYgKGRvY3VtZW50KCkucGFn
ZSgpLT5jaHJvbWUoKS5zZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpKSB7CiAg
ICAgICAgIC8vIEl0ZW1zIGluIHRoZSBwb3B1cCB3aWxsIG5vdCByZXNwZWN0IHRoZSBDU1MgdGV4
dC1hbGlnbiBhbmQgZGlyZWN0aW9uIHByb3BlcnRpZXMsCiAgICAgICAgIC8vIHNvIHdlIG11c3Qg
YWRqdXN0IG91ciBvd24gc3R5bGUgdG8gbWF0Y2guCi0gICAgICAgIGlubmVyU3R5bGUuc2V0VGV4
dEFsaWduKExFRlQpOworICAgICAgICBpbm5lclN0eWxlLnNldFRleHRBbGlnbihUZXh0QWxpZ25N
b2RlOjpMZWZ0KTsKICAgICAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSAobV9idXR0b25U
ZXh0ICYmIG1fYnV0dG9uVGV4dC0+dGV4dCgpLmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCkgPT0g
VV9SSUdIVF9UT19MRUZUKSA/IFJUTCA6IExUUjsKICAgICAgICAgaW5uZXJTdHlsZS5zZXREaXJl
Y3Rpb24oZGlyZWN0aW9uKTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgfSBlbHNlIGlmIChkb2N1
bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuc2VsZWN0SXRlbUFsaWdubWVudEZvbGxvd3NNZW51V3Jp
dGluZ0RpcmVjdGlvbigpKSB7Ci0gICAgICAgIGlubmVyU3R5bGUuc2V0VGV4dEFsaWduKHN0eWxl
KCkuZGlyZWN0aW9uKCkgPT0gTFRSID8gTEVGVCA6IFJJR0hUKTsKKyAgICAgICAgaW5uZXJTdHls
ZS5zZXRUZXh0QWxpZ24oc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBMVFIgPyBUZXh0QWxpZ25Nb2Rl
OjpMZWZ0IDogVGV4dEFsaWduTW9kZTo6UmlnaHQpOwogICAgICAgICBUZXh0RGlyZWN0aW9uIGRp
cmVjdGlvbjsKICAgICAgICAgRVVuaWNvZGVCaWRpIHVuaWNvZGVCaWRpOwogICAgICAgICBpZiAo
bXVsdGlwbGUoKSAmJiBzZWxlY3RlZE9wdGlvbkNvdW50KCp0aGlzKSAhPSAxKSB7CkBAIC0xNTMs
NyArMTUzLDcgQEAgdm9pZCBSZW5kZXJNZW51TGlzdDo6YWRqdXN0SW5uZXJTdHlsZSgpCiAgICAg
fSBlbHNlIGlmIChtX29wdGlvblN0eWxlICYmIGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5z
ZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01lbnVXcml0aW5nRGlyZWN0aW9uKCkpIHsKICAgICAg
ICAgaWYgKChtX29wdGlvblN0eWxlLT5kaXJlY3Rpb24oKSAhPSBpbm5lclN0eWxlLmRpcmVjdGlv
bigpIHx8IG1fb3B0aW9uU3R5bGUtPnVuaWNvZGVCaWRpKCkgIT0gaW5uZXJTdHlsZS51bmljb2Rl
QmlkaSgpKSkKICAgICAgICAgICAgIG1faW5uZXJCbG9jay0+c2V0TmVlZHNMYXlvdXRBbmRQcmVm
V2lkdGhzUmVjYWxjKCk7Ci0gICAgICAgIGlubmVyU3R5bGUuc2V0VGV4dEFsaWduKHN0eWxlKCku
aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gTEVGVCA6IFJJR0hUKTsKKyAgICAgICAgaW5uZXJT
dHlsZS5zZXRUZXh0QWxpZ24oc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBUZXh0
QWxpZ25Nb2RlOjpMZWZ0IDogVGV4dEFsaWduTW9kZTo6UmlnaHQpOwogICAgICAgICBpbm5lclN0
eWxlLnNldERpcmVjdGlvbihtX29wdGlvblN0eWxlLT5kaXJlY3Rpb24oKSk7CiAgICAgICAgIGlu
bmVyU3R5bGUuc2V0VW5pY29kZUJpZGkobV9vcHRpb25TdHlsZS0+dW5pY29kZUJpZGkoKSk7CiAg
ICAgfQpAQCAtNTA3LDggKzUwNyw4IEBAIFBvcHVwTWVudVN0eWxlIFJlbmRlck1lbnVMaXN0Ojpp
dGVtU3R5bGUKICAgICBnZXRJdGVtQmFja2dyb3VuZENvbG9yKGxpc3RJbmRleCwgaXRlbUJhY2tn
cm91bmRDb2xvciwgaXRlbUhhc0N1c3RvbUJhY2tncm91bmRDb2xvcik7CiAKICAgICBhdXRvJiBz
dHlsZSA9ICplbGVtZW50LT5jb21wdXRlZFN0eWxlKCk7Ci0gICAgcmV0dXJuIFBvcHVwTWVudVN0
eWxlKHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0
eUNvbG9yKSwgaXRlbUJhY2tncm91bmRDb2xvciwgc3R5bGUuZm9udENhc2NhZGUoKSwgc3R5bGUu
dmlzaWJpbGl0eSgpID09IFZJU0lCTEUsCi0gICAgICAgIHN0eWxlLmRpc3BsYXkoKSA9PSBOT05F
LCB0cnVlLCBzdHlsZS50ZXh0SW5kZW50KCksIHN0eWxlLmRpcmVjdGlvbigpLCBpc092ZXJyaWRl
KHN0eWxlLnVuaWNvZGVCaWRpKCkpLAorICAgIHJldHVybiBQb3B1cE1lbnVTdHlsZShzdHlsZS52
aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlDb2xvciksIGl0
ZW1CYWNrZ3JvdW5kQ29sb3IsIHN0eWxlLmZvbnRDYXNjYWRlKCksIHN0eWxlLnZpc2liaWxpdHko
KSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlLAorICAgICAgICBzdHlsZS5kaXNwbGF5KCkgPT0gRGlz
cGxheVR5cGU6Ok5vbmUsIHRydWUsIHN0eWxlLnRleHRJbmRlbnQoKSwgc3R5bGUuZGlyZWN0aW9u
KCksIGlzT3ZlcnJpZGUoc3R5bGUudW5pY29kZUJpZGkoKSksCiAgICAgICAgIGl0ZW1IYXNDdXN0
b21CYWNrZ3JvdW5kQ29sb3IgPyBQb3B1cE1lbnVTdHlsZTo6Q3VzdG9tQmFja2dyb3VuZENvbG9y
IDogUG9wdXBNZW51U3R5bGU6OkRlZmF1bHRCYWNrZ3JvdW5kQ29sb3IpOwogfQogCkBAIC01NDYs
NyArNTQ2LDcgQEAgUG9wdXBNZW51U3R5bGUgUmVuZGVyTWVudUxpc3Q6Om1lbnVTdHlsZQogICAg
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZVRvVXNlID0gbV9pbm5lckJsb2NrID8gbV9pbm5lckJs
b2NrLT5zdHlsZSgpIDogc3R5bGUoKTsKICAgICBJbnRSZWN0IGFic0JvdW5kcyA9IGFic29sdXRl
Qm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCk7CiAgICAgcmV0dXJuIFBvcHVwTWVu
dVN0eWxlKHN0eWxlVG9Vc2UudmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENT
U1Byb3BlcnR5Q29sb3IpLCBzdHlsZVRvVXNlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xv
ckZpbHRlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciksCi0gICAgICAgIHN0eWxlVG9Vc2Uu
Zm9udENhc2NhZGUoKSwgc3R5bGVUb1VzZS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSwgc3R5bGVU
b1VzZS5kaXNwbGF5KCkgPT0gTk9ORSwKKyAgICAgICAgc3R5bGVUb1VzZS5mb250Q2FzY2FkZSgp
LCBzdHlsZVRvVXNlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBzdHlsZVRv
VXNlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSwKICAgICAgICAgc3R5bGUoKS5oYXNB
cHBlYXJhbmNlKCkgJiYgc3R5bGUoKS5hcHBlYXJhbmNlKCkgPT0gTWVudWxpc3RQYXJ0LCBzdHls
ZVRvVXNlLnRleHRJbmRlbnQoKSwKICAgICAgICAgc3R5bGUoKS5kaXJlY3Rpb24oKSwgaXNPdmVy
cmlkZShzdHlsZSgpLnVuaWNvZGVCaWRpKCkpLCBQb3B1cE1lbnVTdHlsZTo6RGVmYXVsdEJhY2tn
cm91bmRDb2xvciwKICAgICAgICAgUG9wdXBNZW51U3R5bGU6OlNlbGVjdFBvcHVwLCB0aGVtZSgp
LnBvcHVwTWVudVNpemUoc3R5bGVUb1VzZSwgYWJzQm91bmRzKSk7CkBAIC01NTksNyArNTU5LDcg
QEAgSG9zdFdpbmRvdyogUmVuZGVyTWVudUxpc3Q6Omhvc3RXaW5kb3coKQogCiBSZWY8U2Nyb2xs
YmFyPiBSZW5kZXJNZW51TGlzdDo6Y3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGFibGVBcmVhJiBzY3Jv
bGxhYmxlQXJlYSwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbGJhckNv
bnRyb2xTaXplIGNvbnRyb2xTaXplKQogewotICAgIGJvb2wgaGFzQ3VzdG9tU2Nyb2xsYmFyU3R5
bGUgPSBzdHlsZSgpLmhhc1BzZXVkb1N0eWxlKFNDUk9MTEJBUik7CisgICAgYm9vbCBoYXNDdXN0
b21TY3JvbGxiYXJTdHlsZSA9IHN0eWxlKCkuaGFzUHNldWRvU3R5bGUoUHNldWRvSWQ6OlNjcm9s
bGJhcik7CiAgICAgaWYgKGhhc0N1c3RvbVNjcm9sbGJhclN0eWxlKQogICAgICAgICByZXR1cm4g
UmVuZGVyU2Nyb2xsYmFyOjpjcmVhdGVDdXN0b21TY3JvbGxiYXIoc2Nyb2xsYWJsZUFyZWEsIG9y
aWVudGF0aW9uLCAmc2VsZWN0RWxlbWVudCgpKTsKICAgICByZXR1cm4gU2Nyb2xsYmFyOjpjcmVh
dGVOYXRpdmVTY3JvbGxiYXIoc2Nyb2xsYWJsZUFyZWEsIG9yaWVudGF0aW9uLCBjb250cm9sU2l6
ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFu
bmVyUGxhY2Vob2xkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5jcHAJKHJldmlzaW9uIDIzMjEy
MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQ
bGFjZWhvbGRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKFJlbmRlck11bHRpQwogCiBSZW5kZXJQdHI8UmVuZGVyTXVsdGlD
b2x1bW5TcGFubmVyUGxhY2Vob2xkZXI+IFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9s
ZGVyOjpjcmVhdGVBbm9ueW1vdXMoUmVuZGVyTXVsdGlDb2x1bW5GbG93JiBmcmFnbWVudGVkRmxv
dywgUmVuZGVyQm94JiBzcGFubmVyLCBjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUpCiB7
Ci0gICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdp
dGhEaXNwbGF5KHBhcmVudFN0eWxlLCBCTE9DSyk7CisgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRl
clN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudFN0eWxlLCBEaXNw
bGF5VHlwZTo6QmxvY2spOwogICAgIG5ld1N0eWxlLnNldENsZWFyKENsZWFyOjpCb3RoKTsgLy8g
V2UgZG9uJ3Qgd2FudCBmbG9hdHMgaW4gdGhlIHJvdyBwcmVjZWRpbmcgdGhlIHNwYW5uZXIgdG8g
Y29udGludWUgb24gdGhlIG90aGVyIHNpZGUuCiAgICAgYXV0byBwbGFjZWhvbGRlciA9IGNyZWF0
ZVJlbmRlcmVyPFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyPihmcmFnbWVudGVk
Rmxvdywgc3Bhbm5lciwgV1RGTW92ZShuZXdTdHlsZSkpOwogICAgIHBsYWNlaG9sZGVyLT5pbml0
aWFsaXplU3R5bGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU3NCw3ICsxNTc0LDcgQEAgaW50IFJl
bmRlck9iamVjdDo6aW5uZXJMaW5lSGVpZ2h0KCkgY29ucwogdm9pZCBSZW5kZXJPYmplY3Q6OmFk
ZEFubm90YXRlZFJlZ2lvbnMoVmVjdG9yPEFubm90YXRlZFJlZ2lvblZhbHVlPiYgcmVnaW9ucykK
IHsKICAgICAvLyBDb252ZXJ0IHRoZSBzdHlsZSByZWdpb25zIHRvIGFic29sdXRlIGNvb3JkaW5h
dGVzLgotICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8ICFpczxSZW5k
ZXJCb3g+KCp0aGlzKSkKKyAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0
eTo6VmlzaWJsZSB8fCAhaXM8UmVuZGVyQm94PigqdGhpcykpCiAgICAgICAgIHJldHVybjsKICAg
ICAKICAgICBhdXRvJiBib3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KCp0aGlzKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDIzMjEyMykKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtNDA3LDkgKzQwNyw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIC8vIFRoaXMgZnVuY3Rp
b24gaXMga2VwdCBpbiBzeW5jIHdpdGggYW5vbnltb3VzIGJsb2NrIGNyZWF0aW9uIGNvbmRpdGlv
bnMgaW4KICAgICAgICAgLy8gUmVuZGVyQmxvY2s6OmNyZWF0ZUFub255bW91c0Jsb2NrKCkuIFRo
aXMgaW5jbHVkZXMgY3JlYXRpbmcgYW4gYW5vbnltb3VzCi0gICAgICAgIC8vIFJlbmRlckJsb2Nr
IGhhdmluZyBhIEJMT0NLIG9yIEJPWCBkaXNwbGF5LiBPdGhlciBjbGFzc2VzIHN1Y2ggYXMgUmVu
ZGVyVGV4dEZyYWdtZW50CisgICAgICAgIC8vIFJlbmRlckJsb2NrIGhhdmluZyBhIERpc3BsYXlU
eXBlOjpCbG9jayBvciBEaXNwbGF5VHlwZTo6Qm94IGRpc3BsYXkuIE90aGVyIGNsYXNzZXMgc3Vj
aCBhcyBSZW5kZXJUZXh0RnJhZ21lbnQKICAgICAgICAgLy8gYXJlIG5vdCBSZW5kZXJCbG9ja3Mg
YW5kIHdpbGwgcmV0dXJuIGZhbHNlLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU2NzA5LiAKLSAgICAgICAgcmV0dXJuIGlzQW5vbnltb3VzKCkgJiYgKHN0eWxl
KCkuZGlzcGxheSgpID09IEJMT0NLIHx8IHN0eWxlKCkuZGlzcGxheSgpID09IEJPWCkgJiYgc3R5
bGUoKS5zdHlsZVR5cGUoKSA9PSBOT1BTRVVETyAmJiBpc1JlbmRlckJsb2NrKCkgJiYgIWlzTGlz
dE1hcmtlcigpICYmICFpc1JlbmRlckZyYWdtZW50ZWRGbG93KCkgJiYgIWlzUmVuZGVyTXVsdGlD
b2x1bW5TZXQoKSAmJiAhaXNSZW5kZXJWaWV3KCkKKyAgICAgICAgcmV0dXJuIGlzQW5vbnltb3Vz
KCkgJiYgKHN0eWxlKCkuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpCbG9jayB8fCBzdHlsZSgp
LmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Qm94KSAmJiBzdHlsZSgpLnN0eWxlVHlwZSgpID09
IFBzZXVkb0lkOjpOb25lICYmIGlzUmVuZGVyQmxvY2soKSAmJiAhaXNMaXN0TWFya2VyKCkgJiYg
IWlzUmVuZGVyRnJhZ21lbnRlZEZsb3coKSAmJiAhaXNSZW5kZXJNdWx0aUNvbHVtblNldCgpICYm
ICFpc1JlbmRlclZpZXcoKQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICAgICAgICAg
ICYmICFpc1JlbmRlckZ1bGxTY3JlZW4oKQogICAgICAgICAgICAgJiYgIWlzUmVuZGVyRnVsbFNj
cmVlblBsYWNlaG9sZGVyKCkKQEAgLTEwMjMsNyArMTAyMyw3IEBAIGlubGluZSBib29sIFJlbmRl
ck9iamVjdDo6aXNCZWZvcmVDb250ZW4KICAgICAvLyBUZXh0IG5vZGVzIGRvbid0IGhhdmUgdGhl
aXIgb3duIHN0eWxlcywgc28gaWdub3JlIHRoZSBzdHlsZSBvbiBhIHRleHQgbm9kZS4KICAgICBp
ZiAoaXNUZXh0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoc3R5bGUoKS5zdHls
ZVR5cGUoKSAhPSBCRUZPUkUpCisgICAgaWYgKHN0eWxlKCkuc3R5bGVUeXBlKCkgIT0gUHNldWRv
SWQ6OkJlZm9yZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQpA
QCAtMTAzMyw3ICsxMDMzLDcgQEAgaW5saW5lIGJvb2wgUmVuZGVyT2JqZWN0Ojppc0FmdGVyQ29u
dGVudAogICAgIC8vIFRleHQgbm9kZXMgZG9uJ3QgaGF2ZSB0aGVpciBvd24gc3R5bGVzLCBzbyBp
Z25vcmUgdGhlIHN0eWxlIG9uIGEgdGV4dCBub2RlLgogICAgIGlmIChpc1RleHQoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChzdHlsZSgpLnN0eWxlVHlwZSgpICE9IEFGVEVSKQor
ICAgIGlmIChzdHlsZSgpLnN0eWxlVHlwZSgpICE9IFBzZXVkb0lkOjpBZnRlcikKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNDIsNyArMjQyLDcgQEAgYm9vbCBSZW5kZXJSZXBsYWNlZDo6c2hvdWxkUGFpbnQoUGFpbnRJ
bgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAogICAgIC8vIGlmIHdlJ3JlIGludmlz
aWJsZSBvciBoYXZlbid0IHJlY2VpdmVkIGEgbGF5b3V0IHlldCwgdGhlbiBqdXN0IGJhaWwuCi0g
ICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKHN0eWxlKCku
dmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAKICAgICBMYXlvdXRQb2ludCBhZGp1c3RlZFBhaW50T2Zmc2V0ID0gcGFpbnRPZmZz
ZXQgKyBsb2NhdGlvbigpOwpAQCAtNjY3LDcgKzY2Nyw3IEBAIGJvb2wgUmVuZGVyUmVwbGFjZWQ6
OmlzU2VsZWN0ZWQoKSBjb25zdAogCiBMYXlvdXRSZWN0IFJlbmRlclJlcGxhY2VkOjpjbGlwcGVk
T3ZlcmZsb3dSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyKSBjb25zdAogewotICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBW
SVNJQkxFICYmICFlbmNsb3NpbmdMYXllcigpLT5oYXNWaXNpYmxlQ29udGVudCgpKQorICAgIGlm
IChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICFlbmNsb3Np
bmdMYXllcigpLT5oYXNWaXNpYmxlQ29udGVudCgpKQogICAgICAgICByZXR1cm4gTGF5b3V0UmVj
dCgpOwogCiAgICAgLy8gVGhlIHNlbGVjdGlvblJlY3QgY2FuIHByb2plY3Qgb3V0c2lkZSBvZiB0
aGUgb3ZlcmZsb3dSZWN0LCBzbyB0YWtlIHRoZWlyIHVuaW9uCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYwLDkgKzYwLDkgQEAgUmVuZGVyUnVieVJ1biogUmVuZGVyUnVieUJhc2U6OnJ1YnlSdW4o
KQogICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJSdWJ5UnVuPihwYXJlbnQoKSk7CiB9CiAKLUVU
ZXh0QWxpZ24gUmVuZGVyUnVieUJhc2U6OnRleHRBbGlnbm1lbnRGb3JMaW5lKGJvb2wgLyogZW5k
c1dpdGhTb2Z0QnJlYWsgKi8pIGNvbnN0CitUZXh0QWxpZ25Nb2RlIFJlbmRlclJ1YnlCYXNlOjp0
ZXh0QWxpZ25tZW50Rm9yTGluZShib29sIC8qIGVuZHNXaXRoU29mdEJyZWFrICovKSBjb25zdAog
ewotICAgIHJldHVybiBKVVNUSUZZOworICAgIHJldHVybiBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5
OwogfQogCiB2b2lkIFJlbmRlclJ1YnlCYXNlOjphZGp1c3RJbmxpbmVEaXJlY3Rpb25MaW5lQm91
bmRzKGludCBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50LCBmbG9hdCYgbG9naWNhbExlZnQsIGZs
b2F0JiBsb2dpY2FsV2lkdGgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUnVieUJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUnVieUJhc2UuaAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBib29sIGlzUnVieUJhc2UoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc0NoaWxkQWxsb3dlZChjb25zdCBSZW5kZXJPYmpl
Y3QmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIEVUZXh0QWxpZ24g
dGV4dEFsaWdubWVudEZvckxpbmUoYm9vbCBlbmRzV2l0aFNvZnRCcmVhaykgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgVGV4dEFsaWduTW9kZSB0ZXh0QWxpZ25tZW50Rm9yTGluZShib29sIGVuZHNXaXRo
U29mdEJyZWFrKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGFkanVzdElubGluZURpcmVjdGlv
bkxpbmVCb3VuZHMoaW50IGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQsIGZsb2F0JiBsb2dpY2Fs
TGVmdCwgZmxvYXQmIGxvZ2ljYWxXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBmbG9hdCBt
X2luaXRpYWxPZmZzZXQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVi
eVJ1bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1
YnlSdW4uY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUnVieVJ1bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDggKzk5LDggQEAgYm9vbCBS
ZW5kZXJSdWJ5UnVuOjppc0NoaWxkQWxsb3dlZChjb25zdAogCiBSZW5kZXJQdHI8UmVuZGVyUnVi
eUJhc2U+IFJlbmRlclJ1YnlSdW46OmNyZWF0ZVJ1YnlCYXNlKCkgY29uc3QKIHsKLSAgICBhdXRv
IG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXko
c3R5bGUoKSwgQkxPQ0spOwotICAgIG5ld1N0eWxlLnNldFRleHRBbGlnbihDRU5URVIpOyAvLyBG
SVhNRTogdXNlIFdFQktJVF9DRU5URVI/CisgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxl
OjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlKCksIERpc3BsYXlUeXBlOjpC
bG9jayk7CisgICAgbmV3U3R5bGUuc2V0VGV4dEFsaWduKFRleHRBbGlnbk1vZGU6OkNlbnRlcik7
IC8vIEZJWE1FOiB1c2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0Q2VudGVyPwogICAgIGF1dG8gcmVu
ZGVyZXIgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJSdWJ5QmFzZT4oZG9jdW1lbnQoKSwgV1RGTW92
ZShuZXdTdHlsZSkpOwogICAgIHJlbmRlcmVyLT5pbml0aWFsaXplU3R5bGUoKTsKICAgICByZXR1
cm4gcmVuZGVyZXI7CkBAIC0xMDksNyArMTA5LDcgQEAgUmVuZGVyUHRyPFJlbmRlclJ1YnlCYXNl
PiBSZW5kZXJSdWJ5UnVuOgogUmVuZGVyUHRyPFJlbmRlclJ1YnlSdW4+IFJlbmRlclJ1YnlSdW46
OnN0YXRpY0NyZWF0ZVJ1YnlSdW4oY29uc3QgUmVuZGVyT2JqZWN0KiBwYXJlbnRSdWJ5KQogewog
ICAgIEFTU0VSVChpc1J1YnkocGFyZW50UnVieSkpOwotICAgIGF1dG8gcmVuZGVyZXIgPSBjcmVh
dGVSZW5kZXJlcjxSZW5kZXJSdWJ5UnVuPihwYXJlbnRSdWJ5LT5kb2N1bWVudCgpLCBSZW5kZXJT
dHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnRSdWJ5LT5zdHlsZSgp
LCBJTkxJTkVfQkxPQ0spKTsKKyAgICBhdXRvIHJlbmRlcmVyID0gY3JlYXRlUmVuZGVyZXI8UmVu
ZGVyUnVieVJ1bj4ocGFyZW50UnVieS0+ZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFu
b255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50UnVieS0+c3R5bGUoKSwgRGlzcGxheVR5cGU6
OklubGluZUJsb2NrKSk7CiAgICAgcmVuZGVyZXItPmluaXRpYWxpemVTdHlsZSgpOwogICAgIHJl
dHVybiByZW5kZXJlcjsKIH0KQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIFJlbmRlclJ1YnlSdW46
OmxheW91dEJsb2NrKGJvb2wgcmVsCiAgICAgICAgIC8vIFNpbmNlIHRoZSBleHRyYSByZWxheW91
dCBpbiBSZW5kZXJCbG9ja0Zsb3c6OnVwZGF0ZVJ1YnlGb3JKdXN0aWZpZWRUZXh0KCkgY2F1c2Vz
IHRoZSBzaXplIG9mIHRoZSBSZW5kZXJSdWJ5VGV4dC9SZW5kZXJSdWJ5QmFzZQogICAgICAgICAv
LyBkZXBlbmRlbnQgb24gdGhlIGxpbmUncyBjdXJyZW50IGV4cGFuc2lvbiwgd2hlbmV2ZXIgd2Ug
cmVsYXlvdXQgdGhlIFJlbmRlclJ1YnlSdW4sIHdlIG5lZWQgdG8gcmVsYXlvdXQgdGhlIFJlbmRl
clJ1YnlCYXNlL1JlbmRlclJ1YnlUZXh0IGFzIHdlbGwuCiAgICAgICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgdGFrZSB0aGUgZXhwYW5zaW9uIG9wcG9ydHVuaXRpZXMgaW50byBhY2NvdW50IGlmIHBv
c3NpYmxlLgotICAgICAgICByZWxheW91dENoaWxkcmVuID0gc3R5bGUoKS50ZXh0QWxpZ24oKSA9
PSBKVVNUSUZZOworICAgICAgICByZWxheW91dENoaWxkcmVuID0gc3R5bGUoKS50ZXh0QWxpZ24o
KSA9PSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5OwogICAgIH0KIAogICAgIFJlbmRlckJsb2NrRmxv
dzo6bGF5b3V0QmxvY2socmVsYXlvdXRDaGlsZHJlbiwgcGFnZUhlaWdodCk7CkBAIC0xNjMsNyAr
MTYzLDcgQEAgdm9pZCBSZW5kZXJSdWJ5UnVuOjpsYXlvdXRCbG9jayhib29sIHJlbAogICAgICAg
ICBsYXN0TGluZVJ1YnlUZXh0Qm90dG9tID0gcm9vdEJveC0+bG9naWNhbEJvdHRvbUxheW91dE92
ZXJmbG93KCk7CiAgICAgfQogICAgIAotICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgp
ICYmIHJ0LT5zdHlsZSgpLnJ1YnlQb3NpdGlvbigpID09IFJ1YnlQb3NpdGlvbkludGVyQ2hhcmFj
dGVyKSB7CisgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgJiYgcnQtPnN0eWxlKCku
cnVieVBvc2l0aW9uKCkgPT0gUnVieVBvc2l0aW9uOjpJbnRlckNoYXJhY3RlcikgewogICAgICAg
ICAvLyBCb3BvbW9mby4gV2UgbmVlZCB0byBtb3ZlIHRoZSBSZW5kZXJSdWJ5VGV4dCBvdmVyIHRv
IHRoZSByaWdodCBzaWRlIGFuZCBjZW50ZXIgaXQKICAgICAgICAgLy8gdmVydGljYWxseSByZWxh
dGl2ZSB0byB0aGUgYmFzZS4KICAgICAgICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBzdHls
ZSgpLmZvbnRDYXNjYWRlKCk7CkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBSZW5kZXJSdWJ5UnVu
OjpsYXlvdXRCbG9jayhib29sIHJlbAogICAgICAgICAgICAgTGF5b3V0VW5pdCBleHRlbnQgPSBs
YXN0TGluZUJvdHRvbSAtIGZpcnN0TGluZVRvcDsKICAgICAgICAgICAgIHJ0LT5zZXRZKGZpcnN0
TGluZVRvcCArIChleHRlbnQgLSBydC0+aGVpZ2h0KCkpIC8gMik7CiAgICAgICAgIH0KLSAgICB9
IGVsc2UgaWYgKHN0eWxlKCkuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpID09IChzdHlsZSgp
LnJ1YnlQb3NpdGlvbigpID09IFJ1YnlQb3NpdGlvbkFmdGVyKSkgeworICAgIH0gZWxzZSBpZiAo
c3R5bGUoKS5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkgPT0gKHN0eWxlKCkucnVieVBvc2l0
aW9uKCkgPT0gUnVieVBvc2l0aW9uOjpBZnRlcikpIHsKICAgICAgICAgTGF5b3V0VW5pdCBmaXJz
dExpbmVUb3AgPSAwOwogICAgICAgICBpZiAoUmVuZGVyUnVieUJhc2UqIHJiID0gcnVieUJhc2Uo
KSkgewogICAgICAgICAgICAgUm9vdElubGluZUJveCogcm9vdEJveCA9IHJiLT5maXJzdFJvb3RC
b3goKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmNw
cAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1
YnlUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsMjAgKzU3LDIwIEBAIGJvb2wgUmVuZGVy
UnVieVRleHQ6OmlzQ2hpbGRBbGxvd2VkKGNvbnMKICAgICByZXR1cm4gY2hpbGQuaXNJbmxpbmUo
KTsKIH0KIAotRVRleHRBbGlnbiBSZW5kZXJSdWJ5VGV4dDo6dGV4dEFsaWdubWVudEZvckxpbmUo
Ym9vbCBlbmRzV2l0aFNvZnRCcmVhaykgY29uc3QKK1RleHRBbGlnbk1vZGUgUmVuZGVyUnVieVRl
eHQ6OnRleHRBbGlnbm1lbnRGb3JMaW5lKGJvb2wgZW5kc1dpdGhTb2Z0QnJlYWspIGNvbnN0CiB7
Ci0gICAgRVRleHRBbGlnbiB0ZXh0QWxpZ24gPSBzdHlsZSgpLnRleHRBbGlnbigpOworICAgIFRl
eHRBbGlnbk1vZGUgdGV4dEFsaWduID0gc3R5bGUoKS50ZXh0QWxpZ24oKTsKICAgICAvLyBGSVhN
RTogVGhpcyBjaGVjayBpcyBib2d1cyBzaW5jZSB1c2VyIGNhbiBzZXQgdGhlIGluaXRpYWwgdmFs
dWUuCiAgICAgaWYgKHRleHRBbGlnbiAhPSBSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRBbGlnbigp
KQogICAgICAgICByZXR1cm4gUmVuZGVyQmxvY2tGbG93Ojp0ZXh0QWxpZ25tZW50Rm9yTGluZShl
bmRzV2l0aFNvZnRCcmVhayk7CiAKICAgICAvLyBUaGUgZGVmYXVsdCBiZWhhdmlvciBpcyB0byBh
bGxvdyBydWJ5IHRleHQgdG8gZXhwYW5kIGlmIGl0IGlzIHNob3J0ZXIgdGhhbiB0aGUgcnVieSBi
YXNlLgotICAgIHJldHVybiBKVVNUSUZZOworICAgIHJldHVybiBUZXh0QWxpZ25Nb2RlOjpKdXN0
aWZ5OwogfQogCiB2b2lkIFJlbmRlclJ1YnlUZXh0OjphZGp1c3RJbmxpbmVEaXJlY3Rpb25MaW5l
Qm91bmRzKGludCBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50LCBmbG9hdCYgbG9naWNhbExlZnQs
IGZsb2F0JiBsb2dpY2FsV2lkdGgpIGNvbnN0CiB7Ci0gICAgRVRleHRBbGlnbiB0ZXh0QWxpZ24g
PSBzdHlsZSgpLnRleHRBbGlnbigpOworICAgIFRleHRBbGlnbk1vZGUgdGV4dEFsaWduID0gc3R5
bGUoKS50ZXh0QWxpZ24oKTsKICAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBpcyBib2d1cyBzaW5j
ZSB1c2VyIGNhbiBzZXQgdGhlIGluaXRpYWwgdmFsdWUuCiAgICAgaWYgKHRleHRBbGlnbiAhPSBS
ZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRBbGlnbigpKQogICAgICAgICByZXR1cm4gUmVuZGVyQmxv
Y2tGbG93OjphZGp1c3RJbmxpbmVEaXJlY3Rpb25MaW5lQm91bmRzKGV4cGFuc2lvbk9wcG9ydHVu
aXR5Q291bnQsIGxvZ2ljYWxMZWZ0LCBsb2dpY2FsV2lkdGgpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmgJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGF2b2lkc0Zsb2F0cygpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgRVRleHRBbGlnbiB0ZXh0QWxpZ25tZW50Rm9yTGluZShib29sIGVuZHNX
aXRoU29mdEJyZWFrKSBjb25zdCBvdmVycmlkZTsKKyAgICBUZXh0QWxpZ25Nb2RlIHRleHRBbGln
bm1lbnRGb3JMaW5lKGJvb2wgZW5kc1dpdGhTb2Z0QnJlYWspIGNvbnN0IG92ZXJyaWRlOwogICAg
IHZvaWQgYWRqdXN0SW5saW5lRGlyZWN0aW9uTGluZUJvdW5kcyhpbnQgZXhwYW5zaW9uT3Bwb3J0
dW5pdHlDb3VudCwgZmxvYXQmIGxvZ2ljYWxMZWZ0LCBmbG9hdCYgbG9naWNhbFdpZHRoKSBjb25z
dCBvdmVycmlkZTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
Y3JvbGxiYXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTY3JvbGxiYXIuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg4LDIyICsxODgs
MjIgQEAgc3RhdGljIFBzZXVkb0lkIHBzZXVkb0ZvclNjcm9sbGJhclBhcnQoUwogICAgICAgICBj
YXNlIEZvcndhcmRCdXR0b25TdGFydFBhcnQ6CiAgICAgICAgIGNhc2UgQmFja0J1dHRvbkVuZFBh
cnQ6CiAgICAgICAgIGNhc2UgRm9yd2FyZEJ1dHRvbkVuZFBhcnQ6Ci0gICAgICAgICAgICByZXR1
cm4gU0NST0xMQkFSX0JVVFRPTjsKKyAgICAgICAgICAgIHJldHVybiBQc2V1ZG9JZDo6U2Nyb2xs
YmFyQnV0dG9uOwogICAgICAgICBjYXNlIEJhY2tUcmFja1BhcnQ6CiAgICAgICAgIGNhc2UgRm9y
d2FyZFRyYWNrUGFydDoKLSAgICAgICAgICAgIHJldHVybiBTQ1JPTExCQVJfVFJBQ0tfUElFQ0U7
CisgICAgICAgICAgICByZXR1cm4gUHNldWRvSWQ6OlNjcm9sbGJhclRyYWNrUGllY2U7CiAgICAg
ICAgIGNhc2UgVGh1bWJQYXJ0OgotICAgICAgICAgICAgcmV0dXJuIFNDUk9MTEJBUl9USFVNQjsK
KyAgICAgICAgICAgIHJldHVybiBQc2V1ZG9JZDo6U2Nyb2xsYmFyVGh1bWI7CiAgICAgICAgIGNh
c2UgVHJhY2tCR1BhcnQ6Ci0gICAgICAgICAgICByZXR1cm4gU0NST0xMQkFSX1RSQUNLOworICAg
ICAgICAgICAgcmV0dXJuIFBzZXVkb0lkOjpTY3JvbGxiYXJUcmFjazsKICAgICAgICAgY2FzZSBT
Y3JvbGxiYXJCR1BhcnQ6Ci0gICAgICAgICAgICByZXR1cm4gU0NST0xMQkFSOworICAgICAgICAg
ICAgcmV0dXJuIFBzZXVkb0lkOjpTY3JvbGxiYXI7CiAgICAgICAgIGNhc2UgTm9QYXJ0OgogICAg
ICAgICBjYXNlIEFsbFBhcnRzOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBTQ1JPTExCQVI7CisgICAgcmV0dXJuIFBzZXVk
b0lkOjpTY3JvbGxiYXI7CiB9CiAKIHZvaWQgUmVuZGVyU2Nyb2xsYmFyOjp1cGRhdGVTY3JvbGxi
YXJQYXJ0KFNjcm9sbGJhclBhcnQgcGFydFR5cGUpCkBAIC0yMTIsOSArMjEyLDkgQEAgdm9pZCBS
ZW5kZXJTY3JvbGxiYXI6OnVwZGF0ZVNjcm9sbGJhclBhcgogICAgICAgICByZXR1cm47CiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHBhcnRTdHlsZSA9IGdldFNjcm9sbGJhclBz
ZXVkb1N0eWxlKHBhcnRUeXBlLCBwc2V1ZG9Gb3JTY3JvbGxiYXJQYXJ0KHBhcnRUeXBlKSk7Ci0g
ICAgYm9vbCBuZWVkUmVuZGVyZXIgPSBwYXJ0U3R5bGUgJiYgcGFydFN0eWxlLT5kaXNwbGF5KCkg
IT0gTk9ORTsKKyAgICBib29sIG5lZWRSZW5kZXJlciA9IHBhcnRTdHlsZSAmJiBwYXJ0U3R5bGUt
PmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Tm9uZTsKIAotICAgIGlmIChuZWVkUmVuZGVyZXIg
JiYgcGFydFN0eWxlLT5kaXNwbGF5KCkgIT0gQkxPQ0spIHsKKyAgICBpZiAobmVlZFJlbmRlcmVy
ICYmIHBhcnRTdHlsZS0+ZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpCbG9jaykgewogICAgICAg
ICAvLyBTZWUgaWYgd2UgYXJlIGEgYnV0dG9uIHRoYXQgc2hvdWxkIG5vdCBiZSB2aXNpYmxlIGFj
Y29yZGluZyB0byBPUyBzZXR0aW5ncy4KICAgICAgICAgU2Nyb2xsYmFyQnV0dG9uc1BsYWNlbWVu
dCBidXR0b25zUGxhY2VtZW50ID0gdGhlbWUoKS5idXR0b25zUGxhY2VtZW50KCk7CiAgICAgICAg
IHN3aXRjaCAocGFydFR5cGUpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTZWFyY2hGaWVsZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNlYXJjaEZpZWxkLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg1
LDcgKzE4NSw3IEBAIHZvaWQgUmVuZGVyU2VhcmNoRmllbGQ6OnVwZGF0ZUNhbmNlbEJ1dHQKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGN1clN0eWxlID0gY2FuY2Vs
QnV0dG9uUmVuZGVyZXItPnN0eWxlKCk7Ci0gICAgRVZpc2liaWxpdHkgYnV0dG9uVmlzaWJpbGl0
eSA9IHZpc2liaWxpdHlGb3JDYW5jZWxCdXR0b24oKTsKKyAgICBWaXNpYmlsaXR5IGJ1dHRvblZp
c2liaWxpdHkgPSB2aXNpYmlsaXR5Rm9yQ2FuY2VsQnV0dG9uKCk7CiAgICAgaWYgKGN1clN0eWxl
LnZpc2liaWxpdHkoKSA9PSBidXR0b25WaXNpYmlsaXR5KQogICAgICAgICByZXR1cm47CiAKQEAg
LTE5NCw5ICsxOTQsOSBAQCB2b2lkIFJlbmRlclNlYXJjaEZpZWxkOjp1cGRhdGVDYW5jZWxCdXR0
CiAgICAgY2FuY2VsQnV0dG9uUmVuZGVyZXItPnNldFN0eWxlKFdURk1vdmUoY2FuY2VsQnV0dG9u
U3R5bGUpKTsKIH0KIAotRVZpc2liaWxpdHkgUmVuZGVyU2VhcmNoRmllbGQ6OnZpc2liaWxpdHlG
b3JDYW5jZWxCdXR0b24oKSBjb25zdAorVmlzaWJpbGl0eSBSZW5kZXJTZWFyY2hGaWVsZDo6dmlz
aWJpbGl0eUZvckNhbmNlbEJ1dHRvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIChzdHlsZSgpLnZp
c2liaWxpdHkoKSA9PSBISURERU4gfHwgaW5wdXRFbGVtZW50KCkudmFsdWUoKS5pc0VtcHR5KCkp
ID8gSElEREVOIDogVklTSUJMRTsKKyAgICByZXR1cm4gKHN0eWxlKCkudmlzaWJpbGl0eSgpID09
IFZpc2liaWxpdHk6OkhpZGRlbiB8fCBpbnB1dEVsZW1lbnQoKS52YWx1ZSgpLmlzRW1wdHkoKSkg
PyBWaXNpYmlsaXR5OjpIaWRkZW4gOiBWaXNpYmlsaXR5OjpWaXNpYmxlOwogfQogCiBjb25zdCBB
dG9taWNTdHJpbmcmIFJlbmRlclNlYXJjaEZpZWxkOjphdXRvc2F2ZU5hbWUoKSBjb25zdApAQCAt
MjcwLDggKzI3MCw4IEBAIFBvcHVwTWVudVN0eWxlIFJlbmRlclNlYXJjaEZpZWxkOjppdGVtU3QK
IAogUG9wdXBNZW51U3R5bGUgUmVuZGVyU2VhcmNoRmllbGQ6Om1lbnVTdHlsZSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIFBvcHVwTWVudVN0eWxlKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9y
V2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZSgpLnZpc2l0ZWREZXBlbmRl
bnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciksIHN0eWxl
KCkuZm9udENhc2NhZGUoKSwgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSwKLSAgICAg
ICAgc3R5bGUoKS5kaXNwbGF5KCkgPT0gTk9ORSwgdHJ1ZSwgc3R5bGUoKS50ZXh0SW5kZW50KCks
IHN0eWxlKCkuZGlyZWN0aW9uKCksIGlzT3ZlcnJpZGUoc3R5bGUoKS51bmljb2RlQmlkaSgpKSwg
UG9wdXBNZW51U3R5bGU6OkN1c3RvbUJhY2tncm91bmRDb2xvcik7CisgICAgcmV0dXJuIFBvcHVw
TWVudVN0eWxlKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENT
U1Byb3BlcnR5Q29sb3IpLCBzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZp
bHRlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciksIHN0eWxlKCkuZm9udENhc2NhZGUoKSwg
c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSwKKyAgICAgICAgc3R5
bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUsIHRydWUsIHN0eWxlKCkudGV4dElu
ZGVudCgpLCBzdHlsZSgpLmRpcmVjdGlvbigpLCBpc092ZXJyaWRlKHN0eWxlKCkudW5pY29kZUJp
ZGkoKSksIFBvcHVwTWVudVN0eWxlOjpDdXN0b21CYWNrZ3JvdW5kQ29sb3IpOwogfQogCiBpbnQg
UmVuZGVyU2VhcmNoRmllbGQ6OmNsaWVudEluc2V0TGVmdCgpIGNvbnN0CkBAIC0zNTksNyArMzU5
LDcgQEAgSG9zdFdpbmRvdyogUmVuZGVyU2VhcmNoRmllbGQ6Omhvc3RXaW5kbwogCiBSZWY8U2Ny
b2xsYmFyPiBSZW5kZXJTZWFyY2hGaWVsZDo6Y3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGFibGVBcmVh
JiBzY3JvbGxhYmxlQXJlYSwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9s
bGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplKQogewotICAgIGJvb2wgaGFzQ3VzdG9tU2Nyb2xs
YmFyU3R5bGUgPSBzdHlsZSgpLmhhc1BzZXVkb1N0eWxlKFNDUk9MTEJBUik7CisgICAgYm9vbCBo
YXNDdXN0b21TY3JvbGxiYXJTdHlsZSA9IHN0eWxlKCkuaGFzUHNldWRvU3R5bGUoUHNldWRvSWQ6
OlNjcm9sbGJhcik7CiAgICAgaWYgKGhhc0N1c3RvbVNjcm9sbGJhclN0eWxlKQogICAgICAgICBy
ZXR1cm4gUmVuZGVyU2Nyb2xsYmFyOjpjcmVhdGVDdXN0b21TY3JvbGxiYXIoc2Nyb2xsYWJsZUFy
ZWEsIG9yaWVudGF0aW9uLCAmaW5wdXRFbGVtZW50KCkpOwogICAgIHJldHVybiBTY3JvbGxiYXI6
OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcihzY3JvbGxhYmxlQXJlYSwgb3JpZW50YXRpb24sIGNvbnRy
b2xTaXplKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVs
ZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hG
aWVsZC5oCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU2VhcmNoRmllbGQuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAgICAgTGF5b3V0VW5pdCBj
b21wdXRlQ29udHJvbExvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsaW5lSGVpZ2h0LCBMYXlvdXRV
bml0IG5vbkNvbnRlbnRIZWlnaHQpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlRnJv
bUVsZW1lbnQoKSBvdmVycmlkZTsKLSAgICBFVmlzaWJpbGl0eSB2aXNpYmlsaXR5Rm9yQ2FuY2Vs
QnV0dG9uKCkgY29uc3Q7CisgICAgVmlzaWJpbGl0eSB2aXNpYmlsaXR5Rm9yQ2FuY2VsQnV0dG9u
KCkgY29uc3Q7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhdXRvc2F2ZU5hbWUoKSBjb25zdDsK
IAogICAgIC8vIFBvcHVwTWVudUNsaWVudCBtZXRob2RzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZS5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw3ICsx
NDEsNyBAQCB2b2lkIFJlbmRlclRhYmxlOjp3aWxsSW5zZXJ0VGFibGVDb2x1bW4oCiB2b2lkIFJl
bmRlclRhYmxlOjp3aWxsSW5zZXJ0VGFibGVTZWN0aW9uKFJlbmRlclRhYmxlU2VjdGlvbiYgY2hp
bGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpCiB7CiAgICAgc3dpdGNoIChjaGlsZC5zdHls
ZSgpLmRpc3BsYXkoKSkgewotICAgIGNhc2UgVEFCTEVfSEVBREVSX0dST1VQOgorICAgIGNhc2Ug
RGlzcGxheVR5cGU6OlRhYmxlSGVhZGVyR3JvdXA6CiAgICAgICAgIHJlc2V0U2VjdGlvblBvaW50
ZXJJZk5vdEJlZm9yZShtX2hlYWQsIGJlZm9yZUNoaWxkKTsKICAgICAgICAgaWYgKCFtX2hlYWQp
CiAgICAgICAgICAgICBtX2hlYWQgPSBtYWtlV2Vha1B0cihjaGlsZCk7CkBAIC0xNTEsMTQgKzE1
MSwxNCBAQCB2b2lkIFJlbmRlclRhYmxlOjp3aWxsSW5zZXJ0VGFibGVTZWN0aW9uCiAgICAgICAg
ICAgICAgICAgbV9maXJzdEJvZHkgPSBtYWtlV2Vha1B0cihjaGlsZCk7CiAgICAgICAgIH0KICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUQUJMRV9GT09URVJfR1JPVVA6CisgICAgY2FzZSBEaXNw
bGF5VHlwZTo6VGFibGVGb290ZXJHcm91cDoKICAgICAgICAgcmVzZXRTZWN0aW9uUG9pbnRlcklm
Tm90QmVmb3JlKG1fZm9vdCwgYmVmb3JlQ2hpbGQpOwogICAgICAgICBpZiAoIW1fZm9vdCkgewog
ICAgICAgICAgICAgbV9mb290ID0gbWFrZVdlYWtQdHIoY2hpbGQpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBUQUJMRV9ST1df
R1JPVVA6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFibGVSb3dHcm91cDoKICAgICAgICAgcmVz
ZXRTZWN0aW9uUG9pbnRlcklmTm90QmVmb3JlKG1fZmlyc3RCb2R5LCBiZWZvcmVDaGlsZCk7CiAg
ICAgICAgIGlmICghbV9maXJzdEJvZHkpCiAgICAgICAgICAgICBtX2ZpcnN0Qm9keSA9IG1ha2VX
ZWFrUHRyKGNoaWxkKTsKQEAgLTM1Niw4ICszNTYsOCBAQCB2b2lkIFJlbmRlclRhYmxlOjpsYXlv
dXRDYXB0aW9ucyhCb3R0b21DCiAgICAgICAgIHJldHVybjsKICAgICAvLyBGSVhNRTogQ29sbGFw
c2UgY2FwdGlvbiBtYXJnaW4uCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fY2FwdGlv
bnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKChib3R0b21DYXB0aW9uTGF5b3V0UGhhc2Ug
PT0gQm90dG9tQ2FwdGlvbkxheW91dFBoYXNlOjpZZXMgJiYgbV9jYXB0aW9uc1tpXS0+c3R5bGUo
KS5jYXB0aW9uU2lkZSgpICE9IENBUEJPVFRPTSkKLSAgICAgICAgICAgIHx8IChib3R0b21DYXB0
aW9uTGF5b3V0UGhhc2UgPT0gQm90dG9tQ2FwdGlvbkxheW91dFBoYXNlOjpObyAmJiBtX2NhcHRp
b25zW2ldLT5zdHlsZSgpLmNhcHRpb25TaWRlKCkgPT0gQ0FQQk9UVE9NKSkKKyAgICAgICAgaWYg
KChib3R0b21DYXB0aW9uTGF5b3V0UGhhc2UgPT0gQm90dG9tQ2FwdGlvbkxheW91dFBoYXNlOjpZ
ZXMgJiYgbV9jYXB0aW9uc1tpXS0+c3R5bGUoKS5jYXB0aW9uU2lkZSgpICE9IENhcHRpb25TaWRl
OjpCb3R0b20pCisgICAgICAgICAgICB8fCAoYm90dG9tQ2FwdGlvbkxheW91dFBoYXNlID09IEJv
dHRvbUNhcHRpb25MYXlvdXRQaGFzZTo6Tm8gJiYgbV9jYXB0aW9uc1tpXS0+c3R5bGUoKS5jYXB0
aW9uU2lkZSgpID09IENhcHRpb25TaWRlOjpCb3R0b20pKQogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIGxheW91dENhcHRpb24oKm1fY2FwdGlvbnNbaV0pOwogICAgIH0KQEAgLTQyNSw3
ICs0MjUsNyBAQCB2b2lkIFJlbmRlclRhYmxlOjpsYXlvdXQoKQogICAgICAgICBMYXlvdXRVbml0
IHRvdGFsU2VjdGlvbkxvZ2ljYWxIZWlnaHQgPSAwOwogICAgICAgICBMYXlvdXRVbml0IG9sZFRh
YmxlTG9naWNhbFRvcCA9IDA7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Nh
cHRpb25zLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAobV9jYXB0aW9uc1tpXS0+c3R5
bGUoKS5jYXB0aW9uU2lkZSgpID09IENBUEJPVFRPTSkKKyAgICAgICAgICAgIGlmIChtX2NhcHRp
b25zW2ldLT5zdHlsZSgpLmNhcHRpb25TaWRlKCkgPT0gQ2FwdGlvblNpZGU6OkJvdHRvbSkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIG9sZFRhYmxlTG9naWNhbFRvcCAr
PSBtX2NhcHRpb25zW2ldLT5sb2dpY2FsSGVpZ2h0KCkgKyBtX2NhcHRpb25zW2ldLT5tYXJnaW5C
ZWZvcmUoKSArIG1fY2FwdGlvbnNbaV0tPm1hcmdpbkFmdGVyKCk7CiAgICAgICAgIH0KQEAgLTY2
OCw3ICs2NjgsNyBAQCB2b2lkIFJlbmRlclRhYmxlOjpwYWludChQYWludEluZm8mIHBhaW50CiB2
b2lkIFJlbmRlclRhYmxlOjpwYWludE9iamVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewogICAgIFBhaW50UGhhc2UgcGFpbnRQaGFzZSA9
IHBhaW50SW5mby5waGFzZTsKLSAgICBpZiAoKHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZUJsb2Nr
QmFja2dyb3VuZCB8fCBwYWludFBoYXNlID09IFBhaW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3Vu
ZCkgJiYgaGFzVmlzaWJsZUJveERlY29yYXRpb25zKCkgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkg
PT0gVklTSUJMRSkKKyAgICBpZiAoKHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZUJsb2NrQmFja2dy
b3VuZCB8fCBwYWludFBoYXNlID09IFBhaW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZCkgJiYg
aGFzVmlzaWJsZUJveERlY29yYXRpb25zKCkgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlz
aWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcGFpbnRCb3hEZWNvcmF0aW9ucyhwYWludEluZm8s
IHBhaW50T2Zmc2V0KTsKIAogICAgIGlmIChwYWludFBoYXNlID09IFBhaW50UGhhc2VNYXNrKSB7
CkBAIC02OTUsNyArNjk1LDcgQEAgdm9pZCBSZW5kZXJUYWJsZTo6cGFpbnRPYmplY3QoUGFpbnRJ
bmZvJgogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGlmIChjb2xsYXBzZUJvcmRlcnMoKSAm
JiBwYWludFBoYXNlID09IFBhaW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZCAmJiBzdHlsZSgp
LnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKSB7CisgICAgaWYgKGNvbGxhcHNlQm9yZGVycygpICYm
IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZUNoaWxkQmxvY2tCYWNrZ3JvdW5kICYmIHN0eWxlKCku
dmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUpIHsKICAgICAgICAgcmVjYWxjQ29s
bGFwc2VkQm9yZGVycygpOwogICAgICAgICAvLyBVc2luZyBvdXIgY2FjaGVkIHNvcnRlZCBzdHls
ZXMsIHdlIHRoZW4gZG8gaW5kaXZpZHVhbCBwYXNzZXMsCiAgICAgICAgIC8vIHBhaW50aW5nIGVh
Y2ggc3R5bGUgb2YgYm9yZGVyIGZyb20gbG93ZXN0IHByZWNlZGVuY2UgdG8gaGlnaGVzdCBwcmVj
ZWRlbmNlLgpAQCAtNzEyLDcgKzcxMiw3IEBAIHZvaWQgUmVuZGVyVGFibGU6OnBhaW50T2JqZWN0
KFBhaW50SW5mbyYKICAgICB9CiAKICAgICAvLyBQYWludCBvdXRsaW5lLgotICAgIGlmICgocGFp
bnRQaGFzZSA9PSBQYWludFBoYXNlT3V0bGluZSB8fCBwYWludFBoYXNlID09IFBhaW50UGhhc2VT
ZWxmT3V0bGluZSkgJiYgaGFzT3V0bGluZSgpICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJ
U0lCTEUpCisgICAgaWYgKChwYWludFBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IHBhaW50
UGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKSAmJiBoYXNPdXRsaW5lKCkgJiYgc3R5bGUo
KS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcGFpbnRPdXRs
aW5lKHBhaW50SW5mbywgTGF5b3V0UmVjdChwYWludE9mZnNldCwgc2l6ZSgpKSk7CiB9CiAKQEAg
LTcyMCw3ICs3MjAsNyBAQCB2b2lkIFJlbmRlclRhYmxlOjphZGp1c3RCb3JkZXJCb3hSZWN0Rm9y
CiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fY2FwdGlvbnMuc2l6ZSgpOyBpKysp
IHsKICAgICAgICAgTGF5b3V0VW5pdCBjYXB0aW9uTG9naWNhbEhlaWdodCA9IG1fY2FwdGlvbnNb
aV0tPmxvZ2ljYWxIZWlnaHQoKSArIG1fY2FwdGlvbnNbaV0tPm1hcmdpbkJlZm9yZSgpICsgbV9j
YXB0aW9uc1tpXS0+bWFyZ2luQWZ0ZXIoKTsKLSAgICAgICAgYm9vbCBjYXB0aW9uSXNCZWZvcmUg
PSAobV9jYXB0aW9uc1tpXS0+c3R5bGUoKS5jYXB0aW9uU2lkZSgpICE9IENBUEJPVFRPTSkgXiBz
dHlsZSgpLmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCk7CisgICAgICAgIGJvb2wgY2FwdGlv
bklzQmVmb3JlID0gKG1fY2FwdGlvbnNbaV0tPnN0eWxlKCkuY2FwdGlvblNpZGUoKSAhPSBDYXB0
aW9uU2lkZTo6Qm90dG9tKSBeIHN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKTsK
ICAgICAgICAgaWYgKHN0eWxlKCkuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkgewogICAgICAg
ICAgICAgcmVjdC5zZXRIZWlnaHQocmVjdC5oZWlnaHQoKSAtIGNhcHRpb25Mb2dpY2FsSGVpZ2h0
KTsKICAgICAgICAgICAgIGlmIChjYXB0aW9uSXNCZWZvcmUpCkBAIC03NTUsNyArNzU1LDcgQEAg
dm9pZCBSZW5kZXJUYWJsZTo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYQogCiB2b2lkIFJlbmRlclRh
YmxlOjpwYWludE1hc2soUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCkKIHsKLSAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8
fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZU1hc2spCisgICAgaWYgKHN0eWxlKCkudmlz
aWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgfHwgcGFpbnRJbmZvLnBoYXNlICE9IFBh
aW50UGhhc2VNYXNrKQogICAgICAgICByZXR1cm47CiAKICAgICBMYXlvdXRSZWN0IHJlY3QocGFp
bnRPZmZzZXQsIHNpemUoKSk7CkBAIC0xMDEzLDExICsxMDEzLDExIEBAIHZvaWQgUmVuZGVyVGFi
bGU6OnJlY2FsY1NlY3Rpb25zKCkgY29uc3QKICAgICBmb3IgKFJlbmRlck9iamVjdCogY2hpbGQg
PSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IG5leHRTaWJsaW5nKSB7CiAgICAgICAgIG5l
eHRTaWJsaW5nID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7CiAgICAgICAgIHN3aXRjaCAoY2hpbGQt
PnN0eWxlKCkuZGlzcGxheSgpKSB7Ci0gICAgICAgIGNhc2UgVEFCTEVfQ09MVU1OOgotICAgICAg
ICBjYXNlIFRBQkxFX0NPTFVNTl9HUk9VUDoKKyAgICAgICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFi
bGVDb2x1bW46CisgICAgICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlQ29sdW1uR3JvdXA6CiAg
ICAgICAgICAgICBtX2hhc0NvbEVsZW1lbnRzID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIFRBQkxFX0hFQURFUl9HUk9VUDoKKyAgICAgICAgY2FzZSBEaXNwbGF5VHlw
ZTo6VGFibGVIZWFkZXJHcm91cDoKICAgICAgICAgICAgIGlmIChpczxSZW5kZXJUYWJsZVNlY3Rp
b24+KCpjaGlsZCkpIHsKICAgICAgICAgICAgICAgICBSZW5kZXJUYWJsZVNlY3Rpb24mIHNlY3Rp
b24gPSBkb3duY2FzdDxSZW5kZXJUYWJsZVNlY3Rpb24+KCpjaGlsZCk7CiAgICAgICAgICAgICAg
ICAgaWYgKCFtX2hlYWQpCkBAIC0xMDI3LDcgKzEwMjcsNyBAQCB2b2lkIFJlbmRlclRhYmxlOjpy
ZWNhbGNTZWN0aW9ucygpIGNvbnN0CiAgICAgICAgICAgICAgICAgc2VjdGlvbi5yZWNhbGNDZWxs
c0lmTmVlZGVkKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBUQUJMRV9GT09URVJfR1JPVVA6CisgICAgICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxl
Rm9vdGVyR3JvdXA6CiAgICAgICAgICAgICBpZiAoaXM8UmVuZGVyVGFibGVTZWN0aW9uPigqY2hp
bGQpKSB7CiAgICAgICAgICAgICAgICAgUmVuZGVyVGFibGVTZWN0aW9uJiBzZWN0aW9uID0gZG93
bmNhc3Q8UmVuZGVyVGFibGVTZWN0aW9uPigqY2hpbGQpOwogICAgICAgICAgICAgICAgIGlmICgh
bV9mb290KQpAQCAtMTAzNyw3ICsxMDM3LDcgQEAgdm9pZCBSZW5kZXJUYWJsZTo6cmVjYWxjU2Vj
dGlvbnMoKSBjb25zdAogICAgICAgICAgICAgICAgIHNlY3Rpb24ucmVjYWxjQ2VsbHNJZk5lZWRl
ZCgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVEFC
TEVfUk9XX0dST1VQOgorICAgICAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZVJvd0dyb3VwOgog
ICAgICAgICAgICAgaWYgKGlzPFJlbmRlclRhYmxlU2VjdGlvbj4oKmNoaWxkKSkgewogICAgICAg
ICAgICAgICAgIFJlbmRlclRhYmxlU2VjdGlvbiYgc2VjdGlvbiA9IGRvd25jYXN0PFJlbmRlclRh
YmxlU2VjdGlvbj4oKmNoaWxkKTsKICAgICAgICAgICAgICAgICBpZiAoIW1fZmlyc3RCb2R5KQpA
QCAtMTUyOCw3ICsxNTI4LDcgQEAgYm9vbCBSZW5kZXJUYWJsZTo6bm9kZUF0UG9pbnQoY29uc3Qg
SGl0VAogCiBSZW5kZXJQdHI8UmVuZGVyVGFibGU+IFJlbmRlclRhYmxlOjpjcmVhdGVUYWJsZVdp
dGhTdHlsZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsK
LSAgICBhdXRvIHRhYmxlID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyVGFibGU+KGRvY3VtZW50LCBS
ZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSwgc3R5bGUu
ZGlzcGxheSgpID09IElOTElORSA/IElOTElORV9UQUJMRSA6IFRBQkxFKSk7CisgICAgYXV0byB0
YWJsZSA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclRhYmxlPihkb2N1bWVudCwgUmVuZGVyU3R5bGU6
OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUsIHN0eWxlLmRpc3BsYXkoKSA9
PSBEaXNwbGF5VHlwZTo6SW5saW5lID8gRGlzcGxheVR5cGU6OklubGluZVRhYmxlIDogRGlzcGxh
eVR5cGU6OlRhYmxlKSk7CiAgICAgdGFibGUtPmluaXRpYWxpemVTdHlsZSgpOwogICAgIHJldHVy
biB0YWJsZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNl
bGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZUNlbGwuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIwLDcgKzQyMCw3IEBAIHN0
YXRpYyBpbmxpbmUgdm9pZCBtYXJrQ2VsbERpcnR5V2hlbkNvbGwKIAogdm9pZCBSZW5kZXJUYWJs
ZUNlbGw6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJT
dHlsZSogb2xkU3R5bGUpCiB7Ci0gICAgQVNTRVJUKHN0eWxlKCkuZGlzcGxheSgpID09IFRBQkxF
X0NFTEwpOworICAgIEFTU0VSVChzdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFi
bGVDZWxsKTsKICAgICBBU1NFUlQoIXJvdygpIHx8IHJvdygpLT5yb3dJbmRleFdhc1NldCgpKTsK
IAogICAgIFJlbmRlckJsb2NrRmxvdzo6c3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xkU3R5bGUpOwpA
QCAtMTE5OCw3ICsxMTk4LDcgQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnBhaW50Q29sbGFwc2Vk
Qm9yZAogewogICAgIEFTU0VSVChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUNvbGxhcHNl
ZFRhYmxlQm9yZGVycyk7CiAKLSAgICBpZiAoIXBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJv
b3QoKnRoaXMpIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKCFw
YWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KCp0aGlzKSB8fCBzdHlsZSgpLnZpc2liaWxp
dHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1cm47CiAKICAgICBMYXlv
dXRSZWN0IGxvY2FsUmVwYWludFJlY3QgPSBwYWludEluZm8ucmVjdDsKQEAgLTEyNzEsMTEgKzEy
NzEsMTEgQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnBhaW50QmFja2dyb3VuZHNCZQogICAgIGlm
ICghYmFja2dyb3VuZE9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHN0eWxlKCku
dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9
IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlbmRlclRhYmxl
KiB0YWJsZUVsdCA9IHRhYmxlKCk7Ci0gICAgaWYgKCF0YWJsZUVsdC0+Y29sbGFwc2VCb3JkZXJz
KCkgJiYgc3R5bGUoKS5lbXB0eUNlbGxzKCkgPT0gSElERSAmJiAhZmlyc3RDaGlsZCgpKQorICAg
IGlmICghdGFibGVFbHQtPmNvbGxhcHNlQm9yZGVycygpICYmIHN0eWxlKCkuZW1wdHlDZWxscygp
ID09IEVtcHR5Q2VsbDo6SGlkZSAmJiAhZmlyc3RDaGlsZCgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBMYXlvdXRQb2ludCBhZGp1c3RlZFBhaW50T2Zmc2V0ID0gcGFpbnRPZmZzZXQ7CkBAIC0x
MzA1LDcgKzEzMDUsNyBAQCB2b2lkIFJlbmRlclRhYmxlQ2VsbDo6cGFpbnRCb3hEZWNvcmF0aW9u
CiAgICAgICAgIHJldHVybjsKIAogICAgIFJlbmRlclRhYmxlKiB0YWJsZSA9IHRoaXMtPnRhYmxl
KCk7Ci0gICAgaWYgKCF0YWJsZS0+Y29sbGFwc2VCb3JkZXJzKCkgJiYgc3R5bGUoKS5lbXB0eUNl
bGxzKCkgPT0gSElERSAmJiAhZmlyc3RDaGlsZCgpKQorICAgIGlmICghdGFibGUtPmNvbGxhcHNl
Qm9yZGVycygpICYmIHN0eWxlKCkuZW1wdHlDZWxscygpID09IEVtcHR5Q2VsbDo6SGlkZSAmJiAh
Zmlyc3RDaGlsZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBMYXlvdXRSZWN0IHBhaW50UmVj
dCA9IExheW91dFJlY3QocGFpbnRPZmZzZXQsIGZyYW1lUmVjdCgpLnNpemUoKSk7CkBAIC0xMzI2
LDExICsxMzI2LDExIEBAIHZvaWQgUmVuZGVyVGFibGVDZWxsOjpwYWludEJveERlY29yYXRpb24K
IAogdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnBhaW50TWFzayhQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewotICAgIGlmIChzdHlsZSgpLnZpc2li
aWxpdHkoKSAhPSBWSVNJQkxFIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlTWFzaykK
KyAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSB8fCBw
YWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZU1hc2spCiAgICAgICAgIHJldHVybjsKIAogICAg
IFJlbmRlclRhYmxlKiB0YWJsZUVsdCA9IHRhYmxlKCk7Ci0gICAgaWYgKCF0YWJsZUVsdC0+Y29s
bGFwc2VCb3JkZXJzKCkgJiYgc3R5bGUoKS5lbXB0eUNlbGxzKCkgPT0gSElERSAmJiAhZmlyc3RD
aGlsZCgpKQorICAgIGlmICghdGFibGVFbHQtPmNvbGxhcHNlQm9yZGVycygpICYmIHN0eWxlKCku
ZW1wdHlDZWxscygpID09IEVtcHR5Q2VsbDo6SGlkZSAmJiAhZmlyc3RDaGlsZCgpKQogICAgICAg
ICByZXR1cm47CiAgICAKICAgICBMYXlvdXRSZWN0IHBhaW50UmVjdCA9IExheW91dFJlY3QocGFp
bnRPZmZzZXQsIGZyYW1lUmVjdCgpLnNpemUoKSk7CkBAIC0xMzcwLDcgKzEzNzAsNyBAQCB2b2lk
IFJlbmRlclRhYmxlQ2VsbDo6c2Nyb2xsYmFyc0NoYW5nZWQoCiAKIFJlbmRlclB0cjxSZW5kZXJU
YWJsZUNlbGw+IFJlbmRlclRhYmxlQ2VsbDo6Y3JlYXRlVGFibGVDZWxsV2l0aFN0eWxlKERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewotICAgIGF1dG8gY2Vs
bCA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclRhYmxlQ2VsbD4oZG9jdW1lbnQsIFJlbmRlclN0eWxl
OjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlLCBUQUJMRV9DRUxMKSk7Cisg
ICAgYXV0byBjZWxsID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyVGFibGVDZWxsPihkb2N1bWVudCwg
UmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUsIERpc3Bs
YXlUeXBlOjpUYWJsZUNlbGwpKTsKICAgICBjZWxsLT5pbml0aWFsaXplU3R5bGUoKTsKICAgICBy
ZXR1cm4gY2VsbDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZUNvbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlQ29sLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlQ29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCB2b2lk
IFJlbmRlclRhYmxlQ29sOjp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgICAgIEhUTUxUYWJsZUNv
bEVsZW1lbnQmIHRjID0gc3RhdGljX2Nhc3Q8SFRNTFRhYmxlQ29sRWxlbWVudCY+KGVsZW1lbnQo
KSk7CiAgICAgICAgIG1fc3BhbiA9IHRjLnNwYW4oKTsKICAgICB9IGVsc2UKLSAgICAgICAgbV9z
cGFuID0gIShoYXNJbml0aWFsaXplZFN0eWxlKCkgJiYgc3R5bGUoKS5kaXNwbGF5KCkgPT0gVEFC
TEVfQ09MVU1OX0dST1VQKTsKKyAgICAgICAgbV9zcGFuID0gIShoYXNJbml0aWFsaXplZFN0eWxl
KCkgJiYgc3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxlQ29sdW1uR3JvdXAp
OwogICAgIGlmIChtX3NwYW4gIT0gb2xkU3BhbiAmJiBoYXNJbml0aWFsaXplZFN0eWxlKCkgJiYg
cGFyZW50KCkpCiAgICAgICAgIHNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwog
fQpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgUmVuZGVyVGFibGVDb2w6OndpbGxCZVJlbW92ZWRG
cm9tVHIKIGJvb2wgUmVuZGVyVGFibGVDb2w6OmlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9i
amVjdCYgY2hpbGQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QKIHsKICAgICAvLyBX
ZSBjYW5ub3QgdXNlIGlzVGFibGVDb2x1bW4gaGVyZSBhcyBzdHlsZSgpIG1heSByZXR1cm4gMC4K
LSAgICByZXR1cm4gc3R5bGUuZGlzcGxheSgpID09IFRBQkxFX0NPTFVNTiAmJiBjaGlsZC5pc1Jl
bmRlclRhYmxlQ29sKCk7CisgICAgcmV0dXJuIHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlw
ZTo6VGFibGVDb2x1bW4gJiYgY2hpbGQuaXNSZW5kZXJUYWJsZUNvbCgpOwogfQogCiBib29sIFJl
bmRlclRhYmxlQ29sOjpjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdApJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmgJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NCw4ICs0NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNwYW4odW5zaWduZWQgc3BhbikgeyBt
X3NwYW4gPSBzcGFuOyB9CiAKICAgICBib29sIGlzVGFibGVDb2x1bW5Hcm91cFdpdGhDb2x1bW5D
aGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIGZpcnN0Q2hpbGQoKTsgfQotICAgIGJvb2wgaXNUYWJs
ZUNvbHVtbigpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCkuZGlzcGxheSgpID09IFRBQkxFX0NPTFVN
TjsgfQotICAgIGJvb2wgaXNUYWJsZUNvbHVtbkdyb3VwKCkgY29uc3QgeyByZXR1cm4gc3R5bGUo
KS5kaXNwbGF5KCkgPT0gVEFCTEVfQ09MVU1OX0dST1VQOyB9CisgICAgYm9vbCBpc1RhYmxlQ29s
dW1uKCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlRh
YmxlQ29sdW1uOyB9CisgICAgYm9vbCBpc1RhYmxlQ29sdW1uR3JvdXAoKSBjb25zdCB7IHJldHVy
biBzdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1bW5Hcm91cDsgfQog
CiAgICAgUmVuZGVyVGFibGVDb2wqIGVuY2xvc2luZ0NvbHVtbkdyb3VwKCkgY29uc3Q7CiAgICAg
UmVuZGVyVGFibGVDb2wqIGVuY2xvc2luZ0NvbHVtbkdyb3VwSWZBZGphY2VudEJlZm9yZSgpIGNv
bnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3Bw
CShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVSb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHN0YXRpYyBib29sIGJv
cmRlcldpZHRoQ2hhbmdlZChjb25zdCBSZW4KIAogdm9pZCBSZW5kZXJUYWJsZVJvdzo6c3R5bGVE
aWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHls
ZSkKIHsKLSAgICBBU1NFUlQoc3R5bGUoKS5kaXNwbGF5KCkgPT0gVEFCTEVfUk9XKTsKKyAgICBB
U1NFUlQoc3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxlUm93KTsKIAogICAg
IFJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xkU3R5bGUpOwogICAgIHByb3BhZ2F0
ZVN0eWxlVG9Bbm9ueW1vdXNDaGlsZHJlbihQcm9wYWdhdGVUb0FsbENoaWxkcmVuKTsKQEAgLTIw
MSw3ICsyMDEsNyBAQCB2b2lkIFJlbmRlclRhYmxlUm93OjpwYWludE91dGxpbmVGb3JSb3dJCiB7
CiAgICAgTGF5b3V0UG9pbnQgYWRqdXN0ZWRQYWludE9mZnNldCA9IHBhaW50T2Zmc2V0ICsgbG9j
YXRpb24oKTsKICAgICBQYWludFBoYXNlIHBhaW50UGhhc2UgPSBwYWludEluZm8ucGhhc2U7Ci0g
ICAgaWYgKChwYWludFBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IHBhaW50UGhhc2UgPT0g
UGFpbnRQaGFzZVNlbGZPdXRsaW5lKSAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxF
KQorICAgIGlmICgocGFpbnRQaGFzZSA9PSBQYWludFBoYXNlT3V0bGluZSB8fCBwYWludFBoYXNl
ID09IFBhaW50UGhhc2VTZWxmT3V0bGluZSkgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlz
aWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcGFpbnRPdXRsaW5lKHBhaW50SW5mbywgTGF5b3V0
UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LCBzaXplKCkpKTsKIH0KIApAQCAtMjI3LDcgKzIyNyw3
IEBAIHZvaWQgUmVuZGVyVGFibGVSb3c6OmltYWdlQ2hhbmdlZChXcmFwcGUKIAogUmVuZGVyUHRy
PFJlbmRlclRhYmxlUm93PiBSZW5kZXJUYWJsZVJvdzo6Y3JlYXRlVGFibGVSb3dXaXRoU3R5bGUo
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgYXV0
byByb3cgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJUYWJsZVJvdz4oZG9jdW1lbnQsIFJlbmRlclN0
eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlLCBUQUJMRV9ST1cpKTsK
KyAgICBhdXRvIHJvdyA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclRhYmxlUm93Pihkb2N1bWVudCwg
UmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUsIERpc3Bs
YXlUeXBlOjpUYWJsZVJvdykpOwogICAgIHJvdy0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAgcmV0
dXJuIHJvdzsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNl
Y3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZVNlY3Rpb24uY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDEwICsx
NjgsMTAgQEAgdm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OmFkZENlbGwoUmVuZGVyVAogCiAgICAg
Ly8gIyMjIG1vemlsbGEgc3RpbGwgc2VlbXMgdG8gZG8gdGhlIG9sZCBIVE1MIHdheSwgZXZlbiBm
b3Igc3RyaWN0IERURAogICAgIC8vIChzZWUgdGhlIGFubm90YXRpb24gb24gdGFibGUgY2VsbCBs
YXlvdXRpbmcgaW4gdGhlIENTUyBzcGVjcyBhbmQgdGhlIHRlc3RjYXNlIGJlbG93OgotICAgIC8v
IDxUQUJMRSBib3JkZXI+CisgICAgLy8gPERpc3BsYXlUeXBlOjpUYWJsZSBib3JkZXI+CiAgICAg
Ly8gPFRSPjxURD4xIDxURCByb3dzcGFuPSIyIj4yIDxURD4zIDxURD40CiAgICAgLy8gPFRSPjxU
RCBjb2xzcGFuPSIyIj41Ci0gICAgLy8gPC9UQUJMRT4KKyAgICAvLyA8L0Rpc3BsYXlUeXBlOjpU
YWJsZT4KICAgICB3aGlsZSAobV9jQ29sIDwgbkNvbHMgJiYgKGNlbGxBdChpbnNlcnRpb25Sb3cs
IG1fY0NvbCkuaGFzQ2VsbHMoKSB8fCBjZWxsQXQoaW5zZXJ0aW9uUm93LCBtX2NDb2wpLmluQ29s
U3BhbikpCiAgICAgICAgIG1fY0NvbCsrOwogCkBAIC05MTYsNyArOTE2LDcgQEAgdm9pZCBSZW5k
ZXJUYWJsZVNlY3Rpb246OnBhaW50KFBhaW50SW5mbwogICAgIGlmIChwdXNoZWRDbGlwKQogICAg
ICAgICBwb3BDb250ZW50c0NsaXAocGFpbnRJbmZvLCBwaGFzZSwgYWRqdXN0ZWRQYWludE9mZnNl
dCk7CiAKLSAgICBpZiAoKHBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IHBoYXNlID09IFBh
aW50UGhhc2VTZWxmT3V0bGluZSkgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkK
KyAgICBpZiAoKHBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IHBoYXNlID09IFBhaW50UGhh
c2VTZWxmT3V0bGluZSkgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6Vmlz
aWJsZSkKICAgICAgICAgcGFpbnRPdXRsaW5lKHBhaW50SW5mbywgTGF5b3V0UmVjdChhZGp1c3Rl
ZFBhaW50T2Zmc2V0LCBzaXplKCkpKTsKIH0KIApAQCAtMTU1MSw3ICsxNTUxLDcgQEAgQ29sbGFw
c2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVTZWN0aW9uOgogCiBSZW5kZXJQdHI8UmVuZGVyVGFi
bGVTZWN0aW9uPiBSZW5kZXJUYWJsZVNlY3Rpb246OmNyZWF0ZVRhYmxlU2VjdGlvbldpdGhTdHls
ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICBh
dXRvIHNlY3Rpb24gPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJUYWJsZVNlY3Rpb24+KGRvY3VtZW50
LCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSwgVEFC
TEVfUk9XX0dST1VQKSk7CisgICAgYXV0byBzZWN0aW9uID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVy
VGFibGVTZWN0aW9uPihkb2N1bWVudCwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxl
V2l0aERpc3BsYXkoc3R5bGUsIERpc3BsYXlUeXBlOjpUYWJsZVJvd0dyb3VwKSk7CiAgICAgc2Vj
dGlvbi0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAgcmV0dXJuIHNlY3Rpb247CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3MSw3ICsyNzEsNyBAQCB2b2lkIFJlbmRlclRleHQ6OnN0eWxlRGlkQ2hhbmdlKFN0eWxl
RGlmCiAgICAgaWYgKCFvbGRTdHlsZSB8fCBvbGRTdHlsZS0+Zm9udENhc2NhZGUoKSAhPSBuZXdT
dHlsZS5mb250Q2FzY2FkZSgpKQogICAgICAgICBtX2NhblVzZVNpbXBsaWZpZWRUZXh0TWVhc3Vy
aW5nID0gY29tcHV0ZUNhblVzZVNpbXBsaWZpZWRUZXh0TWVhc3VyaW5nKCk7CiAKLSAgICBFVGV4
dFRyYW5zZm9ybSBvbGRUcmFuc2Zvcm0gPSBvbGRTdHlsZSA/IG9sZFN0eWxlLT50ZXh0VHJhbnNm
b3JtKCkgOiBUVE5PTkU7CisgICAgVGV4dFRyYW5zZm9ybSBvbGRUcmFuc2Zvcm0gPSBvbGRTdHls
ZSA/IG9sZFN0eWxlLT50ZXh0VHJhbnNmb3JtKCkgOiBUZXh0VHJhbnNmb3JtOjpOb25lOwogICAg
IFRleHRTZWN1cml0eSBvbGRTZWN1cml0eSA9IG9sZFN0eWxlID8gb2xkU3R5bGUtPnRleHRTZWN1
cml0eSgpIDogVGV4dFNlY3VyaXR5OjpOb25lOwogICAgIGlmIChuZWVkc1Jlc2V0VGV4dCB8fCBv
bGRUcmFuc2Zvcm0gIT0gbmV3U3R5bGUudGV4dFRyYW5zZm9ybSgpIHx8IG9sZFNlY3VyaXR5ICE9
IG5ld1N0eWxlLnRleHRTZWN1cml0eSgpKQogICAgICAgICBSZW5kZXJUZXh0OjpzZXRUZXh0KG9y
aWdpbmFsVGV4dCgpLCB0cnVlKTsKQEAgLTgwOCw3ICs4MDgsNyBAQCB2b2lkIFJlbmRlclRleHQ6
OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsCiAgICAgZmxvYXQgbWF4V29yZFdpZHRoID0gc3RkOjpu
dW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpOwogICAgIHVuc2lnbmVkIG1pbmltdW1QcmVmaXhM
ZW5ndGggPSAwOwogICAgIHVuc2lnbmVkIG1pbmltdW1TdWZmaXhMZW5ndGggPSAwOwotICAgIGlm
IChzdHlsZS5oeXBoZW5zKCkgPT0gSHlwaGVuc0F1dG8gJiYgY2FuSHlwaGVuYXRlKHN0eWxlLmxv
Y2FsZSgpKSkgeworICAgIGlmIChzdHlsZS5oeXBoZW5zKCkgPT0gSHlwaGVuczo6QXV0byAmJiBj
YW5IeXBoZW5hdGUoc3R5bGUubG9jYWxlKCkpKSB7CiAgICAgICAgIG1heFdvcmRXaWR0aCA9IDA7
CiAKICAgICAgICAgLy8gTWFwICdoeXBoZW5hdGUtbGltaXQte2JlZm9yZSxhZnRlcn06IGF1dG87
JyB0byAyLgpAQCAtODY1LDcgKzg2NSw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZl
cnJlZExvZ2ljYWwKICAgICAgICAgICAgIEFTU0VSVChsYXN0V29yZEJvdW5kYXJ5ID09IGkpOwog
ICAgICAgICAgICAgbGFzdFdvcmRCb3VuZGFyeSsrOwogICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIH0gZWxzZSBpZiAoYyA9PSBzb2Z0SHlwaGVuICYmIHN0eWxlLmh5cGhlbnMoKSAhPSBI
eXBoZW5zTm9uZSkgeworICAgICAgICB9IGVsc2UgaWYgKGMgPT0gc29mdEh5cGhlbiAmJiBzdHls
ZS5oeXBoZW5zKCkgIT0gSHlwaGVuczo6Tm9uZSkgewogICAgICAgICAgICAgQVNTRVJUKGkgPj0g
bGFzdFdvcmRCb3VuZGFyeSk7CiAgICAgICAgICAgICBjdXJyTWF4V2lkdGggKz0gd2lkdGhGcm9t
Q2FjaGUoZm9udCwgbGFzdFdvcmRCb3VuZGFyeSwgaSAtIGxhc3RXb3JkQm91bmRhcnksIGxlYWRX
aWR0aCArIGN1cnJNYXhXaWR0aCwgJmZhbGxiYWNrRm9udHMsICZnbHlwaE92ZXJmbG93LCBzdHls
ZSk7CiAgICAgICAgICAgICBpZiAoIWZpcnN0R2x5cGhMZWZ0T3ZlcmZsb3cpCkBAIC04NzcsNyAr
ODc3LDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbAogICAgICAg
ICBib29sIGhhc0JyZWFrID0gYnJlYWtBbGwgfHwgaXNCcmVha2FibGUoYnJlYWtJdGVyYXRvciwg
aSwgbmV4dEJyZWFrYWJsZSwgYnJlYWtOQlNQLCBjYW5Vc2VMaW5lQnJlYWtTaG9ydGN1dCwga2Vl
cEFsbFdvcmRzKTsKICAgICAgICAgYm9vbCBiZXR3ZWVuV29yZHMgPSB0cnVlOwogICAgICAgICB1
bnNpZ25lZCBqID0gaTsKLSAgICAgICAgd2hpbGUgKGMgIT0gJ1xuJyAmJiAhaXNTcGFjZUFjY29y
ZGluZ1RvU3R5bGUoYywgc3R5bGUpICYmIGMgIT0gJ1x0JyAmJiAoYyAhPSBzb2Z0SHlwaGVuIHx8
IHN0eWxlLmh5cGhlbnMoKSA9PSBIeXBoZW5zTm9uZSkpIHsKKyAgICAgICAgd2hpbGUgKGMgIT0g
J1xuJyAmJiAhaXNTcGFjZUFjY29yZGluZ1RvU3R5bGUoYywgc3R5bGUpICYmIGMgIT0gJ1x0JyAm
JiAoYyAhPSBzb2Z0SHlwaGVuIHx8IHN0eWxlLmh5cGhlbnMoKSA9PSBIeXBoZW5zOjpOb25lKSkg
ewogICAgICAgICAgICAgaisrOwogICAgICAgICAgICAgaWYgKGogPT0gbGVuZ3RoKQogICAgICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtOTAyLDcgKzkwMiw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29t
cHV0ZVByZWZlcnJlZExvZ2ljYWwKICAgICAgICAgICAgICAgICB3ID0gd2lkdGhGcm9tQ2FjaGUo
Zm9udCwgaSwgd29yZExlbiArIDEsIGxlYWRXaWR0aCArIGN1cnJNYXhXaWR0aCwgJmZhbGxiYWNr
Rm9udHMsICZnbHlwaE92ZXJmbG93LCBzdHlsZSkgLSB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoLnZh
bHVlKCk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICB3ID0gd2lkdGhGcm9t
Q2FjaGUoZm9udCwgaSwgd29yZExlbiwgbGVhZFdpZHRoICsgY3Vyck1heFdpZHRoLCAmZmFsbGJh
Y2tGb250cywgJmdseXBoT3ZlcmZsb3csIHN0eWxlKTsKLSAgICAgICAgICAgICAgICBpZiAoYyA9
PSBzb2Z0SHlwaGVuICYmIHN0eWxlLmh5cGhlbnMoKSAhPSBIeXBoZW5zTm9uZSkKKyAgICAgICAg
ICAgICAgICBpZiAoYyA9PSBzb2Z0SHlwaGVuICYmIHN0eWxlLmh5cGhlbnMoKSAhPSBIeXBoZW5z
OjpOb25lKQogICAgICAgICAgICAgICAgICAgICBjdXJyTWluV2lkdGggPSBoeXBoZW5XaWR0aCgq
dGhpcywgZm9udCk7CiAgICAgICAgICAgICB9CiAKQEAgLTEwMDUsNyArMTAwNSw3IEBAIHZvaWQg
UmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWwKICAgICBpZiAoIXN0eWxlLmF1dG9X
cmFwKCkpCiAgICAgICAgIG1fbWluV2lkdGggPSBtX21heFdpZHRoOwogCi0gICAgaWYgKHN0eWxl
LndoaXRlU3BhY2UoKSA9PSBQUkUpIHsKKyAgICBpZiAoc3R5bGUud2hpdGVTcGFjZSgpID09IFdo
aXRlU3BhY2U6OlByZSkgewogICAgICAgICBpZiAoZmlyc3RMaW5lKQogICAgICAgICAgICAgbV9i
ZWdpbk1pbldpZHRoID0gbV9tYXhXaWR0aDsKICAgICAgICAgbV9lbmRNaW5XaWR0aCA9IGN1cnJN
YXhXaWR0aDsKQEAgLTExMzcsMTMgKzExMzcsMTMgQEAgTGF5b3V0VW5pdCBSZW5kZXJUZXh0Ojp0
b3BPZkZpcnN0VGV4dCgpIAogU3RyaW5nIGFwcGx5VGV4dFRyYW5zZm9ybShjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgVUNoYXIgcHJldmlvdXNDaGFyYWN0ZXIp
CiB7CiAgICAgc3dpdGNoIChzdHlsZS50ZXh0VHJhbnNmb3JtKCkpIHsKLSAgICBjYXNlIFRUTk9O
RToKKyAgICBjYXNlIFRleHRUcmFuc2Zvcm06Ok5vbmU6CiAgICAgICAgIHJldHVybiB0ZXh0Owot
ICAgIGNhc2UgQ0FQSVRBTElaRToKKyAgICBjYXNlIFRleHRUcmFuc2Zvcm06OkNhcGl0YWxpemU6
CiAgICAgICAgIHJldHVybiBjYXBpdGFsaXplKHRleHQsIHByZXZpb3VzQ2hhcmFjdGVyKTsgLy8g
RklYTUU6IE5lZWQgdG8gdGFrZSBsb2NhbGUgaW50byBhY2NvdW50LgotICAgIGNhc2UgVVBQRVJD
QVNFOgorICAgIGNhc2UgVGV4dFRyYW5zZm9ybTo6VXBwZXJjYXNlOgogICAgICAgICByZXR1cm4g
dGV4dC5jb252ZXJ0VG9VcHBlcmNhc2VXaXRoTG9jYWxlKHN0eWxlLmxvY2FsZSgpKTsKLSAgICBj
YXNlIExPV0VSQ0FTRToKKyAgICBjYXNlIFRleHRUcmFuc2Zvcm06Okxvd2VyY2FzZToKICAgICAg
ICAgcmV0dXJuIHRleHQuY29udmVydFRvTG93ZXJjYXNlV2l0aExvY2FsZShzdHlsZS5sb2NhbGUo
KSk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHAJKHJldmlzaW9uIDIzMjEy
MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgUmVuZGVyVGV4dEZyYWdtZW50Ojpz
dHlsZURpZENoYW5nZSgKICAgICBSZW5kZXJUZXh0OjpzdHlsZURpZENoYW5nZShkaWZmLCBvbGRT
dHlsZSk7CiAKICAgICBpZiAoUmVuZGVyQmxvY2sqIGJsb2NrID0gYmxvY2tGb3JBY2NvbXBhbnlp
bmdGaXJzdExldHRlcigpKQotICAgICAgICBibG9jay0+bXV0YWJsZVN0eWxlKCkucmVtb3ZlQ2Fj
aGVkUHNldWRvU3R5bGUoRklSU1RfTEVUVEVSKTsKKyAgICAgICAgYmxvY2stPm11dGFibGVTdHls
ZSgpLnJlbW92ZUNhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb0lkOjpGaXJzdExldHRlcik7CiB9CiAK
IHZvaWQgUmVuZGVyVGV4dEZyYWdtZW50OjpzZXRUZXh0KGNvbnN0IFN0cmluZyYgbmV3VGV4dCwg
Ym9vbCBmb3JjZSkKQEAgLTExMCw3ICsxMTAsNyBAQCBSZW5kZXJCbG9jayogUmVuZGVyVGV4dEZy
YWdtZW50OjpibG9ja0ZvCiAgICAgZm9yIChhdXRvJiBibG9jayA6IGFuY2VzdG9yc09mVHlwZTxS
ZW5kZXJCbG9jaz4oKm1fZmlyc3RMZXR0ZXIpKSB7CiAgICAgICAgIGlmIChpczxSZW5kZXJNdWx0
aUNvbHVtbkZsb3c+KGJsb2NrKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAoYmxv
Y2suc3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShGSVJTVF9MRVRURVIpICYmIGJsb2NrLmNhbkhhdmVD
aGlsZHJlbigpKQorICAgICAgICBpZiAoYmxvY2suc3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShQc2V1
ZG9JZDo6Rmlyc3RMZXR0ZXIpICYmIGJsb2NrLmNhbkhhdmVDaGlsZHJlbigpKQogICAgICAgICAg
ICAgcmV0dXJuICZibG9jazsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTc5LDEzICs3OSwxMyBAQCB2b2lkIFJlbmRlclRoZW1lOjphZGp1c3RTdHlsZShTdHlsZVJl
c29sCiB7CiAgICAgLy8gRm9yY2UgaW5saW5lIGFuZCB0YWJsZSBkaXNwbGF5IHN0eWxlcyB0byBi
ZSBpbmxpbmUtYmxvY2sgKGV4Y2VwdCBmb3IgdGFibGUtIHdoaWNoIGlzIGJsb2NrKQogICAgIENv
bnRyb2xQYXJ0IHBhcnQgPSBzdHlsZS5hcHBlYXJhbmNlKCk7Ci0gICAgaWYgKHN0eWxlLmRpc3Bs
YXkoKSA9PSBJTkxJTkUgfHwgc3R5bGUuZGlzcGxheSgpID09IElOTElORV9UQUJMRSB8fCBzdHls
ZS5kaXNwbGF5KCkgPT0gVEFCTEVfUk9XX0dST1VQCi0gICAgICAgIHx8IHN0eWxlLmRpc3BsYXko
KSA9PSBUQUJMRV9IRUFERVJfR1JPVVAgfHwgc3R5bGUuZGlzcGxheSgpID09IFRBQkxFX0ZPT1RF
Ul9HUk9VUAotICAgICAgICB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gVEFCTEVfUk9XIHx8IHN0eWxl
LmRpc3BsYXkoKSA9PSBUQUJMRV9DT0xVTU5fR1JPVVAgfHwgc3R5bGUuZGlzcGxheSgpID09IFRB
QkxFX0NPTFVNTgotICAgICAgICB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gVEFCTEVfQ0VMTCB8fCBz
dHlsZS5kaXNwbGF5KCkgPT0gVEFCTEVfQ0FQVElPTikKLSAgICAgICAgc3R5bGUuc2V0RGlzcGxh
eShJTkxJTkVfQkxPQ0spOwotICAgIGVsc2UgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBDT01QQUNU
IHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBMSVNUX0lURU0gfHwgc3R5bGUuZGlzcGxheSgpID09IFRB
QkxFKQotICAgICAgICBzdHlsZS5zZXREaXNwbGF5KEJMT0NLKTsKKyAgICBpZiAoc3R5bGUuZGlz
cGxheSgpID09IERpc3BsYXlUeXBlOjpJbmxpbmUgfHwgc3R5bGUuZGlzcGxheSgpID09IERpc3Bs
YXlUeXBlOjpJbmxpbmVUYWJsZSB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlRh
YmxlUm93R3JvdXAKKyAgICAgICAgfHwgc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpU
YWJsZUhlYWRlckdyb3VwIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGVG
b290ZXJHcm91cAorICAgICAgICB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlRh
YmxlUm93IHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1bW5Hcm91
cCB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxlQ29sdW1uCisgICAgICAg
IHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDZWxsIHx8IHN0eWxlLmRp
c3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDYXB0aW9uKQorICAgICAgICBzdHlsZS5zZXRE
aXNwbGF5KERpc3BsYXlUeXBlOjpJbmxpbmVCbG9jayk7CisgICAgZWxzZSBpZiAoc3R5bGUuZGlz
cGxheSgpID09IERpc3BsYXlUeXBlOjpDb21wYWN0IHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNw
bGF5VHlwZTo6TGlzdEl0ZW0gfHwgc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpUYWJs
ZSkKKyAgICAgICAgc3R5bGUuc2V0RGlzcGxheShEaXNwbGF5VHlwZTo6QmxvY2spOwogCiAgICAg
aWYgKFVBSGFzQXBwZWFyYW5jZSAmJiBpc0NvbnRyb2xTdHlsZWQoc3R5bGUsIGJvcmRlciwgYmFj
a2dyb3VuZCwgYmFja2dyb3VuZENvbG9yKSkgewogICAgICAgICBzd2l0Y2ggKHBhcnQpIHsKQEAg
LTE1NCw3ICsxNTQsNyBAQCB2b2lkIFJlbmRlclRoZW1lOjphZGp1c3RTdHlsZShTdHlsZVJlc29s
CiAKICAgICAgICAgLy8gV2hpdGVzcGFjZQogICAgICAgICBpZiAoVGhlbWU6OnNpbmdsZXRvbigp
LmNvbnRyb2xSZXF1aXJlc1ByZVdoaXRlU3BhY2UocGFydCkpCi0gICAgICAgICAgICBzdHlsZS5z
ZXRXaGl0ZVNwYWNlKFBSRSk7CisgICAgICAgICAgICBzdHlsZS5zZXRXaGl0ZVNwYWNlKFdoaXRl
U3BhY2U6OlByZSk7CiAKICAgICAgICAgLy8gV2lkdGggLyBIZWlnaHQKICAgICAgICAgLy8gVGhl
IHdpZHRoIGFuZCBoZWlnaHQgaGVyZSBhcmUgYWZmZWN0ZWQgYnkgdGhlIHpvb20uCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCShyZXZpc2lvbiAyMzIx
MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTEzMjQsNyArMTMyNCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OmFkanVz
dE1lbnVMaXN0U3R5bGUKICAgICBzdHlsZS5zZXRIZWlnaHQoTGVuZ3RoKEF1dG8pKTsKIAogICAg
IC8vIFdoaXRlLXNwYWNlIGlzIGxvY2tlZCB0byBwcmUKLSAgICBzdHlsZS5zZXRXaGl0ZVNwYWNl
KFBSRSk7CisgICAgc3R5bGUuc2V0V2hpdGVTcGFjZShXaGl0ZVNwYWNlOjpQcmUpOwogCiAgICAg
Ly8gU2V0IHRoZSBmb3JlZ3JvdW5kIGNvbG9yIHRvIGJsYWNrIG9yIGdyYXkgd2hlbiB3ZSBoYXZl
IHRoZSBhcXVhIGxvb2suCiAgICAgQ29sb3IgYyA9IENvbG9yOjpkYXJrR3JheTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAkocmV2aXNpb24gMjMy
MTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzgyLDcgKzc4Miw3IEBAIHZvaWQgUmVuZGVyVGhlbWVXaW46OmFkanVz
dE1lbnVMaXN0QnV0dG8KICAgICBzdHlsZS5zZXRMaW5lSGVpZ2h0KFJlbmRlclN0eWxlOjppbml0
aWFsTGluZUhlaWdodCgpKTsKICAgICAKICAgICAvLyBXaGl0ZS1zcGFjZSBpcyBsb2NrZWQgdG8g
cHJlCi0gICAgc3R5bGUuc2V0V2hpdGVTcGFjZShQUkUpOworICAgIHN0eWxlLnNldFdoaXRlU3Bh
Y2UoV2hpdGVTcGFjZTo6UHJlKTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZW51
TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJveCYgcmVuZGVyZXIsIGNvbnN0IFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5
NCw3ICszOTQsNyBAQCBSZW5kZXJFbGVtZW50KiBSZW5kZXJWaWV3OjpyZW5kZXJlckZvclJvCiBz
dGF0aWMgaW5saW5lIGJvb2wgcmVuZGVyZXJPYnNjdXJlc0JhY2tncm91bmQoY29uc3QgUmVuZGVy
RWxlbWVudCYgcm9vdEVsZW1lbnQpCiB7CiAgICAgYXV0byYgc3R5bGUgPSByb290RWxlbWVudC5z
dHlsZSgpOwotICAgIGlmIChzdHlsZS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBzdHlsZS5v
cGFjaXR5KCkgIT0gMSB8fCBzdHlsZS5oYXNUcmFuc2Zvcm0oKSkKKyAgICBpZiAoc3R5bGUudmlz
aWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgfHwgc3R5bGUub3BhY2l0eSgpICE9IDEg
fHwgc3R5bGUuaGFzVHJhbnNmb3JtKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlm
IChzdHlsZS5oYXNCb3JkZXJSYWRpdXMoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJXaWRnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJXaWRnZXQuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg3LDcgKzE4Nyw3
IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpzZXRXaWRnZXQoUmVmUHRyPFdpZGcKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoc3R5bGUo
KS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICAgICAgICAgIGlmIChzdHlsZSgpLnZpc2li
aWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICAgICAgICAgIG1fd2lkZ2V0
LT5oaWRlKCk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBtX3dpZGdldC0+
c2hvdygpOwpAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpzdHlsZURpZENo
YW5nZShTdHlsZUQKIHsKICAgICBSZW5kZXJSZXBsYWNlZDo6c3R5bGVEaWRDaGFuZ2UoZGlmZiwg
b2xkU3R5bGUpOwogICAgIGlmIChtX3dpZGdldCkgewotICAgICAgICBpZiAoc3R5bGUoKS52aXNp
YmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICAgICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9
IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgICAgICBtX3dpZGdldC0+aGlkZSgpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBtX3dpZGdldC0+c2hvdygpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjAsNyArMTYwLDcgQEAgZmxvYXQgUm9vdElubGluZUJveDo6cGxhY2VFbGxpcHNpc0Jv
eChibwogCiB2b2lkIFJvb3RJbmxpbmVCb3g6OnBhaW50RWxsaXBzaXNCb3goUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgTGF5b3V0VW5pdCBsaW5l
VG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pIGNvbnN0CiB7Ci0gICAgaWYgKGhhc0VsbGlwc2lz
Qm94KCkgJiYgcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdChyZW5kZXJlcigpKSAmJiBy
ZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUKKyAgICBpZiAoaGFzRWxs
aXBzaXNCb3goKSAmJiBwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KHJlbmRlcmVyKCkp
ICYmIHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJs
ZQogICAgICAgICAgICAgJiYgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5k
KQogICAgICAgICBlbGxpcHNpc0JveCgpLT5wYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0LCBs
aW5lVG9wLCBsaW5lQm90dG9tKTsKIH0KQEAgLTMzNSw3ICszMzUsNyBAQCBMYXlvdXRVbml0IFJv
b3RJbmxpbmVCb3g6OmxpbmVTbmFwQWRqdXN0CiB7CiAgICAgLy8gSWYgb3VyIGJsb2NrIGRvZXNu
J3QgaGF2ZSBzbmFwcGluZyB0dXJuZWQgb24sIGRvIG5vdGhpbmcuCiAgICAgLy8gRklYTUU6IElt
cGxlbWVudCBib3VuZHMgc25hcHBpbmcuCi0gICAgaWYgKGJsb2NrRmxvdygpLnN0eWxlKCkubGlu
ZVNuYXAoKSA9PSBMaW5lU25hcE5vbmUpCisgICAgaWYgKGJsb2NrRmxvdygpLnN0eWxlKCkubGlu
ZVNuYXAoKSA9PSBMaW5lU25hcDo6Tm9uZSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyBH
ZXQgdGhlIGN1cnJlbnQgbGluZSBncmlkIGFuZCBvZmZzZXQuCkBAIC0zODIsNyArMzgyLDcgQEAg
TGF5b3V0VW5pdCBSb290SW5saW5lQm94OjpsaW5lU25hcEFkanVzdAogICAgICAgICAgICAgZmly
c3RUZXh0VG9wID0gcGFnZUxvZ2ljYWxUb3AgKyBsaW5lR3JpZEJveC0+bG9naWNhbFRvcCgpIC0g
bGluZUdyaWQtPmJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSArIGxpbmVHcmlkUGFnaW5hdGlvbk9y
aWdpbjsKICAgICB9CiAKLSAgICBpZiAoYmxvY2tGbG93KCkuc3R5bGUoKS5saW5lU25hcCgpID09
IExpbmVTbmFwQ29udGFpbikgeworICAgIGlmIChibG9ja0Zsb3coKS5zdHlsZSgpLmxpbmVTbmFw
KCkgPT0gTGluZVNuYXA6OkNvbnRhaW4pIHsKICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgZGVzaXJl
ZCBvZmZzZXQgZnJvbSB0aGUgdGV4dC10b3Agb2YgYSBncmlkIGxpbmUuCiAgICAgICAgIC8vIExv
b2sgYXQgb3VyIGhlaWdodCAobG9naWNhbEhlaWdodCgpKS4KICAgICAgICAgLy8gTG9vayBhdCB0
aGUgdG90YWwgYXZhaWxhYmxlIGhlaWdodC4gSXQncyBnb2luZyB0byBiZSAodGV4dEJvdHRvbSAt
IHRleHRUb3ApICsgKG4tMSkqKG11bHRpcGxlIHdpdGggbGVhZGluZykKQEAgLTQ2MCw3ICs0NjAs
NyBAQCBHYXBSZWN0cyBSb290SW5saW5lQm94OjpsaW5lU2VsZWN0aW9uR2FwCiAgICAgICAgICAg
ICAgICAgbG9naWNhbFJlY3QubW92ZShyZW5kZXJlcigpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkgPyBvZmZzZXRGcm9tUm9vdEJsb2NrIDogTGF5b3V0U2l6ZShvZmZzZXRGcm9tUm9vdEJsb2Nr
LmhlaWdodCgpLCBvZmZzZXRGcm9tUm9vdEJsb2NrLndpZHRoKCkpKTsKICAgICAgICAgICAgICAg
ICBMYXlvdXRSZWN0IGdhcFJlY3QgPSByb290QmxvY2subG9naWNhbFJlY3RUb1BoeXNpY2FsUmVj
dChyb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBsb2dpY2FsUmVjdCk7CiAgICAgICAgICAgICAg
ICAgaWYgKGlzUHJldmlvdXNCb3hTZWxlY3RlZCAmJiBnYXBSZWN0LndpZHRoKCkgPiAwICYmIGdh
cFJlY3QuaGVpZ2h0KCkgPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwYWludEluZm8g
JiYgYm94LT5wYXJlbnQoKS0+cmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJ
QkxFKQorICAgICAgICAgICAgICAgICAgICBpZiAocGFpbnRJbmZvICYmIGJveC0+cGFyZW50KCkt
PnJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhaW50SW5mby0+Y29udGV4dCgpLmZpbGxSZWN0KGdh
cFJlY3QsIGJveC0+cGFyZW50KCktPnJlbmRlcmVyKCkuc2VsZWN0aW9uQmFja2dyb3VuZENvbG9y
KCkpOwogICAgICAgICAgICAgICAgICAgICAvLyBWaXNpYmxlU2VsZWN0aW9uIG1heSBiZSBub24t
Y29udGlndW91cywgc2VlIGNvbW1lbnQgYWJvdmUuCiAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dC51bml0ZUNlbnRlcihnYXBSZWN0KTsKQEAgLTQ5OCwyMCArNDk4LDIwIEBAIEludFJlY3QgUm9v
dElubGluZUJveDo6Y29tcHV0ZUNhcmV0UmVjdCgKIAogICAgIGJvb2wgcmlnaHRBbGlnbmVkID0g
ZmFsc2U7CiAgICAgc3dpdGNoIChibG9ja1N0eWxlLnRleHRBbGlnbigpKSB7Ci0gICAgY2FzZSBS
SUdIVDoKLSAgICBjYXNlIFdFQktJVF9SSUdIVDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlJp
Z2h0OgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQ6CiAgICAgICAgIHJpZ2h0
QWxpZ25lZCA9IHRydWU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTEVGVDoKLSAgICBjYXNl
IFdFQktJVF9MRUZUOgotICAgIGNhc2UgQ0VOVEVSOgotICAgIGNhc2UgV0VCS0lUX0NFTlRFUjoK
KyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpX
ZWJLaXRMZWZ0OgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6Q2VudGVyOgorICAgIGNhc2UgVGV4
dEFsaWduTW9kZTo6V2ViS2l0Q2VudGVyOgogICAgICAgICBicmVhazsKLSAgICBjYXNlIEpVU1RJ
Rlk6Ci0gICAgY2FzZSBUQVNUQVJUOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToK
KyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlN0YXJ0OgogICAgICAgICByaWdodEFsaWduZWQgPSAh
YmxvY2tTdHlsZS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgVEFFTkQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpFbmQ6CiAgICAgICAgIHJpZ2h0
QWxpZ25lZCA9IGJsb2NrU3R5bGUuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpOwogICAgICAgICBi
cmVhazsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxh
eW91dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxp
bmVMYXlvdXQuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvU2ltcGxlTGluZUxheW91dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw3ICsxNjMsNyBA
QCBzdGF0aWMgQXZvaWRhbmNlUmVhc29uRmxhZ3MgY2FuVXNlRm9yRm9uCiAgICAgc3RkOjpvcHRp
b25hbDxmbG9hdD4gbGluZUhlaWdodENvbnN0cmFpbnQ7CiAgICAgaWYgKHN0eWxlLmxpbmVCb3hD
b250YWluKCkgJiBMaW5lQm94Q29udGFpbkdseXBocykKICAgICAgICAgbGluZUhlaWdodENvbnN0
cmFpbnQgPSBsaW5lSGVpZ2h0RnJvbUZsb3coZmxvdykudG9GbG9hdCgpOwotICAgIGJvb2wgZmxv
d0lzSnVzdGlmaWVkID0gc3R5bGUudGV4dEFsaWduKCkgPT0gSlVTVElGWTsKKyAgICBib29sIGZs
b3dJc0p1c3RpZmllZCA9IHN0eWxlLnRleHRBbGlnbigpID09IFRleHRBbGlnbk1vZGU6Okp1c3Rp
Znk7CiAgICAgZm9yIChjb25zdCBhdXRvJiB0ZXh0UmVuZGVyZXIgOiBjaGlsZHJlbk9mVHlwZTxS
ZW5kZXJUZXh0PihmbG93KSkgewogICAgICAgICAvLyBGSVhNRTogRG8gbm90IHJldHVybiB1bnRp
bCBhZnRlciBjaGVja2luZyBhbGwgY2hpbGRyZW4uCiAgICAgICAgIGlmICh0ZXh0UmVuZGVyZXIu
dGV4dCgpLmlzRW1wdHkoKSkKQEAgLTIxNSwyNSArMjE1LDI1IEBAIHN0YXRpYyBBdm9pZGFuY2VS
ZWFzb25GbGFncyBjYW5Vc2VGb3JTdHkKICAgICAgICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lG
X05FRURFRChGbG93SGFzTGluZUJyZWFrLCByZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7CiAgICAg
aWYgKHN0eWxlLnVuaWNvZGVCaWRpKCkgIT0gVUJOb3JtYWwpCiAgICAgICAgIFNFVF9SRUFTT05f
QU5EX1JFVFVSTl9JRl9ORUVERUQoRmxvd0hhc05vbk5vcm1hbFVuaWNvZGVCaURpLCByZWFzb25z
LCBpbmNsdWRlUmVhc29ucyk7Ci0gICAgaWYgKHN0eWxlLnJ0bE9yZGVyaW5nKCkgIT0gTG9naWNh
bE9yZGVyKQorICAgIGlmIChzdHlsZS5ydGxPcmRlcmluZygpICE9IE9yZGVyOjpMb2dpY2FsKQog
ICAgICAgICBTRVRfUkVBU09OX0FORF9SRVRVUk5fSUZfTkVFREVEKEZsb3dIYXNSVExPcmRlcmlu
ZywgcmVhc29ucywgaW5jbHVkZVJlYXNvbnMpOwotICAgIGlmIChzdHlsZS5saW5lQWxpZ24oKSAh
PSBMaW5lQWxpZ25Ob25lKQorICAgIGlmIChzdHlsZS5saW5lQWxpZ24oKSAhPSBMaW5lQWxpZ246
Ok5vbmUpCiAgICAgICAgIFNFVF9SRUFTT05fQU5EX1JFVFVSTl9JRl9ORUVERUQoRmxvd0hhc0xp
bmVBbGlnbkVkZ2VzLCByZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7Ci0gICAgaWYgKHN0eWxlLmxp
bmVTbmFwKCkgIT0gTGluZVNuYXBOb25lKQorICAgIGlmIChzdHlsZS5saW5lU25hcCgpICE9IExp
bmVTbmFwOjpOb25lKQogICAgICAgICBTRVRfUkVBU09OX0FORF9SRVRVUk5fSUZfTkVFREVEKEZs
b3dIYXNMaW5lU25hcCwgcmVhc29ucywgaW5jbHVkZVJlYXNvbnMpOwotICAgIGlmIChzdHlsZS50
ZXh0RW1waGFzaXNGaWxsKCkgIT0gVGV4dEVtcGhhc2lzRmlsbEZpbGxlZCB8fCBzdHlsZS50ZXh0
RW1waGFzaXNNYXJrKCkgIT0gVGV4dEVtcGhhc2lzTWFya05vbmUpCisgICAgaWYgKHN0eWxlLnRl
eHRFbXBoYXNpc0ZpbGwoKSAhPSBUZXh0RW1waGFzaXNGaWxsOjpGaWxsZWQgfHwgc3R5bGUudGV4
dEVtcGhhc2lzTWFyaygpICE9IFRleHRFbXBoYXNpc01hcms6Ok5vbmUpCiAgICAgICAgIFNFVF9S
RUFTT05fQU5EX1JFVFVSTl9JRl9ORUVERUQoRmxvd0hhc1RleHRFbXBoYXNpc0ZpbGxPck1hcmss
IHJlYXNvbnMsIGluY2x1ZGVSZWFzb25zKTsKICAgICBpZiAoc3R5bGUudGV4dFNoYWRvdygpKQog
ICAgICAgICBTRVRfUkVBU09OX0FORF9SRVRVUk5fSUZfTkVFREVEKEZsb3dIYXNUZXh0U2hhZG93
LCByZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7Ci0gICAgaWYgKHN0eWxlLmhhc1BzZXVkb1N0eWxl
KEZJUlNUX0xJTkUpKQorICAgIGlmIChzdHlsZS5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmly
c3RMaW5lKSkKICAgICAgICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lGX05FRURFRChGbG93SGFz
UHNldWRvRmlyc3RMaW5lLCByZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7Ci0gICAgaWYgKHN0eWxl
Lmhhc1BzZXVkb1N0eWxlKEZJUlNUX0xFVFRFUikpCisgICAgaWYgKHN0eWxlLmhhc1BzZXVkb1N0
eWxlKFBzZXVkb0lkOjpGaXJzdExldHRlcikpCiAgICAgICAgIFNFVF9SRUFTT05fQU5EX1JFVFVS
Tl9JRl9ORUVERUQoRmxvd0hhc1BzZXVkb0ZpcnN0TGV0dGVyLCByZWFzb25zLCBpbmNsdWRlUmVh
c29ucyk7CiAgICAgaWYgKHN0eWxlLmhhc1RleHRDb21iaW5lKCkpCiAgICAgICAgIFNFVF9SRUFT
T05fQU5EX1JFVFVSTl9JRl9ORUVERUQoRmxvd0hhc1RleHRDb21iaW5lLCByZWFzb25zLCBpbmNs
dWRlUmVhc29ucyk7CiAgICAgaWYgKHN0eWxlLmJhY2tncm91bmRDbGlwKCkgPT0gRmlsbEJveDo6
VGV4dCkKICAgICAgICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lGX05FRURFRChGbG93SGFzVGV4
dEZpbGxCb3gsIHJlYXNvbnMsIGluY2x1ZGVSZWFzb25zKTsKLSAgICBpZiAoc3R5bGUuYm9yZGVy
Rml0KCkgPT0gQm9yZGVyRml0TGluZXMpCisgICAgaWYgKHN0eWxlLmJvcmRlckZpdCgpID09IEJv
cmRlckZpdDo6TGluZXMpCiAgICAgICAgIFNFVF9SRUFTT05fQU5EX1JFVFVSTl9JRl9ORUVERUQo
Rmxvd0hhc0JvcmRlckZpdExpbmVzLCByZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7CiAgICAgaWYg
KHN0eWxlLmxpbmVCcmVhaygpICE9IExpbmVCcmVhazo6QXV0bykKICAgICAgICAgU0VUX1JFQVNP
Tl9BTkRfUkVUVVJOX0lGX05FRURFRChGbG93SGFzTm9uQXV0b0xpbmVCcmVhaywgcmVhc29ucywg
aW5jbHVkZVJlYXNvbnMpOwpAQCAtMjQzLDcgKzI0Myw3IEBAIHN0YXRpYyBBdm9pZGFuY2VSZWFz
b25GbGFncyBjYW5Vc2VGb3JTdHkKICAgICBpZiAoc3R5bGUudHJhaWxpbmdXb3JkKCkgIT0gVHJh
aWxpbmdXb3JkOjpBdXRvKQogICAgICAgICBTRVRfUkVBU09OX0FORF9SRVRVUk5fSUZfTkVFREVE
KEZsb3dIYXNOb25BdXRvVHJhaWxpbmdXb3JkLCByZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7CiAj
ZW5kaWYKLSAgICBpZiAoc3R5bGUuaHlwaGVucygpID09IEh5cGhlbnNBdXRvKSB7CisgICAgaWYg
KHN0eWxlLmh5cGhlbnMoKSA9PSBIeXBoZW5zOjpBdXRvKSB7CiAgICAgICAgIGF1dG8gdGV4dFJl
YXNvbnMgPSBjYW5Vc2VGb3JUZXh0KHN0eWxlLmh5cGhlblN0cmluZygpLCBzdHlsZS5mb250Q2Fz
Y2FkZSgpLCBzdGQ6Om51bGxvcHQsIGZhbHNlLCBpbmNsdWRlUmVhc29ucyk7CiAgICAgICAgIGlm
ICh0ZXh0UmVhc29ucyAhPSBOb1JlYXNvbikKICAgICAgICAgICAgIFNFVF9SRUFTT05fQU5EX1JF
VFVSTl9JRl9ORUVERUQodGV4dFJlYXNvbnMsIHJlYXNvbnMsIGluY2x1ZGVSZWFzb25zKTsKQEAg
LTM1NSwyMyArMzU1LDIzIEBAIGJvb2wgY2FuVXNlRm9yKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYg
ZmwKICAgICByZXR1cm4gY2FuVXNlRm9yV2l0aFJlYXNvbihmbG93LCBJbmNsdWRlUmVhc29uczo6
Rmlyc3QpID09IE5vUmVhc29uOwogfQogCi1zdGF0aWMgZmxvYXQgY29tcHV0ZUxpbmVMZWZ0KEVU
ZXh0QWxpZ24gdGV4dEFsaWduLCBmbG9hdCBhdmFpbGFibGVXaWR0aCwgZmxvYXQgY29tbWl0dGVk
V2lkdGgsIGZsb2F0IGxvZ2ljYWxMZWZ0T2Zmc2V0KQorc3RhdGljIGZsb2F0IGNvbXB1dGVMaW5l
TGVmdChUZXh0QWxpZ25Nb2RlIHRleHRBbGlnbiwgZmxvYXQgYXZhaWxhYmxlV2lkdGgsIGZsb2F0
IGNvbW1pdHRlZFdpZHRoLCBmbG9hdCBsb2dpY2FsTGVmdE9mZnNldCkKIHsKICAgICBmbG9hdCBy
ZW1haW5pbmdXaWR0aCA9IGF2YWlsYWJsZVdpZHRoIC0gY29tbWl0dGVkV2lkdGg7CiAgICAgZmxv
YXQgbGVmdCA9IGxvZ2ljYWxMZWZ0T2Zmc2V0OwogICAgIHN3aXRjaCAodGV4dEFsaWduKSB7Ci0g
ICAgY2FzZSBMRUZUOgotICAgIGNhc2UgV0VCS0lUX0xFRlQ6Ci0gICAgY2FzZSBUQVNUQVJUOgor
ICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6Oldl
YktpdExlZnQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpTdGFydDoKICAgICAgICAgcmV0dXJu
IGxlZnQ7Ci0gICAgY2FzZSBSSUdIVDoKLSAgICBjYXNlIFdFQktJVF9SSUdIVDoKLSAgICBjYXNl
IFRBRU5EOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CisgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRSaWdodDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkVuZDoKICAgICAg
ICAgcmV0dXJuIGxlZnQgKyBzdGQ6Om1heDxmbG9hdD4ocmVtYWluaW5nV2lkdGgsIDApOwotICAg
IGNhc2UgQ0VOVEVSOgotICAgIGNhc2UgV0VCS0lUX0NFTlRFUjoKKyAgICBjYXNlIFRleHRBbGln
bk1vZGU6OkNlbnRlcjoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoKICAg
ICAgICAgcmV0dXJuIGxlZnQgKyBzdGQ6Om1heDxmbG9hdD4ocmVtYWluaW5nV2lkdGggLyAyLCAw
KTsKLSAgICBjYXNlIEpVU1RJRlk6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5Ogog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAt
NjA2LDcgKzYwNiw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUxpbmVDb25zdHJhaW5zKGNvbnN0IFIK
ICAgICBsaW5lLnNldExvZ2ljYWxMZWZ0T2Zmc2V0KGZsb3cubG9naWNhbExlZnRPZmZzZXRGb3JM
aW5lKGhlaWdodCwgRG9Ob3RJbmRlbnRUZXh0LCBsb2dpY2FsSGVpZ2h0KSArIChzaG91bGRBcHBs
eVRleHRJbmRlbnQgJiYgaXNGaXJzdExpbmUgPyBmbG93LnRleHRJbmRlbnRPZmZzZXQoKSA6IExh
eW91dFVuaXQoMCkpKTsKICAgICBmbG9hdCBsb2dpY2FsUmlnaHRPZmZzZXQgPSBmbG93LmxvZ2lj
YWxSaWdodE9mZnNldEZvckxpbmUoaGVpZ2h0LCBEb05vdEluZGVudFRleHQsIGxvZ2ljYWxIZWln
aHQpOwogICAgIGxpbmUuc2V0QXZhaWxhYmxlV2lkdGgoc3RkOjptYXg8ZmxvYXQ+KDAsIGxvZ2lj
YWxSaWdodE9mZnNldCAtIGxpbmUubG9naWNhbExlZnRPZmZzZXQoKSkpOwotICAgIGlmIChzdHls
ZS50ZXh0QWxpZ24gPT0gSlVTVElGWSkKKyAgICBpZiAoc3R5bGUudGV4dEFsaWduID09IFRleHRB
bGlnbk1vZGU6Okp1c3RpZnkpCiAgICAgICAgIGxpbmUuc2V0TmVlZHNBbGxGcmFnbWVudHMoKTsK
ICAgICBudW1iZXJPZlByZWNlZGluZ0xpbmVzV2l0aEh5cGhlbiA9IChwcmV2aW91c0xpbmUuaXNF
bXB0eSgpIHx8ICFwcmV2aW91c0xpbmUubGFzdEZyYWdtZW50KCkuaGFzSHlwaGVuKCkpID8gMCA6
IG51bWJlck9mUHJlY2VkaW5nTGluZXNXaXRoSHlwaGVuICsgMTsKICAgICBpZiAoc3R5bGUuaHlw
aGVuTGltaXRMaW5lcyAmJiBudW1iZXJPZlByZWNlZGluZ0xpbmVzV2l0aEh5cGhlbiA+PSAqc3R5
bGUuaHlwaGVuTGltaXRMaW5lcykKQEAgLTc5MSw3ICs3OTEsNyBAQCBzdGF0aWMgYm9vbCBjcmVh
dGVMaW5lUnVucyhMaW5lU3RhdGUmIGxpCiAgICAgICAgIGlmIChmcmFnbWVudC5pc0xpbmVCcmVh
aygpKSB7CiAgICAgICAgICAgICAvLyBBZGQgdGhlIG5ldyBsaW5lIGZyYWdtZW50IG9ubHkgaWYg
dGhlcmUncyBub3RoaW5nIG9uIHRoZSBsaW5lLiAob3RoZXJ3aXNlIHRoZSBleHRyYSBuZXcgbGlu
ZSBjaGFyYWN0ZXIgd291bGQgc2hvdyB1cCBhdCB0aGUgZW5kIG9mIHRoZSBjb250ZW50LikKICAg
ICAgICAgICAgIGlmIChsaW5lLmlzRW1wdHkoKSB8fCBmcmFnbWVudC50eXBlKCkgPT0gVGV4dEZy
YWdtZW50SXRlcmF0b3I6OlRleHRGcmFnbWVudDo6SGFyZExpbmVCcmVhaykgewotICAgICAgICAg
ICAgICAgIGlmIChzdHlsZS50ZXh0QWxpZ24gPT0gUklHSFQgfHwgc3R5bGUudGV4dEFsaWduID09
IFdFQktJVF9SSUdIVCkKKyAgICAgICAgICAgICAgICBpZiAoc3R5bGUudGV4dEFsaWduID09IFRl
eHRBbGlnbk1vZGU6OlJpZ2h0IHx8IHN0eWxlLnRleHRBbGlnbiA9PSBUZXh0QWxpZ25Nb2RlOjpX
ZWJLaXRSaWdodCkKICAgICAgICAgICAgICAgICAgICAgbGluZS5yZW1vdmVUcmFpbGluZ1doaXRl
c3BhY2UocnVucyk7CiAgICAgICAgICAgICAgICAgbGluZS5hcHBlbmRGcmFnbWVudEFuZENyZWF0
ZVJ1bklmTmVlZGVkKGZyYWdtZW50LCBydW5zKTsKICAgICAgICAgICAgIH0KQEAgLTkwMywxMiAr
OTAzLDEyIEBAIHN0YXRpYyB2b2lkIGp1c3RpZnlSdW5zKGNvbnN0IExpbmVTdGF0ZSYKICAgICB9
CiB9CiAKLXN0YXRpYyBFVGV4dEFsaWduIHRleHRBbGlnbkZvckxpbmUoY29uc3QgVGV4dEZyYWdt
ZW50SXRlcmF0b3I6OlN0eWxlJiBzdHlsZSwgYm9vbCBsYXN0TGluZSkKK3N0YXRpYyBUZXh0QWxp
Z25Nb2RlIHRleHRBbGlnbkZvckxpbmUoY29uc3QgVGV4dEZyYWdtZW50SXRlcmF0b3I6OlN0eWxl
JiBzdHlsZSwgYm9vbCBsYXN0TGluZSkKIHsKLSAgICAvLyBGYWxsYmFjayB0byBMRUZUIChTVEFS
VCkgYWxpZ25tZW50IGZvciBub24tY29sbGFwc2FibGUgY29udGVudCBhbmQgZm9yIHRoZSBsYXN0
IGxpbmUgYmVmb3JlIGEgZm9yY2VkIGJyZWFrIG9yIHRoZSBlbmQgb2YgdGhlIGJsb2NrLgorICAg
IC8vIEZhbGxiYWNrIHRvIFRleHRBbGlnbk1vZGU6OkxlZnQgKFNUQVJUKSBhbGlnbm1lbnQgZm9y
IG5vbi1jb2xsYXBzYWJsZSBjb250ZW50IGFuZCBmb3IgdGhlIGxhc3QgbGluZSBiZWZvcmUgYSBm
b3JjZWQgYnJlYWsgb3IgdGhlIGVuZCBvZiB0aGUgYmxvY2suCiAgICAgYXV0byB0ZXh0QWxpZ24g
PSBzdHlsZS50ZXh0QWxpZ247Ci0gICAgaWYgKHRleHRBbGlnbiA9PSBKVVNUSUZZICYmICghc3R5
bGUuY29sbGFwc2VXaGl0ZXNwYWNlIHx8IGxhc3RMaW5lKSkKLSAgICAgICAgdGV4dEFsaWduID0g
TEVGVDsKKyAgICBpZiAodGV4dEFsaWduID09IFRleHRBbGlnbk1vZGU6Okp1c3RpZnkgJiYgKCFz
dHlsZS5jb2xsYXBzZVdoaXRlc3BhY2UgfHwgbGFzdExpbmUpKQorICAgICAgICB0ZXh0QWxpZ24g
PSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OwogICAgIHJldHVybiB0ZXh0QWxpZ247CiB9CiAKQEAgLTky
NSw3ICs5MjUsNyBAQCBzdGF0aWMgdm9pZCBjbG9zZUxpbmVFbmRpbmdBbmRBZGp1c3RSdW5zCiAg
ICAgYXV0byBmaXJzdFJ1bkluZGV4ID0gbGFzdFJ1bkluZGV4T2ZQcmV2aW91c0xpbmUgPyBsYXN0
UnVuSW5kZXhPZlByZXZpb3VzTGluZS52YWx1ZSgpICsgMSA6IDA7CiAgICAgYXV0byBsaW5lTG9n
aWNhbExlZnQgPSBsaW5lLmxvZ2ljYWxMZWZ0T2Zmc2V0KCk7CiAgICAgYXV0byB0ZXh0QWxpZ24g
PSB0ZXh0QWxpZ25Gb3JMaW5lKHN0eWxlLCBsYXN0TGluZUluRmxvdyB8fCAobGluZS5sYXN0RnJh
Z21lbnQoKS5pc1ZhbGlkKCkgJiYgbGluZS5sYXN0RnJhZ21lbnQoKS50eXBlKCkgPT0gVGV4dEZy
YWdtZW50SXRlcmF0b3I6OlRleHRGcmFnbWVudDo6SGFyZExpbmVCcmVhaykpOwotICAgIGlmICh0
ZXh0QWxpZ24gPT0gSlVTVElGWSkKKyAgICBpZiAodGV4dEFsaWduID09IFRleHRBbGlnbk1vZGU6
Okp1c3RpZnkpCiAgICAgICAgIGp1c3RpZnlSdW5zKGxpbmUsIHJ1bnMsIGZpcnN0UnVuSW5kZXgp
OwogICAgIGVsc2UKICAgICAgICAgbGluZUxvZ2ljYWxMZWZ0ID0gY29tcHV0ZUxpbmVMZWZ0KHRl
eHRBbGlnbiwgbGluZS5hdmFpbGFibGVXaWR0aCgpLCBsaW5lLndpZHRoKCksIGxpbmUubG9naWNh
bExlZnRPZmZzZXQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGlu
ZUxheW91dEZ1bmN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBwYWludEZsb3coY29uc3QgUmVuZGVy
QmxvY2tGbG93JiBmbAogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvJiBzdHlsZSA9IGZsb3cu
c3R5bGUoKTsKLSAgICBpZiAoc3R5bGUudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYg
KHN0eWxlLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1
cm47CiAKICAgICBUZXh0UGFpbnRlciB0ZXh0UGFpbnRlcihwYWludEluZm8uY29udGV4dCgpKTsK
QEAgLTE0Myw3ICsxNDMsNyBAQCBib29sIGhpdFRlc3RGbG93KGNvbnN0IFJlbmRlckJsb2NrRmxv
dyYgCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8mIHN0eWxlID0gZmxvdy5zdHls
ZSgpOwotICAgIGlmIChzdHlsZS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBzdHlsZS5wb2lu
dGVyRXZlbnRzKCkgPT0gUEVfTk9ORSkKKyAgICBpZiAoc3R5bGUudmlzaWJpbGl0eSgpICE9IFZp
c2liaWxpdHk6OlZpc2libGUgfHwgc3R5bGUucG9pbnRlckV2ZW50cygpID09IFBvaW50ZXJFdmVu
dHM6Ok5vbmUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIExheW91dFJlY3QgcmFuZ2VS
ZWN0ID0gbG9jYXRpb25JbkNvbnRhaW5lci5ib3VuZGluZ0JveCgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRU
ZXh0RnJhZ21lbnRJdGVyYXRvci5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIFRleHRGcmFnbWVudEl0ZXJhdG9yOjpTdHls
ZTo6U3R5bGUoY29uc3QKICAgICAsIGtlZXBBbGxXb3Jkc0ZvckNKSyhzdHlsZS53b3JkQnJlYWso
KSA9PSBXb3JkQnJlYWs6OktlZXBBbGwpCiAgICAgLCB3b3JkU3BhY2luZyhmb250LndvcmRTcGFj
aW5nKCkpCiAgICAgLCB0YWJXaWR0aChjb2xsYXBzZVdoaXRlc3BhY2UgPyAwIDogc3R5bGUudGFi
U2l6ZSgpKQotICAgICwgc2hvdWxkSHlwaGVuYXRlKHN0eWxlLmh5cGhlbnMoKSA9PSBIeXBoZW5z
QXV0byAmJiBjYW5IeXBoZW5hdGUoc3R5bGUubG9jYWxlKCkpKQorICAgICwgc2hvdWxkSHlwaGVu
YXRlKHN0eWxlLmh5cGhlbnMoKSA9PSBIeXBoZW5zOjpBdXRvICYmIGNhbkh5cGhlbmF0ZShzdHls
ZS5sb2NhbGUoKSkpCiAgICAgLCBoeXBoZW5TdHJpbmdXaWR0aChzaG91bGRIeXBoZW5hdGUgPyAo
dXNlU2ltcGxpZmllZFRleHRNZWFzdXJpbmcgPyBmb250LndpZHRoRm9yU2ltcGxlVGV4dChzdHls
ZS5oeXBoZW5TdHJpbmcoKSkgOiBmb250LndpZHRoKFRleHRSdW4oU3RyaW5nKHN0eWxlLmh5cGhl
blN0cmluZygpKSkpKSA6IDApCiAgICAgLCBoeXBoZW5MaW1pdEJlZm9yZShzdHlsZS5oeXBoZW5h
dGlvbkxpbWl0QmVmb3JlKCkgPCAwID8gMiA6IHN0eWxlLmh5cGhlbmF0aW9uTGltaXRCZWZvcmUo
KSkKICAgICAsIGh5cGhlbkxpbWl0QWZ0ZXIoc3R5bGUuaHlwaGVuYXRpb25MaW1pdEFmdGVyKCkg
PCAwID8gMiA6IHN0eWxlLmh5cGhlbmF0aW9uTGltaXRBZnRlcigpKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4
dEZyYWdtZW50SXRlcmF0b3IuaAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDYsNyArMTA2LDcgQEAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBTdHls
ZShjb25zdCBSZW5kZXJTdHlsZSYsIGJvb2wgdXNlU2ltcGxpZmllZFRleHRNZWFzdXJpbmcpOwog
CiAgICAgICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250OwotICAgICAgICBFVGV4dEFsaWduIHRl
eHRBbGlnbjsKKyAgICAgICAgVGV4dEFsaWduTW9kZSB0ZXh0QWxpZ247CiAgICAgICAgIGJvb2wg
aGFzS2VybmluZ09yTGlnYXR1cmVzOwogICAgICAgICBib29sIGNvbGxhcHNlV2hpdGVzcGFjZTsK
ICAgICAgICAgYm9vbCBwcmVzZXJ2ZU5ld2xpbmU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcAkocmV2aXNpb24gMjMyMTIz
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIyMSwxOSArMjIxLDE5IEBAIHN0YXRpYyBTdHJva2VTdHlsZSB0
ZXh0RGVjb3JhdGlvblN0eWxlVG8KIHsKICAgICBTdHJva2VTdHlsZSBzdHJva2VTdHlsZSA9IFNv
bGlkU3Ryb2tlOwogICAgIHN3aXRjaCAoZGVjb3JhdGlvblN0eWxlKSB7Ci0gICAgY2FzZSBUZXh0
RGVjb3JhdGlvblN0eWxlU29saWQ6CisgICAgY2FzZSBUZXh0RGVjb3JhdGlvblN0eWxlOjpTb2xp
ZDoKICAgICAgICAgc3Ryb2tlU3R5bGUgPSBTb2xpZFN0cm9rZTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBUZXh0RGVjb3JhdGlvblN0eWxlRG91YmxlOgorICAgIGNhc2UgVGV4dERlY29yYXRp
b25TdHlsZTo6RG91YmxlOgogICAgICAgICBzdHJva2VTdHlsZSA9IERvdWJsZVN0cm9rZTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUZXh0RGVjb3JhdGlvblN0eWxlRG90dGVkOgorICAgIGNh
c2UgVGV4dERlY29yYXRpb25TdHlsZTo6RG90dGVkOgogICAgICAgICBzdHJva2VTdHlsZSA9IERv
dHRlZFN0cm9rZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUZXh0RGVjb3JhdGlvblN0eWxl
RGFzaGVkOgorICAgIGNhc2UgVGV4dERlY29yYXRpb25TdHlsZTo6RGFzaGVkOgogICAgICAgICBz
dHJva2VTdHlsZSA9IERhc2hlZFN0cm9rZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUZXh0
RGVjb3JhdGlvblN0eWxlV2F2eToKKyAgICBjYXNlIFRleHREZWNvcmF0aW9uU3R5bGU6Oldhdnk6
CiAgICAgICAgIHN0cm9rZVN0eWxlID0gV2F2eVN0cm9rZTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQpAQCAtMjUyLDcgKzI1Miw3IEBAIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6VGV4dERlY29yYXRp
b25QYWkKICAgICAsIG1fZGVjb3JhdGlvbnMgeyBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+Ojpm
cm9tUmF3KGRlY29yYXRpb25zKSB9CiAgICAgLCBtX3dhdnlPZmZzZXQgeyB3YXZ5T2Zmc2V0RnJv
bURlY29yYXRpb24oKSB9CiAgICAgLCBtX2lzUHJpbnRpbmcgeyByZW5kZXJlci5kb2N1bWVudCgp
LnByaW50aW5nKCkgfQotICAgICwgbV9zdHlsZXMgeyBzdHlsZXMgPyAqV1RGTW92ZShzdHlsZXMp
IDogc3R5bGVzRm9yUmVuZGVyZXIocmVuZGVyZXIsIGRlY29yYXRpb25zLCBpc0ZpcnN0TGluZSwg
Tk9QU0VVRE8pIH0KKyAgICAsIG1fc3R5bGVzIHsgc3R5bGVzID8gKldURk1vdmUoc3R5bGVzKSA6
IHN0eWxlc0ZvclJlbmRlcmVyKHJlbmRlcmVyLCBkZWNvcmF0aW9ucywgaXNGaXJzdExpbmUsIFBz
ZXVkb0lkOjpOb25lKSB9CiAgICAgLCBtX2xpbmVTdHlsZSB7IGlzRmlyc3RMaW5lID8gcmVuZGVy
ZXIuZmlyc3RMaW5lU3R5bGUoKSA6IHJlbmRlcmVyLnN0eWxlKCkgfQogewogfQpAQCAtMjczLDIx
ICsyNzMsMjEgQEAgdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50VGV4dERlYwogCiAg
ICAgICAgIGF1dG8gc3Ryb2tlU3R5bGUgPSB0ZXh0RGVjb3JhdGlvblN0eWxlVG9TdHJva2VTdHls
ZShzdHlsZSk7CiAKLSAgICAgICAgaWYgKHN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGVXYXZ5
KQorICAgICAgICBpZiAoc3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSkKICAgICAg
ICAgICAgIHN0cm9rZVdhdnlUZXh0RGVjb3JhdGlvbihtX2NvbnRleHQsIHN0YXJ0LCBlbmQsIHRl
eHREZWNvcmF0aW9uVGhpY2tuZXNzLCBtX2xpbmVTdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUo
KSk7CiAgICAgICAgIGVsc2UgaWYgKGRlY29yYXRpb24gPT0gVGV4dERlY29yYXRpb25VbmRlcmxp
bmUgfHwgZGVjb3JhdGlvbiA9PSBUZXh0RGVjb3JhdGlvbk92ZXJsaW5lKSB7CiAjaWYgRU5BQkxF
KENTUzNfVEVYVF9ERUNPUkFUSU9OX1NLSVBfSU5LKQogICAgICAgICAgICAgaWYgKChtX2xpbmVT
dHlsZS50ZXh0RGVjb3JhdGlvblNraXAoKSA9PSBUZXh0RGVjb3JhdGlvblNraXBJbmsgfHwgbV9s
aW5lU3R5bGUudGV4dERlY29yYXRpb25Ta2lwKCkgPT0gVGV4dERlY29yYXRpb25Ta2lwQXV0bykg
JiYgbV9pc0hvcml6b250YWwpIHsKICAgICAgICAgICAgICAgICBpZiAoIW1fY29udGV4dC5wYWlu
dGluZ0Rpc2FibGVkKCkpCi0gICAgICAgICAgICAgICAgICAgIGRyYXdTa2lwSW5rVW5kZXJsaW5l
KG1fY29udGV4dCwgKm1fZm9udCwgdGV4dFJ1biwgdGV4dE9yaWdpbiwgbG9jYWxPcmlnaW4sIG9m
ZnNldCwgbV93aWR0aCwgbV9pc1ByaW50aW5nLCBzdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxl
RG91YmxlLCBzdHJva2VTdHlsZSk7CisgICAgICAgICAgICAgICAgICAgIGRyYXdTa2lwSW5rVW5k
ZXJsaW5lKG1fY29udGV4dCwgKm1fZm9udCwgdGV4dFJ1biwgdGV4dE9yaWdpbiwgbG9jYWxPcmln
aW4sIG9mZnNldCwgbV93aWR0aCwgbV9pc1ByaW50aW5nLCBzdHlsZSA9PSBUZXh0RGVjb3JhdGlv
blN0eWxlOjpEb3VibGUsIHN0cm9rZVN0eWxlKTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIHN1cHBvcnQgdGV4dC1kZWNvcmF0aW9uLXNraXA6
IG5vbmUuCiAjZW5kaWYKLSAgICAgICAgICAgICAgICBtX2NvbnRleHQuZHJhd0xpbmVGb3JUZXh0
KHN0YXJ0LCBtX3dpZHRoLCBtX2lzUHJpbnRpbmcsIHN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5
bGVEb3VibGUsIHN0cm9rZVN0eWxlKTsKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQuZHJhd0xp
bmVGb3JUZXh0KHN0YXJ0LCBtX3dpZHRoLCBtX2lzUHJpbnRpbmcsIHN0eWxlID09IFRleHREZWNv
cmF0aW9uU3R5bGU6OkRvdWJsZSwgc3Ryb2tlU3R5bGUpOwogICAgICAgICAgICAgCiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoZGVjb3JhdGlvbiA9PSBUZXh0RGVjb3JhdGlv
bkxpbmVUaHJvdWdoKTsKLSAgICAgICAgICAgIG1fY29udGV4dC5kcmF3TGluZUZvclRleHQoc3Rh
cnQsIG1fd2lkdGgsIG1faXNQcmludGluZywgc3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZURv
dWJsZSwgc3Ryb2tlU3R5bGUpOworICAgICAgICAgICAgbV9jb250ZXh0LmRyYXdMaW5lRm9yVGV4
dChzdGFydCwgbV93aWR0aCwgbV9pc1ByaW50aW5nLCBzdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0
eWxlOjpEb3VibGUsIHN0cm9rZVN0eWxlKTsKICAgICAgICAgfQogICAgIH07CiAKQEAgLTMzNiwx
MyArMzM2LDEzIEBAIHZvaWQgVGV4dERlY29yYXRpb25QYWludGVyOjpwYWludFRleHREZWMKICAg
ICAgICAgLy8gVGhlc2UgZGVjb3JhdGlvbnMgc2hvdWxkIG1hdGNoIHRoZSB2aXN1YWwgb3ZlcmZs
b3dzIGNvbXB1dGVkIGluIHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoKS4KICAgICAgICAg
aWYgKG1fZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25VbmRlcmxpbmUpKSB7CiAg
ICAgICAgICAgICBpbnQgb2Zmc2V0ID0gY29tcHV0ZVVuZGVybGluZU9mZnNldChtX2xpbmVTdHls
ZS50ZXh0VW5kZXJsaW5lUG9zaXRpb24oKSwgbV9saW5lU3R5bGUuZm9udE1ldHJpY3MoKSwgbV9p
bmxpbmVUZXh0Qm94LCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyk7Ci0gICAgICAgICAgICBmbG9h
dCB3YXZ5T2Zmc2V0ID0gbV9zdHlsZXMudW5kZXJsaW5lU3R5bGUgPT0gVGV4dERlY29yYXRpb25T
dHlsZVdhdnkgPyBtX3dhdnlPZmZzZXQgOiAwOworICAgICAgICAgICAgZmxvYXQgd2F2eU9mZnNl
dCA9IG1fc3R5bGVzLnVuZGVybGluZVN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6Oldhdnkg
PyBtX3dhdnlPZmZzZXQgOiAwOwogICAgICAgICAgICAgRmxvYXRQb2ludCBzdGFydCA9IGxvY2Fs
T3JpZ2luICsgRmxvYXRTaXplKDAsIG9mZnNldCArIHdhdnlPZmZzZXQpOwogICAgICAgICAgICAg
RmxvYXRQb2ludCBlbmQgPSBsb2NhbE9yaWdpbiArIEZsb2F0U2l6ZShtX3dpZHRoLCBvZmZzZXQg
KyB3YXZ5T2Zmc2V0KTsKICAgICAgICAgICAgIHBhaW50RGVjb3JhdGlvbihUZXh0RGVjb3JhdGlv
blVuZGVybGluZSwgbV9zdHlsZXMudW5kZXJsaW5lU3R5bGUsIG1fc3R5bGVzLnVuZGVybGluZUNv
bG9yLCBzdGFydCwgZW5kLCBvZmZzZXQpOwogICAgICAgICB9CiAgICAgICAgIGlmIChtX2RlY29y
YXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uT3ZlcmxpbmUpKSB7Ci0gICAgICAgICAgICBm
bG9hdCB3YXZ5T2Zmc2V0ID0gbV9zdHlsZXMub3ZlcmxpbmVTdHlsZSA9PSBUZXh0RGVjb3JhdGlv
blN0eWxlV2F2eSA/IG1fd2F2eU9mZnNldCA6IDA7CisgICAgICAgICAgICBmbG9hdCB3YXZ5T2Zm
c2V0ID0gbV9zdHlsZXMub3ZlcmxpbmVTdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5
ID8gbV93YXZ5T2Zmc2V0IDogMDsKICAgICAgICAgICAgIEZsb2F0UG9pbnQgc3RhcnQgPSBsb2Nh
bE9yaWdpbiAtIEZsb2F0U2l6ZSgwLCB3YXZ5T2Zmc2V0KTsKICAgICAgICAgICAgIEZsb2F0UG9p
bnQgZW5kID0gbG9jYWxPcmlnaW4gKyBGbG9hdFNpemUobV93aWR0aCwgLXdhdnlPZmZzZXQpOwog
ICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKFRleHREZWNvcmF0aW9uT3ZlcmxpbmUsIG1fc3R5
bGVzLm92ZXJsaW5lU3R5bGUsIG1fc3R5bGVzLm92ZXJsaW5lQ29sb3IsIHN0YXJ0LCBlbmQsIDAp
OwpAQCAtNDAxLDcgKzQwMSw3IEBAIHN0YXRpYyB2b2lkIGNvbGxlY3RTdHlsZXNGb3JSZW5kZXJl
cihUZXgKICAgICB9OwogCiAgICAgYXV0byBzdHlsZUZvclJlbmRlcmVyID0gWyZdIChjb25zdCBS
ZW5kZXJPYmplY3QmIHJlbmRlcmVyKSAtPiBjb25zdCBSZW5kZXJTdHlsZSYgewotICAgICAgICBp
ZiAocHNldWRvSWQgIT0gTk9QU0VVRE8gJiYgcmVuZGVyZXIuc3R5bGUoKS5oYXNQc2V1ZG9TdHls
ZShwc2V1ZG9JZCkpIHsKKyAgICAgICAgaWYgKHBzZXVkb0lkICE9IFBzZXVkb0lkOjpOb25lICYm
IHJlbmRlcmVyLnN0eWxlKCkuaGFzUHNldWRvU3R5bGUocHNldWRvSWQpKSB7CiAgICAgICAgICAg
ICBpZiAoaXM8UmVuZGVyVGV4dD4ocmVuZGVyZXIpKQogICAgICAgICAgICAgICAgIHJldHVybiAq
ZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVyZXIpLmdldENhY2hlZFBzZXVkb1N0eWxlKHBzZXVk
b0lkKTsKICAgICAgICAgICAgIHJldHVybiAqZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocmVuZGVy
ZXIpLmdldENhY2hlZFBzZXVkb1N0eWxlKHBzZXVkb0lkKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmgJKHJldmlzaW9uIDIzMjEy
MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIFRleHREZWNv
cmF0aW9uU3R5bGUgbGluZXRocm91Z2hTdHlsZTsKICAgICB9OwogICAgIC8vIEZJWE1FOiBNYWtl
IHJlcXVlc3RlZERlY29yYXRpb25zIGFuIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4uIFNlZSA8
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3Njg0ND4uCi0gICAgc3Rh
dGljIFN0eWxlcyBzdHlsZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QmLCB1bnNpZ25l
ZCByZXF1ZXN0ZWREZWNvcmF0aW9ucywgYm9vbCBmaXJzdExpbmVTdHlsZSA9IGZhbHNlLCBQc2V1
ZG9JZCA9IE5PUFNFVURPKTsKKyAgICBzdGF0aWMgU3R5bGVzIHN0eWxlc0ZvclJlbmRlcmVyKGNv
bnN0IFJlbmRlck9iamVjdCYsIHVuc2lnbmVkIHJlcXVlc3RlZERlY29yYXRpb25zLCBib29sIGZp
cnN0TGluZVN0eWxlID0gZmFsc2UsIFBzZXVkb0lkID0gUHNldWRvSWQ6Ok5vbmUpOwogCiBwcml2
YXRlOgogICAgIEdyYXBoaWNzQ29udGV4dCYgbV9jb250ZXh0OwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDIzMjEy
MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTEsOCArMTExLDggQEAgcHVibGljOgogICAgICAgICAsIG1fcmVu
ZGVyVGV4dEluZm8oaW5SZW5kZXJUZXh0SW5mbykKICAgICAgICAgLCBtX2xhc3RGbG9hdEZyb21Q
cmV2aW91c0xpbmUoaW5MYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lKQogICAgICAgICAsIG1fd2lk
dGgobGluZVdpZHRoKQotICAgICAgICAsIG1fY3VycldTKE5PUk1BTCkKLSAgICAgICAgLCBtX2xh
c3RXUyhOT1JNQUwpCisgICAgICAgICwgbV9jdXJyV1MoV2hpdGVTcGFjZTo6Tm9ybWFsKQorICAg
ICAgICAsIG1fbGFzdFdTKFdoaXRlU3BhY2U6Ok5vcm1hbCkKICAgICAgICAgLCBtX3ByZXNlcnZl
c05ld2xpbmUoZmFsc2UpCiAgICAgICAgICwgbV9hdFN0YXJ0KHRydWUpCiAgICAgICAgICwgbV9p
Z25vcmluZ1NwYWNlcyhmYWxzZSkKQEAgLTE2MSw3ICsxNjEsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGNsZWFyTGluZUJyZWFrSWZGaXRzT25MaW5lKGJvb2wgaWdub3JpbmdUcmFpbGluZ1NwYWNl
ID0gZmFsc2UpCiAgICAgewotICAgICAgICBpZiAobV93aWR0aC5maXRzT25MaW5lKGlnbm9yaW5n
VHJhaWxpbmdTcGFjZSkgfHwgbV9sYXN0V1MgPT0gTk9XUkFQIHx8IG1faGFuZ3NBdEVuZCkKKyAg
ICAgICAgaWYgKG1fd2lkdGguZml0c09uTGluZShpZ25vcmluZ1RyYWlsaW5nU3BhY2UpIHx8IG1f
bGFzdFdTID09IFdoaXRlU3BhY2U6Ok5vV3JhcCB8fCBtX2hhbmdzQXRFbmQpCiAgICAgICAgICAg
ICBtX2xpbmVCcmVha0hpc3RvcnkuY2xlYXIoKTsKICAgICAgICAgbV9oYW5nc0F0RW5kID0gZmFs
c2U7CiAgICAgfQpAQCAtMjY4LDEzICsyNjgsMTMgQEAgcHJpdmF0ZToKIAogICAgIExpbmVXaWR0
aCBtX3dpZHRoOwogCi0gICAgRVdoaXRlU3BhY2UgbV9jdXJyV1M7Ci0gICAgRVdoaXRlU3BhY2Ug
bV9sYXN0V1M7CisgICAgV2hpdGVTcGFjZSBtX2N1cnJXUzsKKyAgICBXaGl0ZVNwYWNlIG1fbGFz
dFdTOwogCiAgICAgYm9vbCBtX3ByZXNlcnZlc05ld2xpbmU7CiAgICAgYm9vbCBtX2F0U3RhcnQ7
CiAKLSAgICAvLyBUaGlzIHZhcmlhYmxlIGlzIHVzZWQgb25seSBpZiB3aGl0ZXNwYWNlIGlzbid0
IHNldCB0byBQUkUsIGFuZCBpdCB0ZWxscyB1cyB3aGV0aGVyCisgICAgLy8gVGhpcyB2YXJpYWJs
ZSBpcyB1c2VkIG9ubHkgaWYgd2hpdGVzcGFjZSBpc24ndCBzZXQgdG8gV2hpdGVTcGFjZTo6UHJl
LCBhbmQgaXQgdGVsbHMgdXMgd2hldGhlcgogICAgIC8vIG9yIG5vdCB3ZSBhcmUgY3VycmVudGx5
IGlnbm9yaW5nIHdoaXRlc3BhY2UuCiAgICAgYm9vbCBtX2lnbm9yaW5nU3BhY2VzOwogCkBAIC0z
NjUsNyArMzY1LDcgQEAgaW5saW5lIHZvaWQgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVCUihDbAog
ICAgICAgICAvLyBJZiB3ZSB3ZXJlIHByZWNlZGVkIGJ5IGNvbGxhcHNpbmcgc3BhY2UgYW5kIGFy
ZSBpbiBhIHJpZ2h0LWFsaWduZWQgY29udGFpbmVyIHdlIG5lZWQgdG8gZW5zdXJlIHRoZSBzcGFj
ZSBnZXRzCiAgICAgICAgIC8vIGNvbGxhcHNlZCBhd2F5IHNvIHRoYXQgaXQgZG9lc24ndCBwdXNo
IHRoZSB0ZXh0IG91dCBmcm9tIHRoZSBjb250YWluZXIncyByaWdodC1oYW5kIGVkZ2UuCiAgICAg
ICAgIC8vIEZJWE1FOiBEbyB0aGlzIHJlZ2FyZGxlc3Mgb2YgdGhlIGNvbnRhaW5lcidzIGFsaWdu
bWVudCAtIHdpbGwgcmVxdWlyZSByZWJhc2VsaW5pbmcgYSBsb3Qgb2YgdGVzdCByZXN1bHRzLgot
ICAgICAgICBlbHNlIGlmIChtX2lnbm9yaW5nU3BhY2VzICYmIChtX2Jsb2NrU3R5bGUudGV4dEFs
aWduKCkgPT0gUklHSFQgfHwgbV9ibG9ja1N0eWxlLnRleHRBbGlnbigpID09IFdFQktJVF9SSUdI
VCkpCisgICAgICAgIGVsc2UgaWYgKG1faWdub3JpbmdTcGFjZXMgJiYgKG1fYmxvY2tTdHlsZS50
ZXh0QWxpZ24oKSA9PSBUZXh0QWxpZ25Nb2RlOjpSaWdodCB8fCBtX2Jsb2NrU3R5bGUudGV4dEFs
aWduKCkgPT0gVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQpKQogICAgICAgICAgICAgbV9saW5l
V2hpdGVzcGFjZUNvbGxhcHNpbmdTdGF0ZS5zdG9wSWdub3JpbmdTcGFjZXMoSW5saW5lSXRlcmF0
b3IoMCwgbV9jdXJyZW50LnJlbmRlcmVyKCksIG1fY3VycmVudC5vZmZzZXQoKSkpOwogCiAgICAg
ICAgIGlmICghbV9saW5lSW5mby5pc0VtcHR5KCkpCkBAIC00MzcsNyArNDM3LDcgQEAgaW5saW5l
IHZvaWQgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVPdXRPZgogICAgIGlmICghaXNJbmxpbmVUeXBl
KQogICAgICAgICBtX2Jsb2NrLnNldFN0YXRpY0lubGluZVBvc2l0aW9uRm9yQ2hpbGQoYm94LCBt
X2Jsb2NrLmxvZ2ljYWxIZWlnaHQoKSwgbV9ibG9jay5zdGFydE9mZnNldEZvckNvbnRlbnQobV9i
bG9jay5sb2dpY2FsSGVpZ2h0KCkpKTsKICAgICBlbHNlIHsKLSAgICAgICAgLy8gSWYgb3VyIG9y
aWdpbmFsIGRpc3BsYXkgd2FzIGFuIElOTElORSB0eXBlLCB0aGVuIHdlIGNhbiBkZXRlcm1pbmUg
b3VyIHN0YXRpYyB5IHBvc2l0aW9uIG5vdy4KKyAgICAgICAgLy8gSWYgb3VyIG9yaWdpbmFsIGRp
c3BsYXkgd2FzIGFuIERpc3BsYXlUeXBlOjpJbmxpbmUgdHlwZSwgdGhlbiB3ZSBjYW4gZGV0ZXJt
aW5lIG91ciBzdGF0aWMgeSBwb3NpdGlvbiBub3cuCiAgICAgICAgIGJveC5sYXllcigpLT5zZXRT
dGF0aWNCbG9ja1Bvc2l0aW9uKG1fYmxvY2subG9naWNhbEhlaWdodCgpKTsKICAgICB9CiAKQEAg
LTc2Miw3ICs3NjIsNyBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQo
CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gbGluZVN0eWxlKHJlbmRlclRleHQsIG1f
bGluZUluZm8pOwogICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUuZm9udENhc2Nh
ZGUoKTsKICAgICBib29sIGlzRml4ZWRQaXRjaCA9IGZvbnQuaXNGaXhlZFBpdGNoKCk7Ci0gICAg
Ym9vbCBjYW5IeXBoZW5hdGUgPSBzdHlsZS5oeXBoZW5zKCkgPT0gSHlwaGVuc0F1dG8gJiYgV2Vi
Q29yZTo6Y2FuSHlwaGVuYXRlKHN0eWxlLmxvY2FsZSgpKTsKKyAgICBib29sIGNhbkh5cGhlbmF0
ZSA9IHN0eWxlLmh5cGhlbnMoKSA9PSBIeXBoZW5zOjpBdXRvICYmIFdlYkNvcmU6OmNhbkh5cGhl
bmF0ZShzdHlsZS5sb2NhbGUoKSk7CiAgICAgYm9vbCBjYW5IYW5nUHVuY3R1YXRpb25BdFN0YXJ0
ID0gc3R5bGUuaGFuZ2luZ1B1bmN0dWF0aW9uKCkgJiBGaXJzdEhhbmdpbmdQdW5jdHVhdGlvbjsK
ICAgICBib29sIGNhbkhhbmdQdW5jdHVhdGlvbkF0RW5kID0gc3R5bGUuaGFuZ2luZ1B1bmN0dWF0
aW9uKCkgJiBMYXN0SGFuZ2luZ1B1bmN0dWF0aW9uOwogICAgIGJvb2wgY2FuSGFuZ1N0b3BPckNv
bW1hQXRMaW5lRW5kID0gc3R5bGUuaGFuZ2luZ1B1bmN0dWF0aW9uKCkgJiBBbGxvd0VuZEhhbmdp
bmdQdW5jdHVhdGlvbjsKQEAgLTc3OCw3ICs3NzgsNyBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0Nv
bnRleHQ6OmhhbmRsZVRleHQoCiAgICAgYm9vbCBicmVha05CU1AgPSBtX2F1dG9XcmFwICYmIG1f
Y3VycmVudFN0eWxlLT5uYnNwTW9kZSgpID09IE5CU1BNb2RlOjpTcGFjZTsKICAgICAvLyBBdXRv
LXdyYXBwaW5nIHRleHQgc2hvdWxkIHdyYXAgaW4gdGhlIG1pZGRsZSBvZiBhIHdvcmQgb25seSBp
ZiBpdCBjb3VsZCBub3Qgd3JhcCBiZWZvcmUgdGhlIHdvcmQsCiAgICAgLy8gd2hpY2ggaXMgb25s
eSBwb3NzaWJsZSBpZiB0aGUgd29yZCBpcyB0aGUgZmlyc3QgdGhpbmcgb24gdGhlIGxpbmUuCi0g
ICAgYm9vbCBicmVha1dvcmRzID0gbV9jdXJyZW50U3R5bGUtPmJyZWFrV29yZHMoKSAmJiAoKG1f
YXV0b1dyYXAgJiYgKCFtX3dpZHRoLmNvbW1pdHRlZFdpZHRoKCkgJiYgIW1fd2lkdGguaGFzQ29t
bWl0dGVkUmVwbGFjZWQoKSkpIHx8IG1fY3VycldTID09IFBSRSk7CisgICAgYm9vbCBicmVha1dv
cmRzID0gbV9jdXJyZW50U3R5bGUtPmJyZWFrV29yZHMoKSAmJiAoKG1fYXV0b1dyYXAgJiYgKCFt
X3dpZHRoLmNvbW1pdHRlZFdpZHRoKCkgJiYgIW1fd2lkdGguaGFzQ29tbWl0dGVkUmVwbGFjZWQo
KSkpIHx8IG1fY3VycldTID09IFdoaXRlU3BhY2U6OlByZSk7CiAgICAgYm9vbCBtaWRXb3JkQnJl
YWsgPSBmYWxzZTsKICAgICBib29sIGJyZWFrQWxsID0gbV9jdXJyZW50U3R5bGUtPndvcmRCcmVh
aygpID09IFdvcmRCcmVhazo6QnJlYWtBbGwgJiYgbV9hdXRvV3JhcDsKICAgICBib29sIGtlZXBB
bGxXb3JkcyA9IG1fY3VycmVudFN0eWxlLT53b3JkQnJlYWsoKSA9PSBXb3JkQnJlYWs6OktlZXBB
bGw7CkBAIC04MzAsNyArODMwLDcgQEAgaW5saW5lIGJvb2wgQnJlYWtpbmdDb250ZXh0OjpoYW5k
bGVUZXh0KAogICAgICAgICBpZiAoIW1fY29sbGFwc2VXaGl0ZVNwYWNlIHx8ICFtX2N1cnJlbnRD
aGFyYWN0ZXJJc1NwYWNlKQogICAgICAgICAgICAgbV9saW5lSW5mby5zZXRFbXB0eShmYWxzZSwg
Jm1fYmxvY2ssICZtX3dpZHRoKTsKIAotICAgICAgICBpZiAoYyA9PSBzb2Z0SHlwaGVuICYmIG1f
YXV0b1dyYXAgJiYgIWh5cGhlbldpZHRoICYmIHN0eWxlLmh5cGhlbnMoKSAhPSBIeXBoZW5zTm9u
ZSkgeworICAgICAgICBpZiAoYyA9PSBzb2Z0SHlwaGVuICYmIG1fYXV0b1dyYXAgJiYgIWh5cGhl
bldpZHRoICYmIHN0eWxlLmh5cGhlbnMoKSAhPSBIeXBoZW5zOjpOb25lKSB7CiAgICAgICAgICAg
ICBoeXBoZW5XaWR0aCA9IG1lYXN1cmVIeXBoZW5XaWR0aChyZW5kZXJUZXh0LCBmb250LCAmZmFs
bGJhY2tGb250cyk7CiAgICAgICAgICAgICBtX3dpZHRoLmFkZFVuY29tbWl0dGVkV2lkdGgoaHlw
aGVuV2lkdGgpOwogICAgICAgICB9CkBAIC04MzksNyArODM5LDcgQEAgaW5saW5lIGJvb2wgQnJl
YWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0KAogCiAgICAgICAgIG1fY3VycmVudENoYXJhY3Rlcklz
V1MgPSBtX2N1cnJlbnRDaGFyYWN0ZXJJc1NwYWNlIHx8IChicmVha05CU1AgJiYgYyA9PSBub0Jy
ZWFrU3BhY2UpOwogCi0gICAgICAgIGlmICgoYnJlYWtBbGwgfHwgYnJlYWtXb3JkcykgJiYgIW1p
ZFdvcmRCcmVhayAmJiAoIW1fY3VycmVudENoYXJhY3RlcklzU3BhY2UgfHwgc3R5bGUud2hpdGVT
cGFjZSgpICE9IFBSRV9XUkFQKSkgeworICAgICAgICBpZiAoKGJyZWFrQWxsIHx8IGJyZWFrV29y
ZHMpICYmICFtaWRXb3JkQnJlYWsgJiYgKCFtX2N1cnJlbnRDaGFyYWN0ZXJJc1NwYWNlIHx8IHN0
eWxlLndoaXRlU3BhY2UoKSAhPSBXaGl0ZVNwYWNlOjpQcmVXcmFwKSkgewogICAgICAgICAgICAg
d3JhcFcgKz0gY2hhcldpZHRoOwogICAgICAgICAgICAgYm9vbCBtaWRXb3JkQnJlYWtJc0JlZm9y
ZVN1cnJvZ2F0ZVBhaXIgPSBVMTZfSVNfTEVBRChjKSAmJiBVMTZfSVNfVFJBSUwocmVuZGVyVGV4
dC5jaGFyYWN0ZXJBdChtX2N1cnJlbnQub2Zmc2V0KCkgKyAxKSk7CiAgICAgICAgICAgICBjaGFy
V2lkdGggPSB0ZXh0V2lkdGgocmVuZGVyVGV4dCwgbV9jdXJyZW50Lm9mZnNldCgpLCBtaWRXb3Jk
QnJlYWtJc0JlZm9yZVN1cnJvZ2F0ZVBhaXIgPyAyIDogMSwgZm9udCwgbV93aWR0aC5jb21taXR0
ZWRXaWR0aCgpICsgd3JhcFcsIGlzRml4ZWRQaXRjaCwgbV9jb2xsYXBzZVdoaXRlU3BhY2UsIGZh
bGxiYWNrRm9udHMsIHRleHRMYXlvdXQpOwpAQCAtODQ3LDggKzg0Nyw4IEBAIGlubGluZSBib29s
IEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dCgKICAgICAgICAgfQogCiAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVha2FibGVQb3NpdGlvbiA9IG1fY3VycmVudC5uZXh0
QnJlYWthYmxlUG9zaXRpb24oKTsKLSAgICAgICAgYm9vbCBiZXR3ZWVuV29yZHMgPSBjID09ICdc
bicgfHwgKG1fY3VycldTICE9IFBSRSAmJiAhbV9hdFN0YXJ0ICYmIGlzQnJlYWthYmxlKG1fcmVu
ZGVyVGV4dEluZm8ubGluZUJyZWFrSXRlcmF0b3IsIG1fY3VycmVudC5vZmZzZXQoKSwgbmV4dEJy
ZWFrYWJsZVBvc2l0aW9uLCBicmVha05CU1AsIGNhblVzZUxpbmVCcmVha1Nob3J0Y3V0LCBrZWVw
QWxsV29yZHMpCi0gICAgICAgICAgICAmJiAoc3R5bGUuaHlwaGVucygpICE9IEh5cGhlbnNOb25l
IHx8IChtX2N1cnJlbnQucHJldmlvdXNJblNhbWVOb2RlKCkgIT0gc29mdEh5cGhlbikpKTsKKyAg
ICAgICAgYm9vbCBiZXR3ZWVuV29yZHMgPSBjID09ICdcbicgfHwgKG1fY3VycldTICE9IFdoaXRl
U3BhY2U6OlByZSAmJiAhbV9hdFN0YXJ0ICYmIGlzQnJlYWthYmxlKG1fcmVuZGVyVGV4dEluZm8u
bGluZUJyZWFrSXRlcmF0b3IsIG1fY3VycmVudC5vZmZzZXQoKSwgbmV4dEJyZWFrYWJsZVBvc2l0
aW9uLCBicmVha05CU1AsIGNhblVzZUxpbmVCcmVha1Nob3J0Y3V0LCBrZWVwQWxsV29yZHMpCisg
ICAgICAgICAgICAmJiAoc3R5bGUuaHlwaGVucygpICE9IEh5cGhlbnM6Ok5vbmUgfHwgKG1fY3Vy
cmVudC5wcmV2aW91c0luU2FtZU5vZGUoKSAhPSBzb2Z0SHlwaGVuKSkpOwogICAgICAgICBtX2N1
cnJlbnQuc2V0TmV4dEJyZWFrYWJsZVBvc2l0aW9uKG5leHRCcmVha2FibGVQb3NpdGlvbik7CiAg
ICAgICAgIAogICAgICAgICBpZiAoY2FuSGFuZ1N0b3BPckNvbW1hQXRMaW5lRW5kICYmIHJlbmRl
clRleHQuaXNIYW5nYWJsZVN0b3BPckNvbW1hKGMpICYmIG1fd2lkdGguZml0c09uTGluZSgpKSB7
CkBAIC05NDcsNyArOTQ3LDcgQEAgaW5saW5lIGJvb2wgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVU
ZXh0KAogICAgICAgICAgICAgICAgICAgICAgICAgd29yZE1lYXN1cmVtZW50LmVuZE9mZnNldCA9
IG1fbGluZUJyZWFrSGlzdG9yeS5vZmZzZXQoKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgbGFzdCBicmVha2luZyBwb3NpdGlvbiBp
cyBhIHNvZnQtaHlwaGVuLgotICAgICAgICAgICAgICAgICAgICBpZiAoIWh5cGhlbmF0ZWQgJiYg
c3R5bGUuaHlwaGVucygpICE9IEh5cGhlbnNOb25lKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
ICghaHlwaGVuYXRlZCAmJiBzdHlsZS5oeXBoZW5zKCkgIT0gSHlwaGVuczo6Tm9uZSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbGFzdEJyZWFraW5n
UG9zaXRvbjsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogcmVu
ZGVyZXJBdEJyZWFraW5nUG9zaXRpb24gPSBudWxscHRyOwogICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKG1fbGluZUJyZWFrSGlzdG9yeS5vZmZzZXQoKSB8fCBtX2xpbmVCcmVha0hpc3Rvcnku
bmV4dEJyZWFrYWJsZVBvc2l0aW9uKCkpIHsKQEAgLTEwNzEsNyArMTA3MSw3IEBAIGlubGluZSBi
b29sIEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dCgKICAgICAgICAgICAgIC8vIFNwYWNlcyBh
ZnRlciByaWdodC1hbGlnbmVkIHRleHQgYW5kIGJlZm9yZSBhIGxpbmUtYnJlYWsgZ2V0IGNvbGxh
cHNlZCBhd2F5IGNvbXBsZXRlbHkgc28gdGhhdCB0aGUgdHJhaWxpbmcKICAgICAgICAgICAgIC8v
IHNwYWNlIGRvZXNuJ3Qgc2VlbSB0byBwdXNoIHRoZSB0ZXh0IG91dCBmcm9tIHRoZSByaWdodC1o
YW5kIGVkZ2UuCiAgICAgICAgICAgICAvLyBGSVhNRTogRG8gdGhpcyByZWdhcmRsZXNzIG9mIHRo
ZSBjb250YWluZXIncyBhbGlnbm1lbnQgLSB3aWxsIHJlcXVpcmUgcmViYXNlbGluaW5nIGEgbG90
IG9mIHRlc3QgcmVzdWx0cy4KLSAgICAgICAgICAgIGlmIChtX25leHRPYmplY3QgJiYgbV9zdGFy
dE9mSWdub3JlZFNwYWNlcy5vZmZzZXQoKSAmJiBtX25leHRPYmplY3QtPmlzQlIoKSAmJiAobV9i
bG9ja1N0eWxlLnRleHRBbGlnbigpID09IFJJR0hUIHx8IG1fYmxvY2tTdHlsZS50ZXh0QWxpZ24o
KSA9PSBXRUJLSVRfUklHSFQpKSB7CisgICAgICAgICAgICBpZiAobV9uZXh0T2JqZWN0ICYmIG1f
c3RhcnRPZklnbm9yZWRTcGFjZXMub2Zmc2V0KCkgJiYgbV9uZXh0T2JqZWN0LT5pc0JSKCkgJiYg
KG1fYmxvY2tTdHlsZS50ZXh0QWxpZ24oKSA9PSBUZXh0QWxpZ25Nb2RlOjpSaWdodCB8fCBtX2Js
b2NrU3R5bGUudGV4dEFsaWduKCkgPT0gVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQpKSB7CiAg
ICAgICAgICAgICAgICAgbV9zdGFydE9mSWdub3JlZFNwYWNlcy5zZXRPZmZzZXQobV9zdGFydE9m
SWdub3JlZFNwYWNlcy5vZmZzZXQoKSAtIDEpOwogICAgICAgICAgICAgICAgIC8vIElmIHRoZXJl
J3MganVzdCBhIHNpbmdsZSB0cmFpbGluZyBzcGFjZSBzdGFydCBpZ25vcmluZyBpdCBub3cgc28g
aXQgY29sbGFwc2VzIGF3YXkuCiAgICAgICAgICAgICAgICAgaWYgKG1fY3VycmVudC5vZmZzZXQo
KSA9PSByZW5kZXJUZXh0LnRleHQoKS5sZW5ndGgoKSAtIDEpCkBAIC0xMTMwLDcgKzExMzAsNyBA
QCBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQoCiAgICAgICAgICAgICB9
KTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghaHlwaGVuYXRlZCAmJiBtX2xpbmVCcmVha0hp
c3RvcnkucHJldmlvdXNJblNhbWVOb2RlKCkgPT0gc29mdEh5cGhlbiAmJiBzdHlsZS5oeXBoZW5z
KCkgIT0gSHlwaGVuc05vbmUpIHsKKyAgICAgICAgaWYgKCFoeXBoZW5hdGVkICYmIG1fbGluZUJy
ZWFrSGlzdG9yeS5wcmV2aW91c0luU2FtZU5vZGUoKSA9PSBzb2Z0SHlwaGVuICYmIHN0eWxlLmh5
cGhlbnMoKSAhPSBIeXBoZW5zOjpOb25lKSB7CiAgICAgICAgICAgICBoeXBoZW5hdGVkID0gdHJ1
ZTsKICAgICAgICAgICAgIG1fYXRFbmQgPSB0cnVlOwogICAgICAgICB9CkBAIC0xMTQ3LDcgKzEx
NDcsNyBAQCBpbmxpbmUgYm9vbCB0ZXh0QmVnaW5zV2l0aEJyZWFrYWJsZVBvc2l0CiBpbmxpbmUg
Ym9vbCBCcmVha2luZ0NvbnRleHQ6OmNhbkJyZWFrQXRUaGlzUG9zaXRpb24oKQogewogICAgIC8v
IElmIHdlIGFyZSBuby13cmFwIGFuZCBoYXZlIGZvdW5kIGEgbGluZS1icmVha2luZyBvcHBvcnR1
bml0eSBhbHJlYWR5IHRoZW4gd2Ugc2hvdWxkIHRha2UgaXQuCi0gICAgaWYgKG1fd2lkdGguY29t
bWl0dGVkV2lkdGgoKSAmJiAhbV93aWR0aC5maXRzT25MaW5lKG1fY3VycmVudENoYXJhY3Rlcklz
U3BhY2UpICYmIG1fY3VycldTID09IE5PV1JBUCkKKyAgICBpZiAobV93aWR0aC5jb21taXR0ZWRX
aWR0aCgpICYmICFtX3dpZHRoLmZpdHNPbkxpbmUobV9jdXJyZW50Q2hhcmFjdGVySXNTcGFjZSkg
JiYgbV9jdXJyV1MgPT0gV2hpdGVTcGFjZTo6Tm9XcmFwKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIC8vIEF2b2lkIGJyZWFraW5nIG9uIGVtcHR5IGlubGluZXMuCkBAIC0xMjU3LDcgKzEy
NTcsNyBAQCBpbmxpbmUgSW5saW5lSXRlcmF0b3IgQnJlYWtpbmdDb250ZXh0OjpoCiAgICAgaWYg
KG1fbGluZUJyZWFrSGlzdG9yeS5jdXJyZW50KCkgPT0gbV9yZXNvbHZlci5wb3NpdGlvbigpKSB7
CiAgICAgICAgIGlmICghbV9saW5lQnJlYWtIaXN0b3J5LnJlbmRlcmVyKCkgfHwgIW1fbGluZUJy
ZWFrSGlzdG9yeS5yZW5kZXJlcigpLT5pc0JSKCkpIHsKICAgICAgICAgICAgIC8vIHdlIGp1c3Qg
YWRkIGFzIG11Y2ggYXMgcG9zc2libGUKLSAgICAgICAgICAgIGlmIChtX2Jsb2NrU3R5bGUud2hp
dGVTcGFjZSgpID09IFBSRSAmJiAhbV9jdXJyZW50Lm9mZnNldCgpKSB7CisgICAgICAgICAgICBp
ZiAobV9ibG9ja1N0eWxlLndoaXRlU3BhY2UoKSA9PSBXaGl0ZVNwYWNlOjpQcmUgJiYgIW1fY3Vy
cmVudC5vZmZzZXQoKSkgewogICAgICAgICAgICAgICAgIGlmIChtX2xhc3RPYmplY3QpCiAgICAg
ICAgICAgICAgICAgICAgIGNvbW1pdExpbmVCcmVha0F0Q3VycmVudFdpZHRoKCptX2xhc3RPYmpl
Y3QsIG1fbGFzdE9iamVjdC0+aXNUZXh0KCkgPyBtX2xhc3RPYmplY3QtPmxlbmd0aCgpIDogMCk7
CiAgICAgICAgICAgICAgICAgZWxzZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xp
bmUvTGluZUlubGluZUhlYWRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbGluZS9MaW5lSW5saW5lSGVhZGVycy5oCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lSW5saW5lSGVhZGVycy5oCSh3b3JraW5nIGNv
cHkpCkBAIC02OCw3ICs2OCw3IEBAIGlubGluZSBib29sIHNob3VsZENvbGxhcHNlV2hpdGVTcGFj
ZShjb24KICAgICAvLyBJZiBhIHNwYWNlIChVKzAwMjApIGF0IHRoZSBlbmQgb2YgYSBsaW5lIGhh
cyAnd2hpdGUtc3BhY2UnIHNldCB0byAnbm9ybWFsJywgJ25vd3JhcCcsIG9yICdwcmUtbGluZScs
IGl0IGlzIGFsc28gcmVtb3ZlZC4KICAgICAvLyBJZiBzcGFjZXMgKFUrMDAyMCkgb3IgdGFicyAo
VSswMDA5KSBhdCB0aGUgZW5kIG9mIGEgbGluZSBoYXZlICd3aGl0ZS1zcGFjZScgc2V0IHRvICdw
cmUtd3JhcCcsIFVBcyBtYXkgdmlzdWFsbHkgY29sbGFwc2UgdGhlbS4KICAgICByZXR1cm4gc3R5
bGUtPmNvbGxhcHNlV2hpdGVTcGFjZSgpCi0gICAgICAgIHx8ICh3aGl0ZXNwYWNlUG9zaXRpb24g
PT0gVHJhaWxpbmdXaGl0ZXNwYWNlICYmIHN0eWxlLT53aGl0ZVNwYWNlKCkgPT0gUFJFX1dSQVAg
JiYgKCFsaW5lSW5mby5pc0VtcHR5KCkgfHwgIWxpbmVJbmZvLnByZXZpb3VzTGluZUJyb2tlQ2xl
YW5seSgpKSk7CisgICAgICAgIHx8ICh3aGl0ZXNwYWNlUG9zaXRpb24gPT0gVHJhaWxpbmdXaGl0
ZXNwYWNlICYmIHN0eWxlLT53aGl0ZVNwYWNlKCkgPT0gV2hpdGVTcGFjZTo6UHJlV3JhcCAmJiAo
IWxpbmVJbmZvLmlzRW1wdHkoKSB8fCAhbGluZUluZm8ucHJldmlvdXNMaW5lQnJva2VDbGVhbmx5
KCkpKTsKIH0KIAogaW5saW5lIGJvb2wgc2tpcE5vbkJyZWFraW5nU3BhY2UoY29uc3QgSW5saW5l
SXRlcmF0b3ImIGl0LCBjb25zdCBMaW5lSW5mbyYgbGluZUluZm8pCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbGluZS9MaW5lV2lkdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVXaWR0aC5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVXaWR0aC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGljIGJvb2wgbmV3RmxvYXRTaHJpbmtzTGluZShjb25z
dCBGbAogCiAgICAgLy8gaW5pdGlhbC1sZXR0ZXIgZmxvYXQgYWx3YXlzIHNocmlua3MgdGhlIGZp
cnN0IGxpbmUuCiAgICAgY29uc3QgYXV0byYgc3R5bGUgPSBuZXdGbG9hdC5yZW5kZXJlcigpLnN0
eWxlKCk7Ci0gICAgaWYgKGlzRmlyc3RMaW5lICYmIHN0eWxlLnN0eWxlVHlwZSgpID09IEZJUlNU
X0xFVFRFUiAmJiAhc3R5bGUuaW5pdGlhbExldHRlcigpLmlzRW1wdHkoKSkKKyAgICBpZiAoaXNG
aXJzdExpbmUgJiYgc3R5bGUuc3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6OkZpcnN0TGV0dGVyICYm
ICFzdHlsZS5pbml0aWFsTGV0dGVyKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICByZXR1cm4gZmFsc2U7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL01hdGhPcGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9NYXRoT3BlcmF0b3IuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhPcGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTcwOCw3ICs3MDgsNyBAQCB2b2lkIE1hdGhPcGVyYXRvcjo6cGFpbnRIb3Jpem9udGFsR2x5
cGhBCiAKIHZvaWQgTWF0aE9wZXJhdG9yOjpwYWludChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUs
IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewotICAg
IGlmIChpbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkgfHwgaW5mby5waGFzZSAhPSBQ
YWludFBoYXNlRm9yZWdyb3VuZCB8fCBzdHlsZS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAg
ICBpZiAoaW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpIHx8IGluZm8ucGhhc2UgIT0g
UGFpbnRQaGFzZUZvcmVncm91bmQgfHwgc3R5bGUudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6
OlZpc2libGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIE1ha2UgYSBjb3B5IG9mIHRoZSBQ
YWludEluZm8gYmVjYXVzZSBhcHBseVRyYW5zZm9ybSB3aWxsIG1vZGlmeSBpdHMgcmVjdC4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MRnJhY3Rpb24uY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjU1LDcgKzI1NSw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MRnJhY3Rpb246OnBhaW50KFBhaW50
SW4KIHsKICAgICBSZW5kZXJNYXRoTUxCbG9jazo6cGFpbnQoaW5mbywgcGFpbnRPZmZzZXQpOwog
ICAgIExheW91dFVuaXQgdGhpY2tuZXNzID0gbGluZVRoaWNrbmVzcygpOwotICAgIGlmIChpbmZv
LmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkgfHwgaW5mby5waGFzZSAhPSBQYWludFBoYXNl
Rm9yZWdyb3VuZCB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8ICFpc1ZhbGlk
KCkgfHwgIXRoaWNrbmVzcykKKyAgICBpZiAoaW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxl
ZCgpIHx8IGluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQgfHwgc3R5bGUoKS52aXNp
YmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSB8fCAhaXNWYWxpZCgpIHx8ICF0aGlja25l
c3MpCiAgICAgICAgIHJldHVybjsKIAogICAgIEludFBvaW50IGFkanVzdGVkUGFpbnRPZmZzZXQg
PSByb3VuZGVkSW50UG9pbnQocGFpbnRPZmZzZXQgKyBsb2NhdGlvbigpICsgTGF5b3V0UG9pbnQo
MCwgYXNjZW50T3Zlckhvcml6b250YWxBeGlzKCkpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNYXRoLmNwcAkocmV2aXNpb24g
MjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxN
YXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCB2b2lkIFJlbmRlck1hdGhN
TE1hdGg6OmxheW91dEJsb2NrKGJvb2wgCiB7CiAgICAgQVNTRVJUKG5lZWRzTGF5b3V0KCkpOwog
Ci0gICAgaWYgKHN0eWxlKCkuZGlzcGxheSgpICE9IEJMT0NLKSB7CisgICAgaWYgKHN0eWxlKCku
ZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpCbG9jaykgewogICAgICAgICBSZW5kZXJNYXRoTUxS
b3c6OmxheW91dEJsb2NrKHJlbGF5b3V0Q2hpbGRyZW4sIHBhZ2VMb2dpY2FsSGVpZ2h0KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwCShyZXZpc2lvbiAyMzIx
MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNs
b3NlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgUmVuZGVyTWF0
aE1MTWVuY2xvc2U6OnBhaW50KFBhaW50SW4KIHsKICAgICBSZW5kZXJNYXRoTUxSb3c6OnBhaW50
KGluZm8sIHBhaW50T2Zmc2V0KTsKIAotICAgIGlmIChpbmZvLmNvbnRleHQoKS5wYWludGluZ0Rp
c2FibGVkKCkgfHwgaW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBzdHlsZSgp
LnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChpbmZvLmNvbnRleHQoKS5wYWludGlu
Z0Rpc2FibGVkKCkgfHwgaW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBzdHls
ZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1cm47
CiAKICAgICBMYXlvdXRVbml0IHRoaWNrbmVzcyA9IHJ1bGVUaGlja25lc3MoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290
LmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxSb290LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY4LDcgKzI2OCw3IEBA
IHZvaWQgUmVuZGVyTWF0aE1MUm9vdDo6cGFpbnQoUGFpbnRJbmZvJiAKIHsKICAgICBSZW5kZXJN
YXRoTUxSb3c6OnBhaW50KGluZm8sIHBhaW50T2Zmc2V0KTsKIAotICAgIGlmICghZmlyc3RDaGls
ZCgpIHx8IGluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSB8fCBzdHlsZSgpLnZpc2li
aWxpdHkoKSAhPSBWSVNJQkxFIHx8ICFpc1ZhbGlkKCkpCisgICAgaWYgKCFmaXJzdENoaWxkKCkg
fHwgaW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpIHx8IHN0eWxlKCkudmlzaWJpbGl0
eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgfHwgIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgLy8gV2UgZHJhdyB0aGUgcmFkaWNhbCBvcGVyYXRvci4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3Bw
CShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFRva2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk0LDcgKzU5NCw3IEBAIHZv
aWQgUmVuZGVyTWF0aE1MVG9rZW46OnBhaW50KFBhaW50SW5mbyYKICAgICBSZW5kZXJNYXRoTUxC
bG9jazo6cGFpbnQoaW5mbywgcGFpbnRPZmZzZXQpOwogCiAgICAgLy8gRklYTUU6IEluc3RlYWQg
b2YgdXNpbmcgRHJhd0dseXBoLCB3ZSBtYXkgY29uc2lkZXIgdXNpbmcgdGhlIG1vcmUgZ2VuZXJh
bCBUZXh0UGFpbnRlciBzbyB0aGF0IHdlIGNhbiBhcHBseSBtYXRodmFyaWFudCB0byBzdHJpbmdz
IHdpdGggYW4gYXJiaXRyYXJ5IG51bWJlciBvZiBjaGFyYWN0ZXJzIGFuZCBwcmVzZXJ2ZSBhZHZh
bmNlZCBDU1MgZWZmZWN0cyAodGV4dC1zaGFkb3csIGV0YykuCi0gICAgaWYgKGluZm8uY29udGV4
dCgpLnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3Jv
dW5kIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgIW1fbWF0aFZhcmlhbnRD
b2RlUG9pbnQpCisgICAgaWYgKGluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSB8fCBp
bmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgp
ICE9IFZpc2liaWxpdHk6OlZpc2libGUgfHwgIW1fbWF0aFZhcmlhbnRDb2RlUG9pbnQpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGF1dG8gbWF0aFZhcmlhbnRHbHlwaCA9IHN0eWxlKCkuZm9udENh
c2NhZGUoKS5nbHlwaERhdGFGb3JDaGFyYWN0ZXIobV9tYXRoVmFyaWFudENvZGVQb2ludC52YWx1
ZSgpLCBtX21hdGhWYXJpYW50SXNNaXJyb3JlZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL0JveFNoYXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL0JveFNoYXBlLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY2LDcgKzY2LDcgQEAgUm91bmRlZFJlY3QgY29tcHV0ZVJvdW5kZWRSZWN0Rm9yQm94U2hhcAog
ewogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHJlbmRlcmVyLnN0eWxlKCk7CiAgICAg
c3dpdGNoIChib3gpIHsKLSAgICBjYXNlIE1hcmdpbkJveDogeworICAgIGNhc2UgQ1NTQm94VHlw
ZTo6TWFyZ2luQm94OiB7CiAgICAgICAgIGlmICghc3R5bGUuaGFzQm9yZGVyUmFkaXVzKCkpCiAg
ICAgICAgICAgICByZXR1cm4gUm91bmRlZFJlY3QocmVuZGVyZXIubWFyZ2luQm94UmVjdCgpLCBS
b3VuZGVkUmVjdDo6UmFkaWkoKSk7CiAKQEAgLTc1LDE4ICs3NSwxOCBAQCBSb3VuZGVkUmVjdCBj
b21wdXRlUm91bmRlZFJlY3RGb3JCb3hTaGFwCiAgICAgICAgIHJhZGlpLnNjYWxlKGNhbGNCb3Jk
ZXJSYWRpaUNvbnN0cmFpbnRTY2FsZUZvcihtYXJnaW5Cb3gsIHJhZGlpKSk7CiAgICAgICAgIHJl
dHVybiBSb3VuZGVkUmVjdChtYXJnaW5Cb3gsIHJhZGlpKTsKICAgICB9Ci0gICAgY2FzZSBQYWRk
aW5nQm94OgorICAgIGNhc2UgQ1NTQm94VHlwZTo6UGFkZGluZ0JveDoKICAgICAgICAgcmV0dXJu
IHN0eWxlLmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihyZW5kZXJlci5ib3JkZXJCb3hSZWN0KCkp
OwotICAgIGNhc2UgQ29udGVudEJveDoKKyAgICBjYXNlIENTU0JveFR5cGU6OkNvbnRlbnRCb3g6
CiAgICAgICAgIHJldHVybiBzdHlsZS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IocmVuZGVyZXIu
Ym9yZGVyQm94UmVjdCgpLAogICAgICAgICAgICAgcmVuZGVyZXIucGFkZGluZ1RvcCgpICsgcmVu
ZGVyZXIuYm9yZGVyVG9wKCksIHJlbmRlcmVyLnBhZGRpbmdCb3R0b20oKSArIHJlbmRlcmVyLmJv
cmRlckJvdHRvbSgpLAogICAgICAgICAgICAgcmVuZGVyZXIucGFkZGluZ0xlZnQoKSArIHJlbmRl
cmVyLmJvcmRlckxlZnQoKSwgcmVuZGVyZXIucGFkZGluZ1JpZ2h0KCkgKyByZW5kZXJlci5ib3Jk
ZXJSaWdodCgpKTsKICAgICAvLyBmaWxsLCBzdHJva2UsIHZpZXctYm94IGNvbXB1dGUgdG8gYm9y
ZGVyLWJveCBmb3IgSFRNTCBlbGVtZW50cy4KLSAgICBjYXNlIEJvcmRlckJveDoKLSAgICBjYXNl
IEZpbGw6Ci0gICAgY2FzZSBTdHJva2U6Ci0gICAgY2FzZSBWaWV3Qm94OgotICAgIGNhc2UgQm94
TWlzc2luZzoKKyAgICBjYXNlIENTU0JveFR5cGU6OkJvcmRlckJveDoKKyAgICBjYXNlIENTU0Jv
eFR5cGU6OkZpbGw6CisgICAgY2FzZSBDU1NCb3hUeXBlOjpTdHJva2U6CisgICAgY2FzZSBDU1NC
b3hUeXBlOjpWaWV3Qm94OgorICAgIGNhc2UgQ1NTQm94VHlwZTo6Qm94TWlzc2luZzoKICAgICAg
ICAgcmV0dXJuIHN0eWxlLmdldFJvdW5kZWRCb3JkZXJGb3IocmVuZGVyZXIuYm9yZGVyQm94UmVj
dCgpKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hh
cGVPdXRzaWRlSW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzIsMTAgKzcyLDEwIEBAIEZsb2F0U2l6ZSBTaGFwZU91dHNpZGVJbmZvOjpzaGFw
ZVRvUmVuZGUKIAogc3RhdGljIGlubGluZSBDU1NCb3hUeXBlIHJlZmVyZW5jZUJveChjb25zdCBT
aGFwZVZhbHVlJiBzaGFwZVZhbHVlKQogewotICAgIGlmIChzaGFwZVZhbHVlLmNzc0JveCgpID09
IEJveE1pc3NpbmcpIHsKKyAgICBpZiAoc2hhcGVWYWx1ZS5jc3NCb3goKSA9PSBDU1NCb3hUeXBl
OjpCb3hNaXNzaW5nKSB7CiAgICAgICAgIGlmIChzaGFwZVZhbHVlLnR5cGUoKSA9PSBTaGFwZVZh
bHVlOjpUeXBlOjpJbWFnZSkKLSAgICAgICAgICAgIHJldHVybiBDb250ZW50Qm94OwotICAgICAg
ICByZXR1cm4gTWFyZ2luQm94OworICAgICAgICAgICAgcmV0dXJuIENTU0JveFR5cGU6OkNvbnRl
bnRCb3g7CisgICAgICAgIHJldHVybiBDU1NCb3hUeXBlOjpNYXJnaW5Cb3g7CiAgICAgfQogICAg
IHJldHVybiBzaGFwZVZhbHVlLmNzc0JveCgpOwogfQpAQCAtODQsMzAgKzg0LDMwIEBAIHZvaWQg
U2hhcGVPdXRzaWRlSW5mbzo6c2V0UmVmZXJlbmNlQm94TG8KIHsKICAgICBib29sIGlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlID0gbV9yZW5kZXJlci5jb250YWluaW5nQmxvY2soKS0+c3R5bGUoKS5p
c0hvcml6b250YWxXcml0aW5nTW9kZSgpOwogICAgIHN3aXRjaCAocmVmZXJlbmNlQm94KCptX3Jl
bmRlcmVyLnN0eWxlKCkuc2hhcGVPdXRzaWRlKCkpKSB7Ci0gICAgY2FzZSBNYXJnaW5Cb3g6Cisg
ICAgY2FzZSBDU1NCb3hUeXBlOjpNYXJnaW5Cb3g6CiAgICAgICAgIGlmIChpc0hvcml6b250YWxX
cml0aW5nTW9kZSkKICAgICAgICAgICAgIG5ld1JlZmVyZW5jZUJveExvZ2ljYWxTaXplLmV4cGFu
ZChtX3JlbmRlcmVyLmhvcml6b250YWxNYXJnaW5FeHRlbnQoKSwgbV9yZW5kZXJlci52ZXJ0aWNh
bE1hcmdpbkV4dGVudCgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbmV3UmVmZXJlbmNl
Qm94TG9naWNhbFNpemUuZXhwYW5kKG1fcmVuZGVyZXIudmVydGljYWxNYXJnaW5FeHRlbnQoKSwg
bV9yZW5kZXJlci5ob3Jpem9udGFsTWFyZ2luRXh0ZW50KCkpOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEJvcmRlckJveDoKKyAgICBjYXNlIENTU0JveFR5cGU6OkJvcmRlckJveDoKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBQYWRkaW5nQm94OgorICAgIGNhc2UgQ1NTQm94VHlwZTo6UGFk
ZGluZ0JveDoKICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKQogICAgICAgICAg
ICAgbmV3UmVmZXJlbmNlQm94TG9naWNhbFNpemUuc2hyaW5rKG1fcmVuZGVyZXIuaG9yaXpvbnRh
bEJvcmRlckV4dGVudCgpLCBtX3JlbmRlcmVyLnZlcnRpY2FsQm9yZGVyRXh0ZW50KCkpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBuZXdSZWZlcmVuY2VCb3hMb2dpY2FsU2l6ZS5zaHJpbmso
bV9yZW5kZXJlci52ZXJ0aWNhbEJvcmRlckV4dGVudCgpLCBtX3JlbmRlcmVyLmhvcml6b250YWxC
b3JkZXJFeHRlbnQoKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ29udGVudEJveDoKKyAg
ICBjYXNlIENTU0JveFR5cGU6OkNvbnRlbnRCb3g6CiAgICAgICAgIGlmIChpc0hvcml6b250YWxX
cml0aW5nTW9kZSkKICAgICAgICAgICAgIG5ld1JlZmVyZW5jZUJveExvZ2ljYWxTaXplLnNocmlu
ayhtX3JlbmRlcmVyLmhvcml6b250YWxCb3JkZXJBbmRQYWRkaW5nRXh0ZW50KCksIG1fcmVuZGVy
ZXIudmVydGljYWxCb3JkZXJBbmRQYWRkaW5nRXh0ZW50KCkpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBuZXdSZWZlcmVuY2VCb3hMb2dpY2FsU2l6ZS5zaHJpbmsobV9yZW5kZXJlci52ZXJ0
aWNhbEJvcmRlckFuZFBhZGRpbmdFeHRlbnQoKSwgbV9yZW5kZXJlci5ob3Jpem9udGFsQm9yZGVy
QW5kUGFkZGluZ0V4dGVudCgpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGaWxsOgotICAg
IGNhc2UgU3Ryb2tlOgotICAgIGNhc2UgVmlld0JveDoKLSAgICBjYXNlIEJveE1pc3Npbmc6Cisg
ICAgY2FzZSBDU1NCb3hUeXBlOjpGaWxsOgorICAgIGNhc2UgQ1NTQm94VHlwZTo6U3Ryb2tlOgor
ICAgIGNhc2UgQ1NTQm94VHlwZTo6Vmlld0JveDoKKyAgICBjYXNlIENTU0JveFR5cGU6OkJveE1p
c3Npbmc6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICAg
ICB9CkBAIC0yMjQsMTQgKzIyNCwyMiBAQCBzdGF0aWMgaW5saW5lIExheW91dFVuaXQgYm9yZGVy
QW5kUGFkZGluCiBMYXlvdXRVbml0IFNoYXBlT3V0c2lkZUluZm86OmxvZ2ljYWxUb3BPZmZzZXQo
KSBjb25zdAogewogICAgIHN3aXRjaCAocmVmZXJlbmNlQm94KCptX3JlbmRlcmVyLnN0eWxlKCku
c2hhcGVPdXRzaWRlKCkpKSB7Ci0gICAgY2FzZSBNYXJnaW5Cb3g6IHJldHVybiAtbV9yZW5kZXJl
ci5tYXJnaW5CZWZvcmUoJm1fcmVuZGVyZXIuY29udGFpbmluZ0Jsb2NrKCktPnN0eWxlKCkpOwot
ICAgIGNhc2UgQm9yZGVyQm94OiByZXR1cm4gTGF5b3V0VW5pdCgpOwotICAgIGNhc2UgUGFkZGlu
Z0JveDogcmV0dXJuIGJvcmRlckJlZm9yZUluV3JpdGluZ01vZGUobV9yZW5kZXJlciwgbV9yZW5k
ZXJlci5jb250YWluaW5nQmxvY2soKS0+c3R5bGUoKS53cml0aW5nTW9kZSgpKTsKLSAgICBjYXNl
IENvbnRlbnRCb3g6IHJldHVybiBib3JkZXJBbmRQYWRkaW5nQmVmb3JlSW5Xcml0aW5nTW9kZSht
X3JlbmRlcmVyLCBtX3JlbmRlcmVyLmNvbnRhaW5pbmdCbG9jaygpLT5zdHlsZSgpLndyaXRpbmdN
b2RlKCkpOwotICAgIGNhc2UgRmlsbDogYnJlYWs7Ci0gICAgY2FzZSBTdHJva2U6IGJyZWFrOwot
ICAgIGNhc2UgVmlld0JveDogYnJlYWs7Ci0gICAgY2FzZSBCb3hNaXNzaW5nOiBicmVhazsKKyAg
ICBjYXNlIENTU0JveFR5cGU6Ok1hcmdpbkJveDoKKyAgICAgICAgcmV0dXJuIC1tX3JlbmRlcmVy
Lm1hcmdpbkJlZm9yZSgmbV9yZW5kZXJlci5jb250YWluaW5nQmxvY2soKS0+c3R5bGUoKSk7Cisg
ICAgY2FzZSBDU1NCb3hUeXBlOjpCb3JkZXJCb3g6CisgICAgICAgIHJldHVybiBMYXlvdXRVbml0
KCk7CisgICAgY2FzZSBDU1NCb3hUeXBlOjpQYWRkaW5nQm94OgorICAgICAgICByZXR1cm4gYm9y
ZGVyQmVmb3JlSW5Xcml0aW5nTW9kZShtX3JlbmRlcmVyLCBtX3JlbmRlcmVyLmNvbnRhaW5pbmdC
bG9jaygpLT5zdHlsZSgpLndyaXRpbmdNb2RlKCkpOworICAgIGNhc2UgQ1NTQm94VHlwZTo6Q29u
dGVudEJveDoKKyAgICAgICAgcmV0dXJuIGJvcmRlckFuZFBhZGRpbmdCZWZvcmVJbldyaXRpbmdN
b2RlKG1fcmVuZGVyZXIsIG1fcmVuZGVyZXIuY29udGFpbmluZ0Jsb2NrKCktPnN0eWxlKCkud3Jp
dGluZ01vZGUoKSk7CisgICAgY2FzZSBDU1NCb3hUeXBlOjpGaWxsOgorICAgICAgICBicmVhazsK
KyAgICBjYXNlIENTU0JveFR5cGU6OlN0cm9rZToKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
U1NCb3hUeXBlOjpWaWV3Qm94OgorICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU0JveFR5cGU6
OkJveE1pc3Npbmc6CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKQEAgLTI3MiwxNCArMjgwLDIyIEBAIExheW91dFVuaXQgU2hhcGVPdXRzaWRl
SW5mbzo6bG9naWNhbExlZnQKICAgICAgICAgcmV0dXJuIExheW91dFVuaXQoKTsKICAgICAKICAg
ICBzd2l0Y2ggKHJlZmVyZW5jZUJveCgqbV9yZW5kZXJlci5zdHlsZSgpLnNoYXBlT3V0c2lkZSgp
KSkgewotICAgIGNhc2UgTWFyZ2luQm94OiByZXR1cm4gLW1fcmVuZGVyZXIubWFyZ2luU3RhcnQo
Jm1fcmVuZGVyZXIuY29udGFpbmluZ0Jsb2NrKCktPnN0eWxlKCkpOwotICAgIGNhc2UgQm9yZGVy
Qm94OiByZXR1cm4gTGF5b3V0VW5pdCgpOwotICAgIGNhc2UgUGFkZGluZ0JveDogcmV0dXJuIGJv
cmRlclN0YXJ0V2l0aFN0eWxlRm9yV3JpdGluZ01vZGUobV9yZW5kZXJlciwgbV9yZW5kZXJlci5j
b250YWluaW5nQmxvY2soKS0+c3R5bGUoKSk7Ci0gICAgY2FzZSBDb250ZW50Qm94OiByZXR1cm4g
Ym9yZGVyQW5kUGFkZGluZ1N0YXJ0V2l0aFN0eWxlRm9yV3JpdGluZ01vZGUobV9yZW5kZXJlciwg
bV9yZW5kZXJlci5jb250YWluaW5nQmxvY2soKS0+c3R5bGUoKSk7Ci0gICAgY2FzZSBGaWxsOiBi
cmVhazsKLSAgICBjYXNlIFN0cm9rZTogYnJlYWs7Ci0gICAgY2FzZSBWaWV3Qm94OiBicmVhazsK
LSAgICBjYXNlIEJveE1pc3Npbmc6IGJyZWFrOworICAgIGNhc2UgQ1NTQm94VHlwZTo6TWFyZ2lu
Qm94OgorICAgICAgICByZXR1cm4gLW1fcmVuZGVyZXIubWFyZ2luU3RhcnQoJm1fcmVuZGVyZXIu
Y29udGFpbmluZ0Jsb2NrKCktPnN0eWxlKCkpOworICAgIGNhc2UgQ1NTQm94VHlwZTo6Qm9yZGVy
Qm94OgorICAgICAgICByZXR1cm4gTGF5b3V0VW5pdCgpOworICAgIGNhc2UgQ1NTQm94VHlwZTo6
UGFkZGluZ0JveDoKKyAgICAgICAgcmV0dXJuIGJvcmRlclN0YXJ0V2l0aFN0eWxlRm9yV3JpdGlu
Z01vZGUobV9yZW5kZXJlciwgbV9yZW5kZXJlci5jb250YWluaW5nQmxvY2soKS0+c3R5bGUoKSk7
CisgICAgY2FzZSBDU1NCb3hUeXBlOjpDb250ZW50Qm94OgorICAgICAgICByZXR1cm4gYm9yZGVy
QW5kUGFkZGluZ1N0YXJ0V2l0aFN0eWxlRm9yV3JpdGluZ01vZGUobV9yZW5kZXJlciwgbV9yZW5k
ZXJlci5jb250YWluaW5nQmxvY2soKS0+c3R5bGUoKSk7CisgICAgY2FzZSBDU1NCb3hUeXBlOjpG
aWxsOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU0JveFR5cGU6OlN0cm9rZToKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBDU1NCb3hUeXBlOjpWaWV3Qm94OgorICAgICAgICBicmVhazsK
KyAgICBjYXNlIENTU0JveFR5cGU6OkJveE1pc3Npbmc6CisgICAgICAgIGJyZWFrOwogICAgIH0K
IAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0NvdW50ZXJDb250ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJDb250ZW50LmgJKHJldmlzaW9uIDIzMjEyMykKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db3VudGVyQ29udGVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvdW50ZXJD
b250ZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBDb3Vu
dGVyQ29udGVudChjb25zdCBBdG9taWNTdHJpbmcmIGlkZW50aWZpZXIsIEVMaXN0U3R5bGVUeXBl
IHN0eWxlLCBjb25zdCBBdG9taWNTdHJpbmcmIHNlcGFyYXRvcikKKyAgICBDb3VudGVyQ29udGVu
dChjb25zdCBBdG9taWNTdHJpbmcmIGlkZW50aWZpZXIsIExpc3RTdHlsZVR5cGUgc3R5bGUsIGNv
bnN0IEF0b21pY1N0cmluZyYgc2VwYXJhdG9yKQogICAgICAgICA6IG1faWRlbnRpZmllcihpZGVu
dGlmaWVyKQogICAgICAgICAsIG1fbGlzdFN0eWxlKHN0eWxlKQogICAgICAgICAsIG1fc2VwYXJh
dG9yKHNlcGFyYXRvcikKQEAgLTQwLDEyICs0MCwxMiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlm
aWVyOyB9Ci0gICAgRUxpc3RTdHlsZVR5cGUgbGlzdFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9s
aXN0U3R5bGU7IH0KKyAgICBMaXN0U3R5bGVUeXBlIGxpc3RTdHlsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbGlzdFN0eWxlOyB9CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzZXBhcmF0b3IoKSBjb25z
dCB7IHJldHVybiBtX3NlcGFyYXRvcjsgfQogCiBwcml2YXRlOgogICAgIEF0b21pY1N0cmluZyBt
X2lkZW50aWZpZXI7Ci0gICAgRUxpc3RTdHlsZVR5cGUgbV9saXN0U3R5bGU7CisgICAgTGlzdFN0
eWxlVHlwZSBtX2xpc3RTdHlsZTsKICAgICBBdG9taWNTdHJpbmcgbV9zZXBhcmF0b3I7CiB9Owog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5j
cHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRlclN0eWxlCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UmVuZGVyU3R5bGU+KHN0eWxlLCBDbG9uZSk7CiB9CiAKLVJlbmRlclN0eWxlIFJlbmRl
clN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KGNvbnN0IFJlbmRlclN0eWxl
JiBwYXJlbnRTdHlsZSwgRURpc3BsYXkgZGlzcGxheSkKK1JlbmRlclN0eWxlIFJlbmRlclN0eWxl
OjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KGNvbnN0IFJlbmRlclN0eWxlJiBwYXJl
bnRTdHlsZSwgRGlzcGxheVR5cGUgZGlzcGxheSkKIHsKICAgICBhdXRvIG5ld1N0eWxlID0gY3Jl
YXRlKCk7CiAgICAgbmV3U3R5bGUuaW5oZXJpdEZyb20ocGFyZW50U3R5bGUpOwpAQCAtMTIwLDcg
KzEyMCw3IEBAIFJlbmRlclN0eWxlIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXMKIAogUmVu
ZGVyU3R5bGUgUmVuZGVyU3R5bGU6OmNyZWF0ZVN0eWxlSW5oZXJpdGluZ0Zyb21Qc2V1ZG9TdHls
ZShjb25zdCBSZW5kZXJTdHlsZSYgcHNldWRvU3R5bGUpCiB7Ci0gICAgQVNTRVJUKHBzZXVkb1N0
eWxlLnN0eWxlVHlwZSgpID09IEJFRk9SRSB8fCBwc2V1ZG9TdHlsZS5zdHlsZVR5cGUoKSA9PSBB
RlRFUik7CisgICAgQVNTRVJUKHBzZXVkb1N0eWxlLnN0eWxlVHlwZSgpID09IFBzZXVkb0lkOjpC
ZWZvcmUgfHwgcHNldWRvU3R5bGUuc3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6OkFmdGVyKTsKIAog
ICAgIGF1dG8gc3R5bGUgPSBjcmVhdGUoKTsKICAgICBzdHlsZS5pbmhlcml0RnJvbShwc2V1ZG9T
dHlsZSk7CkBAIC0xNDAsMzEgKzE0MCwzMSBAQCBSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoQ3Jl
YXRlRGVmYXVsdFN0CiAgICAgLCBtX2luaGVyaXRlZERhdGEoU3R5bGVJbmhlcml0ZWREYXRhOjpj
cmVhdGUoKSkKICAgICAsIG1fc3ZnU3R5bGUoU1ZHUmVuZGVyU3R5bGU6OmNyZWF0ZSgpKQogewot
ICAgIG1faW5oZXJpdGVkRmxhZ3MuZW1wdHlDZWxscyA9IGluaXRpYWxFbXB0eUNlbGxzKCk7Ci0g
ICAgbV9pbmhlcml0ZWRGbGFncy5jYXB0aW9uU2lkZSA9IGluaXRpYWxDYXB0aW9uU2lkZSgpOwot
ICAgIG1faW5oZXJpdGVkRmxhZ3MubGlzdFN0eWxlVHlwZSA9IGluaXRpYWxMaXN0U3R5bGVUeXBl
KCk7Ci0gICAgbV9pbmhlcml0ZWRGbGFncy5saXN0U3R5bGVQb3NpdGlvbiA9IGluaXRpYWxMaXN0
U3R5bGVQb3NpdGlvbigpOwotICAgIG1faW5oZXJpdGVkRmxhZ3MudmlzaWJpbGl0eSA9IGluaXRp
YWxWaXNpYmlsaXR5KCk7Ci0gICAgbV9pbmhlcml0ZWRGbGFncy50ZXh0QWxpZ24gPSBpbml0aWFs
VGV4dEFsaWduKCk7Ci0gICAgbV9pbmhlcml0ZWRGbGFncy50ZXh0VHJhbnNmb3JtID0gaW5pdGlh
bFRleHRUcmFuc2Zvcm0oKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmVtcHR5Q2VsbHMgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbEVtcHR5Q2VsbHMoKSk7CisgICAgbV9pbmhlcml0ZWRG
bGFncy5jYXB0aW9uU2lkZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsQ2FwdGlvblNp
ZGUoKSk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5saXN0U3R5bGVUeXBlID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGluaXRpYWxMaXN0U3R5bGVUeXBlKCkpOworICAgIG1faW5oZXJpdGVkRmxhZ3Mu
bGlzdFN0eWxlUG9zaXRpb24gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbExpc3RTdHls
ZVBvc2l0aW9uKCkpOworICAgIG1faW5oZXJpdGVkRmxhZ3MudmlzaWJpbGl0eSA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihpbml0aWFsVmlzaWJpbGl0eSgpKTsKKyAgICBtX2luaGVyaXRlZEZsYWdz
LnRleHRBbGlnbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsVGV4dEFsaWduKCkpOwor
ICAgIG1faW5oZXJpdGVkRmxhZ3MudGV4dFRyYW5zZm9ybSA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
Pihpbml0aWFsVGV4dFRyYW5zZm9ybSgpKTsKICAgICBtX2luaGVyaXRlZEZsYWdzLnRleHREZWNv
cmF0aW9ucyA9IGluaXRpYWxUZXh0RGVjb3JhdGlvbigpOwotICAgIG1faW5oZXJpdGVkRmxhZ3Mu
Y3Vyc29yID0gaW5pdGlhbEN1cnNvcigpOworICAgIG1faW5oZXJpdGVkRmxhZ3MuY3Vyc29yID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxDdXJzb3IoKSk7CiAjaWYgRU5BQkxFKENVUlNP
Ul9WSVNJQklMSVRZKQotICAgIG1faW5oZXJpdGVkRmxhZ3MuY3Vyc29yVmlzaWJpbGl0eSA9IGlu
aXRpYWxDdXJzb3JWaXNpYmlsaXR5KCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5jdXJzb3JWaXNp
YmlsaXR5ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxDdXJzb3JWaXNpYmlsaXR5KCkp
OwogI2VuZGlmCiAgICAgbV9pbmhlcml0ZWRGbGFncy5kaXJlY3Rpb24gPSBpbml0aWFsRGlyZWN0
aW9uKCk7Ci0gICAgbV9pbmhlcml0ZWRGbGFncy53aGl0ZVNwYWNlID0gaW5pdGlhbFdoaXRlU3Bh
Y2UoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLndoaXRlU3BhY2UgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oaW5pdGlhbFdoaXRlU3BhY2UoKSk7CiAgICAgbV9pbmhlcml0ZWRGbGFncy5ib3JkZXJD
b2xsYXBzZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsQm9yZGVyQ29sbGFwc2UoKSk7
Ci0gICAgbV9pbmhlcml0ZWRGbGFncy5ydGxPcmRlcmluZyA9IGluaXRpYWxSVExPcmRlcmluZygp
OworICAgIG1faW5oZXJpdGVkRmxhZ3MucnRsT3JkZXJpbmcgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oaW5pdGlhbFJUTE9yZGVyaW5nKCkpOwogICAgIG1faW5oZXJpdGVkRmxhZ3MuYm94RGlyZWN0
aW9uID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxCb3hEaXJlY3Rpb24oKSk7CiAgICAg
bV9pbmhlcml0ZWRGbGFncy5wcmludENvbG9yQWRqdXN0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGluaXRpYWxQcmludENvbG9yQWRqdXN0KCkpOwotICAgIG1faW5oZXJpdGVkRmxhZ3MucG9pbnRl
ckV2ZW50cyA9IGluaXRpYWxQb2ludGVyRXZlbnRzKCk7Ci0gICAgbV9pbmhlcml0ZWRGbGFncy5p
bnNpZGVMaW5rID0gTm90SW5zaWRlTGluazsKKyAgICBtX2luaGVyaXRlZEZsYWdzLnBvaW50ZXJF
dmVudHMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbFBvaW50ZXJFdmVudHMoKSk7Cisg
ICAgbV9pbmhlcml0ZWRGbGFncy5pbnNpZGVMaW5rID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KElu
c2lkZUxpbms6Ok5vdEluc2lkZSk7CiAgICAgbV9pbmhlcml0ZWRGbGFncy5pbnNpZGVEZWZhdWx0
QnV0dG9uID0gZmFsc2U7CiAgICAgbV9pbmhlcml0ZWRGbGFncy53cml0aW5nTW9kZSA9IGluaXRp
YWxXcml0aW5nTW9kZSgpOwogCi0gICAgbV9ub25Jbmhlcml0ZWRGbGFncy5lZmZlY3RpdmVEaXNw
bGF5ID0gaW5pdGlhbERpc3BsYXkoKTsKLSAgICBtX25vbkluaGVyaXRlZEZsYWdzLm9yaWdpbmFs
RGlzcGxheSA9IGluaXRpYWxEaXNwbGF5KCk7CisgICAgbV9ub25Jbmhlcml0ZWRGbGFncy5lZmZl
Y3RpdmVEaXNwbGF5ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxEaXNwbGF5KCkpOwor
ICAgIG1fbm9uSW5oZXJpdGVkRmxhZ3Mub3JpZ2luYWxEaXNwbGF5ID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGluaXRpYWxEaXNwbGF5KCkpOwogICAgIG1fbm9uSW5oZXJpdGVkRmxhZ3Mub3ZlcmZs
b3dYID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxPdmVyZmxvd1goKSk7CiAgICAgbV9u
b25Jbmhlcml0ZWRGbGFncy5vdmVyZmxvd1kgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlh
bE92ZXJmbG93WSgpKTsKICAgICBtX25vbkluaGVyaXRlZEZsYWdzLnZlcnRpY2FsQWxpZ24gPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbFZlcnRpY2FsQWxpZ24oKSk7CkBAIC0xODYsOCAr
MTg2LDggQEAgUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKENyZWF0ZURlZmF1bHRTdAogICAgIG1f
bm9uSW5oZXJpdGVkRmxhZ3MuYWZmZWN0ZWRCeUFjdGl2ZSA9IGZhbHNlOwogICAgIG1fbm9uSW5o
ZXJpdGVkRmxhZ3MuYWZmZWN0ZWRCeURyYWcgPSBmYWxzZTsKICAgICBtX25vbkluaGVyaXRlZEZs
YWdzLmlzTGluayA9IGZhbHNlOwotICAgIG1fbm9uSW5oZXJpdGVkRmxhZ3Muc3R5bGVUeXBlID0g
Tk9QU0VVRE87Ci0gICAgbV9ub25Jbmhlcml0ZWRGbGFncy5wc2V1ZG9CaXRzID0gTk9QU0VVRE87
CisgICAgbV9ub25Jbmhlcml0ZWRGbGFncy5zdHlsZVR5cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHNldWRvSWQ6Ok5vbmUpOworICAgIG1fbm9uSW5oZXJpdGVkRmxhZ3MucHNldWRvQml0cyA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQc2V1ZG9JZDo6Tm9uZSk7CiAKICAgICBzdGF0aWNfYXNz
ZXJ0KChzaXplb2YoSW5oZXJpdGVkRmxhZ3MpIDw9IDgpLCAiSW5oZXJpdGVkRmxhZ3MgZG9lcyBu
b3QgZ3JvdyIpOwogICAgIHN0YXRpY19hc3NlcnQoKHNpemVvZihOb25Jbmhlcml0ZWRGbGFncykg
PD0gOCksICJOb25Jbmhlcml0ZWRGbGFncyBkb2VzIG5vdCBncm93Iik7CkBAIC0zNjYsNyArMzY2
LDcgQEAgYm9vbCBSZW5kZXJTdHlsZTo6b3BlcmF0b3I9PShjb25zdCBSZW5kZQogCiBib29sIFJl
bmRlclN0eWxlOjpoYXNVbmlxdWVQc2V1ZG9TdHlsZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2Nh
Y2hlZFBzZXVkb1N0eWxlcyB8fCBzdHlsZVR5cGUoKSAhPSBOT1BTRVVETykKKyAgICBpZiAoIW1f
Y2FjaGVkUHNldWRvU3R5bGVzIHx8IHN0eWxlVHlwZSgpICE9IFBzZXVkb0lkOjpOb25lKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBmb3IgKGF1dG8mIHBzZXVkb1N0eWxlIDogKm1fY2Fj
aGVkUHNldWRvU3R5bGVzKSB7CkBAIC0zODIsNyArMzgyLDcgQEAgUmVuZGVyU3R5bGUqIFJlbmRl
clN0eWxlOjpnZXRDYWNoZWRQc2V1ZAogICAgIGlmICghbV9jYWNoZWRQc2V1ZG9TdHlsZXMgfHwg
IW1fY2FjaGVkUHNldWRvU3R5bGVzLT5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgaWYgKHN0eWxlVHlwZSgpICE9IE5PUFNFVURPKSAKKyAgICBpZiAoc3R5bGVUeXBlKCkg
IT0gUHNldWRvSWQ6Ok5vbmUpIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGZvciAo
YXV0byYgcHNldWRvU3R5bGUgOiAqbV9jYWNoZWRQc2V1ZG9TdHlsZXMpIHsKQEAgLTM5OCw3ICsz
OTgsNyBAQCBSZW5kZXJTdHlsZSogUmVuZGVyU3R5bGU6OmFkZENhY2hlZFBzZXVkCiAgICAgaWYg
KCFwc2V1ZG8pCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgQVNTRVJUKHBzZXVkby0+
c3R5bGVUeXBlKCkgPiBOT1BTRVVETyk7CisgICAgQVNTRVJUKHBzZXVkby0+c3R5bGVUeXBlKCkg
PiBQc2V1ZG9JZDo6Tm9uZSk7CiAKICAgICBSZW5kZXJTdHlsZSogcmVzdWx0ID0gcHNldWRvLmdl
dCgpOwogCkBAIC03MDYsNyArNzA2LDcgQEAgYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWly
ZXNMYXlvdXQoYwogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogCi0gICAgaWYgKG1fbm9uSW5oZXJp
dGVkRmxhZ3MuZWZmZWN0aXZlRGlzcGxheSA+PSBUQUJMRSkgeworICAgIGlmIChzdGF0aWNfY2Fz
dDxEaXNwbGF5VHlwZT4obV9ub25Jbmhlcml0ZWRGbGFncy5lZmZlY3RpdmVEaXNwbGF5KSA+PSBE
aXNwbGF5VHlwZTo6VGFibGUpIHsKICAgICAgICAgaWYgKG1faW5oZXJpdGVkRmxhZ3MuYm9yZGVy
Q29sbGFwc2UgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy5ib3JkZXJDb2xsYXBzZQogICAgICAg
ICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncy5lbXB0eUNlbGxzICE9IG90aGVyLm1faW5oZXJpdGVk
RmxhZ3MuZW1wdHlDZWxscwogICAgICAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncy5jYXB0aW9u
U2lkZSAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLmNhcHRpb25TaWRlCkBAIC03MjcsNyArNzI3
LDcgQEAgYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNMYXlvdXQoYwogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaWYgKG1fbm9uSW5oZXJpdGVkRmxhZ3MuZWZm
ZWN0aXZlRGlzcGxheSA9PSBMSVNUX0lURU0pIHsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8RGlzcGxh
eVR5cGU+KG1fbm9uSW5oZXJpdGVkRmxhZ3MuZWZmZWN0aXZlRGlzcGxheSkgPT0gRGlzcGxheVR5
cGU6Okxpc3RJdGVtKSB7CiAgICAgICAgIGlmIChtX2luaGVyaXRlZEZsYWdzLmxpc3RTdHlsZVR5
cGUgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy5saXN0U3R5bGVUeXBlCiAgICAgICAgICAgICB8
fCBtX2luaGVyaXRlZEZsYWdzLmxpc3RTdHlsZVBvc2l0aW9uICE9IG90aGVyLm1faW5oZXJpdGVk
RmxhZ3MubGlzdFN0eWxlUG9zaXRpb24pCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTc3
Miw3ICs3NzIsNyBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheW91dChjCiAg
ICAgaWYgKCFhcmVQb2ludGluZ1RvRXF1YWxEYXRhKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmNv
dW50ZXJEaXJlY3RpdmVzLCBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5jb3VudGVyRGly
ZWN0aXZlcykpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKCh2aXNpYmlsaXR5KCkg
PT0gQ09MTEFQU0UpICE9IChvdGhlci52aXNpYmlsaXR5KCkgPT0gQ09MTEFQU0UpKQorICAgIGlm
ICgodmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OkNvbGxhcHNlKSAhPSAob3RoZXIudmlzaWJp
bGl0eSgpID09IFZpc2liaWxpdHk6OkNvbGxhcHNlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+aGFzT3BhY2l0eSgpICE9IG90aGVyLm1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPmhhc09wYWNpdHkoKSkgewpAQCAtODA5LDE0ICs4MDksMTQg
QEAgYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNMYXlvdXQoYwogICAgICAgICB9CiAg
ICAgfQogCi0gICAgYm9vbCBoYXNGaXJzdExpbmVTdHlsZSA9IGhhc1BzZXVkb1N0eWxlKEZJUlNU
X0xJTkUpOwotICAgIGlmIChoYXNGaXJzdExpbmVTdHlsZSAhPSBvdGhlci5oYXNQc2V1ZG9TdHls
ZShGSVJTVF9MSU5FKSkKKyAgICBib29sIGhhc0ZpcnN0TGluZVN0eWxlID0gaGFzUHNldWRvU3R5
bGUoUHNldWRvSWQ6OkZpcnN0TGluZSk7CisgICAgaWYgKGhhc0ZpcnN0TGluZVN0eWxlICE9IG90
aGVyLmhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkOjpGaXJzdExpbmUpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICBpZiAoaGFzRmlyc3RMaW5lU3R5bGUpIHsKLSAgICAgICAgYXV0byogZmlyc3RM
aW5lU3R5bGUgPSBnZXRDYWNoZWRQc2V1ZG9TdHlsZShGSVJTVF9MSU5FKTsKKyAgICAgICAgYXV0
byogZmlyc3RMaW5lU3R5bGUgPSBnZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RM
aW5lKTsKICAgICAgICAgaWYgKCFmaXJzdExpbmVTdHlsZSkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICBhdXRvKiBvdGhlckZpcnN0TGluZVN0eWxlID0gb3RoZXIuZ2V0Q2FjaGVk
UHNldWRvU3R5bGUoRklSU1RfTElORSk7CisgICAgICAgIGF1dG8qIG90aGVyRmlyc3RMaW5lU3R5
bGUgPSBvdGhlci5nZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKTsKICAg
ICAgICAgaWYgKCFvdGhlckZpcnN0TGluZVN0eWxlKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIC8vIEZJWE1FOiBOb3QgYWxsIGZpcnN0IGxpbmUgc3R5bGUgY2hhbmdlcyBhY3R1
YWxseSBuZWVkIGxheW91dC4KQEAgLTg4NSw3ICs4ODUsNyBAQCBib29sIFJlbmRlclN0eWxlOjpj
aGFuZ2VSZXF1aXJlc0xheWVyUmVwCiAKIHN0YXRpYyBib29sIHJlcXVpcmVzUGFpbnRpbmcoY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewotICAgIGlmIChzdHlsZS52aXNpYmlsaXR5KCkgPT0g
SElEREVOKQorICAgIGlmIChzdHlsZS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6SGlkZGVu
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFzdHlsZS5vcGFjaXR5KCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTEzNDksNyArMTM0OSw3IEBAIENvdW50ZXJEaXJlY3RpdmVN
YXAmIFJlbmRlclN0eWxlOjphY2Nlc3MKIAogY29uc3QgQXRvbWljU3RyaW5nJiBSZW5kZXJTdHls
ZTo6aHlwaGVuU3RyaW5nKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoaHlwaGVucygpICE9IEh5cGhl
bnNOb25lKTsKKyAgICBBU1NFUlQoaHlwaGVucygpICE9IEh5cGhlbnM6Ok5vbmUpOwogCiAgICAg
YXV0byYgaHlwaGVuYXRpb25TdHJpbmcgPSBtX3JhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlv
blN0cmluZzsKICAgICBpZiAoIWh5cGhlbmF0aW9uU3RyaW5nLmlzTnVsbCgpKQpAQCAtMTM2NCwz
NiArMTM2NCwzNiBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFJlbmRlclN0eWxlOjpoeXBoZW5TCiBj
b25zdCBBdG9taWNTdHJpbmcmIFJlbmRlclN0eWxlOjp0ZXh0RW1waGFzaXNNYXJrU3RyaW5nKCkg
Y29uc3QKIHsKICAgICBzd2l0Y2ggKHRleHRFbXBoYXNpc01hcmsoKSkgewotICAgIGNhc2UgVGV4
dEVtcGhhc2lzTWFya05vbmU6CisgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrOjpOb25lOgogICAg
ICAgICByZXR1cm4gbnVsbEF0b20oKTsKLSAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtDdXN0b206
CisgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrOjpDdXN0b206CiAgICAgICAgIHJldHVybiB0ZXh0
RW1waGFzaXNDdXN0b21NYXJrKCk7Ci0gICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrRG90OiB7Cisg
ICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrOjpEb3Q6IHsKICAgICAgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gZmlsbGVkRG90U3RyaW5nKCZidWxsZXQsIDEpOwogICAgICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBvcGVuRG90U3RyaW5nKCZ3aGl0
ZUJ1bGxldCwgMSk7Ci0gICAgICAgIHJldHVybiB0ZXh0RW1waGFzaXNGaWxsKCkgPT0gVGV4dEVt
cGhhc2lzRmlsbEZpbGxlZCA/IGZpbGxlZERvdFN0cmluZyA6IG9wZW5Eb3RTdHJpbmc7CisgICAg
ICAgIHJldHVybiB0ZXh0RW1waGFzaXNGaWxsKCkgPT0gVGV4dEVtcGhhc2lzRmlsbDo6RmlsbGVk
ID8gZmlsbGVkRG90U3RyaW5nIDogb3BlbkRvdFN0cmluZzsKICAgICB9Ci0gICAgY2FzZSBUZXh0
RW1waGFzaXNNYXJrQ2lyY2xlOiB7CisgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrOjpDaXJjbGU6
IHsKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZmlsbGVkQ2ly
Y2xlU3RyaW5nKCZibGFja0NpcmNsZSwgMSk7CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxBdG9taWNTdHJpbmc+IG9wZW5DaXJjbGVTdHJpbmcoJndoaXRlQ2lyY2xlLCAxKTsKLSAgICAg
ICAgcmV0dXJuIHRleHRFbXBoYXNpc0ZpbGwoKSA9PSBUZXh0RW1waGFzaXNGaWxsRmlsbGVkID8g
ZmlsbGVkQ2lyY2xlU3RyaW5nIDogb3BlbkNpcmNsZVN0cmluZzsKKyAgICAgICAgcmV0dXJuIHRl
eHRFbXBoYXNpc0ZpbGwoKSA9PSBUZXh0RW1waGFzaXNGaWxsOjpGaWxsZWQgPyBmaWxsZWRDaXJj
bGVTdHJpbmcgOiBvcGVuQ2lyY2xlU3RyaW5nOwogICAgIH0KLSAgICBjYXNlIFRleHRFbXBoYXNp
c01hcmtEb3VibGVDaXJjbGU6IHsKKyAgICBjYXNlIFRleHRFbXBoYXNpc01hcms6OkRvdWJsZUNp
cmNsZTogewogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBmaWxs
ZWREb3VibGVDaXJjbGVTdHJpbmcoJmZpc2hleWUsIDEpOwogICAgICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBvcGVuRG91YmxlQ2lyY2xlU3RyaW5nKCZidWxsc2V5ZSwg
MSk7Ci0gICAgICAgIHJldHVybiB0ZXh0RW1waGFzaXNGaWxsKCkgPT0gVGV4dEVtcGhhc2lzRmls
bEZpbGxlZCA/IGZpbGxlZERvdWJsZUNpcmNsZVN0cmluZyA6IG9wZW5Eb3VibGVDaXJjbGVTdHJp
bmc7CisgICAgICAgIHJldHVybiB0ZXh0RW1waGFzaXNGaWxsKCkgPT0gVGV4dEVtcGhhc2lzRmls
bDo6RmlsbGVkID8gZmlsbGVkRG91YmxlQ2lyY2xlU3RyaW5nIDogb3BlbkRvdWJsZUNpcmNsZVN0
cmluZzsKICAgICB9Ci0gICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrVHJpYW5nbGU6IHsKKyAgICBj
YXNlIFRleHRFbXBoYXNpc01hcms6OlRyaWFuZ2xlOiB7CiAgICAgICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxBdG9taWNTdHJpbmc+IGZpbGxlZFRyaWFuZ2xlU3RyaW5nKCZibGFja1VwUG9pbnRp
bmdUcmlhbmdsZSwgMSk7CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJp
bmc+IG9wZW5UcmlhbmdsZVN0cmluZygmd2hpdGVVcFBvaW50aW5nVHJpYW5nbGUsIDEpOwotICAg
ICAgICByZXR1cm4gdGV4dEVtcGhhc2lzRmlsbCgpID09IFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQg
PyBmaWxsZWRUcmlhbmdsZVN0cmluZyA6IG9wZW5UcmlhbmdsZVN0cmluZzsKKyAgICAgICAgcmV0
dXJuIHRleHRFbXBoYXNpc0ZpbGwoKSA9PSBUZXh0RW1waGFzaXNGaWxsOjpGaWxsZWQgPyBmaWxs
ZWRUcmlhbmdsZVN0cmluZyA6IG9wZW5UcmlhbmdsZVN0cmluZzsKICAgICB9Ci0gICAgY2FzZSBU
ZXh0RW1waGFzaXNNYXJrU2VzYW1lOiB7CisgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrOjpTZXNh
bWU6IHsKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZmlsbGVk
U2VzYW1lU3RyaW5nKCZzZXNhbWVEb3QsIDEpOwogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8QXRvbWljU3RyaW5nPiBvcGVuU2VzYW1lU3RyaW5nKCZ3aGl0ZVNlc2FtZURvdCwgMSk7Ci0g
ICAgICAgIHJldHVybiB0ZXh0RW1waGFzaXNGaWxsKCkgPT0gVGV4dEVtcGhhc2lzRmlsbEZpbGxl
ZCA/IGZpbGxlZFNlc2FtZVN0cmluZyA6IG9wZW5TZXNhbWVTdHJpbmc7CisgICAgICAgIHJldHVy
biB0ZXh0RW1waGFzaXNGaWxsKCkgPT0gVGV4dEVtcGhhc2lzRmlsbDo6RmlsbGVkID8gZmlsbGVk
U2VzYW1lU3RyaW5nIDogb3BlblNlc2FtZVN0cmluZzsKICAgICB9Ci0gICAgY2FzZSBUZXh0RW1w
aGFzaXNNYXJrQXV0bzoKKyAgICBjYXNlIFRleHRFbXBoYXNpc01hcms6OkF1dG86CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVsbEF0b20oKTsKICAgICB9
CkBAIC0xODI1LDcgKzE4MjUsNyBAQCBDb2xvciBSZW5kZXJTdHlsZTo6Y29sb3JJbmNsdWRpbmdG
YWxsYmFjCiBDb2xvciBSZW5kZXJTdHlsZTo6dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3Bl
cnR5SUQgY29sb3JQcm9wZXJ0eSkgY29uc3QKIHsKICAgICBDb2xvciB1bnZpc2l0ZWRDb2xvciA9
IGNvbG9ySW5jbHVkaW5nRmFsbGJhY2soY29sb3JQcm9wZXJ0eSwgZmFsc2UpOwotICAgIGlmIChp
bnNpZGVMaW5rKCkgIT0gSW5zaWRlVmlzaXRlZExpbmspCisgICAgaWYgKGluc2lkZUxpbmsoKSAh
PSBJbnNpZGVMaW5rOjpJbnNpZGVWaXNpdGVkKQogICAgICAgICByZXR1cm4gdW52aXNpdGVkQ29s
b3I7CiAKICAgICBDb2xvciB2aXNpdGVkQ29sb3IgPSBjb2xvckluY2x1ZGluZ0ZhbGxiYWNrKGNv
bG9yUHJvcGVydHksIHRydWUpOwpAQCAtMTk4NiwxMSArMTk4NiwxMSBAQCB2b2lkIFJlbmRlclN0
eWxlOjpzZXRNYXJnaW5FbmQoTGVuZ3RoJiYgCiBUZXh0RW1waGFzaXNNYXJrIFJlbmRlclN0eWxl
Ojp0ZXh0RW1waGFzaXNNYXJrKCkgY29uc3QKIHsKICAgICBhdXRvIG1hcmsgPSBzdGF0aWNfY2Fz
dDxUZXh0RW1waGFzaXNNYXJrPihtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNNYXJr
KTsKLSAgICBpZiAobWFyayAhPSBUZXh0RW1waGFzaXNNYXJrQXV0bykKKyAgICBpZiAobWFyayAh
PSBUZXh0RW1waGFzaXNNYXJrOjpBdXRvKQogICAgICAgICByZXR1cm4gbWFyazsKICAgICBpZiAo
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKLSAgICAgICAgcmV0dXJuIFRleHRFbXBoYXNpc01h
cmtEb3Q7Ci0gICAgcmV0dXJuIFRleHRFbXBoYXNpc01hcmtTZXNhbWU7CisgICAgICAgIHJldHVy
biBUZXh0RW1waGFzaXNNYXJrOjpEb3Q7CisgICAgcmV0dXJuIFRleHRFbXBoYXNpc01hcms6OlNl
c2FtZTsKIH0KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCkBAIC0yMDY3LDMyICsyMDY3LDMy
IEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbHVtblN0eWxlc0Zyb21QYWcKICAgICAKICAgICBz
d2l0Y2ggKHBhZ2luYXRpb25Nb2RlKSB7CiAgICAgY2FzZSBQYWdpbmF0aW9uOjpMZWZ0VG9SaWdo
dFBhZ2luYXRlZDoKLSAgICAgICAgc2V0Q29sdW1uQXhpcyhIb3Jpem9udGFsQ29sdW1uQXhpcyk7
CisgICAgICAgIHNldENvbHVtbkF4aXMoQ29sdW1uQXhpczo6SG9yaXpvbnRhbCk7CiAgICAgICAg
IGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQotICAgICAgICAgICAgc2V0Q29sdW1uUHJv
Z3Jlc3Npb24oaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gTm9ybWFsQ29sdW1uUHJvZ3Jlc3Np
b24gOiBSZXZlcnNlQ29sdW1uUHJvZ3Jlc3Npb24pOworICAgICAgICAgICAgc2V0Q29sdW1uUHJv
Z3Jlc3Npb24oaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gQ29sdW1uUHJvZ3Jlc3Npb246Ok5v
cm1hbCA6IENvbHVtblByb2dyZXNzaW9uOjpSZXZlcnNlKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgc2V0Q29sdW1uUHJvZ3Jlc3Npb24oaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSA/
IFJldmVyc2VDb2x1bW5Qcm9ncmVzc2lvbiA6IE5vcm1hbENvbHVtblByb2dyZXNzaW9uKTsKKyAg
ICAgICAgICAgIHNldENvbHVtblByb2dyZXNzaW9uKGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2Rl
KCkgPyBDb2x1bW5Qcm9ncmVzc2lvbjo6UmV2ZXJzZSA6IENvbHVtblByb2dyZXNzaW9uOjpOb3Jt
YWwpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBhZ2luYXRpb246OlJpZ2h0VG9MZWZ0UGFn
aW5hdGVkOgotICAgICAgICBzZXRDb2x1bW5BeGlzKEhvcml6b250YWxDb2x1bW5BeGlzKTsKKyAg
ICAgICAgc2V0Q29sdW1uQXhpcyhDb2x1bW5BeGlzOjpIb3Jpem9udGFsKTsKICAgICAgICAgaWYg
KGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAgICAgICAgICBzZXRDb2x1bW5Qcm9ncmVz
c2lvbihpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBSZXZlcnNlQ29sdW1uUHJvZ3Jlc3Npb24g
OiBOb3JtYWxDb2x1bW5Qcm9ncmVzc2lvbik7CisgICAgICAgICAgICBzZXRDb2x1bW5Qcm9ncmVz
c2lvbihpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBDb2x1bW5Qcm9ncmVzc2lvbjo6UmV2ZXJz
ZSA6IENvbHVtblByb2dyZXNzaW9uOjpOb3JtYWwpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBzZXRDb2x1bW5Qcm9ncmVzc2lvbihpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gTm9y
bWFsQ29sdW1uUHJvZ3Jlc3Npb24gOiBSZXZlcnNlQ29sdW1uUHJvZ3Jlc3Npb24pOworICAgICAg
ICAgICAgc2V0Q29sdW1uUHJvZ3Jlc3Npb24oaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSA/
IENvbHVtblByb2dyZXNzaW9uOjpOb3JtYWwgOiBDb2x1bW5Qcm9ncmVzc2lvbjo6UmV2ZXJzZSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGFnaW5hdGlvbjo6VG9wVG9Cb3R0b21QYWdpbmF0
ZWQ6Ci0gICAgICAgIHNldENvbHVtbkF4aXMoVmVydGljYWxDb2x1bW5BeGlzKTsKKyAgICAgICAg
c2V0Q29sdW1uQXhpcyhDb2x1bW5BeGlzOjpWZXJ0aWNhbCk7CiAgICAgICAgIGlmIChpc0hvcml6
b250YWxXcml0aW5nTW9kZSgpKQotICAgICAgICAgICAgc2V0Q29sdW1uUHJvZ3Jlc3Npb24oaXNG
bGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSA/IFJldmVyc2VDb2x1bW5Qcm9ncmVzc2lvbiA6IE5v
cm1hbENvbHVtblByb2dyZXNzaW9uKTsKKyAgICAgICAgICAgIHNldENvbHVtblByb2dyZXNzaW9u
KGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgPyBDb2x1bW5Qcm9ncmVzc2lvbjo6UmV2ZXJz
ZSA6IENvbHVtblByb2dyZXNzaW9uOjpOb3JtYWwpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBzZXRDb2x1bW5Qcm9ncmVzc2lvbihpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBOb3JtYWxD
b2x1bW5Qcm9ncmVzc2lvbiA6IFJldmVyc2VDb2x1bW5Qcm9ncmVzc2lvbik7CisgICAgICAgICAg
ICBzZXRDb2x1bW5Qcm9ncmVzc2lvbihpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBDb2x1bW5Q
cm9ncmVzc2lvbjo6Tm9ybWFsIDogQ29sdW1uUHJvZ3Jlc3Npb246OlJldmVyc2UpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIFBhZ2luYXRpb246OkJvdHRvbVRvVG9wUGFnaW5hdGVkOgotICAg
ICAgICBzZXRDb2x1bW5BeGlzKFZlcnRpY2FsQ29sdW1uQXhpcyk7CisgICAgICAgIHNldENvbHVt
bkF4aXMoQ29sdW1uQXhpczo6VmVydGljYWwpOwogICAgICAgICBpZiAoaXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKSkKLSAgICAgICAgICAgIHNldENvbHVtblByb2dyZXNzaW9uKGlzRmxpcHBlZEJs
b2Nrc1dyaXRpbmdNb2RlKCkgPyBOb3JtYWxDb2x1bW5Qcm9ncmVzc2lvbiA6IFJldmVyc2VDb2x1
bW5Qcm9ncmVzc2lvbik7CisgICAgICAgICAgICBzZXRDb2x1bW5Qcm9ncmVzc2lvbihpc0ZsaXBw
ZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gQ29sdW1uUHJvZ3Jlc3Npb246Ok5vcm1hbCA6IENvbHVt
blByb2dyZXNzaW9uOjpSZXZlcnNlKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc2V0Q29s
dW1uUHJvZ3Jlc3Npb24oaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gUmV2ZXJzZUNvbHVtblBy
b2dyZXNzaW9uIDogTm9ybWFsQ29sdW1uUHJvZ3Jlc3Npb24pOworICAgICAgICAgICAgc2V0Q29s
dW1uUHJvZ3Jlc3Npb24oaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gQ29sdW1uUHJvZ3Jlc3Np
b246OlJldmVyc2UgOiBDb2x1bW5Qcm9ncmVzc2lvbjo6Tm9ybWFsKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBQYWdpbmF0aW9uOjpVbnBhZ2luYXRlZDoKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw3ICsxNDgsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFJlbmRlclN0eWxlIGNsb25lKGNvbnN0IFJlbmRlclN0eWxlJik7CiAg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gY2xvbmVQdHIoY29uc3QgUmVu
ZGVyU3R5bGUmKTsKIAotICAgIHN0YXRpYyBSZW5kZXJTdHlsZSBjcmVhdGVBbm9ueW1vdXNTdHls
ZVdpdGhEaXNwbGF5KGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgRURpc3BsYXkpOwor
ICAgIHN0YXRpYyBSZW5kZXJTdHlsZSBjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KGNv
bnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgRGlzcGxheVR5cGUpOwogICAgIHN0YXRpYyBS
ZW5kZXJTdHlsZSBjcmVhdGVTdHlsZUluaGVyaXRpbmdGcm9tUHNldWRvU3R5bGUoY29uc3QgUmVu
ZGVyU3R5bGUmIHBzZXVkb1N0eWxlKTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQgfHwgRU5BQkxF
KFNFQ1VSSVRZX0FTU0VSVElPTlMpCkBAIC0xNzQsNyArMTc0LDcgQEAgcHVibGljOgogICAgIFN0
eWxlQ29udGVudEFsaWdubWVudERhdGEgcmVzb2x2ZWRKdXN0aWZ5Q29udGVudChjb25zdCBTdHls
ZUNvbnRlbnRBbGlnbm1lbnREYXRhJiBub3JtYWxWYWx1ZUJlaGF2aW91cikgY29uc3Q7CiAKICAg
ICBQc2V1ZG9JZCBzdHlsZVR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQc2V1ZG9J
ZD4obV9ub25Jbmhlcml0ZWRGbGFncy5zdHlsZVR5cGUpOyB9Ci0gICAgdm9pZCBzZXRTdHlsZVR5
cGUoUHNldWRvSWQgc3R5bGVUeXBlKSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc3R5bGVUeXBlID0g
c3R5bGVUeXBlOyB9CisgICAgdm9pZCBzZXRTdHlsZVR5cGUoUHNldWRvSWQgc3R5bGVUeXBlKSB7
IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc3R5bGVUeXBlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0
eWxlVHlwZSk7IH0KIAogICAgIFJlbmRlclN0eWxlKiBnZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1
ZG9JZCkgY29uc3Q7CiAgICAgUmVuZGVyU3R5bGUqIGFkZENhY2hlZFBzZXVkb1N0eWxlKHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOwpAQCAtMjI4LDcgKzIyOCw3IEBAIHB1YmxpYzoKICAg
ICBGaWx0ZXJPdXRzZXRzIGZpbHRlck91dHNldHMoKSBjb25zdCB7IHJldHVybiBoYXNGaWx0ZXIo
KSA/IGZpbHRlcigpLm91dHNldHMoKSA6IEZpbHRlck91dHNldHMoKTsgfQogCiAgICAgT3JkZXIg
cnRsT3JkZXJpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxPcmRlcj4obV9pbmhlcml0
ZWRGbGFncy5ydGxPcmRlcmluZyk7IH0KLSAgICB2b2lkIHNldFJUTE9yZGVyaW5nKE9yZGVyIG9y
ZGVyaW5nKSB7IG1faW5oZXJpdGVkRmxhZ3MucnRsT3JkZXJpbmcgPSBvcmRlcmluZzsgfQorICAg
IHZvaWQgc2V0UlRMT3JkZXJpbmcoT3JkZXIgb3JkZXJpbmcpIHsgbV9pbmhlcml0ZWRGbGFncy5y
dGxPcmRlcmluZyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihvcmRlcmluZyk7IH0KIAogICAgIGJv
b2wgaXNTdHlsZUF2YWlsYWJsZSgpIGNvbnN0OwogCkBAIC0yNDAsNyArMjQwLDcgQEAgcHVibGlj
OgogCiAgICAgLy8gYXR0cmlidXRlIGdldHRlciBtZXRob2RzCiAKLSAgICBFRGlzcGxheSBkaXNw
bGF5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RURpc3BsYXk+KG1fbm9uSW5oZXJpdGVk
RmxhZ3MuZWZmZWN0aXZlRGlzcGxheSk7IH0KKyAgICBEaXNwbGF5VHlwZSBkaXNwbGF5KCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RGlzcGxheVR5cGU+KG1fbm9uSW5oZXJpdGVkRmxhZ3Mu
ZWZmZWN0aXZlRGlzcGxheSk7IH0KIAogICAgIGNvbnN0IExlbmd0aCYgbGVmdCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3Vycm91bmREYXRhLT5vZmZzZXQubGVmdCgpOyB9CiAgICAgY29uc3QgTGVuZ3Ro
JiByaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5vZmZzZXQucmlnaHQoKTsg
fQpAQCAtMzMxLDcgKzMzMSw3IEBAIHB1YmxpYzoKICAgICBPdmVyZmxvdyBvdmVyZmxvd0lubGlu
ZURpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBv
dmVyZmxvd1goKSA6IG92ZXJmbG93WSgpOyB9CiAgICAgT3ZlcmZsb3cgb3ZlcmZsb3dCbG9ja0Rp
cmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBvdmVy
Zmxvd1koKSA6IG92ZXJmbG93WCgpOyB9CiAgICAgCi0gICAgRVZpc2liaWxpdHkgdmlzaWJpbGl0
eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVWaXNpYmlsaXR5PihtX2luaGVyaXRlZEZs
YWdzLnZpc2liaWxpdHkpOyB9CisgICAgVmlzaWJpbGl0eSB2aXNpYmlsaXR5KCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VmlzaWJpbGl0eT4obV9pbmhlcml0ZWRGbGFncy52aXNpYmlsaXR5
KTsgfQogICAgIFZlcnRpY2FsQWxpZ24gdmVydGljYWxBbGlnbigpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PFZlcnRpY2FsQWxpZ24+KG1fbm9uSW5oZXJpdGVkRmxhZ3MudmVydGljYWxBbGln
bik7IH0KICAgICBjb25zdCBMZW5ndGgmIHZlcnRpY2FsQWxpZ25MZW5ndGgoKSBjb25zdCB7IHJl
dHVybiBtX2JveERhdGEtPnZlcnRpY2FsQWxpZ24oKTsgfQogCkBAIC0zNjMsOCArMzYzLDggQEAg
cHVibGljOgogICAgIEZvbnRTZWxlY3Rpb25WYWx1ZSBmb250SXRhbGljKCkgY29uc3QgeyByZXR1
cm4gZm9udERlc2NyaXB0aW9uKCkuaXRhbGljKCk7IH0KIAogICAgIGNvbnN0IExlbmd0aCYgdGV4
dEluZGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmluZGVudDsgfQot
ICAgIEVUZXh0QWxpZ24gdGV4dEFsaWduKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVRl
eHRBbGlnbj4obV9pbmhlcml0ZWRGbGFncy50ZXh0QWxpZ24pOyB9Ci0gICAgRVRleHRUcmFuc2Zv
cm0gdGV4dFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVUZXh0VHJhbnNm
b3JtPihtX2luaGVyaXRlZEZsYWdzLnRleHRUcmFuc2Zvcm0pOyB9CisgICAgVGV4dEFsaWduTW9k
ZSB0ZXh0QWxpZ24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0QWxpZ25Nb2RlPiht
X2luaGVyaXRlZEZsYWdzLnRleHRBbGlnbik7IH0KKyAgICBUZXh0VHJhbnNmb3JtIHRleHRUcmFu
c2Zvcm0oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0VHJhbnNmb3JtPihtX2luaGVy
aXRlZEZsYWdzLnRleHRUcmFuc2Zvcm0pOyB9CiAgICAgVGV4dERlY29yYXRpb24gdGV4dERlY29y
YXRpb25zSW5FZmZlY3QoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RGVjb3JhdGlv
bj4obV9pbmhlcml0ZWRGbGFncy50ZXh0RGVjb3JhdGlvbnMpOyB9CiAgICAgVGV4dERlY29yYXRp
b24gdGV4dERlY29yYXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RGVjb3Jh
dGlvbj4obV92aXN1YWxEYXRhLT50ZXh0RGVjb3JhdGlvbik7IH0KICAgICBUZXh0RGVjb3JhdGlv
blN0eWxlIHRleHREZWNvcmF0aW9uU3R5bGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxU
ZXh0RGVjb3JhdGlvblN0eWxlPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0RGVjb3JhdGlv
blN0eWxlKTsgfQpAQCAtMzk0LDEyICszOTQsMTIgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIGNvbnN0IExlbmd0aCYgbGluZUhlaWdodCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IGludCBjb21wdXRlZExpbmVIZWlnaHQoKSBjb25zdDsKIAotICAgIEVXaGl0ZVNwYWNlIHdoaXRl
U3BhY2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFV2hpdGVTcGFjZT4obV9pbmhlcml0
ZWRGbGFncy53aGl0ZVNwYWNlKTsgfQotICAgIHN0YXRpYyBib29sIGF1dG9XcmFwKEVXaGl0ZVNw
YWNlKTsKKyAgICBXaGl0ZVNwYWNlIHdoaXRlU3BhY2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxXaGl0ZVNwYWNlPihtX2luaGVyaXRlZEZsYWdzLndoaXRlU3BhY2UpOyB9CisgICAgc3Rh
dGljIGJvb2wgYXV0b1dyYXAoV2hpdGVTcGFjZSk7CiAgICAgYm9vbCBhdXRvV3JhcCgpIGNvbnN0
IHsgcmV0dXJuIGF1dG9XcmFwKHdoaXRlU3BhY2UoKSk7IH0KLSAgICBzdGF0aWMgYm9vbCBwcmVz
ZXJ2ZU5ld2xpbmUoRVdoaXRlU3BhY2UpOworICAgIHN0YXRpYyBib29sIHByZXNlcnZlTmV3bGlu
ZShXaGl0ZVNwYWNlKTsKICAgICBib29sIHByZXNlcnZlTmV3bGluZSgpIGNvbnN0IHsgcmV0dXJu
IHByZXNlcnZlTmV3bGluZSh3aGl0ZVNwYWNlKCkpOyB9Ci0gICAgc3RhdGljIGJvb2wgY29sbGFw
c2VXaGl0ZVNwYWNlKEVXaGl0ZVNwYWNlKTsKKyAgICBzdGF0aWMgYm9vbCBjb2xsYXBzZVdoaXRl
U3BhY2UoV2hpdGVTcGFjZSk7CiAgICAgYm9vbCBjb2xsYXBzZVdoaXRlU3BhY2UoKSBjb25zdCB7
IHJldHVybiBjb2xsYXBzZVdoaXRlU3BhY2Uod2hpdGVTcGFjZSgpKTsgfQogICAgIGJvb2wgaXND
b2xsYXBzaWJsZVdoaXRlU3BhY2UoVUNoYXIpIGNvbnN0OwogICAgIGJvb2wgYnJlYWtPbmx5QWZ0
ZXJXaGl0ZVNwYWNlKCkgY29uc3Q7CkBAIC00MzYsMTIgKzQzNiwxMiBAQCBwdWJsaWM6CiAgICAg
Qm9yZGVyQ29sbGFwc2UgYm9yZGVyQ29sbGFwc2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxCb3JkZXJDb2xsYXBzZT4obV9pbmhlcml0ZWRGbGFncy5ib3JkZXJDb2xsYXBzZSk7IH0KICAg
ICBmbG9hdCBob3Jpem9udGFsQm9yZGVyU3BhY2luZygpIGNvbnN0OwogICAgIGZsb2F0IHZlcnRp
Y2FsQm9yZGVyU3BhY2luZygpIGNvbnN0OwotICAgIEVFbXB0eUNlbGwgZW1wdHlDZWxscygpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVFbXB0eUNlbGw+KG1faW5oZXJpdGVkRmxhZ3MuZW1w
dHlDZWxscyk7IH0KLSAgICBFQ2FwdGlvblNpZGUgY2FwdGlvblNpZGUoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxFQ2FwdGlvblNpZGU+KG1faW5oZXJpdGVkRmxhZ3MuY2FwdGlvblNpZGUp
OyB9CisgICAgRW1wdHlDZWxsIGVtcHR5Q2VsbHMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxFbXB0eUNlbGw+KG1faW5oZXJpdGVkRmxhZ3MuZW1wdHlDZWxscyk7IH0KKyAgICBDYXB0aW9u
U2lkZSBjYXB0aW9uU2lkZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENhcHRpb25TaWRl
PihtX2luaGVyaXRlZEZsYWdzLmNhcHRpb25TaWRlKTsgfQogCi0gICAgRUxpc3RTdHlsZVR5cGUg
bGlzdFN0eWxlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVMaXN0U3R5bGVUeXBl
PihtX2luaGVyaXRlZEZsYWdzLmxpc3RTdHlsZVR5cGUpOyB9CisgICAgTGlzdFN0eWxlVHlwZSBs
aXN0U3R5bGVUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGlzdFN0eWxlVHlwZT4o
bV9pbmhlcml0ZWRGbGFncy5saXN0U3R5bGVUeXBlKTsgfQogICAgIFN0eWxlSW1hZ2UqIGxpc3RT
dHlsZUltYWdlKCkgY29uc3Q7Ci0gICAgRUxpc3RTdHlsZVBvc2l0aW9uIGxpc3RTdHlsZVBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUxpc3RTdHlsZVBvc2l0aW9uPihtX2lu
aGVyaXRlZEZsYWdzLmxpc3RTdHlsZVBvc2l0aW9uKTsgfQorICAgIExpc3RTdHlsZVBvc2l0aW9u
IGxpc3RTdHlsZVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGlzdFN0eWxl
UG9zaXRpb24+KG1faW5oZXJpdGVkRmxhZ3MubGlzdFN0eWxlUG9zaXRpb24pOyB9CiAKICAgICBj
b25zdCBMZW5ndGgmIG1hcmdpblRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5t
YXJnaW4udG9wKCk7IH0KICAgICBjb25zdCBMZW5ndGgmIG1hcmdpbkJvdHRvbSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3Vycm91bmREYXRhLT5tYXJnaW4uYm90dG9tKCk7IH0KQEAgLTQ2Niw3ICs0NjYs
NyBAQCBwdWJsaWM6CiAgICAgY29uc3QgTGVuZ3RoJiBwYWRkaW5nU3RhcnQoKSBjb25zdCB7IHJl
dHVybiBtX3N1cnJvdW5kRGF0YS0+cGFkZGluZy5zdGFydCh3cml0aW5nTW9kZSgpLCBkaXJlY3Rp
b24oKSk7IH0KICAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdFbmQoKSBjb25zdCB7IHJldHVybiBt
X3N1cnJvdW5kRGF0YS0+cGFkZGluZy5lbmQod3JpdGluZ01vZGUoKSwgZGlyZWN0aW9uKCkpOyB9
CiAKLSAgICBFQ3Vyc29yIGN1cnNvcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVDdXJz
b3I+KG1faW5oZXJpdGVkRmxhZ3MuY3Vyc29yKTsgfQorICAgIEN1cnNvclR5cGUgY3Vyc29yKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q3Vyc29yVHlwZT4obV9pbmhlcml0ZWRGbGFncy5j
dXJzb3IpOyB9CiAKICNpZiBFTkFCTEUoQ1VSU09SX1ZJU0lCSUxJVFkpCiAgICAgQ3Vyc29yVmlz
aWJpbGl0eSBjdXJzb3JWaXNpYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q3Vy
c29yVmlzaWJpbGl0eT4obV9pbmhlcml0ZWRGbGFncy5jdXJzb3JWaXNpYmlsaXR5KTsgfQpAQCAt
NDc0LDcgKzQ3NCw3IEBAIHB1YmxpYzoKIAogICAgIEN1cnNvckxpc3QqIGN1cnNvcnMoKSBjb25z
dCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5jdXJzb3JEYXRhLmdldCgpOyB9CiAKLSAg
ICBFSW5zaWRlTGluayBpbnNpZGVMaW5rKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUlu
c2lkZUxpbms+KG1faW5oZXJpdGVkRmxhZ3MuaW5zaWRlTGluayk7IH0KKyAgICBJbnNpZGVMaW5r
IGluc2lkZUxpbmsoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJbnNpZGVMaW5rPihtX2lu
aGVyaXRlZEZsYWdzLmluc2lkZUxpbmspOyB9CiAgICAgYm9vbCBpc0xpbmsoKSBjb25zdCB7IHJl
dHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmlzTGluazsgfQogCiAgICAgYm9vbCBpbnNpZGVEZWZh
dWx0QnV0dG9uKCkgY29uc3QgeyByZXR1cm4gbV9pbmhlcml0ZWRGbGFncy5pbnNpZGVEZWZhdWx0
QnV0dG9uOyB9CkBAIC01OTIsNyArNTkyLDcgQEAgcHVibGljOgogICAgIHNob3J0IGh5cGhlbmF0
aW9uTGltaXRMaW5lcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmh5cGhl
bmF0aW9uTGltaXRMaW5lczsgfQogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaHlwaGVuYXRpb25T
dHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvblN0
cmluZzsgfQogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKCkgY29uc3QgeyByZXR1cm4g
Zm9udERlc2NyaXB0aW9uKCkubG9jYWxlKCk7IH0KLSAgICBFQm9yZGVyRml0IGJvcmRlckZpdCgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3JkZXJGaXQ+KG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPmJvcmRlckZpdCk7IH0KKyAgICBCb3JkZXJGaXQgYm9yZGVyRml0KCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Qm9yZGVyRml0PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ib3Jk
ZXJGaXQpOyB9CiAgICAgUmVzaXplIHJlc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PFJlc2l6ZT4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cmVzaXplKTsgfQogICAgIENvbHVtbkF4
aXMgY29sdW1uQXhpcygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbHVtbkF4aXM+KG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPm11bHRpQ29sLT5heGlzKTsgfQogICAgIGJvb2wgaGFzSW5s
aW5lQ29sdW1uQXhpcygpIGNvbnN0OwpAQCAtNjUxLDcgKzY1MSw3IEBAIHB1YmxpYzoKICAgICBM
aW5lU25hcCBsaW5lU25hcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PExpbmVTbmFwPiht
X3JhcmVJbmhlcml0ZWREYXRhLT5saW5lU25hcCk7IH0KICAgICBMaW5lQWxpZ24gbGluZUFsaWdu
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGluZUFsaWduPihtX3JhcmVJbmhlcml0ZWRE
YXRhLT5saW5lQWxpZ24pOyB9CiAKLSAgICBFUG9pbnRlckV2ZW50cyBwb2ludGVyRXZlbnRzKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVBvaW50ZXJFdmVudHM+KG1faW5oZXJpdGVkRmxh
Z3MucG9pbnRlckV2ZW50cyk7IH0KKyAgICBQb2ludGVyRXZlbnRzIHBvaW50ZXJFdmVudHMoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQb2ludGVyRXZlbnRzPihtX2luaGVyaXRlZEZsYWdz
LnBvaW50ZXJFdmVudHMpOyB9CiAgICAgY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbWF0aW9ucygp
IGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFuaW1hdGlvbnMuZ2V0KCk7
IH0KICAgICBjb25zdCBBbmltYXRpb25MaXN0KiB0cmFuc2l0aW9ucygpIGNvbnN0IHsgcmV0dXJu
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zaXRpb25zLmdldCgpOyB9CiAKQEAgLTc5Niw4
ICs3OTYsOCBAQCBwdWJsaWM6CiAKIC8vIGF0dHJpYnV0ZSBzZXR0ZXIgbWV0aG9kcwogCi0gICAg
dm9pZCBzZXREaXNwbGF5KEVEaXNwbGF5IHYpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5lZmZlY3Rp
dmVEaXNwbGF5ID0gdjsgfQotICAgIHZvaWQgc2V0T3JpZ2luYWxEaXNwbGF5KEVEaXNwbGF5IHYp
IHsgbV9ub25Jbmhlcml0ZWRGbGFncy5vcmlnaW5hbERpc3BsYXkgPSB2OyB9CisgICAgdm9pZCBz
ZXREaXNwbGF5KERpc3BsYXlUeXBlIHYpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5lZmZlY3RpdmVE
aXNwbGF5ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYpOyB9CisgICAgdm9pZCBzZXRPcmlnaW5h
bERpc3BsYXkoRGlzcGxheVR5cGUgdikgeyBtX25vbkluaGVyaXRlZEZsYWdzLm9yaWdpbmFsRGlz
cGxheSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KTsgfQogICAgIHZvaWQgc2V0UG9zaXRpb24o
UG9zaXRpb25UeXBlIHYpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5wb3NpdGlvbiA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPih2KTsgfQogICAgIHZvaWQgc2V0RmxvYXRpbmcoRmxvYXQgdikgeyBtX25v
bkluaGVyaXRlZEZsYWdzLmZsb2F0aW5nID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYpOyB9CiAK
QEAgLTg4Miw3ICs4ODIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldE92ZXJmbG93WChPdmVy
ZmxvdyB2KSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Mub3ZlcmZsb3dYID0gIHN0YXRpY19jYXN0PHVu
c2lnbmVkPih2KTsgfQogICAgIHZvaWQgc2V0T3ZlcmZsb3dZKE92ZXJmbG93IHYpIHsgbV9ub25J
bmhlcml0ZWRGbGFncy5vdmVyZmxvd1kgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odik7IH0KLSAg
ICB2b2lkIHNldFZpc2liaWxpdHkoRVZpc2liaWxpdHkgdikgeyBtX2luaGVyaXRlZEZsYWdzLnZp
c2liaWxpdHkgPSB2OyB9CisgICAgdm9pZCBzZXRWaXNpYmlsaXR5KFZpc2liaWxpdHkgdikgeyBt
X2luaGVyaXRlZEZsYWdzLnZpc2liaWxpdHkgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odik7IH0K
ICAgICB2b2lkIHNldFZlcnRpY2FsQWxpZ24oVmVydGljYWxBbGlnbiB2KSB7IG1fbm9uSW5oZXJp
dGVkRmxhZ3MudmVydGljYWxBbGlnbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KTsgfQogICAg
IHZvaWQgc2V0VmVydGljYWxBbGlnbkxlbmd0aChMZW5ndGgmJiBsZW5ndGgpIHsgc2V0VmVydGlj
YWxBbGlnbihWZXJ0aWNhbEFsaWduOjpMZW5ndGgpOyBTRVRfVkFSKG1fYm94RGF0YSwgbV92ZXJ0
aWNhbEFsaWduLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CiAKQEAgLTkxMywyMSArOTEzLDIxIEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc2V0Q29sb3IoY29uc3QgQ29sb3ImKTsKICAgICB2b2lkIHNldFRl
eHRJbmRlbnQoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwg
aW5kZW50LCBXVEZNb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRUZXh0QWxpZ24oRVRleHRB
bGlnbiB2KSB7IG1faW5oZXJpdGVkRmxhZ3MudGV4dEFsaWduID0gdjsgfQotICAgIHZvaWQgc2V0
VGV4dFRyYW5zZm9ybShFVGV4dFRyYW5zZm9ybSB2KSB7IG1faW5oZXJpdGVkRmxhZ3MudGV4dFRy
YW5zZm9ybSA9IHY7IH0KKyAgICB2b2lkIHNldFRleHRBbGlnbihUZXh0QWxpZ25Nb2RlIHYpIHsg
bV9pbmhlcml0ZWRGbGFncy50ZXh0QWxpZ24gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odik7IH0K
KyAgICB2b2lkIHNldFRleHRUcmFuc2Zvcm0oVGV4dFRyYW5zZm9ybSB2KSB7IG1faW5oZXJpdGVk
RmxhZ3MudGV4dFRyYW5zZm9ybSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KTsgfQogICAgIHZv
aWQgYWRkVG9UZXh0RGVjb3JhdGlvbnNJbkVmZmVjdChUZXh0RGVjb3JhdGlvbiB2KSB7IG1faW5o
ZXJpdGVkRmxhZ3MudGV4dERlY29yYXRpb25zIHw9IHY7IH0KICAgICB2b2lkIHNldFRleHREZWNv
cmF0aW9uc0luRWZmZWN0KFRleHREZWNvcmF0aW9uIHYpIHsgbV9pbmhlcml0ZWRGbGFncy50ZXh0
RGVjb3JhdGlvbnMgPSB2OyB9CiAgICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvbihUZXh0RGVjb3Jh
dGlvbiB2KSB7IFNFVF9WQVIobV92aXN1YWxEYXRhLCB0ZXh0RGVjb3JhdGlvbiwgdik7IH0KLSAg
ICB2b2lkIHNldFRleHREZWNvcmF0aW9uU3R5bGUoVGV4dERlY29yYXRpb25TdHlsZSB2KSB7IFNF
VF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdGV4dERlY29yYXRpb25TdHlsZSwgdik7IH0K
LSAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uU2tpcChUZXh0RGVjb3JhdGlvblNraXAgc2tpcCkg
eyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHREZWNvcmF0aW9uU2tpcCwgc2tpcCk7
IH0KLSAgICB2b2lkIHNldFRleHRVbmRlcmxpbmVQb3NpdGlvbihUZXh0VW5kZXJsaW5lUG9zaXRp
b24gdikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRVbmRlcmxpbmVQb3NpdGlv
biwgdik7IH0KLSAgICB2b2lkIHNldERpcmVjdGlvbihUZXh0RGlyZWN0aW9uIHYpIHsgbV9pbmhl
cml0ZWRGbGFncy5kaXJlY3Rpb24gPSB2OyB9CisgICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvblN0
eWxlKFRleHREZWNvcmF0aW9uU3R5bGUgdikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERh
dGEsIHRleHREZWNvcmF0aW9uU3R5bGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KSk7IH0KKyAg
ICB2b2lkIHNldFRleHREZWNvcmF0aW9uU2tpcChUZXh0RGVjb3JhdGlvblNraXAgc2tpcCkgeyBT
RVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHREZWNvcmF0aW9uU2tpcCwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHNraXApKTsgfQorICAgIHZvaWQgc2V0VGV4dFVuZGVybGluZVBvc2l0aW9u
KFRleHRVbmRlcmxpbmVQb3NpdGlvbiB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwg
dGV4dFVuZGVybGluZVBvc2l0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odikpOyB9CisgICAg
dm9pZCBzZXREaXJlY3Rpb24oVGV4dERpcmVjdGlvbiB2KSB7IG1faW5oZXJpdGVkRmxhZ3MuZGly
ZWN0aW9uID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYpOyB9CiAgICAgdm9pZCBzZXRIYXNFeHBs
aWNpdGx5U2V0RGlyZWN0aW9uKGJvb2wgdikgeyBtX25vbkluaGVyaXRlZEZsYWdzLmhhc0V4cGxp
Y2l0bHlTZXREaXJlY3Rpb24gPSB2OyB9CiAgICAgdm9pZCBzZXRMaW5lSGVpZ2h0KExlbmd0aCYm
KTsKICAgICBib29sIHNldFpvb20oZmxvYXQpOwogICAgIHZvaWQgc2V0Wm9vbVdpdGhvdXRSZXR1
cm5WYWx1ZShmbG9hdCBmKSB7IHNldFpvb20oZik7IH0KICAgICBib29sIHNldEVmZmVjdGl2ZVpv
b20oZmxvYXQpOwotICAgIHZvaWQgc2V0VGV4dFpvb20oVGV4dFpvb20gdikgeyBTRVRfVkFSKG1f
cmFyZUluaGVyaXRlZERhdGEsIHRleHRab29tLCB2KTsgfQorICAgIHZvaWQgc2V0VGV4dFpvb20o
VGV4dFpvb20gdikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRab29tLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4odikpOyB9CiAKICNpZiBFTkFCTEUoQ1NTM19URVhUKQogICAgIHZv
aWQgc2V0VGV4dEluZGVudExpbmUoVGV4dEluZGVudExpbmUgdikgeyBTRVRfVkFSKG1fcmFyZUlu
aGVyaXRlZERhdGEsIHRleHRJbmRlbnRMaW5lLCB2KTsgfQpAQCAtOTUyLDcgKzk1Miw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldEltYWdlUmVzb2x1dGlvbihmbG9hdCBmKSB7IFNFVF9WQVIobV9y
YXJlSW5oZXJpdGVkRGF0YSwgaW1hZ2VSZXNvbHV0aW9uLCBmKTsgfQogI2VuZGlmCiAKLSAgICB2
b2lkIHNldFdoaXRlU3BhY2UoRVdoaXRlU3BhY2UgdikgeyBtX2luaGVyaXRlZEZsYWdzLndoaXRl
U3BhY2UgPSB2OyB9CisgICAgdm9pZCBzZXRXaGl0ZVNwYWNlKFdoaXRlU3BhY2UgdikgeyBtX2lu
aGVyaXRlZEZsYWdzLndoaXRlU3BhY2UgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odik7IH0KIAog
ICAgIHZvaWQgc2V0V29yZFNwYWNpbmcoTGVuZ3RoJiYpOwogICAgIHZvaWQgc2V0TGV0dGVyU3Bh
Y2luZyhmbG9hdCk7CkBAIC05NzgsMTYgKzk3OCwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRC
b3JkZXJDb2xsYXBzZShCb3JkZXJDb2xsYXBzZSBjb2xsYXBzZSkgeyBtX2luaGVyaXRlZEZsYWdz
LmJvcmRlckNvbGxhcHNlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbGxhcHNlKTsgfQogICAg
IHZvaWQgc2V0SG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoZmxvYXQpOwogICAgIHZvaWQgc2V0VmVy
dGljYWxCb3JkZXJTcGFjaW5nKGZsb2F0KTsKLSAgICB2b2lkIHNldEVtcHR5Q2VsbHMoRUVtcHR5
Q2VsbCB2KSB7IG1faW5oZXJpdGVkRmxhZ3MuZW1wdHlDZWxscyA9IHY7IH0KLSAgICB2b2lkIHNl
dENhcHRpb25TaWRlKEVDYXB0aW9uU2lkZSB2KSB7IG1faW5oZXJpdGVkRmxhZ3MuY2FwdGlvblNp
ZGUgPSB2OyB9CisgICAgdm9pZCBzZXRFbXB0eUNlbGxzKEVtcHR5Q2VsbCB2KSB7IG1faW5oZXJp
dGVkRmxhZ3MuZW1wdHlDZWxscyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KTsgfQorICAgIHZv
aWQgc2V0Q2FwdGlvblNpZGUoQ2FwdGlvblNpZGUgdikgeyBtX2luaGVyaXRlZEZsYWdzLmNhcHRp
b25TaWRlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYpOyB9CiAKICAgICB2b2lkIHNldEFzcGVj
dFJhdGlvVHlwZShBc3BlY3RSYXRpb1R5cGUgYXNwZWN0UmF0aW9UeXBlKSB7IFNFVF9WQVIobV9y
YXJlTm9uSW5oZXJpdGVkRGF0YSwgYXNwZWN0UmF0aW9UeXBlLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oYXNwZWN0UmF0aW9UeXBlKSk7IH0KICAgICB2b2lkIHNldEFzcGVjdFJhdGlvRGVub21pbmF0
b3IoZmxvYXQgdikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGFzcGVjdFJhdGlv
RGVub21pbmF0b3IsIHYpOyB9CiAgICAgdm9pZCBzZXRBc3BlY3RSYXRpb051bWVyYXRvcihmbG9h
dCB2KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYXNwZWN0UmF0aW9OdW1lcmF0
b3IsIHYpOyB9CiAKLSAgICB2b2lkIHNldExpc3RTdHlsZVR5cGUoRUxpc3RTdHlsZVR5cGUgdikg
eyBtX2luaGVyaXRlZEZsYWdzLmxpc3RTdHlsZVR5cGUgPSB2OyB9CisgICAgdm9pZCBzZXRMaXN0
U3R5bGVUeXBlKExpc3RTdHlsZVR5cGUgdikgeyBtX2luaGVyaXRlZEZsYWdzLmxpc3RTdHlsZVR5
cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odik7IH0KICAgICB2b2lkIHNldExpc3RTdHlsZUlt
YWdlKFJlZlB0cjxTdHlsZUltYWdlPiYmKTsKLSAgICB2b2lkIHNldExpc3RTdHlsZVBvc2l0aW9u
KEVMaXN0U3R5bGVQb3NpdGlvbiB2KSB7IG1faW5oZXJpdGVkRmxhZ3MubGlzdFN0eWxlUG9zaXRp
b24gPSB2OyB9CisgICAgdm9pZCBzZXRMaXN0U3R5bGVQb3NpdGlvbihMaXN0U3R5bGVQb3NpdGlv
biB2KSB7IG1faW5oZXJpdGVkRmxhZ3MubGlzdFN0eWxlUG9zaXRpb24gPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4odik7IH0KIAogICAgIHZvaWQgcmVzZXRNYXJnaW4oKSB7IFNFVF9WQVIobV9zdXJy
b3VuZERhdGEsIG1hcmdpbiwgTGVuZ3RoQm94KEZpeGVkKSk7IH0KICAgICB2b2lkIHNldE1hcmdp
blRvcChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgbWFyZ2luLnRv
cCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CkBAIC0xMDA0LDE2ICsxMDA0LDE2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFBhZGRpbmdMZWZ0KExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fc3Vy
cm91bmREYXRhLCBwYWRkaW5nLmxlZnQoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQogICAgIHZvaWQg
c2V0UGFkZGluZ1JpZ2h0KExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRh
LCBwYWRkaW5nLnJpZ2h0KCksIFdURk1vdmUobGVuZ3RoKSk7IH0KIAotICAgIHZvaWQgc2V0Q3Vy
c29yKEVDdXJzb3IgYykgeyBtX2luaGVyaXRlZEZsYWdzLmN1cnNvciA9IGM7IH0KKyAgICB2b2lk
IHNldEN1cnNvcihDdXJzb3JUeXBlIGMpIHsgbV9pbmhlcml0ZWRGbGFncy5jdXJzb3IgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oYyk7IH0KICAgICB2b2lkIGFkZEN1cnNvcihSZWZQdHI8U3R5bGVJ
bWFnZT4mJiwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QgPSBJbnRQb2ludCgpKTsKICAgICB2b2lk
IHNldEN1cnNvckxpc3QoUmVmUHRyPEN1cnNvckxpc3Q+JiYpOwogICAgIHZvaWQgY2xlYXJDdXJz
b3JMaXN0KCk7CiAKICNpZiBFTkFCTEUoQ1VSU09SX1ZJU0lCSUxJVFkpCi0gICAgdm9pZCBzZXRD
dXJzb3JWaXNpYmlsaXR5KEN1cnNvclZpc2liaWxpdHkgYykgeyBtX2luaGVyaXRlZEZsYWdzLmN1
cnNvclZpc2liaWxpdHkgPSBjOyB9CisgICAgdm9pZCBzZXRDdXJzb3JWaXNpYmlsaXR5KEN1cnNv
clZpc2liaWxpdHkgYykgeyBtX2luaGVyaXRlZEZsYWdzLmN1cnNvclZpc2liaWxpdHkgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oYyk7IH0KICNlbmRpZgogCi0gICAgdm9pZCBzZXRJbnNpZGVMaW5r
KEVJbnNpZGVMaW5rIGluc2lkZUxpbmspIHsgbV9pbmhlcml0ZWRGbGFncy5pbnNpZGVMaW5rID0g
aW5zaWRlTGluazsgfQorICAgIHZvaWQgc2V0SW5zaWRlTGluayhJbnNpZGVMaW5rIGluc2lkZUxp
bmspIHsgbV9pbmhlcml0ZWRGbGFncy5pbnNpZGVMaW5rID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGluc2lkZUxpbmspOyB9CiAgICAgdm9pZCBzZXRJc0xpbmsoYm9vbCB2KSB7IG1fbm9uSW5oZXJp
dGVkRmxhZ3MuaXNMaW5rID0gdjsgfQogCiAgICAgdm9pZCBzZXRJbnNpZGVEZWZhdWx0QnV0dG9u
KGJvb2wgaW5zaWRlRGVmYXVsdEJ1dHRvbikgeyBtX2luaGVyaXRlZEZsYWdzLmluc2lkZURlZmF1
bHRCdXR0b24gPSBpbnNpZGVEZWZhdWx0QnV0dG9uOyB9CkBAIC0xMTE2LDE1ICsxMTE2LDE1IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldE92ZXJmbG93V3JhcChPdmVyZmxvd1dyYXAgYikgeyBTRVRf
VkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIG92ZXJmbG93V3JhcCwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGIpKTsgfQogICAgIHZvaWQgc2V0TkJTUE1vZGUoTkJTUE1vZGUgYikgeyBTRVRfVkFSKG1f
cmFyZUluaGVyaXRlZERhdGEsIG5ic3BNb2RlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYikpOyB9
CiAgICAgdm9pZCBzZXRMaW5lQnJlYWsoTGluZUJyZWFrIGIpIHsgU0VUX1ZBUihtX3JhcmVJbmhl
cml0ZWREYXRhLCBsaW5lQnJlYWssIHN0YXRpY19jYXN0PHVuc2lnbmVkPihiKSk7IH0KLSAgICB2
b2lkIHNldEh5cGhlbnMoSHlwaGVucyBoKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwg
aHlwaGVucywgaCk7IH0KKyAgICB2b2lkIHNldEh5cGhlbnMoSHlwaGVucyBoKSB7IFNFVF9WQVIo
bV9yYXJlSW5oZXJpdGVkRGF0YSwgaHlwaGVucywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGgpKTsg
fQogICAgIHZvaWQgc2V0SHlwaGVuYXRpb25MaW1pdEJlZm9yZShzaG9ydCBsaW1pdCkgeyBTRVRf
VkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGh5cGhlbmF0aW9uTGltaXRCZWZvcmUsIGxpbWl0KTsg
fQogICAgIHZvaWQgc2V0SHlwaGVuYXRpb25MaW1pdEFmdGVyKHNob3J0IGxpbWl0KSB7IFNFVF9W
QVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgaHlwaGVuYXRpb25MaW1pdEFmdGVyLCBsaW1pdCk7IH0K
ICAgICB2b2lkIHNldEh5cGhlbmF0aW9uTGltaXRMaW5lcyhzaG9ydCBsaW1pdCkgeyBTRVRfVkFS
KG1fcmFyZUluaGVyaXRlZERhdGEsIGh5cGhlbmF0aW9uTGltaXRMaW5lcywgbGltaXQpOyB9CiAg
ICAgdm9pZCBzZXRIeXBoZW5hdGlvblN0cmluZyhjb25zdCBBdG9taWNTdHJpbmcmIGgpIHsgU0VU
X1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBoeXBoZW5hdGlvblN0cmluZywgaCk7IH0KLSAgICB2
b2lkIHNldEJvcmRlckZpdChFQm9yZGVyRml0IGIpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLCBib3JkZXJGaXQsIGIpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJGaXQoQm9yZGVyRml0
IGIpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBib3JkZXJGaXQsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihiKSk7IH0KICAgICB2b2lkIHNldFJlc2l6ZShSZXNpemUgcikgeyBTRVRf
VkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHJlc2l6ZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHIpKTsgfQotICAgIHZvaWQgc2V0Q29sdW1uQXhpcyhDb2x1bW5BeGlzIGF4aXMpIHsgU0VUX05F
U1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbXVsdGlDb2wsIGF4aXMsIGF4aXMpOyB9
Ci0gICAgdm9pZCBzZXRDb2x1bW5Qcm9ncmVzc2lvbihDb2x1bW5Qcm9ncmVzc2lvbiBwcm9ncmVz
c2lvbikgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwg
cHJvZ3Jlc3Npb24sIHByb2dyZXNzaW9uKTsgfQorICAgIHZvaWQgc2V0Q29sdW1uQXhpcyhDb2x1
bW5BeGlzIGF4aXMpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbXVs
dGlDb2wsIGF4aXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihheGlzKSk7IH0KKyAgICB2b2lkIHNl
dENvbHVtblByb2dyZXNzaW9uKENvbHVtblByb2dyZXNzaW9uIHByb2dyZXNzaW9uKSB7IFNFVF9O
RVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11bHRpQ29sLCBwcm9ncmVzc2lvbiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHByb2dyZXNzaW9uKSk7IH0KICAgICB2b2lkIHNldENvbHVt
bldpZHRoKGZsb2F0IGYpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwg
bXVsdGlDb2wsIGF1dG9XaWR0aCwgZmFsc2UpOyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLCBtdWx0aUNvbCwgd2lkdGgsIGYpOyB9CiAgICAgdm9pZCBzZXRIYXNBdXRvQ29s
dW1uV2lkdGgoKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11bHRp
Q29sLCBhdXRvV2lkdGgsIHRydWUpOyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLCBtdWx0aUNvbCwgd2lkdGgsIDApOyB9CiAgICAgdm9pZCBzZXRDb2x1bW5Db3VudCh1bnNp
Z25lZCBzaG9ydCBjKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11
bHRpQ29sLCBhdXRvQ291bnQsIGZhbHNlKTsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJp
dGVkRGF0YSwgbXVsdGlDb2wsIGNvdW50LCBjKTsgfQpAQCAtMTE0OSw4ICsxMTQ5LDggQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0VGV4dENvbWJpbmUoVGV4dENvbWJpbmUgdikgeyBTRVRfVkFSKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEsIHRleHRDb21iaW5lLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
dikpOyB9CiAgICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvbkNvbG9yKGNvbnN0IENvbG9yJiBjKSB7
IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdGV4dERlY29yYXRpb25Db2xvciwgYyk7
IH0KICAgICB2b2lkIHNldFRleHRFbXBoYXNpc0NvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9W
QVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEVtcGhhc2lzQ29sb3IsIGMpOyB9Ci0gICAgdm9p
ZCBzZXRUZXh0RW1waGFzaXNGaWxsKFRleHRFbXBoYXNpc0ZpbGwgZmlsbCkgeyBTRVRfVkFSKG1f
cmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBoYXNpc0ZpbGwsIGZpbGwpOyB9Ci0gICAgdm9pZCBz
ZXRUZXh0RW1waGFzaXNNYXJrKFRleHRFbXBoYXNpc01hcmsgbWFyaykgeyBTRVRfVkFSKG1fcmFy
ZUluaGVyaXRlZERhdGEsIHRleHRFbXBoYXNpc01hcmssIG1hcmspOyB9CisgICAgdm9pZCBzZXRU
ZXh0RW1waGFzaXNGaWxsKFRleHRFbXBoYXNpc0ZpbGwgZmlsbCkgeyBTRVRfVkFSKG1fcmFyZUlu
aGVyaXRlZERhdGEsIHRleHRFbXBoYXNpc0ZpbGwsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihmaWxs
KSk7IH0KKyAgICB2b2lkIHNldFRleHRFbXBoYXNpc01hcmsoVGV4dEVtcGhhc2lzTWFyayBtYXJr
KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEVtcGhhc2lzTWFyaywgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG1hcmspKTsgfQogICAgIHZvaWQgc2V0VGV4dEVtcGhhc2lzQ3VzdG9t
TWFyayhjb25zdCBBdG9taWNTdHJpbmcmIG1hcmspIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWRE
YXRhLCB0ZXh0RW1waGFzaXNDdXN0b21NYXJrLCBtYXJrKTsgfQogICAgIHZvaWQgc2V0VGV4dEVt
cGhhc2lzUG9zaXRpb24oVGV4dEVtcGhhc2lzUG9zaXRpb24gcG9zaXRpb24pIHsgU0VUX1ZBUiht
X3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RW1waGFzaXNQb3NpdGlvbiwgcG9zaXRpb24pOyB9CiAg
ICAgYm9vbCBzZXRUZXh0T3JpZW50YXRpb24oVGV4dE9yaWVudGF0aW9uKTsKQEAgLTExNTgsNyAr
MTE1OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE9iamVjdEZpdChPYmplY3RGaXQgZml0KSB7
IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgb2JqZWN0Rml0LCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oZml0KSk7IH0KICAgICB2b2lkIHNldE9iamVjdFBvc2l0aW9uKExlbmd0aFBvaW50
JiYgcG9zaXRpb24pIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBvYmplY3RQb3Np
dGlvbiwgV1RGTW92ZShwb3NpdGlvbikpOyB9CiAKLSAgICB2b2lkIHNldFJ1YnlQb3NpdGlvbihS
dWJ5UG9zaXRpb24gcG9zaXRpb24pIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBydWJ5
UG9zaXRpb24sIHBvc2l0aW9uKTsgfQorICAgIHZvaWQgc2V0UnVieVBvc2l0aW9uKFJ1YnlQb3Np
dGlvbiBwb3NpdGlvbikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHJ1YnlQb3NpdGlv
biwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBvc2l0aW9uKSk7IH0KIAogICAgIHZvaWQgc2V0Rmls
dGVyKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wcykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLCBmaWx0ZXIsIG9wZXJhdGlvbnMsIG9wcyk7IH0KICAgICB2b2lkIHNl
dENvbG9yRmlsdGVyKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wcykgeyBTRVRfTkVTVEVEX1ZB
UihtX3JhcmVJbmhlcml0ZWREYXRhLCBjb2xvckZpbHRlciwgb3BlcmF0aW9ucywgb3BzKTsgfQpA
QCAtMTE2OSwxOSArMTE2OSwxOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFRhYlNpemUodW5z
aWduZWQgc2l6ZSkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRhYlNpemUsIHNpemUp
OyB9CiAKLSAgICB2b2lkIHNldEJyZWFrQmVmb3JlKEJyZWFrQmV0d2VlbiBicmVha0JlaGF2aW9y
KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYnJlYWtCZWZvcmUsIGJyZWFrQmVo
YXZpb3IpOyB9Ci0gICAgdm9pZCBzZXRCcmVha0FmdGVyKEJyZWFrQmV0d2VlbiBicmVha0JlaGF2
aW9yKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYnJlYWtBZnRlciwgYnJlYWtC
ZWhhdmlvcik7IH0KLSAgICB2b2lkIHNldEJyZWFrSW5zaWRlKEJyZWFrSW5zaWRlIGJyZWFrQmVo
YXZpb3IpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBicmVha0luc2lkZSwgYnJl
YWtCZWhhdmlvcik7IH0KKyAgICB2b2lkIHNldEJyZWFrQmVmb3JlKEJyZWFrQmV0d2VlbiBicmVh
a0JlaGF2aW9yKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYnJlYWtCZWZvcmUs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihicmVha0JlaGF2aW9yKSk7IH0KKyAgICB2b2lkIHNldEJy
ZWFrQWZ0ZXIoQnJlYWtCZXR3ZWVuIGJyZWFrQmVoYXZpb3IpIHsgU0VUX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBicmVha0FmdGVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnJlYWtCZWhh
dmlvcikpOyB9CisgICAgdm9pZCBzZXRCcmVha0luc2lkZShCcmVha0luc2lkZSBicmVha0JlaGF2
aW9yKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYnJlYWtJbnNpZGUsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihicmVha0JlaGF2aW9yKSk7IH0KICAgICAKLSAgICB2b2lkIHNldEhh
bmdpbmdQdW5jdHVhdGlvbihIYW5naW5nUHVuY3R1YXRpb24gcHVuY3R1YXRpb24pIHsgU0VUX1ZB
UihtX3JhcmVJbmhlcml0ZWREYXRhLCBoYW5naW5nUHVuY3R1YXRpb24sIHB1bmN0dWF0aW9uKTsg
fQorICAgIHZvaWQgc2V0SGFuZ2luZ1B1bmN0dWF0aW9uKEhhbmdpbmdQdW5jdHVhdGlvbiBwdW5j
dHVhdGlvbikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGhhbmdpbmdQdW5jdHVhdGlv
biwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHB1bmN0dWF0aW9uKSk7IH0KIAogICAgIC8vIEVuZCBD
U1MzIFNldHRlcnMKIAogICAgIHZvaWQgc2V0TGluZUdyaWQoY29uc3QgQXRvbWljU3RyaW5nJiBs
aW5lR3JpZCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGxpbmVHcmlkLCBsaW5lR3Jp
ZCk7IH0KLSAgICB2b2lkIHNldExpbmVTbmFwKExpbmVTbmFwIGxpbmVTbmFwKSB7IFNFVF9WQVIo
bV9yYXJlSW5oZXJpdGVkRGF0YSwgbGluZVNuYXAsIGxpbmVTbmFwKTsgfQotICAgIHZvaWQgc2V0
TGluZUFsaWduKExpbmVBbGlnbiBsaW5lQWxpZ24pIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWRE
YXRhLCBsaW5lQWxpZ24sIGxpbmVBbGlnbik7IH0KKyAgICB2b2lkIHNldExpbmVTbmFwKExpbmVT
bmFwIGxpbmVTbmFwKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgbGluZVNuYXAsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihsaW5lU25hcCkpOyB9CisgICAgdm9pZCBzZXRMaW5lQWxpZ24o
TGluZUFsaWduIGxpbmVBbGlnbikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGxpbmVB
bGlnbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxpbmVBbGlnbikpOyB9CiAKLSAgICB2b2lkIHNl
dFBvaW50ZXJFdmVudHMoRVBvaW50ZXJFdmVudHMgcCkgeyBtX2luaGVyaXRlZEZsYWdzLnBvaW50
ZXJFdmVudHMgPSBwOyB9CisgICAgdm9pZCBzZXRQb2ludGVyRXZlbnRzKFBvaW50ZXJFdmVudHMg
cCkgeyBtX2luaGVyaXRlZEZsYWdzLnBvaW50ZXJFdmVudHMgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ocCk7IH0KIAogICAgIHZvaWQgY2xlYXJBbmltYXRpb25zKCk7CiAgICAgdm9pZCBjbGVhclRy
YW5zaXRpb25zKCk7CkBAIC0xNDI3LDEzICsxNDI3LDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
T3ZlcmZsb3cgaW5pdGlhbE92ZXJmbG93WCgpIHsgcmV0dXJuIE92ZXJmbG93OjpWaXNpYmxlOyB9
CiAgICAgc3RhdGljIE92ZXJmbG93IGluaXRpYWxPdmVyZmxvd1koKSB7IHJldHVybiBPdmVyZmxv
dzo6VmlzaWJsZTsgfQogICAgIHN0YXRpYyBDbGVhciBpbml0aWFsQ2xlYXIoKSB7IHJldHVybiBD
bGVhcjo6Tm9uZTsgfQotICAgIHN0YXRpYyBFRGlzcGxheSBpbml0aWFsRGlzcGxheSgpIHsgcmV0
dXJuIElOTElORTsgfQorICAgIHN0YXRpYyBEaXNwbGF5VHlwZSBpbml0aWFsRGlzcGxheSgpIHsg
cmV0dXJuIERpc3BsYXlUeXBlOjpJbmxpbmU7IH0KICAgICBzdGF0aWMgRVVuaWNvZGVCaWRpIGlu
aXRpYWxVbmljb2RlQmlkaSgpIHsgcmV0dXJuIFVCTm9ybWFsOyB9CiAgICAgc3RhdGljIFBvc2l0
aW9uVHlwZSBpbml0aWFsUG9zaXRpb24oKSB7IHJldHVybiBQb3NpdGlvblR5cGU6OlN0YXRpYzsg
fQogICAgIHN0YXRpYyBWZXJ0aWNhbEFsaWduIGluaXRpYWxWZXJ0aWNhbEFsaWduKCkgeyByZXR1
cm4gVmVydGljYWxBbGlnbjo6QmFzZWxpbmU7IH0KICAgICBzdGF0aWMgRmxvYXQgaW5pdGlhbEZs
b2F0aW5nKCkgeyByZXR1cm4gRmxvYXQ6Ok5vOyB9Ci0gICAgc3RhdGljIEJyZWFrQmV0d2VlbiBp
bml0aWFsQnJlYWtCZXR3ZWVuKCkgeyByZXR1cm4gQXV0b0JyZWFrQmV0d2VlbjsgfQotICAgIHN0
YXRpYyBCcmVha0luc2lkZSBpbml0aWFsQnJlYWtJbnNpZGUoKSB7IHJldHVybiBBdXRvQnJlYWtJ
bnNpZGU7IH0KKyAgICBzdGF0aWMgQnJlYWtCZXR3ZWVuIGluaXRpYWxCcmVha0JldHdlZW4oKSB7
IHJldHVybiBCcmVha0JldHdlZW46OkF1dG87IH0KKyAgICBzdGF0aWMgQnJlYWtJbnNpZGUgaW5p
dGlhbEJyZWFrSW5zaWRlKCkgeyByZXR1cm4gQnJlYWtJbnNpZGU6OkF1dG87IH0KICAgICBzdGF0
aWMgSGFuZ2luZ1B1bmN0dWF0aW9uIGluaXRpYWxIYW5naW5nUHVuY3R1YXRpb24oKSB7IHJldHVy
biBOb0hhbmdpbmdQdW5jdHVhdGlvbjsgfQogICAgIHN0YXRpYyBUYWJsZUxheW91dFR5cGUgaW5p
dGlhbFRhYmxlTGF5b3V0KCkgeyByZXR1cm4gVGFibGVMYXlvdXRUeXBlOjpBdXRvOyB9CiAgICAg
c3RhdGljIEJvcmRlckNvbGxhcHNlIGluaXRpYWxCb3JkZXJDb2xsYXBzZSgpIHsgcmV0dXJuIEJv
cmRlckNvbGxhcHNlOjpTZXBhcmF0ZTsgfQpAQCAtMTQ0MSwyNCArMTQ0MSwyNCBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIE91dGxpbmVJc0F1dG8gaW5pdGlhbE91dGxpbmVTdHlsZUlzQXV0bygpIHsg
cmV0dXJuIE91dGxpbmVJc0F1dG86Ok9mZjsgfQogICAgIHN0YXRpYyBOaW5lUGllY2VJbWFnZSBp
bml0aWFsTmluZVBpZWNlSW1hZ2UoKSB7IHJldHVybiBOaW5lUGllY2VJbWFnZSgpOyB9CiAgICAg
c3RhdGljIExlbmd0aFNpemUgaW5pdGlhbEJvcmRlclJhZGl1cygpIHsgcmV0dXJuIHsgeyAwLCBG
aXhlZCB9LCB7IDAsIEZpeGVkIH0gfTsgfQotICAgIHN0YXRpYyBFQ2FwdGlvblNpZGUgaW5pdGlh
bENhcHRpb25TaWRlKCkgeyByZXR1cm4gQ0FQVE9QOyB9Ci0gICAgc3RhdGljIENvbHVtbkF4aXMg
aW5pdGlhbENvbHVtbkF4aXMoKSB7IHJldHVybiBBdXRvQ29sdW1uQXhpczsgfQotICAgIHN0YXRp
YyBDb2x1bW5Qcm9ncmVzc2lvbiBpbml0aWFsQ29sdW1uUHJvZ3Jlc3Npb24oKSB7IHJldHVybiBO
b3JtYWxDb2x1bW5Qcm9ncmVzc2lvbjsgfQorICAgIHN0YXRpYyBDYXB0aW9uU2lkZSBpbml0aWFs
Q2FwdGlvblNpZGUoKSB7IHJldHVybiBDYXB0aW9uU2lkZTo6VG9wOyB9CisgICAgc3RhdGljIENv
bHVtbkF4aXMgaW5pdGlhbENvbHVtbkF4aXMoKSB7IHJldHVybiBDb2x1bW5BeGlzOjpBdXRvOyB9
CisgICAgc3RhdGljIENvbHVtblByb2dyZXNzaW9uIGluaXRpYWxDb2x1bW5Qcm9ncmVzc2lvbigp
IHsgcmV0dXJuIENvbHVtblByb2dyZXNzaW9uOjpOb3JtYWw7IH0KICAgICBzdGF0aWMgVGV4dERp
cmVjdGlvbiBpbml0aWFsRGlyZWN0aW9uKCkgeyByZXR1cm4gTFRSOyB9CiAgICAgc3RhdGljIFdy
aXRpbmdNb2RlIGluaXRpYWxXcml0aW5nTW9kZSgpIHsgcmV0dXJuIFRvcFRvQm90dG9tV3JpdGlu
Z01vZGU7IH0KICAgICBzdGF0aWMgVGV4dENvbWJpbmUgaW5pdGlhbFRleHRDb21iaW5lKCkgeyBy
ZXR1cm4gVGV4dENvbWJpbmU6Ok5vbmU7IH0KICAgICBzdGF0aWMgVGV4dE9yaWVudGF0aW9uIGlu
aXRpYWxUZXh0T3JpZW50YXRpb24oKSB7IHJldHVybiBUZXh0T3JpZW50YXRpb246Ok1peGVkOyB9
CiAgICAgc3RhdGljIE9iamVjdEZpdCBpbml0aWFsT2JqZWN0Rml0KCkgeyByZXR1cm4gT2JqZWN0
Rml0OjpGaWxsOyB9CiAgICAgc3RhdGljIExlbmd0aFBvaW50IGluaXRpYWxPYmplY3RQb3NpdGlv
bigpIHsgcmV0dXJuIExlbmd0aFBvaW50KExlbmd0aCg1MC4wZiwgUGVyY2VudCksIExlbmd0aCg1
MC4wZiwgUGVyY2VudCkpOyB9Ci0gICAgc3RhdGljIEVFbXB0eUNlbGwgaW5pdGlhbEVtcHR5Q2Vs
bHMoKSB7IHJldHVybiBTSE9XOyB9Ci0gICAgc3RhdGljIEVMaXN0U3R5bGVQb3NpdGlvbiBpbml0
aWFsTGlzdFN0eWxlUG9zaXRpb24oKSB7IHJldHVybiBPVVRTSURFOyB9Ci0gICAgc3RhdGljIEVM
aXN0U3R5bGVUeXBlIGluaXRpYWxMaXN0U3R5bGVUeXBlKCkgeyByZXR1cm4gRGlzYzsgfQotICAg
IHN0YXRpYyBFVGV4dFRyYW5zZm9ybSBpbml0aWFsVGV4dFRyYW5zZm9ybSgpIHsgcmV0dXJuIFRU
Tk9ORTsgfQotICAgIHN0YXRpYyBFVmlzaWJpbGl0eSBpbml0aWFsVmlzaWJpbGl0eSgpIHsgcmV0
dXJuIFZJU0lCTEU7IH0KLSAgICBzdGF0aWMgRVdoaXRlU3BhY2UgaW5pdGlhbFdoaXRlU3BhY2Uo
KSB7IHJldHVybiBOT1JNQUw7IH0KKyAgICBzdGF0aWMgRW1wdHlDZWxsIGluaXRpYWxFbXB0eUNl
bGxzKCkgeyByZXR1cm4gRW1wdHlDZWxsOjpTaG93OyB9CisgICAgc3RhdGljIExpc3RTdHlsZVBv
c2l0aW9uIGluaXRpYWxMaXN0U3R5bGVQb3NpdGlvbigpIHsgcmV0dXJuIExpc3RTdHlsZVBvc2l0
aW9uOjpPdXRzaWRlOyB9CisgICAgc3RhdGljIExpc3RTdHlsZVR5cGUgaW5pdGlhbExpc3RTdHls
ZVR5cGUoKSB7IHJldHVybiBMaXN0U3R5bGVUeXBlOjpEaXNjOyB9CisgICAgc3RhdGljIFRleHRU
cmFuc2Zvcm0gaW5pdGlhbFRleHRUcmFuc2Zvcm0oKSB7IHJldHVybiBUZXh0VHJhbnNmb3JtOjpO
b25lOyB9CisgICAgc3RhdGljIFZpc2liaWxpdHkgaW5pdGlhbFZpc2liaWxpdHkoKSB7IHJldHVy
biBWaXNpYmlsaXR5OjpWaXNpYmxlOyB9CisgICAgc3RhdGljIFdoaXRlU3BhY2UgaW5pdGlhbFdo
aXRlU3BhY2UoKSB7IHJldHVybiBXaGl0ZVNwYWNlOjpOb3JtYWw7IH0KICAgICBzdGF0aWMgZmxv
YXQgaW5pdGlhbEhvcml6b250YWxCb3JkZXJTcGFjaW5nKCkgeyByZXR1cm4gMDsgfQogICAgIHN0
YXRpYyBmbG9hdCBpbml0aWFsVmVydGljYWxCb3JkZXJTcGFjaW5nKCkgeyByZXR1cm4gMDsgfQot
ICAgIHN0YXRpYyBFQ3Vyc29yIGluaXRpYWxDdXJzb3IoKSB7IHJldHVybiBDdXJzb3JBdXRvOyB9
CisgICAgc3RhdGljIEN1cnNvclR5cGUgaW5pdGlhbEN1cnNvcigpIHsgcmV0dXJuIEN1cnNvclR5
cGU6OkF1dG87IH0KICAgICBzdGF0aWMgQ29sb3IgaW5pdGlhbENvbG9yKCkgeyByZXR1cm4gQ29s
b3I6OmJsYWNrOyB9CiAgICAgc3RhdGljIFN0eWxlSW1hZ2UqIGluaXRpYWxMaXN0U3R5bGVJbWFn
ZSgpIHsgcmV0dXJuIDA7IH0KICAgICBzdGF0aWMgZmxvYXQgaW5pdGlhbEJvcmRlcldpZHRoKCkg
eyByZXR1cm4gMzsgfQpAQCAtMTQ3OCwxMyArMTQ3OCwxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IHNob3J0IGluaXRpYWxXaWRvd3MoKSB7IHJldHVybiAyOyB9CiAgICAgc3RhdGljIHNob3J0IGlu
aXRpYWxPcnBoYW5zKCkgeyByZXR1cm4gMjsgfQogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbExp
bmVIZWlnaHQoKSB7IHJldHVybiBMZW5ndGgoLTEwMC4wZiwgUGVyY2VudCk7IH0KLSAgICBzdGF0
aWMgRVRleHRBbGlnbiBpbml0aWFsVGV4dEFsaWduKCkgeyByZXR1cm4gVEFTVEFSVDsgfQorICAg
IHN0YXRpYyBUZXh0QWxpZ25Nb2RlIGluaXRpYWxUZXh0QWxpZ24oKSB7IHJldHVybiBUZXh0QWxp
Z25Nb2RlOjpTdGFydDsgfQogICAgIHN0YXRpYyBUZXh0RGVjb3JhdGlvbiBpbml0aWFsVGV4dERl
Y29yYXRpb24oKSB7IHJldHVybiBUZXh0RGVjb3JhdGlvbk5vbmU7IH0KLSAgICBzdGF0aWMgVGV4
dERlY29yYXRpb25TdHlsZSBpbml0aWFsVGV4dERlY29yYXRpb25TdHlsZSgpIHsgcmV0dXJuIFRl
eHREZWNvcmF0aW9uU3R5bGVTb2xpZDsgfQorICAgIHN0YXRpYyBUZXh0RGVjb3JhdGlvblN0eWxl
IGluaXRpYWxUZXh0RGVjb3JhdGlvblN0eWxlKCkgeyByZXR1cm4gVGV4dERlY29yYXRpb25TdHls
ZTo6U29saWQ7IH0KICAgICBzdGF0aWMgVGV4dERlY29yYXRpb25Ta2lwIGluaXRpYWxUZXh0RGVj
b3JhdGlvblNraXAoKSB7IHJldHVybiBUZXh0RGVjb3JhdGlvblNraXBBdXRvOyB9CiAgICAgc3Rh
dGljIFRleHRVbmRlcmxpbmVQb3NpdGlvbiBpbml0aWFsVGV4dFVuZGVybGluZVBvc2l0aW9uKCkg
eyByZXR1cm4gVGV4dFVuZGVybGluZVBvc2l0aW9uQXV0bzsgfQogICAgIHN0YXRpYyBmbG9hdCBp
bml0aWFsWm9vbSgpIHsgcmV0dXJuIDEuMGY7IH0KLSAgICBzdGF0aWMgVGV4dFpvb20gaW5pdGlh
bFRleHRab29tKCkgeyByZXR1cm4gVGV4dFpvb21Ob3JtYWw7IH0KKyAgICBzdGF0aWMgVGV4dFpv
b20gaW5pdGlhbFRleHRab29tKCkgeyByZXR1cm4gVGV4dFpvb206Ok5vcm1hbDsgfQogICAgIHN0
YXRpYyBmbG9hdCBpbml0aWFsT3V0bGluZU9mZnNldCgpIHsgcmV0dXJuIDA7IH0KICAgICBzdGF0
aWMgZmxvYXQgaW5pdGlhbE9wYWNpdHkoKSB7IHJldHVybiAxLjBmOyB9CiAgICAgc3RhdGljIEJv
eEFsaWdubWVudCBpbml0aWFsQm94QWxpZ24oKSB7IHJldHVybiBCb3hBbGlnbm1lbnQ6OlN0cmV0
Y2g7IH0KQEAgLTE1MjQsMTggKzE1MjQsMTggQEAgcHVibGljOgogICAgIHN0YXRpYyBOQlNQTW9k
ZSBpbml0aWFsTkJTUE1vZGUoKSB7IHJldHVybiBOQlNQTW9kZTo6Tm9ybWFsOyB9CiAgICAgc3Rh
dGljIExpbmVCcmVhayBpbml0aWFsTGluZUJyZWFrKCkgeyByZXR1cm4gTGluZUJyZWFrOjpBdXRv
OyB9CiAgICAgc3RhdGljIEVTcGVha0FzIGluaXRpYWxTcGVha0FzKCkgeyByZXR1cm4gU3BlYWtO
b3JtYWw7IH0KLSAgICBzdGF0aWMgSHlwaGVucyBpbml0aWFsSHlwaGVucygpIHsgcmV0dXJuIEh5
cGhlbnNNYW51YWw7IH0KKyAgICBzdGF0aWMgSHlwaGVucyBpbml0aWFsSHlwaGVucygpIHsgcmV0
dXJuIEh5cGhlbnM6Ok1hbnVhbDsgfQogICAgIHN0YXRpYyBzaG9ydCBpbml0aWFsSHlwaGVuYXRp
b25MaW1pdEJlZm9yZSgpIHsgcmV0dXJuIC0xOyB9CiAgICAgc3RhdGljIHNob3J0IGluaXRpYWxI
eXBoZW5hdGlvbkxpbWl0QWZ0ZXIoKSB7IHJldHVybiAtMTsgfQogICAgIHN0YXRpYyBzaG9ydCBp
bml0aWFsSHlwaGVuYXRpb25MaW1pdExpbmVzKCkgeyByZXR1cm4gLTE7IH0KICAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWFsSHlwaGVuYXRpb25TdHJpbmcoKSB7IHJldHVybiBu
dWxsQXRvbSgpOyB9Ci0gICAgc3RhdGljIEVCb3JkZXJGaXQgaW5pdGlhbEJvcmRlckZpdCgpIHsg
cmV0dXJuIEJvcmRlckZpdEJvcmRlcjsgfQorICAgIHN0YXRpYyBCb3JkZXJGaXQgaW5pdGlhbEJv
cmRlckZpdCgpIHsgcmV0dXJuIEJvcmRlckZpdDo6Qm9yZGVyOyB9CiAgICAgc3RhdGljIFJlc2l6
ZSBpbml0aWFsUmVzaXplKCkgeyByZXR1cm4gUmVzaXplOjpOb25lOyB9CiAgICAgc3RhdGljIENv
bnRyb2xQYXJ0IGluaXRpYWxBcHBlYXJhbmNlKCkgeyByZXR1cm4gTm9Db250cm9sUGFydDsgfQog
ICAgIHN0YXRpYyBBc3BlY3RSYXRpb1R5cGUgaW5pdGlhbEFzcGVjdFJhdGlvVHlwZSgpIHsgcmV0
dXJuIEFzcGVjdFJhdGlvVHlwZTo6QXV0bzsgfQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsQXNw
ZWN0UmF0aW9EZW5vbWluYXRvcigpIHsgcmV0dXJuIDE7IH0KICAgICBzdGF0aWMgZmxvYXQgaW5p
dGlhbEFzcGVjdFJhdGlvTnVtZXJhdG9yKCkgeyByZXR1cm4gMTsgfQotICAgIHN0YXRpYyBPcmRl
ciBpbml0aWFsUlRMT3JkZXJpbmcoKSB7IHJldHVybiBMb2dpY2FsT3JkZXI7IH0KKyAgICBzdGF0
aWMgT3JkZXIgaW5pdGlhbFJUTE9yZGVyaW5nKCkgeyByZXR1cm4gT3JkZXI6OkxvZ2ljYWw7IH0K
ICAgICBzdGF0aWMgZmxvYXQgaW5pdGlhbFRleHRTdHJva2VXaWR0aCgpIHsgcmV0dXJuIDA7IH0K
ICAgICBzdGF0aWMgdW5zaWduZWQgc2hvcnQgaW5pdGlhbENvbHVtbkNvdW50KCkgeyByZXR1cm4g
MTsgfQogICAgIHN0YXRpYyBDb2x1bW5GaWxsIGluaXRpYWxDb2x1bW5GaWxsKCkgeyByZXR1cm4g
Q29sdW1uRmlsbDo6QmFsYW5jZTsgfQpAQCAtMTU0Niw3ICsxNTQ2LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBMZW5ndGggaW5pdGlhbFRyYW5zZm9ybU9yaWdpblgoKSB7IHJldHVybiBMZW5ndGgo
NTAuMGYsIFBlcmNlbnQpOyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsVHJhbnNmb3JtT3Jp
Z2luWSgpIHsgcmV0dXJuIExlbmd0aCg1MC4wZiwgUGVyY2VudCk7IH0KICAgICBzdGF0aWMgVHJh
bnNmb3JtQm94IGluaXRpYWxUcmFuc2Zvcm1Cb3goKSB7IHJldHVybiBUcmFuc2Zvcm1Cb3g6OkJv
cmRlckJveDsgfQotICAgIHN0YXRpYyBFUG9pbnRlckV2ZW50cyBpbml0aWFsUG9pbnRlckV2ZW50
cygpIHsgcmV0dXJuIFBFX0FVVE87IH0KKyAgICBzdGF0aWMgUG9pbnRlckV2ZW50cyBpbml0aWFs
UG9pbnRlckV2ZW50cygpIHsgcmV0dXJuIFBvaW50ZXJFdmVudHM6OkF1dG87IH0KICAgICBzdGF0
aWMgZmxvYXQgaW5pdGlhbFRyYW5zZm9ybU9yaWdpblooKSB7IHJldHVybiAwOyB9CiAgICAgc3Rh
dGljIFRyYW5zZm9ybVN0eWxlM0QgaW5pdGlhbFRyYW5zZm9ybVN0eWxlM0QoKSB7IHJldHVybiBU
cmFuc2Zvcm1TdHlsZTNEOjpGbGF0OyB9CiAgICAgc3RhdGljIEJhY2tmYWNlVmlzaWJpbGl0eSBp
bml0aWFsQmFja2ZhY2VWaXNpYmlsaXR5KCkgeyByZXR1cm4gQmFja2ZhY2VWaXNpYmlsaXR5OjpW
aXNpYmxlOyB9CkBAIC0xNTU0LDE3ICsxNTU0LDE3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgTGVu
Z3RoIGluaXRpYWxQZXJzcGVjdGl2ZU9yaWdpblgoKSB7IHJldHVybiBMZW5ndGgoNTAuMGYsIFBl
cmNlbnQpOyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsUGVyc3BlY3RpdmVPcmlnaW5ZKCkg
eyByZXR1cm4gTGVuZ3RoKDUwLjBmLCBQZXJjZW50KTsgfQogICAgIHN0YXRpYyBDb2xvciBpbml0
aWFsQmFja2dyb3VuZENvbG9yKCkgeyByZXR1cm4gQ29sb3I6OnRyYW5zcGFyZW50OyB9Ci0gICAg
c3RhdGljIENvbG9yIGluaXRpYWxUZXh0RW1waGFzaXNDb2xvcigpIHsgcmV0dXJuIFRleHRFbXBo
YXNpc0ZpbGxGaWxsZWQ7IH0KLSAgICBzdGF0aWMgVGV4dEVtcGhhc2lzRmlsbCBpbml0aWFsVGV4
dEVtcGhhc2lzRmlsbCgpIHsgcmV0dXJuIFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQ7IH0KLSAgICBz
dGF0aWMgVGV4dEVtcGhhc2lzTWFyayBpbml0aWFsVGV4dEVtcGhhc2lzTWFyaygpIHsgcmV0dXJu
IFRleHRFbXBoYXNpc01hcmtOb25lOyB9CisgICAgc3RhdGljIENvbG9yIGluaXRpYWxUZXh0RW1w
aGFzaXNDb2xvcigpIHsgcmV0dXJuIENvbG9yKCk7IH0KKyAgICBzdGF0aWMgVGV4dEVtcGhhc2lz
RmlsbCBpbml0aWFsVGV4dEVtcGhhc2lzRmlsbCgpIHsgcmV0dXJuIFRleHRFbXBoYXNpc0ZpbGw6
OkZpbGxlZDsgfQorICAgIHN0YXRpYyBUZXh0RW1waGFzaXNNYXJrIGluaXRpYWxUZXh0RW1waGFz
aXNNYXJrKCkgeyByZXR1cm4gVGV4dEVtcGhhc2lzTWFyazo6Tm9uZTsgfQogICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIGluaXRpYWxUZXh0RW1waGFzaXNDdXN0b21NYXJrKCkgeyByZXR1
cm4gbnVsbEF0b20oKTsgfQogICAgIHN0YXRpYyBUZXh0RW1waGFzaXNQb3NpdGlvbiBpbml0aWFs
VGV4dEVtcGhhc2lzUG9zaXRpb24oKSB7IHJldHVybiBUZXh0RW1waGFzaXNQb3NpdGlvbk92ZXIg
fCBUZXh0RW1waGFzaXNQb3NpdGlvblJpZ2h0OyB9Ci0gICAgc3RhdGljIFJ1YnlQb3NpdGlvbiBp
bml0aWFsUnVieVBvc2l0aW9uKCkgeyByZXR1cm4gUnVieVBvc2l0aW9uQmVmb3JlOyB9CisgICAg
c3RhdGljIFJ1YnlQb3NpdGlvbiBpbml0aWFsUnVieVBvc2l0aW9uKCkgeyByZXR1cm4gUnVieVBv
c2l0aW9uOjpCZWZvcmU7IH0KICAgICBzdGF0aWMgTGluZUJveENvbnRhaW4gaW5pdGlhbExpbmVC
b3hDb250YWluKCkgeyByZXR1cm4gTGluZUJveENvbnRhaW5CbG9jayB8IExpbmVCb3hDb250YWlu
SW5saW5lIHwgTGluZUJveENvbnRhaW5SZXBsYWNlZDsgfQogICAgIHN0YXRpYyBJbWFnZU9yaWVu
dGF0aW9uRW51bSBpbml0aWFsSW1hZ2VPcmllbnRhdGlvbigpIHsgcmV0dXJuIE9yaWdpblRvcExl
ZnQ7IH0KICAgICBzdGF0aWMgSW1hZ2VSZW5kZXJpbmcgaW5pdGlhbEltYWdlUmVuZGVyaW5nKCkg
eyByZXR1cm4gSW1hZ2VSZW5kZXJpbmc6OkF1dG87IH0KLSAgICBzdGF0aWMgSW1hZ2VSZXNvbHV0
aW9uU291cmNlIGluaXRpYWxJbWFnZVJlc29sdXRpb25Tb3VyY2UoKSB7IHJldHVybiBJbWFnZVJl
c29sdXRpb25TcGVjaWZpZWQ7IH0KLSAgICBzdGF0aWMgSW1hZ2VSZXNvbHV0aW9uU25hcCBpbml0
aWFsSW1hZ2VSZXNvbHV0aW9uU25hcCgpIHsgcmV0dXJuIEltYWdlUmVzb2x1dGlvbk5vU25hcDsg
fQorICAgIHN0YXRpYyBJbWFnZVJlc29sdXRpb25Tb3VyY2UgaW5pdGlhbEltYWdlUmVzb2x1dGlv
blNvdXJjZSgpIHsgcmV0dXJuIEltYWdlUmVzb2x1dGlvblNvdXJjZTo6U3BlY2lmaWVkOyB9Cisg
ICAgc3RhdGljIEltYWdlUmVzb2x1dGlvblNuYXAgaW5pdGlhbEltYWdlUmVzb2x1dGlvblNuYXAo
KSB7IHJldHVybiBJbWFnZVJlc29sdXRpb25TbmFwOjpOb25lOyB9CiAgICAgc3RhdGljIGZsb2F0
IGluaXRpYWxJbWFnZVJlc29sdXRpb24oKSB7IHJldHVybiAxOyB9CiAgICAgc3RhdGljIFN0eWxl
SW1hZ2UqIGluaXRpYWxCb3JkZXJJbWFnZVNvdXJjZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAg
ICBzdGF0aWMgU3R5bGVJbWFnZSogaW5pdGlhbE1hc2tCb3hJbWFnZVNvdXJjZSgpIHsgcmV0dXJu
IG51bGxwdHI7IH0KQEAgLTE1NzUsMTIgKzE1NzUsMTIgQEAgcHVibGljOgogI2lmIEVOQUJMRShD
U1MzX1RFWFQpCiAgICAgc3RhdGljIFRleHRJbmRlbnRMaW5lIGluaXRpYWxUZXh0SW5kZW50TGlu
ZSgpIHsgcmV0dXJuIFRleHRJbmRlbnRMaW5lOjpGaXJzdExpbmU7IH0KICAgICBzdGF0aWMgVGV4
dEluZGVudFR5cGUgaW5pdGlhbFRleHRJbmRlbnRUeXBlKCkgeyByZXR1cm4gVGV4dEluZGVudFR5
cGU6Ok5vcm1hbDsgfQotICAgIHN0YXRpYyBUZXh0QWxpZ25MYXN0IGluaXRpYWxUZXh0QWxpZ25M
YXN0KCkgeyByZXR1cm4gVGV4dEFsaWduTGFzdEF1dG87IH0KLSAgICBzdGF0aWMgVGV4dEp1c3Rp
ZnkgaW5pdGlhbFRleHRKdXN0aWZ5KCkgeyByZXR1cm4gVGV4dEp1c3RpZnlBdXRvOyB9CisgICAg
c3RhdGljIFRleHRBbGlnbkxhc3QgaW5pdGlhbFRleHRBbGlnbkxhc3QoKSB7IHJldHVybiBUZXh0
QWxpZ25MYXN0OjpBdXRvOyB9CisgICAgc3RhdGljIFRleHRKdXN0aWZ5IGluaXRpYWxUZXh0SnVz
dGlmeSgpIHsgcmV0dXJuIFRleHRKdXN0aWZ5OjpBdXRvOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShDVVJTT1JfVklTSUJJTElUWSkKLSAgICBzdGF0aWMgQ3Vyc29yVmlzaWJpbGl0eSBpbml0aWFs
Q3Vyc29yVmlzaWJpbGl0eSgpIHsgcmV0dXJuIEN1cnNvclZpc2liaWxpdHlBdXRvOyB9CisgICAg
c3RhdGljIEN1cnNvclZpc2liaWxpdHkgaW5pdGlhbEN1cnNvclZpc2liaWxpdHkoKSB7IHJldHVy
biBDdXJzb3JWaXNpYmlsaXR5OjpBdXRvOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShURVhUX0FV
VE9TSVpJTkcpCkBAIC0xNjE2LDcgKzE2MTYsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgVmVj
dG9yPEdyaWRUcmFja1NpemU+IGluaXRpYWxHcmlkQXV0b1JlcGVhdFRyYWNrcygpIHsgcmV0dXJu
IFZlY3RvcjxHcmlkVHJhY2tTaXplPigpOyB9CiAgICAgc3RhdGljIHVuc2lnbmVkIGluaXRpYWxH
cmlkQXV0b1JlcGVhdEluc2VydGlvblBvaW50KCkgeyByZXR1cm4gMDsgfQotICAgIHN0YXRpYyBB
dXRvUmVwZWF0VHlwZSBpbml0aWFsR3JpZEF1dG9SZXBlYXRUeXBlKCkgeyByZXR1cm4gTm9BdXRv
UmVwZWF0OyB9CisgICAgc3RhdGljIEF1dG9SZXBlYXRUeXBlIGluaXRpYWxHcmlkQXV0b1JlcGVh
dFR5cGUoKSB7IHJldHVybiBBdXRvUmVwZWF0VHlwZTo6Tm9uZTsgfQogCiAgICAgc3RhdGljIEdy
aWRBdXRvRmxvdyBpbml0aWFsR3JpZEF1dG9GbG93KCkgeyByZXR1cm4gQXV0b0Zsb3dSb3c7IH0K
IApAQCAtMTY0MSw4ICsxNjQxLDggQEAgcHVibGljOgogICAgIHN0YXRpYyB1bnNpZ25lZCBpbml0
aWFsVGFiU2l6ZSgpIHsgcmV0dXJuIDg7IH0KIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIGluaXRpYWxMaW5lR3JpZCgpIHsgcmV0dXJuIG51bGxBdG9tKCk7IH0KLSAgICBzdGF0aWMg
TGluZVNuYXAgaW5pdGlhbExpbmVTbmFwKCkgeyByZXR1cm4gTGluZVNuYXBOb25lOyB9Ci0gICAg
c3RhdGljIExpbmVBbGlnbiBpbml0aWFsTGluZUFsaWduKCkgeyByZXR1cm4gTGluZUFsaWduTm9u
ZTsgfQorICAgIHN0YXRpYyBMaW5lU25hcCBpbml0aWFsTGluZVNuYXAoKSB7IHJldHVybiBMaW5l
U25hcDo6Tm9uZTsgfQorICAgIHN0YXRpYyBMaW5lQWxpZ24gaW5pdGlhbExpbmVBbGlnbigpIHsg
cmV0dXJuIExpbmVBbGlnbjo6Tm9uZTsgfQogCiAgICAgc3RhdGljIEludFNpemUgaW5pdGlhbElu
aXRpYWxMZXR0ZXIoKSB7IHJldHVybiBJbnRTaXplKCk7IH0KICAgICBzdGF0aWMgTGluZUNsYW1w
VmFsdWUgaW5pdGlhbExpbmVDbGFtcCgpIHsgcmV0dXJuIExpbmVDbGFtcFZhbHVlKCk7IH0KQEAg
LTE3NDIsMTMgKzE3NDIsMTMgQEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lkIGNvcHlOb25Jbmhl
cml0ZWRGcm9tKGNvbnN0IE5vbkluaGVyaXRlZEZsYWdzJik7CiAKLSAgICAgICAgYm9vbCBoYXNB
bnlQdWJsaWNQc2V1ZG9TdHlsZXMoKSBjb25zdCB7IHJldHVybiBQVUJMSUNfUFNFVURPSURfTUFT
SyAmIHBzZXVkb0JpdHM7IH0KKyAgICAgICAgYm9vbCBoYXNBbnlQdWJsaWNQc2V1ZG9TdHlsZXMo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHNldWRvSWQ6OlB1YmxpY1Bz
ZXVkb0lkTWFzaykgJiBwc2V1ZG9CaXRzOyB9CiAgICAgICAgIGJvb2wgaGFzUHNldWRvU3R5bGUo
UHNldWRvSWQpIGNvbnN0OwogICAgICAgICB2b2lkIHNldEhhc1BzZXVkb1N0eWxlKFBzZXVkb0lk
KTsKICAgICAgICAgdm9pZCBzZXRIYXNQc2V1ZG9TdHlsZXMoUHNldWRvSWRTZXQpOwogCi0gICAg
ICAgIHVuc2lnbmVkIGVmZmVjdGl2ZURpc3BsYXkgOiA1OyAvLyBFRGlzcGxheQotICAgICAgICB1
bnNpZ25lZCBvcmlnaW5hbERpc3BsYXkgOiA1OyAvLyBFRGlzcGxheQorICAgICAgICB1bnNpZ25l
ZCBlZmZlY3RpdmVEaXNwbGF5IDogNTsgLy8gRGlzcGxheVR5cGUKKyAgICAgICAgdW5zaWduZWQg
b3JpZ2luYWxEaXNwbGF5IDogNTsgLy8gRGlzcGxheVR5cGUKICAgICAgICAgdW5zaWduZWQgb3Zl
cmZsb3dYIDogMzsgLy8gT3ZlcmZsb3cKICAgICAgICAgdW5zaWduZWQgb3ZlcmZsb3dZIDogMzsg
Ly8gT3ZlcmZsb3cKICAgICAgICAgdW5zaWduZWQgdmVydGljYWxBbGlnbiA6IDQ7IC8vIFZlcnRp
Y2FsQWxpZ24KQEAgLTE3NzMsNyArMTc3Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIHVuc2lnbmVk
IGlzTGluayA6IDE7CiAKICAgICAgICAgdW5zaWduZWQgc3R5bGVUeXBlIDogNDsgLy8gUHNldWRv
SWQKLSAgICAgICAgdW5zaWduZWQgcHNldWRvQml0cyA6IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
RklSU1RfSU5URVJOQUxfUFNFVURPSUQpIC0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEZJUlNUX1BV
QkxJQ19QU0VVRE9JRCkpOworICAgICAgICB1bnNpZ25lZCBwc2V1ZG9CaXRzIDogKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQc2V1ZG9JZDo6Rmlyc3RJbnRlcm5hbFBzZXVkb0lkKSAtIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQc2V1ZG9JZDo6Rmlyc3RQdWJsaWNQc2V1ZG9JZCkpOwogCiAgICAgICAg
IC8vIElmIHlvdSBhZGQgbW9yZSBzdHlsZSBiaXRzIGhlcmUsIHlvdSB3aWxsIGFsc28gbmVlZCB0
byB1cGRhdGUgUmVuZGVyU3R5bGU6Ok5vbkluaGVyaXRlZEZsYWdzOjpjb3B5Tm9uSW5oZXJpdGVk
RnJvbSgpLgogICAgIH07CkBAIC0xNzgyLDIwICsxNzgyLDIwIEBAIHByaXZhdGU6CiAgICAgICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbmhlcml0ZWRGbGFncyYpIGNvbnN0OwogICAgICAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgSW5oZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25zdCB7IHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsgfQogCi0gICAgICAgIHVuc2lnbmVkIGVtcHR5Q2VsbHMgOiAx
OyAvLyBFRW1wdHlDZWxsCi0gICAgICAgIHVuc2lnbmVkIGNhcHRpb25TaWRlIDogMjsgLy8gRUNh
cHRpb25TaWRlCi0gICAgICAgIHVuc2lnbmVkIGxpc3RTdHlsZVR5cGUgOiA3OyAvLyBFTGlzdFN0
eWxlVHlwZQotICAgICAgICB1bnNpZ25lZCBsaXN0U3R5bGVQb3NpdGlvbiA6IDE7IC8vIEVMaXN0
U3R5bGVQb3NpdGlvbgotICAgICAgICB1bnNpZ25lZCB2aXNpYmlsaXR5IDogMjsgLy8gRVZpc2li
aWxpdHkKLSAgICAgICAgdW5zaWduZWQgdGV4dEFsaWduIDogNDsgLy8gRVRleHRBbGlnbgotICAg
ICAgICB1bnNpZ25lZCB0ZXh0VHJhbnNmb3JtIDogMjsgLy8gRVRleHRUcmFuc2Zvcm0KKyAgICAg
ICAgdW5zaWduZWQgZW1wdHlDZWxscyA6IDE7IC8vIEVtcHR5Q2VsbAorICAgICAgICB1bnNpZ25l
ZCBjYXB0aW9uU2lkZSA6IDI7IC8vIENhcHRpb25TaWRlCisgICAgICAgIHVuc2lnbmVkIGxpc3RT
dHlsZVR5cGUgOiA3OyAvLyBMaXN0U3R5bGVUeXBlCisgICAgICAgIHVuc2lnbmVkIGxpc3RTdHls
ZVBvc2l0aW9uIDogMTsgLy8gTGlzdFN0eWxlUG9zaXRpb24KKyAgICAgICAgdW5zaWduZWQgdmlz
aWJpbGl0eSA6IDI7IC8vIFZpc2liaWxpdHkKKyAgICAgICAgdW5zaWduZWQgdGV4dEFsaWduIDog
NDsgLy8gVGV4dEFsaWduTW9kZQorICAgICAgICB1bnNpZ25lZCB0ZXh0VHJhbnNmb3JtIDogMjsg
Ly8gVGV4dFRyYW5zZm9ybQogICAgICAgICB1bnNpZ25lZCB0ZXh0RGVjb3JhdGlvbnMgOiBUZXh0
RGVjb3JhdGlvbkJpdHM7Ci0gICAgICAgIHVuc2lnbmVkIGN1cnNvciA6IDY7IC8vIEVDdXJzb3IK
KyAgICAgICAgdW5zaWduZWQgY3Vyc29yIDogNjsgLy8gQ3Vyc29yVHlwZQogI2lmIEVOQUJMRShD
VVJTT1JfVklTSUJJTElUWSkKICAgICAgICAgdW5zaWduZWQgY3Vyc29yVmlzaWJpbGl0eSA6IDE7
IC8vIEN1cnNvclZpc2liaWxpdHkKICNlbmRpZgogICAgICAgICB1bnNpZ25lZCBkaXJlY3Rpb24g
OiAxOyAvLyBUZXh0RGlyZWN0aW9uCi0gICAgICAgIHVuc2lnbmVkIHdoaXRlU3BhY2UgOiAzOyAv
LyBFV2hpdGVTcGFjZQorICAgICAgICB1bnNpZ25lZCB3aGl0ZVNwYWNlIDogMzsgLy8gV2hpdGVT
cGFjZQogICAgICAgICAvLyAzNSBiaXRzCiAgICAgICAgIHVuc2lnbmVkIGJvcmRlckNvbGxhcHNl
IDogMTsgLy8gQm9yZGVyQ29sbGFwc2UKICAgICAgICAgdW5zaWduZWQgYm94RGlyZWN0aW9uIDog
MTsgLy8gQm94RGlyZWN0aW9uCkBAIC0xODAzLDggKzE4MDMsOCBAQCBwcml2YXRlOgogICAgICAg
ICAvLyBub24gQ1NTMiBpbmhlcml0ZWQKICAgICAgICAgdW5zaWduZWQgcnRsT3JkZXJpbmcgOiAx
OyAvLyBPcmRlcgogICAgICAgICB1bnNpZ25lZCBwcmludENvbG9yQWRqdXN0IDogUHJpbnRDb2xv
ckFkanVzdEJpdHM7IC8vIFByaW50Q29sb3JBZGp1c3QKLSAgICAgICAgdW5zaWduZWQgcG9pbnRl
ckV2ZW50cyA6IDQ7IC8vIEVQb2ludGVyRXZlbnRzCi0gICAgICAgIHVuc2lnbmVkIGluc2lkZUxp
bmsgOiAyOyAvLyBFSW5zaWRlTGluaworICAgICAgICB1bnNpZ25lZCBwb2ludGVyRXZlbnRzIDog
NDsgLy8gUG9pbnRlckV2ZW50cworICAgICAgICB1bnNpZ25lZCBpbnNpZGVMaW5rIDogMjsgLy8g
SW5zaWRlTGluawogICAgICAgICB1bnNpZ25lZCBpbnNpZGVEZWZhdWx0QnV0dG9uIDogMTsKICAg
ICAgICAgLy8gNDYgYml0cwogCkBAIC0xODE2LDcgKzE4MTYsNyBAQCBwcml2YXRlOgogICAgIC8v
IFRoaXMgY29uc3RydWN0b3IgaXMgdXNlZCB0byBpbXBsZW1lbnQgdGhlIHJlcGxhY2Ugb3BlcmF0
aW9uLgogICAgIFJlbmRlclN0eWxlKFJlbmRlclN0eWxlJiwgUmVuZGVyU3R5bGUmJik7CiAKLSAg
ICBFRGlzcGxheSBvcmlnaW5hbERpc3BsYXkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxF
RGlzcGxheT4obV9ub25Jbmhlcml0ZWRGbGFncy5vcmlnaW5hbERpc3BsYXkpOyB9CisgICAgRGlz
cGxheVR5cGUgb3JpZ2luYWxEaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RGlz
cGxheVR5cGU+KG1fbm9uSW5oZXJpdGVkRmxhZ3Mub3JpZ2luYWxEaXNwbGF5KTsgfQogCiAgICAg
Ym9vbCBoYXNBdXRvTGVmdEFuZFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbGVmdCgpLmlzQXV0bygp
ICYmIHJpZ2h0KCkuaXNBdXRvKCk7IH0KICAgICBib29sIGhhc0F1dG9Ub3BBbmRCb3R0b20oKSBj
b25zdCB7IHJldHVybiB0b3AoKS5pc0F1dG8oKSAmJiBib3R0b20oKS5pc0F1dG8oKTsgfQpAQCAt
MTgyNSwxMSArMTgyNSwxMSBAQCBwcml2YXRlOgogCiAgICAgTGF5b3V0Qm94RXh0ZW50IGdldFNo
YWRvd0luc2V0RXh0ZW50KGNvbnN0IFNoYWRvd0RhdGEqKSBjb25zdDsKIAotICAgIHN0YXRpYyBi
b29sIGlzRGlzcGxheVJlcGxhY2VkVHlwZShFRGlzcGxheSk7Ci0gICAgc3RhdGljIGJvb2wgaXNE
aXNwbGF5SW5saW5lVHlwZShFRGlzcGxheSk7Ci0gICAgc3RhdGljIGJvb2wgaXNEaXNwbGF5Rmxl
eGlibGVCb3goRURpc3BsYXkpOwotICAgIHN0YXRpYyBib29sIGlzRGlzcGxheUdyaWRCb3goRURp
c3BsYXkpOwotICAgIHN0YXRpYyBib29sIGlzRGlzcGxheUZsZXhpYmxlT3JHcmlkQm94KEVEaXNw
bGF5KTsKKyAgICBzdGF0aWMgYm9vbCBpc0Rpc3BsYXlSZXBsYWNlZFR5cGUoRGlzcGxheVR5cGUp
OworICAgIHN0YXRpYyBib29sIGlzRGlzcGxheUlubGluZVR5cGUoRGlzcGxheVR5cGUpOworICAg
IHN0YXRpYyBib29sIGlzRGlzcGxheUZsZXhpYmxlQm94KERpc3BsYXlUeXBlKTsKKyAgICBzdGF0
aWMgYm9vbCBpc0Rpc3BsYXlHcmlkQm94KERpc3BsYXlUeXBlKTsKKyAgICBzdGF0aWMgYm9vbCBp
c0Rpc3BsYXlGbGV4aWJsZU9yR3JpZEJveChEaXNwbGF5VHlwZSk7CiAKICAgICBDb2xvciBjb2xv
ckluY2x1ZGluZ0ZhbGxiYWNrKENTU1Byb3BlcnR5SUQgY29sb3JQcm9wZXJ0eSwgYm9vbCB2aXNp
dGVkTGluaykgY29uc3Q7CiAKQEAgLTE5MjAsMjMgKzE5MjAsMjMgQEAgaW5saW5lIHZvaWQgUmVu
ZGVyU3R5bGU6Ok5vbkluaGVyaXRlZEZsYQogCiBpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6Tm9u
SW5oZXJpdGVkRmxhZ3M6Omhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkIHBzZXVkbykgY29uc3QKIHsK
LSAgICBBU1NFUlQocHNldWRvID4gTk9QU0VVRE8pOwotICAgIEFTU0VSVChwc2V1ZG8gPCBGSVJT
VF9JTlRFUk5BTF9QU0VVRE9JRCk7Ci0gICAgcmV0dXJuIHBzZXVkb0JpdHMgJiAoMSA8PCAocHNl
dWRvIC0gMSAvKiBOT1BTVUVETyAqLykpOworICAgIEFTU0VSVChwc2V1ZG8gPiBQc2V1ZG9JZDo6
Tm9uZSk7CisgICAgQVNTRVJUKHBzZXVkbyA8IFBzZXVkb0lkOjpGaXJzdEludGVybmFsUHNldWRv
SWQpOworICAgIHJldHVybiBwc2V1ZG9CaXRzICYgKDEgPDwgKHN0YXRpY19jYXN0PHVuc2lnbmVk
Pihwc2V1ZG8pIC0gMSAvKiBQc2V1ZG9JZDo6Tm9uZSAqLykpOwogfQogCiBpbmxpbmUgdm9pZCBS
ZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OnNldEhhc1BzZXVkb1N0eWxlKFBzZXVkb0lk
IHBzZXVkbykKIHsKLSAgICBBU1NFUlQocHNldWRvID4gTk9QU0VVRE8pOwotICAgIEFTU0VSVChw
c2V1ZG8gPCBGSVJTVF9JTlRFUk5BTF9QU0VVRE9JRCk7Ci0gICAgcHNldWRvQml0cyB8PSAxIDw8
IChwc2V1ZG8gLSAxIC8qIE5PUFNVRURPICovKTsKKyAgICBBU1NFUlQocHNldWRvID4gUHNldWRv
SWQ6Ok5vbmUpOworICAgIEFTU0VSVChwc2V1ZG8gPCBQc2V1ZG9JZDo6Rmlyc3RJbnRlcm5hbFBz
ZXVkb0lkKTsKKyAgICBwc2V1ZG9CaXRzIHw9IDEgPDwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihw
c2V1ZG8pIC0gMSAvKiBQc2V1ZG9JZDo6Tm9uZSAqLyk7CiB9CiAKIGlubGluZSB2b2lkIFJlbmRl
clN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6c2V0SGFzUHNldWRvU3R5bGVzKFBzZXVkb0lkU2V0
IHBzZXVkb0lkU2V0KQogewogICAgIEFTU0VSVChwc2V1ZG9JZFNldCk7Ci0gICAgQVNTRVJUKChw
c2V1ZG9JZFNldC5kYXRhKCkgJiBQVUJMSUNfUFNFVURPSURfTUFTSykgPT0gcHNldWRvSWRTZXQu
ZGF0YSgpKTsKLSAgICBwc2V1ZG9CaXRzIHw9IHBzZXVkb0lkU2V0LmRhdGEoKSA+PiAxOyAvLyBT
aGlmdCBkb3duIGFzIHdlIGRvIG5vdCBzdG9yZSBhIGJpdCBmb3IgTk9QU1VFRE8uCisgICAgQVNT
RVJUKChwc2V1ZG9JZFNldC5kYXRhKCkgJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHNldWRvSWQ6
OlB1YmxpY1BzZXVkb0lkTWFzaykpID09IHBzZXVkb0lkU2V0LmRhdGEoKSk7CisgICAgcHNldWRv
Qml0cyB8PSBwc2V1ZG9JZFNldC5kYXRhKCkgPj4gMTsgLy8gU2hpZnQgZG93biBhcyB3ZSBkbyBu
b3Qgc3RvcmUgYSBiaXQgZm9yIFBzZXVkb0lkOjpOb25lLgogfQogCiBpbmxpbmUgYm9vbCBSZW5k
ZXJTdHlsZTo6SW5oZXJpdGVkRmxhZ3M6Om9wZXJhdG9yPT0oY29uc3QgSW5oZXJpdGVkRmxhZ3Mm
IG90aGVyKSBjb25zdApAQCAtMjAwNSwyMiArMjAwNSwyMiBAQCBpbmxpbmUgYm9vbCBSZW5kZXJT
dHlsZTo6aGFzQmFja2dyb3VuZCgpCiAgICAgcmV0dXJuIHZpc2l0ZWREZXBlbmRlbnRDb2xvcihD
U1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikuaXNWaXNpYmxlKCkgfHwgIGhhc0JhY2tncm91bmRJ
bWFnZSgpOwogfQogCi1pbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6YXV0b1dyYXAoRVdoaXRlU3Bh
Y2Ugd2hpdGVTcGFjZSkKK2lubGluZSBib29sIFJlbmRlclN0eWxlOjphdXRvV3JhcChXaGl0ZVNw
YWNlIHdoaXRlU3BhY2UpCiB7CiAgICAgLy8gTm93cmFwIGFuZCBwcmUgZG9uJ3QgYXV0b21hdGlj
YWxseSB3cmFwLgotICAgIHJldHVybiB3aGl0ZVNwYWNlICE9IE5PV1JBUCAmJiB3aGl0ZVNwYWNl
ICE9IFBSRTsKKyAgICByZXR1cm4gd2hpdGVTcGFjZSAhPSBXaGl0ZVNwYWNlOjpOb1dyYXAgJiYg
d2hpdGVTcGFjZSAhPSBXaGl0ZVNwYWNlOjpQcmU7CiB9CiAKLWlubGluZSBib29sIFJlbmRlclN0
eWxlOjpwcmVzZXJ2ZU5ld2xpbmUoRVdoaXRlU3BhY2Ugd2hpdGVTcGFjZSkKK2lubGluZSBib29s
IFJlbmRlclN0eWxlOjpwcmVzZXJ2ZU5ld2xpbmUoV2hpdGVTcGFjZSB3aGl0ZVNwYWNlKQogewog
ICAgIC8vIE5vcm1hbCBhbmQgbm93cmFwIGRvIG5vdCBwcmVzZXJ2ZSBuZXdsaW5lcy4KLSAgICBy
ZXR1cm4gd2hpdGVTcGFjZSAhPSBOT1JNQUwgJiYgd2hpdGVTcGFjZSAhPSBOT1dSQVA7CisgICAg
cmV0dXJuIHdoaXRlU3BhY2UgIT0gV2hpdGVTcGFjZTo6Tm9ybWFsICYmIHdoaXRlU3BhY2UgIT0g
V2hpdGVTcGFjZTo6Tm9XcmFwOwogfQogCi1pbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6Y29sbGFw
c2VXaGl0ZVNwYWNlKEVXaGl0ZVNwYWNlIHdzKQoraW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmNv
bGxhcHNlV2hpdGVTcGFjZShXaGl0ZVNwYWNlIHdzKQogewogICAgIC8vIFByZSBhbmQgcHJld3Jh
cCBkbyBub3QgY29sbGFwc2Ugd2hpdGVzcGFjZS4KLSAgICByZXR1cm4gd3MgIT0gUFJFICYmIHdz
ICE9IFBSRV9XUkFQOworICAgIHJldHVybiB3cyAhPSBXaGl0ZVNwYWNlOjpQcmUgJiYgd3MgIT0g
V2hpdGVTcGFjZTo6UHJlV3JhcDsKIH0KIAogaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmlzQ29s
bGFwc2libGVXaGl0ZVNwYWNlKFVDaGFyIGNoYXJhY3RlcikgY29uc3QKQEAgLTIwMzgsNyArMjAz
OCw3IEBAIGlubGluZSBib29sIFJlbmRlclN0eWxlOjppc0NvbGxhcHNpYmxlV2gKIAogaW5saW5l
IGJvb2wgUmVuZGVyU3R5bGU6OmJyZWFrT25seUFmdGVyV2hpdGVTcGFjZSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHdoaXRlU3BhY2UoKSA9PSBQUkVfV1JBUCB8fCBsaW5lQnJlYWsoKSA9PSBMaW5l
QnJlYWs6OkFmdGVyV2hpdGVTcGFjZTsKKyAgICByZXR1cm4gd2hpdGVTcGFjZSgpID09IFdoaXRl
U3BhY2U6OlByZVdyYXAgfHwgbGluZUJyZWFrKCkgPT0gTGluZUJyZWFrOjpBZnRlcldoaXRlU3Bh
Y2U7CiB9CiAKIGlubGluZSBib29sIFJlbmRlclN0eWxlOjpicmVha1dvcmRzKCkgY29uc3QKQEAg
LTIwNDksNyArMjA0OSw3IEBAIGlubGluZSBib29sIFJlbmRlclN0eWxlOjpicmVha1dvcmRzKCkg
Y28KIGlubGluZSBib29sIFJlbmRlclN0eWxlOjpoYXNJbmxpbmVDb2x1bW5BeGlzKCkgY29uc3QK
IHsKICAgICBhdXRvIGF4aXMgPSBjb2x1bW5BeGlzKCk7Ci0gICAgcmV0dXJuIChheGlzID09IEF1
dG9Db2x1bW5BeGlzIHx8IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPT0gKGF4aXMgPT0gSG9y
aXpvbnRhbENvbHVtbkF4aXMpKSAmJiAhaGFzTGluZXNDbGFtcCgpOworICAgIHJldHVybiAoYXhp
cyA9PSBDb2x1bW5BeGlzOjpBdXRvIHx8IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPT0gKGF4
aXMgPT0gQ29sdW1uQXhpczo6SG9yaXpvbnRhbCkpICYmICFoYXNMaW5lc0NsYW1wKCk7CiB9CiAK
IGlubGluZSBJbWFnZU9yaWVudGF0aW9uRW51bSBSZW5kZXJTdHlsZTo6aW1hZ2VPcmllbnRhdGlv
bigpIGNvbnN0CkBAIC0yMTcwLDkgKzIxNzAsOSBAQCBpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6
d2lsbENoYW5nZUNyZWF0CiAKIGlubGluZSBib29sIFJlbmRlclN0eWxlOjppc0Rpc3BsYXlSZWdp
b25UeXBlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZGlzcGxheSgpID09IEJMT0NLIHx8IGRpc3Bs
YXkoKSA9PSBJTkxJTkVfQkxPQ0sKLSAgICAgICAgfHwgZGlzcGxheSgpID09IFRBQkxFX0NFTEwg
fHwgZGlzcGxheSgpID09IFRBQkxFX0NBUFRJT04KLSAgICAgICAgfHwgZGlzcGxheSgpID09IExJ
U1RfSVRFTTsKKyAgICByZXR1cm4gZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpCbG9jayB8fCBk
aXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OklubGluZUJsb2NrCisgICAgICAgIHx8IGRpc3BsYXko
KSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDZWxsIHx8IGRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6
VGFibGVDYXB0aW9uCisgICAgICAgIHx8IGRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6TGlzdEl0
ZW07CiB9CiAKIGlubGluZSBib29sIFJlbmRlclN0eWxlOjpzZXRXcml0aW5nTW9kZShXcml0aW5n
TW9kZSB2KQpAQCAtMjE5MywyOCArMjE5MywyOCBAQCBpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6
Z2V0U2hhZG93QmxvY2tECiAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBn
ZXRTaGFkb3dWZXJ0aWNhbEV4dGVudChzaGFkb3csIGxvZ2ljYWxUb3AsIGxvZ2ljYWxCb3R0b20p
IDogZ2V0U2hhZG93SG9yaXpvbnRhbEV4dGVudChzaGFkb3csIGxvZ2ljYWxUb3AsIGxvZ2ljYWxC
b3R0b20pOwogfQogCi1pbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6aXNEaXNwbGF5UmVwbGFjZWRU
eXBlKEVEaXNwbGF5IGRpc3BsYXkpCitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6aXNEaXNwbGF5
UmVwbGFjZWRUeXBlKERpc3BsYXlUeXBlIGRpc3BsYXkpCiB7Ci0gICAgcmV0dXJuIGRpc3BsYXkg
PT0gSU5MSU5FX0JMT0NLIHx8IGRpc3BsYXkgPT0gSU5MSU5FX0JPWCB8fCBkaXNwbGF5ID09IElO
TElORV9GTEVYCi0gICAgICAgIHx8IGRpc3BsYXkgPT0gSU5MSU5FX0dSSUQgfHwgZGlzcGxheSA9
PSBJTkxJTkVfVEFCTEU7CisgICAgcmV0dXJuIGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OklubGlu
ZUJsb2NrIHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OklubGluZUJveCB8fCBkaXNwbGF5ID09
IERpc3BsYXlUeXBlOjpJbmxpbmVGbGV4CisgICAgICAgIHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5
cGU6OklubGluZUdyaWQgfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lVGFibGU7CiB9
CiAKLWlubGluZSBib29sIFJlbmRlclN0eWxlOjppc0Rpc3BsYXlJbmxpbmVUeXBlKEVEaXNwbGF5
IGRpc3BsYXkpCitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6aXNEaXNwbGF5SW5saW5lVHlwZShE
aXNwbGF5VHlwZSBkaXNwbGF5KQogewotICAgIHJldHVybiBkaXNwbGF5ID09IElOTElORSB8fCBp
c0Rpc3BsYXlSZXBsYWNlZFR5cGUoZGlzcGxheSk7CisgICAgcmV0dXJuIGRpc3BsYXkgPT0gRGlz
cGxheVR5cGU6OklubGluZSB8fCBpc0Rpc3BsYXlSZXBsYWNlZFR5cGUoZGlzcGxheSk7CiB9CiAK
LWlubGluZSBib29sIFJlbmRlclN0eWxlOjppc0Rpc3BsYXlGbGV4aWJsZUJveChFRGlzcGxheSBk
aXNwbGF5KQoraW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmlzRGlzcGxheUZsZXhpYmxlQm94KERp
c3BsYXlUeXBlIGRpc3BsYXkpCiB7Ci0gICAgcmV0dXJuIGRpc3BsYXkgPT0gRkxFWCB8fCBkaXNw
bGF5ID09IElOTElORV9GTEVYOworICAgIHJldHVybiBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpG
bGV4IHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OklubGluZUZsZXg7CiB9CiAKLWlubGluZSBi
b29sIFJlbmRlclN0eWxlOjppc0Rpc3BsYXlHcmlkQm94KEVEaXNwbGF5IGRpc3BsYXkpCitpbmxp
bmUgYm9vbCBSZW5kZXJTdHlsZTo6aXNEaXNwbGF5R3JpZEJveChEaXNwbGF5VHlwZSBkaXNwbGF5
KQogewotICAgIHJldHVybiBkaXNwbGF5ID09IEdSSUQgfHwgZGlzcGxheSA9PSBJTkxJTkVfR1JJ
RDsKKyAgICByZXR1cm4gZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6R3JpZCB8fCBkaXNwbGF5ID09
IERpc3BsYXlUeXBlOjpJbmxpbmVHcmlkOwogfQogCi1pbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6
aXNEaXNwbGF5RmxleGlibGVPckdyaWRCb3goRURpc3BsYXkgZGlzcGxheSkKK2lubGluZSBib29s
IFJlbmRlclN0eWxlOjppc0Rpc3BsYXlGbGV4aWJsZU9yR3JpZEJveChEaXNwbGF5VHlwZSBkaXNw
bGF5KQogewogICAgIHJldHVybiBpc0Rpc3BsYXlGbGV4aWJsZUJveChkaXNwbGF5KSB8fCBpc0Rp
c3BsYXlHcmlkQm94KGRpc3BsYXkpOwogfQpAQCAtMjI0Niw3ICsyMjQ2LDcgQEAgaW5saW5lIHZv
aWQgUmVuZGVyU3R5bGU6OnNldEJveFJlZmxlY3QoUgogCiBpbmxpbmUgYm9vbCBwc2V1ZG9FbGVt
ZW50UmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7Ci0gICAgcmV0
dXJuIHN0eWxlICYmIHN0eWxlLT5kaXNwbGF5KCkgIT0gTk9ORSAmJiBzdHlsZS0+Y29udGVudERh
dGEoKTsKKyAgICByZXR1cm4gc3R5bGUgJiYgc3R5bGUtPmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlw
ZTo6Tm9uZSAmJiBzdHlsZS0+Y29udGVudERhdGEoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29u
c3RhbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGVDb25zdGFudHMuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw2ICszMCwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1RleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFZpc2liaWxpdHkgdmlzaWJpbGl0eSkKK3sK
KyAgICBzd2l0Y2ggKHZpc2liaWxpdHkpIHsKKyAgICBjYXNlIFZpc2liaWxpdHk6OlZpc2libGU6
IHRzIDw8ICJ2aXNpYmxlIjsgYnJlYWs7CisgICAgY2FzZSBWaXNpYmlsaXR5OjpIaWRkZW46IHRz
IDw8ICJoaWRkZW4iOyBicmVhazsKKyAgICBjYXNlIFZpc2liaWxpdHk6OkNvbGxhcHNlOiB0cyA8
PCAiY29sbGFwc2UiOyBicmVhazsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRzOworfQorCiBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJbWFnZVJlbmRlcmluZyBpbWFn
ZVJlbmRlcmluZykKIHsKICAgICBzd2l0Y2ggKGltYWdlUmVuZGVyaW5nKSB7CkBAIC0xMTEsNyAr
MTIyLDcgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgRQogCiBib29s
IGFsd2F5c1BhZ2VCcmVhayhCcmVha0JldHdlZW4gYmV0d2VlbikKIHsKLSAgICByZXR1cm4gYmV0
d2VlbiA+PSBQYWdlQnJlYWtCZXR3ZWVuOworICAgIHJldHVybiBiZXR3ZWVuID49IEJyZWFrQmV0
d2Vlbjo6UGFnZTsKIH0KIAogY29uc3QgZmxvYXQgZGVmYXVsdE1pdGVyTGltaXQgPSA0OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
Q29uc3RhbnRzLmgJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC03NywzMCAr
NzcsMzIgQEAgZW51bSBjbGFzcyBTdHlsZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aQogfTsKIAog
Ly8gU3RhdGljIHBzZXVkbyBzdHlsZXMuIER5bmFtaWMgb25lcyBhcmUgcHJvZHVjZWQgb24gdGhl
IGZseS4KLWVudW0gUHNldWRvSWQgOiB1bnNpZ25lZCBjaGFyIHsKLSAgICAvLyBUaGUgb3JkZXIg
bXVzdCBiZSBOT1AgSUQsIHB1YmxpYyBJRHMsIGFuZCB0aGVuIGludGVybmFsIElEcy4KLSAgICBO
T1BTRVVETywKLSAgICBGSVJTVF9MSU5FLAotICAgIEZJUlNUX0xFVFRFUiwKLSAgICBNQVJLRVIs
Ci0gICAgQkVGT1JFLAotICAgIEFGVEVSLAotICAgIFNFTEVDVElPTiwKLSAgICBTQ1JPTExCQVIs
Ci0KLSAgICAvLyBJbnRlcm5hbCBJRHMgZm9sbG93OgotICAgIFNDUk9MTEJBUl9USFVNQiwKLSAg
ICBTQ1JPTExCQVJfQlVUVE9OLAotICAgIFNDUk9MTEJBUl9UUkFDSywKLSAgICBTQ1JPTExCQVJf
VFJBQ0tfUElFQ0UsCi0gICAgU0NST0xMQkFSX0NPUk5FUiwKLSAgICBSRVNJWkVSLAotCi0gICAg
QUZURVJfTEFTVF9JTlRFUk5BTF9QU0VVRE9JRCwKLQotICAgIEZJUlNUX1BVQkxJQ19QU0VVRE9J
RCA9IEZJUlNUX0xJTkUsCi0gICAgRklSU1RfSU5URVJOQUxfUFNFVURPSUQgPSBTQ1JPTExCQVJf
VEhVTUIsCi0gICAgUFVCTElDX1BTRVVET0lEX01BU0sgPSAoKDEgPDwgRklSU1RfSU5URVJOQUxf
UFNFVURPSUQpIC0gMSkgJiB+KCgxIDw8IEZJUlNUX1BVQkxJQ19QU0VVRE9JRCkgLSAxKQorZW51
bSBjbGFzcyBQc2V1ZG9JZCA6IHVuc2lnbmVkIGNoYXIgeworICAgIC8vIFRoZSBvcmRlciBtdXN0
IGJlIE5vbmUsIHB1YmxpYyBJRHMsIGFuZCB0aGVuIGludGVybmFsIElEcy4KKyAgICBOb25lLAor
CisgICAgLy8gUHVibGljOgorICAgIEZpcnN0TGluZSwKKyAgICBGaXJzdExldHRlciwKKyAgICBN
YXJrZXIsCisgICAgQmVmb3JlLAorICAgIEFmdGVyLAorICAgIFNlbGVjdGlvbiwKKyAgICBTY3Jv
bGxiYXIsCisKKyAgICAvLyBJbnRlcm5hbDoKKyAgICBTY3JvbGxiYXJUaHVtYiwKKyAgICBTY3Jv
bGxiYXJCdXR0b24sCisgICAgU2Nyb2xsYmFyVHJhY2ssCisgICAgU2Nyb2xsYmFyVHJhY2tQaWVj
ZSwKKyAgICBTY3JvbGxiYXJDb3JuZXIsCisgICAgUmVzaXplciwKKworICAgIEFmdGVyTGFzdElu
dGVybmFsUHNldWRvSWQsCisKKyAgICBGaXJzdFB1YmxpY1BzZXVkb0lkID0gRmlyc3RMaW5lLAor
ICAgIEZpcnN0SW50ZXJuYWxQc2V1ZG9JZCA9IFNjcm9sbGJhclRodW1iLAorICAgIFB1YmxpY1Bz
ZXVkb0lkTWFzayA9ICgoMSA8PCBGaXJzdEludGVybmFsUHNldWRvSWQpIC0gMSkgJiB+KCgxIDw8
IEZpcnN0UHVibGljUHNldWRvSWQpIC0gMSkKIH07CiAKIGNsYXNzIFBzZXVkb0lkU2V0IHsKQEAg
LTEyNCwxNCArMTI2LDE0IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzKFBzZXVkb0lkIHBzZXVk
b0lkKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKChzaXplb2YobV9kYXRhKSAqIDgpID4g
cHNldWRvSWQpOwotICAgICAgICByZXR1cm4gbV9kYXRhICYgKDFVIDw8IHBzZXVkb0lkKTsKKyAg
ICAgICAgQVNTRVJUKChzaXplb2YobV9kYXRhKSAqIDgpID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHBzZXVkb0lkKSk7CisgICAgICAgIHJldHVybiBtX2RhdGEgJiAoMVUgPDwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHBzZXVkb0lkKSk7CiAgICAgfQogCiAgICAgdm9pZCBhZGQoUHNldWRvSWQgcHNl
dWRvSWQpCiAgICAgewotICAgICAgICBBU1NFUlQoKHNpemVvZihtX2RhdGEpICogOCkgPiBwc2V1
ZG9JZCk7Ci0gICAgICAgIG1fZGF0YSB8PSAoMVUgPDwgcHNldWRvSWQpOworICAgICAgICBBU1NF
UlQoKHNpemVvZihtX2RhdGEpICogOCkgPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHNldWRvSWQp
KTsKKyAgICAgICAgbV9kYXRhIHw9ICgxVSA8PCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHNldWRv
SWQpKTsKICAgICB9CiAKICAgICB2b2lkIG1lcmdlKFBzZXVkb0lkU2V0IHNvdXJjZSkKQEAgLTU0
MywxNCArNTQ1LDE0IEBAIGVudW0gY2xhc3MgUmVzaXplIHsKIH07CiAKIC8vIFRoZSBvcmRlciBv
ZiB0aGlzIGVudW0gbXVzdCBtYXRjaCB0aGUgb3JkZXIgb2YgdGhlIGxpc3Qgc3R5bGUgdHlwZXMg
aW4gQ1NTVmFsdWVLZXl3b3Jkcy5pbi4KLWVudW0gRUxpc3RTdHlsZVR5cGUgeworZW51bSBjbGFz
cyBMaXN0U3R5bGVUeXBlIHsKICAgICBEaXNjLAogICAgIENpcmNsZSwKICAgICBTcXVhcmUsCi0g
ICAgRGVjaW1hbExpc3RTdHlsZSwKKyAgICBEZWNpbWFsLAogICAgIERlY2ltYWxMZWFkaW5nWmVy
bywKICAgICBBcmFiaWNJbmRpYywKLSAgICBCaW5hcnlMaXN0U3R5bGUsCisgICAgQmluYXJ5LAog
ICAgIEJlbmdhbGksCiAgICAgQ2FtYm9kaWFuLAogICAgIEtobWVyLApAQCAtNjI0LDcgKzYyNiw3
IEBAIGVudW0gRUxpc3RTdHlsZVR5cGUgewogICAgIEthdGFrYW5hLAogICAgIEhpcmFnYW5hSXJv
aGEsCiAgICAgS2F0YWthbmFJcm9oYSwKLSAgICBOb25lTGlzdFN0eWxlCisgICAgTm9uZQogfTsK
IAogZW51bSBjbGFzcyBRdW90ZVR5cGUgewpAQCAtNjM0LDUwICs2MzYsNTAgQEAgZW51bSBjbGFz
cyBRdW90ZVR5cGUgewogICAgIE5vQ2xvc2VRdW90ZQogfTsKIAotZW51bSBFQm9yZGVyRml0IHsK
LSAgICBCb3JkZXJGaXRCb3JkZXIsCi0gICAgQm9yZGVyRml0TGluZXMKLX07Ci0KLWVudW0gRUFu
aW1hdGlvbkZpbGxNb2RlIHsKLSAgICBBbmltYXRpb25GaWxsTW9kZU5vbmUsCi0gICAgQW5pbWF0
aW9uRmlsbE1vZGVGb3J3YXJkcywKLSAgICBBbmltYXRpb25GaWxsTW9kZUJhY2t3YXJkcywKLSAg
ICBBbmltYXRpb25GaWxsTW9kZUJvdGgKLX07Ci0KLWVudW0gRUFuaW1QbGF5U3RhdGUgewotICAg
IEFuaW1QbGF5U3RhdGVQbGF5aW5nID0gMHgwLAotICAgIEFuaW1QbGF5U3RhdGVQYXVzZWQgPSAw
eDEKLX07Ci0KLWVudW0gRVdoaXRlU3BhY2UgewotICAgIE5PUk1BTCwKLSAgICBQUkUsCi0gICAg
UFJFX1dSQVAsCi0gICAgUFJFX0xJTkUsCi0gICAgTk9XUkFQLAotICAgIEtIVE1MX05PV1JBUAor
ZW51bSBjbGFzcyBCb3JkZXJGaXQgeworICAgIEJvcmRlciwKKyAgICBMaW5lcworfTsKKworZW51
bSBjbGFzcyBBbmltYXRpb25GaWxsTW9kZSB7CisgICAgTm9uZSwKKyAgICBGb3J3YXJkcywKKyAg
ICBCYWNrd2FyZHMsCisgICAgQm90aAorfTsKKworZW51bSBjbGFzcyBBbmltYXRpb25QbGF5U3Rh
dGUgeworICAgIFBsYXlpbmcgPSAweDAsCisgICAgUGF1c2VkID0gMHgxCit9OworCitlbnVtIGNs
YXNzIFdoaXRlU3BhY2UgeworICAgIE5vcm1hbCwKKyAgICBQcmUsCisgICAgUHJlV3JhcCwKKyAg
ICBQcmVMaW5lLAorICAgIE5vV3JhcCwKKyAgICBLSFRNTE5vV3JhcAogfTsKIAogLy8gVGhlIG9y
ZGVyIG9mIHRoaXMgZW51bSBtdXN0IG1hdGNoIHRoZSBvcmRlciBvZiB0aGUgdGV4dCBhbGlnbiB2
YWx1ZXMgaW4gQ1NTVmFsdWVLZXl3b3Jkcy5pbi4KLWVudW0gRVRleHRBbGlnbiB7Ci0gICAgTEVG
VCwKLSAgICBSSUdIVCwKLSAgICBDRU5URVIsCi0gICAgSlVTVElGWSwKLSAgICBXRUJLSVRfTEVG
VCwKLSAgICBXRUJLSVRfUklHSFQsCi0gICAgV0VCS0lUX0NFTlRFUiwKLSAgICBUQVNUQVJULAot
ICAgIFRBRU5ELAotfTsKLQotZW51bSBFVGV4dFRyYW5zZm9ybSB7Ci0gICAgQ0FQSVRBTElaRSwK
LSAgICBVUFBFUkNBU0UsCi0gICAgTE9XRVJDQVNFLAotICAgIFRUTk9ORQorZW51bSBjbGFzcyBU
ZXh0QWxpZ25Nb2RlIHsKKyAgICBMZWZ0LAorICAgIFJpZ2h0LAorICAgIENlbnRlciwKKyAgICBK
dXN0aWZ5LAorICAgIFdlYktpdExlZnQsCisgICAgV2ViS2l0UmlnaHQsCisgICAgV2ViS2l0Q2Vu
dGVyLAorICAgIFN0YXJ0LAorICAgIEVuZCwKK307CisKK2VudW0gY2xhc3MgVGV4dFRyYW5zZm9y
bSB7CisgICAgQ2FwaXRhbGl6ZSwKKyAgICBVcHBlcmNhc2UsCisgICAgTG93ZXJjYXNlLAorICAg
IE5vbmUKIH07CiAKICNpZiBFTkFCTEUoTEVUVEVSUFJFU1MpCkBAIC02ODYsMjE2ICs2ODgsMjE4
IEBAIHN0YXRpYyBjb25zdCBzaXplX3QgVGV4dERlY29yYXRpb25CaXRzID0KIHN0YXRpYyBjb25z
dCBzaXplX3QgVGV4dERlY29yYXRpb25CaXRzID0gNDsKICNlbmRpZgogZW51bSBUZXh0RGVjb3Jh
dGlvbiB7Ci0gICAgVGV4dERlY29yYXRpb25Ob25lID0gMHgwLAotICAgIFRleHREZWNvcmF0aW9u
VW5kZXJsaW5lID0gMHgxLAotICAgIFRleHREZWNvcmF0aW9uT3ZlcmxpbmUgPSAweDIsCi0gICAg
VGV4dERlY29yYXRpb25MaW5lVGhyb3VnaCA9IDB4NCwKLSAgICBUZXh0RGVjb3JhdGlvbkJsaW5r
ID0gMHg4LAorICAgIFRleHREZWNvcmF0aW9uTm9uZSAgICAgICAgICA9IDAsCisgICAgVGV4dERl
Y29yYXRpb25VbmRlcmxpbmUgICAgID0gMSA8PCAwLAorICAgIFRleHREZWNvcmF0aW9uT3Zlcmxp
bmUgICAgICA9IDEgPDwgMSwKKyAgICBUZXh0RGVjb3JhdGlvbkxpbmVUaHJvdWdoICAgPSAxIDw8
IDIsCisgICAgVGV4dERlY29yYXRpb25CbGluayAgICAgICAgID0gMSA8PCAzLAogI2lmIEVOQUJM
RShMRVRURVJQUkVTUykKLSAgICBUZXh0RGVjb3JhdGlvbkxldHRlcnByZXNzID0gMHgxMCwKKyAg
ICBUZXh0RGVjb3JhdGlvbkxldHRlcnByZXNzICAgPSAxIDw8IDQsCiAjZW5kaWYKIH07CiBpbmxp
bmUgVGV4dERlY29yYXRpb24gb3BlcmF0b3J8KFRleHREZWNvcmF0aW9uIGEsIFRleHREZWNvcmF0
aW9uIGIpIHsgcmV0dXJuIFRleHREZWNvcmF0aW9uKGludChhKSB8IGludChiKSk7IH0KIGlubGlu
ZSBUZXh0RGVjb3JhdGlvbiYgb3BlcmF0b3J8PShUZXh0RGVjb3JhdGlvbiYgYSwgVGV4dERlY29y
YXRpb24gYikgeyByZXR1cm4gYSA9IGEgfCBiOyB9CiAKLWVudW0gVGV4dERlY29yYXRpb25TdHls
ZSB7Ci0gICAgVGV4dERlY29yYXRpb25TdHlsZVNvbGlkLAotICAgIFRleHREZWNvcmF0aW9uU3R5
bGVEb3VibGUsCi0gICAgVGV4dERlY29yYXRpb25TdHlsZURvdHRlZCwKLSAgICBUZXh0RGVjb3Jh
dGlvblN0eWxlRGFzaGVkLAotICAgIFRleHREZWNvcmF0aW9uU3R5bGVXYXZ5CitlbnVtIGNsYXNz
IFRleHREZWNvcmF0aW9uU3R5bGUgeworICAgIFNvbGlkLAorICAgIERvdWJsZSwKKyAgICBEb3R0
ZWQsCisgICAgRGFzaGVkLAorICAgIFdhdnkKIH07CiAKICNpZiBFTkFCTEUoQ1NTM19URVhUKQot
ZW51bSBUZXh0QWxpZ25MYXN0IHsKLSAgICBUZXh0QWxpZ25MYXN0QXV0bywKLSAgICBUZXh0QWxp
Z25MYXN0U3RhcnQsCi0gICAgVGV4dEFsaWduTGFzdEVuZCwKLSAgICBUZXh0QWxpZ25MYXN0TGVm
dCwKLSAgICBUZXh0QWxpZ25MYXN0UmlnaHQsCi0gICAgVGV4dEFsaWduTGFzdENlbnRlciwKLSAg
ICBUZXh0QWxpZ25MYXN0SnVzdGlmeQorZW51bSBjbGFzcyBUZXh0QWxpZ25MYXN0IHsKKyAgICBB
dXRvLAorICAgIFN0YXJ0LAorICAgIEVuZCwKKyAgICBMZWZ0LAorICAgIFJpZ2h0LAorICAgIENl
bnRlciwKKyAgICBKdXN0aWZ5CiB9OwogCi1lbnVtIFRleHRKdXN0aWZ5IHsKLSAgICBUZXh0SnVz
dGlmeUF1dG8sCi0gICAgVGV4dEp1c3RpZnlOb25lLAotICAgIFRleHRKdXN0aWZ5SW50ZXJXb3Jk
LAotICAgIFRleHRKdXN0aWZ5RGlzdHJpYnV0ZQorZW51bSBjbGFzcyBUZXh0SnVzdGlmeSB7Cisg
ICAgQXV0bywKKyAgICBOb25lLAorICAgIEludGVyV29yZCwKKyAgICBEaXN0cmlidXRlCiB9Owog
I2VuZGlmIC8vIENTUzNfVEVYVAogCiBlbnVtIFRleHREZWNvcmF0aW9uU2tpcEl0ZW1zIHsKLSAg
ICBUZXh0RGVjb3JhdGlvblNraXBOb25lID0gMCwKLSAgICBUZXh0RGVjb3JhdGlvblNraXBJbmsg
PSAxIDw8IDAsCi0gICAgVGV4dERlY29yYXRpb25Ta2lwT2JqZWN0cyA9IDEgPDwgMSwKLSAgICBU
ZXh0RGVjb3JhdGlvblNraXBBdXRvID0gMSA8PCAyCisgICAgVGV4dERlY29yYXRpb25Ta2lwTm9u
ZSAgICAgID0gMCwKKyAgICBUZXh0RGVjb3JhdGlvblNraXBJbmsgICAgICAgPSAxIDw8IDAsCisg
ICAgVGV4dERlY29yYXRpb25Ta2lwT2JqZWN0cyAgID0gMSA8PCAxLAorICAgIFRleHREZWNvcmF0
aW9uU2tpcEF1dG8gICAgICA9IDEgPDwgMgogfTsKIHR5cGVkZWYgdW5zaWduZWQgVGV4dERlY29y
YXRpb25Ta2lwOwogCiBlbnVtIFRleHRVbmRlcmxpbmVQb3NpdGlvbiB7CiAgICAgLy8gRklYTUU6
IEltcGxlbWVudCBzdXBwb3J0IGZvciAndW5kZXIgbGVmdCcgYW5kICd1bmRlciByaWdodCcgdmFs
dWVzLgotICAgIFRleHRVbmRlcmxpbmVQb3NpdGlvbkF1dG8gPSAweDEsCi0gICAgVGV4dFVuZGVy
bGluZVBvc2l0aW9uQWxwaGFiZXRpYyA9IDB4MiwKLSAgICBUZXh0VW5kZXJsaW5lUG9zaXRpb25V
bmRlciA9IDB4NAotfTsKLQotZW51bSBUZXh0Wm9vbSB7Ci0gICAgVGV4dFpvb21Ob3JtYWwsCi0g
ICAgVGV4dFpvb21SZXNldAotfTsKLQotZW51bSBCcmVha0JldHdlZW4gewotICAgIEF1dG9CcmVh
a0JldHdlZW4sCi0gICAgQXZvaWRCcmVha0JldHdlZW4sCi0gICAgQXZvaWRDb2x1bW5CcmVha0Jl
dHdlZW4sCi0gICAgQXZvaWRQYWdlQnJlYWtCZXR3ZWVuLAotICAgIENvbHVtbkJyZWFrQmV0d2Vl
biwKLSAgICBQYWdlQnJlYWtCZXR3ZWVuLAotICAgIExlZnRQYWdlQnJlYWtCZXR3ZWVuLAotICAg
IFJpZ2h0UGFnZUJyZWFrQmV0d2VlbiwKLSAgICBSZWN0b1BhZ2VCcmVha0JldHdlZW4sCi0gICAg
VmVyc29QYWdlQnJlYWtCZXR3ZWVuCisgICAgVGV4dFVuZGVybGluZVBvc2l0aW9uQXV0byAgICAg
ICA9IDEgPDwgMCwKKyAgICBUZXh0VW5kZXJsaW5lUG9zaXRpb25BbHBoYWJldGljID0gMSA8PCAx
LAorICAgIFRleHRVbmRlcmxpbmVQb3NpdGlvblVuZGVyICAgICAgPSAxIDw8IDIKK307CisKK2Vu
dW0gY2xhc3MgVGV4dFpvb20geworICAgIE5vcm1hbCwKKyAgICBSZXNldAorfTsKKworZW51bSBj
bGFzcyBCcmVha0JldHdlZW4geworICAgIEF1dG8sCisgICAgQXZvaWQsCisgICAgQXZvaWRDb2x1
bW4sCisgICAgQXZvaWRQYWdlLAorICAgIENvbHVtbiwKKyAgICBQYWdlLAorICAgIExlZnRQYWdl
LAorICAgIFJpZ2h0UGFnZSwKKyAgICBSZWN0b1BhZ2UsCisgICAgVmVyc29QYWdlCiB9OwogYm9v
bCBhbHdheXNQYWdlQnJlYWsoQnJlYWtCZXR3ZWVuKTsKICAgICAKLWVudW0gQnJlYWtJbnNpZGUg
ewotICAgIEF1dG9CcmVha0luc2lkZSwKLSAgICBBdm9pZEJyZWFrSW5zaWRlLAotICAgIEF2b2lk
Q29sdW1uQnJlYWtJbnNpZGUsCi0gICAgQXZvaWRQYWdlQnJlYWtJbnNpZGUKK2VudW0gY2xhc3Mg
QnJlYWtJbnNpZGUgeworICAgIEF1dG8sCisgICAgQXZvaWQsCisgICAgQXZvaWRDb2x1bW4sCisg
ICAgQXZvaWRQYWdlCiB9OwogCiBlbnVtIEhhbmdpbmdQdW5jdHVhdGlvbiB7Ci0gICAgTm9IYW5n
aW5nUHVuY3R1YXRpb24gPSAwLAotICAgIEZpcnN0SGFuZ2luZ1B1bmN0dWF0aW9uID0gMSA8PCAw
LAotICAgIExhc3RIYW5naW5nUHVuY3R1YXRpb24gPSAxIDw8IDEsCi0gICAgQWxsb3dFbmRIYW5n
aW5nUHVuY3R1YXRpb24gPSAxIDw8IDIsCi0gICAgRm9yY2VFbmRIYW5naW5nUHVuY3R1YXRpb24g
PSAxIDw8IDMKKyAgICBOb0hhbmdpbmdQdW5jdHVhdGlvbiAgICAgICAgPSAwLAorICAgIEZpcnN0
SGFuZ2luZ1B1bmN0dWF0aW9uICAgICA9IDEgPDwgMCwKKyAgICBMYXN0SGFuZ2luZ1B1bmN0dWF0
aW9uICAgICAgPSAxIDw8IDEsCisgICAgQWxsb3dFbmRIYW5naW5nUHVuY3R1YXRpb24gID0gMSA8
PCAyLAorICAgIEZvcmNlRW5kSGFuZ2luZ1B1bmN0dWF0aW9uICA9IDEgPDwgMwogfTsKIGlubGlu
ZSBIYW5naW5nUHVuY3R1YXRpb24gb3BlcmF0b3J8KEhhbmdpbmdQdW5jdHVhdGlvbiBhLCBIYW5n
aW5nUHVuY3R1YXRpb24gYikgeyByZXR1cm4gSGFuZ2luZ1B1bmN0dWF0aW9uKGludChhKSB8IGlu
dChiKSk7IH0KIGlubGluZSBIYW5naW5nUHVuY3R1YXRpb24mIG9wZXJhdG9yfD0oSGFuZ2luZ1B1
bmN0dWF0aW9uJiBhLCBIYW5naW5nUHVuY3R1YXRpb24gYikgeyByZXR1cm4gYSA9IGEgfCBiOyB9
CiAKLWVudW0gRUVtcHR5Q2VsbCB7Ci0gICAgU0hPVywKLSAgICBISURFCitlbnVtIGNsYXNzIEVt
cHR5Q2VsbCB7CisgICAgU2hvdywKKyAgICBIaWRlCiB9OwogCi1lbnVtIEVDYXB0aW9uU2lkZSB7
Ci0gICAgQ0FQVE9QLAotICAgIENBUEJPVFRPTSwKLSAgICBDQVBMRUZULAotICAgIENBUFJJR0hU
CitlbnVtIGNsYXNzIENhcHRpb25TaWRlIHsKKyAgICBUb3AsCisgICAgQm90dG9tLAorICAgIExl
ZnQsCisgICAgUmlnaHQKIH07CiAKLWVudW0gRUxpc3RTdHlsZVBvc2l0aW9uIHsKLSAgICBPVVRT
SURFLAotICAgIElOU0lERQorZW51bSBjbGFzcyBMaXN0U3R5bGVQb3NpdGlvbiB7CisgICAgT3V0
c2lkZSwKKyAgICBJbnNpZGUKIH07CiAKLWVudW0gRVZpc2liaWxpdHkgewotICAgIFZJU0lCTEUs
Ci0gICAgSElEREVOLAotICAgIENPTExBUFNFCitlbnVtIGNsYXNzIFZpc2liaWxpdHkgeworICAg
IFZpc2libGUsCisgICAgSGlkZGVuLAorICAgIENvbGxhcHNlCiB9OwogCi1lbnVtIEVDdXJzb3Ig
eworV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFZpc2liaWxp
dHkpOworCitlbnVtIGNsYXNzIEN1cnNvclR5cGUgewogICAgIC8vIFRoZSBmb2xsb3dpbmcgbXVz
dCBtYXRjaCB0aGUgb3JkZXIgaW4gQ1NTVmFsdWVLZXl3b3Jkcy5pbi4KLSAgICBDdXJzb3JBdXRv
LAotICAgIEN1cnNvckRlZmF1bHQsCi0gICAgLy8gQ3Vyc29yTm9uZQotICAgIEN1cnNvckNvbnRl
eHRNZW51LAotICAgIEN1cnNvckhlbHAsCi0gICAgQ3Vyc29yUG9pbnRlciwKLSAgICBDdXJzb3JQ
cm9ncmVzcywKLSAgICBDdXJzb3JXYWl0LAotICAgIEN1cnNvckNlbGwsCi0gICAgQ3Vyc29yQ3Jv
c3NoYWlyLAotICAgIEN1cnNvclRleHQsCi0gICAgQ3Vyc29yVmVydGljYWxUZXh0LAotICAgIEN1
cnNvckFsaWFzLAotICAgIC8vIEN1cnNvckNvcHkKLSAgICBDdXJzb3JNb3ZlLAotICAgIEN1cnNv
ck5vRHJvcCwKLSAgICBDdXJzb3JOb3RBbGxvd2VkLAotICAgIEN1cnNvckdyYWIsCi0gICAgQ3Vy
c29yR3JhYmJpbmcsCi0gICAgQ3Vyc29yRVJlc2l6ZSwKLSAgICBDdXJzb3JOUmVzaXplLAotICAg
IEN1cnNvck5lUmVzaXplLAotICAgIEN1cnNvck53UmVzaXplLAotICAgIEN1cnNvclNSZXNpemUs
Ci0gICAgQ3Vyc29yU2VSZXNpemUsCi0gICAgQ3Vyc29yU3dSZXNpemUsCi0gICAgQ3Vyc29yV1Jl
c2l6ZSwKLSAgICBDdXJzb3JFd1Jlc2l6ZSwKLSAgICBDdXJzb3JOc1Jlc2l6ZSwKLSAgICBDdXJz
b3JOZXN3UmVzaXplLAotICAgIEN1cnNvck53c2VSZXNpemUsCi0gICAgQ3Vyc29yQ29sUmVzaXpl
LAotICAgIEN1cnNvclJvd1Jlc2l6ZSwKLSAgICBDdXJzb3JBbGxTY3JvbGwsCi0gICAgQ3Vyc29y
Wm9vbUluLAotICAgIEN1cnNvclpvb21PdXQsCisgICAgQXV0bywKKyAgICBEZWZhdWx0LAorICAg
IC8vIE5vbmUKKyAgICBDb250ZXh0TWVudSwKKyAgICBIZWxwLAorICAgIFBvaW50ZXIsCisgICAg
UHJvZ3Jlc3MsCisgICAgV2FpdCwKKyAgICBDZWxsLAorICAgIENyb3NzaGFpciwKKyAgICBUZXh0
LAorICAgIFZlcnRpY2FsVGV4dCwKKyAgICBBbGlhcywKKyAgICAvLyBDb3B5CisgICAgTW92ZSwK
KyAgICBOb0Ryb3AsCisgICAgTm90QWxsb3dlZCwKKyAgICBHcmFiLAorICAgIEdyYWJiaW5nLAor
ICAgIEVSZXNpemUsCisgICAgTlJlc2l6ZSwKKyAgICBORVJlc2l6ZSwKKyAgICBOV1Jlc2l6ZSwK
KyAgICBTUmVzaXplLAorICAgIFNFUmVzaXplLAorICAgIFNXUmVzaXplLAorICAgIFdSZXNpemUs
CisgICAgRVdSZXNpemUsCisgICAgTlNSZXNpemUsCisgICAgTkVTV1Jlc2l6ZSwKKyAgICBOV1NF
UmVzaXplLAorICAgIENvbHVtblJlc2l6ZSwKKyAgICBSb3dSZXNpemUsCisgICAgQWxsU2Nyb2xs
LAorICAgIFpvb21JbiwKKyAgICBab29tT3V0LAogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBhcmUg
aGFuZGxlZCBhcyBleGNlcHRpb25zIHNvIGRvbid0IG5lZWQgdG8gbWF0Y2guCi0gICAgQ3Vyc29y
Q29weSwKLSAgICBDdXJzb3JOb25lCisgICAgQ29weSwKKyAgICBOb25lCiB9OwogCiAjaWYgRU5B
QkxFKENVUlNPUl9WSVNJQklMSVRZKQotZW51bSBDdXJzb3JWaXNpYmlsaXR5IHsKLSAgICBDdXJz
b3JWaXNpYmlsaXR5QXV0bywKLSAgICBDdXJzb3JWaXNpYmlsaXR5QXV0b0hpZGUsCitlbnVtIGNs
YXNzIEN1cnNvclZpc2liaWxpdHkgeworICAgIEF1dG8sCisgICAgQXV0b0hpZGUsCiB9OwogI2Vu
ZGlmCiAKIC8vIFRoZSBvcmRlciBvZiB0aGlzIGVudW0gbXVzdCBtYXRjaCB0aGUgb3JkZXIgb2Yg
dGhlIGRpc3BsYXkgdmFsdWVzIGluIENTU1ZhbHVlS2V5d29yZHMuaW4uCi1lbnVtIEVEaXNwbGF5
IHsKLSAgICBJTkxJTkUsCi0gICAgQkxPQ0ssCi0gICAgTElTVF9JVEVNLAotICAgIENPTVBBQ1Qs
Ci0gICAgSU5MSU5FX0JMT0NLLAotICAgIFRBQkxFLAotICAgIElOTElORV9UQUJMRSwKLSAgICBU
QUJMRV9ST1dfR1JPVVAsCi0gICAgVEFCTEVfSEVBREVSX0dST1VQLAotICAgIFRBQkxFX0ZPT1RF
Ul9HUk9VUCwKLSAgICBUQUJMRV9ST1csCi0gICAgVEFCTEVfQ09MVU1OX0dST1VQLAotICAgIFRB
QkxFX0NPTFVNTiwKLSAgICBUQUJMRV9DRUxMLAotICAgIFRBQkxFX0NBUFRJT04sCi0gICAgQk9Y
LAotICAgIElOTElORV9CT1gsCi0gICAgRkxFWCwKLSAgICBXRUJLSVRfRkxFWCwKLSAgICBJTkxJ
TkVfRkxFWCwKLSAgICBXRUJLSVRfSU5MSU5FX0ZMRVgsCi0gICAgQ09OVEVOVFMsCi0gICAgR1JJ
RCwKLSAgICBJTkxJTkVfR1JJRCwKLSAgICBOT05FCi19OwotCi1lbnVtIEVJbnNpZGVMaW5rIHsK
LSAgICBOb3RJbnNpZGVMaW5rLAotICAgIEluc2lkZVVudmlzaXRlZExpbmssCi0gICAgSW5zaWRl
VmlzaXRlZExpbmsKK2VudW0gY2xhc3MgRGlzcGxheVR5cGUgeworICAgIElubGluZSwKKyAgICBC
bG9jaywKKyAgICBMaXN0SXRlbSwKKyAgICBDb21wYWN0LAorICAgIElubGluZUJsb2NrLAorICAg
IFRhYmxlLAorICAgIElubGluZVRhYmxlLAorICAgIFRhYmxlUm93R3JvdXAsCisgICAgVGFibGVI
ZWFkZXJHcm91cCwKKyAgICBUYWJsZUZvb3Rlckdyb3VwLAorICAgIFRhYmxlUm93LAorICAgIFRh
YmxlQ29sdW1uR3JvdXAsCisgICAgVGFibGVDb2x1bW4sCisgICAgVGFibGVDZWxsLAorICAgIFRh
YmxlQ2FwdGlvbiwKKyAgICBCb3gsCisgICAgSW5saW5lQm94LAorICAgIEZsZXgsCisgICAgV2Vi
S2l0RmxleCwKKyAgICBJbmxpbmVGbGV4LAorICAgIFdlYktpdElubGluZUZsZXgsCisgICAgQ29u
dGVudHMsCisgICAgR3JpZCwKKyAgICBJbmxpbmVHcmlkLAorICAgIE5vbmUKK307CisKK2VudW0g
Y2xhc3MgSW5zaWRlTGluayB7CisgICAgTm90SW5zaWRlLAorICAgIEluc2lkZVVudmlzaXRlZCwK
KyAgICBJbnNpZGVWaXNpdGVkCiB9OwogICAgIAotZW51bSBFUG9pbnRlckV2ZW50cyB7Ci0gICAg
UEVfTk9ORSwKLSAgICBQRV9BVVRPLAotICAgIFBFX1NUUk9LRSwKLSAgICBQRV9GSUxMLAotICAg
IFBFX1BBSU5URUQsCi0gICAgUEVfVklTSUJMRSwKLSAgICBQRV9WSVNJQkxFX1NUUk9LRSwKLSAg
ICBQRV9WSVNJQkxFX0ZJTEwsCi0gICAgUEVfVklTSUJMRV9QQUlOVEVELAotICAgIFBFX0FMTAor
ZW51bSBjbGFzcyBQb2ludGVyRXZlbnRzIHsKKyAgICBOb25lLAorICAgIEF1dG8sCisgICAgU3Ry
b2tlLAorICAgIEZpbGwsCisgICAgUGFpbnRlZCwKKyAgICBWaXNpYmxlLAorICAgIFZpc2libGVT
dHJva2UsCisgICAgVmlzaWJsZUZpbGwsCisgICAgVmlzaWJsZVBhaW50ZWQsCisgICAgQWxsCiB9
OwogCiBlbnVtIGNsYXNzIFRyYW5zZm9ybVN0eWxlM0QgewpAQCAtOTE5LDQyICs5MjMsNDIgQEAg
ZW51bSBjbGFzcyBMaW5lQ2xhbXAgewogICAgIFBlcmNlbnRhZ2UKIH07CiAKLWVudW0gSHlwaGVu
cyB7Ci0gICAgSHlwaGVuc05vbmUsCi0gICAgSHlwaGVuc01hbnVhbCwKLSAgICBIeXBoZW5zQXV0
bworZW51bSBjbGFzcyBIeXBoZW5zIHsKKyAgICBOb25lLAorICAgIE1hbnVhbCwKKyAgICBBdXRv
CiB9OwogCiBlbnVtIEVTcGVha0FzIHsKLSAgICBTcGVha05vcm1hbCA9IDAsCi0gICAgU3BlYWtT
cGVsbE91dCA9IDEgPDwgMCwKLSAgICBTcGVha0RpZ2l0cyA9IDEgPDwgMSwKKyAgICBTcGVha05v
cm1hbCAgICAgICAgICAgICA9IDAsCisgICAgU3BlYWtTcGVsbE91dCAgICAgICAgICAgPSAxIDw8
IDAsCisgICAgU3BlYWtEaWdpdHMgICAgICAgICAgICAgPSAxIDw8IDEsCiAgICAgU3BlYWtMaXRl
cmFsUHVuY3R1YXRpb24gPSAxIDw8IDIsCi0gICAgU3BlYWtOb1B1bmN0dWF0aW9uID0gMSA8PCAz
CisgICAgU3BlYWtOb1B1bmN0dWF0aW9uICAgICAgPSAxIDw8IDMKIH07CiBpbmxpbmUgRVNwZWFr
QXMgb3BlcmF0b3J8KEVTcGVha0FzIGEsIEVTcGVha0FzIGIpIHsgcmV0dXJuIEVTcGVha0FzKGlu
dChhKSB8IGludChiKSk7IH0KIGlubGluZSBFU3BlYWtBcyYgb3BlcmF0b3J8PShFU3BlYWtBcyYg
YSwgRVNwZWFrQXMgYikgeyByZXR1cm4gYSA9IGEgfCBiOyB9CiAKLWVudW0gVGV4dEVtcGhhc2lz
RmlsbCB7Ci0gICAgVGV4dEVtcGhhc2lzRmlsbEZpbGxlZCwKLSAgICBUZXh0RW1waGFzaXNGaWxs
T3BlbgorZW51bSBjbGFzcyBUZXh0RW1waGFzaXNGaWxsIHsKKyAgICBGaWxsZWQsCisgICAgT3Bl
bgogfTsKIAotZW51bSBUZXh0RW1waGFzaXNNYXJrIHsKLSAgICBUZXh0RW1waGFzaXNNYXJrTm9u
ZSwKLSAgICBUZXh0RW1waGFzaXNNYXJrQXV0bywKLSAgICBUZXh0RW1waGFzaXNNYXJrRG90LAot
ICAgIFRleHRFbXBoYXNpc01hcmtDaXJjbGUsCi0gICAgVGV4dEVtcGhhc2lzTWFya0RvdWJsZUNp
cmNsZSwKLSAgICBUZXh0RW1waGFzaXNNYXJrVHJpYW5nbGUsCi0gICAgVGV4dEVtcGhhc2lzTWFy
a1Nlc2FtZSwKLSAgICBUZXh0RW1waGFzaXNNYXJrQ3VzdG9tCitlbnVtIGNsYXNzIFRleHRFbXBo
YXNpc01hcmsgeworICAgIE5vbmUsCisgICAgQXV0bywKKyAgICBEb3QsCisgICAgQ2lyY2xlLAor
ICAgIERvdWJsZUNpcmNsZSwKKyAgICBUcmlhbmdsZSwKKyAgICBTZXNhbWUsCisgICAgQ3VzdG9t
CiB9OwogCiBlbnVtIFRleHRFbXBoYXNpc1Bvc2l0aW9ucyB7Ci0gICAgVGV4dEVtcGhhc2lzUG9z
aXRpb25PdmVyID0gMSA8PCAwLAorICAgIFRleHRFbXBoYXNpc1Bvc2l0aW9uT3ZlciAgPSAxIDw8
IDAsCiAgICAgVGV4dEVtcGhhc2lzUG9zaXRpb25VbmRlciA9IDEgPDwgMSwKLSAgICBUZXh0RW1w
aGFzaXNQb3NpdGlvbkxlZnQgPSAxIDw8IDIsCisgICAgVGV4dEVtcGhhc2lzUG9zaXRpb25MZWZ0
ICA9IDEgPDwgMiwKICAgICBUZXh0RW1waGFzaXNQb3NpdGlvblJpZ2h0ID0gMSA8PCAzCiB9Owog
dHlwZWRlZiB1bnNpZ25lZCBUZXh0RW1waGFzaXNQb3NpdGlvbjsKQEAgLTk4MCw1OCArOTg0LDU4
IEBAIGVudW0gY2xhc3MgSW1hZ2VSZW5kZXJpbmcgewogCiBXVEY6OlRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgSW1hZ2VSZW5kZXJpbmcpOwogCi1lbnVtIEltYWdlUmVz
b2x1dGlvblNvdXJjZSB7Ci0gICAgSW1hZ2VSZXNvbHV0aW9uU3BlY2lmaWVkID0gMCwKLSAgICBJ
bWFnZVJlc29sdXRpb25Gcm9tSW1hZ2UKK2VudW0gY2xhc3MgSW1hZ2VSZXNvbHV0aW9uU291cmNl
IHsKKyAgICBTcGVjaWZpZWQgPSAwLAorICAgIEZyb21JbWFnZQogfTsKIAotZW51bSBJbWFnZVJl
c29sdXRpb25TbmFwIHsKLSAgICBJbWFnZVJlc29sdXRpb25Ob1NuYXAgPSAwLAotICAgIEltYWdl
UmVzb2x1dGlvblNuYXBQaXhlbHMKK2VudW0gY2xhc3MgSW1hZ2VSZXNvbHV0aW9uU25hcCB7Cisg
ICAgTm9uZSA9IDAsCisgICAgUGl4ZWxzCiB9OwogCi1lbnVtIE9yZGVyIHsKLSAgICBMb2dpY2Fs
T3JkZXIgPSAwLAotICAgIFZpc3VhbE9yZGVyCitlbnVtIGNsYXNzIE9yZGVyIHsKKyAgICBMb2dp
Y2FsID0gMCwKKyAgICBWaXN1YWwKIH07CiAKLWVudW0gQ29sdW1uQXhpcyB7Ci0gICAgSG9yaXpv
bnRhbENvbHVtbkF4aXMsCi0gICAgVmVydGljYWxDb2x1bW5BeGlzLAotICAgIEF1dG9Db2x1bW5B
eGlzCitlbnVtIGNsYXNzIENvbHVtbkF4aXMgeworICAgIEhvcml6b250YWwsCisgICAgVmVydGlj
YWwsCisgICAgQXV0bwogfTsKIAotZW51bSBDb2x1bW5Qcm9ncmVzc2lvbiB7Ci0gICAgTm9ybWFs
Q29sdW1uUHJvZ3Jlc3Npb24sCi0gICAgUmV2ZXJzZUNvbHVtblByb2dyZXNzaW9uCitlbnVtIGNs
YXNzIENvbHVtblByb2dyZXNzaW9uIHsKKyAgICBOb3JtYWwsCisgICAgUmV2ZXJzZQogfTsKIAot
ZW51bSBMaW5lU25hcCB7Ci0gICAgTGluZVNuYXBOb25lLAotICAgIExpbmVTbmFwQmFzZWxpbmUs
Ci0gICAgTGluZVNuYXBDb250YWluCitlbnVtIGNsYXNzIExpbmVTbmFwIHsKKyAgICBOb25lLAor
ICAgIEJhc2VsaW5lLAorICAgIENvbnRhaW4KIH07CiAKLWVudW0gTGluZUFsaWduIHsKLSAgICBM
aW5lQWxpZ25Ob25lLAotICAgIExpbmVBbGlnbkVkZ2VzCitlbnVtIGNsYXNzIExpbmVBbGlnbiB7
CisgICAgTm9uZSwKKyAgICBFZGdlcwogfTsKIAotZW51bSBSdWJ5UG9zaXRpb24gewotICAgIFJ1
YnlQb3NpdGlvbkJlZm9yZSwKLSAgICBSdWJ5UG9zaXRpb25BZnRlciwKLSAgICBSdWJ5UG9zaXRp
b25JbnRlckNoYXJhY3RlcgorZW51bSBjbGFzcyBSdWJ5UG9zaXRpb24geworICAgIEJlZm9yZSwK
KyAgICBBZnRlciwKKyAgICBJbnRlckNoYXJhY3RlcgogfTsKIAogc3RhdGljIGNvbnN0IHNpemVf
dCBHcmlkQXV0b0Zsb3dCaXRzID0gNDsKIGVudW0gSW50ZXJuYWxHcmlkQXV0b0Zsb3dBbGdvcml0
aG0gewotICAgIEludGVybmFsQXV0b0Zsb3dBbGdvcml0aG1TcGFyc2UgPSAweDEsCi0gICAgSW50
ZXJuYWxBdXRvRmxvd0FsZ29yaXRobURlbnNlID0gMHgyLAorICAgIEludGVybmFsQXV0b0Zsb3dB
bGdvcml0aG1TcGFyc2UgPSAxIDw8IDAsCisgICAgSW50ZXJuYWxBdXRvRmxvd0FsZ29yaXRobURl
bnNlICA9IDEgPDwgMSwKIH07CiAKIGVudW0gSW50ZXJuYWxHcmlkQXV0b0Zsb3dEaXJlY3Rpb24g
ewotICAgIEludGVybmFsQXV0b0Zsb3dEaXJlY3Rpb25Sb3cgPSAweDQsCi0gICAgSW50ZXJuYWxB
dXRvRmxvd0RpcmVjdGlvbkNvbHVtbiA9IDB4OAorICAgIEludGVybmFsQXV0b0Zsb3dEaXJlY3Rp
b25Sb3cgICAgPSAxIDw8IDIsCisgICAgSW50ZXJuYWxBdXRvRmxvd0RpcmVjdGlvbkNvbHVtbiA9
IDEgPDwgMwogfTsKIAogZW51bSBHcmlkQXV0b0Zsb3cgewpAQCAtMTA0MSwxMCArMTA0NSwxMCBA
QCBlbnVtIEdyaWRBdXRvRmxvdyB7CiAgICAgQXV0b0Zsb3dDb2x1bW5EZW5zZSA9IEludGVybmFs
QXV0b0Zsb3dBbGdvcml0aG1EZW5zZSB8IEludGVybmFsQXV0b0Zsb3dEaXJlY3Rpb25Db2x1bW4K
IH07CiAKLWVudW0gQXV0b1JlcGVhdFR5cGUgewotICAgIE5vQXV0b1JlcGVhdCwKLSAgICBBdXRv
RmlsbCwKLSAgICBBdXRvRml0CitlbnVtIGNsYXNzIEF1dG9SZXBlYXRUeXBlIHsKKyAgICBOb25l
LAorICAgIEZpbGwsCisgICAgRml0CiB9OwogCiAvLyBSZWFzb25hYmxlIG1heGltdW0gdG8gcHJl
dmVudCBpbnNhbmUgZm9udCBzaXplcyBmcm9tIGNhdXNpbmcgY3Jhc2hlcyBvbiBzb21lIHBsYXRm
b3JtcyAoc3VjaCBhcyBXaW5kb3dzKS4KQEAgLTEwNzAsNyArMTA3NCw3IEBAIGVudW0gY2xhc3Mg
SXNvbGF0aW9uIHsKIH07CiAKIC8vIEZpbGwsIFN0cm9rZSwgVmlld0JveCBhcmUganVzdCB1c2Vk
IGZvciBTVkcuCi1lbnVtIENTU0JveFR5cGUgeworZW51bSBjbGFzcyBDU1NCb3hUeXBlIHsKICAg
ICBCb3hNaXNzaW5nID0gMCwKICAgICBNYXJnaW5Cb3gsCiAgICAgQm9yZGVyQm94LApJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oCShyZXZpc2lvbiAy
MzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgVHlwZSBtX3R5cGU7
CiAgICAgUmVmUHRyPEJhc2ljU2hhcGU+IG1fc2hhcGU7CiAgICAgUmVmUHRyPFN0eWxlSW1hZ2U+
IG1faW1hZ2U7Ci0gICAgQ1NTQm94VHlwZSBtX2Nzc0JveCB7IEJveE1pc3NpbmcgfTsKKyAgICBD
U1NCb3hUeXBlIG1fY3NzQm94IHsgQ1NTQm94VHlwZTo6Qm94TWlzc2luZyB9OwogfTsKIAogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0
aUNvbERhdGEuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICsz
Miw4IEBAIFN0eWxlTXVsdGlDb2xEYXRhOjpTdHlsZU11bHRpQ29sRGF0YSgpCiAgICAgLCBhdXRv
Q291bnQodHJ1ZSkKICAgICAsIGZpbGwoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxl
Ojppbml0aWFsQ29sdW1uRmlsbCgpKSkKICAgICAsIGNvbHVtblNwYW4oZmFsc2UpCi0gICAgLCBh
eGlzKFJlbmRlclN0eWxlOjppbml0aWFsQ29sdW1uQXhpcygpKQotICAgICwgcHJvZ3Jlc3Npb24o
UmVuZGVyU3R5bGU6OmluaXRpYWxDb2x1bW5Qcm9ncmVzc2lvbigpKQorICAgICwgYXhpcyhzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5bGU6OmluaXRpYWxDb2x1bW5BeGlzKCkpKQorICAg
ICwgcHJvZ3Jlc3Npb24oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFs
Q29sdW1uUHJvZ3Jlc3Npb24oKSkpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAJKHJl
dmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVJbmhlcml0ZWREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcsMTEgKzg3LDExIEBAIFN0
eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXQKICAgICAsIG5ic3BNb2RlKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihOQlNQTW9kZTo6Tm9ybWFsKSkKICAgICAsIGxpbmVCcmVhayhz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oTGluZUJyZWFrOjpBdXRvKSkKICAgICAsIHVzZXJTZWxlY3Qo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFsVXNlclNlbGVjdCgpKSkK
LSAgICAsIHNwZWFrQXMoU3BlYWtOb3JtYWwpCi0gICAgLCBoeXBoZW5zKEh5cGhlbnNNYW51YWwp
Ci0gICAgLCB0ZXh0RW1waGFzaXNGaWxsKFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQpCi0gICAgLCB0
ZXh0RW1waGFzaXNNYXJrKFRleHRFbXBoYXNpc01hcmtOb25lKQotICAgICwgdGV4dEVtcGhhc2lz
UG9zaXRpb24oVGV4dEVtcGhhc2lzUG9zaXRpb25PdmVyIHwgVGV4dEVtcGhhc2lzUG9zaXRpb25S
aWdodCkKKyAgICAsIHNwZWFrQXMoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFNwZWFrTm9ybWFsKSkK
KyAgICAsIGh5cGhlbnMoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEh5cGhlbnM6Ok1hbnVhbCkpCisg
ICAgLCB0ZXh0RW1waGFzaXNGaWxsKHN0YXRpY19jYXN0PHVuc2lnbmVkPihUZXh0RW1waGFzaXNG
aWxsOjpGaWxsZWQpKQorICAgICwgdGV4dEVtcGhhc2lzTWFyayhzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oVGV4dEVtcGhhc2lzTWFyazo6Tm9uZSkpCisgICAgLCB0ZXh0RW1waGFzaXNQb3NpdGlvbihz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oVGV4dEVtcGhhc2lzUG9zaXRpb25PdmVyIHwgVGV4dEVtcGhh
c2lzUG9zaXRpb25SaWdodCkpCiAgICAgLCB0ZXh0T3JpZW50YXRpb24oc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFRleHRPcmllbnRhdGlvbjo6TWl4ZWQpKQogI2lmIEVOQUJMRShDU1MzX1RFWFQpCiAg
ICAgLCB0ZXh0SW5kZW50TGluZShSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRJbmRlbnRMaW5lKCkp
CkBAIC0xMDIsOCArMTAyLDggQEAgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5o
ZXJpdAogICAgICwgaW1hZ2VPcmllbnRhdGlvbihSZW5kZXJTdHlsZTo6aW5pdGlhbEltYWdlT3Jp
ZW50YXRpb24oKSkKICNlbmRpZgogICAgICwgaW1hZ2VSZW5kZXJpbmcoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VSZW5kZXJpbmcoKSkpCi0gICAgLCBsaW5l
U25hcChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVTbmFwKCkpCi0gICAgLCBsaW5lQWxpZ24oUmVu
ZGVyU3R5bGU6OmluaXRpYWxMaW5lQWxpZ24oKSkKKyAgICAsIGxpbmVTbmFwKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVTbmFwKCkpKQorICAgICwgbGluZUFs
aWduKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVBbGlnbigp
KSkKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKQogICAgICwgdXNl
VG91Y2hPdmVyZmxvd1Njcm9sbGluZyhSZW5kZXJTdHlsZTo6aW5pdGlhbFVzZVRvdWNoT3ZlcmZs
b3dTY3JvbGxpbmcoKSkKICNlbmRpZgpAQCAtMTE3LDggKzExNyw4IEBAIFN0eWxlUmFyZUluaGVy
aXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXQKICNlbmRpZgogICAgICwgdGV4dERlY29yYXRpb25T
a2lwKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dERlY29yYXRpb25Ta2lwKCkpCiAgICAgLCB0ZXh0
VW5kZXJsaW5lUG9zaXRpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0VW5kZXJsaW5lUG9zaXRp
b24oKSkKLSAgICAsIHJ1YnlQb3NpdGlvbihSZW5kZXJTdHlsZTo6aW5pdGlhbFJ1YnlQb3NpdGlv
bigpKQotICAgICwgdGV4dFpvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0Wm9vbSgpKQorICAg
ICwgcnVieVBvc2l0aW9uKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZW5kZXJTdHlsZTo6aW5pdGlh
bFJ1YnlQb3NpdGlvbigpKSkKKyAgICAsIHRleHRab29tKHN0YXRpY19jYXN0PHVuc2lnbmVkPihS
ZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRab29tKCkpKQogI2lmIFBMQVRGT1JNKElPUykKICAgICAs
IHRvdWNoQ2FsbG91dEVuYWJsZWQoUmVuZGVyU3R5bGU6OmluaXRpYWxUb3VjaENhbGxvdXRFbmFi
bGVkKCkpCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAJKHJldmlzaW9uIDIz
MjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhl
cml0ZWREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsMTAgKzg2LDEwIEBAIFN0eWxlUmFy
ZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkkKICAgICAsIHRleHRPdmVyZmxvdyhzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0T3ZlcmZsb3coKSkpCiAg
ICAgLCBtYXJnaW5CZWZvcmVDb2xsYXBzZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTWFyZ2luQ29s
bGFwc2U6OkNvbGxhcHNlKSkKICAgICAsIG1hcmdpbkFmdGVyQ29sbGFwc2Uoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KE1hcmdpbkNvbGxhcHNlOjpDb2xsYXBzZSkpCi0gICAgLCBhcHBlYXJhbmNlKFJl
bmRlclN0eWxlOjppbml0aWFsQXBwZWFyYW5jZSgpKQotICAgICwgYm9yZGVyRml0KFJlbmRlclN0
eWxlOjppbml0aWFsQm9yZGVyRml0KCkpCisgICAgLCBhcHBlYXJhbmNlKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihSZW5kZXJTdHlsZTo6aW5pdGlhbEFwcGVhcmFuY2UoKSkpCisgICAgLCBib3JkZXJG
aXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyRml0KCkp
KQogICAgICwgdGV4dENvbWJpbmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjpp
bml0aWFsVGV4dENvbWJpbmUoKSkpCi0gICAgLCB0ZXh0RGVjb3JhdGlvblN0eWxlKFJlbmRlclN0
eWxlOjppbml0aWFsVGV4dERlY29yYXRpb25TdHlsZSgpKQorICAgICwgdGV4dERlY29yYXRpb25T
dHlsZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RGVjb3Jh
dGlvblN0eWxlKCkpKQogICAgICwgYXNwZWN0UmF0aW9UeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihSZW5kZXJTdHlsZTo6aW5pdGlhbEFzcGVjdFJhdGlvVHlwZSgpKSkKICNpZiBFTkFCTEUoQ1NT
X0NPTVBPU0lUSU5HKQogICAgICwgZWZmZWN0aXZlQmxlbmRNb2RlKFJlbmRlclN0eWxlOjppbml0
aWFsQmxlbmRNb2RlKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgJKHJldmlzaW9uIDIzMjEy
MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw3ICsxODUsNyBAQCBwdWJsaWM6CiAgICAg
dW5zaWduZWQgbWFyZ2luQmVmb3JlQ29sbGFwc2UgOiAyOyAvLyBNYXJnaW5Db2xsYXBzZQogICAg
IHVuc2lnbmVkIG1hcmdpbkFmdGVyQ29sbGFwc2UgOiAyOyAvLyBNYXJnaW5Db2xsYXBzZQogICAg
IHVuc2lnbmVkIGFwcGVhcmFuY2UgOiA2OyAvLyBFQXBwZWFyYW5jZQotICAgIHVuc2lnbmVkIGJv
cmRlckZpdCA6IDE7IC8vIEVCb3JkZXJGaXQKKyAgICB1bnNpZ25lZCBib3JkZXJGaXQgOiAxOyAv
LyBCb3JkZXJGaXQKICAgICB1bnNpZ25lZCB0ZXh0Q29tYmluZSA6IDE7IC8vIENTUzMgdGV4dC1j
b21iaW5lIHByb3BlcnRpZXMKIAogICAgIHVuc2lnbmVkIHRleHREZWNvcmF0aW9uU3R5bGUgOiAz
OyAvLyBUZXh0RGVjb3JhdGlvblN0eWxlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6
cGFpbnQoUGFpbnRJbmZvCiAgICAgLy8gb3V0bGluZSByZWN0IGludG8gcGFyZW50IGNvb3JkcyBi
ZWZvcmUgZHJhd2luZy4KICAgICAvLyBGSVhNRTogVGhpcyBtZWFucyBvdXIgZm9jdXMgcmluZyB3
b24ndCBzaGFyZSBvdXIgcm90YXRpb24gbGlrZSBpdCBzaG91bGQuCiAgICAgLy8gV2Ugc2hvdWxk
IGluc3RlYWQgZGlzYWJsZSBvdXIgY2xpcCBkdXJpbmcgUGFpbnRQaGFzZU91dGxpbmUKLSAgICBp
ZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VTZWxmT3V0bGluZSAmJiBzdHlsZSgpLm91
dGxpbmVXaWR0aCgpICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUpIHsKKyAgICBp
ZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VTZWxmT3V0bGluZSAmJiBzdHlsZSgpLm91
dGxpbmVXaWR0aCgpICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2li
bGUpIHsKICAgICAgICAgSW50UmVjdCBwYWludFJlY3RJblBhcmVudCA9IGVuY2xvc2luZ0ludFJl
Y3QobG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLm1hcFJlY3QocmVwYWludFJlY3QpKTsKICAgICAg
ICAgcGFpbnRPdXRsaW5lKHBhaW50SW5mbywgcGFpbnRSZWN0SW5QYXJlbnQpOwogICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3Bw
CShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgUmVu
ZGVyU1ZHSW1hZ2U6OmxheW91dCgpCiB2b2lkIFJlbmRlclNWR0ltYWdlOjpwYWludChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogewogICAgIGlmIChwYWludEluZm8u
Y29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQ
aGFzZUZvcmVncm91bmQKLSAgICAgICAgfHwgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gSElEREVO
IHx8ICFpbWFnZVJlc291cmNlKCkuY2FjaGVkSW1hZ2UoKSkKKyAgICAgICAgfHwgc3R5bGUoKS52
aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6SGlkZGVuIHx8ICFpbWFnZVJlc291cmNlKCkuY2Fj
aGVkSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94
ID0gcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKTsKQEAgLTE5Miw3ICsxOTIsNyBAQCBi
b29sIFJlbmRlclNWR0ltYWdlOjpub2RlQXRGbG9hdFBvaW50KGNvCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIFBvaW50ZXJFdmVudHNIaXRSdWxlcyBoaXRSdWxlcyhQb2ludGVyRXZlbnRz
SGl0UnVsZXM6OlNWR19JTUFHRV9ISVRURVNUSU5HLCByZXF1ZXN0LCBzdHlsZSgpLnBvaW50ZXJF
dmVudHMoKSk7Ci0gICAgYm9vbCBpc1Zpc2libGUgPSAoc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0g
VklTSUJMRSk7CisgICAgYm9vbCBpc1Zpc2libGUgPSAoc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0g
VmlzaWJpbGl0eTo6VmlzaWJsZSk7CiAgICAgaWYgKGlzVmlzaWJsZSB8fCAhaGl0UnVsZXMucmVx
dWlyZVZpc2libGUpIHsKICAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1Bh
cmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFw
UG9pbnQocG9pbnRJblBhcmVudCk7CiAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcAkocmV2aXNp
b24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxp
bmVUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsOCArOTEsOCBAQCB2b2lkIFJlbmRlclNW
R0lubGluZVRleHQ6OnN0eWxlRGlkQ2hhbmdlCiAgICAgUmVuZGVyVGV4dDo6c3R5bGVEaWRDaGFu
Z2UoZGlmZiwgb2xkU3R5bGUpOwogICAgIHVwZGF0ZVNjYWxlZEZvbnQoKTsKIAotICAgIGJvb2wg
bmV3UHJlc2VydmVzID0gc3R5bGUoKS53aGl0ZVNwYWNlKCkgPT0gUFJFOwotICAgIGJvb2wgb2xk
UHJlc2VydmVzID0gb2xkU3R5bGUgPyBvbGRTdHlsZS0+d2hpdGVTcGFjZSgpID09IFBSRSA6IGZh
bHNlOworICAgIGJvb2wgbmV3UHJlc2VydmVzID0gc3R5bGUoKS53aGl0ZVNwYWNlKCkgPT0gV2hp
dGVTcGFjZTo6UHJlOworICAgIGJvb2wgb2xkUHJlc2VydmVzID0gb2xkU3R5bGUgPyBvbGRTdHls
ZS0+d2hpdGVTcGFjZSgpID09IFdoaXRlU3BhY2U6OlByZSA6IGZhbHNlOwogICAgIGlmIChvbGRQ
cmVzZXJ2ZXMgJiYgIW5ld1ByZXNlcnZlcykgewogICAgICAgICBzZXRUZXh0KGFwcGx5U1ZHV2hp
dGVzcGFjZVJ1bGVzKG9yaWdpbmFsVGV4dCgpLCBmYWxzZSksIHRydWUpOwogICAgICAgICByZXR1
cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2Jq
ZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR01vZGVsT2JqZWN0LmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE2OCw3ICsxNjgsNyBAQCB2b2lkIFJlbmRlclNWR01vZGVsT2JqZWN0OjphYnNvbHV0ZUZvY3Vz
CiAgICAgCiBib29sIFJlbmRlclNWR01vZGVsT2JqZWN0OjpjaGVja0ludGVyc2VjdGlvbihSZW5k
ZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGlmICgh
cmVuZGVyZXIgfHwgcmVuZGVyZXItPnN0eWxlKCkucG9pbnRlckV2ZW50cygpID09IFBFX05PTkUp
CisgICAgaWYgKCFyZW5kZXJlciB8fCByZW5kZXJlci0+c3R5bGUoKS5wb2ludGVyRXZlbnRzKCkg
PT0gUG9pbnRlckV2ZW50czo6Tm9uZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICgh
aXNHcmFwaGljc0VsZW1lbnQoKnJlbmRlcmVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MTgxLDcgKzE4MSw3IEBAIGJvb2wgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmNoZWNrSW50ZXJzZWMK
IAogYm9vbCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6Y2hlY2tFbmNsb3N1cmUoUmVuZGVyRWxlbWVu
dCogcmVuZGVyZXIsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBpZiAoIXJlbmRlcmVy
IHx8IHJlbmRlcmVyLT5zdHlsZSgpLnBvaW50ZXJFdmVudHMoKSA9PSBQRV9OT05FKQorICAgIGlm
ICghcmVuZGVyZXIgfHwgcmVuZGVyZXItPnN0eWxlKCkucG9pbnRlckV2ZW50cygpID09IFBvaW50
ZXJFdmVudHM6Ok5vbmUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWlzR3JhcGhp
Y3NFbGVtZW50KCpyZW5kZXJlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2UuY3BwCShy
ZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBzdGF0aWMgaW5s
aW5lIFJlbmRlclNWR1Jlc291cmNlKiByZXF1ZXN0CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAot
ICAgIGlmIChzdHlsZS5pbnNpZGVMaW5rKCkgPT0gSW5zaWRlVmlzaXRlZExpbmspIHsKKyAgICBp
ZiAoc3R5bGUuaW5zaWRlTGluaygpID09IEluc2lkZUxpbms6Okluc2lkZVZpc2l0ZWQpIHsKICAg
ICAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBkb2Vzbid0IHN1cHBvcnQgdGhlIHVyaSBjb21wb25l
bnQgb2YgdGhlIHZpc2l0ZWQgbGluayBwYWludCwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTcwMDA2CiAgICAgICAgIFNWR1BhaW50VHlwZSB2aXNpdGVkUGFpbnRUeXBl
ID0gYXBwbHlUb0ZpbGwgPyBzdmdTdHlsZS52aXNpdGVkTGlua0ZpbGxQYWludFR5cGUoKSA6IHN2
Z1N0eWxlLnZpc2l0ZWRMaW5rU3Ryb2tlUGFpbnRUeXBlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBl
ci5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcs
NyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6cGF0aE9ubHlDCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgU1ZHR3JhcGhpY3NFbGVtZW50JiBzdHlsZWQgPSBkb3duY2Fz
dDxTVkdHcmFwaGljc0VsZW1lbnQ+KCpjaGlsZE5vZGUpOwogICAgICAgICBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUgPSByZW5kZXJlci0+c3R5bGUoKTsKLSAgICAgICAgaWYgKHN0eWxlLmRpc3Bs
YXkoKSA9PSBOT05FIHx8IHN0eWxlLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgICAgICBp
ZiAoc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpOb25lIHx8IHN0eWxlLnZpc2liaWxp
dHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBzdHlsZS5zdmdTdHlsZSgpOwog
ICAgICAgICAvLyBDdXJyZW50IHNoYXBlIGluIGNsaXAtcGF0aCBnZXRzIGNsaXBwZWQgdG9vLiBG
YWxsYmFjayB0byBtYXNraW5nLgpAQCAtMjA2LDcgKzIwNiw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVz
b3VyY2VDbGlwcGVyOjpkcmF3Q29udGUKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgfQogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSByZW5kZXJlci0+c3R5bGUo
KTsKLSAgICAgICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBOT05FIHx8IHN0eWxlLnZpc2liaWxp
dHkoKSAhPSBWSVNJQkxFKQorICAgICAgICBpZiAoc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlU
eXBlOjpOb25lIHx8IHN0eWxlLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQog
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgV2luZFJ1bGUgbmV3Q2xpcFJ1bGUgPSBz
dHlsZS5zdmdTdHlsZSgpLmNsaXBSdWxlKCk7CkBAIC0yNDYsNyArMjQ2LDcgQEAgdm9pZCBSZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmNhbGN1bGF0ZQogICAgICAgICBpZiAoIXJlbmRlcmVyLT5p
c1NWR1NoYXBlKCkgJiYgIXJlbmRlcmVyLT5pc1NWR1RleHQoKSAmJiAhY2hpbGROb2RlLT5oYXNU
YWdOYW1lKFNWR05hbWVzOjp1c2VUYWcpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOwotICAgICAgICBp
ZiAoc3R5bGUuZGlzcGxheSgpID09IE5PTkUgfHwgc3R5bGUudmlzaWJpbGl0eSgpICE9IFZJU0lC
TEUpCisgICAgICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUgfHwg
c3R5bGUudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIG1fY2xpcEJvdW5kYXJpZXMudW5pdGUocmVuZGVyZXItPmxvY2Fs
VG9QYXJlbnRUcmFuc2Zvcm0oKS5tYXBSZWN0KHJlbmRlcmVyLT5yZXBhaW50UmVjdEluTG9jYWxD
b29yZGluYXRlcygpKSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAJKHJldmlzaW9uIDIz
MjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VN
YXNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNyArMTA3LDcgQEAgYm9vbCBSZW5kZXJT
VkdSZXNvdXJjZU1hc2tlcjo6ZHJhd0NvbnRlbgogICAgICAgICBpZiAocmVuZGVyZXItPm5lZWRz
TGF5b3V0KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOwotICAgICAgICBpZiAoc3R5bGUuZGlz
cGxheSgpID09IE5PTkUgfHwgc3R5bGUudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgICAg
IGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUgfHwgc3R5bGUudmlzaWJp
bGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgU1ZHUmVuZGVyaW5nQ29udGV4dDo6cmVuZGVyU3VidHJlZVRvSW1hZ2VCdWZmZXIobWFz
a2VyRGF0YS0+bWFza0ltYWdlLmdldCgpLCAqcmVuZGVyZXIsIG1hc2tDb250ZW50VHJhbnNmb3Jt
YXRpb24pOwogICAgIH0KQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNl
TWFza2VyOjpjYWxjdWxhdGVNCiAgICAgICAgIGlmICghY2hpbGROb2RlLT5pc1NWR0VsZW1lbnQo
KSB8fCAhcmVuZGVyZXIpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7Ci0gICAgICAgIGlmIChzdHlsZS5k
aXNwbGF5KCkgPT0gTk9ORSB8fCBzdHlsZS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICAg
ICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSB8fCBzdHlsZS52aXNp
YmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgbV9tYXNrQ29udGVudEJvdW5kYXJpZXMudW5pdGUocmVuZGVyZXItPmxvY2FsVG9Q
YXJlbnRUcmFuc2Zvcm0oKS5tYXBSZWN0KHJlbmRlcmVyLT5yZXBhaW50UmVjdEluTG9jYWxDb29y
ZGluYXRlcygpKSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSb290LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jvb3QuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjks
NyArMzI5LDcgQEAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBSZW5kZXJTVkdSb290OjpsbwogCiBM
YXlvdXRSZWN0IFJlbmRlclNWR1Jvb3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNv
bnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7Ci0g
ICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgJiYgIWVuY2xvc2luZ0xheWVy
KCktPmhhc1Zpc2libGVDb250ZW50KCkpCisgICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9
IFZpc2liaWxpdHk6OlZpc2libGUgJiYgIWVuY2xvc2luZ0xheWVyKCktPmhhc1Zpc2libGVDb250
ZW50KCkpCiAgICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CiAKICAgICBGbG9hdFJlY3QgY29u
dGVudFJlcGFpbnRSZWN0ID0gbV9sb2NhbFRvQm9yZGVyQm94VHJhbnNmb3JtLm1hcFJlY3QocmVw
YWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFJlbmRlclNWR1NoYXBlOjpmaWxsU3Ryb2tl
TWFya2VycyhQCiB2b2lkIFJlbmRlclNWR1NoYXBlOjpwYWludChQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmKQogewogICAgIGlmIChwYWludEluZm8uY29udGV4dCgpLnBh
aW50aW5nRGlzYWJsZWQoKSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91
bmQKLSAgICAgICAgfHwgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gSElEREVOIHx8IGlzRW1wdHko
KSkKKyAgICAgICAgfHwgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6SGlkZGVu
IHx8IGlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEZsb2F0UmVjdCBib3VuZGluZ0Jv
eCA9IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCk7CiAgICAgaWYgKCFTVkdSZW5kZXJT
dXBwb3J0OjpwYWludEluZm9JbnRlcnNlY3RzUmVwYWludFJlY3QoYm91bmRpbmdCb3gsIG1fbG9j
YWxUcmFuc2Zvcm0sIHBhaW50SW5mbykpCkBAIC0zNzQsNyArMzc0LDcgQEAgYm9vbCBSZW5kZXJT
VkdTaGFwZTo6bm9kZUF0RmxvYXRQb2ludChjbwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBQb2ludGVyRXZlbnRzSGl0UnVsZXMgaGl0UnVsZXMoUG9pbnRlckV2ZW50c0hpdFJ1bGVzOjpT
VkdfUEFUSF9ISVRURVNUSU5HLCByZXF1ZXN0LCBzdHlsZSgpLnBvaW50ZXJFdmVudHMoKSk7Ci0g
ICAgYm9vbCBpc1Zpc2libGUgPSAoc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSk7Cisg
ICAgYm9vbCBpc1Zpc2libGUgPSAoc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6
VmlzaWJsZSk7CiAgICAgaWYgKGlzVmlzaWJsZSB8fCAhaGl0UnVsZXMucmVxdWlyZVZpc2libGUp
IHsKICAgICAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0eWxlID0gc3R5bGUoKS5zdmdT
dHlsZSgpOwogICAgICAgICBXaW5kUnVsZSBmaWxsUnVsZSA9IHN2Z1N0eWxlLmZpbGxSdWxlKCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5j
cHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzMiw3ICs0MzIsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8Um9vdElubGluZUJveD4gUmVuZGVyU1ZHCiBib29sIFJlbmRlclNWR1RleHQ6Om5v
ZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1
bHQmIHJlc3VsdCwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlv
biBoaXRUZXN0QWN0aW9uKQogewogICAgIFBvaW50ZXJFdmVudHNIaXRSdWxlcyBoaXRSdWxlcyhQ
b2ludGVyRXZlbnRzSGl0UnVsZXM6OlNWR19URVhUX0hJVFRFU1RJTkcsIHJlcXVlc3QsIHN0eWxl
KCkucG9pbnRlckV2ZW50cygpKTsKLSAgICBib29sIGlzVmlzaWJsZSA9IChzdHlsZSgpLnZpc2li
aWxpdHkoKSA9PSBWSVNJQkxFKTsKKyAgICBib29sIGlzVmlzaWJsZSA9IChzdHlsZSgpLnZpc2li
aWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlKTsKICAgICBpZiAoaXNWaXNpYmxlIHx8ICFo
aXRSdWxlcy5yZXF1aXJlVmlzaWJsZSkgewogICAgICAgICBpZiAoKGhpdFJ1bGVzLmNhbkhpdFN0
cm9rZSAmJiAoc3R5bGUoKS5zdmdTdHlsZSgpLmhhc1N0cm9rZSgpIHx8ICFoaXRSdWxlcy5yZXF1
aXJlU3Ryb2tlKSkKICAgICAgICAgICAgIHx8IChoaXRSdWxlcy5jYW5IaXRGaWxsICYmIChzdHls
ZSgpLnN2Z1N0eWxlKCkuaGFzRmlsbCgpIHx8ICFoaXRSdWxlcy5yZXF1aXJlRmlsbCkpKSB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJv
eC5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHSW5saW5lVGV4dEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw3ICsxODEsNyBAQCB2
b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uQmFjCiAgICAgQVNTRVJUKHBhaW50
SW5mby5waGFzZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBwYWludEluZm8ucGhhc2UgPT0g
UGFpbnRQaGFzZVNlbGVjdGlvbik7CiAgICAgQVNTRVJUKHRydW5jYXRpb24oKSA9PSBjTm9UcnVu
Y2F0aW9uKTsKIAotICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJ
U0lCTEUpCisgICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJp
bGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYgcGFyZW50UmVuZGVy
ZXIgPSBwYXJlbnQoKS0+cmVuZGVyZXIoKTsKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFNWR0lu
bGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgCiAgICAgQVNTRVJUKHBhaW50SW5mby5waGFz
ZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFz
ZVNlbGVjdGlvbik7CiAgICAgQVNTRVJUKHRydW5jYXRpb24oKSA9PSBjTm9UcnVuY2F0aW9uKTsK
IAotICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisg
ICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6Vmlz
aWJsZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gTm90ZTogV2UncmUgZXhwbGljaXRlbHkg
bm90IHN1cHBvcnRpbmcgY29tcG9zaXRpb24gJiBjdXN0b20gdW5kZXJsaW5lcyBhbmQgY3VzdG9t
IGhpZ2hsaWdodGVycyAtIHVubGlrZSBJbmxpbmVUZXh0Qm94LgpAQCAtMjY1LDcgKzI2NSw3IEBA
IHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiAKIAogICAgIGNvbnN0IFJl
bmRlclN0eWxlKiBzZWxlY3Rpb25TdHlsZSA9ICZzdHlsZTsKICAgICBpZiAoaGFzU2VsZWN0aW9u
ICYmIHNob3VsZFBhaW50U2VsZWN0aW9uSGlnaGxpZ2h0KSB7Ci0gICAgICAgIHNlbGVjdGlvblN0
eWxlID0gcGFyZW50UmVuZGVyZXIuZ2V0Q2FjaGVkUHNldWRvU3R5bGUoU0VMRUNUSU9OKTsKKyAg
ICAgICAgc2VsZWN0aW9uU3R5bGUgPSBwYXJlbnRSZW5kZXJlci5nZXRDYWNoZWRQc2V1ZG9TdHls
ZShQc2V1ZG9JZDo6U2VsZWN0aW9uKTsKICAgICAgICAgaWYgKHNlbGVjdGlvblN0eWxlKSB7CiAg
ICAgICAgICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSYgc3ZnU2VsZWN0aW9uU3R5bGUgPSBzZWxl
Y3Rpb25TdHlsZS0+c3ZnU3R5bGUoKTsKIApAQCAtMzk1LDcgKzM5NSw3IEBAIFRleHRSdW4gU1ZH
SW5saW5lVGV4dEJveDo6Y29uc3RydWN0VGV4dFIKICAgICAgICAgICAgICAgICAsIDAgLyogcGFk
ZGluZywgb25seSByZWxldmFudCBmb3IganVzdGlmaWVkIHRleHQsIG5vdCByZWxldmFudCBmb3Ig
U1ZHICovCiAgICAgICAgICAgICAgICAgLCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uCiAgICAgICAg
ICAgICAgICAgLCBkaXJlY3Rpb24oKQotICAgICAgICAgICAgICAgICwgZGlyT3ZlcnJpZGUoKSB8
fCBzdHlsZS5ydGxPcmRlcmluZygpID09IFZpc3VhbE9yZGVyIC8qIGRpcmVjdGlvbmFsT3ZlcnJp
ZGUgKi8pOworICAgICAgICAgICAgICAgICwgZGlyT3ZlcnJpZGUoKSB8fCBzdHlsZS5ydGxPcmRl
cmluZygpID09IE9yZGVyOjpWaXN1YWwgLyogZGlyZWN0aW9uYWxPdmVycmlkZSAqLyk7CiAKICAg
ICAvLyBXZSBoYW5kbGUgbGV0dGVyICYgd29yZCBzcGFjaW5nIG91cnNlbHZlcy4KICAgICBydW4u
ZGlzYWJsZVNwYWNpbmcoKTsKQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIFNWR0lubGluZVRleHRC
b3g6OnBhaW50RGVjb3JhdGlvbihHCiAgICAgYXV0byYgZGVjb3JhdGlvblJlbmRlcmVyID0gZmlu
ZFJlbmRlcmVyRGVmaW5pbmluZ1RleHREZWNvcmF0aW9uKHBhcmVudCgpKTsKICAgICBjb25zdCBS
ZW5kZXJTdHlsZSYgZGVjb3JhdGlvblN0eWxlID0gZGVjb3JhdGlvblJlbmRlcmVyLnN0eWxlKCk7
CiAKLSAgICBpZiAoZGVjb3JhdGlvblN0eWxlLnZpc2liaWxpdHkoKSA9PSBISURERU4pCisgICAg
aWYgKGRlY29yYXRpb25TdHlsZS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6SGlkZGVuKQog
ICAgICAgICByZXR1cm47CiAKICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSYgc3ZnRGVjb3JhdGlv
blN0eWxlID0gZGVjb3JhdGlvblN0eWxlLnN2Z1N0eWxlKCk7CkBAIC02NDcsNyArNjQ3LDcgQEAg
Ym9vbCBTVkdJbmxpbmVUZXh0Qm94Ojpub2RlQXRQb2ludChjb25zdAogICAgIEFTU0VSVCghaXNM
aW5lQnJlYWsoKSk7CiAKICAgICBQb2ludGVyRXZlbnRzSGl0UnVsZXMgaGl0UnVsZXMoUG9pbnRl
ckV2ZW50c0hpdFJ1bGVzOjpTVkdfVEVYVF9ISVRURVNUSU5HLCByZXF1ZXN0LCByZW5kZXJlcigp
LnN0eWxlKCkucG9pbnRlckV2ZW50cygpKTsKLSAgICBib29sIGlzVmlzaWJsZSA9IHJlbmRlcmVy
KCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRTsKKyAgICBib29sIGlzVmlzaWJsZSA9
IHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZTsK
ICAgICBpZiAoaXNWaXNpYmxlIHx8ICFoaXRSdWxlcy5yZXF1aXJlVmlzaWJsZSkgewogICAgICAg
ICBpZiAoKGhpdFJ1bGVzLmNhbkhpdFN0cm9rZSAmJiAocmVuZGVyZXIoKS5zdHlsZSgpLnN2Z1N0
eWxlKCkuaGFzU3Ryb2tlKCkgfHwgIWhpdFJ1bGVzLnJlcXVpcmVTdHJva2UpKQogICAgICAgICAg
ICAgfHwgKGhpdFJ1bGVzLmNhbkhpdEZpbGwgJiYgKHJlbmRlcmVyKCkuc3R5bGUoKS5zdmdTdHls
ZSgpLmhhc0ZpbGwoKSB8fCAhaGl0UnVsZXMucmVxdWlyZUZpbGwpKSkgewpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCShyZXZp
c2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1
cHBvcnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIEZsb2F0UmVjdCBTVkdS
ZW5kZXJTdXBwb3J0OjpyZXBhaW50UmVjdEYKIExheW91dFJlY3QgU1ZHUmVuZGVyU3VwcG9ydDo6
Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpCiB7CiAg
ICAgLy8gUmV0dXJuIGVhcmx5IGZvciBhbnkgY2FzZXMgd2hlcmUgd2UgZG9uJ3QgYWN0dWFsbHkg
cGFpbnQKLSAgICBpZiAocmVuZGVyZXIuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSAm
JiAhcmVuZGVyZXIuZW5jbG9zaW5nTGF5ZXIoKS0+aGFzVmlzaWJsZUNvbnRlbnQoKSkKKyAgICBp
ZiAocmVuZGVyZXIuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAm
JiAhcmVuZGVyZXIuZW5jbG9zaW5nTGF5ZXIoKS0+aGFzVmlzaWJsZUNvbnRlbnQoKSkKICAgICAg
ICAgcmV0dXJuIExheW91dFJlY3QoKTsKIAogICAgIC8vIFBhc3Mgb3VyIGxvY2FsIHBhaW50IHJl
Y3QgdG8gY29tcHV0ZVJlY3RGb3JSZXBhaW50KCkgd2hpY2ggd2lsbApJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCShy
ZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRl
cmluZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsMTAgKzEzNywxMCBAQCB2b2lk
IFNWR1JlbmRlcmluZ0NvbnRleHQ6OnByZXBhcmVUb1JlbmRlCiAgICAgaWYgKGlzPFNoYXBlQ2xp
cFBhdGhPcGVyYXRpb24+KGNsaXBQYXRoT3BlcmF0aW9uKSkgewogICAgICAgICBhdXRvJiBjbGlw
UGF0aCA9IGRvd25jYXN0PFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24+KCpjbGlwUGF0aE9wZXJhdGlv
bik7CiAgICAgICAgIEZsb2F0UmVjdCByZWZlcmVuY2VCb3g7Ci0gICAgICAgIGlmIChjbGlwUGF0
aC5yZWZlcmVuY2VCb3goKSA9PSBTdHJva2UpCisgICAgICAgIGlmIChjbGlwUGF0aC5yZWZlcmVu
Y2VCb3goKSA9PSBDU1NCb3hUeXBlOjpTdHJva2UpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBz
dHJva2VCb3VuZGluZ0JveCgpIHRha2VzIGRhc2hhcnJheSBpbnRvIGFjY291bnQgYnV0IHNob3Vs
ZG4ndC4KICAgICAgICAgICAgIHJlZmVyZW5jZUJveCA9IHJlbmRlcmVyLnN0cm9rZUJvdW5kaW5n
Qm94KCk7Ci0gICAgICAgIGVsc2UgaWYgKGNsaXBQYXRoLnJlZmVyZW5jZUJveCgpID09IFZpZXdC
b3ggJiYgcmVuZGVyZXIuZWxlbWVudCgpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoY2xpcFBhdGgu
cmVmZXJlbmNlQm94KCkgPT0gQ1NTQm94VHlwZTo6Vmlld0JveCAmJiByZW5kZXJlci5lbGVtZW50
KCkpIHsKICAgICAgICAgICAgIEZsb2F0U2l6ZSB2aWV3cG9ydFNpemU7CiAgICAgICAgICAgICBT
VkdMZW5ndGhDb250ZXh0KGRvd25jYXN0PFNWR0VsZW1lbnQ+KHJlbmRlcmVyLmVsZW1lbnQoKSkp
LmRldGVybWluZVZpZXdwb3J0KHZpZXdwb3J0U2l6ZSk7CiAgICAgICAgICAgICByZWZlcmVuY2VC
b3guc2V0V2lkdGgodmlld3BvcnRTaXplLndpZHRoKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0
ZXNCdWlsZGVyLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwcm9jZXNzUmVuZGVyU1ZHSW5s
aW4KIHsKICAgICBhdXRvJiBzdHJpbmcgPSB0ZXh0LnRleHQoKTsKICAgICBhdXRvIGxlbmd0aCA9
IHN0cmluZy5sZW5ndGgoKTsKLSAgICBpZiAodGV4dC5zdHlsZSgpLndoaXRlU3BhY2UoKSA9PSBQ
UkUpIHsKKyAgICBpZiAodGV4dC5zdHlsZSgpLndoaXRlU3BhY2UoKSA9PSBXaGl0ZVNwYWNlOjpQ
cmUpIHsKICAgICAgICAgYXRDaGFyYWN0ZXIgKz0gbGVuZ3RoOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1
aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
VGV4dE1ldHJpY3NCdWlsZGVyLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBTVkdUZXh0TWV0cmljc0J1aWxkZXI6Om1lYXN1cmVU
ZXh0UgogICAgIH0KIAogICAgIGluaXRpYWxpemVNZWFzdXJlbWVudFdpdGhUZXh0UmVuZGVyZXIo
dGV4dCk7Ci0gICAgYm9vbCBwcmVzZXJ2ZVdoaXRlU3BhY2UgPSB0ZXh0LnN0eWxlKCkud2hpdGVT
cGFjZSgpID09IFBSRTsKKyAgICBib29sIHByZXNlcnZlV2hpdGVTcGFjZSA9IHRleHQuc3R5bGUo
KS53aGl0ZVNwYWNlKCkgPT0gV2hpdGVTcGFjZTo6UHJlOwogICAgIGludCBzdXJyb2dhdGVQYWly
Q2hhcmFjdGVycyA9IDA7CiAKICAgICB3aGlsZSAoYWR2YW5jZSgpKSB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVC
dWlsZGVyQmxvY2suY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMwMyw3ICszMDMsNyBAQCBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBSZW5kZXJUcmVlQnVp
bGRlCiAgICAgICAgICAgICAvLyBjb2x1bW4gc3BhbiBmbGFnIGlmIGl0IGlzIHNldC4KICAgICAg
ICAgICAgIEFTU0VSVCghaW5saW5lQ2hpbGRyZW5CbG9jay5jb250aW51YXRpb24oKSk7CiAgICAg
ICAgICAgICAvLyBDYWNoZSB0aGlzIHZhbHVlIGFzIGl0IG1pZ2h0IGdldCBjaGFuZ2VkIGluIHNl
dFN0eWxlKCkgY2FsbC4KLSAgICAgICAgICAgIGlubGluZUNoaWxkcmVuQmxvY2suc2V0U3R5bGUo
UmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50LnN0eWxl
KCksIEJMT0NLKSk7CisgICAgICAgICAgICBpbmxpbmVDaGlsZHJlbkJsb2NrLnNldFN0eWxlKFJl
bmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudC5zdHlsZSgp
LCBEaXNwbGF5VHlwZTo6QmxvY2spKTsKICAgICAgICAgICAgIGF1dG8gYmxvY2tUb01vdmUgPSBt
X2J1aWxkZXIuZGV0YWNoRnJvbVJlbmRlckVsZW1lbnQocGFyZW50LCBpbmxpbmVDaGlsZHJlbkJs
b2NrKTsKIAogICAgICAgICAgICAgLy8gTm93IGp1c3QgcHV0IHRoZSBpbmxpbmVDaGlsZHJlbkJs
b2NrIGluc2lkZSB0aGUgYmxvY2tDaGlsZHJlbkJsb2NrLgpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyRmlyc3RMZXR0ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVp
bGRlckZpcnN0TGV0dGVyLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyRmlyc3RMZXR0ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGlj
IFJlbmRlclN0eWxlIHN0eWxlRm9yRmlyc3RMZXR0ZXIoY29uc3QgUmVuZGVyQmxvY2smIGZpcnN0
TGV0dGVyQmxvY2ssIGNvbnN0IFJlbmRlck9iamVjdCYgZmlyc3RMZXR0ZXJDb250YWluZXIpCiB7
Ci0gICAgYXV0byogY29udGFpbmVyRmlyc3RMZXR0ZXJTdHlsZSA9IGZpcnN0TGV0dGVyQmxvY2su
Z2V0Q2FjaGVkUHNldWRvU3R5bGUoRklSU1RfTEVUVEVSLCAmZmlyc3RMZXR0ZXJDb250YWluZXIu
Zmlyc3RMaW5lU3R5bGUoKSk7CisgICAgYXV0byogY29udGFpbmVyRmlyc3RMZXR0ZXJTdHlsZSA9
IGZpcnN0TGV0dGVyQmxvY2suZ2V0Q2FjaGVkUHNldWRvU3R5bGUoUHNldWRvSWQ6OkZpcnN0TGV0
dGVyLCAmZmlyc3RMZXR0ZXJDb250YWluZXIuZmlyc3RMaW5lU3R5bGUoKSk7CiAgICAgLy8gRklY
TUU6IFRoZXJlIGFwcGVhcnMgdG8gYmUgc29tZSBwYXRoIHdoZXJlIHdlIGhhdmUgYSBmaXJzdCBs
ZXR0ZXIgcmVuZGVyZXIgd2l0aG91dCBmaXJzdCBsZXR0ZXIgc3R5bGUuCiAgICAgQVNTRVJUKGNv
bnRhaW5lckZpcnN0TGV0dGVyU3R5bGUpOwogICAgIGF1dG8gZmlyc3RMZXR0ZXJTdHlsZSA9IFJl
bmRlclN0eWxlOjpjbG9uZShjb250YWluZXJGaXJzdExldHRlclN0eWxlID8gKmNvbnRhaW5lckZp
cnN0TGV0dGVyU3R5bGUgOiBmaXJzdExldHRlckNvbnRhaW5lci5maXJzdExpbmVTdHlsZSgpKTsK
QEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIFJlbmRlclN0eWxlIHN0eWxlRm9yRmlyc3RMZXR0ZXIo
YwogICAgIH0KIAogICAgIC8vIEZvcmNlIGlubGluZSBkaXNwbGF5IChleGNlcHQgZm9yIGZsb2F0
aW5nIGZpcnN0LWxldHRlcnMpLgotICAgIGZpcnN0TGV0dGVyU3R5bGUuc2V0RGlzcGxheShmaXJz
dExldHRlclN0eWxlLmlzRmxvYXRpbmcoKSA/IEJMT0NLIDogSU5MSU5FKTsKKyAgICBmaXJzdExl
dHRlclN0eWxlLnNldERpc3BsYXkoZmlyc3RMZXR0ZXJTdHlsZS5pc0Zsb2F0aW5nKCkgPyBEaXNw
bGF5VHlwZTo6QmxvY2sgOiBEaXNwbGF5VHlwZTo6SW5saW5lKTsKICAgICAvLyBDU1MyIHNheXMg
Zmlyc3QtbGV0dGVyIGNhbid0IGJlIHBvc2l0aW9uZWQuCiAgICAgZmlyc3RMZXR0ZXJTdHlsZS5z
ZXRQb3NpdGlvbihQb3NpdGlvblR5cGU6OlN0YXRpYyk7CiAgICAgcmV0dXJuIGZpcnN0TGV0dGVy
U3R5bGU7CkBAIC0xMjEsNyArMTIxLDcgQEAgUmVuZGVyVHJlZUJ1aWxkZXI6OkZpcnN0TGV0dGVy
OjpGaXJzdExldAogCiB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjpGaXJzdExldHRlcjo6dXBkYXRl
QWZ0ZXJEZXNjZW5kYW50cyhSZW5kZXJCbG9jayYgYmxvY2spCiB7Ci0gICAgaWYgKCFibG9jay5z
dHlsZSgpLmhhc1BzZXVkb1N0eWxlKEZJUlNUX0xFVFRFUikpCisgICAgaWYgKCFibG9jay5zdHls
ZSgpLmhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkOjpGaXJzdExldHRlcikpCiAgICAgICAgIHJldHVy
bjsKICAgICBpZiAoIXN1cHBvcnRzRmlyc3RMZXR0ZXIoYmxvY2spKQogICAgICAgICByZXR1cm47
CkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6Rmlyc3RMZXR0ZXI6
OnVwZAogCiAgICAgLy8gSWYgdGhlIGNoaWxkIGFscmVhZHkgaGFzIHN0eWxlLCB0aGVuIGl0IGhh
cyBhbHJlYWR5IGJlZW4gY3JlYXRlZCwgc28gd2UganVzdCB3YW50CiAgICAgLy8gdG8gdXBkYXRl
IGl0LgotICAgIGlmIChmaXJzdExldHRlclJlbmRlcmVyLT5wYXJlbnQoKS0+c3R5bGUoKS5zdHls
ZVR5cGUoKSA9PSBGSVJTVF9MRVRURVIpIHsKKyAgICBpZiAoZmlyc3RMZXR0ZXJSZW5kZXJlci0+
cGFyZW50KCktPnN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6OkZpcnN0TGV0dGVyKSB7
CiAgICAgICAgIHVwZGF0ZVN0eWxlKGJsb2NrLCAqZmlyc3RMZXR0ZXJSZW5kZXJlcik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBSZW5kZXJUcmVlQnVp
bGRlcjo6Rmlyc3RMZXR0ZXI6OnVwZAogICAgIGlmIChTdHlsZTo6ZGV0ZXJtaW5lQ2hhbmdlKGZp
cnN0TGV0dGVyLT5zdHlsZSgpLCBwc2V1ZG9TdHlsZSkgPT0gU3R5bGU6OkRldGFjaCkgewogICAg
ICAgICAvLyBUaGUgZmlyc3QtbGV0dGVyIHJlbmRlcmVyIG5lZWRzIHRvIGJlIHJlcGxhY2VkLiBD
cmVhdGUgYSBuZXcgcmVuZGVyZXIgb2YgdGhlIHJpZ2h0IHR5cGUuCiAgICAgICAgIFJlbmRlclB0
cjxSZW5kZXJCb3hNb2RlbE9iamVjdD4gbmV3Rmlyc3RMZXR0ZXI7Ci0gICAgICAgIGlmIChwc2V1
ZG9TdHlsZS5kaXNwbGF5KCkgPT0gSU5MSU5FKQorICAgICAgICBpZiAocHNldWRvU3R5bGUuZGlz
cGxheSgpID09IERpc3BsYXlUeXBlOjpJbmxpbmUpCiAgICAgICAgICAgICBuZXdGaXJzdExldHRl
ciA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlcklubGluZT4oZmlyc3RMZXR0ZXJCbG9jay5kb2N1bWVu
dCgpLCBXVEZNb3ZlKHBzZXVkb1N0eWxlKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG5l
d0ZpcnN0TGV0dGVyID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyQmxvY2tGbG93PihmaXJzdExldHRl
ckJsb2NrLmRvY3VtZW50KCksIFdURk1vdmUocHNldWRvU3R5bGUpKTsKQEAgLTIwNSw3ICsyMDUs
NyBAQCB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjpGaXJzdExldHRlcjo6Y3JlCiAgICAgUmVuZGVy
RWxlbWVudCogZmlyc3RMZXR0ZXJDb250YWluZXIgPSBjdXJyZW50VGV4dENoaWxkLnBhcmVudCgp
OwogICAgIGF1dG8gcHNldWRvU3R5bGUgPSBzdHlsZUZvckZpcnN0TGV0dGVyKGZpcnN0TGV0dGVy
QmxvY2ssICpmaXJzdExldHRlckNvbnRhaW5lcik7CiAgICAgUmVuZGVyUHRyPFJlbmRlckJveE1v
ZGVsT2JqZWN0PiBuZXdGaXJzdExldHRlcjsKLSAgICBpZiAocHNldWRvU3R5bGUuZGlzcGxheSgp
ID09IElOTElORSkKKyAgICBpZiAocHNldWRvU3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBl
OjpJbmxpbmUpCiAgICAgICAgIG5ld0ZpcnN0TGV0dGVyID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVy
SW5saW5lPihmaXJzdExldHRlckJsb2NrLmRvY3VtZW50KCksIFdURk1vdmUocHNldWRvU3R5bGUp
KTsKICAgICBlbHNlCiAgICAgICAgIG5ld0ZpcnN0TGV0dGVyID0gY3JlYXRlUmVuZGVyZXI8UmVu
ZGVyQmxvY2tGbG93PihmaXJzdExldHRlckJsb2NrLmRvY3VtZW50KCksIFdURk1vdmUocHNldWRv
U3R5bGUpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJU
cmVlQnVpbGRlcklubGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVySW5saW5lLmNwcAkocmV2aXNpb24gMjMyMTIz
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVy
SW5saW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgUmVuZGVy
VHJlZUJ1aWxkZXI6OklubGluZTo6YXR0YWNoSWcKICAgICAgICAgLy8gaW5saW5lIGludG8gY29u
dGludWF0aW9ucy4gVGhpcyBpbnZvbHZlcyBjcmVhdGluZyBhbiBhbm9ueW1vdXMgYmxvY2sgYm94
IHRvIGhvbGQKICAgICAgICAgLy8gfG5ld0NoaWxkfC4gV2UgdGhlbiBtYWtlIHRoYXQgYmxvY2sg
Ym94IGEgY29udGludWF0aW9uIG9mIHRoaXMgaW5saW5lLiBXZSB0YWtlIGFsbCBvZgogICAgICAg
ICAvLyB0aGUgY2hpbGRyZW4gYWZ0ZXIgfGJlZm9yZUNoaWxkfCBhbmQgcHV0IHRoZW0gaW4gYSBj
bG9uZSBvZiB0aGlzIG9iamVjdC4KLSAgICAgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxl
OjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudC5zdHlsZSgpLCBCTE9DSyk7
CisgICAgICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5
bGVXaXRoRGlzcGxheShwYXJlbnQuc3R5bGUoKSwgRGlzcGxheVR5cGU6OkJsb2NrKTsKIAogICAg
ICAgICAvLyBJZiBpbnNpZGUgYW4gaW5saW5lIGFmZmVjdGVkIGJ5IGluLWZsb3cgcG9zaXRpb25p
bmcgdGhlIGJsb2NrIG5lZWRzIHRvIGJlIGFmZmVjdGVkIGJ5IGl0IHRvby4KICAgICAgICAgLy8g
R2l2aW5nIHRoZSBibG9jayBhIGxheWVyIGxpa2UgdGhpcyBhbGxvd3MgaXQgdG8gY29sbGVjdCB0
aGUgeC95IG9mZnNldHMgZnJvbSBpbmxpbmUgcGFyZW50cyBsYXRlci4KQEAgLTM3Niw3ICszNzYs
NyBAQCB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjpJbmxpbmU6OnNwbGl0SW5sCiBib29sIFJlbmRl
clRyZWVCdWlsZGVyOjpJbmxpbmU6Om5ld0NoaWxkSXNJbmxpbmUoY29uc3QgUmVuZGVySW5saW5l
JiBwYXJlbnQsIGNvbnN0IFJlbmRlck9iamVjdCYgY2hpbGQpCiB7CiAgICAgLy8gaW5saW5lIHBh
cmVudCBnZW5lcmF0ZXMgaW5saW5lLXRhYmxlLgotICAgIHJldHVybiBjaGlsZC5pc0lubGluZSgp
IHx8IChtX2J1aWxkZXIudGFibGVCdWlsZGVyKCkuY2hpbGRSZXF1aXJlc1RhYmxlKHBhcmVudCwg
Y2hpbGQpICYmIHBhcmVudC5zdHlsZSgpLmRpc3BsYXkoKSA9PSBJTkxJTkUpOworICAgIHJldHVy
biBjaGlsZC5pc0lubGluZSgpIHx8IChtX2J1aWxkZXIudGFibGVCdWlsZGVyKCkuY2hpbGRSZXF1
aXJlc1RhYmxlKHBhcmVudCwgY2hpbGQpICYmIHBhcmVudC5zdHlsZSgpLmRpc3BsYXkoKSA9PSBE
aXNwbGF5VHlwZTo6SW5saW5lKTsKIH0KIAogdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6SW5saW5l
OjpjaGlsZEJlY2FtZU5vbklubGluZShSZW5kZXJJbmxpbmUmIHBhcmVudCwgUmVuZGVyRWxlbWVu
dCYgY2hpbGQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVy
VHJlZUJ1aWxkZXJMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJMaXN0LmNwcAkocmV2aXNpb24gMjMyMTIzKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyTGlz
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBSZW5kZXJUcmVlQnVp
bGRlcjo6TGlzdDo6dXBkYXRlSXRlbQogewogICAgIGF1dG8mIHN0eWxlID0gbGlzdEl0ZW1SZW5k
ZXJlci5zdHlsZSgpOwogCi0gICAgaWYgKHN0eWxlLmxpc3RTdHlsZVR5cGUoKSA9PSBOb25lTGlz
dFN0eWxlICYmICghc3R5bGUubGlzdFN0eWxlSW1hZ2UoKSB8fCBzdHlsZS5saXN0U3R5bGVJbWFn
ZSgpLT5lcnJvck9jY3VycmVkKCkpKSB7CisgICAgaWYgKHN0eWxlLmxpc3RTdHlsZVR5cGUoKSA9
PSBMaXN0U3R5bGVUeXBlOjpOb25lICYmICghc3R5bGUubGlzdFN0eWxlSW1hZ2UoKSB8fCBzdHls
ZS5saXN0U3R5bGVJbWFnZSgpLT5lcnJvck9jY3VycmVkKCkpKSB7CiAgICAgICAgIGlmIChhdXRv
KiBtYXJrZXIgPSBsaXN0SXRlbVJlbmRlcmVyLm1hcmtlclJlbmRlcmVyKCkpCiAgICAgICAgICAg
ICBtX2J1aWxkZXIuZGVzdHJveSgqbWFya2VyKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyTWF0aE1MLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVy
VHJlZUJ1aWxkZXJNYXRoTUwuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJNYXRoTUwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIFJlbmRlclRyZWVCdWlsZGVyOjpNYXRoTUw6Ok1hdGhN
TChSZW5kZXIKIFJlbmRlclB0cjxSZW5kZXJNYXRoTUxGZW5jZWRPcGVyYXRvcj4gUmVuZGVyVHJl
ZUJ1aWxkZXI6Ok1hdGhNTDo6Y3JlYXRlTWF0aE1MT3BlcmF0b3IoUmVuZGVyTWF0aE1MRmVuY2Vk
JiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgb3BlcmF0b3JTdHJpbmcsCiAgICAgTWF0aE1MT3BlcmF0
b3JEaWN0aW9uYXJ5OjpGb3JtIGZvcm0sIE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6RmxhZyBm
bGFnKQogewotICAgIFJlbmRlclB0cjxSZW5kZXJNYXRoTUxGZW5jZWRPcGVyYXRvcj4gbmV3T3Bl
cmF0b3IgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxGZW5jZWRPcGVyYXRvcj4ocGFyZW50
LmRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5
KHBhcmVudC5zdHlsZSgpLCBCTE9DSyksIG9wZXJhdG9yU3RyaW5nLCBmb3JtLCBmbGFnKTsKKyAg
ICBSZW5kZXJQdHI8UmVuZGVyTWF0aE1MRmVuY2VkT3BlcmF0b3I+IG5ld09wZXJhdG9yID0gY3Jl
YXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MRmVuY2VkT3BlcmF0b3I+KHBhcmVudC5kb2N1bWVudCgp
LCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnQuc3R5
bGUoKSwgRGlzcGxheVR5cGU6OkJsb2NrKSwgb3BlcmF0b3JTdHJpbmcsIGZvcm0sIGZsYWcpOwog
ICAgIG5ld09wZXJhdG9yLT5pbml0aWFsaXplU3R5bGUoKTsKICAgICByZXR1cm4gbmV3T3BlcmF0
b3I7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJl
ZUJ1aWxkZXJNdWx0aUNvbHVtbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyTXVsdGlDb2x1bW4uY3BwCShyZXZpc2lv
biAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJl
ZUJ1aWxkZXJNdWx0aUNvbHVtbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Niw3ICsxNjYsNyBA
QCB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjpNdWx0aUNvbHVtbjo6Y3JlCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBhdXRvIG5ld0ZyYWdtZW50ZWRGbG93ID0gIWZsb3cuc3R5bGUoKS5oYXNMaW5l
c0NsYW1wKCkgPyBXZWJDb3JlOjpjcmVhdGVSZW5kZXJlcjxSZW5kZXJNdWx0aUNvbHVtbkZsb3c+
KGZsb3cuZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERp
c3BsYXkoZmxvdy5zdHlsZSgpLCBCTE9DSykpIDogIFdlYkNvcmU6OmNyZWF0ZVJlbmRlcmVyPFJl
bmRlckxpbmVzQ2xhbXBGbG93PihmbG93LmRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVB
bm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KGZsb3cuc3R5bGUoKSwgQkxPQ0spKTsKKyAgICBhdXRv
IG5ld0ZyYWdtZW50ZWRGbG93ID0gIWZsb3cuc3R5bGUoKS5oYXNMaW5lc0NsYW1wKCkgPyBXZWJD
b3JlOjpjcmVhdGVSZW5kZXJlcjxSZW5kZXJNdWx0aUNvbHVtbkZsb3c+KGZsb3cuZG9jdW1lbnQo
KSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoZmxvdy5zdHls
ZSgpLCBEaXNwbGF5VHlwZTo6QmxvY2spKSA6ICBXZWJDb3JlOjpjcmVhdGVSZW5kZXJlcjxSZW5k
ZXJMaW5lc0NsYW1wRmxvdz4oZmxvdy5kb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5v
bnltb3VzU3R5bGVXaXRoRGlzcGxheShmbG93LnN0eWxlKCksIERpc3BsYXlUeXBlOjpCbG9jaykp
OwogICAgIG5ld0ZyYWdtZW50ZWRGbG93LT5pbml0aWFsaXplU3R5bGUoKTsKICAgICBhdXRvJiBm
cmFnbWVudGVkRmxvdyA9ICpuZXdGcmFnbWVudGVkRmxvdzsKICAgICBtX2J1aWxkZXIuYmxvY2tC
dWlsZGVyKCkuYXR0YWNoKGZsb3csIFdURk1vdmUobmV3RnJhZ21lbnRlZEZsb3cpLCBudWxscHRy
KTsKQEAgLTM1Miw3ICszNTIsNyBAQCBSZW5kZXJPYmplY3QqIFJlbmRlclRyZWVCdWlsZGVyOjpN
dWx0aUNvCiAgICAgLy8gTmVlZCB0byBjcmVhdGUgYSBuZXcgY29sdW1uIHNldCB3aGVuIHRoZXJl
J3Mgbm8gc2V0IGFscmVhZHkgY3JlYXRlZC4gV2UgYWxzbyBhbHdheXMgaW5zZXJ0CiAgICAgLy8g
YW5vdGhlciBjb2x1bW4gc2V0IGFmdGVyIGEgc3Bhbm5lci4gRXZlbiBpZiBpdCB0dXJucyBvdXQg
dGhhdCB0aGVyZSBhcmUgbm8gcmVuZGVyZXJzCiAgICAgLy8gZm9sbG93aW5nIHRoZSBzcGFubmVy
LCB0aGVyZSBtYXkgYmUgYm90dG9tIG1hcmdpbnMgdGhlcmUsIHdoaWNoIHRha2UgdXAgc3BhY2Uu
Ci0gICAgYXV0byBuZXdTZXQgPSBmbG93LmNyZWF0ZU11bHRpQ29sdW1uU2V0KFJlbmRlclN0eWxl
OjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KG11bHRpY29sQ29udGFpbmVyLT5zdHls
ZSgpLCBCTE9DSykpOworICAgIGF1dG8gbmV3U2V0ID0gZmxvdy5jcmVhdGVNdWx0aUNvbHVtblNl
dChSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShtdWx0aWNvbENv
bnRhaW5lci0+c3R5bGUoKSwgRGlzcGxheVR5cGU6OkJsb2NrKSk7CiAgICAgbmV3U2V0LT5pbml0
aWFsaXplU3R5bGUoKTsKICAgICBhdXRvJiBzZXQgPSAqbmV3U2V0OwogICAgIG1fYnVpbGRlci5i
bG9ja0J1aWxkZXIoKS5hdHRhY2goKm11bHRpY29sQ29udGFpbmVyLCBXVEZNb3ZlKG5ld1NldCks
IGluc2VydEJlZm9yZU11bHRpY29sQ2hpbGQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyUnVieS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyUnVieS5jcHAJ
KHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9S
ZW5kZXJUcmVlQnVpbGRlclJ1YnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc0Fub255bW91c1J1YnlJbmxpbmUKICAgICAgICAgfHwgIWlz
UnVieShvYmplY3QtPnBhcmVudCgpKQogICAgICAgICB8fCBpczxSZW5kZXJSdWJ5UnVuPigqb2Jq
ZWN0KQogICAgICAgICB8fCAob2JqZWN0LT5pc0lubGluZSgpICYmIChvYmplY3QtPmlzQmVmb3Jl
Q29udGVudCgpIHx8IG9iamVjdC0+aXNBZnRlckNvbnRlbnQoKSkpCi0gICAgICAgIHx8IChvYmpl
Y3QtPmlzQW5vbnltb3VzKCkgJiYgaXM8UmVuZGVyQmxvY2s+KCpvYmplY3QpICYmIG9iamVjdC0+
c3R5bGUoKS5kaXNwbGF5KCkgPT0gSU5MSU5FX0JMT0NLKSk7CisgICAgICAgIHx8IChvYmplY3Qt
PmlzQW5vbnltb3VzKCkgJiYgaXM8UmVuZGVyQmxvY2s+KCpvYmplY3QpICYmIG9iamVjdC0+c3R5
bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OklubGluZUJsb2NrKSk7CiAKICAgICByZXR1
cm4gb2JqZWN0CiAgICAgICAgICYmIGlzUnVieShvYmplY3QtPnBhcmVudCgpKQpAQCAtNjAsNyAr
NjAsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNSdWJ5QmVmb3JlQmxvY2soY29uCiAgICAgcmV0
dXJuIGlzQW5vbnltb3VzUnVieUlubGluZUJsb2NrKG9iamVjdCkKICAgICAgICAgJiYgIW9iamVj
dC0+cHJldmlvdXNTaWJsaW5nKCkKICAgICAgICAgJiYgZG93bmNhc3Q8UmVuZGVyQmxvY2s+KCpv
YmplY3QpLmZpcnN0Q2hpbGQoKQotICAgICAgICAmJiBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKm9i
amVjdCkuZmlyc3RDaGlsZCgpLT5zdHlsZSgpLnN0eWxlVHlwZSgpID09IEJFRk9SRTsKKyAgICAg
ICAgJiYgZG93bmNhc3Q8UmVuZGVyQmxvY2s+KCpvYmplY3QpLmZpcnN0Q2hpbGQoKS0+c3R5bGUo
KS5zdHlsZVR5cGUoKSA9PSBQc2V1ZG9JZDo6QmVmb3JlOwogfQogCiBzdGF0aWMgaW5saW5lIGJv
b2wgaXNSdWJ5QWZ0ZXJCbG9jayhjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCkKQEAgLTY4LDcg
KzY4LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzUnVieUFmdGVyQmxvY2soY29ucwogICAgIHJl
dHVybiBpc0Fub255bW91c1J1YnlJbmxpbmVCbG9jayhvYmplY3QpCiAgICAgICAgICYmICFvYmpl
Y3QtPm5leHRTaWJsaW5nKCkKICAgICAgICAgJiYgZG93bmNhc3Q8UmVuZGVyQmxvY2s+KCpvYmpl
Y3QpLmZpcnN0Q2hpbGQoKQotICAgICAgICAmJiBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKm9iamVj
dCkuZmlyc3RDaGlsZCgpLT5zdHlsZSgpLnN0eWxlVHlwZSgpID09IEFGVEVSOworICAgICAgICAm
JiBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKm9iamVjdCkuZmlyc3RDaGlsZCgpLT5zdHlsZSgpLnN0
eWxlVHlwZSgpID09IFBzZXVkb0lkOjpBZnRlcjsKIH0KIAogI2lmbmRlZiBBU1NFUlRfRElTQUJM
RUQKQEAgLTk3LDcgKzk3LDcgQEAgc3RhdGljIGlubGluZSBSZW5kZXJCbG9jayogcnVieUFmdGVy
QmxvYwogCiBzdGF0aWMgYXV0byBjcmVhdGVBbm9ueW1vdXNSdWJ5SW5saW5lQmxvY2soUmVuZGVy
T2JqZWN0JiBydWJ5KQogewotICAgIGF1dG8gbmV3QmxvY2sgPSBjcmVhdGVSZW5kZXJlcjxSZW5k
ZXJCbG9ja0Zsb3c+KHJ1YnkuZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91
c1N0eWxlV2l0aERpc3BsYXkocnVieS5zdHlsZSgpLCBJTkxJTkVfQkxPQ0spKTsKKyAgICBhdXRv
IG5ld0Jsb2NrID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyQmxvY2tGbG93PihydWJ5LmRvY3VtZW50
KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHJ1Ynkuc3R5
bGUoKSwgRGlzcGxheVR5cGU6OklubGluZUJsb2NrKSk7CiAgICAgbmV3QmxvY2stPmluaXRpYWxp
emVTdHlsZSgpOwogICAgIHJldHVybiBuZXdCbG9jazsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclRhYmxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJU
YWJsZS5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91
cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5
LDggKzEzOSw4IEBAIFJlbmRlckVsZW1lbnQmIFJlbmRlclRyZWVCdWlsZGVyOjpUYWJsZToKICAg
ICBhdXRvKiBwYXJlbnRDYW5kaWRhdGUgPSBiZWZvcmVDaGlsZDsKICAgICB3aGlsZSAocGFyZW50
Q2FuZGlkYXRlICYmIHBhcmVudENhbmRpZGF0ZS0+cGFyZW50KCktPmlzQW5vbnltb3VzKCkKICAg
ICAgICAgJiYgIWlzPFJlbmRlclRhYmxlU2VjdGlvbj4oKnBhcmVudENhbmRpZGF0ZSkKLSAgICAg
ICAgJiYgcGFyZW50Q2FuZGlkYXRlLT5zdHlsZSgpLmRpc3BsYXkoKSAhPSBUQUJMRV9DQVBUSU9O
Ci0gICAgICAgICYmIHBhcmVudENhbmRpZGF0ZS0+c3R5bGUoKS5kaXNwbGF5KCkgIT0gVEFCTEVf
Q09MVU1OX0dST1VQKQorICAgICAgICAmJiBwYXJlbnRDYW5kaWRhdGUtPnN0eWxlKCkuZGlzcGxh
eSgpICE9IERpc3BsYXlUeXBlOjpUYWJsZUNhcHRpb24KKyAgICAgICAgJiYgcGFyZW50Q2FuZGlk
YXRlLT5zdHlsZSgpLmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1bW5Hcm91cCkK
ICAgICAgICAgcGFyZW50Q2FuZGlkYXRlID0gcGFyZW50Q2FuZGlkYXRlLT5wYXJlbnQoKTsKIAog
ICAgIGlmIChwYXJlbnRDYW5kaWRhdGUgJiYgaXM8UmVuZGVyVGFibGVTZWN0aW9uPigqcGFyZW50
Q2FuZGlkYXRlKSAmJiBwYXJlbnRDYW5kaWRhdGUtPmlzQW5vbnltb3VzKCkgJiYgIXBhcmVudC5p
c0FmdGVyQ29udGVudChwYXJlbnRDYW5kaWRhdGUpKSB7CkBAIC0xNTAsOCArMTUwLDggQEAgUmVu
ZGVyRWxlbWVudCYgUmVuZGVyVHJlZUJ1aWxkZXI6OlRhYmxlOgogICAgIH0KIAogICAgIGlmIChi
ZWZvcmVDaGlsZCAmJiAhaXM8UmVuZGVyVGFibGVTZWN0aW9uPigqYmVmb3JlQ2hpbGQpCi0gICAg
ICAgICYmIGJlZm9yZUNoaWxkLT5zdHlsZSgpLmRpc3BsYXkoKSAhPSBUQUJMRV9DQVBUSU9OCi0g
ICAgICAgICYmIGJlZm9yZUNoaWxkLT5zdHlsZSgpLmRpc3BsYXkoKSAhPSBUQUJMRV9DT0xVTU5f
R1JPVVApCisgICAgICAgICYmIGJlZm9yZUNoaWxkLT5zdHlsZSgpLmRpc3BsYXkoKSAhPSBEaXNw
bGF5VHlwZTo6VGFibGVDYXB0aW9uCisgICAgICAgICYmIGJlZm9yZUNoaWxkLT5zdHlsZSgpLmRp
c3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1bW5Hcm91cCkKICAgICAgICAgYmVmb3Jl
Q2hpbGQgPSBudWxscHRyOwogCiAgICAgYXV0byBuZXdTZWN0aW9uID0gUmVuZGVyVGFibGVTZWN0
aW9uOjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIocGFyZW50KTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVV
cGRhdGVyLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsOSAr
NjIsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgY29uc3QgRWxlbWVudCYgbV9lbGVtZW50
OwotICAgIEVEaXNwbGF5IG1fcHJldmlvdXNEaXNwbGF5OwotICAgIEVWaXNpYmlsaXR5IG1fcHJl
dmlvdXNWaXNpYmlsaXR5OwotICAgIEVWaXNpYmlsaXR5IG1fcHJldmlvdXNJbXBsaWNpdFZpc2li
aWxpdHk7CisgICAgRGlzcGxheVR5cGUgbV9wcmV2aW91c0Rpc3BsYXk7CisgICAgVmlzaWJpbGl0
eSBtX3ByZXZpb3VzVmlzaWJpbGl0eTsKKyAgICBWaXNpYmlsaXR5IG1fcHJldmlvdXNJbXBsaWNp
dFZpc2liaWxpdHk7CiB9OwogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIApAQCAtMjU3LDEzICsy
NTcsMTMgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6cG9wUGFyZW50c1RvRGVwdAogdm9pZCBS
ZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlQmVmb3JlRGVzY2VuZGFudHMoRWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGVzKiB1cGRhdGVzKQogewogICAgIGlmICh1cGRh
dGVzKQotICAgICAgICBnZW5lcmF0ZWRDb250ZW50KCkudXBkYXRlUHNldWRvRWxlbWVudChlbGVt
ZW50LCB1cGRhdGVzLT5iZWZvcmVQc2V1ZG9FbGVtZW50VXBkYXRlLCBCRUZPUkUpOworICAgICAg
ICBnZW5lcmF0ZWRDb250ZW50KCkudXBkYXRlUHNldWRvRWxlbWVudChlbGVtZW50LCB1cGRhdGVz
LT5iZWZvcmVQc2V1ZG9FbGVtZW50VXBkYXRlLCBQc2V1ZG9JZDo6QmVmb3JlKTsKIH0KIAogdm9p
ZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlQWZ0ZXJEZXNjZW5kYW50cyhFbGVtZW50JiBlbGVt
ZW50LCBjb25zdCBTdHlsZTo6RWxlbWVudFVwZGF0ZXMqIHVwZGF0ZXMpCiB7CiAgICAgaWYgKHVw
ZGF0ZXMpCi0gICAgICAgIGdlbmVyYXRlZENvbnRlbnQoKS51cGRhdGVQc2V1ZG9FbGVtZW50KGVs
ZW1lbnQsIHVwZGF0ZXMtPmFmdGVyUHNldWRvRWxlbWVudFVwZGF0ZSwgQUZURVIpOworICAgICAg
ICBnZW5lcmF0ZWRDb250ZW50KCkudXBkYXRlUHNldWRvRWxlbWVudChlbGVtZW50LCB1cGRhdGVz
LT5hZnRlclBzZXVkb0VsZW1lbnRVcGRhdGUsIFBzZXVkb0lkOjpBZnRlcik7CiAKICAgICBhdXRv
KiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQpAQCAt
MzE3LDEzICszMTcsMTMgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlRWxlbWVudFJl
bgogICAgICAgICB9CiAKICAgICAgICAgLy8gZGlzcGxheTpub25lIGNhbmNlbHMgYW5pbWF0aW9u
cy4KLSAgICAgICAgYXV0byB0ZWFyZG93blR5cGUgPSB1cGRhdGUuc3R5bGUtPmRpc3BsYXkoKSA9
PSBOT05FID8gVGVhcmRvd25UeXBlOjpSZW5kZXJlclVwZGF0ZUNhbmNlbGluZ0FuaW1hdGlvbnMg
OiBUZWFyZG93blR5cGU6OlJlbmRlcmVyVXBkYXRlOworICAgICAgICBhdXRvIHRlYXJkb3duVHlw
ZSA9IHVwZGF0ZS5zdHlsZS0+ZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpOb25lID8gVGVhcmRv
d25UeXBlOjpSZW5kZXJlclVwZGF0ZUNhbmNlbGluZ0FuaW1hdGlvbnMgOiBUZWFyZG93blR5cGU6
OlJlbmRlcmVyVXBkYXRlOwogICAgICAgICB0ZWFyRG93blJlbmRlcmVycyhlbGVtZW50LCB0ZWFy
ZG93blR5cGUsIG1fYnVpbGRlcik7CiAKICAgICAgICAgcmVuZGVyaW5nUGFyZW50KCkuZGlkQ3Jl
YXRlT3JEZXN0cm95Q2hpbGRSZW5kZXJlciA9IHRydWU7CiAgICAgfQogCi0gICAgYm9vbCBoYXNE
aXNwbGF5Q29udGVudHMgPSB1cGRhdGUuc3R5bGUtPmRpc3BsYXkoKSA9PSBDT05URU5UUzsKKyAg
ICBib29sIGhhc0Rpc3BsYXlDb250ZW50cyA9IHVwZGF0ZS5zdHlsZS0+ZGlzcGxheSgpID09IERp
c3BsYXlUeXBlOjpDb250ZW50czsKICAgICBpZiAoaGFzRGlzcGxheUNvbnRlbnRzKQogICAgICAg
ICBlbGVtZW50LnN0b3JlRGlzcGxheUNvbnRlbnRzU3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRy
KCp1cGRhdGUuc3R5bGUpKTsKICAgICBlbHNlCkBAIC02NDAsMzQgKzY0MCwzNCBAQCBSZW5kZXJW
aWV3JiBSZW5kZXJUcmVlVXBkYXRlcjo6cmVuZGVyVmllCiB9CiAKICNpZiBQTEFURk9STShJT1Mp
Ci1zdGF0aWMgRVZpc2liaWxpdHkgZWxlbWVudEltcGxpY2l0VmlzaWJpbGl0eShjb25zdCBFbGVt
ZW50JiBlbGVtZW50KQorc3RhdGljIFZpc2liaWxpdHkgZWxlbWVudEltcGxpY2l0VmlzaWJpbGl0
eShjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVu
dC5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBWSVNJQkxF
OworICAgICAgICByZXR1cm4gVmlzaWJpbGl0eTo6VmlzaWJsZTsKIAogICAgIGF1dG8mIHN0eWxl
ID0gcmVuZGVyZXItPnN0eWxlKCk7CiAKICAgICBhdXRvIHdpZHRoID0gc3R5bGUud2lkdGgoKTsK
ICAgICBhdXRvIGhlaWdodCA9IHN0eWxlLmhlaWdodCgpOwogICAgIGlmICgod2lkdGguaXNGaXhl
ZCgpICYmIHdpZHRoLnZhbHVlKCkgPD0gMCkgfHwgKGhlaWdodC5pc0ZpeGVkKCkgJiYgaGVpZ2h0
LnZhbHVlKCkgPD0gMCkpCi0gICAgICAgIHJldHVybiBISURERU47CisgICAgICAgIHJldHVybiBW
aXNpYmlsaXR5OjpIaWRkZW47CiAKICAgICBhdXRvIHRvcCA9IHN0eWxlLnRvcCgpOwogICAgIGF1
dG8gbGVmdCA9IHN0eWxlLmxlZnQoKTsKICAgICBpZiAobGVmdC5pc0ZpeGVkKCkgJiYgd2lkdGgu
aXNGaXhlZCgpICYmIC1sZWZ0LnZhbHVlKCkgPj0gd2lkdGgudmFsdWUoKSkKLSAgICAgICAgcmV0
dXJuIEhJRERFTjsKKyAgICAgICAgcmV0dXJuIFZpc2liaWxpdHk6OkhpZGRlbjsKIAogICAgIGlm
ICh0b3AuaXNGaXhlZCgpICYmIGhlaWdodC5pc0ZpeGVkKCkgJiYgLXRvcC52YWx1ZSgpID49IGhl
aWdodC52YWx1ZSgpKQotICAgICAgICByZXR1cm4gSElEREVOOwotICAgIHJldHVybiBWSVNJQkxF
OworICAgICAgICByZXR1cm4gVmlzaWJpbGl0eTo6SGlkZGVuOworICAgIHJldHVybiBWaXNpYmls
aXR5OjpWaXNpYmxlOwogfQogCiBDaGVja0ZvclZpc2liaWxpdHlDaGFuZ2U6OkNoZWNrRm9yVmlz
aWJpbGl0eUNoYW5nZShjb25zdCBFbGVtZW50JiBlbGVtZW50KQogICAgIDogbV9lbGVtZW50KGVs
ZW1lbnQpCi0gICAgLCBtX3ByZXZpb3VzRGlzcGxheShlbGVtZW50LnJlbmRlclN0eWxlKCkgPyBl
bGVtZW50LnJlbmRlclN0eWxlKCktPmRpc3BsYXkoKSA6IE5PTkUpCi0gICAgLCBtX3ByZXZpb3Vz
VmlzaWJpbGl0eShlbGVtZW50LnJlbmRlclN0eWxlKCkgPyBlbGVtZW50LnJlbmRlclN0eWxlKCkt
PnZpc2liaWxpdHkoKSA6IEhJRERFTikKLSAgICAsIG1fcHJldmlvdXNJbXBsaWNpdFZpc2liaWxp
dHkoV0tPYnNlcnZpbmdDb250ZW50Q2hhbmdlcygpICYmIFdLT2JzZXJ2ZWRDb250ZW50Q2hhbmdl
KCkgIT0gV0tDb250ZW50VmlzaWJpbGl0eUNoYW5nZSA/IGVsZW1lbnRJbXBsaWNpdFZpc2liaWxp
dHkoZWxlbWVudCkgOiBWSVNJQkxFKQorICAgICwgbV9wcmV2aW91c0Rpc3BsYXkoZWxlbWVudC5y
ZW5kZXJTdHlsZSgpID8gZWxlbWVudC5yZW5kZXJTdHlsZSgpLT5kaXNwbGF5KCkgOiBEaXNwbGF5
VHlwZTo6Tm9uZSkKKyAgICAsIG1fcHJldmlvdXNWaXNpYmlsaXR5KGVsZW1lbnQucmVuZGVyU3R5
bGUoKSA/IGVsZW1lbnQucmVuZGVyU3R5bGUoKS0+dmlzaWJpbGl0eSgpIDogVmlzaWJpbGl0eTo6
SGlkZGVuKQorICAgICwgbV9wcmV2aW91c0ltcGxpY2l0VmlzaWJpbGl0eShXS09ic2VydmluZ0Nv
bnRlbnRDaGFuZ2VzKCkgJiYgV0tPYnNlcnZlZENvbnRlbnRDaGFuZ2UoKSAhPSBXS0NvbnRlbnRW
aXNpYmlsaXR5Q2hhbmdlID8gZWxlbWVudEltcGxpY2l0VmlzaWJpbGl0eShlbGVtZW50KSA6IFZp
c2liaWxpdHk6OlZpc2libGUpCiB7CiB9CiAKQEAgLTY4MCw4ICs2ODAsOCBAQCBDaGVja0ZvclZp
c2liaWxpdHlDaGFuZ2U6On5DaGVja0ZvclZpc2liCiAgICAgYXV0byogc3R5bGUgPSBtX2VsZW1l
bnQucmVuZGVyU3R5bGUoKTsKICAgICBpZiAoIXN0eWxlKQogICAgICAgICByZXR1cm47Ci0gICAg
aWYgKChtX3ByZXZpb3VzRGlzcGxheSA9PSBOT05FICYmIHN0eWxlLT5kaXNwbGF5KCkgIT0gTk9O
RSkgfHwgKG1fcHJldmlvdXNWaXNpYmlsaXR5ID09IEhJRERFTiAmJiBzdHlsZS0+dmlzaWJpbGl0
eSgpICE9IEhJRERFTikKLSAgICAgICAgfHwgKG1fcHJldmlvdXNJbXBsaWNpdFZpc2liaWxpdHkg
PT0gSElEREVOICYmIGVsZW1lbnRJbXBsaWNpdFZpc2liaWxpdHkobV9lbGVtZW50KSA9PSBWSVNJ
QkxFKSkKKyAgICBpZiAoKG1fcHJldmlvdXNEaXNwbGF5ID09IERpc3BsYXlUeXBlOjpOb25lICYm
IHN0eWxlLT5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6Ok5vbmUpIHx8IChtX3ByZXZpb3VzVmlz
aWJpbGl0eSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gJiYgc3R5bGUtPnZpc2liaWxpdHkoKSAhPSBW
aXNpYmlsaXR5OjpIaWRkZW4pCisgICAgICAgIHx8IChtX3ByZXZpb3VzSW1wbGljaXRWaXNpYmls
aXR5ID09IFZpc2liaWxpdHk6OkhpZGRlbiAmJiBlbGVtZW50SW1wbGljaXRWaXNpYmlsaXR5KG1f
ZWxlbWVudCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkpCiAgICAgICAgIFdLU2V0T2JzZXJ2ZWRD
b250ZW50Q2hhbmdlKFdLQ29udGVudFZpc2liaWxpdHlDaGFuZ2UpOwogfQogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXJHZW5l
cmF0ZWRDb250ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
dXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmNwcAkocmV2aXNpb24g
MjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVV
cGRhdGVyR2VuZXJhdGVkQ29udGVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDE0ICs5MSwx
NCBAQCBzdGF0aWMgdm9pZCB1cGRhdGVTdHlsZUZvckNvbnRlbnRSZW5kZXJlCiAKIHZvaWQgUmVu
ZGVyVHJlZVVwZGF0ZXI6OkdlbmVyYXRlZENvbnRlbnQ6OnVwZGF0ZVBzZXVkb0VsZW1lbnQoRWxl
bWVudCYgY3VycmVudCwgY29uc3Qgc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFVwZGF0ZT4m
IHVwZGF0ZSwgUHNldWRvSWQgcHNldWRvSWQpCiB7Ci0gICAgUHNldWRvRWxlbWVudCogcHNldWRv
RWxlbWVudCA9IHBzZXVkb0lkID09IEJFRk9SRSA/IGN1cnJlbnQuYmVmb3JlUHNldWRvRWxlbWVu
dCgpIDogY3VycmVudC5hZnRlclBzZXVkb0VsZW1lbnQoKTsKKyAgICBQc2V1ZG9FbGVtZW50KiBw
c2V1ZG9FbGVtZW50ID0gcHNldWRvSWQgPT0gUHNldWRvSWQ6OkJlZm9yZSA/IGN1cnJlbnQuYmVm
b3JlUHNldWRvRWxlbWVudCgpIDogY3VycmVudC5hZnRlclBzZXVkb0VsZW1lbnQoKTsKIAogICAg
IGlmIChhdXRvKiByZW5kZXJlciA9IHBzZXVkb0VsZW1lbnQgPyBwc2V1ZG9FbGVtZW50LT5yZW5k
ZXJlcigpIDogbnVsbHB0cikKICAgICAgICAgbV91cGRhdGVyLnJlbmRlclRyZWVQb3NpdGlvbigp
LmludmFsaWRhdGVOZXh0U2libGluZygqcmVuZGVyZXIpOwogCiAgICAgaWYgKCFuZWVkc1BzZXVk
b0VsZW1lbnQodXBkYXRlKSkgewogICAgICAgICBpZiAocHNldWRvRWxlbWVudCkgewotICAgICAg
ICAgICAgaWYgKHBzZXVkb0lkID09IEJFRk9SRSkKKyAgICAgICAgICAgIGlmIChwc2V1ZG9JZCA9
PSBQc2V1ZG9JZDo6QmVmb3JlKQogICAgICAgICAgICAgICAgIHJlbW92ZUJlZm9yZVBzZXVkb0Vs
ZW1lbnQoY3VycmVudCwgbV91cGRhdGVyLm1fYnVpbGRlcik7CiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgcmVtb3ZlQWZ0ZXJQc2V1ZG9FbGVtZW50KGN1cnJlbnQsIG1fdXBkYXRl
ci5tX2J1aWxkZXIpOwpAQCAtMTE2LDEzICsxMTYsMTMgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRl
cjo6R2VuZXJhdGVkQ29udGVudAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobmV3UHNldWRv
RWxlbWVudCkgewotICAgICAgICBpZiAocHNldWRvSWQgPT0gQkVGT1JFKQorICAgICAgICBpZiAo
cHNldWRvSWQgPT0gUHNldWRvSWQ6OkJlZm9yZSkKICAgICAgICAgICAgIGN1cnJlbnQuc2V0QmVm
b3JlUHNldWRvRWxlbWVudChuZXdQc2V1ZG9FbGVtZW50LnJlbGVhc2VOb25OdWxsKCkpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBjdXJyZW50LnNldEFmdGVyUHNldWRvRWxlbWVudChuZXdQ
c2V1ZG9FbGVtZW50LnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAotICAgIGlmICh1cGRhdGUt
PnN0eWxlLT5kaXNwbGF5KCkgPT0gQ09OVEVOVFMpIHsKKyAgICBpZiAodXBkYXRlLT5zdHlsZS0+
ZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpDb250ZW50cykgewogICAgICAgICAvLyBGb3IgZGlz
cGxheTpjb250ZW50cyB3ZSBjcmVhdGUgYW4gaW5saW5lIHdyYXBwZXIgdGhhdCBpbmhlcml0cyBp
dHMKICAgICAgICAgLy8gc3R5bGUgZnJvbSB0aGUgZGlzcGxheTpjb250ZW50cyBzdHlsZS4KICAg
ICAgICAgYXV0byBjb250ZW50c1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZVB0cigpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwCShyZXZpc2lv
biAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNyArMTE5LDcgQEAgR2x5cGhPdmVyZmxvdyB2aXN1YWxP
dmVyZmxvd0ZvckRlY29yYXRpbwogICAgIGZsb2F0IGhlaWdodCA9IGxpbmVTdHlsZS5mb250Q2Fz
Y2FkZSgpLmZvbnRNZXRyaWNzKCkuZmxvYXRIZWlnaHQoKTsKICAgICBHbHlwaE92ZXJmbG93IG92
ZXJmbG93UmVzdWx0OwogICAgIAotICAgIGlmIChkZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29y
YXRpb25TdHlsZVdhdnkpIHsKKyAgICBpZiAoZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0
aW9uU3R5bGU6OldhdnkpIHsKICAgICAgICAgZ2V0V2F2eVN0cm9rZVBhcmFtZXRlcnMobGluZVN0
eWxlLmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgpLCBjb250cm9sUG9pbnREaXN0YW5jZSwgc3RlcCk7
CiAgICAgICAgIHdhdnlPZmZzZXQgPSB3YXZ5T2Zmc2V0RnJvbURlY29yYXRpb24oKTsKICAgICAg
ICAgb3ZlcmZsb3dSZXN1bHQubGVmdCA9IHN0cm9rZVRoaWNrbmVzczsKQEAgLTEzMSw3ICsxMzEs
NyBAQCBHbHlwaE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvCiAgICAgICAgIC8v
IENvbXBlbnNhdGUgZm9yIHRoZSBpbnRlZ3JhbCBjZWlsaW5nIGluIEdyYXBoaWNzQ29udGV4dDo6
Y29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dCgpCiAgICAgICAgIGlu
dCB1bmRlcmxpbmVPZmZzZXQgPSAxOwogICAgICAgICB1bmRlcmxpbmVPZmZzZXQgKz0gY29tcHV0
ZVVuZGVybGluZU9mZnNldChsaW5lU3R5bGUudGV4dFVuZGVybGluZVBvc2l0aW9uKCksIGxpbmVT
dHlsZS5mb250TWV0cmljcygpLCBpbmxpbmVUZXh0Qm94LCBzdHJva2VUaGlja25lc3MpOwotICAg
ICAgICBpZiAoZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGVXYXZ5KSB7Cisg
ICAgICAgIGlmIChkZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSkg
ewogICAgICAgICAgICAgZXh0ZW5kSW50VG9GbG9hdChvdmVyZmxvd1Jlc3VsdC5ib3R0b20sIHVu
ZGVybGluZU9mZnNldCArIHdhdnlPZmZzZXQgKyBjb250cm9sUG9pbnREaXN0YW5jZSArIHN0cm9r
ZVRoaWNrbmVzcyAtIGhlaWdodCk7CiAgICAgICAgICAgICBleHRlbmRJbnRUb0Zsb2F0KG92ZXJm
bG93UmVzdWx0LnRvcCwgLSh1bmRlcmxpbmVPZmZzZXQgKyB3YXZ5T2Zmc2V0IC0gY29udHJvbFBv
aW50RGlzdGFuY2UgLSBzdHJva2VUaGlja25lc3MpKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTE0
MCw3ICsxNDAsNyBAQCBHbHlwaE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvCiAg
ICAgICAgIH0KICAgICB9CiAgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbk92ZXJs
aW5lKSB7Ci0gICAgICAgIGlmIChkZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHls
ZVdhdnkpIHsKKyAgICAgICAgaWYgKGRlY29yYXRpb25TdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0
eWxlOjpXYXZ5KSB7CiAgICAgICAgICAgICBleHRlbmRJbnRUb0Zsb2F0KG92ZXJmbG93UmVzdWx0
LmJvdHRvbSwgLXdhdnlPZmZzZXQgKyBjb250cm9sUG9pbnREaXN0YW5jZSArIHN0cm9rZVRoaWNr
bmVzcyAtIGhlaWdodCk7CiAgICAgICAgICAgICBleHRlbmRJbnRUb0Zsb2F0KG92ZXJmbG93UmVz
dWx0LnRvcCwgd2F2eU9mZnNldCArIGNvbnRyb2xQb2ludERpc3RhbmNlICsgc3Ryb2tlVGhpY2tu
ZXNzKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTE1MCw3ICsxNTAsNyBAQCBHbHlwaE92ZXJmbG93
IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvCiAgICAgfQogICAgIGlmIChkZWNvcmF0aW9uICYg
VGV4dERlY29yYXRpb25MaW5lVGhyb3VnaCkgewogICAgICAgICBmbG9hdCBiYXNlbGluZSA9IGxp
bmVTdHlsZS5mb250TWV0cmljcygpLmZsb2F0QXNjZW50KCk7Ci0gICAgICAgIGlmIChkZWNvcmF0
aW9uU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZVdhdnkpIHsKKyAgICAgICAgaWYgKGRlY29y
YXRpb25TdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5KSB7CiAgICAgICAgICAgICBl
eHRlbmRJbnRUb0Zsb2F0KG92ZXJmbG93UmVzdWx0LmJvdHRvbSwgMiAqIGJhc2VsaW5lIC8gMyAr
IGNvbnRyb2xQb2ludERpc3RhbmNlICsgc3Ryb2tlVGhpY2tuZXNzIC0gaGVpZ2h0KTsKICAgICAg
ICAgICAgIGV4dGVuZEludFRvRmxvYXQob3ZlcmZsb3dSZXN1bHQudG9wLCAtKDIgKiBiYXNlbGlu
ZSAvIDMgLSBjb250cm9sUG9pbnREaXN0YW5jZSAtIHN0cm9rZVRoaWNrbmVzcykpOwogICAgICAg
ICB9IGVsc2UgewpJbmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVDaGFuZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQ2hhbmdlLmNwcAkocmV2aXNp
b24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVDaGFuZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIENoYW5nZSBkZXRlcm1pbmVDaGFuZ2UoY29uc3Qg
UmVuZGVyU3R5bGUKIHsKICAgICBpZiAoczEuZGlzcGxheSgpICE9IHMyLmRpc3BsYXkoKSkKICAg
ICAgICAgcmV0dXJuIERldGFjaDsKLSAgICBpZiAoczEuaGFzUHNldWRvU3R5bGUoRklSU1RfTEVU
VEVSKSAhPSBzMi5oYXNQc2V1ZG9TdHlsZShGSVJTVF9MRVRURVIpKQorICAgIGlmIChzMS5oYXNQ
c2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RMZXR0ZXIpICE9IHMyLmhhc1BzZXVkb1N0eWxlKFBz
ZXVkb0lkOjpGaXJzdExldHRlcikpCiAgICAgICAgIHJldHVybiBEZXRhY2g7CiAgICAgLy8gV2Ug
anVzdCBkZXRhY2ggaWYgYSByZW5kZXJlciBhY3F1aXJlcyBvciBsb3NlcyBhIGNvbHVtbi1zcGFu
LCBzaW5jZSBzcGFubmluZyBlbGVtZW50cwogICAgIC8vIHR5cGljYWxseSB3b24ndCBjb250YWlu
IG11Y2ggY29udGVudC4KQEAgLTYyLDcgKzYyLDcgQEAgQ2hhbmdlIGRldGVybWluZUNoYW5nZShj
b25zdCBSZW5kZXJTdHlsZQogICAgIC8vIElmIHRoZSBwc2V1ZG9TdHlsZXMgaGF2ZSBjaGFuZ2Vk
LCB3ZSB3YW50IGFueSBTdHlsZUNoYW5nZSB0aGF0IGlzIG5vdCBOb0NoYW5nZQogICAgIC8vIGJl
Y2F1c2Ugc2V0U3R5bGUgd2lsbCBkbyB0aGUgcmlnaHQgdGhpbmcgd2l0aCBhbnl0aGluZyBlbHNl
LgogICAgIGlmIChzMS5oYXNBbnlQdWJsaWNQc2V1ZG9TdHlsZXMoKSkgewotICAgICAgICBmb3Ig
KFBzZXVkb0lkIHBzZXVkb0lkID0gRklSU1RfUFVCTElDX1BTRVVET0lEOyBwc2V1ZG9JZCA8IEZJ
UlNUX0lOVEVSTkFMX1BTRVVET0lEOyBwc2V1ZG9JZCA9IHN0YXRpY19jYXN0PFBzZXVkb0lkPihw
c2V1ZG9JZCArIDEpKSB7CisgICAgICAgIGZvciAoUHNldWRvSWQgcHNldWRvSWQgPSBQc2V1ZG9J
ZDo6Rmlyc3RQdWJsaWNQc2V1ZG9JZDsgcHNldWRvSWQgPCBQc2V1ZG9JZDo6Rmlyc3RJbnRlcm5h
bFBzZXVkb0lkOyBwc2V1ZG9JZCA9IHN0YXRpY19jYXN0PFBzZXVkb0lkPihzdGF0aWNfY2FzdDx1
bnNpZ25lZD4ocHNldWRvSWQpICsgMSkpIHsKICAgICAgICAgICAgIGlmIChzMS5oYXNQc2V1ZG9T
dHlsZShwc2V1ZG9JZCkpIHsKICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcHMyID0gczIu
Z2V0Q2FjaGVkUHNldWRvU3R5bGUocHNldWRvSWQpOwogICAgICAgICAgICAgICAgIGlmICghcHMy
KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVGb250U2l6ZUZ1bmN0aW9ucy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVGb250U2l6ZUZ1bmN0aW9u
cy5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlRm9u
dFNpemVGdW5jdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBAIGZsb2F0
IGNvbXB1dGVkRm9udFNpemVGcm9tU3BlY2lmaWVkU2l6ZSgKICAgICBpZiAoIXVzZVNWR1pvb21S
dWxlcykgewogICAgICAgICB6b29tRmFjdG9yID0gc3R5bGUtPmVmZmVjdGl2ZVpvb20oKTsKICAg
ICAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsKLSAgICAgICAgaWYgKGZyYW1l
ICYmIHN0eWxlLT50ZXh0Wm9vbSgpICE9IFRleHRab29tUmVzZXQpCisgICAgICAgIGlmIChmcmFt
ZSAmJiBzdHlsZS0+dGV4dFpvb20oKSAhPSBUZXh0Wm9vbTo6UmVzZXQpCiAgICAgICAgICAgICB6
b29tRmFjdG9yICo9IGZyYW1lLT50ZXh0Wm9vbUZhY3RvcigpOwogICAgIH0KICAgICByZXR1cm4g
Y29tcHV0ZWRGb250U2l6ZUZyb21TcGVjaWZpZWRTaXplKHNwZWNpZmllZFNpemUsIGlzQWJzb2x1
dGVTaXplLCB6b29tRmFjdG9yLCB1c2VTVkdab29tUnVsZXMgPyBNaW5pbXVtRm9udFNpemVSdWxl
OjpOb25lIDogTWluaW11bUZvbnRTaXplUnVsZTo6QWJzb2x1dGVBbmRSZWxhdGl2ZSwgZG9jdW1l
bnQuc2V0dGluZ3MoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVG
b3JEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVS
ZXNvbHZlRm9yRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4
LDggKzU4LDggQEAgUmVuZGVyU3R5bGUgcmVzb2x2ZUZvckRvY3VtZW50KGNvbnN0IERvYwogCiAg
ICAgYXV0byBkb2N1bWVudFN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwogCi0gICAgZG9j
dW1lbnRTdHlsZS5zZXREaXNwbGF5KEJMT0NLKTsKLSAgICBkb2N1bWVudFN0eWxlLnNldFJUTE9y
ZGVyaW5nKGRvY3VtZW50LnZpc3VhbGx5T3JkZXJlZCgpID8gVmlzdWFsT3JkZXIgOiBMb2dpY2Fs
T3JkZXIpOworICAgIGRvY3VtZW50U3R5bGUuc2V0RGlzcGxheShEaXNwbGF5VHlwZTo6QmxvY2sp
OworICAgIGRvY3VtZW50U3R5bGUuc2V0UlRMT3JkZXJpbmcoZG9jdW1lbnQudmlzdWFsbHlPcmRl
cmVkKCkgPyBPcmRlcjo6VmlzdWFsIDogT3JkZXI6OkxvZ2ljYWwpOwogICAgIGRvY3VtZW50U3R5
bGUuc2V0Wm9vbSghZG9jdW1lbnQucHJpbnRpbmcoKSA/IHJlbmRlclZpZXcuZnJhbWUoKS5wYWdl
Wm9vbUZhY3RvcigpIDogMSk7CiAgICAgZG9jdW1lbnRTdHlsZS5zZXRQYWdlU2NhbGVUcmFuc2Zv
cm0ocmVuZGVyVmlldy5mcmFtZSgpLmZyYW1lU2NhbGVGYWN0b3IoKSk7CiAgICAgRm9udENhc2Nh
ZGVEZXNjcmlwdGlvbiBkb2N1bWVudEZvbnREZXNjcmlwdGlvbiA9IGRvY3VtZW50U3R5bGUuZm9u
dERlc2NyaXB0aW9uKCk7CkBAIC05OSw3ICs5OSw3IEBAIFJlbmRlclN0eWxlIHJlc29sdmVGb3JE
b2N1bWVudChjb25zdCBEb2MKICAgICAgICAgICAgIHJlbmRlclZpZXcudXBkYXRlQ29sdW1uUHJv
Z3Jlc3Npb25Gcm9tU3R5bGUoZG9jdW1lbnRTdHlsZSk7CiAgICAgICAgIGlmIChyZW5kZXJWaWV3
LnBhZ2UoKS5wYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKCkpIHsKICAgICAgICAgICAgIGRvY3Vt
ZW50U3R5bGUuc2V0TGluZUdyaWQoIi13ZWJraXQtZGVmYXVsdC1wYWdpbmF0aW9uLWdyaWQiKTsK
LSAgICAgICAgICAgIGRvY3VtZW50U3R5bGUuc2V0TGluZVNuYXAoTGluZVNuYXBDb250YWluKTsK
KyAgICAgICAgICAgIGRvY3VtZW50U3R5bGUuc2V0TGluZVNuYXAoTGluZVNuYXA6OkNvbnRhaW4p
OwogICAgICAgICB9CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNo
YXJpbmdSZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVTaGFyaW5nUmVzb2x2ZXIuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVNoYXJpbmdSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcg
KzUwLDcgQEAgc3RydWN0IFNoYXJpbmdSZXNvbHZlcjo6Q29udGV4dCB7CiAgICAgY29uc3QgVXBk
YXRlJiB1cGRhdGU7CiAgICAgY29uc3QgU3R5bGVkRWxlbWVudCYgZWxlbWVudDsKICAgICBib29s
IGVsZW1lbnRBZmZlY3RlZEJ5Q2xhc3NSdWxlczsKLSAgICBFSW5zaWRlTGluayBlbGVtZW50TGlu
a1N0YXRlOworICAgIEluc2lkZUxpbmsgZWxlbWVudExpbmtTdGF0ZTsKIH07CiAKIFNoYXJpbmdS
ZXNvbHZlcjo6U2hhcmluZ1Jlc29sdmVyKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3Qg
RG9jdW1lbnRSdWxlU2V0cyYgcnVsZVNldHMsIGNvbnN0IFNlbGVjdG9yRmlsdGVyJiBzZWxlY3Rv
ckZpbHRlcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5j
cHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJl
c29sdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDcgKzE1Niw3IEBAIHN0YXRpYyBib29s
IGFmZmVjdHNSZW5kZXJlZFN1YnRyZWUoRWxlbWUKIHsKICAgICBpZiAoZWxlbWVudC5yZW5kZXJl
cigpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAobmV3U3R5bGUuZGlzcGxheSgpICE9
IE5PTkUpCisgICAgaWYgKG5ld1N0eWxlLmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Tm9uZSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKGVsZW1lbnQucmVuZGVyZXJJc05lZWRlZChu
ZXdTdHlsZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjM5LDE1ICsyMzksMTUgQEAgRWxl
bWVudFVwZGF0ZXMgVHJlZVJlc29sdmVyOjpyZXNvbHZlRWxlbQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgYXV0byBiZWZvcmVVcGRhdGUgPSByZXNvbHZlUHNldWRvU3R5bGUoZWxlbWVudCwgdXBk
YXRlLCBCRUZPUkUpOwotICAgIGF1dG8gYWZ0ZXJVcGRhdGUgPSByZXNvbHZlUHNldWRvU3R5bGUo
ZWxlbWVudCwgdXBkYXRlLCBBRlRFUik7CisgICAgYXV0byBiZWZvcmVVcGRhdGUgPSByZXNvbHZl
UHNldWRvU3R5bGUoZWxlbWVudCwgdXBkYXRlLCBQc2V1ZG9JZDo6QmVmb3JlKTsKKyAgICBhdXRv
IGFmdGVyVXBkYXRlID0gcmVzb2x2ZVBzZXVkb1N0eWxlKGVsZW1lbnQsIHVwZGF0ZSwgUHNldWRv
SWQ6OkFmdGVyKTsKIAogICAgIHJldHVybiB7IFdURk1vdmUodXBkYXRlKSwgZGVzY2VuZGFudHNU
b1Jlc29sdmUsIFdURk1vdmUoYmVmb3JlVXBkYXRlKSwgV1RGTW92ZShhZnRlclVwZGF0ZSkgfTsK
IH0KIAogRWxlbWVudFVwZGF0ZSBUcmVlUmVzb2x2ZXI6OnJlc29sdmVQc2V1ZG9TdHlsZShFbGVt
ZW50JiBlbGVtZW50LCBjb25zdCBFbGVtZW50VXBkYXRlJiBlbGVtZW50VXBkYXRlLCBQc2V1ZG9J
ZCBwc2V1ZG9JZCkKIHsKLSAgICBpZiAoZWxlbWVudFVwZGF0ZS5zdHlsZS0+ZGlzcGxheSgpID09
IE5PTkUpCisgICAgaWYgKGVsZW1lbnRVcGRhdGUuc3R5bGUtPmRpc3BsYXkoKSA9PSBEaXNwbGF5
VHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBpZiAoIWVsZW1lbnRVcGRhdGUu
c3R5bGUtPmhhc1BzZXVkb1N0eWxlKHBzZXVkb0lkKSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAg
LTI1NiwxMSArMjU2LDExIEBAIEVsZW1lbnRVcGRhdGUgVHJlZVJlc29sdmVyOjpyZXNvbHZlUHNl
dWQKICAgICBpZiAoIXBzZXVkb1N0eWxlKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgUHNl
dWRvRWxlbWVudCogcHNldWRvRWxlbWVudCA9IHBzZXVkb0lkID09IEJFRk9SRSA/IGVsZW1lbnQu
YmVmb3JlUHNldWRvRWxlbWVudCgpIDogZWxlbWVudC5hZnRlclBzZXVkb0VsZW1lbnQoKTsKKyAg
ICBQc2V1ZG9FbGVtZW50KiBwc2V1ZG9FbGVtZW50ID0gcHNldWRvSWQgPT0gUHNldWRvSWQ6OkJl
Zm9yZSA/IGVsZW1lbnQuYmVmb3JlUHNldWRvRWxlbWVudCgpIDogZWxlbWVudC5hZnRlclBzZXVk
b0VsZW1lbnQoKTsKICAgICBpZiAoIXBzZXVkb0VsZW1lbnQpIHsKICAgICAgICAgYXV0byBuZXdQ
c2V1ZG9FbGVtZW50ID0gUHNldWRvRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQsIHBzZXVkb0lkKTsK
ICAgICAgICAgcHNldWRvRWxlbWVudCA9IG5ld1BzZXVkb0VsZW1lbnQucHRyKCk7Ci0gICAgICAg
IGlmIChwc2V1ZG9JZCA9PSBCRUZPUkUpCisgICAgICAgIGlmIChwc2V1ZG9JZCA9PSBQc2V1ZG9J
ZDo6QmVmb3JlKQogICAgICAgICAgICAgZWxlbWVudC5zZXRCZWZvcmVQc2V1ZG9FbGVtZW50KFdU
Rk1vdmUobmV3UHNldWRvRWxlbWVudCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBlbGVt
ZW50LnNldEFmdGVyUHNldWRvRWxlbWVudChXVEZNb3ZlKG5ld1BzZXVkb0VsZW1lbnQpKTsKQEAg
LTI3NCw5ICsyNzQsOSBAQCBjb25zdCBSZW5kZXJTdHlsZSogVHJlZVJlc29sdmVyOjpwYXJlbnRC
CiAgICAgLy8gJ2Rpc3BsYXk6IGNvbnRlbnRzJyBkb2Vzbid0IGdlbmVyYXRlIGJveGVzLgogICAg
IGZvciAodW5zaWduZWQgaSA9IG1fcGFyZW50U3RhY2suc2l6ZSgpOyBpOyAtLWkpIHsKICAgICAg
ICAgYXV0byYgcGFyZW50ID0gbV9wYXJlbnRTdGFja1tpIC0gMV07Ci0gICAgICAgIGlmIChwYXJl
bnQuc3R5bGUuZGlzcGxheSgpID09IE5PTkUpCisgICAgICAgIGlmIChwYXJlbnQuc3R5bGUuZGlz
cGxheSgpID09IERpc3BsYXlUeXBlOjpOb25lKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgICAgIGlmIChwYXJlbnQuc3R5bGUuZGlzcGxheSgpICE9IENPTlRFTlRTKQorICAgICAg
ICBpZiAocGFyZW50LnN0eWxlLmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Q29udGVudHMpCiAg
ICAgICAgICAgICByZXR1cm4gJnBhcmVudC5zdHlsZTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkBAIC00MzMsNyArNDMzLDcgQEAgc3RhdGljIGJvb2wgaGFzTG9hZGluZ1N0eWxl
c2hlZXQoY29uc3QgUwogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBjcmVh
dGVJbmhlcml0ZWREaXNwbGF5Q29udGVudHNTdHlsZUlmTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxl
JiBwYXJlbnRFbGVtZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hTdHlsZSkK
IHsKLSAgICBpZiAocGFyZW50RWxlbWVudFN0eWxlLmRpc3BsYXkoKSAhPSBDT05URU5UUykKKyAg
ICBpZiAocGFyZW50RWxlbWVudFN0eWxlLmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Q29udGVu
dHMpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChwYXJlbnRCb3hTdHlsZSAmJiAh
cGFyZW50Qm94U3R5bGUtPmluaGVyaXRlZE5vdEVxdWFsKCZwYXJlbnRFbGVtZW50U3R5bGUpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ2NSw3ICs0NjUsNyBAQCB2b2lkIFRyZWVSZXNv
bHZlcjo6cmVzb2x2ZUNvbXBvc2VkVHJlZSgpCiAgICAgICAgIGlmIChpczxUZXh0Pihub2RlKSkg
ewogICAgICAgICAgICAgYXV0byYgdGV4dCA9IGRvd25jYXN0PFRleHQ+KG5vZGUpOwogICAgICAg
ICAgICAgCi0gICAgICAgICAgICBpZiAoKHRleHQuc3R5bGVWYWxpZGl0eSgpID49IFZhbGlkaXR5
OjpTdWJ0cmVlQW5kUmVuZGVyZXJzSW52YWxpZCAmJiBwYXJlbnQuY2hhbmdlICE9IERldGFjaCkg
fHwgcGFyZW50LnN0eWxlLmRpc3BsYXkoKSA9PSBDT05URU5UUykgeworICAgICAgICAgICAgaWYg
KCh0ZXh0LnN0eWxlVmFsaWRpdHkoKSA+PSBWYWxpZGl0eTo6U3VidHJlZUFuZFJlbmRlcmVyc0lu
dmFsaWQgJiYgcGFyZW50LmNoYW5nZSAhPSBEZXRhY2gpIHx8IHBhcmVudC5zdHlsZS5kaXNwbGF5
KCkgPT0gRGlzcGxheVR5cGU6OkNvbnRlbnRzKSB7CiAgICAgICAgICAgICAgICAgVGV4dFVwZGF0
ZSB0ZXh0VXBkYXRlOwogICAgICAgICAgICAgICAgIHRleHRVcGRhdGUuaW5oZXJpdGVkRGlzcGxh
eUNvbnRlbnRzU3R5bGUgPSBjcmVhdGVJbmhlcml0ZWREaXNwbGF5Q29udGVudHNTdHlsZUlmTmVl
ZGVkKHBhcmVudC5zdHlsZSwgcGFyZW50Qm94U3R5bGUoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnQuaAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDcgKzE3Miw3IEBAIHByb3RlY3RlZDoKICAg
ICBjbGFzcyBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkOwogCiBwcml2YXRlOgotICAgIGNvbnN0
IFJlbmRlclN0eWxlKiBjb21wdXRlZFN0eWxlKFBzZXVkb0lkID0gTk9QU0VVRE8pIGZpbmFsOwor
ICAgIGNvbnN0IFJlbmRlclN0eWxlKiBjb21wdXRlZFN0eWxlKFBzZXVkb0lkID0gUHNldWRvSWQ6
Ok5vbmUpIGZpbmFsOwogCiAgICAgdmlydHVhbCB2b2lkIGNsZWFyVGFyZ2V0KCkgeyB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsNyAr
OTMsNyBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHR0VsZW1lbnQ6OmNyCiAgICAgLy8g
V2Ugc3RpbGwgaGF2ZSB0byBjcmVhdGUgcmVuZGVyZXJzIGZvciB0aGUgPGc+ICYgPGxpbmVhckdy
YWRpZW50PiBlbGVtZW50LCB0aG91Z2ggdGhlCiAgICAgLy8gc3VidHJlZSBtYXkgYmUgaGlkZGVu
IC0gd2Ugb25seSB3YW50IHRoZSByZXNvdXJjZSByZW5kZXJlcnMgdG8gZXhpc3Qgc28gdGhleSBj
YW4gYmUKICAgICAvLyByZWZlcmVuY2VkIGZyb20gc29tZXdoZXJlIGVsc2UuCi0gICAgaWYgKHN0
eWxlLmRpc3BsYXkoKSA9PSBOT05FKQorICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxh
eVR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdIaWRk
ZW5Db250YWluZXI+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiAKICAgICByZXR1cm4gY3JlYXRl
UmVuZGVyZXI8UmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcj4oKnRoaXMsIFdURk1vdmUo
c3R5bGUpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMjEy
MykKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDE4LTA1LTIyICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgTW9kZXJuaXplIFJlbmRlclN0eWxlQ29uc3RhbnRzLmggLSBQYXJ0IDIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTkwMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9X
ZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgIChzZWFyY2hGb3JMYWJlbHNCZWZvcmVF
bGVtZW50KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgIChuc1RleHRB
bGlnbm1lbnRGcm9tUmVuZGVyU3R5bGUpOgorCiAyMDE4LTA1LTIyICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lvbihBc3luY1BvbGljeURlbGVnYXRl
cyk6IEJveC5hcHAgbG9naW4gV2luZG93IGlzIGJsYW5rCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQko
cmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJI
VE1MUmVwcmVzZW50YXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ1NSw3ICs0NTUsNyBAQCBz
dGF0aWMgTlNTdHJpbmcqIHNlYXJjaEZvckxhYmVsc0JlZm9yZUVsCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNlYXJjaGVkQ2VsbEFi
b3ZlID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlmIChuLT5pc1RleHROb2RlKCkgJiYgbi0+cmVu
ZGVyZXIoKSAmJiBuLT5yZW5kZXJlcigpLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxF
KSB7CisgICAgICAgIH0gZWxzZSBpZiAobi0+aXNUZXh0Tm9kZSgpICYmIG4tPnJlbmRlcmVyKCkg
JiYgbi0+cmVuZGVyZXIoKS0+c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6Vmlz
aWJsZSkgewogICAgICAgICAgICAgLy8gRm9yIGVhY2ggdGV4dCBjaHVuaywgcnVuIHRoZSByZWdl
eHAKICAgICAgICAgICAgIFN0cmluZyBub2RlU3RyaW5nID0gbi0+bm9kZVZhbHVlKCk7CiAgICAg
ICAgICAgICAvLyBhZGQgMTAwIGZvciBzbG9wLCB0byBtYWtlIGl0IG1vcmUgbGlrZWx5IHRoYXQg
d2UnbGwgc2VhcmNoIHdob2xlIG5vZGVzCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTk3OTksMjUgKzk3
OTksMjUgQEAgc3RhdGljIE5TVGV4dEFsaWdubWVudCBuc1RleHRBbGlnbm1lbnRGcgogewogICAg
IE5TVGV4dEFsaWdubWVudCB0ZXh0QWxpZ25tZW50OwogICAgIHN3aXRjaCAoc3R5bGUtPnRleHRB
bGlnbigpKSB7Ci0gICAgY2FzZSBSSUdIVDoKLSAgICBjYXNlIFdFQktJVF9SSUdIVDoKKyAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OlJpZ2h0OgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0
UmlnaHQ6CiAgICAgICAgIHRleHRBbGlnbm1lbnQgPSBOU1RleHRBbGlnbm1lbnRSaWdodDsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMRUZUOgotICAgIGNhc2UgV0VCS0lUX0xFRlQ6CisgICAg
Y2FzZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0
TGVmdDoKICAgICAgICAgdGV4dEFsaWdubWVudCA9IE5TVGV4dEFsaWdubWVudExlZnQ7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ0VOVEVSOgotICAgIGNhc2UgV0VCS0lUX0NFTlRFUjoKKyAg
ICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6Oldl
YktpdENlbnRlcjoKICAgICAgICAgdGV4dEFsaWdubWVudCA9IE5TVGV4dEFsaWdubWVudENlbnRl
cjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBKVVNUSUZZOgorICAgIGNhc2UgVGV4dEFsaWdu
TW9kZTo6SnVzdGlmeToKICAgICAgICAgdGV4dEFsaWdubWVudCA9IE5TVGV4dEFsaWdubWVudEp1
c3RpZmllZDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUQVNUQVJUOgorICAgIGNhc2UgVGV4
dEFsaWduTW9kZTo6U3RhcnQ6CiAgICAgICAgIHRleHRBbGlnbm1lbnQgPSBzdHlsZS0+aXNMZWZ0
VG9SaWdodERpcmVjdGlvbigpID8gTlNUZXh0QWxpZ25tZW50TGVmdCA6IE5TVGV4dEFsaWdubWVu
dFJpZ2h0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRBRU5EOgorICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6RW5kOgogICAgICAgICB0ZXh0QWxpZ25tZW50ID0gc3R5bGUtPmlzTGVmdFRvUmln
aHREaXJlY3Rpb24oKSA/IE5TVGV4dEFsaWdubWVudFJpZ2h0IDogTlNUZXh0QWxpZ25tZW50TGVm
dDsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341150</attachid>
            <date>2018-05-23 17:02:41 -0700</date>
            <delta_ts>2018-05-23 20:20:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185901-20180523170240.patch</filename>
            <type>text/plain</type>
            <size>673787</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwMyBAQAorMjAxOC0wNS0yMiAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIE1vZGVybml6ZSBSZW5kZXJTdHlsZUNv
bnN0YW50cy5oIC0gUGFydCAyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODU5MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBWE9iamVjdENhY2hlOjppc05vZGVWaXNpYmxlIGNvbnN0KToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlMaXN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9sOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlz
SWdub3JlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVkaWFUaW1l
RGlzcGxheTo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQgY29uc3QpOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0RPTUhpZGRlbiBjb25zdCk6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRlZmF1bHRPYmplY3RJbmNsdXNpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNVbnZp
c2l0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6aXNWaXNpdGVkIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmlzRGF0
YVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBhbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU0FuaW1hdGlv
bnNGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjp1cGRh
dGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnQpOgorICAgICAgICAqIGFuaW1hdGlvbi9DU1NBbmlt
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQW5pbWF0aW9uOjpzeW5jUHJvcGVydGll
c1dpdGhCYWNraW5nQW5pbWF0aW9uKToKKyAgICAgICAgKiBhbmltYXRpb24vRGVjbGFyYXRpdmVB
bmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVjbGFyYXRpdmVBbmltYXRpb246Omlu
aXRpYWxpemUpOgorICAgICAgICAqIGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdFJlYWRPbmx5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0UmVhZE9ubHk6OmJhY2tpbmdBbmlt
YXRpb25Gb3JDb21wb3NpdGVkUmVuZGVyZXIgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVuZGVyVGV4dERl
Y29yYXRpb25TdHlsZUZsYWdzVG9DU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0
VG9QYWdlQnJlYWspOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvQ29sdW1uQnJlYWspOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6c3R5bGVkRWxlbWVudCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpzdHlsZWRS
ZW5kZXJlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlUmVuZGVyU3R5bGVGb3JQ
cm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpzaGFwZVByb3BlcnR5VmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eWluU3R5
bGUpOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAg
ICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBDYXB0aW9uU2lkZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQ3Vyc29yVHlwZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQ3Vyc29yVmlz
aWJpbGl0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3Bl
cmF0b3IgRGlzcGxheVR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZl
VmFsdWU6Om9wZXJhdG9yIEVtcHR5Q2VsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
cmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgTGlzdFN0eWxlUG9zaXRpb24gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIExpc3RTdHlsZVR5cGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEJyZWFr
QmV0d2VlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3Bl
cmF0b3IgQnJlYWtJbnNpZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZl
VmFsdWU6Om9wZXJhdG9yIFRleHRBbGlnbk1vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRleHRBbGlnbkxhc3QgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRleHRKdXN0aWZ5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0RGVj
b3JhdGlvblN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVl
OjpvcGVyYXRvciBUZXh0VHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
aW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBWaXNpYmlsaXR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBXaGl0ZVNwYWNlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBSdWJ5UG9zaXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRleHRF
bXBoYXNpc0ZpbGwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6
Om9wZXJhdG9yIFRleHRFbXBoYXNpc01hcmsgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFBvaW50ZXJFdmVudHMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEh5cGhlbnMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIExpbmVTbmFwIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBMaW5lQWxp
Z24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9y
IE9yZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVy
YXRvciBCb3JkZXJGaXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFs
dWU6Om9wZXJhdG9yIENvbHVtbkF4aXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJp
bWl0aXZlVmFsdWU6Om9wZXJhdG9yIENvbHVtblByb2dyZXNzaW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBDU1NCb3hUeXBlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0Wm9vbSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUNh
cHRpb25TaWRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2
ZVZhbHVlOjpvcGVyYXRvciBFQ3Vyc29yIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFRGlzcGxheSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUVtcHR5Q2Vs
bCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6
b3BlcmF0b3IgRUxpc3RTdHlsZVBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFTGlzdFN0eWxlVHlwZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3Ig
RVRleHRBbGlnbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRp
dmVWYWx1ZTo6b3BlcmF0b3IgRVRleHRUcmFuc2Zvcm0gY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVWaXNpYmlsaXR5IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRv
ciBFV2hpdGVTcGFjZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmlt
aXRpdmVWYWx1ZTo6b3BlcmF0b3IgRVBvaW50ZXJFdmVudHMgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVCb3JkZXJGaXQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTZWxlY3Rvcjo6cHNldWRvSWQpOgorICAgICAgICAqIGNzcy9DU1NUb1N0eWxl
TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkZp
bGxNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvblBs
YXlTdGF0ZSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW46CisgICAgICAgICog
Y3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRS
dWxlQ29sbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50UnVsZUNvbGxlY3Rvcjo6cnVsZU1hdGNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdCk6CisgICAgICAg
ICogY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmg6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hl
Y2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6Om1hdGNoIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6bWF0Y2hIb3N0UHNldWRvQ2xh
c3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6aGFzU2Nyb2xsYmFyUHNldWRvRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6Om1hdGNoUmVjdXJzaXZlbHkgY29u
c3QpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuaDoKKyAgICAgICAgKiBjc3MvU3R5
bGVCdWlsZGVyQ29udmVydGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRUZXh0QWxpZ24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0Q2xpcFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0U2hhcGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFja0xpc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjc3N0b0xlbmd0aENvbnZlcnNpb25EYXRhV2l0aFRl
eHRab29tRmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydFBhZ2VCcmVha0JldHdlZW4pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0UGFnZUJyZWFrSW5zaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENvbHVtbkJyZWFrQmV0d2Vlbik6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDb2x1bW5CcmVha0luc2lk
ZSk6CisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlSW1hZ2VSZXNvbHV0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbXB1dGVCYXNlU3BlY2lmaWVkRm9udFNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0VGV4dFpvb20pOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjppc1ZhbGlkRGlzcGxheVZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0RGlzcGxh
eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVEaXNw
bGF5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdl
YmtpdFRleHRFbXBoYXNpc1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJD
dXN0b206OmFwcGx5VmFsdWVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRl
ckN1c3RvbTo6ZGV0ZXJtaW5lUnVieVRleHRTaXplTXVsdGlwbGllcik6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVBbHQpOgorICAgICAgICAqIGNzcy9T
dHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxl
Rm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjplcXVpdmFsZW50QmxvY2tEaXNwbGF5KToK
KyAgICAgICAgKFdlYkNvcmU6OmRvZXNOb3RJbmhlcml0VGV4dERlY29yYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YWRqdXN0U3R5bGVGb3JJbnRlckNoYXJhY3RlclJ1
YnkpOgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0RGlzcGxheUNvbnRlbnRzU3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YWRqdXN0U1ZHRWxlbWVudFN0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxlUnVsZXNGb3JFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OmlzQ2FjaGVhYmxlSW5NYXRjaGVkUHJvcGVydGllc0NhY2hlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5TWF0Y2hlZFByb3BlcnRpZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjpQcm9wZXJ0
eTo6YXBwbHkpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJlc29sdmVyOjpTdGF0ZTo6ZWxlbWVudExpbmtTdGF0ZSBjb25zdCk6CisgICAg
ICAgICogY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0b3JDb21waWxlcjo6Y29uc3RydWN0RnJhZ21lbnRzSW50ZXJuYWwpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZVJl
cXVlc3RlZFBzZXVkb0VsZW1lbnRFcXVhbHNUb1NlbGVjdG9yUHNldWRvRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpTZWxlY3RvckNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlTWFya1BzZXVkb1N0eWxlRm9yUHNldWRvRWxlbWVudCk6CisgICAgICAgICogZG9tL0Rv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdHlsZUZvckVsZW1lbnRJ
Z25vcmluZ1BlbmRpbmdTdHlsZXNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
aXNQYWdlQm94VmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VmlzdWFs
bHlPcmRlcmVkKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojppc0ZvY3VzYWJsZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpoYXNEaXNwbGF5Q29udGVudHMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c3RvcmVEaXNwbGF5Q29udGVudHNTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OmJlZm9yZU9yQWZ0ZXJQc2V1ZG9FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OmNvbXB1dGVkU3R5bGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAg
ICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUVkaXRhYmlsaXR5RnJv
bUNvbXB1dGVkU3R5bGUpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjppc1BzZXVkb0VsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
aXNCZWZvcmVQc2V1ZG9FbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Omlz
QWZ0ZXJQc2V1ZG9FbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnBzZXVk
b0lkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmN1c3RvbVBzZXVkb0lkIGNvbnN0
KToKKyAgICAgICAgKiBkb20vUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRp
b246OnVwc3RyZWFtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpkb3duc3Ry
ZWFtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjppc0NhbmRpZGF0ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6cmVuZGVyc0luRGlmZmVyZW50UG9zaXRp
b24gY29uc3QpOgorICAgICAgICAqIGRvbS9Qb3NpdGlvbkl0ZXJhdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBvc2l0aW9uSXRlcmF0b3I6OmlzQ2FuZGlkYXRlIGNvbnN0KToKKyAgICAgICAg
KiBkb20vUHNldWRvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9FbGVtZW50
Ojpwc2V1ZG9FbGVtZW50TmFtZUZvckV2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9F
bGVtZW50OjpQc2V1ZG9FbGVtZW50KToKKyAgICAgICAgKiBkb20vVmlzaXRlZExpbmtTdGF0ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNpdGVkTGlua1N0YXRlOjpkZXRlcm1pbmVMaW5rU3Rh
dGVTbG93Q2FzZSk6CisgICAgICAgICogZG9tL1Zpc2l0ZWRMaW5rU3RhdGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RhdGU6OmRldGVybWluZUxpbmtTdGF0ZSk6CisgICAgICAg
ICogZWRpdGluZy9FZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzU3BlY2lhbEhUTUxF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmlzTm9kZVJlbmRlcmVkKToKKyAgICAgICAgKiBl
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYXNWaXNpYmxlVGV4
dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRCb3gpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlUmVwbGFjZWRFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6c2hvdWxkUmVwcmVzZW50Tm9kZU9mZnNldFpl
cm8pOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6
YWR2YW5jZSk6CisgICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZmluZFN0YXJ0T2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZEVu
ZE9mUGFyYWdyYXBoKToKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9FZGl0b3JJT1MubW06CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRp
bmdEaXJlY3Rpb24pOgorICAgICAgICAqIGh0bWwvSFRNTEFyZWFFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxBcmVhRWxlbWVudDo6aXNGb2N1c2FibGUgY29uc3QpOgorICAgICAg
ICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZUlubmVyVGV4dFN0eWxlKToKKyAgICAg
ICAgKiBodG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE9wdEdyb3VwRWxlbWVudDo6aXNGb2N1c2FibGUgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRN
TE9wdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6
OmlzRm9jdXNhYmxlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6Y3JlYXRlSW5uZXJU
ZXh0U3R5bGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGVj
dGlvblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
OjphZGp1c3RJbm5lclRleHRTdHlsZSBjb25zdCk6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1l
bnRTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmF1
dG9wbGF5UGVybWl0dGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmlzTWFpbkNvbnRlbnRG
b3JQdXJwb3Nlc09mQXV0b3BsYXkpOgorICAgICAgICAqIGh0bWwvUnVieUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UnVieUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6Cisg
ICAgICAgICogaHRtbC9SdWJ5VGV4dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVi
eVRleHRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvc2hh
ZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
Q29udHJvbElubmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmJ1aWxkT2JqZWN0Rm9yRWxlbWVudERhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnBzZXVkb0VsZW1lbnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50
OjpidWlsZE9iamVjdEZvck5vZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTGF5ZXIpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0
cmVlL0xheW91dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6aXNJbmxp
bmVCbG9ja0JveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6aXNCbG9j
a0xldmVsQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94Ojppc0lubGlu
ZUxldmVsQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94Ojppc0Jsb2Nr
Q29udGFpbmVyQm94IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbGVjdEN1cnNvcik6CisgICAgICAgICog
cGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2VhcmNoRm9yTGFiZWxz
QWJvdmVDZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZWFyY2hGb3JMYWJlbHNCZWZv
cmVFbGVtZW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OmNyZWF0ZVNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVZpZXc6OmFkanVzdFNjcm9sbFN0ZXBGb3JGaXhlZENvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0
aW9uL0FuaW1hdGlvbkJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6
cGxheVN0YXRlUGxheWluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNl
Ojp1cGRhdGVQbGF5U3RhdGUpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJh
c2UuaDoKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpibGVuZEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlBbmltYXRpb25XcmFwcGVyTWFwOjpDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXAp
OgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wb3NpdGVBbmltYXRpb246OnVwZGF0ZVRyYW5zaXRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUFuaW1hdGlvbjo6dXBkYXRlS2V5ZnJhbWVBbmltYXRp
b25zKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUFuaW1hdGlvbjo6c3VzcGVuZEFuaW1h
dGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlQW5pbWF0aW9uOjpyZXN1bWVBbmlt
YXRpb25zKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUFuaW1hdGlvbjo6YW5pbWF0ZSk6CisgICAgICAg
ICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6bm9kZVJl
c3BvbmRpbmdUb0NsaWNrRXZlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hbmltYXRpb24vQW5p
bWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbjo6QW5pbWF0aW9uKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjpBbmltYXRpb246OmNsZWFyUGxheVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlv
bjo6ZmlsbE1vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uOjpwbGF5U3Rh
dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uOjpzZXRGaWxsTW9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBbmltYXRpb246OnNldFBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpBbmltYXRpb246OmZpbGxzQmFja3dhcmRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFuaW1hdGlvbjo6ZmlsbHNGb3J3YXJkcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBbmlt
YXRpb246OmluaXRpYWxGaWxsTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb246Omlu
aXRpYWxQbGF5U3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlw
ZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpjcmVhdGVUcmFuc2Zvcm1Bbmlt
YXRpb25zRnJvbUtleWZyYW1lcyk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5k
b3cubW06CisgICAgICAgICgtW1dBS1dpbmRvdyBkdW1wVGlsZXNdKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tOgorICAgICAgICAoV2ViQ29yZTo6aXNMb29r
YWxpa2VDaGFyYWN0ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9DbGlwUGF0aE9wZXJhdGlvbi5o
OgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUJveDo6dmlzaWJsZVRvSGl0VGVzdGluZyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5n
L0lubGluZUZsb3dCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6YWRk
VG9MaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBsYWNlQm94ZXNJbkJs
b2NrRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OmFkZFRleHRC
b3hWaXN1YWxPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWlu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWludEJveERlY29yYXRpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBhaW50TWFzayk6CisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVGbG93Qm94Ojpjb21wdXRlT3ZlckFubm90YXRpb25BZGp1c3RtZW50
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OmNvbXB1dGVVbmRlckFu
bm90YXRpb25BZGp1c3RtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dC
b3g6OmNvbGxlY3RMZWFmQm94ZXNJbkxvZ2ljYWxPcmRlciBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL0lubGluZUZsb3dCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6
OklubGluZUZsb3dCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OmVtcGhhc2lzTWFya0V4aXN0c0FuZElz
QWJvdmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6Y3JlYXRlVGV4dFJ1biBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1BvaW50ZXJFdmVudHNIaXRSdWxlcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQb2ludGVyRXZlbnRzSGl0UnVsZXM6OlBvaW50ZXJFdmVudHNIaXRSdWxlcyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1BvaW50ZXJFdmVudHNIaXRSdWxlcy5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
Y29tcHV0ZVN0YXJ0UG9zaXRpb25EZWx0YUZvckNoaWxkQXZvaWRpbmdGbG9hdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjpwYWludE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6c2hv
dWxkUGFpbnRTZWxlY3Rpb25HYXBzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjphZGp1c3RMb2dpY2FsTGVmdE9mZnNldEZvckxpbmUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OmFkanVzdExvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6aXNDaGlsZEhpdFRlc3RDYW5kaWRhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNvbXB1dGVCbG9ja1ByZWZlcnJlZExvZ2ljYWxXaWR0aHMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmZpcnN0TGluZUJsb2NrIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRGaXJzdExldHRlckJsb2NrKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpnZXRGaXJzdExldHRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6Y3JlYXRlQW5vbnltb3VzQmxvY2tXaXRoU3R5bGVBbmREaXNwbGF5KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjaGlsZEJveElzVW5zcGxpdHRhYmxlRm9y
RnJhZ21lbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29u
c3RydWN0VGV4dFJ1bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0RXhj
bHVkZWRDaGlsZHJlbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRl
cmVyQW5kRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y3JlYXRlQW5v
bnltb3VzQmxvY2sgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojp3aWxsQ3JlYXRlQ29sdW1u
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dEJsb2Nr
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6YXBwbHlCZWZvcmVCcmVhayk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmFwcGx5QWZ0ZXJCcmVhayk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmFkanVzdEZvclVuc3BsaXR0YWJsZUNo
aWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6dXBkYXRlU3R5bGVzRm9y
Q29sdW1uQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojpjb21w
dXRlTG9naWNhbExvY2F0aW9uRm9yRmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2tGbG93Ojpsb3dlc3RJbml0aWFsTGV0dGVyTG9naWNhbEJvdHRvbSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmFkanVzdEZvckJvcmRlckZpdCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmZpdEJvcmRlclRvTGluZXNJZk5lZWRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxpbmVBdEluZGV4IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bGluZUNvdW50IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OmdldEhlaWdodEZvckxpbmVDb3VudCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmNsZWFyVHJ1bmNhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9ja0Zsb3c6OmZpbmRDbG9zZXN0VGV4dEF0QWJzb2x1dGVQb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxpbmVDb3VudEZvclRleHRBdXRvc2l6aW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6c2V0Q29tcHV0ZWRDb2x1bW5D
b3VudEFuZFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6dXBkYXRl
Q29sdW1uUHJvZ3Jlc3Npb25Gcm9tU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2tGbG93Ojppc1RvcExheW91dE92ZXJmbG93QWxsb3dlZCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmlzTGVmdExheW91dE92ZXJmbG93QWxsb3dlZCBjb25zdCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2tGbG93Ojpjb25zdHJ1Y3RMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
Rmxvdzo6dGV4dEFsaWdubWVudEZvckxpbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2tGbG93Ojp1cGRhdGVMb2dpY2FsV2lkdGhGb3JBbGlnbm1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25z
Rm9yTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpleHBhbnNpb25CZWhhdmlvckZvcklubGluZVRl
eHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5l
RGlyZWN0aW9uUG9zaXRpb25zRm9yU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9ja0Zsb3c6OmxheW91dFJ1bnNBbmRGbG9hdHNJblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrRmxvdzo6Y2hlY2tGbG9hdEluQ2xlYW5MaW5lKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrRmxvdzo6ZGVsZXRlRWxsaXBzaXNMaW5lQm94ZXMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpjaGVja0xpbmVzRm9yVGV4dE92ZXJmbG93KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6c3RhcnRBbGlnbmVkT2Zmc2V0Rm9yTGlu
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6Omhhc1ZlcnRpY2FsU2Nyb2xsYmFyV2l0aEF1dG9CZWhhdmlvciBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Omhhc0hvcml6b250YWxTY3JvbGxiYXJXaXRo
QXV0b0JlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmlzQ2FuZGlkYXRlRm9yT3Bh
cXVlbmVzc1Rlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludE1hc2spOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludENsaXBwaW5nTWFzayk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6OnBvc2l0aW9uTGluZUJveCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEluRnJhZ21lbnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9u
TWFyZ2lucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnNraXBDb250YWlu
aW5nQmxvY2tGb3JQZXJjZW50SGVpZ2h0Q2FsY3VsYXRpb24gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94Ojpwb3NpdGlvbkZvclBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6aXNVbnNwbGl0dGFibGVGb3JQYWdpbmF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94TW9kZWxPYmplY3Q6OmxvY2FsQ2FyZXRSZWN0Rm9yRW1wdHlFbGVtZW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQ291bnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwbGFuQ291bnRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJDb3VudGVyOjpvcmlnaW5hbFRleHQgY29uc3QpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y2hpbGREb2VzTm90QWZmZWN0V2lkdGhPckZsZXhpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRIb3Jpem9udGFsQm94
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6bGF5b3V0
VmVydGljYWxCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRldGFpbHNNYXJrZXI6OnBhaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJFbGVtZW50OjpjcmVhdGVGb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6
Y29tcHV0ZUZpcnN0TGluZVN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVs
ZW1lbnQ6OnByb3BhZ2F0ZVN0eWxlVG9Bbm9ueW1vdXNDaGlsZHJlbik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJFbGVtZW50OjpzdHlsZVdpbGxDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJFbGVtZW50Ojp3aWxsQmVSZW1vdmVkRnJvbVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRWxlbWVudDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRWxlbWVudDo6aXNWaXNpYmxlSW5Eb2N1bWVudFJlY3QgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6Z2V0Q2FjaGVkUHNldWRvU3R5bGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6Z2V0VW5jYWNoZWRQc2V1ZG9TdHlsZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzZWxlY3Rpb25Qc2V1ZG9T
dHlsZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnZpc2libGVUb0hpdFRlc3RpbmcgY29uc3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cGFpbnRPYmplY3QpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUZ1bGxTY3JlZW5TdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZUVtcHR5VHJhY2tzRm9yQXV0
b1JlcGVhdCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpyZXBhaW50T3JNYXJrRm9yTGF5b3V0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlcklubGluZTo6d2lsbEJlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVN0
eWxlT2ZBbm9ueW1vdXNCbG9ja0NvbnRpbnVhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW5saW5lOjp1cGRhdGVBbHdheXNDcmVhdGVMaW5lQm94ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW5saW5lOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmFkZEFubm90YXRlZFJlZ2lvbnMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6UmVuZGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVw
ZGF0ZURlc2NlbmRhbnREZXBlbmRlbnRGbGFncyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6Y3JlYXRlU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlUmVxdWlyZXNT
Y3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVEZWZpbmVzQXV0b21hdGljU2Nyb2xs
YmFyKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVSZWZlcmVuY2VCb3gpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyBjb25zdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUFmdGVyRGVzY2VuZGFudHMpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2Ny
b2xsYmFySGFzRGlzcGxheU5vbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUGx1Z2luIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvckZyYW1l
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYWludE9iamVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjppdGVtT2Zmc2V0Rm9yQWxpZ25tZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RC
b3g6OnBhaW50SXRlbUZvcmVncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJv
eDo6cGFpbnRJdGVtQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94
OjpjcmVhdGVTY3JvbGxiYXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0SXRlbTo6Y29tcHV0ZU1hcmtlclN0eWxl
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjplZmZlY3RpdmVMaXN0TWFya2VyVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpsaXN0TWFya2VyU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6Omxpc3RNYXJrZXJUZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnBhaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnVwZGF0ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGlzdE1hcmtlcjo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6dXBkYXRlTWFyZ2lucyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpzdWZmaXggY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6aXNJbnNpZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGlzdE1hcmtlcjo6Z2V0UmVsYXRpdmVNYXJrZXJSZWN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJN
ZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZWRpYVZv
bHVtZVNsaWRlckNvbnRhaW5lcjo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRl
eHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmxheW91dCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0OjphZGp1
c3RJbm5lclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmlmKToKKyAgICAgICAgKFJlbmRlck1l
bnVMaXN0OjppdGVtU3R5bGUgY29uc3QpOgorICAgICAgICAoUmVuZGVyTWVudUxpc3Q6Om1lbnVT
dHlsZSBjb25zdCk6CisgICAgICAgIChSZW5kZXJNZW51TGlzdDo6Y3JlYXRlU2Nyb2xsYmFyKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xk
ZXI6OmNyZWF0ZUFub255bW91cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFkZEFubm90YXRlZFJlZ2lvbnMp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6aXNBbm9ueW1vdXNCbG9jayBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmlzQmVmb3JlQ29udGVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmlzQWZ0ZXJDb250ZW50IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6
OnNob3VsZFBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjbGlwcGVk
T3ZlcmZsb3dSZWN0Rm9yUmVwYWludCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clJ1YnlCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJ1YnlCYXNlOjp0ZXh0QWxp
Z25tZW50Rm9yTGluZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNl
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyUnVieVJ1bjo6Y3JlYXRlUnVieUJhc2UgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyUnVieVJ1bjo6c3RhdGljQ3JlYXRlUnVieVJ1bik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJSdWJ5UnVuOjpsYXlvdXRCbG9jayk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclJ1YnlUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJ1YnlUZXh0Ojp0ZXh0
QWxpZ25tZW50Rm9yTGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSdWJ5VGV4
dDo6YWRqdXN0SW5saW5lRGlyZWN0aW9uTGluZUJvdW5kcyBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclJ1YnlUZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9s
bGJhci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwc2V1ZG9Gb3JTY3JvbGxiYXJQYXJ0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhcjo6dXBkYXRlU2Nyb2xsYmFyUGFydCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNlYXJjaEZpZWxkOjp1cGRhdGVDYW5jZWxCdXR0b25WaXNpYmlsaXR5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJjaEZpZWxkOjp2aXNpYmlsaXR5Rm9yQ2Fu
Y2VsQnV0dG9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJjaEZpZWxkOjpt
ZW51U3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2VhcmNoRmllbGQ6OmNy
ZWF0ZVNjcm9sbGJhcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlOjp3aWxsSW5zZXJ0VGFibGVTZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlOjpsYXlvdXRDYXB0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
YWJsZTo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpwYWludE9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6YWRqdXN0Qm9yZGVyQm94UmVjdEZv
clBhaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpwYWludE1hc2spOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OnJlY2FsY1NlY3Rpb25zIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpjcmVhdGVUYWJsZVdpdGhTdHlsZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUYWJsZUNlbGw6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRhYmxlQ2VsbDo6cGFpbnRDb2xsYXBzZWRCb3JkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRhYmxlQ2VsbDo6cGFpbnRCYWNrZ3JvdW5kc0JlaGluZENlbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGFibGVDZWxsOjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6cGFpbnRNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRhYmxlQ2VsbDo6Y3JlYXRlVGFibGVDZWxsV2l0aFN0eWxlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVD
b2w6OnVwZGF0ZUZyb21FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ29s
Ojppc0NoaWxkQWxsb3dlZCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q29sLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRhYmxlUm93OjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUYWJsZVJvdzo6cGFpbnRPdXRsaW5lRm9yUm93SWZOZWVkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGFibGVSb3c6OmNyZWF0ZVRhYmxlUm93V2l0aFN0eWxlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6YWRkQ2VsbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUYWJsZVNlY3Rpb246OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2Vj
dGlvbjo6Y3JlYXRlVGFibGVTZWN0aW9uV2l0aFN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpzdHlsZURpZENo
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9n
aWNhbFdpZHRocyk6CisgICAgICAgIChXZWJDb3JlOjphcHBseVRleHRUcmFuc2Zvcm0pOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGV4dEZyYWdtZW50OjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUZXh0RnJhZ21lbnQ6OmJsb2NrRm9yQWNjb21wYW55aW5nRmlyc3RMZXR0ZXIpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjphZGp1c3RNZW51TGlz
dFN0eWxlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpyZW5kZXJlck9ic2N1cmVzQmFja2dyb3VuZCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6
OnNldFdpZGdldCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnN0eWxlRGlkQ2hh
bmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSb290SW5saW5lQm94OjpwYWludEVsbGlwc2lzQm94IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OmxpbmVTbmFwQWRqdXN0bWVudCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjpsaW5lU2VsZWN0aW9uR2FwKToKKyAgICAgICAg
KFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OmNvbXB1dGVDYXJldFJlY3QgY29uc3QpOgorICAgICAg
ICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNp
bXBsZUxpbmVMYXlvdXQ6OmNhblVzZUZvckZvbnRBbmRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNpbXBsZUxpbmVMYXlvdXQ6OmNhblVzZUZvclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNp
bXBsZUxpbmVMYXlvdXQ6OmNvbXB1dGVMaW5lTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGVMaW5lTGF5b3V0Ojp1cGRhdGVMaW5lQ29uc3RyYWlucyk6CisgICAgICAgIChXZWJDb3JlOjpT
aW1wbGVMaW5lTGF5b3V0OjpjcmVhdGVMaW5lUnVucyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGVMaW5lTGF5b3V0Ojp0ZXh0QWxpZ25Gb3JMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBs
ZUxpbmVMYXlvdXQ6OmNsb3NlTGluZUVuZGluZ0FuZEFkanVzdFJ1bnMpOgorICAgICAgICAqIHJl
bmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNpbXBsZUxpbmVMYXlvdXQ6OnBhaW50Rmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVM
aW5lTGF5b3V0OjpoaXRUZXN0Rmxvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVM
YXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVM
aW5lTGF5b3V0OjpUZXh0RnJhZ21lbnRJdGVyYXRvcjo6U3R5bGU6OlN0eWxlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp0ZXh0RGVjb3JhdGlvblN0eWxlVG9TdHJva2VTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50VGV4dERlY29yYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6Y29sbGVjdFN0eWxlc0ZvclJlbmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcv
VGV4dERlY29yYXRpb25QYWludGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvQnJlYWtp
bmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OkJyZWFraW5n
Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OmNsZWFyTGluZUJy
ZWFrSWZGaXRzT25MaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkJyZWFraW5nQ29udGV4dDo6aGFu
ZGxlQlIpOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0OjpoYW5kbGVPdXRPZkZs
b3dQb3NpdGlvbmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkJyZWFraW5nQ29udGV4dDo6aGFuZGxl
VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OmNhbkJyZWFrQXRUaGlz
UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0OjpoYW5kbGVFbmRP
ZkxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9saW5lL0xpbmVJbmxpbmVIZWFkZXJzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpzaG91bGRDb2xsYXBzZVdoaXRlU3BhY2UpOgorICAgICAgICAqIHJl
bmRlcmluZy9saW5lL0xpbmVXaWR0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXdGbG9hdFNo
cmlua3NMaW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL01hdGhPcGVyYXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNYXRoT3BlcmF0b3I6OnBhaW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTEZyYWN0aW9uOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxNYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE1h
dGg6OmxheW91dEJsb2NrKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TE1lbmNsb3NlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE1lbmNsb3NlOjpw
YWludCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJvb3Q6OnBhaW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTFRva2VuOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9C
b3hTaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlUm91bmRlZFJlY3RGb3JCb3hT
aGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnJlZmVyZW5jZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFw
ZU91dHNpZGVJbmZvOjpzZXRSZWZlcmVuY2VCb3hMb2dpY2FsU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFwZU91dHNpZGVJbmZvOjpsb2dpY2FsVG9wT2Zmc2V0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXBlT3V0c2lkZUluZm86OmxvZ2ljYWxMZWZ0T2Zmc2V0IGNvbnN0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQ291bnRlckNvbnRlbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvdW50ZXJDb250ZW50OjpDb3VudGVyQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpD
b3VudGVyQ29udGVudDo6bGlzdFN0eWxlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNyZWF0
ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmNyZWF0ZVN0eWxlSW5oZXJpdGluZ0Zyb21Qc2V1ZG9TdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6Omhhc1VuaXF1ZVBzZXVkb1N0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjpnZXRDYWNoZWRQc2V1ZG9TdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6YWRkQ2FjaGVkUHNldWRvU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5b3V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OnJlcXVpcmVzUGFpbnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omh5
cGhlblN0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6dGV4dEVt
cGhhc2lzTWFya1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
dmlzaXRlZERlcGVuZGVudENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjp0ZXh0RW1waGFzaXNNYXJrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjpzZXRDb2x1bW5TdHlsZXNGcm9tUGFnaW5hdGlvbk1vZGUpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OnNldFN0eWxlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0UlRMT3Jk
ZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmRpc3BsYXkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnZpc2liaWxpdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnRleHRBbGlnbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6dGV4dFRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6d2hpdGVTcGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6ZW1wdHlDZWxscyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6Y2FwdGlvblNpZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omxp
c3RTdHlsZVR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omxpc3RT
dHlsZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjdXJz
b3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omluc2lkZUxpbmsgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmJvcmRlckZpdCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6cG9pbnRlckV2ZW50cyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0RGlzcGxheSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6c2V0T3JpZ2luYWxEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjpzZXRWaXNpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxl
OjpzZXRUZXh0QWxpZ24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRleHRU
cmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRleHREZWNvcmF0
aW9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRleHREZWNvcmF0
aW9uU2tpcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0VGV4dFVuZGVybGlu
ZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXREaXJlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRleHRab29tKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRXaGl0ZVNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjpzZXRFbXB0eUNlbGxzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjpzZXRDYXB0aW9uU2lkZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0
TGlzdFN0eWxlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0TGlzdFN0
eWxlUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0Q3Vyc29yVmlzaWJpbGl0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0SW5zaWRlTGluayk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0SHlwaGVucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6c2V0Qm9yZGVyRml0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpz
ZXRDb2x1bW5BeGlzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRDb2x1bW5Q
cm9ncmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0VGV4dEVtcGhh
c2lzRmlsbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0VGV4dEVtcGhhc2lz
TWFyayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0UnVieVBvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRCcmVha0JlZm9yZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0QnJlYWtBZnRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6c2V0QnJlYWtJbnNpZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OnNldEhhbmdpbmdQdW5jdHVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6c2V0TGluZVNuYXApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldExp
bmVBbGlnbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0UG9pbnRlckV2ZW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbERpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxCcmVha0JldHdlZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxCcmVha0luc2lkZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbENhcHRpb25TaWRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjppbml0aWFsQ29sdW1uQXhpcyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6aW5pdGlhbENvbHVtblByb2dyZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjppbml0aWFsRW1wdHlDZWxscyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6aW5pdGlhbExpc3RTdHlsZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjppbml0aWFsTGlzdFN0eWxlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6aW5pdGlhbFRleHRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OmluaXRpYWxWaXNpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxl
Ojppbml0aWFsV2hpdGVTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5p
dGlhbEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRB
bGlnbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHREZWNvcmF0
aW9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0Wm9v
bSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbEh5cGhlbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJGaXQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxSVExPcmRlcmluZyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFBvaW50ZXJFdmVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RW1waGFzaXNDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRFbXBoYXNpc0ZpbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RW1waGFzaXNNYXJrKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsUnVieVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VSZXNvbHV0aW9uU291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VSZXNvbHV0aW9uU25hcCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRBbGlnbkxhc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0SnVzdGlmeSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbEN1cnNvclZpc2liaWxpdHkpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b1JlcGVhdFR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lU25hcCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVBbGlnbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6Omhhc0FueVB1YmxpY1BzZXVkb1N0eWxlcyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6b3JpZ2luYWxEaXNwbGF5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6
aGFzUHNldWRvU3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Ok5v
bkluaGVyaXRlZEZsYWdzOjpzZXRIYXNQc2V1ZG9TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OnNldEhhc1BzZXVkb1N0eWxlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YXV0b1dyYXApOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OnByZXNlcnZlTmV3bGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6Y29sbGFwc2VXaGl0ZVNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxl
OjpicmVha09ubHlBZnRlcldoaXRlU3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU3R5bGU6Omhhc0lubGluZUNvbHVtbkF4aXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmlzRGlzcGxheVJlZ2lvblR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU3R5bGU6OmlzRGlzcGxheVJlcGxhY2VkVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6aXNEaXNwbGF5SW5saW5lVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6aXNEaXNwbGF5RmxleGlibGVCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU3R5bGU6OmlzRGlzcGxheUdyaWRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmlzRGlzcGxheUZsZXhpYmxlT3JHcmlkQm94KToKKyAgICAgICAgKFdlYkNvcmU6OnBzZXVk
b0VsZW1lbnRSZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGVDb25zdGFudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6Cisg
ICAgICAgIChXZWJDb3JlOjphbHdheXNQYWdlQnJlYWspOgorICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6UHNldWRvSWRT
ZXQ6OmhhcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9JZFNldDo6YWRkKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZU11
bHRpQ29sRGF0YTo6U3R5bGVNdWx0aUNvbERhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFy
ZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmg6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHQ29udGFpbmVyOjpwYWludCk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJ
bWFnZTo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6Om5vZGVBdEZs
b2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmVUZXh0OjpzdHlsZURpZENoYW5n
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6Y2hlY2tJbnRlcnNlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmNoZWNrRW5jbG9zdXJl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnJlcXVlc3RQYWludGluZ1Jlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OnBhdGhPbmx5Q2xpcHBpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpjYWxjdWxhdGVD
bGlwQ29udGVudFJlcGFpbnRSZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlTWFza2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNl
TWFza2VyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmNhbGN1bGF0ZU1hc2tDb250ZW50UmVwYWludFJlY3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdSb290OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCBjb25zdCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdTaGFwZTo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHU2hhcGU6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0Ojpub2RlQXRG
bG9hdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb25CYWNr
Z3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OmNvbnN0cnVjdFRleHRSdW4gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6Om5vZGVBdFBvaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUmVuZGVyU3VwcG9ydDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwcm9jZXNzUmVuZGVyU1ZHSW5saW5lVGV4dCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjptZWFzdXJlVGV4dFJlbmRlcmVyKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6QmxvY2s6OmRldGFjaCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyRmlyc3RMZXR0ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVGb3JGaXJzdExldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6Rmlyc3RMZXR0ZXI6OnVwZGF0ZUFmdGVyRGVzY2VuZGFu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6OkZpcnN0TGV0dGVyOjp1
cGRhdGVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6Rmlyc3RM
ZXR0ZXI6OmNyZWF0ZVJlbmRlcmVycyk6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1Jl
bmRlclRyZWVCdWlsZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVC
dWlsZGVyOjpJbmxpbmU6OmF0dGFjaElnbm9yaW5nQ29udGludWF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpJbmxpbmU6Om5ld0NoaWxkSXNJbmxpbmUpOgorICAg
ICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlckxpc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6Okxpc3Q6OnVwZGF0ZUl0ZW1NYXJrZXIp
OgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlck1hdGhNTC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6TWF0aE1MOjpjcmVhdGVN
YXRoTUxPcGVyYXRvcik6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVC
dWlsZGVyTXVsdGlDb2x1bW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxk
ZXI6Ok11bHRpQ29sdW1uOjpjcmVhdGVGcmFnbWVudGVkRmxvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUcmVlQnVpbGRlcjo6TXVsdGlDb2x1bW46OnByb2Nlc3NQb3NzaWJsZVNwYW5uZXJE
ZXNjZW5kYW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxk
ZXJSdWJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzQW5vbnltb3VzUnVieUlubGluZUJsb2Nr
KToKKyAgICAgICAgKFdlYkNvcmU6OmlzUnVieUJlZm9yZUJsb2NrKToKKyAgICAgICAgKFdlYkNv
cmU6OmlzUnVieUFmdGVyQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQW5vbnltb3Vz
UnVieUlubGluZUJsb2NrKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJl
ZUJ1aWxkZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6
VGFibGU6OmZpbmRPckNyZWF0ZVBhcmVudEZvckNoaWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcv
dXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VHJlZVVwZGF0ZXI6OnVwZGF0ZUJlZm9yZURlc2NlbmRhbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVBZnRlckRlc2NlbmRhbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6ZWxlbWVudEltcGxpY2l0VmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpDaGVja0ZvclZpc2liaWxpdHlDaGFuZ2U6OkNoZWNrRm9yVmlzaWJpbGl0eUNoYW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDaGVja0ZvclZpc2liaWxpdHlDaGFuZ2U6On5DaGVja0ZvclZpc2li
aWxpdHlDaGFuZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBk
YXRlckdlbmVyYXRlZENvbnRlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVw
ZGF0ZXI6OkdlbmVyYXRlZENvbnRlbnQ6OnVwZGF0ZVBzZXVkb0VsZW1lbnQpOgorICAgICAgICAq
IHN0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2aXN1YWxP
dmVyZmxvd0ZvckRlY29yYXRpb25zKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZUNoYW5nZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6ZGV0ZXJtaW5lQ2hhbmdlKToKKyAgICAgICAgKiBz
dHlsZS9TdHlsZUZvbnRTaXplRnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
Ojpjb21wdXRlZEZvbnRTaXplRnJvbVNwZWNpZmllZFNpemUpOgorICAgICAgICAqIHN0eWxlL1N0
eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpyZXNv
bHZlRm9yRG9jdW1lbnQpOgorICAgICAgICAqIHN0eWxlL1N0eWxlU2hhcmluZ1Jlc29sdmVyLmNw
cDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6YWZmZWN0c1JlbmRlcmVkU3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlUHNldWRvU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6cGFyZW50Qm94U3R5bGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OmNyZWF0ZUluaGVyaXRlZERpc3BsYXlDb250ZW50c1N0eWxlSWZOZWVk
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6cmVzb2x2ZUNvbXBv
c2VkVHJlZSk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
R0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR0VsZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcik6CisKIDIwMTgtMDUtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZSgpIHNob3VsZCBu
b3QgcHJvcGFnYXRlIGEgc3ViZnJhbWUncyBzY3JvbGwgdG8gaXRzIGNyb3NzLW9yaWdpbiBwYXJl
bnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg2LDcgKzI4Niw3IEBAIGJvb2wg
QVhPYmplY3RDYWNoZTo6aXNOb2RlVmlzaWJsZShOb2RlKiAKICAgICBpZiAoIXJlbmRlcmVyKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gcmVu
ZGVyZXItPnN0eWxlKCk7Ci0gICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBOT05FIHx8IHN0eWxl
LnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gRGlz
cGxheVR5cGU6Ok5vbmUgfHwgc3R5bGUudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2li
bGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyBXZSBhbHNvIG5lZWQgdG8g
Y29uc2lkZXIgYXJpYSBoaWRkZW4gc3RhdHVzLgpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHAJKHJldmlzaW9uIDIzMjEyMykK
KysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjMsNyArMTYzLDcgQEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNz
aWJpbGl0eUxpc3Q6OmRldAogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBSZW5kZXJlZCBs
aXN0IGl0ZW1zIGFsd2F5cyBjb3VudC4KICAgICAgICAgICAgIGlmIChsaXN0SXRlbS0+aXNMaXN0
SXRlbSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFoYXNWaXNpYmxlTWFya2VycyAmJiAobGlz
dEl0ZW0tPnN0eWxlKCkubGlzdFN0eWxlVHlwZSgpICE9IE5vbmVMaXN0U3R5bGUgfHwgbGlzdEl0
ZW0tPnN0eWxlKCkubGlzdFN0eWxlSW1hZ2UoKSB8fCBjaGlsZEhhc1BzZXVkb1Zpc2libGVMaXN0
SXRlbU1hcmtlcnMobGlzdEl0ZW0pKSkKKyAgICAgICAgICAgICAgICBpZiAoIWhhc1Zpc2libGVN
YXJrZXJzICYmIChsaXN0SXRlbS0+c3R5bGUoKS5saXN0U3R5bGVUeXBlKCkgIT0gTGlzdFN0eWxl
VHlwZTo6Tm9uZSB8fCBsaXN0SXRlbS0+c3R5bGUoKS5saXN0U3R5bGVJbWFnZSgpIHx8IGNoaWxk
SGFzUHNldWRvVmlzaWJsZUxpc3RJdGVtTWFya2VycyhsaXN0SXRlbSkpKQogICAgICAgICAgICAg
ICAgICAgICBoYXNWaXNpYmxlTWFya2VycyA9IHRydWU7CiAgICAgICAgICAgICAgICAgbGlzdEl0
ZW1Db3VudCsrOwogICAgICAgICAgICAgfSBlbHNlIGlmIChsaXN0SXRlbS0+bm9kZSgpICYmIGxp
c3RJdGVtLT5ub2RlKCktPmhhc1RhZ05hbWUobGlUYWcpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRy
b2xzLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw3
ICsxNzYsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbDo6aGVscFRlCiAKIGJv
b2wgQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbDo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9y
ZWQoKSBjb25zdAogewotICAgIGlmICghbV9yZW5kZXJlciB8fCBtX3JlbmRlcmVyLT5zdHlsZSgp
LnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8IGNvbnRyb2xUeXBlKCkgPT0gTWVkaWFUaW1lbGlu
ZUNvbnRhaW5lcikKKyAgICBpZiAoIW1fcmVuZGVyZXIgfHwgbV9yZW5kZXJlci0+c3R5bGUoKS52
aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSB8fCBjb250cm9sVHlwZSgpID09IE1l
ZGlhVGltZWxpbmVDb250YWluZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJu
IGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCeURlZmF1bHQoKTsKQEAgLTMwMiw3ICszMDIsNyBAQCBS
ZWY8QWNjZXNzaWJpbGl0eU9iamVjdD4gQWNjZXNzaWJpbGl0eU1lCiAKIGJvb2wgQWNjZXNzaWJp
bGl0eU1lZGlhVGltZURpc3BsYXk6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29u
c3QKIHsKLSAgICBpZiAoIW1fcmVuZGVyZXIgfHwgbV9yZW5kZXJlci0+c3R5bGUoKS52aXNpYmls
aXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAoIW1fcmVuZGVyZXIgfHwgbV9yZW5kZXJlci0+c3R5
bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICBpZiAoIW1fcmVuZGVyZXItPnN0eWxlKCkud2lkdGgoKS52YWx1ZSgpKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjc1LDcg
KzMyNzUsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRE9NSGlkZGVuKCkgCiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHJl
bmRlcmVyLT5zdHlsZSgpOwotICAgIHJldHVybiBzdHlsZS5kaXNwbGF5KCkgPT0gTk9ORSB8fCBz
dHlsZS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRTsKKyAgICByZXR1cm4gc3R5bGUuZGlzcGxheSgp
ID09IERpc3BsYXlUeXBlOjpOb25lIHx8IHN0eWxlLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5
OjpWaXNpYmxlOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzU2hvd2luZ1ZhbGlk
YXRpb25NZXNzYWdlKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24g
MjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0NCw3ICsxMTQ0LDcgQEAgQWNjZXNz
aWJpbGl0eU9iamVjdEluY2x1c2lvbiBBY2Nlc3NpYmlsaQogICAgIGlmICghbV9yZW5kZXJlcikK
ICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9iamVj
dDsKIAotICAgIGlmIChtX3JlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxF
KSB7CisgICAgaWYgKG1fcmVuZGVyZXItPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxp
dHk6OlZpc2libGUpIHsKICAgICAgICAgLy8gYXJpYS1oaWRkZW4gaXMgbWVhbnQgdG8gb3ZlcnJp
ZGUgdmlzaWJpbGl0eSBhcyB0aGUgZGV0ZXJtaW5hbnQgaW4gQVggaGllcmFyY2h5IGluY2x1c2lv
bi4KICAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGdldEF0dHJpYnV0
ZShhcmlhX2hpZGRlbkF0dHIpLCAiZmFsc2UiKSkKICAgICAgICAgICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpEZWZhdWx0QmVoYXZpb3I7CkBAIC0xNTk2LDcgKzE1OTYs
NyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzVW52aXNpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgLy8gRklYTUU6IElzIGl0IGEgcHJpdmFjeSB2aW9sYXRpb24gdG8g
ZXhwb3NlIHVudmlzaXRlZCBpbmZvcm1hdGlvbiB0byBhY2Nlc3NpYmlsaXR5IEFQSXM/Ci0gICAg
cmV0dXJuIG1fcmVuZGVyZXItPnN0eWxlKCkuaXNMaW5rKCkgJiYgbV9yZW5kZXJlci0+c3R5bGUo
KS5pbnNpZGVMaW5rKCkgPT0gSW5zaWRlVW52aXNpdGVkTGluazsKKyAgICByZXR1cm4gbV9yZW5k
ZXJlci0+c3R5bGUoKS5pc0xpbmsoKSAmJiBtX3JlbmRlcmVyLT5zdHlsZSgpLmluc2lkZUxpbmso
KSA9PSBJbnNpZGVMaW5rOjpJbnNpZGVVbnZpc2l0ZWQ7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6aXNWaXNpdGVkKCkgY29uc3QKQEAgLTE2MDUsNyArMTYwNSw3IEBAIGJv
b2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNWaXNpdGUKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgLy8gRklYTUU6IElzIGl0IGEgcHJpdmFjeSB2aW9sYXRpb24gdG8gZXhwb3Nl
IHZpc2l0ZWQgaW5mb3JtYXRpb24gdG8gYWNjZXNzaWJpbGl0eSBBUElzPwotICAgIHJldHVybiBt
X3JlbmRlcmVyLT5zdHlsZSgpLmlzTGluaygpICYmIG1fcmVuZGVyZXItPnN0eWxlKCkuaW5zaWRl
TGluaygpID09IEluc2lkZVZpc2l0ZWRMaW5rOworICAgIHJldHVybiBtX3JlbmRlcmVyLT5zdHls
ZSgpLmlzTGluaygpICYmIG1fcmVuZGVyZXItPnN0eWxlKCkuaW5zaWRlTGluaygpID09IEluc2lk
ZUxpbms6Okluc2lkZVZpc2l0ZWQ7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6c2V0RWxlbWVudEF0dHJpYnV0ZVZhbHVlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUsIGJvb2wgdmFsdWUpCkBAIC0xNzgzLDcgKzE3ODMsNyBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OnNldFZhbHVlCiAgICAgICAgICAgICBSZW5kZXJFbGVtZW50JiByZW5k
ZXJFbGVtZW50ID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIpOwogICAgICAgICAg
ICAgYXV0byBzdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKICAgICAgICAgICAgIHN0eWxl
LmluaGVyaXRGcm9tKHJlbmRlckVsZW1lbnQuc3R5bGUoKSk7Ci0gICAgICAgICAgICBzdHlsZS5z
ZXRXaGl0ZVNwYWNlKFBSRSk7CisgICAgICAgICAgICBzdHlsZS5zZXRXaGl0ZVNwYWNlKFdoaXRl
U3BhY2U6OlByZSk7CiAgICAgICAgICAgICByZW5kZXJFbGVtZW50LnNldFN0eWxlSW50ZXJuYWwo
V1RGTW92ZShzdHlsZSkpOwogICAgICAgICB9CiAgICAgICAgIGRvd25jYXN0PEhUTUxFbGVtZW50
PihlbGVtZW50KS5zZXRJbm5lclRleHQoc3RyaW5nKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAJKHJldmlzaW9uIDIz
MjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYyLDcgKzI2Miw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0
eVRhYmxlOjppc0RhdGFUYWJsZSgpIGMKICAgICAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBy
ZW5kZXJTdHlsZSA9IGNlbGwtPnN0eWxlKCk7CiAKICAgICAgICAgICAgIC8vIElmIHRoZSBlbXB0
eS1jZWxscyBzdHlsZSBpcyBzZXQsIHdlJ2xsIGNhbGwgaXQgYSBkYXRhIHRhYmxlLgotICAgICAg
ICAgICAgaWYgKHJlbmRlclN0eWxlLmVtcHR5Q2VsbHMoKSA9PSBISURFKQorICAgICAgICAgICAg
aWYgKHJlbmRlclN0eWxlLmVtcHR5Q2VsbHMoKSA9PSBFbXB0eUNlbGw6OkhpZGUpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgICAgIC8vIElmIGEgY2VsbCBoYXMgbWF0
Y2hpbmcgYm9yZGVyZWQgc2lkZXMsIGNhbGwgaXQgYSAoZnVsbHkpIGJvcmRlcmVkIGNlbGwuCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50
ZXJmYWNlVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCShyZXZpc2lvbiAyMzIxMjMp
CisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50
ZXJmYWNlVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MywyMiArMTQzLDIyIEBAIHN0YXRp
YyBBdGtBdHRyaWJ1dGVTZXQqIGdldEF0dHJpYnV0ZVNldEYKICAgICB9CiAKICAgICBzd2l0Y2gg
KHN0eWxlLT50ZXh0QWxpZ24oKSkgewotICAgIGNhc2UgVEFTVEFSVDoKLSAgICBjYXNlIFRBRU5E
OgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2Rl
OjpFbmQ6CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTEVGVDoKLSAgICBjYXNlIFdFQktJVF9M
RUZUOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKKyAgICBjYXNlIFRleHRBbGlnbk1v
ZGU6OldlYktpdExlZnQ6CiAgICAgICAgIHJlc3VsdCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KHJl
c3VsdCwgYXRrX3RleHRfYXR0cmlidXRlX2dldF9uYW1lKEFUS19URVhUX0FUVFJfSlVTVElGSUNB
VElPTiksICJsZWZ0Iik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUklHSFQ6Ci0gICAgY2Fz
ZSBXRUJLSVRfUklHSFQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpSaWdodDoKKyAgICBjYXNl
IFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0OgogICAgICAgICByZXN1bHQgPSBhZGRUb0F0a0F0
dHJpYnV0ZVNldChyZXN1bHQsIGF0a190ZXh0X2F0dHJpYnV0ZV9nZXRfbmFtZShBVEtfVEVYVF9B
VFRSX0pVU1RJRklDQVRJT04pLCAicmlnaHQiKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBD
RU5URVI6Ci0gICAgY2FzZSBXRUJLSVRfQ0VOVEVSOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6
Q2VudGVyOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0Q2VudGVyOgogICAgICAgICBy
ZXN1bHQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChyZXN1bHQsIGF0a190ZXh0X2F0dHJpYnV0ZV9n
ZXRfbmFtZShBVEtfVEVYVF9BVFRSX0pVU1RJRklDQVRJT04pLCAiY2VudGVyIik7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgSlVTVElGWToKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6Okp1c3Rp
Znk6CiAgICAgICAgIHJlc3VsdCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KHJlc3VsdCwgYXRrX3Rl
eHRfYXR0cmlidXRlX2dldF9uYW1lKEFUS19URVhUX0FUVFJfSlVTVElGSUNBVElPTiksICJmaWxs
Iik7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGlt
ZWxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRp
b25UaW1lbGluZS5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NCw3ICsxNDQs
NyBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NBbmltYXRpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIEluIGNhc2UgdGhpcyBlbGVtZW50IGlzIG5ld2x5IGdldHRpbmcgYSAi
ZGlzcGxheTogbm9uZSIgd2UgbmVlZCB0byBjYW5jZWwgYWxsIG9mIGl0cyBhbmltYXRpb25zIGFu
ZCBkaXNyZWdhcmQgbmV3IG9uZXMuCi0gICAgaWYgKG9sZFN0eWxlICYmIG9sZFN0eWxlLT5oYXNB
bmltYXRpb25zKCkgJiYgb2xkU3R5bGUtPmRpc3BsYXkoKSAhPSBOT05FICYmIG5ld1N0eWxlLmRp
c3BsYXkoKSA9PSBOT05FKSB7CisgICAgaWYgKG9sZFN0eWxlICYmIG9sZFN0eWxlLT5oYXNBbmlt
YXRpb25zKCkgJiYgb2xkU3R5bGUtPmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Tm9uZSAmJiBu
ZXdTdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUpIHsKICAgICAgICAgaWYgKG1f
ZWxlbWVudFRvQ1NTQW5pbWF0aW9uQnlOYW1lLmNvbnRhaW5zKCZlbGVtZW50KSkgewogICAgICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBjc3NBbmltYXRpb25zQnlOYW1lTWFwSXRlbSA6IG1fZWxl
bWVudFRvQ1NTQW5pbWF0aW9uQnlOYW1lLnRha2UoJmVsZW1lbnQpKQogICAgICAgICAgICAgICAg
IGNhbmNlbE9yUmVtb3ZlRGVjbGFyYXRpdmVBbmltYXRpb24oY3NzQW5pbWF0aW9uc0J5TmFtZU1h
cEl0ZW0udmFsdWUpOwpAQCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6
OnVwZGF0ZUNTU1RyYW5zaXQKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gSW4gY2FzZSB0aGlz
IGVsZW1lbnQgaXMgbmV3bHkgZ2V0dGluZyBhICJkaXNwbGF5OiBub25lIiB3ZSBuZWVkIHRvIGNh
bmNlbCBhbGwgb2YgaXRzIGFuaW1hdGlvbnMgYW5kIGRpc3JlZ2FyZCBuZXcgb25lcy4KLSAgICBp
ZiAob2xkU3R5bGUgJiYgb2xkU3R5bGUtPmhhc1RyYW5zaXRpb25zKCkgJiYgb2xkU3R5bGUtPmRp
c3BsYXkoKSAhPSBOT05FICYmIG5ld1N0eWxlLmRpc3BsYXkoKSA9PSBOT05FKSB7CisgICAgaWYg
KG9sZFN0eWxlICYmIG9sZFN0eWxlLT5oYXNUcmFuc2l0aW9ucygpICYmIG9sZFN0eWxlLT5kaXNw
bGF5KCkgIT0gRGlzcGxheVR5cGU6Ok5vbmUgJiYgbmV3U3R5bGUuZGlzcGxheSgpID09IERpc3Bs
YXlUeXBlOjpOb25lKSB7CiAgICAgICAgIGlmIChtX2VsZW1lbnRUb0NTU1RyYW5zaXRpb25CeUNT
U1Byb3BlcnR5SUQuY29udGFpbnMoJmVsZW1lbnQpKSB7CiAgICAgICAgICAgICBmb3IgKGNvbnN0
IGF1dG8mIGNzc1RyYW5zaXRpb25zQnlDU1NQcm9wZXJ0eUlETWFwSXRlbSA6IG1fZWxlbWVudFRv
Q1NTVHJhbnNpdGlvbkJ5Q1NTUHJvcGVydHlJRC50YWtlKCZlbGVtZW50KSkKICAgICAgICAgICAg
ICAgICBjYW5jZWxPclJlbW92ZURlY2xhcmF0aXZlQW5pbWF0aW9uKGNzc1RyYW5zaXRpb25zQnlD
U1NQcm9wZXJ0eUlETWFwSXRlbS52YWx1ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vQ1NTQW5pbWF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vQ1NTQW5pbWF0aW9uLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDE2ICs1NSwx
NiBAQCB2b2lkIENTU0FuaW1hdGlvbjo6c3luY1Byb3BlcnRpZXNXaXRoQmFjCiAgICAgYXV0byog
dGltaW5nID0gZWZmZWN0KCktPnRpbWluZygpOwogCiAgICAgc3dpdGNoIChhbmltYXRpb24uZmls
bE1vZGUoKSkgewotICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGVOb25lOgorICAgIGNhc2UgQW5p
bWF0aW9uRmlsbE1vZGU6Ok5vbmU6CiAgICAgICAgIHRpbWluZy0+c2V0RmlsbChGaWxsTW9kZTo6
Tm9uZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGVCYWNrd2Fy
ZHM6CisgICAgY2FzZSBBbmltYXRpb25GaWxsTW9kZTo6QmFja3dhcmRzOgogICAgICAgICB0aW1p
bmctPnNldEZpbGwoRmlsbE1vZGU6OkJhY2t3YXJkcyk7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQW5pbWF0aW9uRmlsbE1vZGVGb3J3YXJkczoKKyAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2Rl
OjpGb3J3YXJkczoKICAgICAgICAgdGltaW5nLT5zZXRGaWxsKEZpbGxNb2RlOjpGb3J3YXJkcyk7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGVCb3RoOgorICAgIGNh
c2UgQW5pbWF0aW9uRmlsbE1vZGU6OkJvdGg6CiAgICAgICAgIHRpbWluZy0+c2V0RmlsbChGaWxs
TW9kZTo6Qm90aCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTg4LDkgKzg4LDkgQEAgdm9p
ZCBDU1NBbmltYXRpb246OnN5bmNQcm9wZXJ0aWVzV2l0aEJhYwogICAgIHRpbWluZy0+c2V0SXRl
cmF0aW9ucyhpdGVyYXRpb25Db3VudCA9PSBBbmltYXRpb246Okl0ZXJhdGlvbkNvdW50SW5maW5p
dGUgPyBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkgOiBpdGVyYXRpb25D
b3VudCk7CiAKICAgICAvLyBTeW5jaHJvbml6ZSB0aGUgcGxheSBzdGF0ZQotICAgIGlmIChiYWNr
aW5nQW5pbWF0aW9uKCkucGxheVN0YXRlKCkgPT0gQW5pbVBsYXlTdGF0ZVBsYXlpbmcgJiYgcGxh
eVN0YXRlKCkgPT0gV2ViQW5pbWF0aW9uOjpQbGF5U3RhdGU6OlBhdXNlZCkKKyAgICBpZiAoYmFj
a2luZ0FuaW1hdGlvbigpLnBsYXlTdGF0ZSgpID09IEFuaW1hdGlvblBsYXlTdGF0ZTo6UGxheWlu
ZyAmJiBwbGF5U3RhdGUoKSA9PSBXZWJBbmltYXRpb246OlBsYXlTdGF0ZTo6UGF1c2VkKQogICAg
ICAgICBwbGF5KCk7Ci0gICAgZWxzZSBpZiAoYmFja2luZ0FuaW1hdGlvbigpLnBsYXlTdGF0ZSgp
ID09IEFuaW1QbGF5U3RhdGVQYXVzZWQgJiYgcGxheVN0YXRlKCkgPT0gV2ViQW5pbWF0aW9uOjpQ
bGF5U3RhdGU6OlJ1bm5pbmcpCisgICAgZWxzZSBpZiAoYmFja2luZ0FuaW1hdGlvbigpLnBsYXlT
dGF0ZSgpID09IEFuaW1hdGlvblBsYXlTdGF0ZTo6UGF1c2VkICYmIHBsYXlTdGF0ZSgpID09IFdl
YkFuaW1hdGlvbjo6UGxheVN0YXRlOjpSdW5uaW5nKQogICAgICAgICBwYXVzZSgpOwogCiAgICAg
dW5zdXNwZW5kRWZmZWN0SW52YWxpZGF0aW9uKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAJKHJldmlzaW9uIDIzMjEyMykK
KysrIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6
aW5pdGlhbGl6ZShjbwogICAgIHNldFRpbWVsaW5lKCZ0YXJnZXQuZG9jdW1lbnQoKS50aW1lbGlu
ZSgpKTsKICAgICBkb3duY2FzdDxLZXlmcmFtZUVmZmVjdFJlYWRPbmx5PihlZmZlY3QoKSktPmNv
bXB1dGVEZWNsYXJhdGl2ZUFuaW1hdGlvbkJsZW5kaW5nS2V5ZnJhbWVzKG9sZFN0eWxlLCBuZXdT
dHlsZSk7CiAgICAgc3luY1Byb3BlcnRpZXNXaXRoQmFja2luZ0FuaW1hdGlvbigpOwotICAgIGlm
IChiYWNraW5nQW5pbWF0aW9uKCkucGxheVN0YXRlKCkgPT0gQW5pbVBsYXlTdGF0ZVBsYXlpbmcp
CisgICAgaWYgKGJhY2tpbmdBbmltYXRpb24oKS5wbGF5U3RhdGUoKSA9PSBBbmltYXRpb25QbGF5
U3RhdGU6OlBsYXlpbmcpCiAgICAgICAgIHBsYXkoKTsKICAgICBlbHNlCiAgICAgICAgIHBhdXNl
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3RSZWFkT25s
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZm
ZWN0UmVhZE9ubHkuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vS2V5ZnJhbWVFZmZlY3RSZWFkT25seS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNjUs
MTYgKzEyNjUsMTYgQEAgUmVmPGNvbnN0IEFuaW1hdGlvbj4gS2V5ZnJhbWVFZmZlY3RSZWFkTwog
ICAgIHN3aXRjaCAoZWZmZWN0VGltaW5nLT5maWxsKCkpIHsKICAgICBjYXNlIEZpbGxNb2RlOjpO
b25lOgogICAgIGNhc2UgRmlsbE1vZGU6OkF1dG86Ci0gICAgICAgIGFuaW1hdGlvbi0+c2V0Rmls
bE1vZGUoQW5pbWF0aW9uRmlsbE1vZGVOb25lKTsKKyAgICAgICAgYW5pbWF0aW9uLT5zZXRGaWxs
TW9kZShBbmltYXRpb25GaWxsTW9kZTo6Tm9uZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
RmlsbE1vZGU6OkJhY2t3YXJkczoKLSAgICAgICAgYW5pbWF0aW9uLT5zZXRGaWxsTW9kZShBbmlt
YXRpb25GaWxsTW9kZUJhY2t3YXJkcyk7CisgICAgICAgIGFuaW1hdGlvbi0+c2V0RmlsbE1vZGUo
QW5pbWF0aW9uRmlsbE1vZGU6OkJhY2t3YXJkcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
RmlsbE1vZGU6OkZvcndhcmRzOgotICAgICAgICBhbmltYXRpb24tPnNldEZpbGxNb2RlKEFuaW1h
dGlvbkZpbGxNb2RlRm9yd2FyZHMpOworICAgICAgICBhbmltYXRpb24tPnNldEZpbGxNb2RlKEFu
aW1hdGlvbkZpbGxNb2RlOjpGb3J3YXJkcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRmls
bE1vZGU6OkJvdGg6Ci0gICAgICAgIGFuaW1hdGlvbi0+c2V0RmlsbE1vZGUoQW5pbWF0aW9uRmls
bE1vZGVCb3RoKTsKKyAgICAgICAgYW5pbWF0aW9uLT5zZXRGaWxsTW9kZShBbmltYXRpb25GaWxs
TW9kZTo6Qm90aCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9u
IDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgwLDE1ICsxNzgwLDE1IEBAIHN0YXRpYyBSZWY8
Q1NTVmFsdWU+IHJlbmRlclRleHREZWNvcmF0aW8KIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHJlbmRl
clRleHREZWNvcmF0aW9uU3R5bGVGbGFnc1RvQ1NTVmFsdWUoVGV4dERlY29yYXRpb25TdHlsZSB0
ZXh0RGVjb3JhdGlvblN0eWxlKQogewogICAgIHN3aXRjaCAodGV4dERlY29yYXRpb25TdHlsZSkg
ewotICAgIGNhc2UgVGV4dERlY29yYXRpb25TdHlsZVNvbGlkOgorICAgIGNhc2UgVGV4dERlY29y
YXRpb25TdHlsZTo6U29saWQ6CiAgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVNvbGlkKTsKLSAgICBjYXNlIFRleHRE
ZWNvcmF0aW9uU3R5bGVEb3VibGU6CisgICAgY2FzZSBUZXh0RGVjb3JhdGlvblN0eWxlOjpEb3Vi
bGU6CiAgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50
aWZpZXJWYWx1ZShDU1NWYWx1ZURvdWJsZSk7Ci0gICAgY2FzZSBUZXh0RGVjb3JhdGlvblN0eWxl
RG90dGVkOgorICAgIGNhc2UgVGV4dERlY29yYXRpb25TdHlsZTo6RG90dGVkOgogICAgICAgICBy
ZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVEb3R0ZWQpOwotICAgIGNhc2UgVGV4dERlY29yYXRpb25TdHlsZURhc2hlZDoKKyAgICBj
YXNlIFRleHREZWNvcmF0aW9uU3R5bGU6OkRhc2hlZDoKICAgICAgICAgcmV0dXJuIENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlRGFzaGVkKTsK
LSAgICBjYXNlIFRleHREZWNvcmF0aW9uU3R5bGVXYXZ5OgorICAgIGNhc2UgVGV4dERlY29yYXRp
b25TdHlsZTo6V2F2eToKICAgICAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCku
Y3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlV2F2eSk7CiAgICAgfQogCkBAIC0yMjcyLDMz
ICsyMjcyLDMzIEBAIHN0YXRpYyBib29sIHBvc2l0aW9uT2Zmc2V0VmFsdWVJc1JlbmRlcmUKIAog
c3RhdGljIENTU1ZhbHVlSUQgY29udmVydFRvUGFnZUJyZWFrKEJyZWFrQmV0d2VlbiB2YWx1ZSkK
IHsKLSAgICBpZiAodmFsdWUgPT0gUGFnZUJyZWFrQmV0d2VlbiB8fCB2YWx1ZSA9PSBMZWZ0UGFn
ZUJyZWFrQmV0d2VlbiB8fCB2YWx1ZSA9PSBSaWdodFBhZ2VCcmVha0JldHdlZW4KLSAgICAgICAg
fHwgdmFsdWUgPT0gUmVjdG9QYWdlQnJlYWtCZXR3ZWVuIHx8IHZhbHVlID09IFZlcnNvUGFnZUJy
ZWFrQmV0d2VlbikKKyAgICBpZiAodmFsdWUgPT0gQnJlYWtCZXR3ZWVuOjpQYWdlIHx8IHZhbHVl
ID09IEJyZWFrQmV0d2Vlbjo6TGVmdFBhZ2UgfHwgdmFsdWUgPT0gQnJlYWtCZXR3ZWVuOjpSaWdo
dFBhZ2UKKyAgICAgICAgfHwgdmFsdWUgPT0gQnJlYWtCZXR3ZWVuOjpSZWN0b1BhZ2UgfHwgdmFs
dWUgPT0gQnJlYWtCZXR3ZWVuOjpWZXJzb1BhZ2UpCiAgICAgICAgIHJldHVybiBDU1NWYWx1ZUFs
d2F5czsgLy8gQ1NTIDIuMSBhbGxvd3MgdXMgdG8gbWFwIHRoZXNlIHRvIGFsd2F5cy4KLSAgICBp
ZiAodmFsdWUgPT0gQXZvaWRCcmVha0JldHdlZW4gfHwgdmFsdWUgPT0gQXZvaWRQYWdlQnJlYWtC
ZXR3ZWVuKQorICAgIGlmICh2YWx1ZSA9PSBCcmVha0JldHdlZW46OkF2b2lkIHx8IHZhbHVlID09
IEJyZWFrQmV0d2Vlbjo6QXZvaWRQYWdlKQogICAgICAgICByZXR1cm4gQ1NTVmFsdWVBdm9pZDsK
ICAgICByZXR1cm4gQ1NTVmFsdWVBdXRvOwogfQogCiBzdGF0aWMgQ1NTVmFsdWVJRCBjb252ZXJ0
VG9Db2x1bW5CcmVhayhCcmVha0JldHdlZW4gdmFsdWUpCiB7Ci0gICAgaWYgKHZhbHVlID09IENv
bHVtbkJyZWFrQmV0d2VlbikKKyAgICBpZiAodmFsdWUgPT0gQnJlYWtCZXR3ZWVuOjpDb2x1bW4p
CiAgICAgICAgIHJldHVybiBDU1NWYWx1ZUFsd2F5czsKLSAgICBpZiAodmFsdWUgPT0gQXZvaWRC
cmVha0JldHdlZW4gfHwgdmFsdWUgPT0gQXZvaWRDb2x1bW5CcmVha0JldHdlZW4pCisgICAgaWYg
KHZhbHVlID09IEJyZWFrQmV0d2Vlbjo6QXZvaWQgfHwgdmFsdWUgPT0gQnJlYWtCZXR3ZWVuOjpB
dm9pZENvbHVtbikKICAgICAgICAgcmV0dXJuIENTU1ZhbHVlQXZvaWQ7CiAgICAgcmV0dXJuIENT
U1ZhbHVlQXV0bzsKIH0KIAogc3RhdGljIENTU1ZhbHVlSUQgY29udmVydFRvUGFnZUJyZWFrKEJy
ZWFrSW5zaWRlIHZhbHVlKQogewotICAgIGlmICh2YWx1ZSA9PSBBdm9pZEJyZWFrSW5zaWRlIHx8
IHZhbHVlID09IEF2b2lkUGFnZUJyZWFrSW5zaWRlKQorICAgIGlmICh2YWx1ZSA9PSBCcmVha0lu
c2lkZTo6QXZvaWQgfHwgdmFsdWUgPT0gQnJlYWtJbnNpZGU6OkF2b2lkUGFnZSkKICAgICAgICAg
cmV0dXJuIENTU1ZhbHVlQXZvaWQ7CiAgICAgcmV0dXJuIENTU1ZhbHVlQXV0bzsKIH0KIAogc3Rh
dGljIENTU1ZhbHVlSUQgY29udmVydFRvQ29sdW1uQnJlYWsoQnJlYWtJbnNpZGUgdmFsdWUpCiB7
Ci0gICAgaWYgKHZhbHVlID09IEF2b2lkQnJlYWtJbnNpZGUgfHwgdmFsdWUgPT0gQXZvaWRDb2x1
bW5CcmVha0luc2lkZSkKKyAgICBpZiAodmFsdWUgPT0gQnJlYWtJbnNpZGU6OkF2b2lkIHx8IHZh
bHVlID09IEJyZWFrSW5zaWRlOjpBdm9pZENvbHVtbikKICAgICAgICAgcmV0dXJuIENTU1ZhbHVl
QXZvaWQ7CiAgICAgcmV0dXJuIENTU1ZhbHVlQXV0bzsKIH0KQEAgLTIzNzAsMjAgKzIzNzAsMTkg
QEAgRWxlbWVudCogQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6c3R5bGVkRQogICAgIGlmICghbV9l
bGVtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBQc2V1ZG9FbGVtZW50KiBwc2V1
ZG9FbGVtZW50OwotICAgIGlmIChtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIgPT0gQkVGT1JFICYm
IChwc2V1ZG9FbGVtZW50ID0gbV9lbGVtZW50LT5iZWZvcmVQc2V1ZG9FbGVtZW50KCkpKQorICAg
IGlmIChtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIgPT0gUHNldWRvSWQ6OkJlZm9yZSAmJiAocHNl
dWRvRWxlbWVudCA9IG1fZWxlbWVudC0+YmVmb3JlUHNldWRvRWxlbWVudCgpKSkKICAgICAgICAg
cmV0dXJuIHBzZXVkb0VsZW1lbnQ7Ci0gICAgaWYgKG1fcHNldWRvRWxlbWVudFNwZWNpZmllciA9
PSBBRlRFUiAmJiAocHNldWRvRWxlbWVudCA9IG1fZWxlbWVudC0+YWZ0ZXJQc2V1ZG9FbGVtZW50
KCkpKQorICAgIGlmIChtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIgPT0gUHNldWRvSWQ6OkFmdGVy
ICYmIChwc2V1ZG9FbGVtZW50ID0gbV9lbGVtZW50LT5hZnRlclBzZXVkb0VsZW1lbnQoKSkpCiAg
ICAgICAgIHJldHVybiBwc2V1ZG9FbGVtZW50OwogICAgIHJldHVybiBtX2VsZW1lbnQuZ2V0KCk7
CiB9CiAKLQogUmVuZGVyRWxlbWVudCogQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6c3R5bGVkUmVu
ZGVyZXIoKSBjb25zdAogewogICAgIGF1dG8qIGVsZW1lbnQgPSBzdHlsZWRFbGVtZW50KCk7CiAg
ICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAobV9wc2V1
ZG9FbGVtZW50U3BlY2lmaWVyICE9IE5PUFNFVURPICYmIGVsZW1lbnQgPT0gbV9lbGVtZW50Lmdl
dCgpKQorICAgIGlmIChtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIgIT0gUHNldWRvSWQ6Ok5vbmUg
JiYgZWxlbWVudCA9PSBtX2VsZW1lbnQuZ2V0KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIGlmIChlbGVtZW50LT5oYXNEaXNwbGF5Q29udGVudHMoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC0yNDc4LDE0ICsyNDc3LDE0IEBAIHN0YXRpYyBpbmxpbmUgY29uc3QgUmVuZGVy
U3R5bGUqIGNvbXB1dGUKICAgICAgICAgICAgIG93bmVkU3R5bGUgPSB0aW1lbGluZS0+YW5pbWF0
ZWRTdHlsZUZvclJlbmRlcmVyKCpyZW5kZXJlcik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IG93bmVkU3R5bGUgPSByZW5kZXJlci0+YW5pbWF0aW9uKCkuYW5pbWF0ZWRTdHlsZUZvclJlbmRl
cmVyKCpyZW5kZXJlcik7Ci0gICAgICAgIGlmIChwc2V1ZG9FbGVtZW50U3BlY2lmaWVyICYmICFl
bGVtZW50LmlzUHNldWRvRWxlbWVudCgpKSB7CisgICAgICAgIGlmIChwc2V1ZG9FbGVtZW50U3Bl
Y2lmaWVyICE9IFBzZXVkb0lkOjpOb25lICYmICFlbGVtZW50LmlzUHNldWRvRWxlbWVudCgpKSB7
CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBjYWNoZWQgcHNldWRvIHN0eWxlIHdpbGwgb25s
eSBleGlzdCBpZiB0aGUgYW5pbWF0aW9uIGhhcyBiZWVuIHJ1biBhdCBsZWFzdCBvbmNlLgogICAg
ICAgICAgICAgcmV0dXJuIG93bmVkU3R5bGUtPmdldENhY2hlZFBzZXVkb1N0eWxlKHBzZXVkb0Vs
ZW1lbnRTcGVjaWZpZXIpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBvd25lZFN0eWxlLmdl
dCgpOwogICAgIH0KIAotICAgIHJldHVybiBlbGVtZW50LmNvbXB1dGVkU3R5bGUoZWxlbWVudC5p
c1BzZXVkb0VsZW1lbnQoKSA/IE5PUFNFVURPIDogcHNldWRvRWxlbWVudFNwZWNpZmllcik7Cisg
ICAgcmV0dXJuIGVsZW1lbnQuY29tcHV0ZWRTdHlsZShlbGVtZW50LmlzUHNldWRvRWxlbWVudCgp
ID8gUHNldWRvSWQ6Ok5vbmUgOiBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKTsKIH0KIAogc3RhdGlj
IFJlZjxDU1NWYWx1ZT4gc2hhcGVQcm9wZXJ0eVZhbHVlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSwgY29uc3QgU2hhcGVWYWx1ZSogc2hhcGVWYWx1ZSkKQEAgLTI1MDYsNyArMjUwNSw3IEBAIHN0
YXRpYyBSZWY8Q1NTVmFsdWU+IHNoYXBlUHJvcGVydHlWYWx1ZSgKIAogICAgIGF1dG8gbGlzdCA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICBsaXN0LT5hcHBlbmQo
dmFsdWVGb3JCYXNpY1NoYXBlKHN0eWxlLCAqc2hhcGVWYWx1ZS0+c2hhcGUoKSkpOwotICAgIGlm
IChzaGFwZVZhbHVlLT5jc3NCb3goKSAhPSBCb3hNaXNzaW5nKQorICAgIGlmIChzaGFwZVZhbHVl
LT5jc3NCb3goKSAhPSBDU1NCb3hUeXBlOjpCb3hNaXNzaW5nKQogICAgICAgICBsaXN0LT5hcHBl
bmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShzaGFwZVZhbHVlLT5jc3NC
b3goKSkpOwogICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogfQpAQCAtMzAxNiw3ICszMDE1LDcg
QEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOgogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5T3JkZXI6CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKHN0eWxlLm9yZGVyKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZsb2F0OgotICAgICAgICAgICAgaWYgKHN0eWxlLmRpc3Bs
YXkoKSAhPSBOT05FICYmIHN0eWxlLmhhc091dE9mRmxvd1Bvc2l0aW9uKCkpCisgICAgICAgICAg
ICBpZiAoc3R5bGUuZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpOb25lICYmIHN0eWxlLmhhc091
dE9mRmxvd1Bvc2l0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKICAgICAgICAgICAgIHJldHVybiBj
c3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUuZmxvYXRpbmcoKSk7CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlGb250OiB7CkBAIC0zMTQ1LDcgKzMxNDQsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+
IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6CiAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9MaW1pdCk7CiAgICAgICAgICAg
ICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS5oeXBoZW5hdGlvbkxpbWl0
TGluZXMoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyRml0OgotICAgICAgICAgICAgaWYgKHN0eWxlLmJvcmRlckZp
dCgpID09IEJvcmRlckZpdEJvcmRlcikKKyAgICAgICAgICAgIGlmIChzdHlsZS5ib3JkZXJGaXQo
KSA9PSBCb3JkZXJGaXQ6OkJvcmRlcikKICAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQ
b29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUJvcmRlcik7CiAgICAgICAgICAgICBy
ZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUxpbmVzKTsK
ICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQpAQCAtMzIwMCw3ICszMTk5LDcgQEAg
UmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOgogICAgICAgICAgICAgZmxv
YXQgdmFsdWU7CiAgICAgICAgICAgICBpZiAobWFyZ2luUmlnaHQuaXNQZXJjZW50T3JDYWxjdWxh
dGVkKCkpIHsKICAgICAgICAgICAgICAgICAvLyBSZW5kZXJCb3ggZ2l2ZXMgYSBtYXJnaW5SaWdo
dCgpIHRoYXQgaXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIHJpZ2h0LWVkZ2Ugb2YgdGhlIGNo
aWxkIGJveAotICAgICAgICAgICAgICAgIC8vIGFuZCB0aGUgcmlnaHQtZWRnZSBvZiB0aGUgY29u
dGFpbmluZyBib3gsIHdoZW4gZGlzcGxheSA9PSBCTE9DSy4gTGV0J3MgY2FsY3VsYXRlIHRoZSBh
YnNvbHV0ZQorICAgICAgICAgICAgICAgIC8vIGFuZCB0aGUgcmlnaHQtZWRnZSBvZiB0aGUgY29u
dGFpbmluZyBib3gsIHdoZW4gZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6QmxvY2suIExldCdzIGNh
bGN1bGF0ZSB0aGUgYWJzb2x1dGUKICAgICAgICAgICAgICAgICAvLyB2YWx1ZSBvZiB0aGUgc3Bl
Y2lmaWVkIG1hcmdpbi1yaWdodCAlIGluc3RlYWQgb2YgcmVseWluZyBvbiBSZW5kZXJCb3gncyBt
YXJnaW5SaWdodCgpIHZhbHVlLgogICAgICAgICAgICAgICAgIHZhbHVlID0gbWluaW11bVZhbHVl
Rm9yTGVuZ3RoKG1hcmdpblJpZ2h0LCBkb3duY2FzdDxSZW5kZXJCb3g+KCpyZW5kZXJlcikuY29u
dGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVudCgpKTsKICAgICAgICAgICAgIH0gZWxz
ZQpAQCAtMzM0NSwyMCArMzM0NCwyMCBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVF
eHRyYWN0b3I6CiAgICAgICAgICAgICByZXR1cm4gcmVuZGVyRW1waGFzaXNQb3NpdGlvbkZsYWdz
VG9DU1NWYWx1ZShzdHlsZS50ZXh0RW1waGFzaXNQb3NpdGlvbigpKTsKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlOgogICAgICAgICAgICAgc3dpdGNoIChz
dHlsZS50ZXh0RW1waGFzaXNNYXJrKCkpIHsKLSAgICAgICAgICAgIGNhc2UgVGV4dEVtcGhhc2lz
TWFya05vbmU6CisgICAgICAgICAgICBjYXNlIFRleHRFbXBoYXNpc01hcms6Ok5vbmU6CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVOb25lKTsKLSAgICAgICAgICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya0N1c3RvbToKKyAg
ICAgICAgICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFyazo6Q3VzdG9tOgogICAgICAgICAgICAgICAg
IHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUudGV4dEVtcGhhc2lzQ3VzdG9t
TWFyaygpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyk7Ci0gICAgICAgICAgICBjYXNl
IFRleHRFbXBoYXNpc01hcmtBdXRvOgorICAgICAgICAgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJr
OjpBdXRvOgogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2lmIEFTU0VS
VF9ESVNBQkxFRAogICAgICAgICAgICAgICAgIEZBTExUSFJPVUdIOwogI2VuZGlmCi0gICAgICAg
ICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtEb3Q6Ci0gICAgICAgICAgICBjYXNlIFRleHRFbXBo
YXNpc01hcmtDaXJjbGU6Ci0gICAgICAgICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtEb3VibGVD
aXJjbGU6Ci0gICAgICAgICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtUcmlhbmdsZToKLSAgICAg
ICAgICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya1Nlc2FtZToKKyAgICAgICAgICAgIGNhc2UgVGV4
dEVtcGhhc2lzTWFyazo6RG90OgorICAgICAgICAgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrOjpD
aXJjbGU6CisgICAgICAgICAgICBjYXNlIFRleHRFbXBoYXNpc01hcms6OkRvdWJsZUNpcmNsZToK
KyAgICAgICAgICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFyazo6VHJpYW5nbGU6CisgICAgICAgICAg
ICBjYXNlIFRleHRFbXBoYXNpc01hcms6OlNlc2FtZToKICAgICAgICAgICAgICAgICBhdXRvIGxp
c3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICAg
ICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS50ZXh0RW1waGFz
aXNGaWxsKCkpKTsKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKHN0eWxlLnRleHRFbXBoYXNpc01hcmsoKSkpOwpAQCAtMzU2MCwxNiArMzU1OSwx
NiBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6CiAgICAgICAgICAg
ICBpZiAodCkgewogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdC0+c2l6
ZSgpOyArK2kpIHsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0LT5hbmltYXRpb24oaSku
ZmlsbE1vZGUoKSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2Rl
Tm9uZToKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBbmltYXRpb25GaWxsTW9kZTo6Tm9uZToK
ICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRl
SWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGVGb3J3YXJk
czoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBbmltYXRpb25GaWxsTW9kZTo6Rm9yd2FyZHM6
CiAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUZvcndhcmRzKSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBBbmltYXRpb25GaWxsTW9kZUJh
Y2t3YXJkczoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBbmltYXRpb25GaWxsTW9kZTo6QmFj
a3dhcmRzOgogICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9v
bC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVCYWNrd2FyZHMpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIEFuaW1hdGlvbkZp
bGxNb2RlQm90aDoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBbmltYXRpb25GaWxsTW9kZTo6
Qm90aDoKICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wu
Y3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQm90aCkpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTM2MDgsMTEgKzM2MDcsMTQg
QEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOgogICAgICAgICAgICAg
Y29uc3QgQW5pbWF0aW9uTGlzdCogdCA9IHN0eWxlLmFuaW1hdGlvbnMoKTsKICAgICAgICAgICAg
IGlmICh0KSB7CiAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0LT5zaXpl
KCk7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBpbnQgcHJvcCA9IHQtPmFuaW1hdGlvbihp
KS5wbGF5U3RhdGUoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHByb3AgPT0gQW5pbVBsYXlT
dGF0ZVBsYXlpbmcpCisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodC0+YW5pbWF0aW9uKGkp
LnBsYXlTdGF0ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQW5pbWF0aW9uUGxheVN0
YXRlOjpQbGF5aW5nOgogICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1Zh
bHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVSdW5uaW5nKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICBjYXNlIEFuaW1hdGlvblBsYXlTdGF0ZTo6UGF1c2VkOgogICAgICAgICAg
ICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVy
VmFsdWUoQ1NTVmFsdWVQYXVzZWQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoQ1NTVmFsdWVSdW5uaW5nKSk7CkBAIC0zNzA1LDcgKzM3MDcsNyBAQCBSZWZQ
dHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6CiAgICAgICAgICAgICByZXR1cm4g
V1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
UnRsT3JkZXJpbmc6Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50
aWZpZXJWYWx1ZShzdHlsZS5ydGxPcmRlcmluZygpID8gQ1NTVmFsdWVWaXN1YWwgOiBDU1NWYWx1
ZUxvZ2ljYWwpOworICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoc3R5bGUucnRsT3JkZXJpbmcoKSA9PSBPcmRlcjo6VmlzdWFsID8gQ1NTVmFsdWVW
aXN1YWwgOiBDU1NWYWx1ZUxvZ2ljYWwpOwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUYXBIaWdobGlnaHRDb2xvcjoKICAgICAgICAgICAg
IHJldHVybiBjdXJyZW50Q29sb3JPclZhbGlkQ29sb3IoJnN0eWxlLCBzdHlsZS50YXBIaWdobGln
aHRDb2xvcigpKTsKQEAgLTM4MzMsNyArMzgzNSw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0
ZWRTdHlsZUV4dHJhY3RvcjoKICAgICAgICAgICAgIGlmIChpczxTaGFwZUNsaXBQYXRoT3BlcmF0
aW9uPigqb3BlcmF0aW9uKSkgewogICAgICAgICAgICAgICAgIGF1dG8mIHNoYXBlT3BlcmF0aW9u
ID0gZG93bmNhc3Q8U2hhcGVDbGlwUGF0aE9wZXJhdGlvbj4oKm9wZXJhdGlvbik7CiAgICAgICAg
ICAgICAgICAgbGlzdC0+YXBwZW5kKHZhbHVlRm9yQmFzaWNTaGFwZShzdHlsZSwgc2hhcGVPcGVy
YXRpb24uYmFzaWNTaGFwZSgpKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHNoYXBlT3BlcmF0aW9u
LnJlZmVyZW5jZUJveCgpICE9IEJveE1pc3NpbmcpCisgICAgICAgICAgICAgICAgaWYgKHNoYXBl
T3BlcmF0aW9uLnJlZmVyZW5jZUJveCgpICE9IENTU0JveFR5cGU6OkJveE1pc3NpbmcpCiAgICAg
ICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc2hh
cGVPcGVyYXRpb24ucmVmZXJlbmNlQm94KCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGlmIChpczxCb3hDbGlwUGF0aE9wZXJhdGlvbj4oKm9wZXJhdGlvbikpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCShyZXZpc2lv
biAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDggKzUxLDggQEAgZW51bSBBZGp1c3RQaXhlbFZh
bHVlc0ZvckNvbXB1dGVkU3R5bGUgewogCiBjbGFzcyBDb21wdXRlZFN0eWxlRXh0cmFjdG9yIHsK
IHB1YmxpYzoKLSAgICBDb21wdXRlZFN0eWxlRXh0cmFjdG9yKE5vZGUqLCBib29sIGFsbG93Vmlz
aXRlZFN0eWxlID0gZmFsc2UsIFBzZXVkb0lkID0gTk9QU0VVRE8pOwotICAgIENvbXB1dGVkU3R5
bGVFeHRyYWN0b3IoRWxlbWVudCosIGJvb2wgYWxsb3dWaXNpdGVkU3R5bGUgPSBmYWxzZSwgUHNl
dWRvSWQgPSBOT1BTRVVETyk7CisgICAgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcihOb2RlKiwgYm9v
bCBhbGxvd1Zpc2l0ZWRTdHlsZSA9IGZhbHNlLCBQc2V1ZG9JZCA9IFBzZXVkb0lkOjpOb25lKTsK
KyAgICBDb21wdXRlZFN0eWxlRXh0cmFjdG9yKEVsZW1lbnQqLCBib29sIGFsbG93VmlzaXRlZFN0
eWxlID0gZmFsc2UsIFBzZXVkb0lkID0gUHNldWRvSWQ6Ok5vbmUpOwogCiAgICAgUmVmUHRyPENT
U1ZhbHVlPiBwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQgPSBVcGRh
dGVMYXlvdXQpOwogICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWVGb3JQcm9wZXJ0eWluU3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUmLCBDU1NQcm9wZXJ0eUlELCBSZW5kZXJFbGVtZW50KiA9IG51bGxw
dHIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3Mu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBw
aW5ncy5oCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0
aXZlVmFsdWVNYXBwaW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDczLDQ1ICsxMDczLDQ1IEBA
IHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGUKICAgICByZXR1cm4gQm94
T3JpZW50OjpIb3Jpem9udGFsOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRUNhcHRpb25TaWRlIGUpCit0ZW1wbGF0ZTw+IGlubGlu
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoQ2FwdGlvblNpZGUgZSkKICAg
ICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUg
PSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoIChlKSB7Ci0gICAgY2FzZSBDQVBMRUZUOgorICAg
IGNhc2UgQ2FwdGlvblNpZGU6OkxlZnQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlTGVmdDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDQVBSSUdIVDoKKyAgICBjYXNlIENh
cHRpb25TaWRlOjpSaWdodDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVSaWdo
dDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDQVBUT1A6CisgICAgY2FzZSBDYXB0aW9uU2lk
ZTo6VG9wOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVRvcDsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBDQVBCT1RUT006CisgICAgY2FzZSBDYXB0aW9uU2lkZTo6Qm90dG9t
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUJvdHRvbTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3Bl
cmF0b3IgRUNhcHRpb25TaWRlKCkgY29uc3QKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2
ZVZhbHVlOjpvcGVyYXRvciBDYXB0aW9uU2lkZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzVmFs
dWVJRCgpKTsKIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NW
YWx1ZUxlZnQ6Ci0gICAgICAgIHJldHVybiBDQVBMRUZUOworICAgICAgICByZXR1cm4gQ2FwdGlv
blNpZGU6OkxlZnQ7CiAgICAgY2FzZSBDU1NWYWx1ZVJpZ2h0OgotICAgICAgICByZXR1cm4gQ0FQ
UklHSFQ7CisgICAgICAgIHJldHVybiBDYXB0aW9uU2lkZTo6UmlnaHQ7CiAgICAgY2FzZSBDU1NW
YWx1ZVRvcDoKLSAgICAgICAgcmV0dXJuIENBUFRPUDsKKyAgICAgICAgcmV0dXJuIENhcHRpb25T
aWRlOjpUb3A7CiAgICAgY2FzZSBDU1NWYWx1ZUJvdHRvbToKLSAgICAgICAgcmV0dXJuIENBUEJP
VFRPTTsKKyAgICAgICAgcmV0dXJuIENhcHRpb25TaWRlOjpCb3R0b207CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
cmV0dXJuIENBUFRPUDsKKyAgICByZXR1cm4gQ2FwdGlvblNpZGU6OlRvcDsKIH0KIAogdGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKENsZWFyIGUp
CkBAIC0xMTU1LDE0MCArMTE1NSwxNDAgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZl
VmFsdWU6Om9wZQogICAgIHJldHVybiBDbGVhcjo6Tm9uZTsKIH0KIAotdGVtcGxhdGU8PiBpbmxp
bmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVDdXJzb3IgZSkKK3RlbXBs
YXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShDdXJzb3JU
eXBlIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKICAgICBtX3ByaW1pdGl2
ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAoZSkgewotICAgIGNhc2UgQ3Vy
c29yQXV0bzoKKyAgICBjYXNlIEN1cnNvclR5cGU6OkF1dG86CiAgICAgICAgIG1fdmFsdWUudmFs
dWVJRCA9IENTU1ZhbHVlQXV0bzsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JEZWZh
dWx0OgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6RGVmYXVsdDoKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVEZWZhdWx0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNvck5v
bmU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpOb25lOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQg
PSBDU1NWYWx1ZU5vbmU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yQ29udGV4dE1l
bnU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpDb250ZXh0TWVudToKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVDb250ZXh0TWVudTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBD
dXJzb3JIZWxwOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6SGVscDoKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVIZWxwOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNvclBv
aW50ZXI6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpQb2ludGVyOgogICAgICAgICBtX3ZhbHVlLnZh
bHVlSUQgPSBDU1NWYWx1ZVBvaW50ZXI7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29y
UHJvZ3Jlc3M6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpQcm9ncmVzczoKICAgICAgICAgbV92YWx1
ZS52YWx1ZUlEID0gQ1NTVmFsdWVQcm9ncmVzczsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBD
dXJzb3JXYWl0OgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6V2FpdDoKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVXYWl0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNvckNl
bGw6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpDZWxsOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQg
PSBDU1NWYWx1ZUNlbGw7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yQ3Jvc3NoYWly
OgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6Q3Jvc3NoYWlyOgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZUNyb3NzaGFpcjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JU
ZXh0OgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6VGV4dDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVUZXh0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNvclZlcnRpY2Fs
VGV4dDoKKyAgICBjYXNlIEN1cnNvclR5cGU6OlZlcnRpY2FsVGV4dDoKICAgICAgICAgbV92YWx1
ZS52YWx1ZUlEID0gQ1NTVmFsdWVWZXJ0aWNhbFRleHQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQ3Vyc29yQWxpYXM6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpBbGlhczoKICAgICAgICAgbV92
YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBbGlhczsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBD
dXJzb3JDb3B5OgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6Q29weToKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVDb3B5OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNvck1v
dmU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpNb3ZlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQg
PSBDU1NWYWx1ZU1vdmU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yTm9Ecm9wOgor
ICAgIGNhc2UgQ3Vyc29yVHlwZTo6Tm9Ecm9wOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZU5vRHJvcDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JOb3RBbGxvd2Vk
OgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6Tm90QWxsb3dlZDoKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVOb3RBbGxvd2VkOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNv
ckdyYWI6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpHcmFiOgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZUdyYWI7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yR3JhYmJp
bmc6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpHcmFiYmluZzoKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVHcmFiYmluZzsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JF
UmVzaXplOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6RVJlc2l6ZToKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVFUmVzaXplOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNv
ck5SZXNpemU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpOUmVzaXplOgogICAgICAgICBtX3ZhbHVl
LnZhbHVlSUQgPSBDU1NWYWx1ZU5SZXNpemU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vy
c29yTmVSZXNpemU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpORVJlc2l6ZToKICAgICAgICAgbV92
YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOZVJlc2l6ZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBDdXJzb3JOd1Jlc2l6ZToKKyAgICBjYXNlIEN1cnNvclR5cGU6Ok5XUmVzaXplOgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU53UmVzaXplOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEN1cnNvclNSZXNpemU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpTUmVzaXplOgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVNSZXNpemU7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQ3Vyc29yU2VSZXNpemU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpTRVJlc2l6ZToK
ICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVTZVJlc2l6ZTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBDdXJzb3JTd1Jlc2l6ZToKKyAgICBjYXNlIEN1cnNvclR5cGU6OlNXUmVz
aXplOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVN3UmVzaXplOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEN1cnNvcldSZXNpemU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpX
UmVzaXplOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVdSZXNpemU7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yRXdSZXNpemU6CisgICAgY2FzZSBDdXJzb3JUeXBl
OjpFV1Jlc2l6ZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVFd1Jlc2l6ZTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JOc1Jlc2l6ZToKKyAgICBjYXNlIEN1cnNv
clR5cGU6Ok5TUmVzaXplOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5zUmVz
aXplOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNvck5lc3dSZXNpemU6CisgICAgY2Fz
ZSBDdXJzb3JUeXBlOjpORVNXUmVzaXplOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NW
YWx1ZU5lc3dSZXNpemU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yTndzZVJlc2l6
ZToKKyAgICBjYXNlIEN1cnNvclR5cGU6Ok5XU0VSZXNpemU6CiAgICAgICAgIG1fdmFsdWUudmFs
dWVJRCA9IENTU1ZhbHVlTndzZVJlc2l6ZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJz
b3JDb2xSZXNpemU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpDb2x1bW5SZXNpemU6CiAgICAgICAg
IG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQ29sUmVzaXplOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEN1cnNvclJvd1Jlc2l6ZToKKyAgICBjYXNlIEN1cnNvclR5cGU6OlJvd1Jlc2l6ZToK
ICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVSb3dSZXNpemU7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQ3Vyc29yQWxsU2Nyb2xsOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6QWxs
U2Nyb2xsOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUFsbFNjcm9sbDsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3Jab29tSW46CisgICAgY2FzZSBDdXJzb3JUeXBl
Ojpab29tSW46CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlWm9vbUluOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNvclpvb21PdXQ6CisgICAgY2FzZSBDdXJzb3JUeXBl
Ojpab29tT3V0OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVpvb21PdXQ7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZl
VmFsdWU6Om9wZXJhdG9yIEVDdXJzb3IoKSBjb25zdAordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6Om9wZXJhdG9yIEN1cnNvclR5cGUoKSBjb25zdAogewogICAgIEFTU0VSVChp
c1ZhbHVlSUQoKSk7CiAgICAgc3dpdGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENT
U1ZhbHVlQ29weToKLSAgICAgICAgcmV0dXJuIEN1cnNvckNvcHk7CisgICAgICAgIHJldHVybiBD
dXJzb3JUeXBlOjpDb3B5OwogICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRHcmFiOgotICAgICAgICBy
ZXR1cm4gQ3Vyc29yR3JhYjsKKyAgICAgICAgcmV0dXJuIEN1cnNvclR5cGU6OkdyYWI7CiAgICAg
Y2FzZSBDU1NWYWx1ZVdlYmtpdEdyYWJiaW5nOgotICAgICAgICByZXR1cm4gQ3Vyc29yR3JhYmJp
bmc7CisgICAgICAgIHJldHVybiBDdXJzb3JUeXBlOjpHcmFiYmluZzsKICAgICBjYXNlIENTU1Zh
bHVlV2Via2l0Wm9vbUluOgotICAgICAgICByZXR1cm4gQ3Vyc29yWm9vbUluOworICAgICAgICBy
ZXR1cm4gQ3Vyc29yVHlwZTo6Wm9vbUluOwogICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRab29tT3V0
OgotICAgICAgICByZXR1cm4gQ3Vyc29yWm9vbU91dDsKKyAgICAgICAgcmV0dXJuIEN1cnNvclR5
cGU6Olpvb21PdXQ7CiAgICAgY2FzZSBDU1NWYWx1ZU5vbmU6Ci0gICAgICAgIHJldHVybiBDdXJz
b3JOb25lOworICAgICAgICByZXR1cm4gQ3Vyc29yVHlwZTo6Tm9uZTsKICAgICBkZWZhdWx0Ogot
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RUN1cnNvcj4obV92YWx1ZS52YWx1ZUlEIC0gQ1NT
VmFsdWVBdXRvKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEN1cnNvclR5cGU+KG1fdmFs
dWUudmFsdWVJRCAtIENTU1ZhbHVlQXV0byk7CiAgICAgfQogfQogCkBAIC0xMjk4LDEwICsxMjk4
LDEwIEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1MKIHsKICAgICBt
X3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAoZSkgewotICAg
IGNhc2UgQ3Vyc29yVmlzaWJpbGl0eUF1dG86CisgICAgY2FzZSBDdXJzb3JWaXNpYmlsaXR5OjpB
dXRvOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUF1dG87CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQ3Vyc29yVmlzaWJpbGl0eUF1dG9IaWRlOgorICAgIGNhc2UgQ3Vyc29y
VmlzaWJpbGl0eTo6QXV0b0hpZGU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVl
QXV0b0hpZGU7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMTIsMTM5ICsxMzEyLDEzOSBA
QCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlCiAgICAgQVNTRVJUKGlz
VmFsdWVJRCgpKTsKIAogICAgIGlmIChtX3ZhbHVlLnZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvKQot
ICAgICAgICByZXR1cm4gQ3Vyc29yVmlzaWJpbGl0eUF1dG87CisgICAgICAgIHJldHVybiBDdXJz
b3JWaXNpYmlsaXR5OjpBdXRvOwogICAgIGlmIChtX3ZhbHVlLnZhbHVlSUQgPT0gQ1NTVmFsdWVB
dXRvSGlkZSkKLSAgICAgICAgcmV0dXJuIEN1cnNvclZpc2liaWxpdHlBdXRvSGlkZTsKKyAgICAg
ICAgcmV0dXJuIEN1cnNvclZpc2liaWxpdHk6OkF1dG9IaWRlOwogCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIEN1cnNvclZpc2liaWxpdHlBdXRvOworICAgIHJldHVybiBD
dXJzb3JWaXNpYmlsaXR5OjpBdXRvOwogfQogI2VuZGlmCiAKLXRlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShFRGlzcGxheSBlKQordGVtcGxhdGU8
PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKERpc3BsYXlUeXBl
IGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKICAgICBtX3ByaW1pdGl2ZVVu
aXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAoZSkgewotICAgIGNhc2UgSU5MSU5F
OgorICAgIGNhc2UgRGlzcGxheVR5cGU6OklubGluZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVJbmxpbmU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQkxPQ0s6CisgICAg
Y2FzZSBEaXNwbGF5VHlwZTo6QmxvY2s6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlQmxvY2s7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTElTVF9JVEVNOgorICAgIGNhc2Ug
RGlzcGxheVR5cGU6Okxpc3RJdGVtOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1
ZUxpc3RJdGVtOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENPTVBBQ1Q6CisgICAgY2FzZSBE
aXNwbGF5VHlwZTo6Q29tcGFjdDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVD
b21wYWN0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIElOTElORV9CTE9DSzoKKyAgICBjYXNl
IERpc3BsYXlUeXBlOjpJbmxpbmVCbG9jazoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NT
VmFsdWVJbmxpbmVCbG9jazsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUQUJMRToKKyAgICBj
YXNlIERpc3BsYXlUeXBlOjpUYWJsZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFs
dWVUYWJsZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJTkxJTkVfVEFCTEU6CisgICAgY2Fz
ZSBEaXNwbGF5VHlwZTo6SW5saW5lVGFibGU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlSW5saW5lVGFibGU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVEFCTEVfUk9XX0dS
T1VQOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlUm93R3JvdXA6CiAgICAgICAgIG1fdmFs
dWUudmFsdWVJRCA9IENTU1ZhbHVlVGFibGVSb3dHcm91cDsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBUQUJMRV9IRUFERVJfR1JPVVA6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFibGVIZWFk
ZXJHcm91cDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVUYWJsZUhlYWRlckdy
b3VwOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRBQkxFX0ZPT1RFUl9HUk9VUDoKKyAgICBj
YXNlIERpc3BsYXlUeXBlOjpUYWJsZUZvb3Rlckdyb3VwOgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZVRhYmxlRm9vdGVyR3JvdXA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
VEFCTEVfUk9XOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlUm93OgogICAgICAgICBtX3Zh
bHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVRhYmxlUm93OwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IFRBQkxFX0NPTFVNTl9HUk9VUDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZUNvbHVtbkdy
b3VwOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVRhYmxlQ29sdW1uR3JvdXA7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVEFCTEVfQ09MVU1OOgorICAgIGNhc2UgRGlzcGxh
eVR5cGU6OlRhYmxlQ29sdW1uOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVRh
YmxlQ29sdW1uOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRBQkxFX0NFTEw6CisgICAgY2Fz
ZSBEaXNwbGF5VHlwZTo6VGFibGVDZWxsOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NW
YWx1ZVRhYmxlQ2VsbDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUQUJMRV9DQVBUSU9OOgor
ICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlQ2FwdGlvbjoKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVUYWJsZUNhcHRpb247CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQk9Y
OgorICAgIGNhc2UgRGlzcGxheVR5cGU6OkJveDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0g
Q1NTVmFsdWVXZWJraXRCb3g7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSU5MSU5FX0JPWDoK
KyAgICBjYXNlIERpc3BsYXlUeXBlOjpJbmxpbmVCb3g6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlV2Via2l0SW5saW5lQm94OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEZM
RVg6Ci0gICAgY2FzZSBXRUJLSVRfRkxFWDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpGbGV4Ogor
ICAgIGNhc2UgRGlzcGxheVR5cGU6OldlYktpdEZsZXg6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlRmxleDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJTkxJTkVfRkxFWDoK
LSAgICBjYXNlIFdFQktJVF9JTkxJTkVfRkxFWDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpJbmxp
bmVGbGV4OgorICAgIGNhc2UgRGlzcGxheVR5cGU6OldlYktpdElubGluZUZsZXg6CiAgICAgICAg
IG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlSW5saW5lRmxleDsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBHUklEOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OkdyaWQ6CiAgICAgICAgIG1fdmFs
dWUudmFsdWVJRCA9IENTU1ZhbHVlR3JpZDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJTkxJ
TkVfR1JJRDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpJbmxpbmVHcmlkOgogICAgICAgICBtX3Zh
bHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUlubGluZUdyaWQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgTk9ORToKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpOb25lOgogICAgICAgICBtX3ZhbHVlLnZh
bHVlSUQgPSBDU1NWYWx1ZU5vbmU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ09OVEVOVFM6
CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6Q29udGVudHM6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlQ29udGVudHM7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAotdGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVEaXNwbGF5KCkgY29uc3QK
K3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBEaXNwbGF5VHlw
ZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzVmFsdWVJRCgpKTsKIAogICAgIGlmIChtX3ZhbHVl
LnZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lKQotICAgICAgICByZXR1cm4gTk9ORTsKKyAgICAgICAg
cmV0dXJuIERpc3BsYXlUeXBlOjpOb25lOwogCi0gICAgRURpc3BsYXkgZGlzcGxheSA9IHN0YXRp
Y19jYXN0PEVEaXNwbGF5PihtX3ZhbHVlLnZhbHVlSUQgLSBDU1NWYWx1ZUlubGluZSk7Ci0gICAg
QVNTRVJUKGRpc3BsYXkgPj0gSU5MSU5FICYmIGRpc3BsYXkgPD0gTk9ORSk7Ci0gICAgaWYgKGRp
c3BsYXkgPT0gV0VCS0lUX0ZMRVgpCi0gICAgICAgIHJldHVybiBGTEVYOwotICAgIGlmIChkaXNw
bGF5ID09IFdFQktJVF9JTkxJTkVfRkxFWCkKLSAgICAgICAgcmV0dXJuIElOTElORV9GTEVYOwor
ICAgIERpc3BsYXlUeXBlIGRpc3BsYXkgPSBzdGF0aWNfY2FzdDxEaXNwbGF5VHlwZT4obV92YWx1
ZS52YWx1ZUlEIC0gQ1NTVmFsdWVJbmxpbmUpOworICAgIEFTU0VSVChkaXNwbGF5ID49IERpc3Bs
YXlUeXBlOjpJbmxpbmUgJiYgZGlzcGxheSA8PSBEaXNwbGF5VHlwZTo6Tm9uZSk7CisgICAgaWYg
KGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OldlYktpdEZsZXgpCisgICAgICAgIHJldHVybiBEaXNw
bGF5VHlwZTo6RmxleDsKKyAgICBpZiAoZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6V2ViS2l0SW5s
aW5lRmxleCkKKyAgICAgICAgcmV0dXJuIERpc3BsYXlUeXBlOjpJbmxpbmVGbGV4OwogICAgIHJl
dHVybiBkaXNwbGF5OwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTUHJpbWl0aXZlVmFsdWUoRUVtcHR5Q2VsbCBlKQordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVtcHR5Q2VsbCBlKQogICAgIDogQ1NTVmFs
dWUoUHJpbWl0aXZlQ2xhc3MpCiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxV
RV9JRDsKICAgICBzd2l0Y2ggKGUpIHsKLSAgICBjYXNlIFNIT1c6CisgICAgY2FzZSBFbXB0eUNl
bGw6OlNob3c6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlU2hvdzsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBISURFOgorICAgIGNhc2UgRW1wdHlDZWxsOjpIaWRlOgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUhpZGU7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVF
bXB0eUNlbGwoKSBjb25zdAordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9w
ZXJhdG9yIEVtcHR5Q2VsbCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzVmFsdWVJRCgpKTsKIAog
ICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZVNob3c6Ci0g
ICAgICAgIHJldHVybiBTSE9XOworICAgICAgICByZXR1cm4gRW1wdHlDZWxsOjpTaG93OwogICAg
IGNhc2UgQ1NTVmFsdWVIaWRlOgotICAgICAgICByZXR1cm4gSElERTsKKyAgICAgICAgcmV0dXJu
IEVtcHR5Q2VsbDo6SGlkZTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gU0hPVzsKKyAgICByZXR1cm4g
RW1wdHlDZWxsOjpTaG93OwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRmxleERpcmVjdGlvbiBlKQpAQCAtMTY4MSwyOTcgKzE2ODEs
Mjk3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGUKICAgICByZXR1
cm4gTGluZUJyZWFrOjpBdXRvOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRUxpc3RTdHlsZVBvc2l0aW9uIGUpCit0ZW1wbGF0ZTw+
IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoTGlzdFN0eWxlUG9z
aXRpb24gZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewogICAgIG1fcHJpbWl0
aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoIChlKSB7Ci0gICAgY2FzZSBP
VVRTSURFOgorICAgIGNhc2UgTGlzdFN0eWxlUG9zaXRpb246Ok91dHNpZGU6CiAgICAgICAgIG1f
dmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlT3V0c2lkZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBJTlNJREU6CisgICAgY2FzZSBMaXN0U3R5bGVQb3NpdGlvbjo6SW5zaWRlOgogICAgICAgICBt
X3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUluc2lkZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
fQogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUxpc3RT
dHlsZVBvc2l0aW9uKCkgY29uc3QKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVl
OjpvcGVyYXRvciBMaXN0U3R5bGVQb3NpdGlvbigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzVmFs
dWVJRCgpKTsKIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NW
YWx1ZU91dHNpZGU6Ci0gICAgICAgIHJldHVybiBPVVRTSURFOworICAgICAgICByZXR1cm4gTGlz
dFN0eWxlUG9zaXRpb246Ok91dHNpZGU7CiAgICAgY2FzZSBDU1NWYWx1ZUluc2lkZToKLSAgICAg
ICAgcmV0dXJuIElOU0lERTsKKyAgICAgICAgcmV0dXJuIExpc3RTdHlsZVBvc2l0aW9uOjpJbnNp
ZGU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIE9VVFNJREU7CisgICAgcmV0dXJuIExpc3RTdHlsZVBv
c2l0aW9uOjpPdXRzaWRlOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRUxpc3RTdHlsZVR5cGUgZSkKK3RlbXBsYXRlPD4gaW5saW5l
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShMaXN0U3R5bGVUeXBlIGUpCiAg
ICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBl
ID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAoZSkgewotICAgIGNhc2UgQWZhcjoKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OkFmYXI6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlQWZhcjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBbWhhcmljOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6QW1oYXJpYzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVB
bWhhcmljOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEFtaGFyaWNBYmVnZWRlOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6QW1oYXJpY0FiZWdlZGU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlQW1oYXJpY0FiZWdlZGU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQXJh
YmljSW5kaWM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBcmFiaWNJbmRpYzoKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBcmFiaWNJbmRpYzsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBBcm1lbmlhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFybWVuaWFuOgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUFybWVuaWFuOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIEFzdGVyaXNrczoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFzdGVyaXNrczoK
ICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBc3Rlcmlza3M7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQmluYXJ5TGlzdFN0eWxlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
QmluYXJ5OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUJpbmFyeTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBCZW5nYWxpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QmVu
Z2FsaToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVCZW5nYWxpOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIENhbWJvZGlhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNh
bWJvZGlhbjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVDYW1ib2RpYW47CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ2lyY2xlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
Q2lyY2xlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUNpcmNsZTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBDamtFYXJ0aGx5QnJhbmNoOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6Q2prRWFydGhseUJyYW5jaDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFs
dWVDamtFYXJ0aGx5QnJhbmNoOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENqa0hlYXZlbmx5
U3RlbToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNqa0hlYXZlbmx5U3RlbToKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVDamtIZWF2ZW5seVN0ZW07CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQ0pLSWRlb2dyYXBoaWM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDSktJ
ZGVvZ3JhcGhpYzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVDamtJZGVvZ3Jh
cGhpYzsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEZWNpbWFsTGVhZGluZ1plcm86CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpEZWNpbWFsTGVhZGluZ1plcm86CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlRGVjaW1hbExlYWRpbmdaZXJvOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIERlY2ltYWxMaXN0U3R5bGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEZWNpbWFs
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZURlY2ltYWw7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgRGV2YW5hZ2FyaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRldmFu
YWdhcmk6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRGV2YW5hZ2FyaTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEaXNjOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGlz
YzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVEaXNjOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIEV0aGlvcGljOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWM6
CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRXRoaW9waWM7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
RXRoaW9waWNBYmVnZWRlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUV0aGlv
cGljQWJlZ2VkZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVBbUV0
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlQW1FdDoKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVFdGhpb3BpY0FiZWdlZGVBbUV0OwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZUdlejoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkV0aGlvcGljQWJlZ2VkZUdlejoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFs
dWVFdGhpb3BpY0FiZWdlZGVHZXo7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXRoaW9waWNB
YmVnZWRlVGlFcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZVRpRXI6
CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRXRoaW9waWNBYmVnZWRlVGlFcjsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVUaUV0OgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlVGlFdDoKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVFdGhpb3BpY0FiZWdlZGVUaUV0OwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIEV0aGlvcGljSGFsZWhhbWVBYUVyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9w
aWNIYWxlaGFtZUFhRXI6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRXRoaW9w
aWNIYWxlaGFtZUFhRXI7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFt
ZUFhRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lQWFFdDoKICAg
ICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVFdGhpb3BpY0hhbGVoYW1lQWFFdDsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lQW1FdDoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVBbUV0OgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZUV0aGlvcGljSGFsZWhhbWVBbUV0OwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIEV0aGlvcGljSGFsZWhhbWVHZXo6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3Bp
Y0hhbGVoYW1lR2V6OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUV0aGlvcGlj
SGFsZWhhbWVHZXo7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZU9t
RXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lT21FdDoKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVFdGhpb3BpY0hhbGVoYW1lT21FdDsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lU2lkRXQ6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lU2lkRXQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlRXRoaW9waWNIYWxlaGFtZVNpZEV0OwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIEV0aGlvcGljSGFsZWhhbWVTb0V0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9w
aWNIYWxlaGFtZVNvRXQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRXRoaW9w
aWNIYWxlaGFtZVNvRXQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFt
ZVRpRXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lVGlFcjoKICAg
ICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVFdGhpb3BpY0hhbGVoYW1lVGlFcjsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lVGlFdDoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVUaUV0OgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZUV0aGlvcGljSGFsZWhhbWVUaUV0OwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIEV0aGlvcGljSGFsZWhhbWVUaWc6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3Bp
Y0hhbGVoYW1lVGlnOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUV0aGlvcGlj
SGFsZWhhbWVUaWc7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRm9vdG5vdGVzOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6Rm9vdG5vdGVzOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZUZvb3Rub3RlczsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHZW9yZ2lhbjoKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6Okdlb3JnaWFuOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQg
PSBDU1NWYWx1ZUdlb3JnaWFuOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEd1amFyYXRpOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6R3VqYXJhdGk6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlR3VqYXJhdGk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgR3VybXVraGk6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpHdXJtdWtoaToKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVHdXJtdWtoaTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIYW5ndWw6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIYW5ndWw6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlSGFuZ3VsOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEhhbmd1bENvbnNv
bmFudDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okhhbmd1bENvbnNvbmFudDoKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVIYW5ndWxDb25zb25hbnQ7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSGVicmV3OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGVicmV3OgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUhlYnJldzsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBIaXJhZ2FuYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkhpcmFnYW5hOgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUhpcmFnYW5hOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIEhpcmFnYW5hSXJvaGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIaXJhZ2Fu
YUlyb2hhOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUhpcmFnYW5hSXJvaGE7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgS2FubmFkYToKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6Okthbm5hZGE6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlS2FubmFkYTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBLYXRha2FuYToKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkthdGFrYW5hOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUthdGFrYW5h
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEthdGFrYW5hSXJvaGE6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpLYXRha2FuYUlyb2hhOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NW
YWx1ZUthdGFrYW5hSXJvaGE7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgS2htZXI6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpLaG1lcjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NT
VmFsdWVLaG1lcjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMYW86CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpMYW86CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTGFvOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIExvd2VyQWxwaGE6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpMb3dlckFscGhhOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUxvd2Vy
QWxwaGE7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTG93ZXJBcm1lbmlhbjoKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6Okxvd2VyQXJtZW5pYW46CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9
IENTU1ZhbHVlTG93ZXJBcm1lbmlhbjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMb3dlckdy
ZWVrOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJHcmVlazoKICAgICAgICAgbV92YWx1
ZS52YWx1ZUlEID0gQ1NTVmFsdWVMb3dlckdyZWVrOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IExvd2VySGV4YWRlY2ltYWw6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckhleGFkZWNp
bWFsOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUxvd2VySGV4YWRlY2ltYWw7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTG93ZXJMYXRpbjoKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6Okxvd2VyTGF0aW46CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTG93
ZXJMYXRpbjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMb3dlck5vcndlZ2lhbjoKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyTm9yd2VnaWFuOgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZUxvd2VyTm9yd2VnaWFuOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExv
d2VyUm9tYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlclJvbWFuOgogICAgICAgICBt
X3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUxvd2VyUm9tYW47CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgTWFsYXlhbGFtOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TWFsYXlhbGFtOgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU1hbGF5YWxhbTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBNb25nb2xpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpNb25nb2xpYW46
CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTW9uZ29saWFuOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIE15YW5tYXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpNeWFubWFy
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU15YW5tYXI7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgTm9uZUxpc3RTdHlsZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok5v
bmU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTm9uZTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBPY3RhbDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok9jdGFsOgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU9jdGFsOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIE9yaXlhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6T3JpeWE6CiAgICAgICAgIG1f
dmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlT3JpeWE7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
T3JvbW86CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpPcm9tbzoKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVPcm9tbzsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQZXJzaWFu
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6UGVyc2lhbjoKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVQZXJzaWFuOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNpZGFtYToK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlNpZGFtYToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVTaWRhbWE7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgU29tYWxpOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6U29tYWxpOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZVNvbWFsaTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTcXVhcmU6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpTcXVhcmU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlU3F1YXJlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRlbHVndToKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OlRlbHVndToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVU
ZWx1Z3U7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVGhhaToKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OlRoYWk6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVGhhaTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUaWJldGFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
VGliZXRhbjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVUaWJldGFuOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFRpZ3JlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGln
cmU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVGlncmU7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgVGlncmlueWFFcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3Jp
bnlhRXI6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVGlncmlueWFFcjsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUaWdyaW55YUVyQWJlZ2VkZToKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OlRpZ3JpbnlhRXJBYmVnZWRlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZVRpZ3JpbnlhRXJBYmVnZWRlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRpZ3Jp
bnlhRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55YUV0OgogICAgICAgICBtX3Zh
bHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVRpZ3JpbnlhRXQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgVGlncmlueWFFdEFiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55YUV0
QWJlZ2VkZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVUaWdyaW55YUV0QWJl
Z2VkZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBVcHBlckFscGhhOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6VXBwZXJBbHBoYToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFs
dWVVcHBlckFscGhhOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFVwcGVyQXJtZW5pYW46Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckFybWVuaWFuOgogICAgICAgICBtX3ZhbHVlLnZh
bHVlSUQgPSBDU1NWYWx1ZVVwcGVyQXJtZW5pYW47CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
VXBwZXJHcmVlazoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyR3JlZWs6CiAgICAgICAg
IG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVXBwZXJHcmVlazsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBVcHBlckhleGFkZWNpbWFsOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJI
ZXhhZGVjaW1hbDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVVcHBlckhleGFk
ZWNpbWFsOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFVwcGVyTGF0aW46CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpVcHBlckxhdGluOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NW
YWx1ZVVwcGVyTGF0aW47CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVXBwZXJOb3J3ZWdpYW46
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlck5vcndlZ2lhbjoKICAgICAgICAgbV92YWx1
ZS52YWx1ZUlEID0gQ1NTVmFsdWVVcHBlck5vcndlZ2lhbjsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBVcHBlclJvbWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJSb21hbjoKICAg
ICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVVcHBlclJvbWFuOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIFVyZHU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcmR1OgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVVyZHU7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVMaXN0
U3R5bGVUeXBlKCkgY29uc3QKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpv
cGVyYXRvciBMaXN0U3R5bGVUeXBlKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNWYWx1ZUlEKCkp
OwogCiAgICAgc3dpdGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlTm9u
ZToKLSAgICAgICAgcmV0dXJuIE5vbmVMaXN0U3R5bGU7CisgICAgICAgIHJldHVybiBMaXN0U3R5
bGVUeXBlOjpOb25lOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxF
TGlzdFN0eWxlVHlwZT4obV92YWx1ZS52YWx1ZUlEIC0gQ1NTVmFsdWVEaXNjKTsKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PExpc3RTdHlsZVR5cGU+KG1fdmFsdWUudmFsdWVJRCAtIENTU1Zh
bHVlRGlzYyk7CiAgICAgfQogfQogCkBAIC0yMjAyLDM0ICsyMjAyLDM0IEBAIHRlbXBsYXRlPD4g
aW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1MKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBl
ID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAoZSkgewotICAgIGNhc2UgQXV0b0JyZWFrQmV0
d2VlbjoKKyAgICBjYXNlIEJyZWFrQmV0d2Vlbjo6QXV0bzoKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVBdXRvOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEF2b2lkQnJlYWtC
ZXR3ZWVuOgorICAgIGNhc2UgQnJlYWtCZXR3ZWVuOjpBdm9pZDoKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVBdm9pZDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBdm9pZENv
bHVtbkJyZWFrQmV0d2VlbjoKKyAgICBjYXNlIEJyZWFrQmV0d2Vlbjo6QXZvaWRDb2x1bW46CiAg
ICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXZvaWRDb2x1bW47CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQXZvaWRQYWdlQnJlYWtCZXR3ZWVuOgorICAgIGNhc2UgQnJlYWtCZXR3
ZWVuOjpBdm9pZFBhZ2U6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXZvaWRQ
YWdlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENvbHVtbkJyZWFrQmV0d2VlbjoKKyAgICBj
YXNlIEJyZWFrQmV0d2Vlbjo6Q29sdW1uOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NW
YWx1ZUNvbHVtbjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQYWdlQnJlYWtCZXR3ZWVuOgor
ICAgIGNhc2UgQnJlYWtCZXR3ZWVuOjpQYWdlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZVBhZ2U7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGVmdFBhZ2VCcmVha0JldHdl
ZW46CisgICAgY2FzZSBCcmVha0JldHdlZW46OkxlZnRQYWdlOgogICAgICAgICBtX3ZhbHVlLnZh
bHVlSUQgPSBDU1NWYWx1ZUxlZnQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUmlnaHRQYWdl
QnJlYWtCZXR3ZWVuOgorICAgIGNhc2UgQnJlYWtCZXR3ZWVuOjpSaWdodFBhZ2U6CiAgICAgICAg
IG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlUmlnaHQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgUmVjdG9QYWdlQnJlYWtCZXR3ZWVuOgorICAgIGNhc2UgQnJlYWtCZXR3ZWVuOjpSZWN0b1Bh
Z2U6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlUmVjdG87CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgVmVyc29QYWdlQnJlYWtCZXR3ZWVuOgorICAgIGNhc2UgQnJlYWtCZXR3
ZWVuOjpWZXJzb1BhZ2U6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVmVyc287
CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTIyNDEsMzEgKzIyNDEsMzEgQEAgdGVtcGxhdGU8
PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZQogCiAgICAgc3dpdGNoIChtX3ZhbHVlLnZh
bHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlQXV0bzoKLSAgICAgICAgcmV0dXJuIEF1dG9CcmVh
a0JldHdlZW47CisgICAgICAgIHJldHVybiBCcmVha0JldHdlZW46OkF1dG87CiAgICAgY2FzZSBD
U1NWYWx1ZUF2b2lkOgotICAgICAgICByZXR1cm4gQXZvaWRCcmVha0JldHdlZW47CisgICAgICAg
IHJldHVybiBCcmVha0JldHdlZW46OkF2b2lkOwogICAgIGNhc2UgQ1NTVmFsdWVBdm9pZENvbHVt
bjoKLSAgICAgICAgcmV0dXJuIEF2b2lkQ29sdW1uQnJlYWtCZXR3ZWVuOworICAgICAgICByZXR1
cm4gQnJlYWtCZXR3ZWVuOjpBdm9pZENvbHVtbjsKICAgICBjYXNlIENTU1ZhbHVlQXZvaWRQYWdl
OgotICAgICAgICByZXR1cm4gQXZvaWRQYWdlQnJlYWtCZXR3ZWVuOworICAgICAgICByZXR1cm4g
QnJlYWtCZXR3ZWVuOjpBdm9pZFBhZ2U7CiAgICAgY2FzZSBDU1NWYWx1ZUNvbHVtbjoKLSAgICAg
ICAgcmV0dXJuIENvbHVtbkJyZWFrQmV0d2VlbjsKKyAgICAgICAgcmV0dXJuIEJyZWFrQmV0d2Vl
bjo6Q29sdW1uOwogICAgIGNhc2UgQ1NTVmFsdWVQYWdlOgotICAgICAgICByZXR1cm4gUGFnZUJy
ZWFrQmV0d2VlbjsKKyAgICAgICAgcmV0dXJuIEJyZWFrQmV0d2Vlbjo6UGFnZTsKICAgICBjYXNl
IENTU1ZhbHVlTGVmdDoKLSAgICAgICAgcmV0dXJuIExlZnRQYWdlQnJlYWtCZXR3ZWVuOworICAg
ICAgICByZXR1cm4gQnJlYWtCZXR3ZWVuOjpMZWZ0UGFnZTsKICAgICBjYXNlIENTU1ZhbHVlUmln
aHQ6Ci0gICAgICAgIHJldHVybiBSaWdodFBhZ2VCcmVha0JldHdlZW47CisgICAgICAgIHJldHVy
biBCcmVha0JldHdlZW46OlJpZ2h0UGFnZTsKICAgICBjYXNlIENTU1ZhbHVlUmVjdG86Ci0gICAg
ICAgIHJldHVybiBSZWN0b1BhZ2VCcmVha0JldHdlZW47CisgICAgICAgIHJldHVybiBCcmVha0Jl
dHdlZW46OlJlY3RvUGFnZTsKICAgICBjYXNlIENTU1ZhbHVlVmVyc286Ci0gICAgICAgIHJldHVy
biBWZXJzb1BhZ2VCcmVha0JldHdlZW47CisgICAgICAgIHJldHVybiBCcmVha0JldHdlZW46OlZl
cnNvUGFnZTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQXV0b0JyZWFrQmV0d2VlbjsKKyAgICByZXR1
cm4gQnJlYWtCZXR3ZWVuOjpBdXRvOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoQnJlYWtJbnNpZGUgZSkKQEAgLTIyNzMsMTYgKzIy
NzMsMTYgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTUwogewogICAg
IG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoIChlKSB7Ci0g
ICAgY2FzZSBBdXRvQnJlYWtJbnNpZGU6CisgICAgY2FzZSBCcmVha0luc2lkZTo6QXV0bzoKICAg
ICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBdXRvOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEF2b2lkQnJlYWtJbnNpZGU6CisgICAgY2FzZSBCcmVha0luc2lkZTo6QXZvaWQ6CiAg
ICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXZvaWQ7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQXZvaWRDb2x1bW5CcmVha0luc2lkZToKKyAgICBjYXNlIEJyZWFrSW5zaWRlOjpB
dm9pZENvbHVtbjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBdm9pZENvbHVt
bjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBdm9pZFBhZ2VCcmVha0luc2lkZToKKyAgICBj
YXNlIEJyZWFrSW5zaWRlOjpBdm9pZFBhZ2U6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlQXZvaWRQYWdlOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yMjk0LDE5ICsyMjk0
LDE5IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGUKICAgICAKICAg
ICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkgewogICAgIGNhc2UgQ1NTVmFsdWVBdXRvOgotICAg
ICAgICByZXR1cm4gQXV0b0JyZWFrSW5zaWRlOworICAgICAgICByZXR1cm4gQnJlYWtJbnNpZGU6
OkF1dG87CiAgICAgY2FzZSBDU1NWYWx1ZUF2b2lkOgotICAgICAgICByZXR1cm4gQXZvaWRCcmVh
a0luc2lkZTsKKyAgICAgICAgcmV0dXJuIEJyZWFrSW5zaWRlOjpBdm9pZDsKICAgICBjYXNlIENT
U1ZhbHVlQXZvaWRDb2x1bW46Ci0gICAgICAgIHJldHVybiBBdm9pZENvbHVtbkJyZWFrSW5zaWRl
OworICAgICAgICByZXR1cm4gQnJlYWtJbnNpZGU6OkF2b2lkQ29sdW1uOwogICAgIGNhc2UgQ1NT
VmFsdWVBdm9pZFBhZ2U6Ci0gICAgICAgIHJldHVybiBBdm9pZFBhZ2VCcmVha0luc2lkZTsKKyAg
ICAgICAgcmV0dXJuIEJyZWFrSW5zaWRlOjpBdm9pZFBhZ2U7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJu
IEF1dG9CcmVha0luc2lkZTsKKyAgICByZXR1cm4gQnJlYWtJbnNpZGU6OkF1dG87CiB9CiAKIHRl
bXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShQb3Np
dGlvblR5cGUgZSkKQEAgLTI0MzAsNTMgKzI0MzAsNTMgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NT
UHJpbWl0aXZlVmFsdWU6Om9wZQogICAgIHJldHVybiBUYWJsZUxheW91dFR5cGU6OkF1dG87CiB9
CiAKLXRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1
ZShFVGV4dEFsaWduIGUpCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
UHJpbWl0aXZlVmFsdWUoVGV4dEFsaWduTW9kZSBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZl
Q2xhc3MpCiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsKICAgICBz
d2l0Y2ggKGUpIHsKLSAgICBjYXNlIFRBU1RBUlQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpT
dGFydDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVTdGFydDsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBUQUVORDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkVuZDoKICAg
ICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVFbmQ7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgTEVGVDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CiAgICAgICAgIG1fdmFs
dWUudmFsdWVJRCA9IENTU1ZhbHVlTGVmdDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSSUdI
VDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlJpZ2h0OgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZVJpZ2h0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENFTlRFUjoKKyAg
ICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0g
Q1NTVmFsdWVDZW50ZXI7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSlVTVElGWToKKyAgICBj
YXNlIFRleHRBbGlnbk1vZGU6Okp1c3RpZnk6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlSnVzdGlmeTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXRUJLSVRfTEVGVDoKKyAg
ICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdExlZnQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlV2Via2l0TGVmdDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXRUJLSVRf
UklHSFQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRSaWdodDoKICAgICAgICAgbV92
YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVXZWJraXRSaWdodDsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBXRUJLSVRfQ0VOVEVSOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0Q2VudGVy
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVdlYmtpdENlbnRlcjsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6b3BlcmF0b3IgRVRleHRBbGlnbigpIGNvbnN0Cit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6b3BlcmF0b3IgVGV4dEFsaWduTW9kZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KGlzVmFsdWVJRCgpKTsKIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2Fz
ZSBDU1NWYWx1ZVdlYmtpdEF1dG86IC8vIExlZ2FjeSAtd2Via2l0LWF1dG8uIEVxaXV2YWxlbnQg
dG8gc3RhcnQuCiAgICAgY2FzZSBDU1NWYWx1ZVN0YXJ0OgotICAgICAgICByZXR1cm4gVEFTVEFS
VDsKKyAgICAgICAgcmV0dXJuIFRleHRBbGlnbk1vZGU6OlN0YXJ0OwogICAgIGNhc2UgQ1NTVmFs
dWVFbmQ6Ci0gICAgICAgIHJldHVybiBUQUVORDsKKyAgICAgICAgcmV0dXJuIFRleHRBbGlnbk1v
ZGU6OkVuZDsKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RVRleHRB
bGlnbj4obV92YWx1ZS52YWx1ZUlEIC0gQ1NTVmFsdWVMZWZ0KTsKKyAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFRleHRBbGlnbk1vZGU+KG1fdmFsdWUudmFsdWVJRCAtIENTU1ZhbHVlTGVmdCk7
CiAgICAgfQogfQogCkBAIC0yNDg2LDI1ICsyNDg2LDI1IEBAIHRlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1MKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZB
TFVFX0lEOwogICAgIHN3aXRjaCAoZSkgewotICAgIGNhc2UgVGV4dEFsaWduTGFzdFN0YXJ0Ogor
ICAgIGNhc2UgVGV4dEFsaWduTGFzdDo6U3RhcnQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9
IENTU1ZhbHVlU3RhcnQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVGV4dEFsaWduTGFzdEVu
ZDoKKyAgICBjYXNlIFRleHRBbGlnbkxhc3Q6OkVuZDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVFbmQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVGV4dEFsaWduTGFzdExl
ZnQ6CisgICAgY2FzZSBUZXh0QWxpZ25MYXN0OjpMZWZ0OgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZUxlZnQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVGV4dEFsaWduTGFz
dFJpZ2h0OgorICAgIGNhc2UgVGV4dEFsaWduTGFzdDo6UmlnaHQ6CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlUmlnaHQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVGV4dEFs
aWduTGFzdENlbnRlcjoKKyAgICBjYXNlIFRleHRBbGlnbkxhc3Q6OkNlbnRlcjoKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVDZW50ZXI7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgVGV4dEFsaWduTGFzdEp1c3RpZnk6CisgICAgY2FzZSBUZXh0QWxpZ25MYXN0OjpKdXN0aWZ5
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUp1c3RpZnk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgVGV4dEFsaWduTGFzdEF1dG86CisgICAgY2FzZSBUZXh0QWxpZ25MYXN0
OjpBdXRvOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUF1dG87CiAgICAgICAg
IGJyZWFrOwogICAgIH0KQEAgLTI1MTYsMjUgKzI1MTYsMjUgQEAgdGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZQogCiAgICAgc3dpdGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsK
ICAgICBjYXNlIENTU1ZhbHVlQXV0bzoKLSAgICAgICAgcmV0dXJuIFRleHRBbGlnbkxhc3RBdXRv
OworICAgICAgICByZXR1cm4gVGV4dEFsaWduTGFzdDo6QXV0bzsKICAgICBjYXNlIENTU1ZhbHVl
U3RhcnQ6Ci0gICAgICAgIHJldHVybiBUZXh0QWxpZ25MYXN0U3RhcnQ7CisgICAgICAgIHJldHVy
biBUZXh0QWxpZ25MYXN0OjpTdGFydDsKICAgICBjYXNlIENTU1ZhbHVlRW5kOgotICAgICAgICBy
ZXR1cm4gVGV4dEFsaWduTGFzdEVuZDsKKyAgICAgICAgcmV0dXJuIFRleHRBbGlnbkxhc3Q6OkVu
ZDsKICAgICBjYXNlIENTU1ZhbHVlTGVmdDoKLSAgICAgICAgcmV0dXJuIFRleHRBbGlnbkxhc3RM
ZWZ0OworICAgICAgICByZXR1cm4gVGV4dEFsaWduTGFzdDo6TGVmdDsKICAgICBjYXNlIENTU1Zh
bHVlUmlnaHQ6Ci0gICAgICAgIHJldHVybiBUZXh0QWxpZ25MYXN0UmlnaHQ7CisgICAgICAgIHJl
dHVybiBUZXh0QWxpZ25MYXN0OjpSaWdodDsKICAgICBjYXNlIENTU1ZhbHVlQ2VudGVyOgotICAg
ICAgICByZXR1cm4gVGV4dEFsaWduTGFzdENlbnRlcjsKKyAgICAgICAgcmV0dXJuIFRleHRBbGln
bkxhc3Q6OkNlbnRlcjsKICAgICBjYXNlIENTU1ZhbHVlSnVzdGlmeToKLSAgICAgICAgcmV0dXJu
IFRleHRBbGlnbkxhc3RKdXN0aWZ5OworICAgICAgICByZXR1cm4gVGV4dEFsaWduTGFzdDo6SnVz
dGlmeTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGV4dEFsaWduTGFzdEF1dG87CisgICAgcmV0dXJu
IFRleHRBbGlnbkxhc3Q6OkF1dG87CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShUZXh0SnVzdGlmeSBlKQpAQCAtMjU0MiwxNiArMjU0
MiwxNiBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTCiB7CiAgICAg
bV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsKICAgICBzd2l0Y2ggKGUpIHsKLSAg
ICBjYXNlIFRleHRKdXN0aWZ5QXV0bzoKKyAgICBjYXNlIFRleHRKdXN0aWZ5OjpBdXRvOgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUF1dG87CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgVGV4dEp1c3RpZnlOb25lOgorICAgIGNhc2UgVGV4dEp1c3RpZnk6Ok5vbmU6CiAgICAg
ICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTm9uZTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBUZXh0SnVzdGlmeUludGVyV29yZDoKKyAgICBjYXNlIFRleHRKdXN0aWZ5OjpJbnRlcldv
cmQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlSW50ZXJXb3JkOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFRleHRKdXN0aWZ5RGlzdHJpYnV0ZToKKyAgICBjYXNlIFRleHRK
dXN0aWZ5OjpEaXN0cmlidXRlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZURp
c3RyaWJ1dGU7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTI1NjMsMTkgKzI1NjMsMTkgQEAg
dGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZQogCiAgICAgc3dpdGNoICht
X3ZhbHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlQXV0bzoKLSAgICAgICAgcmV0dXJu
IFRleHRKdXN0aWZ5QXV0bzsKKyAgICAgICAgcmV0dXJuIFRleHRKdXN0aWZ5OjpBdXRvOwogICAg
IGNhc2UgQ1NTVmFsdWVOb25lOgotICAgICAgICByZXR1cm4gVGV4dEp1c3RpZnlOb25lOworICAg
ICAgICByZXR1cm4gVGV4dEp1c3RpZnk6Ok5vbmU7CiAgICAgY2FzZSBDU1NWYWx1ZUludGVyV29y
ZDoKLSAgICAgICAgcmV0dXJuIFRleHRKdXN0aWZ5SW50ZXJXb3JkOworICAgICAgICByZXR1cm4g
VGV4dEp1c3RpZnk6OkludGVyV29yZDsKICAgICBjYXNlIENTU1ZhbHVlRGlzdHJpYnV0ZToKLSAg
ICAgICAgcmV0dXJuIFRleHRKdXN0aWZ5RGlzdHJpYnV0ZTsKKyAgICAgICAgcmV0dXJuIFRleHRK
dXN0aWZ5OjpEaXN0cmlidXRlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBUZXh0SnVzdGlmeUF1dG87
CisgICAgcmV0dXJuIFRleHRKdXN0aWZ5OjpBdXRvOwogfQogI2VuZGlmIC8vIENTUzNfVEVYVAog
CkBAIC0yNjEyLDIxICsyNjEyLDIxIEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpvcGUKIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NW
YWx1ZVNvbGlkOgotICAgICAgICByZXR1cm4gVGV4dERlY29yYXRpb25TdHlsZVNvbGlkOworICAg
ICAgICByZXR1cm4gVGV4dERlY29yYXRpb25TdHlsZTo6U29saWQ7CiAgICAgY2FzZSBDU1NWYWx1
ZURvdWJsZToKLSAgICAgICAgcmV0dXJuIFRleHREZWNvcmF0aW9uU3R5bGVEb3VibGU7CisgICAg
ICAgIHJldHVybiBUZXh0RGVjb3JhdGlvblN0eWxlOjpEb3VibGU7CiAgICAgY2FzZSBDU1NWYWx1
ZURvdHRlZDoKLSAgICAgICAgcmV0dXJuIFRleHREZWNvcmF0aW9uU3R5bGVEb3R0ZWQ7CisgICAg
ICAgIHJldHVybiBUZXh0RGVjb3JhdGlvblN0eWxlOjpEb3R0ZWQ7CiAgICAgY2FzZSBDU1NWYWx1
ZURhc2hlZDoKLSAgICAgICAgcmV0dXJuIFRleHREZWNvcmF0aW9uU3R5bGVEYXNoZWQ7CisgICAg
ICAgIHJldHVybiBUZXh0RGVjb3JhdGlvblN0eWxlOjpEYXNoZWQ7CiAgICAgY2FzZSBDU1NWYWx1
ZVdhdnk6Ci0gICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlvblN0eWxlV2F2eTsKKyAgICAgICAg
cmV0dXJuIFRleHREZWNvcmF0aW9uU3R5bGU6Oldhdnk7CiAgICAgZGVmYXVsdDoKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRl
eHREZWNvcmF0aW9uU3R5bGVTb2xpZDsKKyAgICByZXR1cm4gVGV4dERlY29yYXRpb25TdHlsZTo6
U29saWQ7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmlt
aXRpdmVWYWx1ZShUZXh0VW5kZXJsaW5lUG9zaXRpb24gZSkKQEAgLTI3MTAsNDUgKzI3MTAsNDUg
QEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZQogICAgIHJldHVybiBU
ZXh0U2VjdXJpdHk6Ok5vbmU7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NQcmltaXRpdmVWYWx1ZShFVGV4dFRyYW5zZm9ybSBlKQordGVtcGxhdGU8PiBpbmxp
bmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFRleHRUcmFuc2Zvcm0gZSkK
ICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5
cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoIChlKSB7Ci0gICAgY2FzZSBDQVBJVEFMSVpF
OgorICAgIGNhc2UgVGV4dFRyYW5zZm9ybTo6Q2FwaXRhbGl6ZToKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVDYXBpdGFsaXplOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFVQ
UEVSQ0FTRToKKyAgICBjYXNlIFRleHRUcmFuc2Zvcm06OlVwcGVyY2FzZToKICAgICAgICAgbV92
YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVVcHBlcmNhc2U7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgTE9XRVJDQVNFOgorICAgIGNhc2UgVGV4dFRyYW5zZm9ybTo6TG93ZXJjYXNlOgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUxvd2VyY2FzZTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBUVE5PTkU6CisgICAgY2FzZSBUZXh0VHJhbnNmb3JtOjpOb25lOgogICAgICAgICBt
X3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5vbmU7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0K
IAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVUZXh0VHJh
bnNmb3JtKCkgY29uc3QKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVy
YXRvciBUZXh0VHJhbnNmb3JtKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNWYWx1ZUlEKCkpOwog
CiAgICAgc3dpdGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlQ2FwaXRh
bGl6ZToKLSAgICAgICAgcmV0dXJuIENBUElUQUxJWkU7CisgICAgICAgIHJldHVybiBUZXh0VHJh
bnNmb3JtOjpDYXBpdGFsaXplOwogICAgIGNhc2UgQ1NTVmFsdWVVcHBlcmNhc2U6Ci0gICAgICAg
IHJldHVybiBVUFBFUkNBU0U7CisgICAgICAgIHJldHVybiBUZXh0VHJhbnNmb3JtOjpVcHBlcmNh
c2U7CiAgICAgY2FzZSBDU1NWYWx1ZUxvd2VyY2FzZToKLSAgICAgICAgcmV0dXJuIExPV0VSQ0FT
RTsKKyAgICAgICAgcmV0dXJuIFRleHRUcmFuc2Zvcm06Okxvd2VyY2FzZTsKICAgICBjYXNlIENT
U1ZhbHVlTm9uZToKLSAgICAgICAgcmV0dXJuIFRUTk9ORTsKKyAgICAgICAgcmV0dXJuIFRleHRU
cmFuc2Zvcm06Ok5vbmU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRUTk9ORTsKKyAgICByZXR1cm4g
VGV4dFRyYW5zZm9ybTo6Tm9uZTsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVVbmljb2RlQmlkaSBlKQpAQCAtMjk4NSw5MSArMjk4
NSw5MSBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlCiAgICAgcmV0
dXJuIFZlcnRpY2FsQWxpZ246OlRvcDsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVWaXNpYmlsaXR5IGUpCit0ZW1wbGF0ZTw+IGlu
bGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoVmlzaWJpbGl0eSBlKQog
ICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlw
ZSA9IENTU19WQUxVRV9JRDsKICAgICBzd2l0Y2ggKGUpIHsKLSAgICBjYXNlIFZJU0lCTEU6Cisg
ICAgY2FzZSBWaXNpYmlsaXR5OjpWaXNpYmxlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZVZpc2libGU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSElEREVOOgorICAgIGNh
c2UgVmlzaWJpbGl0eTo6SGlkZGVuOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1
ZUhpZGRlbjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDT0xMQVBTRToKKyAgICBjYXNlIFZp
c2liaWxpdHk6OkNvbGxhcHNlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUNv
bGxhcHNlOwogICAgICAgICBicmVhazsKICAgICB9CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFVmlzaWJpbGl0eSgpIGNvbnN0Cit0ZW1wbGF0ZTw+
IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgVmlzaWJpbGl0eSgpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKGlzVmFsdWVJRCgpKTsKIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlE
KSB7CiAgICAgY2FzZSBDU1NWYWx1ZUhpZGRlbjoKLSAgICAgICAgcmV0dXJuIEhJRERFTjsKKyAg
ICAgICAgcmV0dXJuIFZpc2liaWxpdHk6OkhpZGRlbjsKICAgICBjYXNlIENTU1ZhbHVlVmlzaWJs
ZToKLSAgICAgICAgcmV0dXJuIFZJU0lCTEU7CisgICAgICAgIHJldHVybiBWaXNpYmlsaXR5OjpW
aXNpYmxlOwogICAgIGNhc2UgQ1NTVmFsdWVDb2xsYXBzZToKLSAgICAgICAgcmV0dXJuIENPTExB
UFNFOworICAgICAgICByZXR1cm4gVmlzaWJpbGl0eTo6Q29sbGFwc2U7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
cmV0dXJuIFZJU0lCTEU7CisgICAgcmV0dXJuIFZpc2liaWxpdHk6OlZpc2libGU7CiB9CiAKLXRl
bXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShFV2hp
dGVTcGFjZSBlKQordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1p
dGl2ZVZhbHVlKFdoaXRlU3BhY2UgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQog
ewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoIChl
KSB7Ci0gICAgY2FzZSBOT1JNQUw6CisgICAgY2FzZSBXaGl0ZVNwYWNlOjpOb3JtYWw6CiAgICAg
ICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTm9ybWFsOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFBSRToKKyAgICBjYXNlIFdoaXRlU3BhY2U6OlByZToKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVQcmU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJFX1dSQVA6
CisgICAgY2FzZSBXaGl0ZVNwYWNlOjpQcmVXcmFwOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQg
PSBDU1NWYWx1ZVByZVdyYXA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJFX0xJTkU6Cisg
ICAgY2FzZSBXaGl0ZVNwYWNlOjpQcmVMaW5lOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZVByZUxpbmU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTk9XUkFQOgorICAgIGNh
c2UgV2hpdGVTcGFjZTo6Tm9XcmFwOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1
ZU5vd3JhcDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBLSFRNTF9OT1dSQVA6CisgICAgY2Fz
ZSBXaGl0ZVNwYWNlOjpLSFRNTE5vV3JhcDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NT
VmFsdWVXZWJraXROb3dyYXA7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAotdGVtcGxhdGU8
PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVXaGl0ZVNwYWNlKCkgY29uc3QK
K3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBXaGl0ZVNwYWNl
KCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNWYWx1ZUlEKCkpOwogCiAgICAgc3dpdGNoIChtX3Zh
bHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlV2Via2l0Tm93cmFwOgotICAgICAgICBy
ZXR1cm4gS0hUTUxfTk9XUkFQOworICAgICAgICByZXR1cm4gV2hpdGVTcGFjZTo6S0hUTUxOb1dy
YXA7CiAgICAgY2FzZSBDU1NWYWx1ZU5vd3JhcDoKLSAgICAgICAgcmV0dXJuIE5PV1JBUDsKKyAg
ICAgICAgcmV0dXJuIFdoaXRlU3BhY2U6Ok5vV3JhcDsKICAgICBjYXNlIENTU1ZhbHVlUHJlOgot
ICAgICAgICByZXR1cm4gUFJFOworICAgICAgICByZXR1cm4gV2hpdGVTcGFjZTo6UHJlOwogICAg
IGNhc2UgQ1NTVmFsdWVQcmVXcmFwOgotICAgICAgICByZXR1cm4gUFJFX1dSQVA7CisgICAgICAg
IHJldHVybiBXaGl0ZVNwYWNlOjpQcmVXcmFwOwogICAgIGNhc2UgQ1NTVmFsdWVQcmVMaW5lOgot
ICAgICAgICByZXR1cm4gUFJFX0xJTkU7CisgICAgICAgIHJldHVybiBXaGl0ZVNwYWNlOjpQcmVM
aW5lOwogICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6Ci0gICAgICAgIHJldHVybiBOT1JNQUw7Cisg
ICAgICAgIHJldHVybiBXaGl0ZVNwYWNlOjpOb3JtYWw7CiAgICAgZGVmYXVsdDoKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIE5P
Uk1BTDsKKyAgICByZXR1cm4gV2hpdGVTcGFjZTo6Tm9ybWFsOwogfQogCiB0ZW1wbGF0ZTw+IGlu
bGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoV29yZEJyZWFrIGUpCkBA
IC0zMjU4LDEzICszMjU4LDEzIEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1MKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3
aXRjaCAocG9zaXRpb24pIHsKLSAgICBjYXNlIFJ1YnlQb3NpdGlvbkJlZm9yZToKKyAgICBjYXNl
IFJ1YnlQb3NpdGlvbjo6QmVmb3JlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1
ZUJlZm9yZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSdWJ5UG9zaXRpb25BZnRlcjoKKyAg
ICBjYXNlIFJ1YnlQb3NpdGlvbjo6QWZ0ZXI6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlQWZ0ZXI7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUnVieVBvc2l0aW9uSW50ZXJD
aGFyYWN0ZXI6CisgICAgY2FzZSBSdWJ5UG9zaXRpb246OkludGVyQ2hhcmFjdGVyOgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUludGVyQ2hhcmFjdGVyOwogICAgICAgICBicmVh
azsKICAgICB9CkBAIC0zMjc2LDE3ICszMjc2LDE3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1By
aW1pdGl2ZVZhbHVlOjpvcGUKIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAg
Y2FzZSBDU1NWYWx1ZUJlZm9yZToKLSAgICAgICAgcmV0dXJuIFJ1YnlQb3NpdGlvbkJlZm9yZTsK
KyAgICAgICAgcmV0dXJuIFJ1YnlQb3NpdGlvbjo6QmVmb3JlOwogICAgIGNhc2UgQ1NTVmFsdWVB
ZnRlcjoKLSAgICAgICAgcmV0dXJuIFJ1YnlQb3NpdGlvbkFmdGVyOworICAgICAgICByZXR1cm4g
UnVieVBvc2l0aW9uOjpBZnRlcjsKICAgICBjYXNlIENTU1ZhbHVlSW50ZXJDaGFyYWN0ZXI6Ci0g
ICAgICAgIHJldHVybiBSdWJ5UG9zaXRpb25JbnRlckNoYXJhY3RlcjsKKyAgICAgICAgcmV0dXJu
IFJ1YnlQb3NpdGlvbjo6SW50ZXJDaGFyYWN0ZXI7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFJ1YnlQ
b3NpdGlvbkJlZm9yZTsKKyAgICByZXR1cm4gUnVieVBvc2l0aW9uOjpCZWZvcmU7CiB9CiAKIHRl
bXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShUZXh0
T3ZlcmZsb3cgb3ZlcmZsb3cpCkBAIC0zMzI1LDEwICszMzI1LDEwIEBAIHRlbXBsYXRlPD4gaW5s
aW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1MKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0g
Q1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAoZmlsbCkgewotICAgIGNhc2UgVGV4dEVtcGhhc2lz
RmlsbEZpbGxlZDoKKyAgICBjYXNlIFRleHRFbXBoYXNpc0ZpbGw6OkZpbGxlZDoKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVGaWxsZWQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgVGV4dEVtcGhhc2lzRmlsbE9wZW46CisgICAgY2FzZSBUZXh0RW1waGFzaXNGaWxsOjpPcGVu
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU9wZW47CiAgICAgICAgIGJyZWFr
OwogICAgIH0KQEAgLTMzNDAsMTUgKzMzNDAsMTUgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6Om9wZQogCiAgICAgc3dpdGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsKICAgICBj
YXNlIENTU1ZhbHVlRmlsbGVkOgotICAgICAgICByZXR1cm4gVGV4dEVtcGhhc2lzRmlsbEZpbGxl
ZDsKKyAgICAgICAgcmV0dXJuIFRleHRFbXBoYXNpc0ZpbGw6OkZpbGxlZDsKICAgICBjYXNlIENT
U1ZhbHVlT3BlbjoKLSAgICAgICAgcmV0dXJuIFRleHRFbXBoYXNpc0ZpbGxPcGVuOworICAgICAg
ICByZXR1cm4gVGV4dEVtcGhhc2lzRmlsbDo6T3BlbjsKICAgICBkZWZhdWx0OgogICAgICAgICBi
cmVhazsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGV4
dEVtcGhhc2lzRmlsbEZpbGxlZDsKKyAgICByZXR1cm4gVGV4dEVtcGhhc2lzRmlsbDo6RmlsbGVk
OwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZl
VmFsdWUoVGV4dEVtcGhhc2lzTWFyayBtYXJrKQpAQCAtMzM1NiwyNCArMzM1NiwyNCBAQCB0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTCiB7CiAgICAgbV9wcmltaXRpdmVV
bml0VHlwZSA9IENTU19WQUxVRV9JRDsKICAgICBzd2l0Y2ggKG1hcmspIHsKLSAgICBjYXNlIFRl
eHRFbXBoYXNpc01hcmtEb3Q6CisgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrOjpEb3Q6CiAgICAg
ICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRG90OwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFRleHRFbXBoYXNpc01hcmtDaXJjbGU6CisgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrOjpD
aXJjbGU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQ2lyY2xlOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtEb3VibGVDaXJjbGU6CisgICAgY2Fz
ZSBUZXh0RW1waGFzaXNNYXJrOjpEb3VibGVDaXJjbGU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlRG91YmxlQ2lyY2xlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRleHRF
bXBoYXNpc01hcmtUcmlhbmdsZToKKyAgICBjYXNlIFRleHRFbXBoYXNpc01hcms6OlRyaWFuZ2xl
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVRyaWFuZ2xlOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtTZXNhbWU6CisgICAgY2FzZSBUZXh0RW1w
aGFzaXNNYXJrOjpTZXNhbWU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlU2Vz
YW1lOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtOb25lOgotICAg
IGNhc2UgVGV4dEVtcGhhc2lzTWFya0F1dG86Ci0gICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrQ3Vz
dG9tOgorICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFyazo6Tm9uZToKKyAgICBjYXNlIFRleHRFbXBo
YXNpc01hcms6OkF1dG86CisgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrOjpDdXN0b206CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NW
YWx1ZU5vbmU7CiAgICAgICAgIGJyZWFrOwpAQCAtMzM4NiwyMyArMzM4NiwyMyBAQCB0ZW1wbGF0
ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlCiAKICAgICBzd2l0Y2ggKG1fdmFsdWUu
dmFsdWVJRCkgewogICAgIGNhc2UgQ1NTVmFsdWVOb25lOgotICAgICAgICByZXR1cm4gVGV4dEVt
cGhhc2lzTWFya05vbmU7CisgICAgICAgIHJldHVybiBUZXh0RW1waGFzaXNNYXJrOjpOb25lOwog
ICAgIGNhc2UgQ1NTVmFsdWVEb3Q6Ci0gICAgICAgIHJldHVybiBUZXh0RW1waGFzaXNNYXJrRG90
OworICAgICAgICByZXR1cm4gVGV4dEVtcGhhc2lzTWFyazo6RG90OwogICAgIGNhc2UgQ1NTVmFs
dWVDaXJjbGU6Ci0gICAgICAgIHJldHVybiBUZXh0RW1waGFzaXNNYXJrQ2lyY2xlOworICAgICAg
ICByZXR1cm4gVGV4dEVtcGhhc2lzTWFyazo6Q2lyY2xlOwogICAgIGNhc2UgQ1NTVmFsdWVEb3Vi
bGVDaXJjbGU6Ci0gICAgICAgIHJldHVybiBUZXh0RW1waGFzaXNNYXJrRG91YmxlQ2lyY2xlOwor
ICAgICAgICByZXR1cm4gVGV4dEVtcGhhc2lzTWFyazo6RG91YmxlQ2lyY2xlOwogICAgIGNhc2Ug
Q1NTVmFsdWVUcmlhbmdsZToKLSAgICAgICAgcmV0dXJuIFRleHRFbXBoYXNpc01hcmtUcmlhbmds
ZTsKKyAgICAgICAgcmV0dXJuIFRleHRFbXBoYXNpc01hcms6OlRyaWFuZ2xlOwogICAgIGNhc2Ug
Q1NTVmFsdWVTZXNhbWU6Ci0gICAgICAgIHJldHVybiBUZXh0RW1waGFzaXNNYXJrU2VzYW1lOwor
ICAgICAgICByZXR1cm4gVGV4dEVtcGhhc2lzTWFyazo6U2VzYW1lOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJl
dHVybiBUZXh0RW1waGFzaXNNYXJrTm9uZTsKKyAgICByZXR1cm4gVGV4dEVtcGhhc2lzTWFyazo6
Tm9uZTsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1p
dGl2ZVZhbHVlKFRleHRPcmllbnRhdGlvbiBlKQpAQCAtMzQ0NSw3NSArMzQ0NSw3NSBAQCB0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlCiAgICAgcmV0dXJuIFRleHRPcmll
bnRhdGlvbjo6TWl4ZWQ7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NQcmltaXRpdmVWYWx1ZShFUG9pbnRlckV2ZW50cyBlKQordGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFBvaW50ZXJFdmVudHMgZSkKICAg
ICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUg
PSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoIChlKSB7Ci0gICAgY2FzZSBQRV9OT05FOgorICAg
IGNhc2UgUG9pbnRlckV2ZW50czo6Tm9uZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NT
VmFsdWVOb25lOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBFX1NUUk9LRToKKyAgICBjYXNl
IFBvaW50ZXJFdmVudHM6OlN0cm9rZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFs
dWVTdHJva2U7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUEVfRklMTDoKKyAgICBjYXNlIFBv
aW50ZXJFdmVudHM6OkZpbGw6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRmls
bDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQRV9QQUlOVEVEOgorICAgIGNhc2UgUG9pbnRl
ckV2ZW50czo6UGFpbnRlZDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVQYWlu
dGVkOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBFX1ZJU0lCTEU6CisgICAgY2FzZSBQb2lu
dGVyRXZlbnRzOjpWaXNpYmxlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVZp
c2libGU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUEVfVklTSUJMRV9TVFJPS0U6CisgICAg
Y2FzZSBQb2ludGVyRXZlbnRzOjpWaXNpYmxlU3Ryb2tlOgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZVZpc2libGVTdHJva2U7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUEVf
VklTSUJMRV9GSUxMOgorICAgIGNhc2UgUG9pbnRlckV2ZW50czo6VmlzaWJsZUZpbGw6CiAgICAg
ICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVmlzaWJsZUZpbGw7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgUEVfVklTSUJMRV9QQUlOVEVEOgorICAgIGNhc2UgUG9pbnRlckV2ZW50czo6
VmlzaWJsZVBhaW50ZWQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVmlzaWJs
ZVBhaW50ZWQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUEVfQVVUTzoKKyAgICBjYXNlIFBv
aW50ZXJFdmVudHM6OkF1dG86CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXV0
bzsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQRV9BTEw6CisgICAgY2FzZSBQb2ludGVyRXZl
bnRzOjpBbGw6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQWxsOwogICAgICAg
ICBicmVhazsKICAgICB9CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVl
OjpvcGVyYXRvciBFUG9pbnRlckV2ZW50cygpIGNvbnN0Cit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgUG9pbnRlckV2ZW50cygpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKGlzVmFsdWVJRCgpKTsKIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAg
Y2FzZSBDU1NWYWx1ZUFsbDoKLSAgICAgICAgcmV0dXJuIFBFX0FMTDsKKyAgICAgICAgcmV0dXJu
IFBvaW50ZXJFdmVudHM6OkFsbDsKICAgICBjYXNlIENTU1ZhbHVlQXV0bzoKLSAgICAgICAgcmV0
dXJuIFBFX0FVVE87CisgICAgICAgIHJldHVybiBQb2ludGVyRXZlbnRzOjpBdXRvOwogICAgIGNh
c2UgQ1NTVmFsdWVOb25lOgotICAgICAgICByZXR1cm4gUEVfTk9ORTsKKyAgICAgICAgcmV0dXJu
IFBvaW50ZXJFdmVudHM6Ok5vbmU7CiAgICAgY2FzZSBDU1NWYWx1ZVZpc2libGVQYWludGVkOgot
ICAgICAgICByZXR1cm4gUEVfVklTSUJMRV9QQUlOVEVEOworICAgICAgICByZXR1cm4gUG9pbnRl
ckV2ZW50czo6VmlzaWJsZVBhaW50ZWQ7CiAgICAgY2FzZSBDU1NWYWx1ZVZpc2libGVGaWxsOgot
ICAgICAgICByZXR1cm4gUEVfVklTSUJMRV9GSUxMOworICAgICAgICByZXR1cm4gUG9pbnRlckV2
ZW50czo6VmlzaWJsZUZpbGw7CiAgICAgY2FzZSBDU1NWYWx1ZVZpc2libGVTdHJva2U6Ci0gICAg
ICAgIHJldHVybiBQRV9WSVNJQkxFX1NUUk9LRTsKKyAgICAgICAgcmV0dXJuIFBvaW50ZXJFdmVu
dHM6OlZpc2libGVTdHJva2U7CiAgICAgY2FzZSBDU1NWYWx1ZVZpc2libGU6Ci0gICAgICAgIHJl
dHVybiBQRV9WSVNJQkxFOworICAgICAgICByZXR1cm4gUG9pbnRlckV2ZW50czo6VmlzaWJsZTsK
ICAgICBjYXNlIENTU1ZhbHVlUGFpbnRlZDoKLSAgICAgICAgcmV0dXJuIFBFX1BBSU5URUQ7Cisg
ICAgICAgIHJldHVybiBQb2ludGVyRXZlbnRzOjpQYWludGVkOwogICAgIGNhc2UgQ1NTVmFsdWVG
aWxsOgotICAgICAgICByZXR1cm4gUEVfRklMTDsKKyAgICAgICAgcmV0dXJuIFBvaW50ZXJFdmVu
dHM6OkZpbGw7CiAgICAgY2FzZSBDU1NWYWx1ZVN0cm9rZToKLSAgICAgICAgcmV0dXJuIFBFX1NU
Uk9LRTsKKyAgICAgICAgcmV0dXJuIFBvaW50ZXJFdmVudHM6OlN0cm9rZTsKICAgICBkZWZhdWx0
OgogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gUEVfQUxMOworICAgIHJldHVybiBQb2ludGVyRXZlbnRzOjpBbGw7CiB9CiAKIHRl
bXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShLZXJu
aW5nIGtlcm5pbmcpCkBAIC0zNzIyLDEzICszNzIyLDEzIEBAIHRlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1MKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZB
TFVFX0lEOwogICAgIHN3aXRjaCAoaHlwaGVucykgewotICAgIGNhc2UgSHlwaGVuc05vbmU6Cisg
ICAgY2FzZSBIeXBoZW5zOjpOb25lOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1
ZU5vbmU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSHlwaGVuc01hbnVhbDoKKyAgICBjYXNl
IEh5cGhlbnM6Ok1hbnVhbDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVNYW51
YWw7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSHlwaGVuc0F1dG86CisgICAgY2FzZSBIeXBo
ZW5zOjpBdXRvOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUF1dG87CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KQEAgLTM3NDAsMTcgKzM3NDAsMTcgQEAgdGVtcGxhdGU8PiBpbmxp
bmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZQogCiAgICAgc3dpdGNoIChtX3ZhbHVlLnZhbHVlSUQp
IHsKICAgICBjYXNlIENTU1ZhbHVlTm9uZToKLSAgICAgICAgcmV0dXJuIEh5cGhlbnNOb25lOwor
ICAgICAgICByZXR1cm4gSHlwaGVuczo6Tm9uZTsKICAgICBjYXNlIENTU1ZhbHVlTWFudWFsOgot
ICAgICAgICByZXR1cm4gSHlwaGVuc01hbnVhbDsKKyAgICAgICAgcmV0dXJuIEh5cGhlbnM6Ok1h
bnVhbDsKICAgICBjYXNlIENTU1ZhbHVlQXV0bzoKLSAgICAgICAgcmV0dXJuIEh5cGhlbnNBdXRv
OworICAgICAgICByZXR1cm4gSHlwaGVuczo6QXV0bzsKICAgICBkZWZhdWx0OgogICAgICAgICBi
cmVhazsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gSHlw
aGVuc0F1dG87CisgICAgcmV0dXJuIEh5cGhlbnM6OkF1dG87CiB9CiAKIHRlbXBsYXRlPD4gaW5s
aW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShMaW5lU25hcCBncmlkU25h
cCkKQEAgLTM3NTgsMTMgKzM3NTgsMTMgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTUwogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAg
ICAgc3dpdGNoIChncmlkU25hcCkgewotICAgIGNhc2UgTGluZVNuYXBOb25lOgorICAgIGNhc2Ug
TGluZVNuYXA6Ok5vbmU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTm9uZTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMaW5lU25hcEJhc2VsaW5lOgorICAgIGNhc2UgTGlu
ZVNuYXA6OkJhc2VsaW5lOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUJhc2Vs
aW5lOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVTbmFwQ29udGFpbjoKKyAgICBjYXNl
IExpbmVTbmFwOjpDb250YWluOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUNv
bnRhaW47CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTM3NzYsMTcgKzM3NzYsMTcgQEAgdGVt
cGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZQogCiAgICAgc3dpdGNoIChtX3Zh
bHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlTm9uZToKLSAgICAgICAgcmV0dXJuIExp
bmVTbmFwTm9uZTsKKyAgICAgICAgcmV0dXJuIExpbmVTbmFwOjpOb25lOwogICAgIGNhc2UgQ1NT
VmFsdWVCYXNlbGluZToKLSAgICAgICAgcmV0dXJuIExpbmVTbmFwQmFzZWxpbmU7CisgICAgICAg
IHJldHVybiBMaW5lU25hcDo6QmFzZWxpbmU7CiAgICAgY2FzZSBDU1NWYWx1ZUNvbnRhaW46Ci0g
ICAgICAgIHJldHVybiBMaW5lU25hcENvbnRhaW47CisgICAgICAgIHJldHVybiBMaW5lU25hcDo6
Q29udGFpbjsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gTGluZVNuYXBOb25lOworICAgIHJldHVybiBM
aW5lU25hcDo6Tm9uZTsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU1ByaW1pdGl2ZVZhbHVlKExpbmVBbGlnbiBsaW5lQWxpZ24pCkBAIC0zNzk0LDEwICszNzk0
LDEwIEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1MKIHsKICAgICBt
X3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAobGluZUFsaWdu
KSB7Ci0gICAgY2FzZSBMaW5lQWxpZ25Ob25lOgorICAgIGNhc2UgTGluZUFsaWduOjpOb25lOgog
ICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5vbmU7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgTGluZUFsaWduRWRnZXM6CisgICAgY2FzZSBMaW5lQWxpZ246OkVkZ2VzOgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUVkZ2VzOwogICAgICAgICBicmVhazsKICAg
ICB9CkBAIC0zODA5LDE1ICszODA5LDE1IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2
ZVZhbHVlOjpvcGUKIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBD
U1NWYWx1ZU5vbmU6Ci0gICAgICAgIHJldHVybiBMaW5lQWxpZ25Ob25lOworICAgICAgICByZXR1
cm4gTGluZUFsaWduOjpOb25lOwogICAgIGNhc2UgQ1NTVmFsdWVFZGdlczoKLSAgICAgICAgcmV0
dXJuIExpbmVBbGlnbkVkZ2VzOworICAgICAgICByZXR1cm4gTGluZUFsaWduOjpFZGdlczsKICAg
ICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gTGluZUFsaWduTm9uZTsKKyAgICByZXR1cm4gTGluZUFsaWduOjpO
b25lOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0
aXZlVmFsdWUoRVNwZWFrQXMgZSkKQEAgLTM4NDksMTUgKzM4NDksMTUgQEAgdGVtcGxhdGU8PiBp
bmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZQogCiAgICAgc3dpdGNoIChtX3ZhbHVlLnZhbHVl
SUQpIHsKICAgICBjYXNlIENTU1ZhbHVlTG9naWNhbDoKLSAgICAgICAgcmV0dXJuIExvZ2ljYWxP
cmRlcjsKKyAgICAgICAgcmV0dXJuIE9yZGVyOjpMb2dpY2FsOwogICAgIGNhc2UgQ1NTVmFsdWVW
aXN1YWw6Ci0gICAgICAgIHJldHVybiBWaXN1YWxPcmRlcjsKKyAgICAgICAgcmV0dXJuIE9yZGVy
OjpWaXN1YWw7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIExvZ2ljYWxPcmRlcjsKKyAgICByZXR1cm4g
T3JkZXI6OkxvZ2ljYWw7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NQcmltaXRpdmVWYWx1ZShPcmRlciBlKQpAQCAtMzg2NSwxMCArMzg2NSwxMCBAQCB0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTCiB7CiAgICAgbV9wcmltaXRpdmVV
bml0VHlwZSA9IENTU19WQUxVRV9JRDsKICAgICBzd2l0Y2ggKGUpIHsKLSAgICBjYXNlIExvZ2lj
YWxPcmRlcjoKKyAgICBjYXNlIE9yZGVyOjpMb2dpY2FsOgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZUxvZ2ljYWw7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVmlzdWFsT3Jk
ZXI6CisgICAgY2FzZSBPcmRlcjo6VmlzdWFsOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZVZpc3VhbDsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNDI1NiwzNSArNDI1Niwz
NSBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlCiAgICAgcmV0dXJu
IEJvcmRlckNvbGxhcHNlOjpTZXBhcmF0ZTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVCb3JkZXJGaXQgZSkKK3RlbXBsYXRlPD4g
aW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShCb3JkZXJGaXQgZSkK
ICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5
cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoIChlKSB7Ci0gICAgY2FzZSBCb3JkZXJGaXRC
b3JkZXI6CisgICAgY2FzZSBCb3JkZXJGaXQ6OkJvcmRlcjoKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVCb3JkZXI7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQm9yZGVyRml0
TGluZXM6CisgICAgY2FzZSBCb3JkZXJGaXQ6OkxpbmVzOgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZUxpbmVzOwogICAgICAgICBicmVhazsKICAgICB9CiB9CiAKLXRlbXBsYXRl
PD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFQm9yZGVyRml0KCkgY29uc3QK
K3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBCb3JkZXJGaXQo
KSBjb25zdAogewogICAgIEFTU0VSVChpc1ZhbHVlSUQoKSk7CiAKICAgICBzd2l0Y2ggKG1fdmFs
dWUudmFsdWVJRCkgewogICAgIGNhc2UgQ1NTVmFsdWVCb3JkZXI6Ci0gICAgICAgIHJldHVybiBC
b3JkZXJGaXRCb3JkZXI7CisgICAgICAgIHJldHVybiBCb3JkZXJGaXQ6OkJvcmRlcjsKICAgICBj
YXNlIENTU1ZhbHVlTGluZXM6Ci0gICAgICAgIHJldHVybiBCb3JkZXJGaXRMaW5lczsKKyAgICAg
ICAgcmV0dXJuIEJvcmRlckZpdDo6TGluZXM7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEJvcmRlckZp
dExpbmVzOworICAgIHJldHVybiBCb3JkZXJGaXQ6OkxpbmVzOwogfQogCiB0ZW1wbGF0ZTw+IGlu
bGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoSW1hZ2VSZW5kZXJpbmcg
aW1hZ2VSZW5kZXJpbmcpCkBAIC00NDA3LDEzICs0NDA3LDEzIEBAIHRlbXBsYXRlPD4gaW5saW5l
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1MKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NT
X1ZBTFVFX0lEOwogICAgIHN3aXRjaCAoZSkgewotICAgIGNhc2UgSG9yaXpvbnRhbENvbHVtbkF4
aXM6CisgICAgY2FzZSBDb2x1bW5BeGlzOjpIb3Jpem9udGFsOgogICAgICAgICBtX3ZhbHVlLnZh
bHVlSUQgPSBDU1NWYWx1ZUhvcml6b250YWw7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVmVy
dGljYWxDb2x1bW5BeGlzOgorICAgIGNhc2UgQ29sdW1uQXhpczo6VmVydGljYWw6CiAgICAgICAg
IG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVmVydGljYWw7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgQXV0b0NvbHVtbkF4aXM6CisgICAgY2FzZSBDb2x1bW5BeGlzOjpBdXRvOgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUF1dG87CiAgICAgICAgIGJyZWFrOwogICAgIH0K
QEAgLTQ0MjUsMTcgKzQ0MjUsMTcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFs
dWU6Om9wZQogCiAgICAgc3dpdGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1Zh
bHVlSG9yaXpvbnRhbDoKLSAgICAgICAgcmV0dXJuIEhvcml6b250YWxDb2x1bW5BeGlzOworICAg
ICAgICByZXR1cm4gQ29sdW1uQXhpczo6SG9yaXpvbnRhbDsKICAgICBjYXNlIENTU1ZhbHVlVmVy
dGljYWw6Ci0gICAgICAgIHJldHVybiBWZXJ0aWNhbENvbHVtbkF4aXM7CisgICAgICAgIHJldHVy
biBDb2x1bW5BeGlzOjpWZXJ0aWNhbDsKICAgICBjYXNlIENTU1ZhbHVlQXV0bzoKLSAgICAgICAg
cmV0dXJuIEF1dG9Db2x1bW5BeGlzOworICAgICAgICByZXR1cm4gQ29sdW1uQXhpczo6QXV0bzsK
ICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICByZXR1cm4gQXV0b0NvbHVtbkF4aXM7CisgICAgcmV0dXJuIENvbHVtbkF4
aXM6OkF1dG87CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQ
cmltaXRpdmVWYWx1ZShDb2x1bW5Qcm9ncmVzc2lvbiBlKQpAQCAtNDQ0MywxMCArNDQ0MywxMCBA
QCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTCiB7CiAgICAgbV9wcmlt
aXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsKICAgICBzd2l0Y2ggKGUpIHsKLSAgICBjYXNl
IE5vcm1hbENvbHVtblByb2dyZXNzaW9uOgorICAgIGNhc2UgQ29sdW1uUHJvZ3Jlc3Npb246Ok5v
cm1hbDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb3JtYWw7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgUmV2ZXJzZUNvbHVtblByb2dyZXNzaW9uOgorICAgIGNhc2UgQ29s
dW1uUHJvZ3Jlc3Npb246OlJldmVyc2U6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlUmV2ZXJzZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNDQ1OCwxNSArNDQ1OCwxNSBA
QCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlCiAKICAgICBzd2l0Y2gg
KG1fdmFsdWUudmFsdWVJRCkgewogICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6Ci0gICAgICAgIHJl
dHVybiBOb3JtYWxDb2x1bW5Qcm9ncmVzc2lvbjsKKyAgICAgICAgcmV0dXJuIENvbHVtblByb2dy
ZXNzaW9uOjpOb3JtYWw7CiAgICAgY2FzZSBDU1NWYWx1ZVJldmVyc2U6Ci0gICAgICAgIHJldHVy
biBSZXZlcnNlQ29sdW1uUHJvZ3Jlc3Npb247CisgICAgICAgIHJldHVybiBDb2x1bW5Qcm9ncmVz
c2lvbjo6UmV2ZXJzZTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gTm9ybWFsQ29sdW1uUHJvZ3Jlc3Np
b247CisgICAgcmV0dXJuIENvbHVtblByb2dyZXNzaW9uOjpOb3JtYWw7CiB9CiAKIGVudW0gTGVu
Z3RoQ29udmVyc2lvbiB7CkBAIC00OTA1LDI4ICs0OTA1LDI4IEBAIHRlbXBsYXRlPD4gaW5saW5l
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1MKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NT
X1ZBTFVFX0lEOwogICAgIHN3aXRjaCAoY3NzQm94KSB7Ci0gICAgY2FzZSBNYXJnaW5Cb3g6Cisg
ICAgY2FzZSBDU1NCb3hUeXBlOjpNYXJnaW5Cb3g6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9
IENTU1ZhbHVlTWFyZ2luQm94OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJvcmRlckJveDoK
KyAgICBjYXNlIENTU0JveFR5cGU6OkJvcmRlckJveDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVCb3JkZXJCb3g7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGFkZGluZ0Jv
eDoKKyAgICBjYXNlIENTU0JveFR5cGU6OlBhZGRpbmdCb3g6CiAgICAgICAgIG1fdmFsdWUudmFs
dWVJRCA9IENTU1ZhbHVlUGFkZGluZ0JveDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDb250
ZW50Qm94OgorICAgIGNhc2UgQ1NTQm94VHlwZTo6Q29udGVudEJveDoKICAgICAgICAgbV92YWx1
ZS52YWx1ZUlEID0gQ1NTVmFsdWVDb250ZW50Qm94OwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEZpbGw6CisgICAgY2FzZSBDU1NCb3hUeXBlOjpGaWxsOgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZUZpbGw7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgU3Ryb2tlOgorICAg
IGNhc2UgQ1NTQm94VHlwZTo6U3Ryb2tlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NW
YWx1ZVN0cm9rZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBWaWV3Qm94OgorICAgIGNhc2Ug
Q1NTQm94VHlwZTo6Vmlld0JveDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVW
aWV3Qm94OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJveE1pc3Npbmc6CisgICAgY2FzZSBD
U1NCb3hUeXBlOjpCb3hNaXNzaW5nOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb25lOwogICAgICAgICBicmVhazsKQEAg
LTQ5MzcsMjUgKzQ5MzcsMjUgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6
Om9wZQogewogICAgIHN3aXRjaCAodmFsdWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZU1hcmdp
bkJveDoKLSAgICAgICAgcmV0dXJuIE1hcmdpbkJveDsKKyAgICAgICAgcmV0dXJuIENTU0JveFR5
cGU6Ok1hcmdpbkJveDsKICAgICBjYXNlIENTU1ZhbHVlQm9yZGVyQm94OgotICAgICAgICByZXR1
cm4gQm9yZGVyQm94OworICAgICAgICByZXR1cm4gQ1NTQm94VHlwZTo6Qm9yZGVyQm94OwogICAg
IGNhc2UgQ1NTVmFsdWVQYWRkaW5nQm94OgotICAgICAgICByZXR1cm4gUGFkZGluZ0JveDsKKyAg
ICAgICAgcmV0dXJuIENTU0JveFR5cGU6OlBhZGRpbmdCb3g7CiAgICAgY2FzZSBDU1NWYWx1ZUNv
bnRlbnRCb3g6Ci0gICAgICAgIHJldHVybiBDb250ZW50Qm94OworICAgICAgICByZXR1cm4gQ1NT
Qm94VHlwZTo6Q29udGVudEJveDsKICAgICAvLyBUaGUgZm9sbG93aW5nIGFyZSB1c2VkIGluIGFu
IFNWRyBjb250ZXh0LgogICAgIGNhc2UgQ1NTVmFsdWVGaWxsOgotICAgICAgICByZXR1cm4gRmls
bDsKKyAgICAgICAgcmV0dXJuIENTU0JveFR5cGU6OkZpbGw7CiAgICAgY2FzZSBDU1NWYWx1ZVN0
cm9rZToKLSAgICAgICAgcmV0dXJuIFN0cm9rZTsKKyAgICAgICAgcmV0dXJuIENTU0JveFR5cGU6
OlN0cm9rZTsKICAgICBjYXNlIENTU1ZhbHVlVmlld0JveDoKLSAgICAgICAgcmV0dXJuIFZpZXdC
b3g7CisgICAgICAgIHJldHVybiBDU1NCb3hUeXBlOjpWaWV3Qm94OwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gQm94TWlzc2luZzsKKyAgICByZXR1cm4gQ1NTQm94VHlwZTo6Qm94TWlzc2luZzsKIH0KIAog
dGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEl0
ZW1Qb3NpdGlvbiBpdGVtUG9zaXRpb24pCkBAIC01MjAxLDE1ICs1MjAxLDE1IEBAIHRlbXBsYXRl
PD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGUKIAogICAgIHN3aXRjaCAobV92YWx1ZS52
YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoKLSAgICAgICAgcmV0dXJuIFRleHRa
b29tTm9ybWFsOworICAgICAgICByZXR1cm4gVGV4dFpvb206Ok5vcm1hbDsKICAgICBjYXNlIENT
U1ZhbHVlUmVzZXQ6Ci0gICAgICAgIHJldHVybiBUZXh0Wm9vbVJlc2V0OworICAgICAgICByZXR1
cm4gVGV4dFpvb206OlJlc2V0OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBUZXh0Wm9vbU5vcm1hbDsK
KyAgICByZXR1cm4gVGV4dFpvb206Ok5vcm1hbDsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFRleHRab29tIHRleHRab29tKQpAQCAt
NTIxNywxMCArNTIxNywxMCBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTCiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsKICAgICBzd2l0
Y2ggKHRleHRab29tKSB7Ci0gICAgY2FzZSBUZXh0Wm9vbU5vcm1hbDoKKyAgICBjYXNlIFRleHRa
b29tOjpOb3JtYWw6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTm9ybWFsOwog
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBUZXh0Wm9vbVJlc2V0OgorICAgIGNhc2UgVGV4dFpv
b206OlJlc2V0OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVJlc2V0OwogICAg
ICAgICByZXR1cm47CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCShy
ZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNzAsMzEgKzI3MCwzMSBAQCBQc2V1ZG9JZCBDU1NTZWxlY3Rvcjo6
cHNldWRvSWQoUHNldWRvRWxlCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBQc2V1
ZG9FbGVtZW50Rmlyc3RMaW5lOgotICAgICAgICByZXR1cm4gRklSU1RfTElORTsKKyAgICAgICAg
cmV0dXJuIFBzZXVkb0lkOjpGaXJzdExpbmU7CiAgICAgY2FzZSBQc2V1ZG9FbGVtZW50Rmlyc3RM
ZXR0ZXI6Ci0gICAgICAgIHJldHVybiBGSVJTVF9MRVRURVI7CisgICAgICAgIHJldHVybiBQc2V1
ZG9JZDo6Rmlyc3RMZXR0ZXI7CiAgICAgY2FzZSBQc2V1ZG9FbGVtZW50U2VsZWN0aW9uOgotICAg
ICAgICByZXR1cm4gU0VMRUNUSU9OOworICAgICAgICByZXR1cm4gUHNldWRvSWQ6OlNlbGVjdGlv
bjsKICAgICBjYXNlIFBzZXVkb0VsZW1lbnRNYXJrZXI6Ci0gICAgICAgIHJldHVybiBNQVJLRVI7
CisgICAgICAgIHJldHVybiBQc2V1ZG9JZDo6TWFya2VyOwogICAgIGNhc2UgUHNldWRvRWxlbWVu
dEJlZm9yZToKLSAgICAgICAgcmV0dXJuIEJFRk9SRTsKKyAgICAgICAgcmV0dXJuIFBzZXVkb0lk
OjpCZWZvcmU7CiAgICAgY2FzZSBQc2V1ZG9FbGVtZW50QWZ0ZXI6Ci0gICAgICAgIHJldHVybiBB
RlRFUjsKKyAgICAgICAgcmV0dXJuIFBzZXVkb0lkOjpBZnRlcjsKICAgICBjYXNlIFBzZXVkb0Vs
ZW1lbnRTY3JvbGxiYXI6Ci0gICAgICAgIHJldHVybiBTQ1JPTExCQVI7CisgICAgICAgIHJldHVy
biBQc2V1ZG9JZDo6U2Nyb2xsYmFyOwogICAgIGNhc2UgUHNldWRvRWxlbWVudFNjcm9sbGJhckJ1
dHRvbjoKLSAgICAgICAgcmV0dXJuIFNDUk9MTEJBUl9CVVRUT047CisgICAgICAgIHJldHVybiBQ
c2V1ZG9JZDo6U2Nyb2xsYmFyQnV0dG9uOwogICAgIGNhc2UgUHNldWRvRWxlbWVudFNjcm9sbGJh
ckNvcm5lcjoKLSAgICAgICAgcmV0dXJuIFNDUk9MTEJBUl9DT1JORVI7CisgICAgICAgIHJldHVy
biBQc2V1ZG9JZDo6U2Nyb2xsYmFyQ29ybmVyOwogICAgIGNhc2UgUHNldWRvRWxlbWVudFNjcm9s
bGJhclRodW1iOgotICAgICAgICByZXR1cm4gU0NST0xMQkFSX1RIVU1COworICAgICAgICByZXR1
cm4gUHNldWRvSWQ6OlNjcm9sbGJhclRodW1iOwogICAgIGNhc2UgUHNldWRvRWxlbWVudFNjcm9s
bGJhclRyYWNrOgotICAgICAgICByZXR1cm4gU0NST0xMQkFSX1RSQUNLOworICAgICAgICByZXR1
cm4gUHNldWRvSWQ6OlNjcm9sbGJhclRyYWNrOwogICAgIGNhc2UgUHNldWRvRWxlbWVudFNjcm9s
bGJhclRyYWNrUGllY2U6Ci0gICAgICAgIHJldHVybiBTQ1JPTExCQVJfVFJBQ0tfUElFQ0U7Cisg
ICAgICAgIHJldHVybiBQc2V1ZG9JZDo6U2Nyb2xsYmFyVHJhY2tQaWVjZTsKICAgICBjYXNlIFBz
ZXVkb0VsZW1lbnRSZXNpemVyOgotICAgICAgICByZXR1cm4gUkVTSVpFUjsKKyAgICAgICAgcmV0
dXJuIFBzZXVkb0lkOjpSZXNpemVyOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBjYXNl
IFBzZXVkb0VsZW1lbnRDdWU6CiAjZW5kaWYKQEAgLTMwMywxMSArMzAzLDExIEBAIFBzZXVkb0lk
IENTU1NlbGVjdG9yOjpwc2V1ZG9JZChQc2V1ZG9FbGUKICAgICBjYXNlIFBzZXVkb0VsZW1lbnRV
c2VyQWdlbnRDdXN0b206CiAgICAgY2FzZSBQc2V1ZG9FbGVtZW50V2ViS2l0Q3VzdG9tOgogICAg
IGNhc2UgUHNldWRvRWxlbWVudFdlYktpdEN1c3RvbUxlZ2FjeVByZWZpeGVkOgotICAgICAgICBy
ZXR1cm4gTk9QU0VVRE87CisgICAgICAgIHJldHVybiBQc2V1ZG9JZDo6Tm9uZTsKICAgICB9CiAK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gTk9QU0VVRE87CisgICAgcmV0
dXJuIFBzZXVkb0lkOjpOb25lOwogfQogCiBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudFR5cGUg
Q1NTU2VsZWN0b3I6OnBhcnNlUHNldWRvRWxlbWVudFR5cGUoY29uc3QgU3RyaW5nJiBuYW1lKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcAkocmV2aXNpb24gMjMyMTIzKQor
KysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNjMsMTYgKzM2MywxNiBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkZpbGxN
b2RlCiAKICAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFs
dWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZU5vbmU6Ci0gICAgICAgIGxheWVyLnNldEZpbGxN
b2RlKEFuaW1hdGlvbkZpbGxNb2RlTm9uZSk7CisgICAgICAgIGxheWVyLnNldEZpbGxNb2RlKEFu
aW1hdGlvbkZpbGxNb2RlOjpOb25lKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1
ZUZvcndhcmRzOgotICAgICAgICBsYXllci5zZXRGaWxsTW9kZShBbmltYXRpb25GaWxsTW9kZUZv
cndhcmRzKTsKKyAgICAgICAgbGF5ZXIuc2V0RmlsbE1vZGUoQW5pbWF0aW9uRmlsbE1vZGU6OkZv
cndhcmRzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZUJhY2t3YXJkczoKLSAg
ICAgICAgbGF5ZXIuc2V0RmlsbE1vZGUoQW5pbWF0aW9uRmlsbE1vZGVCYWNrd2FyZHMpOworICAg
ICAgICBsYXllci5zZXRGaWxsTW9kZShBbmltYXRpb25GaWxsTW9kZTo6QmFja3dhcmRzKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZUJvdGg6Ci0gICAgICAgIGxheWVyLnNldEZp
bGxNb2RlKEFuaW1hdGlvbkZpbGxNb2RlQm90aCk7CisgICAgICAgIGxheWVyLnNldEZpbGxNb2Rl
KEFuaW1hdGlvbkZpbGxNb2RlOjpCb3RoKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgYnJlYWs7CkBAIC00MjMsNyArNDIzLDcgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjpt
YXBBbmltYXRpb25QbGF5U3RhdAogICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRUFuaW1QbGF5U3RhdGUgcGxheVN0YXRlID0gKGRv
d25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlUGF1
c2VkKSA/IEFuaW1QbGF5U3RhdGVQYXVzZWQgOiBBbmltUGxheVN0YXRlUGxheWluZzsKKyAgICBB
bmltYXRpb25QbGF5U3RhdGUgcGxheVN0YXRlID0gKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlUGF1c2VkKSA/IEFuaW1hdGlvblBsYXlTdGF0
ZTo6UGF1c2VkIDogQW5pbWF0aW9uUGxheVN0YXRlOjpQbGF5aW5nOwogICAgIGxheWVyLnNldFBs
YXlTdGF0ZShwbGF5U3RhdGUpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWVLZXl3b3Jkcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVL
ZXl3b3Jkcy5pbgkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zh
bHVlS2V5d29yZHMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI4Nyw3ICsyODcsNyBAQCBib3R0b20K
IC13ZWJraXQtYmFzZWxpbmUtbWlkZGxlCiAvLwogLy8gQ1NTX1BST1BfVEVYVF9BTElHTjoKLS8v
IFRoZSBvcmRlciBoZXJlIG11c3QgbWF0Y2ggdGhlIG9yZGVyIG9mIHRoZSBFVGV4dEFsaWduIGVu
dW0gaW4gUmVuZGVyU3R5bGVDb25zdGFudHMuaC4KKy8vIFRoZSBvcmRlciBoZXJlIG11c3QgbWF0
Y2ggdGhlIG9yZGVyIG9mIHRoZSBUZXh0QWxpZ25Nb2RlIGVudW0gaW4gUmVuZGVyU3R5bGVDb25z
dGFudHMuaC4KIC8vCiAtd2Via2l0LWF1dG8KIGxlZnQKQEAgLTMxMiw3ICszMTIsNyBAQCBvdXRz
aWRlCiBpbnNpZGUKIC8vCiAvLyBDU1NfUFJPUF9MSVNUX1NUWUxFX1RZUEU6Ci0vLyBUaGUgb3Jk
ZXIgaGVyZSBtdXN0IG1hdGNoIHRoZSBvcmRlciBvZiB0aGUgRUxpc3RTdHlsZVR5cGUgZW51bSBp
biBSZW5kZXJTdHlsZUNvbnN0YW50cy5oLgorLy8gVGhlIG9yZGVyIGhlcmUgbXVzdCBtYXRjaCB0
aGUgb3JkZXIgb2YgdGhlIExpc3RTdHlsZVR5cGUgZW51bSBpbiBSZW5kZXJTdHlsZUNvbnN0YW50
cy5oLgogLy8KIGRpc2MKIGNpcmNsZQpAQCAtMzk3LDcgKzM5Nyw3IEBAIGthdGFrYW5hLWlyb2hh
CiAvL25vbmUKIC8vCiAvLyBDU1NfUFJPUF9ESVNQTEFZOgotLy8gVGhlIG9yZGVyIGhlcmUgbXVz
dCBtYXRjaCB0aGUgb3JkZXIgb2YgdGhlIEVEaXNwbGF5IGVudW0gaW4gUmVuZGVyU3R5bGVDb25z
dGFudHMuaC4KKy8vIFRoZSBvcmRlciBoZXJlIG11c3QgbWF0Y2ggdGhlIG9yZGVyIG9mIHRoZSBE
aXNwbGF5VHlwZSBlbnVtIGluIFJlbmRlclN0eWxlQ29uc3RhbnRzLmguCiAvLwogaW5saW5lCiBi
bG9jawpAQCAtNDI2LDcgKzQyNiw3IEBAIGlubGluZS1ncmlkCiAvL25vbmUKIC8vCiAvLyBDU1Nf
UFJPUF9DVVJTT1I6Ci0vLyBUaGUgb3JkZXIgaGVyZSBtdXN0IG1hdGNoIHRoZSBvcmRlciBvZiB0
aGUgRUN1cnNvciBlbnVtIGluIFJlbmRlclN0eWxlQ29uc3RhbnRzLmguCisvLyBUaGUgb3JkZXIg
aGVyZSBtdXN0IG1hdGNoIHRoZSBvcmRlciBvZiB0aGUgQ3Vyc29yVHlwZSBlbnVtIGluIFJlbmRl
clN0eWxlQ29uc3RhbnRzLmguCiAvLwogYXV0bwogZGVmYXVsdApJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDAsNyArMTQwLDcgQEAgaW5saW5lIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OmFk
ZEVsZQogdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMoY29u
c3QgTWF0Y2hSZXF1ZXN0JiBtYXRjaFJlcXVlc3QsIFN0eWxlUmVzb2x2ZXI6OlJ1bGVSYW5nZSYg
cnVsZVJhbmdlKQogewogICAgIEFTU0VSVChtYXRjaFJlcXVlc3QucnVsZVNldCk7Ci0gICAgQVNT
RVJUX1dJVEhfTUVTU0FHRSghKG1fbW9kZSA9PSBTZWxlY3RvckNoZWNrZXI6Ok1vZGU6OkNvbGxl
Y3RpbmdSdWxlc0lnbm9yaW5nVmlydHVhbFBzZXVkb0VsZW1lbnRzICYmIG1fcHNldWRvU3R5bGVS
ZXF1ZXN0LnBzZXVkb0lkICE9IE5PUFNFVURPKSwgIldoZW4gaW4gU3R5bGVJbnZhbGlkYXRpb24g
b3IgU2hhcmluZ1J1bGVzLCBTZWxlY3RvckNoZWNrZXIgZG9lcyBub3QgdHJ5IHRvIG1hdGNoIHRo
ZSBwc2V1ZG8gSUQuIFdoaWxlIEVsZW1lbnRSdWxlQ29sbGVjdG9yIHN1cHBvcnRzIG1hdGNoaW5n
IGEgcGFydGljdWxhciBwc2V1ZG9JZCBpbiB0aGlzIGNhc2UsIHRoaXMgd291bGQgaW5kaWNhdGUg
YSBlcnJvciBhdCB0aGUgY2FsbCBzaXRlIHNpbmNlIG1hdGNoaW5nIGEgcGFydGljdWxhciBlbGVt
ZW50IHNob3VsZCBiZSB1bm5lY2Vzc2FyeS4iKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCEo
bV9tb2RlID09IFNlbGVjdG9yQ2hlY2tlcjo6TW9kZTo6Q29sbGVjdGluZ1J1bGVzSWdub3JpbmdW
aXJ0dWFsUHNldWRvRWxlbWVudHMgJiYgbV9wc2V1ZG9TdHlsZVJlcXVlc3QucHNldWRvSWQgIT0g
UHNldWRvSWQ6Ok5vbmUpLCAiV2hlbiBpbiBTdHlsZUludmFsaWRhdGlvbiBvciBTaGFyaW5nUnVs
ZXMsIFNlbGVjdG9yQ2hlY2tlciBkb2VzIG5vdCB0cnkgdG8gbWF0Y2ggdGhlIHBzZXVkbyBJRC4g
V2hpbGUgRWxlbWVudFJ1bGVDb2xsZWN0b3Igc3VwcG9ydHMgbWF0Y2hpbmcgYSBwYXJ0aWN1bGFy
IHBzZXVkb0lkIGluIHRoaXMgY2FzZSwgdGhpcyB3b3VsZCBpbmRpY2F0ZSBhIGVycm9yIGF0IHRo
ZSBjYWxsIHNpdGUgc2luY2UgbWF0Y2hpbmcgYSBwYXJ0aWN1bGFyIGVsZW1lbnQgc2hvdWxkIGJl
IHVubmVjZXNzYXJ5LiIpOwogCiAgICAgYXV0byogc2hhZG93Um9vdCA9IG1fZWxlbWVudC5jb250
YWluaW5nU2hhZG93Um9vdCgpOwogICAgIGlmIChzaGFkb3dSb290ICYmIHNoYWRvd1Jvb3QtPm1v
ZGUoKSA9PSBTaGFkb3dSb290TW9kZTo6VXNlckFnZW50KQpAQCAtMzYwLDcgKzM2MCw3IEBAIGlu
bGluZSBib29sIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpydWxlTWEKICAgICAvLyBUaGlzIGlzIGxp
bWl0ZWQgdG8gSFRNTCBvbmx5IHNvIHdlIGRvbid0IG5lZWQgdG8gY2hlY2sgdGhlIG5hbWVzcGFj
ZSAoYmVjYXVzZSBvZiB0YWcgbmFtZSBtYXRjaCkuCiAgICAgTWF0Y2hCYXNlZE9uUnVsZUhhc2gg
bWF0Y2hCYXNlZE9uUnVsZUhhc2ggPSBydWxlRGF0YS5tYXRjaEJhc2VkT25SdWxlSGFzaCgpOwog
ICAgIGlmIChtYXRjaEJhc2VkT25SdWxlSGFzaCAhPSBNYXRjaEJhc2VkT25SdWxlSGFzaDo6Tm9u
ZSAmJiBtX2VsZW1lbnQuaXNIVE1MRWxlbWVudCgpKSB7Ci0gICAgICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UobV9wc2V1ZG9TdHlsZVJlcXVlc3QucHNldWRvSWQgPT0gTk9QU0VVRE8sICJJZiB3ZSBt
YXRjaCBiYXNlZCBvbiB0aGUgcnVsZSBoYXNoIHdoaWxlIGNvbGxlY3RpbmcgZm9yIGEgcGFydGlj
dWxhciBwc2V1ZG8gZWxlbWVudCBJRCwgd2Ugd291bGQgYWRkIGluY29ycmVjdCBydWxlcyBmb3Ig
dGhhdCBwc2V1ZG8gZWxlbWVudCBJRC4gV2Ugc2hvdWxkIG5ldmVyIGVuZCBpbiBydWxlTWF0Y2hl
cygpIHdpdGggYSBwc2V1ZG8gZWxlbWVudCBpZiB0aGUgcnVsZURhdGEgY2Fubm90IG1hdGNoIGFu
eSBwc2V1ZG8gZWxlbWVudC4iKTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3BzZXVk
b1N0eWxlUmVxdWVzdC5wc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6Tm9uZSwgIklmIHdlIG1hdGNoIGJh
c2VkIG9uIHRoZSBydWxlIGhhc2ggd2hpbGUgY29sbGVjdGluZyBmb3IgYSBwYXJ0aWN1bGFyIHBz
ZXVkbyBlbGVtZW50IElELCB3ZSB3b3VsZCBhZGQgaW5jb3JyZWN0IHJ1bGVzIGZvciB0aGF0IHBz
ZXVkbyBlbGVtZW50IElELiBXZSBzaG91bGQgbmV2ZXIgZW5kIGluIHJ1bGVNYXRjaGVzKCkgd2l0
aCBhIHBzZXVkbyBlbGVtZW50IGlmIHRoZSBydWxlRGF0YSBjYW5ub3QgbWF0Y2ggYW55IHBzZXVk
byBlbGVtZW50LiIpOwogCiAgICAgICAgIHN3aXRjaCAobWF0Y2hCYXNlZE9uUnVsZUhhc2gpIHsK
ICAgICAgICAgY2FzZSBNYXRjaEJhc2VkT25SdWxlSGFzaDo6Tm9uZToKQEAgLTM5NSw3ICszOTUs
NyBAQCBpbmxpbmUgYm9vbCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6cnVsZU1hCiAgICAgICAgIGF1
dG8gc2VsZWN0b3JDaGVja2VyID0gU2VsZWN0b3JDb21waWxlcjo6cnVsZUNvbGxlY3RvclNpbXBs
ZVNlbGVjdG9yQ2hlY2tlckZ1bmN0aW9uKGNvbXBpbGVkU2VsZWN0b3JDaGVja2VyLCBjb21waWxl
ZFNlbGVjdG9yLnN0YXR1cyk7CiAjaWYgIUFTU0VSVF9NU0dfRElTQUJMRUQKICAgICAgICAgdW5z
aWduZWQgaWdub3JlU3BlY2lmaWNpdHk7Ci0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXNl
bGVjdG9yQ2hlY2tlcigmbV9lbGVtZW50LCAmaWdub3JlU3BlY2lmaWNpdHkpIHx8IG1fcHNldWRv
U3R5bGVSZXF1ZXN0LnBzZXVkb0lkID09IE5PUFNFVURPLCAiV2hlbiBtYXRjaGluZyBwc2V1ZG8g
ZWxlbWVudHMsIHdlIHNob3VsZCBuZXZlciBjb21waWxlIGEgc2VsZWN0b3IgY2hlY2tlciB3aXRo
b3V0IGNvbnRleHQgdW5sZXNzIGl0IGNhbm5vdCBtYXRjaCBhbnl0aGluZy4iKTsKKyAgICAgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRSghc2VsZWN0b3JDaGVja2VyKCZtX2VsZW1lbnQsICZpZ25vcmVT
cGVjaWZpY2l0eSkgfHwgbV9wc2V1ZG9TdHlsZVJlcXVlc3QucHNldWRvSWQgPT0gUHNldWRvSWQ6
Ok5vbmUsICJXaGVuIG1hdGNoaW5nIHBzZXVkbyBlbGVtZW50cywgd2Ugc2hvdWxkIG5ldmVyIGNv
bXBpbGUgYSBzZWxlY3RvciBjaGVja2VyIHdpdGhvdXQgY29udGV4dCB1bmxlc3MgaXQgY2Fubm90
IG1hdGNoIGFueXRoaW5nLiIpOwogI2VuZGlmCiAjaWYgQ1NTX1NFTEVDVE9SX0pJVF9QUk9GSUxJ
TkcKICAgICAgICAgcnVsZURhdGEuY29tcGlsZWRTZWxlY3RvclVzZWQoKTsKQEAgLTQ1OCw3ICs0
NTgsNyBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0TWF0Y2hpCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMCwgc2l6ZSA9IHJ1bGVzLT5zaXplKCk7IGkgPCBzaXplOyArK2kpIHsK
ICAgICAgICAgY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhID0gcnVsZXMtPmRhdGEoKVtpXTsKIAot
ICAgICAgICBpZiAoIXJ1bGVEYXRhLmNhbk1hdGNoUHNldWRvRWxlbWVudCgpICYmIG1fcHNldWRv
U3R5bGVSZXF1ZXN0LnBzZXVkb0lkICE9IE5PUFNFVURPKQorICAgICAgICBpZiAoIXJ1bGVEYXRh
LmNhbk1hdGNoUHNldWRvRWxlbWVudCgpICYmIG1fcHNldWRvU3R5bGVSZXF1ZXN0LnBzZXVkb0lk
ICE9IFBzZXVkb0lkOjpOb25lKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYg
KG1fc2VsZWN0b3JGaWx0ZXIgJiYgbV9zZWxlY3RvckZpbHRlci0+ZmFzdFJlamVjdFNlbGVjdG9y
KHJ1bGVEYXRhLmRlc2NlbmRhbnRTZWxlY3RvcklkZW50aWZpZXJIYXNoZXMoKSkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAkocmV2aXNpb24gMjMyMTIz
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBTZWxlY3RvckZpbHRl
ciogbV9zZWxlY3RvckZpbHRlciB7IG51bGxwdHIgfTsKIAogICAgIGJvb2wgbV9pc1ByaW50U3R5
bGUgeyBmYWxzZSB9OwotICAgIFBzZXVkb1N0eWxlUmVxdWVzdCBtX3BzZXVkb1N0eWxlUmVxdWVz
dCB7IE5PUFNFVURPIH07CisgICAgUHNldWRvU3R5bGVSZXF1ZXN0IG1fcHNldWRvU3R5bGVSZXF1
ZXN0IHsgUHNldWRvSWQ6Ok5vbmUgfTsKICAgICBTZWxlY3RvckNoZWNrZXI6Ok1vZGUgbV9tb2Rl
IHsgU2VsZWN0b3JDaGVja2VyOjpNb2RlOjpSZXNvbHZpbmdTdHlsZSB9OwogICAgIGJvb2wgbV9p
c01hdGNoaW5nU2xvdHRlZFBzZXVkb0VsZW1lbnRzIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNN
YXRjaGluZ0hvc3RQc2V1ZG9DbGFzcyB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvU2VsZWN0b3JDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
U2VsZWN0b3JDaGVja2VyLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NSwxNSArMTg1LDE1
IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjptYXRjaChjb25zdCBDU1NTZWwKICAgICBNYXRjaFJl
c3VsdCByZXN1bHQgPSBtYXRjaFJlY3Vyc2l2ZWx5KGNoZWNraW5nQ29udGV4dCwgY29udGV4dCwg
cHNldWRvSWRTZXQsIHNwZWNpZmljaXR5KTsKICAgICBpZiAocmVzdWx0Lm1hdGNoICE9IE1hdGNo
OjpTZWxlY3Rvck1hdGNoZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoY2hlY2tp
bmdDb250ZXh0LnBzZXVkb0lkICE9IE5PUFNFVURPICYmICFwc2V1ZG9JZFNldC5oYXMoY2hlY2tp
bmdDb250ZXh0LnBzZXVkb0lkKSkKKyAgICBpZiAoY2hlY2tpbmdDb250ZXh0LnBzZXVkb0lkICE9
IFBzZXVkb0lkOjpOb25lICYmICFwc2V1ZG9JZFNldC5oYXMoY2hlY2tpbmdDb250ZXh0LnBzZXVk
b0lkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGNoZWNraW5nQ29udGV4dC5w
c2V1ZG9JZCA9PSBOT1BTRVVETyAmJiBwc2V1ZG9JZFNldCkgewotICAgICAgICBQc2V1ZG9JZFNl
dCBwdWJsaWNQc2V1ZG9JZFNldCA9IHBzZXVkb0lkU2V0ICYgUHNldWRvSWRTZXQ6OmZyb21NYXNr
KFBVQkxJQ19QU0VVRE9JRF9NQVNLKTsKKyAgICBpZiAoY2hlY2tpbmdDb250ZXh0LnBzZXVkb0lk
ID09IFBzZXVkb0lkOjpOb25lICYmIHBzZXVkb0lkU2V0KSB7CisgICAgICAgIFBzZXVkb0lkU2V0
IHB1YmxpY1BzZXVkb0lkU2V0ID0gcHNldWRvSWRTZXQgJiBQc2V1ZG9JZFNldDo6ZnJvbU1hc2so
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBzZXVkb0lkOjpQdWJsaWNQc2V1ZG9JZE1hc2spKTsKICAg
ICAgICAgaWYgKGNoZWNraW5nQ29udGV4dC5yZXNvbHZpbmdNb2RlID09IE1vZGU6OlJlc29sdmlu
Z1N0eWxlICYmIHB1YmxpY1BzZXVkb0lkU2V0KQogICAgICAgICAgICAgY2hlY2tpbmdDb250ZXh0
LnBzZXVkb0lEU2V0ID0gcHVibGljUHNldWRvSWRTZXQ7CiAKLSAgICAgICAgLy8gV2hlbiBpZ25v
cmluZyB2aXJ0dWFsIHBzZXVkbyBlbGVtZW50cywgdGhlIGNvbnRleHQncyBwc2V1ZG8gc2hvdWxk
IGFsc28gYmUgTk9QU0VVRE8gYnV0IHRoYXQgZG9lcworICAgICAgICAvLyBXaGVuIGlnbm9yaW5n
IHZpcnR1YWwgcHNldWRvIGVsZW1lbnRzLCB0aGUgY29udGV4dCdzIHBzZXVkbyBzaG91bGQgYWxz
byBiZSBQc2V1ZG9JZDo6Tm9uZSBidXQgdGhhdCBkb2VzCiAgICAgICAgIC8vIG5vdCBjYXVzZSBh
IGZhaWx1cmUuCiAgICAgICAgIHJldHVybiBjaGVja2luZ0NvbnRleHQucmVzb2x2aW5nTW9kZSA9
PSBNb2RlOjpDb2xsZWN0aW5nUnVsZXNJZ25vcmluZ1ZpcnR1YWxQc2V1ZG9FbGVtZW50cyB8fCBy
ZXN1bHQubWF0Y2hUeXBlID09IE1hdGNoVHlwZTo6RWxlbWVudDsKICAgICB9CkBAIC0yMDgsNyAr
MjA4LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6Om1hdGNoSG9zdFBzZXVkb0NsYQogICAgIHNw
ZWNpZmljaXR5ID0gc2VsZWN0b3Iuc2ltcGxlU2VsZWN0b3JTcGVjaWZpY2l0eSgpOwogCiAgICAg
aWYgKGF1dG8qIHNlbGVjdG9yTGlzdCA9IHNlbGVjdG9yLnNlbGVjdG9yTGlzdCgpKSB7Ci0gICAg
ICAgIExvY2FsQ29udGV4dCBjb250ZXh0KCpzZWxlY3Rvckxpc3QtPmZpcnN0KCksIGVsZW1lbnQs
IFZpc2l0ZWRNYXRjaFR5cGU6OkVuYWJsZWQsIE5PUFNFVURPKTsKKyAgICAgICAgTG9jYWxDb250
ZXh0IGNvbnRleHQoKnNlbGVjdG9yTGlzdC0+Zmlyc3QoKSwgZWxlbWVudCwgVmlzaXRlZE1hdGNo
VHlwZTo6RW5hYmxlZCwgUHNldWRvSWQ6Ok5vbmUpOwogICAgICAgICBjb250ZXh0LmluRnVuY3Rp
b25hbFBzZXVkb0NsYXNzID0gdHJ1ZTsKICAgICAgICAgY29udGV4dC5wc2V1ZG9FbGVtZW50RWZm
ZWN0aXZlID0gZmFsc2U7CiAgICAgICAgIFBzZXVkb0lkU2V0IGlnbm9yZUR5bmFtaWNQc2V1ZG87
CkBAIC0yMjIsMTMgKzIyMiwxMyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6bWF0Y2hIb3N0UHNl
dWRvQ2xhCiAKIGlubGluZSBzdGF0aWMgYm9vbCBoYXNTY3JvbGxiYXJQc2V1ZG9FbGVtZW50KGNv
bnN0IFBzZXVkb0lkU2V0JiBkeW5hbWljUHNldWRvSWRTZXQpCiB7Ci0gICAgUHNldWRvSWRTZXQg
c2Nyb2xsYmFySWRTZXQgPSB7IFNDUk9MTEJBUiwgU0NST0xMQkFSX1RIVU1CLCBTQ1JPTExCQVJf
QlVUVE9OLCBTQ1JPTExCQVJfVFJBQ0ssIFNDUk9MTEJBUl9UUkFDS19QSUVDRSwgU0NST0xMQkFS
X0NPUk5FUiB9OworICAgIFBzZXVkb0lkU2V0IHNjcm9sbGJhcklkU2V0ID0geyBQc2V1ZG9JZDo6
U2Nyb2xsYmFyLCBQc2V1ZG9JZDo6U2Nyb2xsYmFyVGh1bWIsIFBzZXVkb0lkOjpTY3JvbGxiYXJC
dXR0b24sIFBzZXVkb0lkOjpTY3JvbGxiYXJUcmFjaywgUHNldWRvSWQ6OlNjcm9sbGJhclRyYWNr
UGllY2UsIFBzZXVkb0lkOjpTY3JvbGxiYXJDb3JuZXIgfTsKICAgICBpZiAoZHluYW1pY1BzZXVk
b0lkU2V0ICYgc2Nyb2xsYmFySWRTZXQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgLy8g
UkVTSVpFUiBkb2VzIG5vdCBhbHdheXMgaGF2ZSBhIHNjcm9sbGJhciBidXQgaXQgaXMgYSBzY3Jv
bGxiYXItbGlrZSBwc2V1ZG8gZWxlbWVudAorICAgIC8vIFBzZXVkb0lkOjpSZXNpemVyIGRvZXMg
bm90IGFsd2F5cyBoYXZlIGEgc2Nyb2xsYmFyIGJ1dCBpdCBpcyBhIHNjcm9sbGJhci1saWtlIHBz
ZXVkbyBlbGVtZW50CiAgICAgLy8gYmVjYXVzZSBpdCBjYW4gaGF2ZSBtb3JlIHRoYW4gb25lIHBz
ZXVkbyBlbGVtZW50LgotICAgIHJldHVybiBkeW5hbWljUHNldWRvSWRTZXQuaGFzKFJFU0laRVIp
OworICAgIHJldHVybiBkeW5hbWljUHNldWRvSWRTZXQuaGFzKFBzZXVkb0lkOjpSZXNpemVyKTsK
IH0KIAogc3RhdGljIFNlbGVjdG9yQ2hlY2tlcjo6TG9jYWxDb250ZXh0IGxvY2FsQ29udGV4dEZv
clBhcmVudChjb25zdCBTZWxlY3RvckNoZWNrZXI6OkxvY2FsQ29udGV4dCYgY29udGV4dCkKQEAg
LTI5Myw3ICsyOTMsNyBAQCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoUmVzdWx0IFNlbGVjdG9yQ2hl
CiAgICAgICAgICAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0OjpmYWlscyhNYXRjaDo6U2VsZWN0
b3JGYWlsc0NvbXBsZXRlbHkpOwogCiAgICAgICAgICAgICBQc2V1ZG9JZCBwc2V1ZG9JZCA9IENT
U1NlbGVjdG9yOjpwc2V1ZG9JZChjb250ZXh0LnNlbGVjdG9yLT5wc2V1ZG9FbGVtZW50VHlwZSgp
KTsKLSAgICAgICAgICAgIGlmIChwc2V1ZG9JZCAhPSBOT1BTRVVETykKKyAgICAgICAgICAgIGlm
IChwc2V1ZG9JZCAhPSBQc2V1ZG9JZDo6Tm9uZSkKICAgICAgICAgICAgICAgICBkeW5hbWljUHNl
dWRvSWRTZXQuYWRkKHBzZXVkb0lkKTsKICAgICAgICAgICAgIG1hdGNoVHlwZSA9IE1hdGNoVHlw
ZTo6VmlydHVhbFBzZXVkb0VsZW1lbnRPbmx5OwogICAgICAgICB9CkBAIC0zMTIsMTQgKzMxMiwx
NCBAQCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoUmVzdWx0IFNlbGVjdG9yQ2hlCiAKICAgICBpZiAo
cmVsYXRpb24gIT0gQ1NTU2VsZWN0b3I6OlN1YnNlbGVjdG9yKSB7CiAgICAgICAgIC8vIEJhaWwt
b3V0IGlmIHRoaXMgc2VsZWN0b3IgaXMgaXJyZWxldmFudCBmb3IgdGhlIHBzZXVkb0lkCi0gICAg
ICAgIGlmIChjb250ZXh0LnBzZXVkb0lkICE9IE5PUFNFVURPICYmICFkeW5hbWljUHNldWRvSWRT
ZXQuaGFzKGNvbnRleHQucHNldWRvSWQpKQorICAgICAgICBpZiAoY29udGV4dC5wc2V1ZG9JZCAh
PSBQc2V1ZG9JZDo6Tm9uZSAmJiAhZHluYW1pY1BzZXVkb0lkU2V0Lmhhcyhjb250ZXh0LnBzZXVk
b0lkKSkKICAgICAgICAgICAgIHJldHVybiBNYXRjaFJlc3VsdDo6ZmFpbHMoTWF0Y2g6OlNlbGVj
dG9yRmFpbHNDb21wbGV0ZWx5KTsKIAogICAgICAgICAvLyBEaXNhYmxlIDp2aXNpdGVkIG1hdGNo
aW5nIHdoZW4gd2UgdHJ5IHRvIG1hdGNoIGFueXRoaW5nIGVsc2UgdGhhbiBhbiBhbmNlc3RvcnMu
CiAgICAgICAgIGlmICghY29udGV4dC5zZWxlY3Rvci0+aGFzRGVzY2VuZGFudE9yQ2hpbGRSZWxh
dGlvbigpKQogICAgICAgICAgICAgbmV4dENvbnRleHQudmlzaXRlZE1hdGNoVHlwZSA9IFZpc2l0
ZWRNYXRjaFR5cGU6OkRpc2FibGVkOwogCi0gICAgICAgIG5leHRDb250ZXh0LnBzZXVkb0lkID0g
Tk9QU0VVRE87CisgICAgICAgIG5leHRDb250ZXh0LnBzZXVkb0lkID0gUHNldWRvSWQ6Ok5vbmU7
CiAgICAgICAgIC8vIFZpcnR1YWwgcHNldWRvIGVsZW1lbnQgaXMgb25seSBlZmZlY3RpdmUgaW4g
dGhlIHJpZ2h0bW9zdCBmcmFnbWVudC4KICAgICAgICAgbmV4dENvbnRleHQucHNldWRvRWxlbWVu
dEVmZmVjdGl2ZSA9IGZhbHNlOwogICAgICAgICBuZXh0Q29udGV4dC5pc01hdGNoRWxlbWVudCA9
IGZhbHNlOwpAQCAtNDEzLDcgKzQxMyw3IEBAIFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hSZXN1bHQg
U2VsZWN0b3JDaGUKICAgICAgICAgICAgIC8vIFdlIG1ha2UgYW4gZXhjZXB0aW9uIGZvciBzY3Jv
bGxiYXIgcHNldWRvIGVsZW1lbnRzIGFuZCBhbGxvdyBhIHNldCBvZiBwc2V1ZG8gY2xhc3NlcyAo
YnV0IG5vdGhpbmcgZWxzZSkKICAgICAgICAgICAgIC8vIHRvIGZvbGxvdyB0aGUgcHNldWRvIGVs
ZW1lbnRzLgogICAgICAgICAgICAgbmV4dENvbnRleHQuaGFzU2Nyb2xsYmFyUHNldWRvID0gaGFz
U2Nyb2xsYmFyUHNldWRvRWxlbWVudChkeW5hbWljUHNldWRvSWRTZXQpOwotICAgICAgICAgICAg
bmV4dENvbnRleHQuaGFzU2VsZWN0aW9uUHNldWRvID0gZHluYW1pY1BzZXVkb0lkU2V0LmhhcyhT
RUxFQ1RJT04pOworICAgICAgICAgICAgbmV4dENvbnRleHQuaGFzU2VsZWN0aW9uUHNldWRvID0g
ZHluYW1pY1BzZXVkb0lkU2V0LmhhcyhQc2V1ZG9JZDo6U2VsZWN0aW9uKTsKICAgICAgICAgICAg
IGlmICgoY29udGV4dC5pc01hdGNoRWxlbWVudCB8fCBjaGVja2luZ0NvbnRleHQucmVzb2x2aW5n
TW9kZSA9PSBNb2RlOjpDb2xsZWN0aW5nUnVsZXMpICYmIGR5bmFtaWNQc2V1ZG9JZFNldAogICAg
ICAgICAgICAgICAgICYmICFuZXh0Q29udGV4dC5oYXNTZWxlY3Rpb25Qc2V1ZG8KICAgICAgICAg
ICAgICAgICAmJiAhKG5leHRDb250ZXh0Lmhhc1Njcm9sbGJhclBzZXVkbyAmJiBuZXh0Q29udGV4
dC5zZWxlY3Rvci0+bWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpKQpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAkocmV2aXNpb24gMjMyMTIzKQorKysgU291
cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3
ICs3OSw3IEBAIHB1YmxpYzoKICAgICAgICAgeyB9CiAKICAgICAgICAgY29uc3QgU2VsZWN0b3JD
aGVja2VyOjpNb2RlIHJlc29sdmluZ01vZGU7Ci0gICAgICAgIFBzZXVkb0lkIHBzZXVkb0lkIHsg
Tk9QU0VVRE8gfTsKKyAgICAgICAgUHNldWRvSWQgcHNldWRvSWQgeyBQc2V1ZG9JZDo6Tm9uZSB9
OwogICAgICAgICBSZW5kZXJTY3JvbGxiYXIqIHNjcm9sbGJhciB7IG51bGxwdHIgfTsKICAgICAg
ICAgU2Nyb2xsYmFyUGFydCBzY3JvbGxiYXJQYXJ0IHsgTm9QYXJ0IH07CiAgICAgICAgIGNvbnN0
IENvbnRhaW5lck5vZGUqIHNjb3BlIHsgbnVsbHB0ciB9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04
MSw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIGNvbnZlcnRTdHJpbmdPckF1
dG8oU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIFN0cmluZyBj
b252ZXJ0U3RyaW5nT3JOb25lKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogICAg
IHN0YXRpYyBUZXh0RW1waGFzaXNQb3NpdGlvbiBjb252ZXJ0VGV4dEVtcGhhc2lzUG9zaXRpb24o
U3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIEVUZXh0QWxpZ24g
Y29udmVydFRleHRBbGlnbihTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBz
dGF0aWMgVGV4dEFsaWduTW9kZSBjb252ZXJ0VGV4dEFsaWduKFN0eWxlUmVzb2x2ZXImLCBjb25z
dCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+IGNvbnZl
cnRDbGlwUGF0aChTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMg
UmVzaXplIGNvbnZlcnRSZXNpemUoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CiAg
ICAgc3RhdGljIGludCBjb252ZXJ0TWFycXVlZVJlcGV0aXRpb24oU3R5bGVSZXNvbHZlciYsIGNv
bnN0IENTU1ZhbHVlJik7CkBAIC01MDIsNyArNTAyLDcgQEAgaW5saW5lIFRleHRFbXBoYXNpc1Bv
c2l0aW9uIFN0eWxlQnVpbGRlcgogICAgIHJldHVybiBwb3NpdGlvbjsKIH0KIAotaW5saW5lIEVU
ZXh0QWxpZ24gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dEFsaWduKFN0eWxlUmVz
b2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBUZXh0
QWxpZ25Nb2RlIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRBbGlnbihTdHlsZVJl
c29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0
byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwog
ICAgIEFTU0VSVChwcmltaXRpdmVWYWx1ZS5pc1ZhbHVlSUQoKSk7CkBAIC01MTEsMTAgKzUxMSwx
MCBAQCBpbmxpbmUgRVRleHRBbGlnbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6CiAgICAgICAgIHJl
dHVybiBwcmltaXRpdmVWYWx1ZTsKIAogICAgIGF1dG8qIHBhcmVudFN0eWxlID0gc3R5bGVSZXNv
bHZlci5wYXJlbnRTdHlsZSgpOwotICAgIGlmIChwYXJlbnRTdHlsZS0+dGV4dEFsaWduKCkgPT0g
VEFTVEFSVCkKLSAgICAgICAgcmV0dXJuIHBhcmVudFN0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKCkgPyBMRUZUIDogUklHSFQ7Ci0gICAgaWYgKHBhcmVudFN0eWxlLT50ZXh0QWxpZ24oKSA9
PSBUQUVORCkKLSAgICAgICAgcmV0dXJuIHBhcmVudFN0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKCkgPyBSSUdIVCA6IExFRlQ7CisgICAgaWYgKHBhcmVudFN0eWxlLT50ZXh0QWxpZ24oKSA9
PSBUZXh0QWxpZ25Nb2RlOjpTdGFydCkKKyAgICAgICAgcmV0dXJuIHBhcmVudFN0eWxlLT5pc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBUZXh0QWxpZ25Nb2RlOjpMZWZ0IDogVGV4dEFsaWduTW9k
ZTo6UmlnaHQ7CisgICAgaWYgKHBhcmVudFN0eWxlLT50ZXh0QWxpZ24oKSA9PSBUZXh0QWxpZ25N
b2RlOjpFbmQpCisgICAgICAgIHJldHVybiBwYXJlbnRTdHlsZS0+aXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpID8gVGV4dEFsaWduTW9kZTo6UmlnaHQgOiBUZXh0QWxpZ25Nb2RlOjpMZWZ0OwogICAg
IHJldHVybiBwYXJlbnRTdHlsZS0+dGV4dEFsaWduKCk7CiB9CiAKQEAgLTUzMiw3ICs1MzIsNyBA
QCBpbmxpbmUgUmVmUHRyPENsaXBQYXRoT3BlcmF0aW9uPiBTdHlsZUJ1CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIENTU0JveFR5cGUgcmVmZXJlbmNlQm94ID0gQm94TWlz
c2luZzsKKyAgICBDU1NCb3hUeXBlIHJlZmVyZW5jZUJveCA9IENTU0JveFR5cGU6OkJveE1pc3Np
bmc7CiAgICAgUmVmUHRyPENsaXBQYXRoT3BlcmF0aW9uPiBvcGVyYXRpb247CiAKICAgICBmb3Ig
KGF1dG8mIGN1cnJlbnRWYWx1ZSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CkBA
IC01NDgsMTQgKzU0OCwxNCBAQCBpbmxpbmUgUmVmUHRyPENsaXBQYXRoT3BlcmF0aW9uPiBTdHls
ZUJ1CiAgICAgICAgICAgICAgICAgfHwgcHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1Zh
bHVlRmlsbAogICAgICAgICAgICAgICAgIHx8IHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBD
U1NWYWx1ZVN0cm9rZQogICAgICAgICAgICAgICAgIHx8IHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQo
KSA9PSBDU1NWYWx1ZVZpZXdCb3gpOwotICAgICAgICAgICAgQVNTRVJUKHJlZmVyZW5jZUJveCA9
PSBCb3hNaXNzaW5nKTsKKyAgICAgICAgICAgIEFTU0VSVChyZWZlcmVuY2VCb3ggPT0gQ1NTQm94
VHlwZTo6Qm94TWlzc2luZyk7CiAgICAgICAgICAgICByZWZlcmVuY2VCb3ggPSBwcmltaXRpdmVW
YWx1ZTsKICAgICAgICAgfQogICAgIH0KICAgICBpZiAob3BlcmF0aW9uKQogICAgICAgICBkb3du
Y2FzdDxTaGFwZUNsaXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0aW9uKS5zZXRSZWZlcmVuY2VCb3go
cmVmZXJlbmNlQm94KTsKICAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKHJlZmVyZW5jZUJveCAh
PSBCb3hNaXNzaW5nKTsKKyAgICAgICAgQVNTRVJUKHJlZmVyZW5jZUJveCAhPSBDU1NCb3hUeXBl
OjpCb3hNaXNzaW5nKTsKICAgICAgICAgb3BlcmF0aW9uID0gQm94Q2xpcFBhdGhPcGVyYXRpb246
OmNyZWF0ZShyZWZlcmVuY2VCb3gpOwogICAgIH0KIApAQCAtNzc1LDcgKzc3NSw3IEBAIGlubGlu
ZSBSZWZQdHI8U2hhcGVWYWx1ZT4gU3R5bGVCdWlsZGVyQ28KICAgICAgICAgcmV0dXJuIFNoYXBl
VmFsdWU6OmNyZWF0ZShzdHlsZVJlc29sdmVyLnN0eWxlSW1hZ2UodmFsdWUpLnJlbGVhc2VOb25O
dWxsKCkpOwogCiAgICAgUmVmUHRyPEJhc2ljU2hhcGU+IHNoYXBlOwotICAgIENTU0JveFR5cGUg
cmVmZXJlbmNlQm94ID0gQm94TWlzc2luZzsKKyAgICBDU1NCb3hUeXBlIHJlZmVyZW5jZUJveCA9
IENTU0JveFR5cGU6OkJveE1pc3Npbmc7CiAgICAgZm9yIChhdXRvJiBjdXJyZW50VmFsdWUgOiBk
b3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgewogICAgICAgICBhdXRvJiBwcmltaXRpdmVW
YWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpOwog
ICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNTaGFwZSgpKQpAQCAtNzk0LDcgKzc5NCw3IEBA
IGlubGluZSBSZWZQdHI8U2hhcGVWYWx1ZT4gU3R5bGVCdWlsZGVyQ28KICAgICBpZiAoc2hhcGUp
CiAgICAgICAgIHJldHVybiBTaGFwZVZhbHVlOjpjcmVhdGUoc2hhcGUucmVsZWFzZU5vbk51bGwo
KSwgcmVmZXJlbmNlQm94KTsKIAotICAgIGlmIChyZWZlcmVuY2VCb3ggIT0gQm94TWlzc2luZykK
KyAgICBpZiAocmVmZXJlbmNlQm94ICE9IENTU0JveFR5cGU6OkJveE1pc3NpbmcpCiAgICAgICAg
IHJldHVybiBTaGFwZVZhbHVlOjpjcmVhdGUocmVmZXJlbmNlQm94KTsKIAogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpAQCAtOTIzLDcgKzkyMyw3IEBAIGlubGluZSBib29sIFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y3JlYXQKICAgICAgICAgICAgIHVuc2lnbmVkIGF1dG9SZXBlYXRJbmRleCA9
IDA7CiAgICAgICAgICAgICBDU1NWYWx1ZUlEIGF1dG9SZXBlYXRJRCA9IGRvd25jYXN0PENTU0dy
aWRBdXRvUmVwZWF0VmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSkuYXV0b1JlcGVhdElEKCk7CiAg
ICAgICAgICAgICBBU1NFUlQoYXV0b1JlcGVhdElEID09IENTU1ZhbHVlQXV0b0ZpbGwgfHwgYXV0
b1JlcGVhdElEID09IENTU1ZhbHVlQXV0b0ZpdCk7Ci0gICAgICAgICAgICB0cmFja3NEYXRhLm1f
YXV0b1JlcGVhdFR5cGUgPSBhdXRvUmVwZWF0SUQgPT0gQ1NTVmFsdWVBdXRvRmlsbCA/IEF1dG9G
aWxsIDogQXV0b0ZpdDsKKyAgICAgICAgICAgIHRyYWNrc0RhdGEubV9hdXRvUmVwZWF0VHlwZSA9
IGF1dG9SZXBlYXRJRCA9PSBDU1NWYWx1ZUF1dG9GaWxsID8gQXV0b1JlcGVhdFR5cGU6OkZpbGwg
OiBBdXRvUmVwZWF0VHlwZTo6Rml0OwogICAgICAgICAgICAgZm9yIChhdXRvJiBhdXRvUmVwZWF0
VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KGN1cnJlbnRWYWx1ZS5nZXQoKSkpIHsKICAg
ICAgICAgICAgICAgICBpZiAoaXM8Q1NTR3JpZExpbmVOYW1lc1ZhbHVlPihhdXRvUmVwZWF0VmFs
dWUpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUdyaWRMaW5lTmFtZXNMaXN0KGF1dG9S
ZXBlYXRWYWx1ZS5nZXQoKSwgYXV0b1JlcGVhdEluZGV4LCB0cmFja3NEYXRhLm1fYXV0b1JlcGVh
dE5hbWVkR3JpZExpbmVzLCB0cmFja3NEYXRhLm1fYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRM
aW5lcyk7CkBAIC0xMDc4LDcgKzEwNzgsNyBAQCBpbmxpbmUgR3JpZEF1dG9GbG93IFN0eWxlQnVp
bGRlckNvbnZlcnRlCiBpbmxpbmUgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNzc3RvTGVuZ3RoQ29udmVyc2lvbkRhdGFXaXRoVGV4dFpvb21GYWN0b3Io
U3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIHsKICAgICBpZiAoYXV0byogZnJhbWUgPSBz
dHlsZVJlc29sdmVyLmRvY3VtZW50KCkuZnJhbWUoKSkgewotICAgICAgICBmbG9hdCB0ZXh0Wm9v
bUZhY3RvciA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+dGV4dFpvb20oKSAhPSBUZXh0Wm9vbVJl
c2V0ID8gZnJhbWUtPnRleHRab29tRmFjdG9yKCkgOiAxLjBmOworICAgICAgICBmbG9hdCB0ZXh0
Wm9vbUZhY3RvciA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+dGV4dFpvb20oKSAhPSBUZXh0Wm9v
bTo6UmVzZXQgPyBmcmFtZS0+dGV4dFpvb21GYWN0b3IoKSA6IDEuMGY7CiAgICAgICAgIHJldHVy
biBzdHlsZVJlc29sdmVyLnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpLmNvcHlX
aXRoQWRqdXN0ZWRab29tKHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpICog
dGV4dFpvb21GYWN0b3IpOwogICAgIH0KICAgICByZXR1cm4gc3R5bGVSZXNvbHZlci5zdGF0ZSgp
LmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKTsKQEAgLTE0NjgsOSArMTQ2OCw5IEBAIGlubGlu
ZSBCcmVha0JldHdlZW4gU3R5bGVCdWlsZGVyQ29udmVydGUKIHsKICAgICBhdXRvJiBwcmltaXRp
dmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgaWYgKHBy
aW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUFsd2F5cykKLSAgICAgICAgcmV0dXJu
IFBhZ2VCcmVha0JldHdlZW47CisgICAgICAgIHJldHVybiBCcmVha0JldHdlZW46OlBhZ2U7CiAg
ICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF2b2lkKQotICAgICAg
ICByZXR1cm4gQXZvaWRQYWdlQnJlYWtCZXR3ZWVuOworICAgICAgICByZXR1cm4gQnJlYWtCZXR3
ZWVuOjpBdm9pZFBhZ2U7CiAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlOwogfQogCkBAIC0xNDc4
LDcgKzE0NzgsNyBAQCBpbmxpbmUgQnJlYWtJbnNpZGUgU3R5bGVCdWlsZGVyQ29udmVydGVyCiB7
CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFsdWUpOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdm9p
ZCkKLSAgICAgICAgcmV0dXJuIEF2b2lkUGFnZUJyZWFrSW5zaWRlOworICAgICAgICByZXR1cm4g
QnJlYWtJbnNpZGU6OkF2b2lkUGFnZTsKICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWU7CiB9CiAK
QEAgLTE0ODYsOSArMTQ4Niw5IEBAIGlubGluZSBCcmVha0JldHdlZW4gU3R5bGVCdWlsZGVyQ29u
dmVydGUKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSk7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NW
YWx1ZUFsd2F5cykKLSAgICAgICAgcmV0dXJuIENvbHVtbkJyZWFrQmV0d2VlbjsKKyAgICAgICAg
cmV0dXJuIEJyZWFrQmV0d2Vlbjo6Q29sdW1uOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1
ZUlEKCkgPT0gQ1NTVmFsdWVBdm9pZCkKLSAgICAgICAgcmV0dXJuIEF2b2lkQ29sdW1uQnJlYWtC
ZXR3ZWVuOworICAgICAgICByZXR1cm4gQnJlYWtCZXR3ZWVuOjpBdm9pZENvbHVtbjsKICAgICBy
ZXR1cm4gcHJpbWl0aXZlVmFsdWU7CiB9CiAKQEAgLTE0OTYsNyArMTQ5Niw3IEBAIGlubGluZSBC
cmVha0luc2lkZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIKIHsKICAgICBhdXRvJiBwcmltaXRpdmVW
YWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgaWYgKHByaW1p
dGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF2b2lkKQotICAgICAgICByZXR1cm4gQXZv
aWRDb2x1bW5CcmVha0luc2lkZTsKKyAgICAgICAgcmV0dXJuIEJyZWFrSW5zaWRlOjpBdm9pZENv
bHVtbjsKICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWU7CiB9CiAgICAgCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1
Niw3ICsxNTYsNyBAQCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUgPENTU1Byb3BlcnR5SUQgaWQ+
CiAgICAgc3RhdGljIHZvaWQgYXBwbHlUZXh0T3JCb3hTaGFkb3dWYWx1ZShTdHlsZVJlc29sdmVy
JiwgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRGlzcGxheVZhbHVlKFN0eWxl
UmVzb2x2ZXImLCBFRGlzcGxheSk7CisgICAgc3RhdGljIGJvb2wgaXNWYWxpZERpc3BsYXlWYWx1
ZShTdHlsZVJlc29sdmVyJiwgRGlzcGxheVR5cGUpOwogCiAgICAgZW51bSBDb3VudGVyQmVoYXZp
b3Ige0luY3JlbWVudCA9IDAsIFJlc2V0fTsKICAgICB0ZW1wbGF0ZSA8Q291bnRlckJlaGF2aW9y
IGNvdW50ZXJCZWhhdmlvcj4KQEAgLTM5NCw5ICszOTQsOSBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1
aWxkZXJDdXN0b206OmFwcGx5VmFsCiAgICAgZm9yIChhdXRvJiBpdGVtIDogZG93bmNhc3Q8Q1NT
VmFsdWVMaXN0Pih2YWx1ZSkpIHsKICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUmIHByaW1pdGl2
ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGl0ZW0uZ2V0KCkpOwogICAgICAg
ICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlRnJvbUltYWdlKQotICAg
ICAgICAgICAgc291cmNlID0gSW1hZ2VSZXNvbHV0aW9uRnJvbUltYWdlOworICAgICAgICAgICAg
c291cmNlID0gSW1hZ2VSZXNvbHV0aW9uU291cmNlOjpGcm9tSW1hZ2U7CiAgICAgICAgIGVsc2Ug
aWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZVNuYXApCi0gICAgICAgICAg
ICBzbmFwID0gSW1hZ2VSZXNvbHV0aW9uU25hcFBpeGVsczsKKyAgICAgICAgICAgIHNuYXAgPSBJ
bWFnZVJlc29sdXRpb25TbmFwOjpQaXhlbHM7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJl
c29sdXRpb24gPSBwcmltaXRpdmVWYWx1ZS5kb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX0RQUFgpOwogICAgIH0KQEAgLTY1Niw3ICs2NTYsNyBAQCBzdGF0aWMgaW5saW5lIGZsb2F0
IGNvbXB1dGVCYXNlU3BlY2lmaWVkCiB7CiAgICAgZmxvYXQgcmVzdWx0ID0gc3R5bGUuc3BlY2lm
aWVkRm9udFNpemUoKTsKICAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7Ci0gICAg
aWYgKGZyYW1lICYmIHN0eWxlLnRleHRab29tKCkgIT0gVGV4dFpvb21SZXNldCkKKyAgICBpZiAo
ZnJhbWUgJiYgc3R5bGUudGV4dFpvb20oKSAhPSBUZXh0Wm9vbTo6UmVzZXQpCiAgICAgICAgIHJl
c3VsdCAqPSBmcmFtZS0+dGV4dFpvb21GYWN0b3IoKTsKICAgICByZXN1bHQgKj0gc3R5bGUuZWZm
ZWN0aXZlWm9vbSgpOwogICAgIGlmIChwZXJjZW50YWdlQXV0b3NpemluZ0VuYWJsZWQpCkBAIC04
MTUsOSArODE1LDkgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbAog
ewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlTm9y
bWFsKQotICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRab29tKFRleHRab29t
Tm9ybWFsKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0Wm9vbShUZXh0
Wm9vbTo6Tm9ybWFsKTsKICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0g
Q1NTVmFsdWVSZXNldCkKLSAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0Wm9v
bShUZXh0Wm9vbVJlc2V0KTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0
Wm9vbShUZXh0Wm9vbTo6UmVzZXQpOwogICAgIHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5zZXRGb250
RGlydHkodHJ1ZSk7CiB9CiAKQEAgLTEwMDQsMjMgKzEwMDQsMjMgQEAgaW5saW5lIHZvaWQgU3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbAogICAgIHN0eWxlUmVzb2x2ZXIuc2V0Rm9udERlc2Ny
aXB0aW9uKGZvbnREZXNjcmlwdGlvbik7CiB9CiAKLWlubGluZSBib29sIFN0eWxlQnVpbGRlckN1
c3RvbTo6aXNWYWxpZERpc3BsYXlWYWx1ZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBF
RGlzcGxheSBkaXNwbGF5KQoraW5saW5lIGJvb2wgU3R5bGVCdWlsZGVyQ3VzdG9tOjppc1ZhbGlk
RGlzcGxheVZhbHVlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIERpc3BsYXlUeXBlIGRp
c3BsYXkpCiB7Ci0gICAgaWYgKGlzPFNWR0VsZW1lbnQ+KHN0eWxlUmVzb2x2ZXIuZWxlbWVudCgp
KSAmJiBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnN0eWxlVHlwZSgpID09IE5PUFNFVURPKQotICAg
ICAgICByZXR1cm4gZGlzcGxheSA9PSBJTkxJTkUgfHwgZGlzcGxheSA9PSBCTE9DSyB8fCBkaXNw
bGF5ID09IE5PTkU7CisgICAgaWYgKGlzPFNWR0VsZW1lbnQ+KHN0eWxlUmVzb2x2ZXIuZWxlbWVu
dCgpKSAmJiBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnN0eWxlVHlwZSgpID09IFBzZXVkb0lkOjpO
b25lKQorICAgICAgICByZXR1cm4gZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lIHx8IGRp
c3BsYXkgPT0gRGlzcGxheVR5cGU6OkJsb2NrIHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6Ok5v
bmU7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlJbmhlcml0RGlzcGxheShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQogewot
ICAgIEVEaXNwbGF5IGRpc3BsYXkgPSBzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPmRpc3Bs
YXkoKTsKKyAgICBEaXNwbGF5VHlwZSBkaXNwbGF5ID0gc3R5bGVSZXNvbHZlci5wYXJlbnRTdHls
ZSgpLT5kaXNwbGF5KCk7CiAgICAgaWYgKGlzVmFsaWREaXNwbGF5VmFsdWUoc3R5bGVSZXNvbHZl
ciwgZGlzcGxheSkpCiAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0RGlzcGxheShk
aXNwbGF5KTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVl
RGlzcGxheShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7
Ci0gICAgRURpc3BsYXkgZGlzcGxheSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSk7CisgICAgRGlzcGxheVR5cGUgZGlzcGxheSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSk7CiAgICAgaWYgKGlzVmFsaWREaXNwbGF5VmFsdWUoc3R5bGVSZXNvbHZlciwgZGlz
cGxheSkpCiAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0RGlzcGxheShkaXNwbGF5
KTsKIH0KQEAgLTExMTgsOCArMTExOCw4IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlWYWwKIAogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNTdHJpbmcoKSkg
ewotICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRFbXBoYXNpc0ZpbGwoVGV4
dEVtcGhhc2lzRmlsbEZpbGxlZCk7Ci0gICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0
VGV4dEVtcGhhc2lzTWFyayhUZXh0RW1waGFzaXNNYXJrQ3VzdG9tKTsKKyAgICAgICAgc3R5bGVS
ZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNGaWxsKFRleHRFbXBoYXNpc0ZpbGw6OkZp
bGxlZCk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzTWFy
ayhUZXh0RW1waGFzaXNNYXJrOjpDdXN0b20pOwogICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxl
KCktPnNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsocHJpbWl0aXZlVmFsdWUuc3RyaW5nVmFsdWUo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMTI4LDkgKzExMjgsOSBAQCBpbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsCiAKICAgICBpZiAocHJpbWl0aXZlVmFs
dWUudmFsdWVJRCgpID09IENTU1ZhbHVlRmlsbGVkIHx8IHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQo
KSA9PSBDU1NWYWx1ZU9wZW4pIHsKICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRU
ZXh0RW1waGFzaXNGaWxsKHByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgc3R5bGVSZXNvbHZlci5z
dHlsZSgpLT5zZXRUZXh0RW1waGFzaXNNYXJrKFRleHRFbXBoYXNpc01hcmtBdXRvKTsKKyAgICAg
ICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNNYXJrKFRleHRFbXBoYXNp
c01hcms6OkF1dG8pOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUo
KS0+c2V0VGV4dEVtcGhhc2lzRmlsbChUZXh0RW1waGFzaXNGaWxsRmlsbGVkKTsKKyAgICAgICAg
c3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNGaWxsKFRleHRFbXBoYXNpc0Zp
bGw6OkZpbGxlZCk7CiAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dEVtcGhh
c2lzTWFyayhwcmltaXRpdmVWYWx1ZSk7CiAgICAgfQogfQpAQCAtMTIxOSwxMyArMTIxOSwxMyBA
QCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsCiB7CiAgICAgc3R5bGVS
ZXNvbHZlci5zdHlsZSgpLT5jbGVhckN1cnNvckxpc3QoKTsKICAgICBpZiAoaXM8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKSkgewotICAgICAgICBFQ3Vyc29yIGN1cnNvciA9IGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CisgICAgICAgIEN1cnNvclR5cGUgY3Vyc29yID0gZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICAgICAgaWYgKHN0eWxlUmVzb2x2
ZXIuc3R5bGUoKS0+Y3Vyc29yKCkgIT0gY3Vyc29yKQogICAgICAgICAgICAgc3R5bGVSZXNvbHZl
ci5zdHlsZSgpLT5zZXRDdXJzb3IoY3Vyc29yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Q3Vyc29yKEN1cnNvckF1dG8pOworICAgIHN0
eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Q3Vyc29yKEN1cnNvclR5cGU6OkF1dG8pOwogICAgIGF1
dG8mIGxpc3QgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKTsKICAgICBmb3IgKGF1dG8m
IGl0ZW0gOiBsaXN0KSB7CiAgICAgICAgIGlmIChpczxDU1NDdXJzb3JJbWFnZVZhbHVlPihpdGVt
KSkgewpAQCAtMTQxNCw3ICsxNDE0LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9t
OjphcHBseVZhbAogICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIGlm
IChjb250ZW50VmFsdWUuaXNBdHRyKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBDYW4gYSBu
YW1lc3BhY2UgYmUgc3BlY2lmaWVkIGZvciBhbiBhdHRyKGZvbyk/Ci0gICAgICAgICAgICBpZiAo
c3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zdHlsZVR5cGUoKSA9PSBOT1BTRVVETykKKyAgICAgICAg
ICAgIGlmIChzdHlsZVJlc29sdmVyLnN0eWxlKCktPnN0eWxlVHlwZSgpID09IFBzZXVkb0lkOjpO
b25lKQogICAgICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0SGFzQXR0ckNv
bnRlbnQoKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBjb25zdF9jYXN0PFJl
bmRlclN0eWxlKj4oc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpKS0+c2V0SGFzQXR0ckNvbnRl
bnQoKTsKQEAgLTE0MjYsMTAgKzE0MjYsMTAgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3Vz
dG9tOjphcHBseVZhbAogICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5ydWxlU2V0cygpLm11dGFi
bGVGZWF0dXJlcygpLnJlZ2lzdGVyQ29udGVudEF0dHJpYnV0ZShhdHRyLmxvY2FsTmFtZSgpKTsK
ICAgICAgICAgfSBlbHNlIGlmIChjb250ZW50VmFsdWUuaXNDb3VudGVyKCkpIHsKICAgICAgICAg
ICAgIGF1dG8qIGNvdW50ZXJWYWx1ZSA9IGNvbnRlbnRWYWx1ZS5jb3VudGVyVmFsdWUoKTsKLSAg
ICAgICAgICAgIEVMaXN0U3R5bGVUeXBlIGxpc3RTdHlsZVR5cGUgPSBOb25lTGlzdFN0eWxlOwor
ICAgICAgICAgICAgTGlzdFN0eWxlVHlwZSBsaXN0U3R5bGVUeXBlID0gTGlzdFN0eWxlVHlwZTo6
Tm9uZTsKICAgICAgICAgICAgIENTU1ZhbHVlSUQgbGlzdFN0eWxlSWRlbnQgPSBjb3VudGVyVmFs
dWUtPmxpc3RTdHlsZUlkZW50KCk7CiAgICAgICAgICAgICBpZiAobGlzdFN0eWxlSWRlbnQgIT0g
Q1NTVmFsdWVOb25lKQotICAgICAgICAgICAgICAgIGxpc3RTdHlsZVR5cGUgPSBzdGF0aWNfY2Fz
dDxFTGlzdFN0eWxlVHlwZT4obGlzdFN0eWxlSWRlbnQgLSBDU1NWYWx1ZURpc2MpOworICAgICAg
ICAgICAgICAgIGxpc3RTdHlsZVR5cGUgPSBzdGF0aWNfY2FzdDxMaXN0U3R5bGVUeXBlPihsaXN0
U3R5bGVJZGVudCAtIENTU1ZhbHVlRGlzYyk7CiAgICAgICAgICAgICBhdXRvIGNvdW50ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJDb250ZW50Pihjb3VudGVyVmFsdWUtPmlkZW50aWZpZXIo
KSwgbGlzdFN0eWxlVHlwZSwgY291bnRlclZhbHVlLT5zZXBhcmF0b3IoKSk7CiAgICAgICAgICAg
ICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldENvbnRlbnQoV1RGTW92ZShjb3VudGVyKSwgZGlk
U2V0KTsKICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7CkBAIC0xNjAwLDcgKzE2MDAsNyBAQCBp
bmxpbmUgZmxvYXQgU3R5bGVCdWlsZGVyQ3VzdG9tOjpzbWFsbGVyCiAKIGlubGluZSBmbG9hdCBT
dHlsZUJ1aWxkZXJDdXN0b206OmRldGVybWluZVJ1YnlUZXh0U2l6ZU11bHRpcGxpZXIoU3R5bGVS
ZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIHsKLSAgICBpZiAoc3R5bGVSZXNvbHZlci5zdHlsZSgp
LT5ydWJ5UG9zaXRpb24oKSAhPSBSdWJ5UG9zaXRpb25JbnRlckNoYXJhY3RlcikKKyAgICBpZiAo
c3R5bGVSZXNvbHZlci5zdHlsZSgpLT5ydWJ5UG9zaXRpb24oKSAhPSBSdWJ5UG9zaXRpb246Oklu
dGVyQ2hhcmFjdGVyKQogICAgICAgICByZXR1cm4gMC41ZjsKIAogICAgIC8vIEZJWE1FOiBUaGlz
IGhhY2sgaXMgdG8gZW5zdXJlIHRvbmUgbWFya3MgYXJlIHRoZSBzYW1lIHNpemUgYXMKQEAgLTE4
MTAsNyArMTgxMCw3IEBAIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQWx0KFMK
ICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRDb250ZW50QWx0VGV4dChwcmltaXRp
dmVWYWx1ZS5zdHJpbmdWYWx1ZSgpKTsKICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS5pc0F0
dHIoKSkgewogICAgICAgICAvLyBGSVhNRTogQ2FuIGEgbmFtZXNwYWNlIGJlIHNwZWNpZmllZCBm
b3IgYW4gYXR0cihmb28pPwotICAgICAgICBpZiAoc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zdHls
ZVR5cGUoKSA9PSBOT1BTRVVETykKKyAgICAgICAgaWYgKHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+
c3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6Ok5vbmUpCiAgICAgICAgICAgICBzdHlsZVJlc29sdmVy
LnN0eWxlKCktPnNldFVuaXF1ZSgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb25zdF9j
YXN0PFJlbmRlclN0eWxlKj4oc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpKS0+c2V0VW5pcXVl
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCShyZXZpc2lvbiAyMzIx
MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM1OSwxMSArMzU5LDExIEBAIEVsZW1lbnRTdHlsZSBTdHlsZVJlc29sdmVyOjpzdHls
ZUZvckVsZW0KIAogICAgIGlmIChlbGVtZW50LmlzTGluaygpKSB7CiAgICAgICAgIHN0eWxlLnNl
dElzTGluayh0cnVlKTsKLSAgICAgICAgRUluc2lkZUxpbmsgbGlua1N0YXRlID0gc3RhdGUuZWxl
bWVudExpbmtTdGF0ZSgpOwotICAgICAgICBpZiAobGlua1N0YXRlICE9IE5vdEluc2lkZUxpbmsp
IHsKKyAgICAgICAgSW5zaWRlTGluayBsaW5rU3RhdGUgPSBzdGF0ZS5lbGVtZW50TGlua1N0YXRl
KCk7CisgICAgICAgIGlmIChsaW5rU3RhdGUgIT0gSW5zaWRlTGluazo6Tm90SW5zaWRlKSB7CiAg
ICAgICAgICAgICBib29sIGZvcmNlVmlzaXRlZCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
Zm9yY2VQc2V1ZG9TdGF0ZShlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NWaXNpdGVk
KTsKICAgICAgICAgICAgIGlmIChmb3JjZVZpc2l0ZWQpCi0gICAgICAgICAgICAgICAgbGlua1N0
YXRlID0gSW5zaWRlVmlzaXRlZExpbms7CisgICAgICAgICAgICAgICAgbGlua1N0YXRlID0gSW5z
aWRlTGluazo6SW5zaWRlVmlzaXRlZDsKICAgICAgICAgfQogICAgICAgICBzdHlsZS5zZXRJbnNp
ZGVMaW5rKGxpbmtTdGF0ZSk7CiAgICAgfQpAQCAtNjczLDUzICs2NzMsNTMgQEAgc3RhdGljIHZv
aWQgYWRkSW50cmluc2ljTWFyZ2lucyhSZW5kZXJTdAogICAgIH0KIH0KIAotc3RhdGljIEVEaXNw
bGF5IGVxdWl2YWxlbnRCbG9ja0Rpc3BsYXkoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25z
dCBEb2N1bWVudCYgZG9jdW1lbnQpCitzdGF0aWMgRGlzcGxheVR5cGUgZXF1aXZhbGVudEJsb2Nr
RGlzcGxheShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IERvY3VtZW50JiBkb2N1bWVu
dCkKIHsKICAgICBzd2l0Y2ggKGF1dG8gZGlzcGxheSA9IHN0eWxlLmRpc3BsYXkoKSkgewotICAg
IGNhc2UgQkxPQ0s6Ci0gICAgY2FzZSBUQUJMRToKLSAgICBjYXNlIEJPWDoKLSAgICBjYXNlIEZM
RVg6Ci0gICAgY2FzZSBXRUJLSVRfRkxFWDoKLSAgICBjYXNlIEdSSUQ6CisgICAgY2FzZSBEaXNw
bGF5VHlwZTo6QmxvY2s6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFibGU6CisgICAgY2FzZSBE
aXNwbGF5VHlwZTo6Qm94OgorICAgIGNhc2UgRGlzcGxheVR5cGU6OkZsZXg6CisgICAgY2FzZSBE
aXNwbGF5VHlwZTo6V2ViS2l0RmxleDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpHcmlkOgogICAg
ICAgICByZXR1cm4gZGlzcGxheTsKIAotICAgIGNhc2UgTElTVF9JVEVNOgorICAgIGNhc2UgRGlz
cGxheVR5cGU6Okxpc3RJdGVtOgogICAgICAgICAvLyBJdCBpcyBhIFdpbklFIGJ1ZyB0aGF0IGZs
b2F0ZWQgbGlzdCBpdGVtcyBsb3NlIHRoZWlyIGJ1bGxldHMsIHNvIHdlJ2xsIGVtdWxhdGUgdGhl
IHF1aXJrLCBidXQgb25seSBpbiBxdWlya3MgbW9kZS4KICAgICAgICAgaWYgKGRvY3VtZW50Lmlu
UXVpcmtzTW9kZSgpICYmIHN0eWxlLmlzRmxvYXRpbmcoKSkKLSAgICAgICAgICAgIHJldHVybiBC
TE9DSzsKKyAgICAgICAgICAgIHJldHVybiBEaXNwbGF5VHlwZTo6QmxvY2s7CiAgICAgICAgIHJl
dHVybiBkaXNwbGF5OwotICAgIGNhc2UgSU5MSU5FX1RBQkxFOgotICAgICAgICByZXR1cm4gVEFC
TEU7Ci0gICAgY2FzZSBJTkxJTkVfQk9YOgotICAgICAgICByZXR1cm4gQk9YOwotICAgIGNhc2Ug
SU5MSU5FX0ZMRVg6Ci0gICAgY2FzZSBXRUJLSVRfSU5MSU5FX0ZMRVg6Ci0gICAgICAgIHJldHVy
biBGTEVYOwotICAgIGNhc2UgSU5MSU5FX0dSSUQ6Ci0gICAgICAgIHJldHVybiBHUklEOwotCi0g
ICAgY2FzZSBJTkxJTkU6Ci0gICAgY2FzZSBDT01QQUNUOgotICAgIGNhc2UgSU5MSU5FX0JMT0NL
OgotICAgIGNhc2UgVEFCTEVfUk9XX0dST1VQOgotICAgIGNhc2UgVEFCTEVfSEVBREVSX0dST1VQ
OgotICAgIGNhc2UgVEFCTEVfRk9PVEVSX0dST1VQOgotICAgIGNhc2UgVEFCTEVfUk9XOgotICAg
IGNhc2UgVEFCTEVfQ09MVU1OX0dST1VQOgotICAgIGNhc2UgVEFCTEVfQ09MVU1OOgotICAgIGNh
c2UgVEFCTEVfQ0VMTDoKLSAgICBjYXNlIFRBQkxFX0NBUFRJT046Ci0gICAgICAgIHJldHVybiBC
TE9DSzsKLSAgICBjYXNlIENPTlRFTlRTOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OklubGluZVRh
YmxlOgorICAgICAgICByZXR1cm4gRGlzcGxheVR5cGU6OlRhYmxlOworICAgIGNhc2UgRGlzcGxh
eVR5cGU6OklubGluZUJveDoKKyAgICAgICAgcmV0dXJuIERpc3BsYXlUeXBlOjpCb3g7CisgICAg
Y2FzZSBEaXNwbGF5VHlwZTo6SW5saW5lRmxleDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpXZWJL
aXRJbmxpbmVGbGV4OgorICAgICAgICByZXR1cm4gRGlzcGxheVR5cGU6OkZsZXg7CisgICAgY2Fz
ZSBEaXNwbGF5VHlwZTo6SW5saW5lR3JpZDoKKyAgICAgICAgcmV0dXJuIERpc3BsYXlUeXBlOjpH
cmlkOworCisgICAgY2FzZSBEaXNwbGF5VHlwZTo6SW5saW5lOgorICAgIGNhc2UgRGlzcGxheVR5
cGU6OkNvbXBhY3Q6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6SW5saW5lQmxvY2s6CisgICAgY2Fz
ZSBEaXNwbGF5VHlwZTo6VGFibGVSb3dHcm91cDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJs
ZUhlYWRlckdyb3VwOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlRm9vdGVyR3JvdXA6Cisg
ICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFibGVSb3c6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFi
bGVDb2x1bW5Hcm91cDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZUNvbHVtbjoKKyAgICBj
YXNlIERpc3BsYXlUeXBlOjpUYWJsZUNlbGw6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFibGVD
YXB0aW9uOgorICAgICAgICByZXR1cm4gRGlzcGxheVR5cGU6OkJsb2NrOworICAgIGNhc2UgRGlz
cGxheVR5cGU6OkNvbnRlbnRzOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuIENPTlRFTlRTOwotICAgIGNhc2UgTk9ORToKKyAgICAgICAgcmV0dXJuIERpc3Bs
YXlUeXBlOjpDb250ZW50czsKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpOb25lOgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIE5PTkU7CisgICAgICAgIHJldHVy
biBEaXNwbGF5VHlwZTo6Tm9uZTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIEJMT0NLOworICAgIHJldHVybiBEaXNwbGF5VHlwZTo6QmxvY2s7CiB9CiAKIC8v
IENTUyByZXF1aXJlcyB0ZXh0LWRlY29yYXRpb24gdG8gYmUgcmVzZXQgYXQgZWFjaCBET00gZWxl
bWVudCBmb3IgdGFibGVzLCAKQEAgLTcyNyw4ICs3MjcsOCBAQCBzdGF0aWMgRURpc3BsYXkgZXF1
aXZhbGVudEJsb2NrRGlzcGxheShjCiAvLyBhbmQgYWJzb2x1dGUgb3IgcmVsYXRpdmVseSBwb3Np
dGlvbmVkIGVsZW1lbnRzLgogc3RhdGljIGJvb2wgZG9lc05vdEluaGVyaXRUZXh0RGVjb3JhdGlv
bihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0g
ICAgcmV0dXJuIHN0eWxlLmRpc3BsYXkoKSA9PSBUQUJMRSB8fCBzdHlsZS5kaXNwbGF5KCkgPT0g
SU5MSU5FX1RBQkxFCi0gICAgICAgIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBJTkxJTkVfQkxPQ0sg
fHwgc3R5bGUuZGlzcGxheSgpID09IElOTElORV9CT1ggfHwgKGVsZW1lbnQgJiYgaXNBdFNoYWRv
d0JvdW5kYXJ5KCplbGVtZW50KSkKKyAgICByZXR1cm4gc3R5bGUuZGlzcGxheSgpID09IERpc3Bs
YXlUeXBlOjpUYWJsZSB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OklubGluZVRh
YmxlCisgICAgICAgIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lQmxv
Y2sgfHwgc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpJbmxpbmVCb3ggfHwgKGVsZW1l
bnQgJiYgaXNBdFNoYWRvd0JvdW5kYXJ5KCplbGVtZW50KSkKICAgICAgICAgfHwgc3R5bGUuaXNG
bG9hdGluZygpIHx8IHN0eWxlLmhhc091dE9mRmxvd1Bvc2l0aW9uKCk7CiB9CiAKQEAgLTc0Miw5
ICs3NDIsOSBAQCBzdGF0aWMgYm9vbCBpc1Njcm9sbGFibGVPdmVyZmxvdyhPdmVyZmxvCiB2b2lk
IFN0eWxlUmVzb2x2ZXI6OmFkanVzdFN0eWxlRm9ySW50ZXJDaGFyYWN0ZXJSdWJ5KCkKIHsKICAg
ICBSZW5kZXJTdHlsZSogc3R5bGUgPSBtX3N0YXRlLnN0eWxlKCk7Ci0gICAgaWYgKHN0eWxlLT5y
dWJ5UG9zaXRpb24oKSAhPSBSdWJ5UG9zaXRpb25JbnRlckNoYXJhY3RlciB8fCAhbV9zdGF0ZS5l
bGVtZW50KCkgfHwgIW1fc3RhdGUuZWxlbWVudCgpLT5oYXNUYWdOYW1lKHJ0VGFnKSkKKyAgICBp
ZiAoc3R5bGUtPnJ1YnlQb3NpdGlvbigpICE9IFJ1YnlQb3NpdGlvbjo6SW50ZXJDaGFyYWN0ZXIg
fHwgIW1fc3RhdGUuZWxlbWVudCgpIHx8ICFtX3N0YXRlLmVsZW1lbnQoKS0+aGFzVGFnTmFtZShy
dFRhZykpCiAgICAgICAgIHJldHVybjsKLSAgICBzdHlsZS0+c2V0VGV4dEFsaWduKENFTlRFUik7
CisgICAgc3R5bGUtPnNldFRleHRBbGlnbihUZXh0QWxpZ25Nb2RlOjpDZW50ZXIpOwogICAgIGlm
IChzdHlsZS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKICAgICAgICAgc3R5bGUtPnNldFdy
aXRpbmdNb2RlKExlZnRUb1JpZ2h0V3JpdGluZ01vZGUpOwogfQpAQCAtNzk2LDIwICs3OTYsMjAg
QEAgc3RhdGljIHZvaWQgYWRqdXN0RGlzcGxheUNvbnRlbnRzU3R5bGUoUgogewogICAgIGJvb2wg
ZGlzcGxheUNvbnRlbnRzRW5hYmxlZCA9IGlzPEhUTUxTbG90RWxlbWVudD4oZWxlbWVudCkgfHwg
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5kaXNwbGF5Q29udGVudHNF
bmFibGVkKCk7CiAgICAgaWYgKCFkaXNwbGF5Q29udGVudHNFbmFibGVkKSB7Ci0gICAgICAgIHN0
eWxlLnNldERpc3BsYXkoSU5MSU5FKTsKKyAgICAgICAgc3R5bGUuc2V0RGlzcGxheShEaXNwbGF5
VHlwZTo6SW5saW5lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoIWVsZW1lbnQp
IHsKLSAgICAgICAgaWYgKHN0eWxlLnN0eWxlVHlwZSgpICE9IEJFRk9SRSAmJiBzdHlsZS5zdHls
ZVR5cGUoKSAhPSBBRlRFUikKLSAgICAgICAgICAgIHN0eWxlLnNldERpc3BsYXkoTk9ORSk7Cisg
ICAgICAgIGlmIChzdHlsZS5zdHlsZVR5cGUoKSAhPSBQc2V1ZG9JZDo6QmVmb3JlICYmIHN0eWxl
LnN0eWxlVHlwZSgpICE9IFBzZXVkb0lkOjpBZnRlcikKKyAgICAgICAgICAgIHN0eWxlLnNldERp
c3BsYXkoRGlzcGxheVR5cGU6Ok5vbmUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlm
IChlbGVtZW50LT5kb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpID09IGVsZW1lbnQpIHsKLSAg
ICAgICAgc3R5bGUuc2V0RGlzcGxheShCTE9DSyk7CisgICAgICAgIHN0eWxlLnNldERpc3BsYXko
RGlzcGxheVR5cGU6OkJsb2NrKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoaGFz
RWZmZWN0aXZlRGlzcGxheU5vbmVGb3JEaXNwbGF5Q29udGVudHMoKmVsZW1lbnQpKQotICAgICAg
ICBzdHlsZS5zZXREaXNwbGF5KE5PTkUpOworICAgICAgICBzdHlsZS5zZXREaXNwbGF5KERpc3Bs
YXlUeXBlOjpOb25lKTsKIH0KIAogdm9pZCBTdHlsZVJlc29sdmVyOjphZGp1c3RTVkdFbGVtZW50
U3R5bGUoY29uc3QgU1ZHRWxlbWVudCYgc3ZnRWxlbWVudCwgUmVuZGVyU3R5bGUmIHN0eWxlKQpA
QCAtODI2LDcgKzgyNiw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRqdXN0U1ZHRWxlbWVudFN0
eWwKIAogICAgIC8vIFNWRyB0ZXh0IGxheW91dCBjb2RlIGV4cGVjdHMgdXMgdG8gYmUgYSBibG9j
ay1sZXZlbCBzdHlsZSBlbGVtZW50LgogICAgIGlmICgoc3ZnRWxlbWVudC5oYXNUYWdOYW1lKFNW
R05hbWVzOjpmb3JlaWduT2JqZWN0VGFnKSB8fCBzdmdFbGVtZW50Lmhhc1RhZ05hbWUoU1ZHTmFt
ZXM6OnRleHRUYWcpKSAmJiBzdHlsZS5pc0Rpc3BsYXlJbmxpbmVUeXBlKCkpCi0gICAgICAgIHN0
eWxlLnNldERpc3BsYXkoQkxPQ0spOworICAgICAgICBzdHlsZS5zZXREaXNwbGF5KERpc3BsYXlU
eXBlOjpCbG9jayk7CiB9CiAKIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRqdXN0UmVuZGVyU3R5bGUo
UmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0
IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hTdHlsZSwgY29uc3QgRWxlbWVudCogZWxlbWVudCkKQEAg
LTgzOSwxMCArODM5LDEwIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRqdXN0UmVuZGVyU3R5bGUo
UmUKICAgICAvLyBDYWNoZSBvdXIgb3JpZ2luYWwgZGlzcGxheS4KICAgICBzdHlsZS5zZXRPcmln
aW5hbERpc3BsYXkoc3R5bGUuZGlzcGxheSgpKTsKIAotICAgIGlmIChzdHlsZS5kaXNwbGF5KCkg
PT0gQ09OVEVOVFMpCisgICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Q29u
dGVudHMpCiAgICAgICAgIGFkanVzdERpc3BsYXlDb250ZW50c1N0eWxlKHN0eWxlLCBlbGVtZW50
KTsKIAotICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgIT0gTk9ORSAmJiBzdHlsZS5kaXNwbGF5KCkg
IT0gQ09OVEVOVFMpIHsKKyAgICBpZiAoc3R5bGUuZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpO
b25lICYmIHN0eWxlLmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Q29udGVudHMpIHsKICAgICAg
ICAgaWYgKGVsZW1lbnQpIHsKICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSA8dGQ+IHRoYXQg
c3BlY2lmaWVzIGEgZmxvYXQgcHJvcGVydHksIGluIHF1aXJrcyBtb2RlIHdlIGp1c3QgZHJvcCB0
aGUgZmxvYXQKICAgICAgICAgICAgIC8vIHByb3BlcnR5LgpAQCAtODUwLDMzICs4NTAsMzMgQEAg
dm9pZCBTdHlsZVJlc29sdmVyOjphZGp1c3RSZW5kZXJTdHlsZShSZQogICAgICAgICAgICAgLy8g
dGhlc2UgdGFncyB0byByZXRhaW4gdGhlaXIgZGlzcGxheSB0eXBlcy4KICAgICAgICAgICAgIGlm
IChkb2N1bWVudCgpLmluUXVpcmtzTW9kZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGVsZW1l
bnQtPmhhc1RhZ05hbWUodGRUYWcpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0eWxlLnNldERp
c3BsYXkoVEFCTEVfQ0VMTCk7CisgICAgICAgICAgICAgICAgICAgIHN0eWxlLnNldERpc3BsYXko
RGlzcGxheVR5cGU6OlRhYmxlQ2VsbCk7CiAgICAgICAgICAgICAgICAgICAgIHN0eWxlLnNldEZs
b2F0aW5nKEZsb2F0OjpObyk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpczxIVE1MVGFi
bGVFbGVtZW50PigqZWxlbWVudCkpCi0gICAgICAgICAgICAgICAgICAgIHN0eWxlLnNldERpc3Bs
YXkoc3R5bGUuaXNEaXNwbGF5SW5saW5lVHlwZSgpID8gSU5MSU5FX1RBQkxFIDogVEFCTEUpOwor
ICAgICAgICAgICAgICAgICAgICBzdHlsZS5zZXREaXNwbGF5KHN0eWxlLmlzRGlzcGxheUlubGlu
ZVR5cGUoKSA/IERpc3BsYXlUeXBlOjpJbmxpbmVUYWJsZSA6IERpc3BsYXlUeXBlOjpUYWJsZSk7
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKHRk
VGFnKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKHRoVGFnKSkgewotICAgICAgICAgICAgICAgIGlm
IChzdHlsZS53aGl0ZVNwYWNlKCkgPT0gS0hUTUxfTk9XUkFQKSB7CisgICAgICAgICAgICAgICAg
aWYgKHN0eWxlLndoaXRlU3BhY2UoKSA9PSBXaGl0ZVNwYWNlOjpLSFRNTE5vV3JhcCkgewogICAg
ICAgICAgICAgICAgICAgICAvLyBGaWd1cmUgb3V0IGlmIHdlIGFyZSByZWFsbHkgbm93cmFwcGlu
ZyBvciBpZiB3ZSBzaG91bGQganVzdAogICAgICAgICAgICAgICAgICAgICAvLyB1c2Ugbm9ybWFs
IGluc3RlYWQuIElmIHRoZSB3aWR0aCBvZiB0aGUgY2VsbCBpcyBmaXhlZCwgdGhlbgotICAgICAg
ICAgICAgICAgICAgICAvLyB3ZSBkb24ndCBhY3R1YWxseSB1c2UgTk9XUkFQLgorICAgICAgICAg
ICAgICAgICAgICAvLyB3ZSBkb24ndCBhY3R1YWxseSB1c2UgV2hpdGVTcGFjZTo6Tm9XcmFwLgog
ICAgICAgICAgICAgICAgICAgICBpZiAoc3R5bGUud2lkdGgoKS5pc0ZpeGVkKCkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBzdHlsZS5zZXRXaGl0ZVNwYWNlKE5PUk1BTCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBzdHlsZS5zZXRXaGl0ZVNwYWNlKFdoaXRlU3BhY2U6Ok5vcm1hbCk7CiAg
ICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLnNl
dFdoaXRlU3BhY2UoTk9XUkFQKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLnNldFdo
aXRlU3BhY2UoV2hpdGVTcGFjZTo6Tm9XcmFwKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIC8vIFRhYmxlcyBuZXZlciBzdXBwb3J0IHRoZSAtd2Via2l0
LSogdmFsdWVzIGZvciB0ZXh0LWFsaWduIGFuZCB3aWxsIHJlc2V0IGJhY2sgdG8gdGhlIGRlZmF1
bHQuCi0gICAgICAgICAgICBpZiAoaXM8SFRNTFRhYmxlRWxlbWVudD4oKmVsZW1lbnQpICYmIChz
dHlsZS50ZXh0QWxpZ24oKSA9PSBXRUJLSVRfTEVGVCB8fCBzdHlsZS50ZXh0QWxpZ24oKSA9PSBX
RUJLSVRfQ0VOVEVSIHx8IHN0eWxlLnRleHRBbGlnbigpID09IFdFQktJVF9SSUdIVCkpCi0gICAg
ICAgICAgICAgICAgc3R5bGUuc2V0VGV4dEFsaWduKFRBU1RBUlQpOworICAgICAgICAgICAgaWYg
KGlzPEhUTUxUYWJsZUVsZW1lbnQ+KCplbGVtZW50KSAmJiAoc3R5bGUudGV4dEFsaWduKCkgPT0g
VGV4dEFsaWduTW9kZTo6V2ViS2l0TGVmdCB8fCBzdHlsZS50ZXh0QWxpZ24oKSA9PSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXIgfHwgc3R5bGUudGV4dEFsaWduKCkgPT0gVGV4dEFsaWduTW9k
ZTo6V2ViS2l0UmlnaHQpKQorICAgICAgICAgICAgICAgIHN0eWxlLnNldFRleHRBbGlnbihUZXh0
QWxpZ25Nb2RlOjpTdGFydCk7CiAKICAgICAgICAgICAgIC8vIEZyYW1lcyBhbmQgZnJhbWVzZXRz
IG5ldmVyIGhvbm9yIHBvc2l0aW9uOnJlbGF0aXZlIG9yIHBvc2l0aW9uOmFic29sdXRlLiBUaGlz
IGlzIG5lY2Vzc2FyeSB0bwogICAgICAgICAgICAgLy8gZml4IGEgY3Jhc2ggd2hlcmUgYSBzaXRl
IHRyaWVzIHRvIHBvc2l0aW9uIHRoZXNlIG9iamVjdHMuIFRoZXkgYWxzbyBuZXZlciBob25vciBk
aXNwbGF5LgogICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoZnJhbWVUYWcpIHx8
IGVsZW1lbnQtPmhhc1RhZ05hbWUoZnJhbWVzZXRUYWcpKSB7CiAgICAgICAgICAgICAgICAgc3R5
bGUuc2V0UG9zaXRpb24oUG9zaXRpb25UeXBlOjpTdGF0aWMpOwotICAgICAgICAgICAgICAgIHN0
eWxlLnNldERpc3BsYXkoQkxPQ0spOworICAgICAgICAgICAgICAgIHN0eWxlLnNldERpc3BsYXko
RGlzcGxheVR5cGU6OkJsb2NrKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gUnVi
eSB0ZXh0IGRvZXMgbm90IHN1cHBvcnQgZmxvYXQgb3IgcG9zaXRpb24uIFRoaXMgbWlnaHQgY2hh
bmdlIHdpdGggZXZvbHV0aW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLgpAQCAtODkwLDEwICs4OTAs
MTAgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphZGp1c3RSZW5kZXJTdHlsZShSZQogICAgICAgICAg
ICAgLy8ganVzdCBhIHNpbmdsZSBkZWNsYXJhdGlvbiB0aGF0IHNldHMgdGhlICd0ZXh0LWFsaWdu
JyBwcm9wZXJ0eSB0byB0aGUgdmFsdWUgJ2NlbnRlcicuCiAgICAgICAgICAgICAvLyBodHRwczov
L2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9yZW5kZXJpbmcuaHRtbCNyZW5kZXJpbmcK
ICAgICAgICAgICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKHRoVGFnKSAmJiAhc3R5bGUuaGFz
RXhwbGljaXRseVNldFRleHRBbGlnbigpICYmIHBhcmVudFN0eWxlLnRleHRBbGlnbigpID09IFJl
bmRlclN0eWxlOjppbml0aWFsVGV4dEFsaWduKCkpCi0gICAgICAgICAgICAgICAgc3R5bGUuc2V0
VGV4dEFsaWduKENFTlRFUik7CisgICAgICAgICAgICAgICAgc3R5bGUuc2V0VGV4dEFsaWduKFRl
eHRBbGlnbk1vZGU6OkNlbnRlcik7CiAKICAgICAgICAgICAgIGlmIChlbGVtZW50LT5oYXNUYWdO
YW1lKGxlZ2VuZFRhZykpCi0gICAgICAgICAgICAgICAgc3R5bGUuc2V0RGlzcGxheShCTE9DSyk7
CisgICAgICAgICAgICAgICAgc3R5bGUuc2V0RGlzcGxheShEaXNwbGF5VHlwZTo6QmxvY2spOwog
ICAgICAgICB9CiAKICAgICAgICAgLy8gQWJzb2x1dGUvZml4ZWQgcG9zaXRpb25lZCBlbGVtZW50
cywgZmxvYXRpbmcgZWxlbWVudHMgYW5kIHRoZSBkb2N1bWVudCBlbGVtZW50IG5lZWQgYmxvY2st
bGlrZSBvdXRzaWRlIGRpc3BsYXkuCkBAIC05MDIsMjggKzkwMiwyOCBAQCB2b2lkIFN0eWxlUmVz
b2x2ZXI6OmFkanVzdFJlbmRlclN0eWxlKFJlCiAKICAgICAgICAgLy8gRklYTUU6IERvbid0IHN1
cHBvcnQgdGhpcyBtdXRhdGlvbiBmb3IgcHNldWRvIHN0eWxlcyBsaWtlIGZpcnN0LWxldHRlciBv
ciBmaXJzdC1saW5lLCBzaW5jZSBpdCdzIG5vdCBjb21wbGV0ZWx5CiAgICAgICAgIC8vIGNsZWFy
IGhvdyB0aGF0IHNob3VsZCB3b3JrLgotICAgICAgICBpZiAoc3R5bGUuZGlzcGxheSgpID09IElO
TElORSAmJiBzdHlsZS5zdHlsZVR5cGUoKSA9PSBOT1BTRVVETyAmJiBzdHlsZS53cml0aW5nTW9k
ZSgpICE9IHBhcmVudFN0eWxlLndyaXRpbmdNb2RlKCkpCi0gICAgICAgICAgICBzdHlsZS5zZXRE
aXNwbGF5KElOTElORV9CTE9DSyk7CisgICAgICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gRGlz
cGxheVR5cGU6OklubGluZSAmJiBzdHlsZS5zdHlsZVR5cGUoKSA9PSBQc2V1ZG9JZDo6Tm9uZSAm
JiBzdHlsZS53cml0aW5nTW9kZSgpICE9IHBhcmVudFN0eWxlLndyaXRpbmdNb2RlKCkpCisgICAg
ICAgICAgICBzdHlsZS5zZXREaXNwbGF5KERpc3BsYXlUeXBlOjpJbmxpbmVCbG9jayk7CiAKICAg
ICAgICAgLy8gQWZ0ZXIgcGVyZm9ybWluZyB0aGUgZGlzcGxheSBtdXRhdGlvbiwgY2hlY2sgdGFi
bGUgcm93cy4gV2UgZG8gbm90IGhvbm9yIHBvc2l0aW9uOnJlbGF0aXZlIG9yIHBvc2l0aW9uOnN0
aWNreSBvbgogICAgICAgICAvLyB0YWJsZSByb3dzIG9yIGNlbGxzLiBUaGlzIGhhcyBiZWVuIGVz
dGFibGlzaGVkIGZvciBwb3NpdGlvbjpyZWxhdGl2ZSBpbiBDU1MyLjEgKGFuZCBjYXVzZWQgYSBj
cmFzaCBpbiBjb250YWluaW5nQmxvY2soKQogICAgICAgICAvLyBvbiBzb21lIHNpdGVzKS4KLSAg
ICAgICAgaWYgKChzdHlsZS5kaXNwbGF5KCkgPT0gVEFCTEVfSEVBREVSX0dST1VQIHx8IHN0eWxl
LmRpc3BsYXkoKSA9PSBUQUJMRV9ST1dfR1JPVVAKLSAgICAgICAgICAgIHx8IHN0eWxlLmRpc3Bs
YXkoKSA9PSBUQUJMRV9GT09URVJfR1JPVVAgfHwgc3R5bGUuZGlzcGxheSgpID09IFRBQkxFX1JP
VykKKyAgICAgICAgaWYgKChzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxlSGVh
ZGVyR3JvdXAgfHwgc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpUYWJsZVJvd0dyb3Vw
CisgICAgICAgICAgICB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxlRm9v
dGVyR3JvdXAgfHwgc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpUYWJsZVJvdykKICAg
ICAgICAgICAgICYmIHN0eWxlLnBvc2l0aW9uKCkgPT0gUG9zaXRpb25UeXBlOjpSZWxhdGl2ZSkK
ICAgICAgICAgICAgIHN0eWxlLnNldFBvc2l0aW9uKFBvc2l0aW9uVHlwZTo6U3RhdGljKTsKIAog
ICAgICAgICAvLyB3cml0aW5nLW1vZGUgZG9lcyBub3QgYXBwbHkgdG8gdGFibGUgcm93IGdyb3Vw
cywgdGFibGUgY29sdW1uIGdyb3VwcywgdGFibGUgcm93cywgYW5kIHRhYmxlIGNvbHVtbnMuCiAg
ICAgICAgIC8vIEZJWE1FOiBUYWJsZSBjZWxscyBzaG91bGQgYmUgYWxsb3dlZCB0byBiZSBwZXJw
ZW5kaWN1bGFyIG9yIGZsaXBwZWQgd2l0aCByZXNwZWN0IHRvIHRoZSB0YWJsZSwgdGhvdWdoLgot
ICAgICAgICBpZiAoc3R5bGUuZGlzcGxheSgpID09IFRBQkxFX0NPTFVNTiB8fCBzdHlsZS5kaXNw
bGF5KCkgPT0gVEFCTEVfQ09MVU1OX0dST1VQIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBUQUJMRV9G
T09URVJfR1JPVVAKLSAgICAgICAgICAgIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBUQUJMRV9IRUFE
RVJfR1JPVVAgfHwgc3R5bGUuZGlzcGxheSgpID09IFRBQkxFX1JPVyB8fCBzdHlsZS5kaXNwbGF5
KCkgPT0gVEFCTEVfUk9XX0dST1VQCi0gICAgICAgICAgICB8fCBzdHlsZS5kaXNwbGF5KCkgPT0g
VEFCTEVfQ0VMTCkKKyAgICAgICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6
VGFibGVDb2x1bW4gfHwgc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpUYWJsZUNvbHVt
bkdyb3VwIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGVGb290ZXJHcm91
cAorICAgICAgICAgICAgfHwgc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpUYWJsZUhl
YWRlckdyb3VwIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGVSb3cgfHwg
c3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpUYWJsZVJvd0dyb3VwCisgICAgICAgICAg
ICB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxlQ2VsbCkKICAgICAgICAg
ICAgIHN0eWxlLnNldFdyaXRpbmdNb2RlKHBhcmVudFN0eWxlLndyaXRpbmdNb2RlKCkpOwogCiAg
ICAgICAgIC8vIEZJWE1FOiBTaW5jZSB3ZSBkb24ndCBzdXBwb3J0IGJsb2NrLWZsb3cgb24gZmxl
eGlibGUgYm94ZXMgeWV0LCBkaXNhbGxvdyBzZXR0aW5nCiAgICAgICAgIC8vIG9mIGJsb2NrLWZs
b3cgdG8gYW55dGhpbmcgb3RoZXIgdGhhbiBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlLgogICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY0MTggLSBGbGV4
aWJsZSBib3ggc3VwcG9ydC4KLSAgICAgICAgaWYgKHN0eWxlLndyaXRpbmdNb2RlKCkgIT0gVG9w
VG9Cb3R0b21Xcml0aW5nTW9kZSAmJiAoc3R5bGUuZGlzcGxheSgpID09IEJPWCB8fCBzdHlsZS5k
aXNwbGF5KCkgPT0gSU5MSU5FX0JPWCkpCisgICAgICAgIGlmIChzdHlsZS53cml0aW5nTW9kZSgp
ICE9IFRvcFRvQm90dG9tV3JpdGluZ01vZGUgJiYgKHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5
VHlwZTo6Qm94IHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lQm94KSkK
ICAgICAgICAgICAgIHN0eWxlLnNldFdyaXRpbmdNb2RlKFRvcFRvQm90dG9tV3JpdGluZ01vZGUp
OwogCiAgICAgICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtZGlzcGxheS8jdHJhbnNm
b3JtYXRpb25zCkBAIC05NzksOCArOTc5LDggQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphZGp1c3RS
ZW5kZXJTdHlsZShSZQogICAgICAgICAgICAgYm9vbCBpc1ZlcnRpY2FsID0gc3R5bGUubWFycXVl
ZURpcmVjdGlvbigpID09IE1hcnF1ZWVEaXJlY3Rpb246OlVwIHx8IHN0eWxlLm1hcnF1ZWVEaXJl
Y3Rpb24oKSA9PSBNYXJxdWVlRGlyZWN0aW9uOjpEb3duOwogICAgICAgICAgICAgLy8gTWFrZSBo
b3Jpem9udGFsIG1hcnF1ZWVzIG5vdCB3cmFwLgogICAgICAgICAgICAgaWYgKCFpc1ZlcnRpY2Fs
KSB7Ci0gICAgICAgICAgICAgICAgc3R5bGUuc2V0V2hpdGVTcGFjZShOT1dSQVApOwotICAgICAg
ICAgICAgICAgIHN0eWxlLnNldFRleHRBbGlnbihUQVNUQVJUKTsKKyAgICAgICAgICAgICAgICBz
dHlsZS5zZXRXaGl0ZVNwYWNlKFdoaXRlU3BhY2U6Ok5vV3JhcCk7CisgICAgICAgICAgICAgICAg
c3R5bGUuc2V0VGV4dEFsaWduKFRleHRBbGlnbk1vZGU6OlN0YXJ0KTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIC8vIEFwcGFyZW50bHkgdGhpcyBpcyB0aGUgZXhwZWN0ZWQgbGVnYWN5IGJl
aGF2aW9yLgogICAgICAgICAgICAgaWYgKGlzVmVydGljYWwgJiYgc3R5bGUuaGVpZ2h0KCkuaXNB
dXRvKCkpCkBAIC0xMDEwLDggKzEwMTAsOCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkanVzdFJl
bmRlclN0eWxlKFJlCiAKICAgICAvLyBUYWJsZSByb3dzLCBzZWN0aW9ucyBhbmQgdGhlIHRhYmxl
IGl0c2VsZiB3aWxsIHN1cHBvcnQgb3ZlcmZsb3c6aGlkZGVuIGFuZCB3aWxsIGlnbm9yZSBzY3Jv
bGwvYXV0by4KICAgICAvLyBGSVhNRTogRXZlbnR1YWxseSB0YWJsZSBzZWN0aW9ucyB3aWxsIHN1
cHBvcnQgYXV0byBhbmQgc2Nyb2xsLgotICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gVEFCTEUg
fHwgc3R5bGUuZGlzcGxheSgpID09IElOTElORV9UQUJMRQotICAgICAgICB8fCBzdHlsZS5kaXNw
bGF5KCkgPT0gVEFCTEVfUk9XX0dST1VQIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBUQUJMRV9ST1cp
IHsKKyAgICBpZiAoc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpUYWJsZSB8fCBzdHls
ZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OklubGluZVRhYmxlCisgICAgICAgIHx8IHN0eWxl
LmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGVSb3dHcm91cCB8fCBzdHlsZS5kaXNwbGF5
KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxlUm93KSB7CiAgICAgICAgIGlmIChzdHlsZS5vdmVyZmxv
d1goKSAhPSBPdmVyZmxvdzo6VmlzaWJsZSAmJiBzdHlsZS5vdmVyZmxvd1goKSAhPSBPdmVyZmxv
dzo6SGlkZGVuKQogICAgICAgICAgICAgc3R5bGUuc2V0T3ZlcmZsb3dYKE92ZXJmbG93OjpWaXNp
YmxlKTsKICAgICAgICAgaWYgKHN0eWxlLm92ZXJmbG93WSgpICE9IE92ZXJmbG93OjpWaXNpYmxl
ICYmIHN0eWxlLm92ZXJmbG93WSgpICE9IE92ZXJmbG93OjpIaWRkZW4pCkBAIC0xMDUyLDcgKzEw
NTIsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0eWxlKFJlCiAgICAgICAg
IFJlbmRlclRoZW1lOjpzaW5nbGV0b24oKS5hZGp1c3RTdHlsZSgqdGhpcywgc3R5bGUsIGVsZW1l
bnQsIG1fc3RhdGUuaGFzVUFBcHBlYXJhbmNlKCksIG1fc3RhdGUuYm9yZGVyRGF0YSgpLCBtX3N0
YXRlLmJhY2tncm91bmREYXRhKCksIG1fc3RhdGUuYmFja2dyb3VuZENvbG9yKCkpOwogCiAgICAg
Ly8gSWYgd2UgaGF2ZSBmaXJzdC1sZXR0ZXIgcHNldWRvIHN0eWxlLCBkbyBub3Qgc2hhcmUgdGhp
cyBzdHlsZS4KLSAgICBpZiAoc3R5bGUuaGFzUHNldWRvU3R5bGUoRklSU1RfTEVUVEVSKSkKKyAg
ICBpZiAoc3R5bGUuaGFzUHNldWRvU3R5bGUoUHNldWRvSWQ6OkZpcnN0TGV0dGVyKSkKICAgICAg
ICAgc3R5bGUuc2V0VW5pcXVlKCk7CiAKICAgICAvLyBGSVhNRTogd2hlbiBkcm9wcGluZyB0aGUg
LXdlYmtpdCBwcmVmaXggb24gdHJhbnNmb3JtLXN0eWxlLCB3ZSBzaG91bGQgYWxzbyBoYXZlIG9w
YWNpdHkgPCAxIGNhdXNlIGZsYXR0ZW5pbmcuCkBAIC0xMTEyLDcgKzExMTIsNyBAQCB2b2lkIFN0
eWxlUmVzb2x2ZXI6OnVwZGF0ZUZvbnQoKQogCiBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+IFN0
eWxlUmVzb2x2ZXI6OnN0eWxlUnVsZXNGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQs
IHVuc2lnbmVkIHJ1bGVzVG9JbmNsdWRlKQogewotICAgIHJldHVybiBwc2V1ZG9TdHlsZVJ1bGVz
Rm9yRWxlbWVudChlbGVtZW50LCBOT1BTRVVETywgcnVsZXNUb0luY2x1ZGUpOworICAgIHJldHVy
biBwc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBQc2V1ZG9JZDo6Tm9uZSwgcnVs
ZXNUb0luY2x1ZGUpOwogfQogCiBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+IFN0eWxlUmVzb2x2
ZXI6OnBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIFBz
ZXVkb0lkIHBzZXVkb0lkLCB1bnNpZ25lZCBydWxlc1RvSW5jbHVkZSkKQEAgLTEyNzksNyArMTI3
OSw3IEBAIHN0YXRpYyBib29sIGlzQ2FjaGVhYmxlSW5NYXRjaGVkUHJvcGVydGkKICAgICBpZiAo
JmVsZW1lbnQgPT0gZWxlbWVudC5kb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgLy8gY29udGVudDphdHRyKCkgdmFsdWUgZGVwZW5kcyBvbiB0
aGUgZWxlbWVudCBpdCBpcyBiZWluZyBhcHBsaWVkIHRvLgotICAgIGlmIChzdHlsZS0+aGFzQXR0
ckNvbnRlbnQoKSB8fCAoc3R5bGUtPnN0eWxlVHlwZSgpICE9IE5PUFNFVURPICYmIHBhcmVudFN0
eWxlLT5oYXNBdHRyQ29udGVudCgpKSkKKyAgICBpZiAoc3R5bGUtPmhhc0F0dHJDb250ZW50KCkg
fHwgKHN0eWxlLT5zdHlsZVR5cGUoKSAhPSBQc2V1ZG9JZDo6Tm9uZSAmJiBwYXJlbnRTdHlsZS0+
aGFzQXR0ckNvbnRlbnQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoc3R5bGUt
Pmhhc0FwcGVhcmFuY2UoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTMzOSw3ICsxMzM5
LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseU1hdGNoZWRQcm9wZXJ0aQogICAgICAgICAv
LyBlbGVtZW50IGNvbnRleHQuIFRoaXMgaXMgZmFzdCBhbmQgc2F2ZXMgbWVtb3J5IGJ5IHJldXNp
bmcgdGhlIHN0eWxlIGRhdGEgc3RydWN0dXJlcy4KICAgICAgICAgc3RhdGUuc3R5bGUoKS0+Y29w
eU5vbkluaGVyaXRlZEZyb20oKmNhY2hlSXRlbS0+cmVuZGVyU3R5bGUpOwogICAgICAgICBpZiAo
c3RhdGUucGFyZW50U3R5bGUoKS0+aW5oZXJpdGVkRGF0YVNoYXJlZChjYWNoZUl0ZW0tPnBhcmVu
dFJlbmRlclN0eWxlLmdldCgpKSAmJiAhaXNBdFNoYWRvd0JvdW5kYXJ5KGVsZW1lbnQpKSB7Ci0g
ICAgICAgICAgICBFSW5zaWRlTGluayBsaW5rU3RhdHVzID0gc3RhdGUuc3R5bGUoKS0+aW5zaWRl
TGluaygpOworICAgICAgICAgICAgSW5zaWRlTGluayBsaW5rU3RhdHVzID0gc3RhdGUuc3R5bGUo
KS0+aW5zaWRlTGluaygpOwogICAgICAgICAgICAgLy8gSWYgdGhlIGNhY2hlIGl0ZW0gcGFyZW50
IHN0eWxlIGhhcyBpZGVudGljYWwgaW5oZXJpdGVkIHByb3BlcnRpZXMgdG8gdGhlIGN1cnJlbnQg
cGFyZW50IHN0eWxlIHRoZW4gdGhlCiAgICAgICAgICAgICAvLyByZXN1bHRpbmcgc3R5bGUgd2ls
bCBiZSBpZGVudGljYWwgdG9vLiBXZSBjb3B5IHRoZSBpbmhlcml0ZWQgcHJvcGVydGllcyBvdmVy
IGZyb20gdGhlIGNhY2hlIGFuZCBhcmUgZG9uZS4KICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCkt
PmluaGVyaXRGcm9tKCpjYWNoZUl0ZW0tPnJlbmRlclN0eWxlKTsKQEAgLTIyMzcsNyArMjIzNyw3
IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjoKICAgICAgICAgcmVz
b2x2ZXIuYXBwbHlQcm9wZXJ0eShpZCwgY3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaERl
ZmF1bHRdLCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoRGVmYXVsdCwgbWF0Y2hSZXN1bHQpOwogICAg
IH0KIAotICAgIGlmIChzdGF0ZS5zdHlsZSgpLT5pbnNpZGVMaW5rKCkgPT0gTm90SW5zaWRlTGlu
aykKKyAgICBpZiAoc3RhdGUuc3R5bGUoKS0+aW5zaWRlTGluaygpID09IEluc2lkZUxpbms6Ok5v
dEluc2lkZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGNzc1ZhbHVlW1NlbGVjdG9yQ2hl
Y2tlcjo6TWF0Y2hMaW5rXSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCShy
ZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNTcsNyArMzU3LDcgQEAgcHVibGljOgogICAgICAgICBjb25zdCBS
ZW5kZXJTdHlsZSogcGFyZW50U3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudFN0eWxlOyB9
CiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlKiByb290RWxlbWVudFN0eWxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9yb290RWxlbWVudFN0eWxlOyB9CiAKLSAgICAgICAgRUluc2lkZUxpbmsgZWxlbWVu
dExpbmtTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudExpbmtTdGF0ZTsgfQorICAgICAg
ICBJbnNpZGVMaW5rIGVsZW1lbnRMaW5rU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRM
aW5rU3RhdGU7IH0KIAogICAgICAgICB2b2lkIHNldEFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHls
ZShib29sIGlzQXBwbHkpIHsgbV9hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUgPSBpc0FwcGx5
OyB9CiAgICAgICAgIHZvaWQgc2V0QXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZShib29s
IGlzQXBwbHkpIHsgbV9hcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlID0gaXNBcHBseTsg
fQpAQCAtNDA5LDcgKzQwOSw3IEBAIHB1YmxpYzoKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBtX293bmVkUGFyZW50U3R5bGU7CiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxl
KiBtX3Jvb3RFbGVtZW50U3R5bGUgeyBudWxscHRyIH07CiAKLSAgICAgICAgRUluc2lkZUxpbmsg
bV9lbGVtZW50TGlua1N0YXRlIHsgTm90SW5zaWRlTGluayB9OworICAgICAgICBJbnNpZGVMaW5r
IG1fZWxlbWVudExpbmtTdGF0ZSB7IEluc2lkZUxpbms6Ok5vdEluc2lkZSB9OwogCiAgICAgICAg
IGJvb2wgbV9hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUgeyB0cnVlIH07CiAgICAgICAgIGJv
b2wgbV9hcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlIHsgZmFsc2UgfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAJKHJldmlzaW9uIDIzMjEy
MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTYwLDcgKzk2MCw3IEBAIHN0YXRpYyBGdW5jdGlvblR5cGUgY29uc3RydWN0
RnJhZ21lbnRzSW4KICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRV
bmtub3duOgogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAg
ICAgICAgIHJldHVybiBGdW5jdGlvblR5cGU6OkNhbm5vdE1hdGNoQW55dGhpbmc7Ci0gICAgICAg
ICAgICAvLyBGSVhNRTogU3VwcG9ydCBSRVNJWkVSLCBTRUxFQ1RJT04gZXRjLgorICAgICAgICAg
ICAgLy8gRklYTUU6IFN1cHBvcnQgUHNldWRvSWQ6OlJlc2l6ZXIsIFBzZXVkb0lkOjpTZWxlY3Rp
b24gZXRjLgogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAvLyBUaGlzIGJy
YW5jaCBpbmNsdWRlcyBjdXN0b20gcHNldWRvIGVsZW1lbnRzLgogICAgICAgICAgICAgICAgIHJl
dHVybiBGdW5jdGlvblR5cGU6OkNhbm5vdENvbXBpbGU7CkBAIC0zNzYyLDE0ICszNzYyLDE0IEBA
IHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZVJlcXUKICAgICBBU1NFUlQobV9z
ZWxlY3RvckNvbnRleHQgIT0gU2VsZWN0b3JDb250ZXh0OjpRdWVyeVNlbGVjdG9yKTsKIAogICAg
IC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSByZXF1ZXN0ZWQgcHNldWRvSWQgZXF1YWxzIHRvIHRoZSBw
c2V1ZG8gZWxlbWVudCBvZiB0aGUgcmlnaHRtb3N0IGZyYWdtZW50LgotICAgIC8vIElmIHRoZSBy
aWdodG1vc3QgZnJhZ21lbnQgZG9lc24ndCBoYXZlIGEgcHNldWRvIGVsZW1lbnQsIHRoZSByZXF1
ZXN0ZWQgcHNldWRvSWQgbmVlZCB0byBiZSBOT1BTRVVETyB0byBzdWNjZWVkIHRoZSBtYXRjaGlu
Zy4KLSAgICAvLyBPdGhlcndpc2UsIGlmIHRoZSByZXF1ZXN0ZWQgcHNldWRvSWQgaXMgbm90IE5P
UFNFVURPLCB0aGUgcmVxdWVzdGVkIHBzZXVkb0lkIG5lZWQgdG8gZXF1YWwgdG8gdGhlIHBzZXVk
byBlbGVtZW50IG9mIHRoZSByaWdodG1vc3QgZnJhZ21lbnQuCisgICAgLy8gSWYgdGhlIHJpZ2h0
bW9zdCBmcmFnbWVudCBkb2Vzbid0IGhhdmUgYSBwc2V1ZG8gZWxlbWVudCwgdGhlIHJlcXVlc3Rl
ZCBwc2V1ZG9JZCBuZWVkIHRvIGJlIFBzZXVkb0lkOjpOb25lIHRvIHN1Y2NlZWQgdGhlIG1hdGNo
aW5nLgorICAgIC8vIE90aGVyd2lzZSwgaWYgdGhlIHJlcXVlc3RlZCBwc2V1ZG9JZCBpcyBub3Qg
UHNldWRvSWQ6Ok5vbmUsIHRoZSByZXF1ZXN0ZWQgcHNldWRvSWQgbmVlZCB0byBlcXVhbCB0byB0
aGUgcHNldWRvIGVsZW1lbnQgb2YgdGhlIHJpZ2h0bW9zdCBmcmFnbWVudC4KICAgICBpZiAoZnJh
Z21lbnRNYXRjaGVzVGhlUmlnaHRtb3N0RWxlbWVudChmcmFnbWVudCkpIHsKICAgICAgICAgaWYg
KCFmcmFnbWVudC5wc2V1ZG9FbGVtZW50U2VsZWN0b3IpCi0gICAgICAgICAgICBmYWlsdXJlQ2Fz
ZXMuYXBwZW5kKG1fYXNzZW1ibGVyLmJyYW5jaDgoQXNzZW1ibGVyOjpOb3RFcXVhbCwgQXNzZW1i
bGVyOjpBZGRyZXNzKGNoZWNraW5nQ29udGV4dCwgT0JKRUNUX09GRlNFVE9GKFNlbGVjdG9yQ2hl
Y2tlcjo6Q2hlY2tpbmdDb250ZXh0LCBwc2V1ZG9JZCkpLCBBc3NlbWJsZXI6OlRydXN0ZWRJbW0z
MihOT1BTRVVETykpKTsKKyAgICAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQobV9hc3NlbWJs
ZXIuYnJhbmNoOChBc3NlbWJsZXI6Ok5vdEVxdWFsLCBBc3NlbWJsZXI6OkFkZHJlc3MoY2hlY2tp
bmdDb250ZXh0LCBPQkpFQ1RfT0ZGU0VUT0YoU2VsZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRl
eHQsIHBzZXVkb0lkKSksIEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQc2V1ZG9JZDo6Tm9uZSkpKSk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgQXNz
ZW1ibGVyOjpKdW1wIHNraXAgPSBtX2Fzc2VtYmxlci5icmFuY2g4KEFzc2VtYmxlcjo6RXF1YWws
IEFzc2VtYmxlcjo6QWRkcmVzcyhjaGVja2luZ0NvbnRleHQsIE9CSkVDVF9PRkZTRVRPRihTZWxl
Y3RvckNoZWNrZXI6OkNoZWNraW5nQ29udGV4dCwgcHNldWRvSWQpKSwgQXNzZW1ibGVyOjpUcnVz
dGVkSW1tMzIoTk9QU0VVRE8pKTsKLSAgICAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQobV9h
c3NlbWJsZXIuYnJhbmNoOChBc3NlbWJsZXI6Ok5vdEVxdWFsLCBBc3NlbWJsZXI6OkFkZHJlc3Mo
Y2hlY2tpbmdDb250ZXh0LCBPQkpFQ1RfT0ZGU0VUT0YoU2VsZWN0b3JDaGVja2VyOjpDaGVja2lu
Z0NvbnRleHQsIHBzZXVkb0lkKSksIEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKENTU1NlbGVjdG9y
Ojpwc2V1ZG9JZChmcmFnbWVudC5wc2V1ZG9FbGVtZW50U2VsZWN0b3ItPnBzZXVkb0VsZW1lbnRU
eXBlKCkpKSkpOworICAgICAgICAgICAgQXNzZW1ibGVyOjpKdW1wIHNraXAgPSBtX2Fzc2VtYmxl
ci5icmFuY2g4KEFzc2VtYmxlcjo6RXF1YWwsIEFzc2VtYmxlcjo6QWRkcmVzcyhjaGVja2luZ0Nv
bnRleHQsIE9CSkVDVF9PRkZTRVRPRihTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5nQ29udGV4dCwg
cHNldWRvSWQpKSwgQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFBzZXVkb0lkOjpOb25lKSkpOworICAgICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChtX2Fz
c2VtYmxlci5icmFuY2g4KEFzc2VtYmxlcjo6Tm90RXF1YWwsIEFzc2VtYmxlcjo6QWRkcmVzcyhj
aGVja2luZ0NvbnRleHQsIE9CSkVDVF9PRkZTRVRPRihTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5n
Q29udGV4dCwgcHNldWRvSWQpKSwgQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KENTU1NlbGVjdG9yOjpwc2V1ZG9JZChmcmFnbWVudC5wc2V1ZG9FbGVtZW50U2Vs
ZWN0b3ItPnBzZXVkb0VsZW1lbnRUeXBlKCkpKSkpKTsKICAgICAgICAgICAgIHNraXAubGluaygm
bV9hc3NlbWJsZXIpOwogICAgICAgICB9CiAgICAgfQpAQCAtMzg1MiwxNSArMzg1MiwxNSBAQCB2
b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVNYXJrCiAKICAgICBBc3NlbWJsZXI6
Okp1bXBMaXN0IHN1Y2Nlc3NDYXNlczsKIAotICAgIC8vIFdoZW4gdGhlIHJlcXVlc3RlZCBwc2V1
ZG9JZCBpc24ndCBOT1BTRVVETywgdGhlcmUncyBubyBuZWVkIHRvIG1hcmsgdGhlIHBzZXVkbyBl
bGVtZW50IHN0eWxlLgotICAgIHN1Y2Nlc3NDYXNlcy5hcHBlbmQobV9hc3NlbWJsZXIuYnJhbmNo
OChBc3NlbWJsZXI6Ok5vdEVxdWFsLCBBc3NlbWJsZXI6OkFkZHJlc3MoY2hlY2tpbmdDb250ZXh0
LCBPQkpFQ1RfT0ZGU0VUT0YoU2VsZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRleHQsIHBzZXVk
b0lkKSksIEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE5PUFNFVURPKSkpOworICAgIC8vIFdoZW4g
dGhlIHJlcXVlc3RlZCBwc2V1ZG9JZCBpc24ndCBQc2V1ZG9JZDo6Tm9uZSwgdGhlcmUncyBubyBu
ZWVkIHRvIG1hcmsgdGhlIHBzZXVkbyBlbGVtZW50IHN0eWxlLgorICAgIHN1Y2Nlc3NDYXNlcy5h
cHBlbmQobV9hc3NlbWJsZXIuYnJhbmNoOChBc3NlbWJsZXI6Ok5vdEVxdWFsLCBBc3NlbWJsZXI6
OkFkZHJlc3MoY2hlY2tpbmdDb250ZXh0LCBPQkpFQ1RfT0ZGU0VUT0YoU2VsZWN0b3JDaGVja2Vy
OjpDaGVja2luZ0NvbnRleHQsIHBzZXVkb0lkKSksIEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQc2V1ZG9JZDo6Tm9uZSkpKSk7CiAKICAgICAvLyBXaGVuIHJl
c29sdmluZyBtb2RlIGlzIENvbGxlY3RpbmdSdWxlc0lnbm9yaW5nVmlydHVhbFBzZXVkb0VsZW1l
bnRzLCB0aGVyZSdzIG5vIG5lZWQgdG8gbWFyayB0aGUgcHNldWRvIGVsZW1lbnQgc3R5bGUuCiAg
ICAgc3VjY2Vzc0Nhc2VzLmFwcGVuZChicmFuY2hPblJlc29sdmluZ01vZGVXaXRoQ2hlY2tpbmdD
b250ZXh0KEFzc2VtYmxlcjo6RXF1YWwsIFNlbGVjdG9yQ2hlY2tlcjo6TW9kZTo6Q29sbGVjdGlu
Z1J1bGVzSWdub3JpbmdWaXJ0dWFsUHNldWRvRWxlbWVudHMsIGNoZWNraW5nQ29udGV4dCkpOwog
CiAgICAgLy8gV2hlbiByZXNvbHZpbmcgbW9kZSBpcyBSZXNvbHZpbmdTdHlsZSwgbWFyayB0aGUg
cHNldWRvIHN0eWxlIGZvciBwc2V1ZG8gZWxlbWVudC4KICAgICBQc2V1ZG9JZCBkeW5hbWljUHNl
dWRvID0gQ1NTU2VsZWN0b3I6OnBzZXVkb0lkKGZyYWdtZW50LnBzZXVkb0VsZW1lbnRTZWxlY3Rv
ci0+cHNldWRvRWxlbWVudFR5cGUoKSk7Ci0gICAgaWYgKGR5bmFtaWNQc2V1ZG8gPCBGSVJTVF9J
TlRFUk5BTF9QU0VVRE9JRCkgeworICAgIGlmIChkeW5hbWljUHNldWRvIDwgUHNldWRvSWQ6OkZp
cnN0SW50ZXJuYWxQc2V1ZG9JZCkgewogICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGJyYW5j
aE9uUmVzb2x2aW5nTW9kZVdpdGhDaGVja2luZ0NvbnRleHQoQXNzZW1ibGVyOjpOb3RFcXVhbCwg
U2VsZWN0b3JDaGVja2VyOjpNb2RlOjpSZXNvbHZpbmdTdHlsZSwgY2hlY2tpbmdDb250ZXh0KSk7
CiAKICAgICAgICAgQXNzZW1ibGVyOjpBZGRyZXNzIHBzZXVkb0lEU2V0QWRkcmVzcyhjaGVja2lu
Z0NvbnRleHQsIE9CSkVDVF9PRkZTRVRPRihTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5nQ29udGV4
dCwgcHNldWRvSURTZXQpKTsKQEAgLTM4NzAsNyArMzg3MCw3IEBAIHZvaWQgU2VsZWN0b3JDb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0ZU1hcmsKICAgICB9CiAKICAgICAvLyBXZSBoYXZlIGEgcHNldWRv
RWxlbWVudFNlbGVjdG9yLCB3ZSBhcmUgbm90IGluIENvbGxlY3RpbmdSdWxlc0lnbm9yaW5nVmly
dHVhbFBzZXVkb0VsZW1lbnRzIHNvCi0gICAgLy8gd2UgbXVzdCBtYXRjaCB0aGF0IHBzZXVkbyBl
bGVtZW50LiBTaW5jZSB0aGUgY29udGV4dCdzIHBzZXVkbyBzZWxlY3RvciBpcyBOT1BTRVVETywg
d2UgZmFpbCBtYXRjaGluZworICAgIC8vIHdlIG11c3QgbWF0Y2ggdGhhdCBwc2V1ZG8gZWxlbWVu
dC4gU2luY2UgdGhlIGNvbnRleHQncyBwc2V1ZG8gc2VsZWN0b3IgaXMgUHNldWRvSWQ6Ok5vbmUs
IHdlIGZhaWwgbWF0Y2hpbmcKICAgICAvLyBhZnRlciB0aGUgbWFya2luZy4KICAgICBmYWlsdXJl
Q2FzZXMuYXBwZW5kKG1fYXNzZW1ibGVyLmp1bXAoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAwNiw4ICsyMDA2LDggQEAgdm9pZCBEb2N1bWVudDo6
dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZwogc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBE
b2N1bWVudDo6c3R5bGVGb3JFbGVtZW50SWdub3JpbmdQZW5kaW5nU3R5bGVzaGVldHMoRWxlbWVu
dCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBQc2V1ZG9JZCBwc2V1
ZG9FbGVtZW50U3BlY2lmaWVyKQogewogICAgIEFTU0VSVCgmZWxlbWVudC5kb2N1bWVudCgpID09
IHRoaXMpOwotICAgIEFTU0VSVCghZWxlbWVudC5pc1BzZXVkb0VsZW1lbnQoKSB8fCAhcHNldWRv
RWxlbWVudFNwZWNpZmllcik7Ci0gICAgQVNTRVJUKCFwc2V1ZG9FbGVtZW50U3BlY2lmaWVyIHx8
IHBhcmVudFN0eWxlKTsKKyAgICBBU1NFUlQoIWVsZW1lbnQuaXNQc2V1ZG9FbGVtZW50KCkgfHwg
cHNldWRvRWxlbWVudFNwZWNpZmllciA9PSBQc2V1ZG9JZDo6Tm9uZSk7CisgICAgQVNTRVJUKHBz
ZXVkb0VsZW1lbnRTcGVjaWZpZXIgPT0gUHNldWRvSWQ6Ok5vbmUgfHwgcGFyZW50U3R5bGUpOwog
CiAgICAgLy8gT24gaU9TIHJlcXVlc3QgZGVsZWdhdGVzIGNhbGxlZCBkdXJpbmcgc3R5bGVGb3JF
bGVtZW50IG1heSByZXN1bHQgaW4gcmUtZW50ZXJpbmcgV2ViS2l0IGFuZCBraWxsaW5nIHRoZSBz
dHlsZSByZXNvbHZlci4KICAgICBTdHlsZTo6UG9zdFJlc29sdXRpb25DYWxsYmFja0Rpc2FibGVy
IGRpc2FibGVyKCp0aGlzKTsKQEAgLTIwMTUsNyArMjAxNSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gRG9jdW1lbnQ6OnMKICAgICBTZXRGb3JTY29wZTxib29sPiBjaGFuZ2UobV9p
Z25vcmVQZW5kaW5nU3R5bGVzaGVldHMsIHRydWUpOwogICAgIGF1dG8mIHJlc29sdmVyID0gZWxl
bWVudC5zdHlsZVJlc29sdmVyKCk7CiAKLSAgICBpZiAocHNldWRvRWxlbWVudFNwZWNpZmllcikK
KyAgICBpZiAocHNldWRvRWxlbWVudFNwZWNpZmllciAhPSBQc2V1ZG9JZDo6Tm9uZSkKICAgICAg
ICAgcmV0dXJuIHJlc29sdmVyLnBzZXVkb1N0eWxlRm9yRWxlbWVudChlbGVtZW50LCBQc2V1ZG9T
dHlsZVJlcXVlc3QocHNldWRvRWxlbWVudFNwZWNpZmllciksICpwYXJlbnRTdHlsZSk7CiAKICAg
ICBhdXRvIGVsZW1lbnRTdHlsZSA9IHJlc29sdmVyLnN0eWxlRm9yRWxlbWVudChlbGVtZW50LCBw
YXJlbnRTdHlsZSk7CkBAIC0yMTMzLDcgKzIxMzMsNyBAQCBib29sIERvY3VtZW50Ojppc1BhZ2VC
b3hWaXNpYmxlKGludCBwYWdlCiB7CiAgICAgdXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gcGFnZVN0eWxlKHN0eWxlU2NvcGUoKS5yZXNvbHZl
cigpLnN0eWxlRm9yUGFnZShwYWdlSW5kZXgpKTsKLSAgICByZXR1cm4gcGFnZVN0eWxlLT52aXNp
YmlsaXR5KCkgIT0gSElEREVOOyAvLyBkaXNwbGF5IHByb3BlcnR5IGRvZXNuJ3QgYXBwbHkgdG8g
QHBhZ2UuCisgICAgcmV0dXJuIHBhZ2VTdHlsZS0+dmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6
OkhpZGRlbjsgLy8gZGlzcGxheSBwcm9wZXJ0eSBkb2Vzbid0IGFwcGx5IHRvIEBwYWdlLgogfQog
CiB2b2lkIERvY3VtZW50OjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhpbnQgcGFnZUluZGV4
LCBJbnRTaXplJiBwYWdlU2l6ZSwgaW50JiBtYXJnaW5Ub3AsIGludCYgbWFyZ2luUmlnaHQsIGlu
dCYgbWFyZ2luQm90dG9tLCBpbnQmIG1hcmdpbkxlZnQpCkBAIC0yNTY2LDcgKzI1NjYsNyBAQCB2
b2lkIERvY3VtZW50OjpzZXRWaXN1YWxseU9yZGVyZWQoKQogewogICAgIG1fdmlzdWFsbHlPcmRl
cmVkID0gdHJ1ZTsKICAgICBpZiAocmVuZGVyVmlldygpKQotICAgICAgICByZW5kZXJWaWV3KCkt
Pm11dGFibGVTdHlsZSgpLnNldFJUTE9yZGVyaW5nKFZpc3VhbE9yZGVyKTsKKyAgICAgICAgcmVu
ZGVyVmlldygpLT5tdXRhYmxlU3R5bGUoKS5zZXRSVExPcmRlcmluZyhPcmRlcjo6VmlzdWFsKTsK
IH0KIAogUmVmPERvY3VtZW50UGFyc2VyPiBEb2N1bWVudDo6Y3JlYXRlUGFyc2VyKCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTc5LDcgKzU3OSw3IEBAIHB1YmxpYzoK
ICAgICB9OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlTGF5b3V0SWdub3JlUGVuZGlu
Z1N0eWxlc2hlZXRzKFJ1blBvc3RMYXlvdXRUYXNrcyA9IFJ1blBvc3RMYXlvdXRUYXNrczo6QXN5
bmNocm9ub3VzbHkpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZUZv
ckVsZW1lbnRJZ25vcmluZ1BlbmRpbmdTdHlsZXNoZWV0cyhFbGVtZW50JiwgY29uc3QgUmVuZGVy
U3R5bGUqIHBhcmVudFN0eWxlLCBQc2V1ZG9JZCA9IE5PUFNFVURPKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9yRWxlbWVudElnbm9yaW5nUGVuZGluZ1N0eWxlc2hl
ZXRzKEVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIFBzZXVkb0lkID0g
UHNldWRvSWQ6Ok5vbmUpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHBhZ2UgYm94IChtYXJn
aW4gYm94ZXMgYW5kIHBhZ2UgYm9yZGVycykgaXMgdmlzaWJsZS4KICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGlzUGFnZUJveFZpc2libGUoaW50IHBhZ2VJbmRleCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyMiwxMiArNTIyLDEyIEBAIGJvb2wgRWxlbWVudDo6
aXNGb2N1c2FibGUoKSBjb25zdAogICAgICAgICAvLyBFbGVtZW50cyBpbiBjYW52YXMgZmFsbGJh
Y2sgY29udGVudCBhcmUgbm90IHJlbmRlcmVkLCBidXQgdGhleSBhcmUgYWxsb3dlZCB0byBiZQog
ICAgICAgICAvLyBmb2N1c2FibGUgYXMgbG9uZyBhcyB0aGVpciBjYW52YXMgaXMgZGlzcGxheWVk
IGFuZCB2aXNpYmxlLgogICAgICAgICBpZiAoYXV0byogY2FudmFzID0gYW5jZXN0b3JzT2ZUeXBl
PEhUTUxDYW52YXNFbGVtZW50PigqdGhpcykuZmlyc3QoKSkKLSAgICAgICAgICAgIHJldHVybiBj
YW52YXMtPnJlbmRlcmVyKCkgJiYgY2FudmFzLT5yZW5kZXJlcigpLT5zdHlsZSgpLnZpc2liaWxp
dHkoKSA9PSBWSVNJQkxFOworICAgICAgICAgICAgcmV0dXJuIGNhbnZhcy0+cmVuZGVyZXIoKSAm
JiBjYW52YXMtPnJlbmRlcmVyKCktPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6
OlZpc2libGU7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IEV2ZW4gaWYgd2UgYXJlIG5vdCB2aXNp
YmxlLCB3ZSBtaWdodCBoYXZlIGEgY2hpbGQgdGhhdCBpcyB2aXNpYmxlLgogICAgIC8vIEh5YXR0
IHdhbnRzIHRvIGZpeCB0aGF0IHNvbWUgZGF5IHdpdGggYSAiaGFzIHZpc2libGUgY29udGVudCIg
ZmxhZyBvciB0aGUgbGlrZS4KLSAgICBpZiAoIXJlbmRlcmVyKCkgfHwgcmVuZGVyZXIoKS0+c3R5
bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAoIXJlbmRlcmVyKCkgfHwgcmVu
ZGVyZXIoKS0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xNTQ4LDEyICsxNTQ4
LDEyIEBAIGJvb2wgRWxlbWVudDo6aGFzRGlzcGxheUNvbnRlbnRzKCkgY29uc3QKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlID0gZWxlbWVudFJh
cmVEYXRhKCktPmNvbXB1dGVkU3R5bGUoKTsKLSAgICByZXR1cm4gc3R5bGUgJiYgc3R5bGUtPmRp
c3BsYXkoKSA9PSBDT05URU5UUzsKKyAgICByZXR1cm4gc3R5bGUgJiYgc3R5bGUtPmRpc3BsYXko
KSA9PSBEaXNwbGF5VHlwZTo6Q29udGVudHM7CiB9CiAKIHZvaWQgRWxlbWVudDo6c3RvcmVEaXNw
bGF5Q29udGVudHNTdHlsZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQogewot
ICAgIEFTU0VSVChzdHlsZSAmJiBzdHlsZS0+ZGlzcGxheSgpID09IENPTlRFTlRTKTsKKyAgICBB
U1NFUlQoc3R5bGUgJiYgc3R5bGUtPmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Q29udGVudHMp
OwogICAgIEFTU0VSVCghcmVuZGVyZXIoKSB8fCBpc1BzZXVkb0VsZW1lbnQoKSk7CiAgICAgZW5z
dXJlRWxlbWVudFJhcmVEYXRhKCkuc2V0Q29tcHV0ZWRTdHlsZShXVEZNb3ZlKHN0eWxlKSk7CiB9
CkBAIC0xNjY5LDcgKzE2NjksNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEVsZW1lbnQ6OmltYWdl
U291cmNlCiAKIGJvb2wgRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUpCiB7Ci0gICAgcmV0dXJuIHN0eWxlLmRpc3BsYXkoKSAhPSBOT05FICYmIHN0eWxl
LmRpc3BsYXkoKSAhPSBDT05URU5UUzsKKyAgICByZXR1cm4gc3R5bGUuZGlzcGxheSgpICE9IERp
c3BsYXlUeXBlOjpOb25lICYmIHN0eWxlLmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Q29udGVu
dHM7CiB9CiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikK
QEAgLTI3MjIsOSArMjcyMiw5IEBAIHZvaWQgRWxlbWVudDo6d2lsbEJlY29tZUZ1bGxzY3JlZW5F
bGVtZW4KIHN0YXRpYyBQc2V1ZG9FbGVtZW50KiBiZWZvcmVPckFmdGVyUHNldWRvRWxlbWVudChF
bGVtZW50JiBob3N0LCBQc2V1ZG9JZCBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKQogewogICAgIHN3
aXRjaCAocHNldWRvRWxlbWVudFNwZWNpZmllcikgewotICAgIGNhc2UgQkVGT1JFOgorICAgIGNh
c2UgUHNldWRvSWQ6OkJlZm9yZToKICAgICAgICAgcmV0dXJuIGhvc3QuYmVmb3JlUHNldWRvRWxl
bWVudCgpOwotICAgIGNhc2UgQUZURVI6CisgICAgY2FzZSBQc2V1ZG9JZDo6QWZ0ZXI6CiAgICAg
ICAgIHJldHVybiBob3N0LmFmdGVyUHNldWRvRWxlbWVudCgpOwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMjgwMiw3ICsyODAyLDcgQEAgY29uc3QgUmVuZGVyU3R5
bGUqIEVsZW1lbnQ6OmNvbXB1dGVkU3R5bAogICAgIGlmICghc3R5bGUpCiAgICAgICAgIHN0eWxl
ID0gJnJlc29sdmVDb21wdXRlZFN0eWxlKCk7CiAKLSAgICBpZiAocHNldWRvRWxlbWVudFNwZWNp
ZmllcikgeworICAgIGlmIChwc2V1ZG9FbGVtZW50U3BlY2lmaWVyICE9IFBzZXVkb0lkOjpOb25l
KSB7CiAgICAgICAgIGlmIChhdXRvKiBjYWNoZWRQc2V1ZG9TdHlsZSA9IHN0eWxlLT5nZXRDYWNo
ZWRQc2V1ZG9TdHlsZShwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKSkKICAgICAgICAgICAgIHJldHVy
biBjYWNoZWRQc2V1ZG9TdHlsZTsKICAgICAgICAgcmV0dXJuICZyZXNvbHZlUHNldWRvRWxlbWVu
dFN0eWxlKHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCShy
ZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMjAsNyArMzIwLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEV4
Y2VwdGlvbk9yPHZvaWQ+IGluc2VydEFkamFjZW50SFRNTChjb25zdCBTdHJpbmcmIHdoZXJlLCBj
b25zdCBTdHJpbmcmIGh0bWwpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+
IGluc2VydEFkamFjZW50VGV4dChjb25zdCBTdHJpbmcmIHdoZXJlLCBjb25zdCBTdHJpbmcmIHRl
eHQpOwogCi0gICAgY29uc3QgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUoUHNldWRvSWQgPSBO
T1BTRVVETykgb3ZlcnJpZGU7CisgICAgY29uc3QgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUo
UHNldWRvSWQgPSBQc2V1ZG9JZDo6Tm9uZSkgb3ZlcnJpZGU7CiAKICAgICBib29sIG5lZWRzU3R5
bGVJbnZhbGlkYXRpb24oKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkocmV2aXNpb24g
MjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02ODAsNyArNjgwLDcgQEAgc3RhdGljIE5vZGU6OkVkaXRhYmlsaXR5IGNvbXB1dGVFZGl0YWJp
bAogICAgICAgICBhdXRvKiBzdHlsZSA9IG5vZGUtPmlzRG9jdW1lbnROb2RlKCkgPyBub2RlLT5y
ZW5kZXJTdHlsZSgpIDogY29uc3RfY2FzdDxOb2RlKj4obm9kZSktPmNvbXB1dGVkU3R5bGUoKTsK
ICAgICAgICAgaWYgKCFzdHlsZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAo
c3R5bGUtPmRpc3BsYXkoKSA9PSBOT05FKQorICAgICAgICBpZiAoc3R5bGUtPmRpc3BsYXkoKSA9
PSBEaXNwbGF5VHlwZTo6Tm9uZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogI2lmIEVOQUJMRShV
U0VSU0VMRUNUX0FMTCkKICAgICAgICAgLy8gRWxlbWVudHMgd2l0aCB1c2VyLXNlbGVjdDogYWxs
IHN0eWxlIGFyZSBjb25zaWRlcmVkIGF0b21pYwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCShyZXZpc2lvbiAy
MzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MDIsMTAgKzIwMiwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1NWR0VsZW1lbnQoKSBjb25zdCB7
IHJldHVybiBnZXRGbGFnKElzU1ZHRmxhZyk7IH0KICAgICBib29sIGlzTWF0aE1MRWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNNYXRoTUxGbGFnKTsgfQogCi0gICAgYm9vbCBpc1Bz
ZXVkb0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBwc2V1ZG9JZCgpICE9IE5PUFNFVURPOyB9Ci0g
ICAgYm9vbCBpc0JlZm9yZVBzZXVkb0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBwc2V1ZG9JZCgp
ID09IEJFRk9SRTsgfQotICAgIGJvb2wgaXNBZnRlclBzZXVkb0VsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiBwc2V1ZG9JZCgpID09IEFGVEVSOyB9Ci0gICAgUHNldWRvSWQgcHNldWRvSWQoKSBjb25z
dCB7IHJldHVybiAoaXNFbGVtZW50Tm9kZSgpICYmIGhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxi
YWNrcygpKSA/IGN1c3RvbVBzZXVkb0lkKCkgOiBOT1BTRVVETzsgfQorICAgIGJvb2wgaXNQc2V1
ZG9FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gcHNldWRvSWQoKSAhPSBQc2V1ZG9JZDo6Tm9uZTsg
fQorICAgIGJvb2wgaXNCZWZvcmVQc2V1ZG9FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gcHNldWRv
SWQoKSA9PSBQc2V1ZG9JZDo6QmVmb3JlOyB9CisgICAgYm9vbCBpc0FmdGVyUHNldWRvRWxlbWVu
dCgpIGNvbnN0IHsgcmV0dXJuIHBzZXVkb0lkKCkgPT0gUHNldWRvSWQ6OkFmdGVyOyB9CisgICAg
UHNldWRvSWQgcHNldWRvSWQoKSBjb25zdCB7IHJldHVybiAoaXNFbGVtZW50Tm9kZSgpICYmIGhh
c0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpKSA/IGN1c3RvbVBzZXVkb0lkKCkgOiBQc2V1
ZG9JZDo6Tm9uZTsgfQogCiAgICAgdmlydHVhbCBib29sIGlzTWVkaWFDb250cm9sRWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzTWVkaWFDb250cm9s
cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC00MzIsNyArNDMyLDcgQEAgcHVibGljOgog
ICAgIC8vIFdyYXBwZXIgZm9yIG5vZGVzIHRoYXQgZG9uJ3QgaGF2ZSBhIHJlbmRlcmVyLCBidXQg
c3RpbGwgY2FjaGUgdGhlIHN0eWxlIChsaWtlIEhUTUxPcHRpb25FbGVtZW50KS4KICAgICBjb25z
dCBSZW5kZXJTdHlsZSogcmVuZGVyU3R5bGUoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgY29uc3Qg
UmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUoUHNldWRvSWQgcHNldWRvRWxlbWVudFNwZWNpZmll
ciA9IE5PUFNFVURPKTsKKyAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlclN0eWxlKiBjb21wdXRlZFN0
eWxlKFBzZXVkb0lkIHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIgPSBQc2V1ZG9JZDo6Tm9uZSk7CiAK
ICAgICBlbnVtIGNsYXNzIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IHsKICAgICAgICAgRG9u
ZSwKQEAgLTY0Myw3ICs2NDMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUHNldWRvSWQgY3Vz
dG9tUHNldWRvSWQoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKGhhc0N1c3RvbVN0eWxl
UmVzb2x2ZUNhbGxiYWNrcygpKTsKLSAgICAgICAgcmV0dXJuIE5PUFNFVURPOworICAgICAgICBy
ZXR1cm4gUHNldWRvSWQ6Ok5vbmU7CiAgICAgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZW1vdmVkTGFzdFJlZigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCShyZXZpc2lvbiAy
MzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02ODUsNyArNjg1LDcgQEAgUG9zaXRpb24gUG9zaXRpb246OnVwc3RyZWFtKEVkaXRpbmdC
b3VuZAogCiAgICAgICAgIC8vIHNraXAgcG9zaXRpb24gaW4gdW5yZW5kZXJlZCBvciBpbnZpc2li
bGUgbm9kZQogICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY3VycmVudE5vZGUucmVu
ZGVyZXIoKTsKLSAgICAgICAgaWYgKCFyZW5kZXJlciB8fCByZW5kZXJlci0+c3R5bGUoKS52aXNp
YmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICAgICAgaWYgKCFyZW5kZXJlciB8fCByZW5kZXJlci0+
c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICBlbnN1cmVMaW5lQm94ZXNJZk5lZWRlZCgqcmVuZGVyZXIpOwog
ICAgICAgICBpZiAocnVsZSA9PSBDYW5Dcm9zc0VkaXRpbmdCb3VuZGFyeSAmJiBib3VuZGFyeUNy
b3NzZWQpIHsKQEAgLTgyMCw3ICs4MjAsNyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6ZG93bnN0cmVh
bShFZGl0aW5nQm91CiAKICAgICAgICAgLy8gc2tpcCBwb3NpdGlvbiBpbiB1bnJlbmRlcmVkIG9y
IGludmlzaWJsZSBub2RlCiAgICAgICAgIGF1dG8qIHJlbmRlcmVyID0gY3VycmVudE5vZGUucmVu
ZGVyZXIoKTsKLSAgICAgICAgaWYgKCFyZW5kZXJlciB8fCByZW5kZXJlci0+c3R5bGUoKS52aXNp
YmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICAgICAgaWYgKCFyZW5kZXJlciB8fCByZW5kZXJlci0+
c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICBlbnN1cmVMaW5lQm94ZXNJZk5lZWRlZCgqcmVuZGVyZXIpOwog
ICAgICAgICBpZiAocnVsZSA9PSBDYW5Dcm9zc0VkaXRpbmdCb3VuZGFyeSAmJiBib3VuZGFyeUNy
b3NzZWQpIHsKQEAgLTk5NSw3ICs5OTUsNyBAQCBib29sIFBvc2l0aW9uOjppc0NhbmRpZGF0ZSgp
IGNvbnN0CiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
aWYgKHJlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChy
ZW5kZXJlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKHJlbmRlcmVyLT5pc0JSKCkpIHsKQEAgLTEw
NTgsNyArMTA1OCw3IEBAIGJvb2wgUG9zaXRpb246OnJlbmRlcnNJbkRpZmZlcmVudFBvc2l0aW8K
ICAgICBpZiAoIXBvc2l0aW9uUmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGlmIChyZW5kZXJlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBwb3NpdGlv
blJlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChyZW5k
ZXJlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSB8fCBwb3Np
dGlvblJlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxl
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgaWYgKGRlcHJlY2F0ZWROb2RlKCkg
PT0gcG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L1Bvc2l0aW9uSXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Q
b3NpdGlvbkl0ZXJhdG9yLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsNyArMTUyLDcg
QEAgYm9vbCBQb3NpdGlvbkl0ZXJhdG9yOjppc0NhbmRpZGF0ZSgpIGNvbgogICAgIGlmICghcmVu
ZGVyZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBpZiAocmVuZGVyZXItPnN0
eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgp
LnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBpZiAocmVuZGVyZXItPmlzQlIoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Qc2V1ZG9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUHNl
dWRvRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Q
c2V1ZG9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsOSArNTQsOSBAQCBTdHJpbmcg
UHNldWRvRWxlbWVudDo6cHNldWRvRWxlbWVudE5hbWVGCiAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IFN0cmluZz4gYWZ0ZXIoTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIjo6YWZ0ZXIi
KSk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gYmVmb3JlKE1BS0Vf
U1RBVElDX1NUUklOR19JTVBMKCI6OmJlZm9yZSIpKTsKICAgICBzd2l0Y2ggKHBzZXVkb0lkKSB7
Ci0gICAgY2FzZSBBRlRFUjoKKyAgICBjYXNlIFBzZXVkb0lkOjpBZnRlcjoKICAgICAgICAgcmV0
dXJuIGFmdGVyOwotICAgIGNhc2UgQkVGT1JFOgorICAgIGNhc2UgUHNldWRvSWQ6OkJlZm9yZToK
ICAgICAgICAgcmV0dXJuIGJlZm9yZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKQEAgLTY4LDcgKzY4LDcgQEAgUHNldWRvRWxlbWVudDo6UHNldWRvRWxlbWVu
dChFbGVtZW50JiBobwogICAgICwgbV9ob3N0RWxlbWVudCgmaG9zdCkKICAgICAsIG1fcHNldWRv
SWQocHNldWRvSWQpCiB7Ci0gICAgQVNTRVJUKHBzZXVkb0lkID09IEJFRk9SRSB8fCBwc2V1ZG9J
ZCA9PSBBRlRFUik7CisgICAgQVNTRVJUKHBzZXVkb0lkID09IFBzZXVkb0lkOjpCZWZvcmUgfHwg
cHNldWRvSWQgPT0gUHNldWRvSWQ6OkFmdGVyKTsKICAgICBzZXRIYXNDdXN0b21TdHlsZVJlc29s
dmVDYWxsYmFja3MoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Zpc2l0ZWRMaW5r
U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9WaXNpdGVkTGlua1N0
YXRlLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Zpc2l0ZWRM
aW5rU3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSwxOCArODUsMTggQEAgdm9pZCBWaXNp
dGVkTGlua1N0YXRlOjppbnZhbGlkYXRlU3R5bGVGbwogICAgIH0KIH0KIAotRUluc2lkZUxpbmsg
VmlzaXRlZExpbmtTdGF0ZTo6ZGV0ZXJtaW5lTGlua1N0YXRlU2xvd0Nhc2UoY29uc3QgRWxlbWVu
dCYgZWxlbWVudCkKK0luc2lkZUxpbmsgVmlzaXRlZExpbmtTdGF0ZTo6ZGV0ZXJtaW5lTGlua1N0
YXRlU2xvd0Nhc2UoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBBU1NFUlQoZWxlbWVu
dC5pc0xpbmsoKSk7CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcqIGF0dHJpYnV0ZSA9IGxpbmtB
dHRyaWJ1dGUoZWxlbWVudCk7CiAgICAgaWYgKCFhdHRyaWJ1dGUgfHwgYXR0cmlidXRlLT5pc051
bGwoKSkKLSAgICAgICAgcmV0dXJuIE5vdEluc2lkZUxpbms7CisgICAgICAgIHJldHVybiBJbnNp
ZGVMaW5rOjpOb3RJbnNpZGU7CiAKICAgICAvLyBBbiBlbXB0eSBocmVmIHJlZmVycyB0byB0aGUg
ZG9jdW1lbnQgaXRzZWxmIHdoaWNoIGlzIGFsd2F5cyB2aXNpdGVkLiBJdCBpcyB1c2VmdWwgdG8g
Y2hlY2sgdGhpcyBleHBsaWNpdGx5IHNvCiAgICAgLy8gdGhhdCB2aXNpdGVkIGxpbmtzIGNhbiBi
ZSB0ZXN0ZWQgaW4gcGxhdGZvcm0gaW5kZXBlbmRlbnQgbWFubmVyLCB3aXRob3V0IGV4cGxpY2l0
IHN1cHBvcnQgaW4gdGhlIHRlc3QgaGFybmVzcy4KICAgICBpZiAoYXR0cmlidXRlLT5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBJbnNpZGVWaXNpdGVkTGluazsKKyAgICAgICAgcmV0dXJuIElu
c2lkZUxpbms6Okluc2lkZVZpc2l0ZWQ7CiAKICAgICBTaGFyZWRTdHJpbmdIYXNoIGhhc2g7CiAg
ICAgaWYgKGlzPEhUTUxBbmNob3JFbGVtZW50PihlbGVtZW50KSkKQEAgLTEwNSwyMiArMTA1LDIy
IEBAIEVJbnNpZGVMaW5rIFZpc2l0ZWRMaW5rU3RhdGU6OmRldGVybWluZUwKICAgICAgICAgaGFz
aCA9IGNvbXB1dGVWaXNpdGVkTGlua0hhc2goZWxlbWVudC5kb2N1bWVudCgpLmJhc2VVUkwoKSwg
KmF0dHJpYnV0ZSk7CiAKICAgICBpZiAoIWhhc2gpCi0gICAgICAgIHJldHVybiBJbnNpZGVVbnZp
c2l0ZWRMaW5rOworICAgICAgICByZXR1cm4gSW5zaWRlTGluazo6SW5zaWRlVW52aXNpdGVkOwog
CiAgICAgRnJhbWUqIGZyYW1lID0gZWxlbWVudC5kb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYg
KCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIEluc2lkZVVudmlzaXRlZExpbms7CisgICAgICAgIHJl
dHVybiBJbnNpZGVMaW5rOjpJbnNpZGVVbnZpc2l0ZWQ7CiAKICAgICBQYWdlKiBwYWdlID0gZnJh
bWUtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiBJbnNpZGVVbnZpc2l0
ZWRMaW5rOworICAgICAgICByZXR1cm4gSW5zaWRlTGluazo6SW5zaWRlVW52aXNpdGVkOwogCiAg
ICAgbV9saW5rc0NoZWNrZWRGb3JWaXNpdGVkU3RhdGUuYWRkKGhhc2gpOwogCiAgICAgaWYgKCFw
YWdlLT52aXNpdGVkTGlua1N0b3JlKCkuaXNMaW5rVmlzaXRlZCgqcGFnZSwgaGFzaCwgZWxlbWVu
dC5kb2N1bWVudCgpLmJhc2VVUkwoKSwgKmF0dHJpYnV0ZSkpCi0gICAgICAgIHJldHVybiBJbnNp
ZGVVbnZpc2l0ZWRMaW5rOworICAgICAgICByZXR1cm4gSW5zaWRlTGluazo6SW5zaWRlVW52aXNp
dGVkOwogCi0gICAgcmV0dXJuIEluc2lkZVZpc2l0ZWRMaW5rOworICAgIHJldHVybiBJbnNpZGVM
aW5rOjpJbnNpZGVWaXNpdGVkOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vVmlzaXRlZExpbmtTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9WaXNpdGVkTGlua1N0YXRlLmgJKHJldmlzaW9uIDIzMjEyMykKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9WaXNpdGVkTGlua1N0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDE5ICs0NCwxOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGludmFsaWRhdGVTdHlsZUZvckFsbExp
bmtzKCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlU3R5bGVGb3JMaW5rKFNoYXJlZFN0cmluZ0hhc2gp
OwotICAgIEVJbnNpZGVMaW5rIGRldGVybWluZUxpbmtTdGF0ZShjb25zdCBFbGVtZW50Jik7Cisg
ICAgSW5zaWRlTGluayBkZXRlcm1pbmVMaW5rU3RhdGUoY29uc3QgRWxlbWVudCYpOwogCiBwcml2
YXRlOgotICAgIEVJbnNpZGVMaW5rIGRldGVybWluZUxpbmtTdGF0ZVNsb3dDYXNlKGNvbnN0IEVs
ZW1lbnQmKTsKKyAgICBJbnNpZGVMaW5rIGRldGVybWluZUxpbmtTdGF0ZVNsb3dDYXNlKGNvbnN0
IEVsZW1lbnQmKTsKIAogICAgIERvY3VtZW50JiBtX2RvY3VtZW50OwogICAgIEhhc2hTZXQ8U2hh
cmVkU3RyaW5nSGFzaCwgU2hhcmVkU3RyaW5nSGFzaEhhc2g+IG1fbGlua3NDaGVja2VkRm9yVmlz
aXRlZFN0YXRlOwogfTsKIAotaW5saW5lIEVJbnNpZGVMaW5rIFZpc2l0ZWRMaW5rU3RhdGU6OmRl
dGVybWluZUxpbmtTdGF0ZShjb25zdCBFbGVtZW50JiBlbGVtZW50KQoraW5saW5lIEluc2lkZUxp
bmsgVmlzaXRlZExpbmtTdGF0ZTo6ZGV0ZXJtaW5lTGlua1N0YXRlKGNvbnN0IEVsZW1lbnQmIGVs
ZW1lbnQpCiB7CiAgICAgaWYgKCFlbGVtZW50LmlzTGluaygpKQotICAgICAgICByZXR1cm4gTm90
SW5zaWRlTGluazsKKyAgICAgICAgcmV0dXJuIEluc2lkZUxpbms6Ok5vdEluc2lkZTsKICAgICBy
ZXR1cm4gZGV0ZXJtaW5lTGlua1N0YXRlU2xvd0Nhc2UoZWxlbWVudCk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU2LDcgKzQ1Niw3
IEBAIHN0YXRpYyBib29sIGlzU3BlY2lhbEhUTUxFbGVtZW50KGNvbnN0IE4KICAgICBpZiAoIXJl
bmRlcmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAocmVuZGVyZXItPnN0eWxl
KCkuZGlzcGxheSgpID09IFRBQkxFIHx8IHJlbmRlcmVyLT5zdHlsZSgpLmRpc3BsYXkoKSA9PSBJ
TkxJTkVfVEFCTEUpCisgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNw
bGF5VHlwZTo6VGFibGUgfHwgcmVuZGVyZXItPnN0eWxlKCkuZGlzcGxheSgpID09IERpc3BsYXlU
eXBlOjpJbmxpbmVUYWJsZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAocmVuZGVy
ZXItPnN0eWxlKCkuaXNGbG9hdGluZygpKQpAQCAtOTMzLDcgKzkzMyw3IEBAIFJlZjxFbGVtZW50
PiBjcmVhdGVUYWJTcGFuRWxlbWVudChEb2N1bWUKIGJvb2wgaXNOb2RlUmVuZGVyZWQoY29uc3Qg
Tm9kZSYgbm9kZSkKIHsKICAgICBhdXRvKiByZW5kZXJlciA9IG5vZGUucmVuZGVyZXIoKTsKLSAg
ICByZXR1cm4gcmVuZGVyZXIgJiYgcmVuZGVyZXItPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJ
U0lCTEU7CisgICAgcmV0dXJuIHJlbmRlcmVyICYmIHJlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxp
dHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlOwogfQogCiB1bnNpZ25lZCBudW1FbmNsb3NpbmdN
YWlsQmxvY2txdW90ZXMoY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKQpJbmRleDogU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjAs
MTEgKzU2MCwxMSBAQCB2b2lkIFRleHRJdGVyYXRvcjo6YWR2YW5jZSgpCiAKIHN0YXRpYyBib29s
IGhhc1Zpc2libGVUZXh0Tm9kZShSZW5kZXJUZXh0JiByZW5kZXJlcikKIHsKLSAgICBpZiAocmVu
ZGVyZXIuc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkKKyAgICBpZiAocmVuZGVyZXIu
c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgaWYgKGlzPFJlbmRlclRleHRGcmFnbWVudD4ocmVuZGVyZXIpKSB7CiAg
ICAgICAgIGlmIChhdXRvIGZpcnN0TGV0dGVyID0gZG93bmNhc3Q8UmVuZGVyVGV4dEZyYWdtZW50
PihyZW5kZXJlcikuZmlyc3RMZXR0ZXIoKSkgewotICAgICAgICAgICAgaWYgKGZpcnN0TGV0dGVy
LT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKQorICAgICAgICAgICAgaWYgKGZpcnN0
TGV0dGVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpAQCAtNjE4LDcgKzYx
OCw3IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGlmIChy
ZW5kZXJlci5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFICYmICEobV9iZWhhdmlvciAm
IFRleHRJdGVyYXRvcklnbm9yZXNTdHlsZVZpc2liaWxpdHkpKQorICAgICAgICBpZiAocmVuZGVy
ZXIuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhKG1fYmVo
YXZpb3IgJiBUZXh0SXRlcmF0b3JJZ25vcmVzU3R5bGVWaXNpYmlsaXR5KSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgaW50IHJlbmRlcmVyVGV4dExlbmd0aCA9IHJlbmRlcmVy
VGV4dC5sZW5ndGgoKTsKICAgICAgICAgaW50IGVuZCA9ICgmdGV4dE5vZGUgPT0gbV9lbmRDb250
YWluZXIpID8gbV9lbmRPZmZzZXQgOiBJTlRfTUFYOwpAQCAtNjMyLDcgKzYzMiw3IEBAIGJvb2wg
VGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiAgICAgfQogCiAgICAgaWYgKGNvbnN0IGF1
dG8qIGxheW91dCA9IHJlbmRlcmVyLnNpbXBsZUxpbmVMYXlvdXQoKSkgewotICAgICAgICBpZiAo
cmVuZGVyZXIuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSAmJiAhKG1fYmVoYXZpb3Ig
JiBUZXh0SXRlcmF0b3JJZ25vcmVzU3R5bGVWaXNpYmlsaXR5KSkKKyAgICAgICAgaWYgKHJlbmRl
cmVyLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgJiYgIShtX2Jl
aGF2aW9yICYgVGV4dEl0ZXJhdG9ySWdub3Jlc1N0eWxlVmlzaWJpbGl0eSkpCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgQVNTRVJUKHJlbmRlcmVyLnBhcmVudCgpKTsKICAgICAg
ICAgQVNTRVJUKGlzPFJlbmRlckJsb2NrRmxvdz4oKnJlbmRlcmVyLnBhcmVudCgpKSk7CkBAIC03
MjcsNyArNzI3LDcgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICAg
ICAgaGFuZGxlVGV4dE5vZGVGaXJzdExldHRlcihkb3duY2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQ+
KHJlbmRlcmVyKSk7CiAKICAgICBpZiAoIXJlbmRlcmVyLmZpcnN0VGV4dEJveCgpICYmIHJlbmRl
cmVyVGV4dC5sZW5ndGgoKSAmJiAhc2hvdWxkSGFuZGxlRmlyc3RMZXR0ZXIpIHsKLSAgICAgICAg
aWYgKHJlbmRlcmVyLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgJiYgIShtX2JlaGF2
aW9yICYgVGV4dEl0ZXJhdG9ySWdub3Jlc1N0eWxlVmlzaWJpbGl0eSkpCisgICAgICAgIGlmIChy
ZW5kZXJlci5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICEo
bV9iZWhhdmlvciAmIFRleHRJdGVyYXRvcklnbm9yZXNTdHlsZVZpc2liaWxpdHkpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBtX2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENvbGxh
cHNlZFNwYWNlID0gdHJ1ZTsgLy8gZW50aXJlIGJsb2NrIGlzIGNvbGxhcHNlZCBzcGFjZQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTc1Myw3ICs3NTMsNyBAQCB2b2lkIFRleHRJdGVyYXRvcjo6
aGFuZGxlVGV4dEJveCgpCiAgICAgVGV4dCYgdGV4dE5vZGUgPSBkb3duY2FzdDxUZXh0PigqbV9u
b2RlKTsKIAogICAgIGF1dG8mIHJlbmRlcmVyID0gbV9maXJzdExldHRlclRleHQgPyAqbV9maXJz
dExldHRlclRleHQgOiAqdGV4dE5vZGUucmVuZGVyZXIoKTsKLSAgICBpZiAocmVuZGVyZXIuc3R5
bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSAmJiAhKG1fYmVoYXZpb3IgJiBUZXh0SXRlcmF0
b3JJZ25vcmVzU3R5bGVWaXNpYmlsaXR5KSkgeworICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLnZp
c2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICEobV9iZWhhdmlvciAmIFRleHRJ
dGVyYXRvcklnbm9yZXNTdHlsZVZpc2liaWxpdHkpKSB7CiAgICAgICAgIG1fdGV4dEJveCA9IG51
bGxwdHI7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC04NDgsNyArODQ4LDcgQEAgc3RhdGlj
IGlubGluZSBSZW5kZXJUZXh0KiBmaXJzdFJlbmRlclRleAogdm9pZCBUZXh0SXRlcmF0b3I6Omhh
bmRsZVRleHROb2RlRmlyc3RMZXR0ZXIoUmVuZGVyVGV4dEZyYWdtZW50JiByZW5kZXJlcikKIHsK
ICAgICBpZiAoYXV0byogZmlyc3RMZXR0ZXIgPSByZW5kZXJlci5maXJzdExldHRlcigpKSB7Ci0g
ICAgICAgIGlmIChmaXJzdExldHRlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSAm
JiAhKG1fYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JJZ25vcmVzU3R5bGVWaXNpYmlsaXR5KSkKKyAg
ICAgICAgaWYgKGZpcnN0TGV0dGVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5
OjpWaXNpYmxlICYmICEobV9iZWhhdmlvciAmIFRleHRJdGVyYXRvcklnbm9yZXNTdHlsZVZpc2li
aWxpdHkpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoYXV0byogZmlyc3RMZXR0
ZXJUZXh0ID0gZmlyc3RSZW5kZXJUZXh0SW5GaXJzdExldHRlcihmaXJzdExldHRlcikpIHsKICAg
ICAgICAgICAgIG1faGFuZGxlZEZpcnN0TGV0dGVyID0gdHJ1ZTsKQEAgLTg2Nyw3ICs4NjcsNyBA
QCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlUmVwbGFjZWRFbGVtZW50CiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIGF1dG8mIHJlbmRlcmVyID0gKm1fbm9kZS0+cmVuZGVyZXIoKTsKLSAg
ICBpZiAocmVuZGVyZXIuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSAmJiAhKG1fYmVo
YXZpb3IgJiBUZXh0SXRlcmF0b3JJZ25vcmVzU3R5bGVWaXNpYmlsaXR5KSkKKyAgICBpZiAocmVu
ZGVyZXIuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhKG1f
YmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JJZ25vcmVzU3R5bGVWaXNpYmlsaXR5KSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKG1fbGFzdFRleHROb2RlRW5kZWRXaXRoQ29sbGFwc2Vk
U3BhY2UpIHsKQEAgLTExMTUsNyArMTExNSw3IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpzaG91bGRS
ZXByZXNlbnROb2RlT2YKICAgICAvLyBJZiB0aGlzIG5vZGUgaXMgdW5yZW5kZXJlZCBvciBpbnZp
c2libGUgdGhlIFZpc2libGVQb3NpdGlvbiBjaGVja3MgYmVsb3cgd29uJ3QgaGF2ZSBtdWNoIG1l
YW5pbmcuCiAgICAgLy8gQWRkaXRpb25hbGx5LCBpZiB0aGUgcmFuZ2Ugd2UgYXJlIGl0ZXJhdGlu
ZyBvdmVyIGNvbnRhaW5zIGh1Z2Ugc2VjdGlvbnMgb2YgdW5yZW5kZXJlZCBjb250ZW50LCAKICAg
ICAvLyB3ZSB3b3VsZCBjcmVhdGUgVmlzaWJsZVBvc2l0aW9ucyBvbiBldmVyeSBjYWxsIHRvIHRo
aXMgZnVuY3Rpb24gd2l0aG91dCB0aGlzIGNoZWNrLgotICAgIGlmICghbV9ub2RlLT5yZW5kZXJl
cigpIHx8IG1fbm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJM
RQorICAgIGlmICghbV9ub2RlLT5yZW5kZXJlcigpIHx8IG1fbm9kZS0+cmVuZGVyZXIoKS0+c3R5
bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZQogICAgICAgICB8fCAoaXM8
UmVuZGVyQmxvY2tGbG93PigqbV9ub2RlLT5yZW5kZXJlcigpKSAmJiAhZG93bmNhc3Q8UmVuZGVy
QmxvY2tGbG93PigqbV9ub2RlLT5yZW5kZXJlcigpKS5oZWlnaHQoKSAmJiAhaXM8SFRNTEJvZHlF
bGVtZW50PigqbV9ub2RlKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTMzMSwxMCAr
MTMzMSwxMCBAQCB2b2lkIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmFkCiAgICAg
ICAgIGlmICghbV9oYW5kbGVkTm9kZSAmJiAhKG1fbm9kZSA9PSBtX2VuZENvbnRhaW5lciAmJiAh
bV9lbmRPZmZzZXQpKSB7CiAgICAgICAgICAgICBhdXRvKiByZW5kZXJlciA9IG1fbm9kZS0+cmVu
ZGVyZXIoKTsKICAgICAgICAgICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNUZXh0KCkg
JiYgbV9ub2RlLT5pc1RleHROb2RlKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAocmVuZGVyZXIt
PnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUgJiYgbV9vZmZzZXQgPiAwKQorICAgICAg
ICAgICAgICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0
eTo6VmlzaWJsZSAmJiBtX29mZnNldCA+IDApCiAgICAgICAgICAgICAgICAgICAgIG1faGFuZGxl
ZE5vZGUgPSBoYW5kbGVUZXh0Tm9kZSgpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChyZW5kZXJl
ciAmJiAocmVuZGVyZXItPmlzSW1hZ2UoKSB8fCByZW5kZXJlci0+aXNXaWRnZXQoKSkpIHsKLSAg
ICAgICAgICAgICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lC
TEUgJiYgbV9vZmZzZXQgPiAwKQorICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+c3R5bGUo
KS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiBtX29mZnNldCA+IDApCiAg
ICAgICAgICAgICAgICAgICAgIG1faGFuZGxlZE5vZGUgPSBoYW5kbGVSZXBsYWNlZEVsZW1lbnQo
KTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG1faGFuZGxlZE5vZGUgPSBo
YW5kbGVOb25UZXh0Tm9kZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxl
VW5pdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVu
aXRzLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNp
YmxlVW5pdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgxLDcgKzExODEsNyBAQCBOb2RlKiBm
aW5kU3RhcnRPZlBhcmFncmFwaChOb2RlKiBzdGFydE5vCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgfQogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSByLT5zdHlsZSgp
OwotICAgICAgICBpZiAoc3R5bGUudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpIHsKKyAgICAgICAg
aWYgKHN0eWxlLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKSB7CiAgICAgICAg
ICAgICBuID0gTm9kZVRyYXZlcnNhbDo6cHJldmlvdXNQb3N0T3JkZXIoKm4sIHN0YXJ0QmxvY2sp
OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KQEAgLTEyNDMsNyArMTI0Myw3IEBA
IE5vZGUqIGZpbmRFbmRPZlBhcmFncmFwaChOb2RlKiBzdGFydE5vZGUKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHIt
PnN0eWxlKCk7Ci0gICAgICAgIGlmIChzdHlsZS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkgewor
ICAgICAgICBpZiAoc3R5bGUudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpIHsK
ICAgICAgICAgICAgIG4gPSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpuLCBzdGF5SW5zaWRlQmxvY2sp
OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0JKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtOTIsMzcgKzky
LDM2IEBAIHZvaWQgRWRpdG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEIKICAgICAgICAg
cmV0dXJuOwogICAgICAgICAKICAgICBjb25zdCBjaGFyICpuZXdWYWx1ZSA9IG51bGxwdHI7Ci0g
ICAgRVRleHRBbGlnbiB0ZXh0QWxpZ24gPSAqdmFsdWU7CisgICAgVGV4dEFsaWduTW9kZSB0ZXh0
QWxpZ24gPSAqdmFsdWU7CiAgICAgc3dpdGNoICh0ZXh0QWxpZ24pIHsKLSAgICAgICAgY2FzZSBU
QVNUQVJUOgotICAgICAgICBjYXNlIFRBRU5EOgotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0
Y2ggKGRpcmVjdGlvbikgewotICAgICAgICAgICAgICAgIGNhc2UgTmF0dXJhbFdyaXRpbmdEaXJl
Y3Rpb246Ci0gICAgICAgICAgICAgICAgICAgIC8vIG5vLW9wCi0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9u
OgotICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0IjsKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBSaWdodFRvTGVmdFdyaXRpbmdEaXJl
Y3Rpb246Ci0gICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0IjsKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotICAgICAgICBjYXNlIExFRlQ6Ci0gICAgICAgIGNhc2UgV0VCS0lUX0xFRlQ6Ci0g
ICAgICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpT
dGFydDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkVuZDogeworICAgICAgICBzd2l0Y2ggKGRp
cmVjdGlvbikgeworICAgICAgICBjYXNlIE5hdHVyYWxXcml0aW5nRGlyZWN0aW9uOgorICAgICAg
ICAgICAgLy8gbm8tb3AKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFJJR0hUOgot
ICAgICAgICBjYXNlIFdFQktJVF9SSUdIVDoKKyAgICAgICAgY2FzZSBMZWZ0VG9SaWdodFdyaXRp
bmdEaXJlY3Rpb246CiAgICAgICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0IjsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIENFTlRFUjoKLSAgICAgICAgY2FzZSBXRUJLSVRfQ0VOVEVS
OgotICAgICAgICBjYXNlIEpVU1RJRlk6Ci0gICAgICAgICAgICAvLyBuby1vcAorICAgICAgICBj
YXNlIFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbjoKKyAgICAgICAgICAgIG5ld1ZhbHVlID0g
InJpZ2h0IjsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CisgICAgY2FzZSBUZXh0QWxpZ25N
b2RlOjpXZWJLaXRMZWZ0OgorICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CisgICAgY2FzZSBUZXh0QWxpZ25N
b2RlOjpXZWJLaXRSaWdodDoKKyAgICAgICAgbmV3VmFsdWUgPSAibGVmdCI7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6Q2VudGVyOgorICAgIGNhc2UgVGV4dEFsaWdu
TW9kZTo6V2ViS2l0Q2VudGVyOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKKyAg
ICAgICAgLy8gbm8tb3AKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaWYgKCFuZXdWYWx1
ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAJKHJldmlzaW9u
IDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjEwLDcgKzIxMCw3IEBAIGJvb2wgSFRNTEFyZWFFbGVtZW50Ojppc01v
dXNlRm9jdXNhYmxlKCkKIGJvb2wgSFRNTEFyZWFFbGVtZW50Ojppc0ZvY3VzYWJsZSgpIGNvbnN0
CiB7CiAgICAgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IGltYWdlID0gaW1hZ2VFbGVtZW50KCk7
Ci0gICAgaWYgKCFpbWFnZSB8fCAhaW1hZ2UtPnJlbmRlcmVyKCkgfHwgaW1hZ2UtPnJlbmRlcmVy
KCktPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKCFpbWFnZSB8fCAh
aW1hZ2UtPnJlbmRlcmVyKCkgfHwgaW1hZ2UtPnJlbmRlcmVyKCktPnN0eWxlKCkudmlzaWJpbGl0
eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IHJldHVybiBzdXBwb3J0c0ZvY3VzKCkgJiYgRWxlbWVudDo6dGFiSW5kZXgoKSA+PSAwOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAkocmV2aXNpb24gMjMyMTIz
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTYsMTEgKzExNiwxMSBAQCBib29sIEhUTUxGb3JtRWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZChjCiAgICAgaWYgKCFwYXJlbnRJc1RhYmxlRWxlbWVudFBhcnQpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCi0gICAgRURpc3BsYXkgZGlzcGxheSA9IHN0eWxlLmRpc3BsYXkoKTsKLSAg
ICBib29sIGZvcm1Jc1RhYmxlUGFydCA9IGRpc3BsYXkgPT0gVEFCTEUgfHwgZGlzcGxheSA9PSBJ
TkxJTkVfVEFCTEUgfHwgZGlzcGxheSA9PSBUQUJMRV9ST1dfR1JPVVAKLSAgICAgICAgfHwgZGlz
cGxheSA9PSBUQUJMRV9IRUFERVJfR1JPVVAgfHwgZGlzcGxheSA9PSBUQUJMRV9GT09URVJfR1JP
VVAgfHwgZGlzcGxheSA9PSBUQUJMRV9ST1cKLSAgICAgICAgfHwgZGlzcGxheSA9PSBUQUJMRV9D
T0xVTU5fR1JPVVAgfHwgZGlzcGxheSA9PSBUQUJMRV9DT0xVTU4gfHwgZGlzcGxheSA9PSBUQUJM
RV9DRUxMCi0gICAgICAgIHx8IGRpc3BsYXkgPT0gVEFCTEVfQ0FQVElPTjsKKyAgICBEaXNwbGF5
VHlwZSBkaXNwbGF5ID0gc3R5bGUuZGlzcGxheSgpOworICAgIGJvb2wgZm9ybUlzVGFibGVQYXJ0
ID0gZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6VGFibGUgfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlw
ZTo6SW5saW5lVGFibGUgfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6VGFibGVSb3dHcm91cAor
ICAgICAgICB8fCBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpUYWJsZUhlYWRlckdyb3VwIHx8IGRp
c3BsYXkgPT0gRGlzcGxheVR5cGU6OlRhYmxlRm9vdGVyR3JvdXAgfHwgZGlzcGxheSA9PSBEaXNw
bGF5VHlwZTo6VGFibGVSb3cKKyAgICAgICAgfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6VGFi
bGVDb2x1bW5Hcm91cCB8fCBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpUYWJsZUNvbHVtbiB8fCBk
aXNwbGF5ID09IERpc3BsYXlUeXBlOjpUYWJsZUNlbGwKKyAgICAgICAgfHwgZGlzcGxheSA9PSBE
aXNwbGF5VHlwZTo6VGFibGVDYXB0aW9uOwogCiAgICAgcmV0dXJuIGZvcm1Jc1RhYmxlUGFydDsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCShyZXZp
c2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgSFRNTElGcmFtZUVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGMKIAogYm9vbCBIVE1MSUZyYW1lRWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgcmV0dXJuIGlzVVJMQWxs
b3dlZCgpICYmIHN0eWxlLmRpc3BsYXkoKSAhPSBOT05FOworICAgIHJldHVybiBpc1VSTEFsbG93
ZWQoKSAmJiBzdHlsZS5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6Ok5vbmU7CiB9CiAKIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBIVE1MSUZyYW1lRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHJldmlzaW9uIDIzMjEy
MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIwNjAsMTMgKzIwNjAsMTMgQEAgUmVuZGVyU3R5bGUgSFRNTElucHV0RWxlbWVu
dDo6Y3JlYXRlSW5uZQogICAgIHRleHRCbG9ja1N0eWxlLmluaGVyaXRGcm9tKHN0eWxlKTsKICAg
ICBhZGp1c3RJbm5lclRleHRTdHlsZShzdHlsZSwgdGV4dEJsb2NrU3R5bGUpOwogCi0gICAgdGV4
dEJsb2NrU3R5bGUuc2V0V2hpdGVTcGFjZShQUkUpOworICAgIHRleHRCbG9ja1N0eWxlLnNldFdo
aXRlU3BhY2UoV2hpdGVTcGFjZTo6UHJlKTsKICAgICB0ZXh0QmxvY2tTdHlsZS5zZXRPdmVyZmxv
d1dyYXAoT3ZlcmZsb3dXcmFwOjpOb3JtYWwpOwogICAgIHRleHRCbG9ja1N0eWxlLnNldE92ZXJm
bG93WChPdmVyZmxvdzo6SGlkZGVuKTsKICAgICB0ZXh0QmxvY2tTdHlsZS5zZXRPdmVyZmxvd1ko
T3ZlcmZsb3c6OkhpZGRlbik7CiAgICAgdGV4dEJsb2NrU3R5bGUuc2V0VGV4dE92ZXJmbG93KHNo
b3VsZFRydW5jYXRlVGV4dChzdHlsZSkgPyBUZXh0T3ZlcmZsb3c6OkVsbGlwc2lzIDogVGV4dE92
ZXJmbG93OjpDbGlwKTsKIAotICAgIHRleHRCbG9ja1N0eWxlLnNldERpc3BsYXkoQkxPQ0spOwor
ICAgIHRleHRCbG9ja1N0eWxlLnNldERpc3BsYXkoRGlzcGxheVR5cGU6OkJsb2NrKTsKIAogICAg
IGlmIChoYXNBdXRvRmlsbFN0cm9uZ1Bhc3N3b3JkQnV0dG9uKCkpIHsKICAgICAgICAgdGV4dEJs
b2NrU3R5bGUuc2V0Q29sb3IoeyAwLjBmLCAwLjBmLCAwLjBmLCAwLjZmIH0pOwpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMzIx
MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIGJvb2wgSFRNTE9wdEdyb3VwRWxlbWVudDo6aXNG
b2N1c2FibGUoKSAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIC8vIE9wdGdyb3VwIGVsZW1l
bnRzIGRvIG5vdCBoYXZlIGEgcmVuZGVyZXIuCiAgICAgYXV0byogc3R5bGUgPSBjb25zdF9jYXN0
PEhUTUxPcHRHcm91cEVsZW1lbnQmPigqdGhpcykuY29tcHV0ZWRTdHlsZSgpOwotICAgIHJldHVy
biBzdHlsZSAmJiBzdHlsZS0+ZGlzcGxheSgpICE9IE5PTkU7CisgICAgcmV0dXJuIHN0eWxlICYm
IHN0eWxlLT5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6Ok5vbmU7CiB9CiAKIGNvbnN0IEF0b21p
Y1N0cmluZyYgSFRNTE9wdEdyb3VwRWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAy
MzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTMsNyArOTMsNyBAQCBib29sIEhUTUxPcHRpb25FbGVtZW50Ojppc0Zv
Y3VzYWJsZSgpIGNvCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBPcHRpb24gZWxlbWVu
dHMgZG8gbm90IGhhdmUgYSByZW5kZXJlci4KICAgICBhdXRvKiBzdHlsZSA9IGNvbnN0X2Nhc3Q8
SFRNTE9wdGlvbkVsZW1lbnQmPigqdGhpcykuY29tcHV0ZWRTdHlsZSgpOwotICAgIHJldHVybiBz
dHlsZSAmJiBzdHlsZS0+ZGlzcGxheSgpICE9IE5PTkU7CisgICAgcmV0dXJuIHN0eWxlICYmIHN0
eWxlLT5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6Ok5vbmU7CiB9CiAKIGJvb2wgSFRNTE9wdGlv
bkVsZW1lbnQ6Om1hdGNoZXNEZWZhdWx0UHNldWRvQ2xhc3MoKSBjb25zdApJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMzIxMjMp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NTEsNyArNTUxLDcgQEAgUmVuZGVyU3R5bGUgSFRNTFRleHRBcmVhRWxlbWVu
dDo6Y3JlYXRlSQogICAgIGF1dG8gdGV4dEJsb2NrU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRl
KCk7CiAgICAgdGV4dEJsb2NrU3R5bGUuaW5oZXJpdEZyb20oc3R5bGUpOwogICAgIGFkanVzdElu
bmVyVGV4dFN0eWxlKHN0eWxlLCB0ZXh0QmxvY2tTdHlsZSk7Ci0gICAgdGV4dEJsb2NrU3R5bGUu
c2V0RGlzcGxheShCTE9DSyk7CisgICAgdGV4dEJsb2NrU3R5bGUuc2V0RGlzcGxheShEaXNwbGF5
VHlwZTo6QmxvY2spOwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIC8vIFdlJ3JlIGFkZGluZyB0
aHJlZSBleHRyYSBwaXhlbHMgb2YgcGFkZGluZyB0byBsaW5lIHRleHRhcmVhcyB1cCB3aXRoIHRl
eHQgZmllbGRzLiAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMwNCw3ICszMDQsNyBAQCB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRTZWxl
CiAgICAgICAgIGF1dG8qIHJlbmRlcmVyVGV4dENvbnRyb2wgPSByZW5kZXJlcigpOwogCiAgICAg
ICAgIGlmIChpbm5lclRleHQgJiYgcmVuZGVyZXJUZXh0Q29udHJvbCkgewotICAgICAgICAgICAg
aWYgKHJlbmRlcmVyVGV4dENvbnRyb2wtPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IEhJRERFTiB8
fCAhaW5uZXJUZXh0LT5yZW5kZXJCb3goKSB8fCAhaW5uZXJUZXh0LT5yZW5kZXJCb3goKS0+aGVp
Z2h0KCkpIHsKKyAgICAgICAgICAgIGlmIChyZW5kZXJlclRleHRDb250cm9sLT5zdHlsZSgpLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gfHwgIWlubmVyVGV4dC0+cmVuZGVyQm94
KCkgfHwgIWlubmVyVGV4dC0+cmVuZGVyQm94KCktPmhlaWdodCgpKSB7CiAgICAgICAgICAgICAg
ICAgY2FjaGVTZWxlY3Rpb24oc3RhcnQsIGVuZCwgZGlyZWN0aW9uKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC04MjEsMTkgKzgyMSwxOSBAQCB2b2lkIEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjphZGp1c3RJCiAgICAgICAgIC8vICh3aGljaCBjYW5ub3Qg
aGF2ZSBSVEwgZGlyZWN0aW9uYWxpdHkpIHdpbGwgYXBwZWFyIHRvIHRoZSByaWdodCBvZiB0aGUg
bWFza2VkIGNoYXJhY3RlcnMuIFNlZSA8cmRhcjovL3Byb2JsZW0vNzAyNDM3NT4uCiAgICAgICAg
IAogICAgICAgICBzd2l0Y2ggKHRleHRCbG9ja1N0eWxlLnRleHRBbGlnbigpKSB7Ci0gICAgICAg
IGNhc2UgVEFTVEFSVDoKLSAgICAgICAgY2FzZSBKVVNUSUZZOgotICAgICAgICAgICAgdGV4dEJs
b2NrU3R5bGUuc2V0VGV4dEFsaWduKFJJR0hUKTsKKyAgICAgICAgY2FzZSBUZXh0QWxpZ25Nb2Rl
OjpTdGFydDoKKyAgICAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5OgorICAgICAgICAg
ICAgdGV4dEJsb2NrU3R5bGUuc2V0VGV4dEFsaWduKFRleHRBbGlnbk1vZGU6OlJpZ2h0KTsKICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFRBRU5EOgotICAgICAgICAgICAgdGV4dEJs
b2NrU3R5bGUuc2V0VGV4dEFsaWduKExFRlQpOworICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6
OkVuZDoKKyAgICAgICAgICAgIHRleHRCbG9ja1N0eWxlLnNldFRleHRBbGlnbihUZXh0QWxpZ25N
b2RlOjpMZWZ0KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIExFRlQ6Ci0gICAg
ICAgIGNhc2UgUklHSFQ6Ci0gICAgICAgIGNhc2UgQ0VOVEVSOgotICAgICAgICBjYXNlIFdFQktJ
VF9MRUZUOgotICAgICAgICBjYXNlIFdFQktJVF9SSUdIVDoKLSAgICAgICAgY2FzZSBXRUJLSVRf
Q0VOVEVSOgorICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CisgICAgICAgIGNhc2Ug
VGV4dEFsaWduTW9kZTo6UmlnaHQ6CisgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6Q2VudGVy
OgorICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdExlZnQ6CisgICAgICAgIGNhc2Ug
VGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQ6CisgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6
V2ViS2l0Q2VudGVyOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCShyZXZpc2lvbiAyMzIx
MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMjksNyArMzI5LDcgQEAgYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjph
dXRvcGxheVBlcm1pdAogICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJSZXR1cm5p
bmcgRkFMU0UgYmVjYXVzZSBlbGVtZW50IGhhcyBubyByZW5kZXJlciIpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQotICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkg
IT0gVklTSUJMRSkgeworICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0g
VmlzaWJpbGl0eTo6VmlzaWJsZSkgewogICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIs
ICJSZXR1cm5pbmcgRkFMU0UgYmVjYXVzZSBlbGVtZW50IGlzIG5vdCB2aXNpYmxlIik7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC04MTEsNyArODExLDcgQEAgc3RhdGljIGJvb2wg
aXNNYWluQ29udGVudEZvclB1cnBvc2VzT2ZBdQogICAgIC8vIEVsZW1lbnRzIHdoaWNoIGFyZSBo
aWRkZW4gYnkgc3R5bGUsIG9yIGhhdmUgYmVlbiBzY3JvbGxlZCBvdXQgb2YgdmlldywgY2Fubm90
IGJlIG1haW4gY29udGVudC4KICAgICAvLyBCdXQgZWxlbWVudHMgd2hpY2ggaGF2ZSBhdWRpbyAm
IHZpZGVvIGFuZCBhcmUgYWxyZWFkeSBwbGF5aW5nIHNob3VsZCBub3Qgc3RvcCBwbGF5aW5nIGJl
Y2F1c2UKICAgICAvLyB0aGV5IGFyZSBzY3JvbGxlZCBvZmYgdGhlIHBhZ2UuCi0gICAgaWYgKHJl
bmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChyZW5kZXJl
ci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGlmIChyZW5kZXJlci0+dmlzaWJsZUluVmlld3BvcnRTdGF0ZSgp
ICE9IFZpc2libGVJblZpZXdwb3J0U3RhdGU6OlllcyAmJiAhZWxlbWVudC5pc1BsYXlpbmcoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9SdWJ5RWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9SdWJ5RWxlbWVudC5j
cHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvUnVieUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw5ICs1Myw5IEBAIFJlZjxSdWJ5RWxlbWVudD4gUnVi
eUVsZW1lbnQ6OmNyZWF0ZShEb2MKIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFJ1YnlFbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikKIHsKLSAgICBpZiAoc3R5bGUuZGlz
cGxheSgpID09IElOTElORSkKKyAgICBpZiAoc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBl
OjpJbmxpbmUpCiAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJSdWJ5QXNJbmxp
bmU+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7Ci0gICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBC
TE9DSyB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gSU5MSU5FX0JMT0NLKQorICAgIGlmIChzdHlsZS5k
aXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OkJsb2NrIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNw
bGF5VHlwZTo6SW5saW5lQmxvY2spCiAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5k
ZXJSdWJ5QXNCbG9jaz4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKICAgICByZXR1cm4gSFRNTEVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihXVEZNb3ZlKHN0eWxlKSwgaW5zZXJ0aW9uUG9z
aXRpb24pOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9SdWJ5VGV4dEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvUnVieVRleHRFbGVtZW50LmNwcAko
cmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9SdWJ5VGV4dEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIFJlZjxSdWJ5VGV4dEVsZW1lbnQ+
IFJ1YnlUZXh0RWxlbWVudDo6Y3IKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBSdWJ5VGV4dEVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mIGluc2VydGlvblBvc2l0aW9uKQogewogICAgIC8vIFJlbmRlclJ1
YnlUZXh0IHJlcXVpcmVzIGl0cyBwYXJlbnQgdG8gYmUgUmVuZGVyUnVieVJ1bi4KLSAgICBpZiAo
aXNSdWJ5KGluc2VydGlvblBvc2l0aW9uLnBhcmVudCgpKSAmJiBzdHlsZS5kaXNwbGF5KCkgPT0g
QkxPQ0spCisgICAgaWYgKGlzUnVieShpbnNlcnRpb25Qb3NpdGlvbi5wYXJlbnQoKSkgJiYgc3R5
bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpCbG9jaykKICAgICAgICAgcmV0dXJuIGNyZWF0
ZVJlbmRlcmVyPFJlbmRlclJ1YnlUZXh0PigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogICAgIHJl
dHVybiBIVE1MRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFdURk1vdmUoc3R5bGUpLCBp
bnNlcnRpb25Qb3NpdGlvbik7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9U
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAJKHJldmlzaW9uIDIzMjEy
MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBzdGQ6Om9wdGlvbmFsPEVs
ZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJCiAgICAgbmV3U3R5bGUtPmluaGVyaXRGcm9tKCpzaGFk
b3dIb3N0U3R5bGUpOwogICAgIG5ld1N0eWxlLT5zZXRGbGV4R3JvdygxKTsKICAgICBuZXdTdHls
ZS0+c2V0TWluV2lkdGgoTGVuZ3RoIHsgMCwgRml4ZWQgfSk7IC8vIE5lZWRlZCBmb3IgY29ycmVj
dCBzaHJpbmtpbmcuCi0gICAgbmV3U3R5bGUtPnNldERpc3BsYXkoQkxPQ0spOworICAgIG5ld1N0
eWxlLT5zZXREaXNwbGF5KERpc3BsYXlUeXBlOjpCbG9jayk7CiAgICAgbmV3U3R5bGUtPnNldERp
cmVjdGlvbihMVFIpOwogICAgIC8vIFdlIGRvbid0IHdhbnQgdGhlIHNoYWRvdyBET00gdG8gYmUg
ZWRpdGFibGUsIHNvIHdlIHNldCB0aGlzIGJsb2NrIHRvIHJlYWQtb25seSBpbiBjYXNlIHRoZSBp
bnB1dCBpdHNlbGYgaXMgZWRpdGFibGUuCiAgICAgbmV3U3R5bGUtPnNldFVzZXJNb2RpZnkoVXNl
ck1vZGlmeTo6UmVhZE9ubHkpOwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0ZDo6b3B0aW9uYWw8RWxl
bWVudFN0eWxlPiBUZXh0Q29udHJvbFAKICAgICBhdXRvIHN0eWxlID0gcmVzb2x2ZVN0eWxlKCZw
YXJlbnRTdHlsZSk7CiAKICAgICBhdXRvJiBjb250cm9sRWxlbWVudCA9IGRvd25jYXN0PEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50PigqY29udGFpbmluZ1NoYWRvd1Jvb3QoKS0+aG9zdCgpKTsK
LSAgICBzdHlsZS5yZW5kZXJTdHlsZS0+c2V0RGlzcGxheShjb250cm9sRWxlbWVudC5pc1BsYWNl
aG9sZGVyVmlzaWJsZSgpID8gQkxPQ0sgOiBOT05FKTsKKyAgICBzdHlsZS5yZW5kZXJTdHlsZS0+
c2V0RGlzcGxheShjb250cm9sRWxlbWVudC5pc1BsYWNlaG9sZGVyVmlzaWJsZSgpID8gRGlzcGxh
eVR5cGU6OkJsb2NrIDogRGlzcGxheVR5cGU6Ok5vbmUpOwogCiAgICAgaWYgKGlzPEhUTUxJbnB1
dEVsZW1lbnQ+KGNvbnRyb2xFbGVtZW50KSkgewogICAgICAgICBhdXRvJiBpbnB1dEVsZW1lbnQg
PSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pihjb250cm9sRWxlbWVudCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCShyZXZpc2lvbiAy
MzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU4Niw5ICs1ODYsOSBAQCBzdGF0aWMgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok92ZXJsCiAgICAgfQogCiAgICAgaWYgKG5vZGUtPmlzUHNldWRvRWxlbWVu
dCgpKSB7Ci0gICAgICAgIGlmIChub2RlLT5wc2V1ZG9JZCgpID09IEJFRk9SRSkKKyAgICAgICAg
aWYgKG5vZGUtPnBzZXVkb0lkKCkgPT0gUHNldWRvSWQ6OkJlZm9yZSkKICAgICAgICAgICAgIGVs
ZW1lbnREYXRhLT5zZXRQc2V1ZG9FbGVtZW50KCJiZWZvcmUiKTsKLSAgICAgICAgZWxzZSBpZiAo
bm9kZS0+cHNldWRvSWQoKSA9PSBBRlRFUikKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+cHNldWRv
SWQoKSA9PSBQc2V1ZG9JZDo6QWZ0ZXIpCiAgICAgICAgICAgICBlbGVtZW50RGF0YS0+c2V0UHNl
dWRvRWxlbWVudCgiYWZ0ZXIiKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCShyZXZpc2lvbiAy
MzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0Fn
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQgSW5zcGVjdG9y
Q1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXMKIAogICAgIEVsZW1lbnQqIG9yaWdpbmFsRWxlbWVu
dCA9IGVsZW1lbnQ7CiAgICAgUHNldWRvSWQgZWxlbWVudFBzZXVkb0lkID0gZWxlbWVudC0+cHNl
dWRvSWQoKTsKLSAgICBpZiAoZWxlbWVudFBzZXVkb0lkKSB7CisgICAgaWYgKGVsZW1lbnRQc2V1
ZG9JZCAhPSBQc2V1ZG9JZDo6Tm9uZSkgewogICAgICAgICBlbGVtZW50ID0gZG93bmNhc3Q8UHNl
dWRvRWxlbWVudD4oKmVsZW1lbnQpLmhvc3RFbGVtZW50KCk7CiAgICAgICAgIGlmICghZWxlbWVu
dCkgewogICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIlBzZXVkbyBlbGVt
ZW50IGhhcyBubyBwYXJlbnQiKTsKQEAgLTQ1NSw3ICs0NTUsNyBAQCB2b2lkIEluc3BlY3RvckNT
U0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzCiAgICAgICAgIC8vIFBzZXVkbyBlbGVtZW50cy4KICAg
ICAgICAgaWYgKCFpbmNsdWRlUHNldWRvIHx8ICppbmNsdWRlUHNldWRvKSB7CiAgICAgICAgICAg
ICBhdXRvIHBzZXVkb0VsZW1lbnRzID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz46OmNyZWF0ZSgpOwotICAgICAgICAgICAgZm9yIChQc2V1
ZG9JZCBwc2V1ZG9JZCA9IEZJUlNUX1BVQkxJQ19QU0VVRE9JRDsgcHNldWRvSWQgPCBBRlRFUl9M
QVNUX0lOVEVSTkFMX1BTRVVET0lEOyBwc2V1ZG9JZCA9IHN0YXRpY19jYXN0PFBzZXVkb0lkPihw
c2V1ZG9JZCArIDEpKSB7CisgICAgICAgICAgICBmb3IgKFBzZXVkb0lkIHBzZXVkb0lkID0gUHNl
dWRvSWQ6OkZpcnN0UHVibGljUHNldWRvSWQ7IHBzZXVkb0lkIDwgUHNldWRvSWQ6OkFmdGVyTGFz
dEludGVybmFsUHNldWRvSWQ7IHBzZXVkb0lkID0gc3RhdGljX2Nhc3Q8UHNldWRvSWQ+KHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihwc2V1ZG9JZCkgKyAxKSkgewogICAgICAgICAgICAgICAgIGF1dG8g
bWF0Y2hlZFJ1bGVzID0gc3R5bGVSZXNvbHZlci5wc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChl
bGVtZW50LCBwc2V1ZG9JZCwgU3R5bGVSZXNvbHZlcjo6QWxsQ1NTUnVsZXMpOwogICAgICAgICAg
ICAgICAgIGlmICghbWF0Y2hlZFJ1bGVzLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgICAg
ICBhdXRvIG1hdGNoZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlBzZXVkb0lkTWF0Y2hl
czo6Y3JlYXRlKCkKQEAgLTQ3Nyw3ICs0NzcsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpn
ZXRNYXRjaGVkU3R5bGVzCiAgICAgICAgICAgICAgICAgU3R5bGVSZXNvbHZlciYgcGFyZW50U3R5
bGVSZXNvbHZlciA9IHBhcmVudEVsZW1lbnQtPnN0eWxlUmVzb2x2ZXIoKTsKICAgICAgICAgICAg
ICAgICBhdXRvIHBhcmVudE1hdGNoZWRSdWxlcyA9IHBhcmVudFN0eWxlUmVzb2x2ZXIuc3R5bGVS
dWxlc0ZvckVsZW1lbnQocGFyZW50RWxlbWVudCwgU3R5bGVSZXNvbHZlcjo6QWxsQ1NTUnVsZXMp
OwogICAgICAgICAgICAgICAgIGF1dG8gZW50cnkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OkluaGVyaXRlZFN0eWxlRW50cnk6OmNyZWF0ZSgpCi0gICAgICAgICAgICAgICAgICAgIC5zZXRN
YXRjaGVkQ1NTUnVsZXMoYnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChwYXJlbnRNYXRjaGVk
UnVsZXMsIHN0eWxlUmVzb2x2ZXIsICpwYXJlbnRFbGVtZW50LCBOT1BTRVVETykpCisgICAgICAg
ICAgICAgICAgICAgIC5zZXRNYXRjaGVkQ1NTUnVsZXMoYnVpbGRBcnJheUZvck1hdGNoZWRSdWxl
TGlzdChwYXJlbnRNYXRjaGVkUnVsZXMsIHN0eWxlUmVzb2x2ZXIsICpwYXJlbnRFbGVtZW50LCBQ
c2V1ZG9JZDo6Tm9uZSkpCiAgICAgICAgICAgICAgICAgICAgIC5yZWxlYXNlKCk7CiAgICAgICAg
ICAgICAgICAgaWYgKGlzPFN0eWxlZEVsZW1lbnQ+KCpwYXJlbnRFbGVtZW50KSAmJiBkb3duY2Fz
dDxTdHlsZWRFbGVtZW50PigqcGFyZW50RWxlbWVudCkuY3Nzb21TdHlsZSgpLmxlbmd0aCgpKSB7
CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIHN0eWxlU2hlZXQgPSBhc0luc3BlY3RvclN0eWxl
U2hlZXQoZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oKnBhcmVudEVsZW1lbnQpKTsKQEAgLTg5Myw3
ICs4OTMsNyBAQCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sCiAgICAg
YXV0byByZXN1bHQgPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVs
ZU1hdGNoPjo6Y3JlYXRlKCk7CiAKICAgICBTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5nQ29udGV4
dCBjb250ZXh0KFNlbGVjdG9yQ2hlY2tlcjo6TW9kZTo6Q29sbGVjdGluZ1J1bGVzKTsKLSAgICBj
b250ZXh0LnBzZXVkb0lkID0gcHNldWRvSWQgPyBwc2V1ZG9JZCA6IGVsZW1lbnQucHNldWRvSWQo
KTsKKyAgICBjb250ZXh0LnBzZXVkb0lkID0gcHNldWRvSWQgIT0gUHNldWRvSWQ6Ok5vbmUgPyBw
c2V1ZG9JZCA6IGVsZW1lbnQucHNldWRvSWQoKTsKICAgICBTZWxlY3RvckNoZWNrZXIgc2VsZWN0
b3JDaGVja2VyKGVsZW1lbnQuZG9jdW1lbnQoKSk7CiAKICAgICBmb3IgKGF1dG8mIG1hdGNoZWRS
dWxlIDogbWF0Y2hlZFJ1bGVzKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAkocmV2aXNpb24gMjMyMTIzKQor
KysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzNzIsMTAgKzEzNzIsMTAgQEAgc3RhdGljIFN0cmluZyBkb2N1
bWVudEJhc2VVUkxTdHJpbmcoRG9jdQogc3RhdGljIGJvb2wgcHNldWRvRWxlbWVudFR5cGUoUHNl
dWRvSWQgcHNldWRvSWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6UHNldWRvVHlwZSogdHlw
ZSkKIHsKICAgICBzd2l0Y2ggKHBzZXVkb0lkKSB7Ci0gICAgY2FzZSBCRUZPUkU6CisgICAgY2Fz
ZSBQc2V1ZG9JZDo6QmVmb3JlOgogICAgICAgICAqdHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRPTTo6UHNldWRvVHlwZTo6QmVmb3JlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNl
IEFGVEVSOgorICAgIGNhc2UgUHNldWRvSWQ6OkFmdGVyOgogICAgICAgICAqdHlwZSA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRPTTo6UHNldWRvVHlwZTo6QWZ0ZXI7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIGRlZmF1bHQ6CkBAIC0xNTAwLDcgKzE1MDAsNyBAQCBSZWY8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RE9NOjpOb2RlPiBJbnNwCiAgICAgICAgIGlmIChzdGF0ZSAhPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpET006OkN1c3RvbUVsZW1lbnRTdGF0ZTo6QnVpbHRpbikKICAgICAgICAgICAg
IHZhbHVlLT5zZXRDdXN0b21FbGVtZW50U3RhdGUoc3RhdGUpOwogCi0gICAgICAgIGlmIChlbGVt
ZW50LnBzZXVkb0lkKCkpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQucHNldWRvSWQoKSAhPSBQc2V1
ZG9JZDo6Tm9uZSkgewogICAgICAgICAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpQc2V1
ZG9UeXBlIHBzZXVkb1R5cGU7CiAgICAgICAgICAgICBpZiAocHNldWRvRWxlbWVudFR5cGUoZWxl
bWVudC5wc2V1ZG9JZCgpLCAmcHNldWRvVHlwZSkpCiAgICAgICAgICAgICAgICAgdmFsdWUtPnNl
dFBzZXVkb1R5cGUocHNldWRvVHlwZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAkocmV2
aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JMYXllclRyZWVBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MSw5ICsxOTEsOSBAQCBS
ZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpMYXllCiAgICAgaWYgKGlzQW5vbnlt
b3VzICYmICFyZW5kZXJlci0+aXNSZW5kZXJWaWV3KCkpIHsKICAgICAgICAgbGF5ZXJPYmplY3Qt
PnNldElzQW5vbnltb3VzKHRydWUpOwogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUg
PSByZW5kZXJlci0+c3R5bGUoKTsKLSAgICAgICAgaWYgKHN0eWxlLnN0eWxlVHlwZSgpID09IEZJ
UlNUX0xFVFRFUikKKyAgICAgICAgaWYgKHN0eWxlLnN0eWxlVHlwZSgpID09IFBzZXVkb0lkOjpG
aXJzdExldHRlcikKICAgICAgICAgICAgIGxheWVyT2JqZWN0LT5zZXRQc2V1ZG9FbGVtZW50KCJm
aXJzdC1sZXR0ZXIiKTsKLSAgICAgICAgZWxzZSBpZiAoc3R5bGUuc3R5bGVUeXBlKCkgPT0gRklS
U1RfTElORSkKKyAgICAgICAgZWxzZSBpZiAoc3R5bGUuc3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6
OkZpcnN0TGluZSkKICAgICAgICAgICAgIGxheWVyT2JqZWN0LT5zZXRQc2V1ZG9FbGVtZW50KCJm
aXJzdC1saW5lIik7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xheW91dC9s
YXlvdXR0cmVlL0xheW91dEJveC5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJD
b3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
MiwyOCArMTUyLDI4IEBAIGJvb2wgQm94Ojppc0Rlc2NlbmRhbnRPZihDb250YWluZXImIGNvbnQK
IAogYm9vbCBCb3g6OmlzSW5saW5lQmxvY2tCb3goKSBjb25zdAogewotICAgIHJldHVybiBtX3N0
eWxlLmRpc3BsYXkoKSA9PSBJTkxJTkVfQkxPQ0s7CisgICAgcmV0dXJuIG1fc3R5bGUuZGlzcGxh
eSgpID09IERpc3BsYXlUeXBlOjpJbmxpbmVCbG9jazsKIH0KIAogYm9vbCBCb3g6OmlzQmxvY2tM
ZXZlbEJveCgpIGNvbnN0CiB7CiAgICAgLy8gQmxvY2sgbGV2ZWwgZWxlbWVudHMgZ2VuZXJhdGUg
YmxvY2sgbGV2ZWwgYm94ZXMuCiAgICAgYXV0byBkaXNwbGF5ID0gbV9zdHlsZS5kaXNwbGF5KCk7
Ci0gICAgcmV0dXJuIGRpc3BsYXkgPT0gQkxPQ0sgfHwgZGlzcGxheSA9PSBMSVNUX0lURU0gfHwg
ZGlzcGxheSA9PSBUQUJMRTsKKyAgICByZXR1cm4gZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6Qmxv
Y2sgfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6TGlzdEl0ZW0gfHwgZGlzcGxheSA9PSBEaXNw
bGF5VHlwZTo6VGFibGU7CiB9CiAKIGJvb2wgQm94Ojppc0lubGluZUxldmVsQm94KCkgY29uc3QK
IHsKICAgICAvLyBJbmxpbmUgbGV2ZWwgZWxlbWVudHMgZ2VuZXJhdGUgaW5saW5lIGxldmVsIGJv
eGVzLgogICAgIGF1dG8gZGlzcGxheSA9IG1fc3R5bGUuZGlzcGxheSgpOwotICAgIHJldHVybiBk
aXNwbGF5ID09IElOTElORSB8fCBkaXNwbGF5ID09IElOTElORV9CTE9DSyB8fCBkaXNwbGF5ID09
IElOTElORV9UQUJMRTsKKyAgICByZXR1cm4gZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6SW5saW5l
IHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OklubGluZUJsb2NrIHx8IGRpc3BsYXkgPT0gRGlz
cGxheVR5cGU6OklubGluZVRhYmxlOwogfQogCiBib29sIEJveDo6aXNCbG9ja0NvbnRhaW5lckJv
eCgpIGNvbnN0CiB7CiAgICAgLy8gSW5saW5lIGxldmVsIGVsZW1lbnRzIGdlbmVyYXRlIGlubGlu
ZSBsZXZlbCBib3hlcy4KICAgICBhdXRvIGRpc3BsYXkgPSBtX3N0eWxlLmRpc3BsYXkoKTsKLSAg
ICByZXR1cm4gZGlzcGxheSA9PSBCTE9DSyB8fCBkaXNwbGF5ID09IExJU1RfSVRFTSB8fCBkaXNw
bGF5ID09IElOTElORV9CTE9DSyB8fCBkaXNwbGF5ID09IFRBQkxFX0NFTEwgfHwgZGlzcGxheSA9
PSBUQUJMRV9DQVBUSU9OOyAvLyBUT0RPICYmICFyZXBsYWNlZCBlbGVtZW50CisgICAgcmV0dXJu
IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OkJsb2NrIHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6
Okxpc3RJdGVtIHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OklubGluZUJsb2NrIHx8IGRpc3Bs
YXkgPT0gRGlzcGxheVR5cGU6OlRhYmxlQ2VsbCB8fCBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpU
YWJsZUNhcHRpb247IC8vIFRPRE8gJiYgIXJlcGxhY2VkIGVsZW1lbnQKIH0KIAogYm9vbCBCb3g6
OmlzSW5pdGlhbENvbnRhaW5pbmdCbG9jaygpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MTAsNyArMTQxMCw3IEBAIHN0
ZDo6b3B0aW9uYWw8Q3Vyc29yPiBFdmVudEhhbmRsZXI6OnNlbGUKICAgICBjb25zdCBDdXJzb3Im
IGlCZWFtID0gaG9yaXpvbnRhbFRleHQgPyBpQmVhbUN1cnNvcigpIDogdmVydGljYWxUZXh0Q3Vy
c29yKCk7CiAKICNpZiBFTkFCTEUoQ1VSU09SX1ZJU0lCSUxJVFkpCi0gICAgaWYgKHN0eWxlICYm
IHN0eWxlLT5jdXJzb3JWaXNpYmlsaXR5KCkgPT0gQ3Vyc29yVmlzaWJpbGl0eUF1dG9IaWRlKQor
ICAgIGlmIChzdHlsZSAmJiBzdHlsZS0+Y3Vyc29yVmlzaWJpbGl0eSgpID09IEN1cnNvclZpc2li
aWxpdHk6OkF1dG9IaWRlKQogICAgICAgICBzdGFydEF1dG9IaWRlQ3Vyc29yVGltZXIoKTsKICAg
ICBlbHNlCiAgICAgICAgIGNhbmNlbEF1dG9IaWRlQ3Vyc29yVGltZXIoKTsKQEAgLTE0NzMsOCAr
MTQ3Myw4IEBAIHN0ZDo6b3B0aW9uYWw8Q3Vyc29yPiBFdmVudEhhbmRsZXI6OnNlbGUKICAgICAg
ICAgJiYgIW1fY2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50KQogICAgICAgICByZXR1cm4gaUJl
YW07CiAKLSAgICBzd2l0Y2ggKHN0eWxlID8gc3R5bGUtPmN1cnNvcigpIDogQ3Vyc29yQXV0bykg
ewotICAgIGNhc2UgQ3Vyc29yQXV0bzogeworICAgIHN3aXRjaCAoc3R5bGUgPyBzdHlsZS0+Y3Vy
c29yKCkgOiBDdXJzb3JUeXBlOjpBdXRvKSB7CisgICAgY2FzZSBDdXJzb3JUeXBlOjpBdXRvOiB7
CiAgICAgICAgIGJvb2wgZWRpdGFibGUgPSBub2RlLT5oYXNFZGl0YWJsZVN0eWxlKCk7CiAKICAg
ICAgICAgaWYgKHVzZUhhbmRDdXJzb3Iobm9kZSwgcmVzdWx0LmlzT3ZlckxpbmsoKSwgc2hpZnRL
ZXkpKQpAQCAtMTQ5Miw3NSArMTQ5Miw3NSBAQCBzdGQ6Om9wdGlvbmFsPEN1cnNvcj4gRXZlbnRI
YW5kbGVyOjpzZWxlCiAgICAgICAgICAgICByZXR1cm4gaUJlYW07CiAgICAgICAgIHJldHVybiBw
b2ludGVyQ3Vyc29yKCk7CiAgICAgfQotICAgIGNhc2UgQ3Vyc29yRGVmYXVsdDoKKyAgICBjYXNl
IEN1cnNvclR5cGU6OkRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBwb2ludGVyQ3Vyc29yKCk7Ci0g
ICAgY2FzZSBDdXJzb3JOb25lOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6Tm9uZToKICAgICAgICAg
cmV0dXJuIG5vbmVDdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNvckNvbnRleHRNZW51OgorICAgIGNh
c2UgQ3Vyc29yVHlwZTo6Q29udGV4dE1lbnU6CiAgICAgICAgIHJldHVybiBjb250ZXh0TWVudUN1
cnNvcigpOwotICAgIGNhc2UgQ3Vyc29ySGVscDoKKyAgICBjYXNlIEN1cnNvclR5cGU6OkhlbHA6
CiAgICAgICAgIHJldHVybiBoZWxwQ3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JQb2ludGVyOgor
ICAgIGNhc2UgQ3Vyc29yVHlwZTo6UG9pbnRlcjoKICAgICAgICAgcmV0dXJuIGhhbmRDdXJzb3Io
KTsKLSAgICBjYXNlIEN1cnNvclByb2dyZXNzOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6UHJvZ3Jl
c3M6CiAgICAgICAgIHJldHVybiBwcm9ncmVzc0N1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29yV2Fp
dDoKKyAgICBjYXNlIEN1cnNvclR5cGU6OldhaXQ6CiAgICAgICAgIHJldHVybiB3YWl0Q3Vyc29y
KCk7Ci0gICAgY2FzZSBDdXJzb3JDZWxsOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6Q2VsbDoKICAg
ICAgICAgcmV0dXJuIGNlbGxDdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNvckNyb3NzaGFpcjoKKyAg
ICBjYXNlIEN1cnNvclR5cGU6OkNyb3NzaGFpcjoKICAgICAgICAgcmV0dXJuIGNyb3NzQ3Vyc29y
KCk7Ci0gICAgY2FzZSBDdXJzb3JUZXh0OgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6VGV4dDoKICAg
ICAgICAgcmV0dXJuIGlCZWFtQ3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JWZXJ0aWNhbFRleHQ6
CisgICAgY2FzZSBDdXJzb3JUeXBlOjpWZXJ0aWNhbFRleHQ6CiAgICAgICAgIHJldHVybiB2ZXJ0
aWNhbFRleHRDdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNvckFsaWFzOgorICAgIGNhc2UgQ3Vyc29y
VHlwZTo6QWxpYXM6CiAgICAgICAgIHJldHVybiBhbGlhc0N1cnNvcigpOwotICAgIGNhc2UgQ3Vy
c29yQ29weToKKyAgICBjYXNlIEN1cnNvclR5cGU6OkNvcHk6CiAgICAgICAgIHJldHVybiBjb3B5
Q3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JNb3ZlOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6TW92
ZToKICAgICAgICAgcmV0dXJuIG1vdmVDdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNvck5vRHJvcDoK
KyAgICBjYXNlIEN1cnNvclR5cGU6Ok5vRHJvcDoKICAgICAgICAgcmV0dXJuIG5vRHJvcEN1cnNv
cigpOwotICAgIGNhc2UgQ3Vyc29yTm90QWxsb3dlZDoKKyAgICBjYXNlIEN1cnNvclR5cGU6Ok5v
dEFsbG93ZWQ6CiAgICAgICAgIHJldHVybiBub3RBbGxvd2VkQ3Vyc29yKCk7Ci0gICAgY2FzZSBD
dXJzb3JHcmFiOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6R3JhYjoKICAgICAgICAgcmV0dXJuIGdy
YWJDdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNvckdyYWJiaW5nOgorICAgIGNhc2UgQ3Vyc29yVHlw
ZTo6R3JhYmJpbmc6CiAgICAgICAgIHJldHVybiBncmFiYmluZ0N1cnNvcigpOwotICAgIGNhc2Ug
Q3Vyc29yRVJlc2l6ZToKKyAgICBjYXNlIEN1cnNvclR5cGU6OkVSZXNpemU6CiAgICAgICAgIHJl
dHVybiBlYXN0UmVzaXplQ3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JOUmVzaXplOgorICAgIGNh
c2UgQ3Vyc29yVHlwZTo6TlJlc2l6ZToKICAgICAgICAgcmV0dXJuIG5vcnRoUmVzaXplQ3Vyc29y
KCk7Ci0gICAgY2FzZSBDdXJzb3JOZVJlc2l6ZToKKyAgICBjYXNlIEN1cnNvclR5cGU6Ok5FUmVz
aXplOgogICAgICAgICByZXR1cm4gbm9ydGhFYXN0UmVzaXplQ3Vyc29yKCk7Ci0gICAgY2FzZSBD
dXJzb3JOd1Jlc2l6ZToKKyAgICBjYXNlIEN1cnNvclR5cGU6Ok5XUmVzaXplOgogICAgICAgICBy
ZXR1cm4gbm9ydGhXZXN0UmVzaXplQ3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JTUmVzaXplOgor
ICAgIGNhc2UgQ3Vyc29yVHlwZTo6U1Jlc2l6ZToKICAgICAgICAgcmV0dXJuIHNvdXRoUmVzaXpl
Q3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JTZVJlc2l6ZToKKyAgICBjYXNlIEN1cnNvclR5cGU6
OlNFUmVzaXplOgogICAgICAgICByZXR1cm4gc291dGhFYXN0UmVzaXplQ3Vyc29yKCk7Ci0gICAg
Y2FzZSBDdXJzb3JTd1Jlc2l6ZToKKyAgICBjYXNlIEN1cnNvclR5cGU6OlNXUmVzaXplOgogICAg
ICAgICByZXR1cm4gc291dGhXZXN0UmVzaXplQ3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JXUmVz
aXplOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6V1Jlc2l6ZToKICAgICAgICAgcmV0dXJuIHdlc3RS
ZXNpemVDdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNvckV3UmVzaXplOgorICAgIGNhc2UgQ3Vyc29y
VHlwZTo6RVdSZXNpemU6CiAgICAgICAgIHJldHVybiBlYXN0V2VzdFJlc2l6ZUN1cnNvcigpOwot
ICAgIGNhc2UgQ3Vyc29yTnNSZXNpemU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpOU1Jlc2l6ZToK
ICAgICAgICAgcmV0dXJuIG5vcnRoU291dGhSZXNpemVDdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNv
ck5lc3dSZXNpemU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpORVNXUmVzaXplOgogICAgICAgICBy
ZXR1cm4gbm9ydGhFYXN0U291dGhXZXN0UmVzaXplQ3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JO
d3NlUmVzaXplOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6TldTRVJlc2l6ZToKICAgICAgICAgcmV0
dXJuIG5vcnRoV2VzdFNvdXRoRWFzdFJlc2l6ZUN1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29yQ29s
UmVzaXplOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6Q29sdW1uUmVzaXplOgogICAgICAgICByZXR1
cm4gY29sdW1uUmVzaXplQ3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JSb3dSZXNpemU6CisgICAg
Y2FzZSBDdXJzb3JUeXBlOjpSb3dSZXNpemU6CiAgICAgICAgIHJldHVybiByb3dSZXNpemVDdXJz
b3IoKTsKLSAgICBjYXNlIEN1cnNvckFsbFNjcm9sbDoKKyAgICBjYXNlIEN1cnNvclR5cGU6OkFs
bFNjcm9sbDoKICAgICAgICAgcmV0dXJuIG1vdmVDdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNvclpv
b21JbjoKKyAgICBjYXNlIEN1cnNvclR5cGU6Olpvb21JbjoKICAgICAgICAgcmV0dXJuIHpvb21J
bkN1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29yWm9vbU91dDoKKyAgICBjYXNlIEN1cnNvclR5cGU6
Olpvb21PdXQ6CiAgICAgICAgIHJldHVybiB6b29tT3V0Q3Vyc29yKCk7CiAgICAgfQogICAgIHJl
dHVybiBwb2ludGVyQ3Vyc29yKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkocmV2aXNpb24g
MjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM4NCw3ICszODQsNyBAQCBTdHJpbmcgRnJhbWU6OnNlYXJjaEZvckxhYmVsc0Fib3ZlQ2Vs
bChjCiAgICAgICAgIC8vIHNlYXJjaCB3aXRoaW4gdGhlIGFib3ZlIGNlbGwgd2UgZm91bmQgZm9y
IGEgbWF0Y2gKICAgICAgICAgc2l6ZV90IGxlbmd0aFNlYXJjaGVkID0gMDsgICAgCiAgICAgICAg
IGZvciAoVGV4dCogdGV4dE5vZGUgPSBUZXh0Tm9kZVRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4oKmFi
b3ZlQ2VsbCk7IHRleHROb2RlOyB0ZXh0Tm9kZSA9IFRleHROb2RlVHJhdmVyc2FsOjpuZXh0KCp0
ZXh0Tm9kZSwgYWJvdmVDZWxsKSkgewotICAgICAgICAgICAgaWYgKCF0ZXh0Tm9kZS0+cmVuZGVy
ZXIoKSB8fCB0ZXh0Tm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklT
SUJMRSkKKyAgICAgICAgICAgIGlmICghdGV4dE5vZGUtPnJlbmRlcmVyKCkgfHwgdGV4dE5vZGUt
PnJlbmRlcmVyKCktPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAvLyBGb3IgZWFjaCB0ZXh0
IGNodW5rLCBydW4gdGhlIHJlZ2V4cAogICAgICAgICAgICAgU3RyaW5nIG5vZGVTdHJpbmcgPSB0
ZXh0Tm9kZS0+ZGF0YSgpOwpAQCAtNDQxLDcgKzQ0MSw3IEBAIFN0cmluZyBGcmFtZTo6c2VhcmNo
Rm9yTGFiZWxzQmVmb3JlRWxlbWUKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgc2VhcmNoZWRDZWxsQWJvdmUgPSB0cnVlOwotICAgICAg
ICB9IGVsc2UgaWYgKG4tPmlzVGV4dE5vZGUoKSAmJiBuLT5yZW5kZXJlcigpICYmIG4tPnJlbmRl
cmVyKCktPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUpIHsKKyAgICAgICAgfSBlbHNl
IGlmIChuLT5pc1RleHROb2RlKCkgJiYgbi0+cmVuZGVyZXIoKSAmJiBuLT5yZW5kZXJlcigpLT5z
dHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlKSB7CiAgICAgICAgICAg
ICAvLyBGb3IgZWFjaCB0ZXh0IGNodW5rLCBydW4gdGhlIHJlZ2V4cAogICAgICAgICAgICAgU3Ry
aW5nIG5vZGVTdHJpbmcgPSBuLT5ub2RlVmFsdWUoKTsKICAgICAgICAgICAgIC8vIGFkZCAxMDAg
Zm9yIHNsb3AsIHRvIG1ha2UgaXQgbW9yZSBsaWtlbHkgdGhhdCB3ZSdsbCBzZWFyY2ggd2hvbGUg
bm9kZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDIzMjEyMykK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTQ3LDE3ICs1NDcsMTcgQEAgUmVmPFNjcm9sbGJhcj4gRnJhbWVWaWV3OjpjcmVhdGVTY3JvbGxi
YQogCiAgICAgLy8gVHJ5IHRoZSA8Ym9keT4gZWxlbWVudCBmaXJzdCBhcyBhIHNjcm9sbGJhciBz
b3VyY2UuCiAgICAgSFRNTEVsZW1lbnQqIGJvZHkgPSBkb2MgPyBkb2MtPmJvZHlPckZyYW1lc2V0
KCkgOiBudWxscHRyOwotICAgIGlmIChib2R5ICYmIGJvZHktPnJlbmRlcmVyKCkgJiYgYm9keS0+
cmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShTQ1JPTExCQVIpKQorICAgIGlmIChi
b2R5ICYmIGJvZHktPnJlbmRlcmVyKCkgJiYgYm9keS0+cmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNQ
c2V1ZG9TdHlsZShQc2V1ZG9JZDo6U2Nyb2xsYmFyKSkKICAgICAgICAgcmV0dXJuIFJlbmRlclNj
cm9sbGJhcjo6Y3JlYXRlQ3VzdG9tU2Nyb2xsYmFyKCp0aGlzLCBvcmllbnRhdGlvbiwgYm9keSk7
CiAgICAgCiAgICAgLy8gSWYgdGhlIDxib2R5PiBkaWRuJ3QgaGF2ZSBhIGN1c3RvbSBzdHlsZSwg
dGhlbiB0aGUgcm9vdCBlbGVtZW50IG1pZ2h0LgogICAgIEVsZW1lbnQqIGRvY0VsZW1lbnQgPSBk
b2MgPyBkb2MtPmRvY3VtZW50RWxlbWVudCgpIDogbnVsbHB0cjsKLSAgICBpZiAoZG9jRWxlbWVu
dCAmJiBkb2NFbGVtZW50LT5yZW5kZXJlcigpICYmIGRvY0VsZW1lbnQtPnJlbmRlcmVyKCktPnN0
eWxlKCkuaGFzUHNldWRvU3R5bGUoU0NST0xMQkFSKSkKKyAgICBpZiAoZG9jRWxlbWVudCAmJiBk
b2NFbGVtZW50LT5yZW5kZXJlcigpICYmIGRvY0VsZW1lbnQtPnJlbmRlcmVyKCktPnN0eWxlKCku
aGFzUHNldWRvU3R5bGUoUHNldWRvSWQ6OlNjcm9sbGJhcikpCiAgICAgICAgIHJldHVybiBSZW5k
ZXJTY3JvbGxiYXI6OmNyZWF0ZUN1c3RvbVNjcm9sbGJhcigqdGhpcywgb3JpZW50YXRpb24sIGRv
Y0VsZW1lbnQpOwotICAgICAgICAKKwogICAgIC8vIElmIHdlIGhhdmUgYW4gb3duaW5nIGlmcmFt
ZS9mcmFtZSBlbGVtZW50LCB0aGVuIGl0IGNhbiBzZXQgdGhlIGN1c3RvbSBzY3JvbGxiYXIgYWxz
by4KICAgICBSZW5kZXJXaWRnZXQqIGZyYW1lUmVuZGVyZXIgPSBmcmFtZSgpLm93bmVyUmVuZGVy
ZXIoKTsKLSAgICBpZiAoZnJhbWVSZW5kZXJlciAmJiBmcmFtZVJlbmRlcmVyLT5zdHlsZSgpLmhh
c1BzZXVkb1N0eWxlKFNDUk9MTEJBUikpCisgICAgaWYgKGZyYW1lUmVuZGVyZXIgJiYgZnJhbWVS
ZW5kZXJlci0+c3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6U2Nyb2xsYmFyKSkKICAg
ICAgICAgcmV0dXJuIFJlbmRlclNjcm9sbGJhcjo6Y3JlYXRlQ3VzdG9tU2Nyb2xsYmFyKCp0aGlz
LCBvcmllbnRhdGlvbiwgbnVsbHB0ciwgJmZyYW1lKCkpOwogICAgIAogICAgIC8vIE5vYm9keSBz
ZXQgYSBjdXN0b20gc3R5bGUsIHNvIHdlIGp1c3QgdXNlIGEgbmF0aXZlIHNjcm9sbGJhci4KQEAg
LTM2MTksNyArMzYxOSw3IEBAIGZsb2F0IEZyYW1lVmlldzo6YWRqdXN0U2Nyb2xsU3RlcEZvckZp
eGUKICAgICBmbG9hdCBib3R0b21PYnNjdXJlZEFyZWEgPSAwOwogICAgIGZvciAoY29uc3QgYXV0
byYgcG9zaXRpb25lZE9iamVjdCA6ICpwb3NpdGlvbmVkT2JqZWN0cykgewogICAgICAgICBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUgPSBwb3NpdGlvbmVkT2JqZWN0LT5zdHlsZSgpOwotICAgICAg
ICBpZiAoc3R5bGUucG9zaXRpb24oKSAhPSBQb3NpdGlvblR5cGU6OkZpeGVkIHx8IHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBISURERU4gfHwgIXN0eWxlLm9wYWNpdHkoKSkKKyAgICAgICAgaWYgKHN0
eWxlLnBvc2l0aW9uKCkgIT0gUG9zaXRpb25UeXBlOjpGaXhlZCB8fCBzdHlsZS52aXNpYmlsaXR5
KCkgPT0gVmlzaWJpbGl0eTo6SGlkZGVuIHx8ICFzdHlsZS5vcGFjaXR5KCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAogICAgICAgICBGbG9hdFF1YWQgY29udGVudFF1YWQgPSBwb3NpdGlvbmVk
T2JqZWN0LT5hYnNvbHV0ZUNvbnRlbnRRdWFkKCk7CkBAIC0zODI4LDcgKzM4MjgsNyBAQCB2b2lk
IEZyYW1lVmlldzo6dXBkYXRlU2Nyb2xsQ29ybmVyKCkKICAgICAgICAgRWxlbWVudCogYm9keSA9
IGRvYyA/IGRvYy0+Ym9keU9yRnJhbWVzZXQoKSA6IG51bGxwdHI7CiAgICAgICAgIGlmIChib2R5
ICYmIGJvZHktPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIHJlbmRlcmVyID0gYm9keS0+cmVu
ZGVyZXIoKTsKLSAgICAgICAgICAgIGNvcm5lclN0eWxlID0gcmVuZGVyZXItPmdldFVuY2FjaGVk
UHNldWRvU3R5bGUoUHNldWRvU3R5bGVSZXF1ZXN0KFNDUk9MTEJBUl9DT1JORVIpLCAmcmVuZGVy
ZXItPnN0eWxlKCkpOworICAgICAgICAgICAgY29ybmVyU3R5bGUgPSByZW5kZXJlci0+Z2V0VW5j
YWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9TdHlsZVJlcXVlc3QoUHNldWRvSWQ6OlNjcm9sbGJhckNv
cm5lciksICZyZW5kZXJlci0+c3R5bGUoKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAg
IGlmICghY29ybmVyU3R5bGUpIHsKQEAgLTM4MzYsMTQgKzM4MzYsMTQgQEAgdm9pZCBGcmFtZVZp
ZXc6OnVwZGF0ZVNjcm9sbENvcm5lcigpCiAgICAgICAgICAgICBFbGVtZW50KiBkb2NFbGVtZW50
ID0gZG9jID8gZG9jLT5kb2N1bWVudEVsZW1lbnQoKSA6IG51bGxwdHI7CiAgICAgICAgICAgICBp
ZiAoZG9jRWxlbWVudCAmJiBkb2NFbGVtZW50LT5yZW5kZXJlcigpKSB7CiAgICAgICAgICAgICAg
ICAgcmVuZGVyZXIgPSBkb2NFbGVtZW50LT5yZW5kZXJlcigpOwotICAgICAgICAgICAgICAgIGNv
cm5lclN0eWxlID0gcmVuZGVyZXItPmdldFVuY2FjaGVkUHNldWRvU3R5bGUoUHNldWRvU3R5bGVS
ZXF1ZXN0KFNDUk9MTEJBUl9DT1JORVIpLCAmcmVuZGVyZXItPnN0eWxlKCkpOworICAgICAgICAg
ICAgICAgIGNvcm5lclN0eWxlID0gcmVuZGVyZXItPmdldFVuY2FjaGVkUHNldWRvU3R5bGUoUHNl
dWRvU3R5bGVSZXF1ZXN0KFBzZXVkb0lkOjpTY3JvbGxiYXJDb3JuZXIpLCAmcmVuZGVyZXItPnN0
eWxlKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAo
IWNvcm5lclN0eWxlKSB7CiAgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGFuIG93bmluZyBpZnJh
bWUvZnJhbWUgZWxlbWVudCwgdGhlbiBpdCBjYW4gc2V0IHRoZSBjdXN0b20gc2Nyb2xsYmFyIGFs
c28uCiAgICAgICAgICAgICBpZiAoUmVuZGVyV2lkZ2V0KiByZW5kZXJlciA9IGZyYW1lKCkub3du
ZXJSZW5kZXJlcigpKQotICAgICAgICAgICAgICAgIGNvcm5lclN0eWxlID0gcmVuZGVyZXItPmdl
dFVuY2FjaGVkUHNldWRvU3R5bGUoUHNldWRvU3R5bGVSZXF1ZXN0KFNDUk9MTEJBUl9DT1JORVIp
LCAmcmVuZGVyZXItPnN0eWxlKCkpOworICAgICAgICAgICAgICAgIGNvcm5lclN0eWxlID0gcmVu
ZGVyZXItPmdldFVuY2FjaGVkUHNldWRvU3R5bGUoUHNldWRvU3R5bGVSZXF1ZXN0KFBzZXVkb0lk
OjpTY3JvbGxiYXJDb3JuZXIpLCAmcmVuZGVyZXItPnN0eWxlKCkpOwogICAgICAgICB9CiAgICAg
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25C
YXNlLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vQW5pbWF0aW9uQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw3ICsxMDAsNyBAQCBk
b3VibGUgQW5pbWF0aW9uQmFzZTo6ZHVyYXRpb24oKSBjb25zdAogCiBib29sIEFuaW1hdGlvbkJh
c2U6OnBsYXlTdGF0ZVBsYXlpbmcoKSBjb25zdAogewotICAgIHJldHVybiBtX2FuaW1hdGlvbi0+
cGxheVN0YXRlKCkgPT0gQW5pbVBsYXlTdGF0ZVBsYXlpbmc7CisgICAgcmV0dXJuIG1fYW5pbWF0
aW9uLT5wbGF5U3RhdGUoKSA9PSBBbmltYXRpb25QbGF5U3RhdGU6OlBsYXlpbmc7CiB9CiAKIGJv
b2wgQW5pbWF0aW9uQmFzZTo6YW5pbWF0aW9uc01hdGNoKGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0
aW9uKSBjb25zdApAQCAtNTUyLDcgKzU1Miw3IEBAIHZvaWQgQW5pbWF0aW9uQmFzZTo6ZmlyZUFu
aW1hdGlvbkV2ZW50c0kKICAgICB9CiB9CiAKLXZvaWQgQW5pbWF0aW9uQmFzZTo6dXBkYXRlUGxh
eVN0YXRlKEVBbmltUGxheVN0YXRlIHBsYXlTdGF0ZSkKK3ZvaWQgQW5pbWF0aW9uQmFzZTo6dXBk
YXRlUGxheVN0YXRlKEFuaW1hdGlvblBsYXlTdGF0ZSBwbGF5U3RhdGUpCiB7CiAgICAgaWYgKCFt
X2NvbXBvc2l0ZUFuaW1hdGlvbikKICAgICAgICAgcmV0dXJuOwpAQCAtNTYwLDcgKzU2MCw3IEBA
IHZvaWQgQW5pbWF0aW9uQmFzZTo6dXBkYXRlUGxheVN0YXRlKEVBbmkKICAgICAvLyBXaGVuIHdl
IGdldCBoZXJlLCB3ZSBjYW4gaGF2ZSBvbmUgb2YgNCBkZXNpcmVkIHN0YXRlczogcnVubmluZywg
cGF1c2VkLCBzdXNwZW5kZWQsIHBhdXNlZCAmIHN1c3BlbmRlZC4KICAgICAvLyBUaGUgc3RhdGUg
bWFjaGluZSBjYW4gYmUgaW4gb25lIG9mIHR3byBzdGF0ZXM6IHJ1bm5pbmcsIHBhdXNlZC4KICAg
ICAvLyBTZXQgdGhlIHN0YXRlIG1hY2hpbmUgdG8gdGhlIGRlc2lyZWQgc3RhdGUuCi0gICAgYm9v
bCBwYXVzZSA9IHBsYXlTdGF0ZSA9PSBBbmltUGxheVN0YXRlUGF1c2VkIHx8IG1fY29tcG9zaXRl
QW5pbWF0aW9uLT5pc1N1c3BlbmRlZCgpOworICAgIGJvb2wgcGF1c2UgPSBwbGF5U3RhdGUgPT0g
QW5pbWF0aW9uUGxheVN0YXRlOjpQYXVzZWQgfHwgbV9jb21wb3NpdGVBbmltYXRpb24tPmlzU3Vz
cGVuZGVkKCk7CiAKICAgICBpZiAocGF1c2UgPT0gcGF1c2VkKCkgJiYgIWlzTmV3KCkpCiAgICAg
ICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlv
bkJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Bbmlt
YXRpb25CYXNlLmgJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0FuaW1hdGlvbkJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDcgKzEwOCw3IEBA
IHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBDYWxsZWQgdG8gY2hhbmdlIHRvIG9yIGZyb20gcGF1
c2VkIHN0YXRlCi0gICAgdm9pZCB1cGRhdGVQbGF5U3RhdGUoRUFuaW1QbGF5U3RhdGUpOworICAg
IHZvaWQgdXBkYXRlUGxheVN0YXRlKEFuaW1hdGlvblBsYXlTdGF0ZSk7CiAgICAgYm9vbCBwbGF5
U3RhdGVQbGF5aW5nKCkgY29uc3Q7CiAKICAgICBib29sIHdhaXRpbmdUb1N0YXJ0KCkgY29uc3Qg
eyByZXR1cm4gbV9hbmltYXRpb25TdGF0ZSA9PSBBbmltYXRpb25TdGF0ZTo6TmV3IHx8IG1fYW5p
bWF0aW9uU3RhdGUgPT0gQW5pbWF0aW9uU3RhdGU6OlN0YXJ0V2FpdFRpbWVyIHx8IG1fYW5pbWF0
aW9uU3RhdGUgPT0gQW5pbWF0aW9uU3RhdGU6OlBhdXNlZE5ldzsgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNw
cAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NT
UHJvcGVydHlBbmltYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDcsMTYgKzI0NywxNiBA
QCBzdGF0aWMgaW5saW5lIFJlZlB0cjxTdHlsZUltYWdlPiBibGVuZEZpCiAgICAgcmV0dXJuIFN0
eWxlR2VuZXJhdGVkSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdCkpOwogfQogCi1zdGF0aWMg
aW5saW5lIEVWaXNpYmlsaXR5IGJsZW5kRnVuYyhjb25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ2xp
ZW50KiBhbmltLCBFVmlzaWJpbGl0eSBmcm9tLCBFVmlzaWJpbGl0eSB0bywgZG91YmxlIHByb2dy
ZXNzKQorc3RhdGljIGlubGluZSBWaXNpYmlsaXR5IGJsZW5kRnVuYyhjb25zdCBDU1NQcm9wZXJ0
eUJsZW5kaW5nQ2xpZW50KiBhbmltLCBWaXNpYmlsaXR5IGZyb20sIFZpc2liaWxpdHkgdG8sIGRv
dWJsZSBwcm9ncmVzcykKIHsKICAgICAvLyBBbnkgbm9uLXplcm8gcmVzdWx0IG1lYW5zIHdlIGNv
bnNpZGVyIHRoZSBvYmplY3QgdG8gYmUgdmlzaWJsZS4gT25seSBhdCAwIGRvIHdlIGNvbnNpZGVy
IHRoZSBvYmplY3QgdG8gYmUKLSAgICAvLyBpbnZpc2libGUuIFRoZSBpbnZpc2libGUgdmFsdWUg
d2UgdXNlIChISURERU4gdnMuIENPTExBUFNFKSBkZXBlbmRzIG9uIHRoZSBzcGVjaWZpZWQgZnJv
bS90byB2YWx1ZXMuCi0gICAgZG91YmxlIGZyb21WYWwgPSBmcm9tID09IFZJU0lCTEUgPyAxLiA6
IDAuOwotICAgIGRvdWJsZSB0b1ZhbCA9IHRvID09IFZJU0lCTEUgPyAxLiA6IDAuOworICAgIC8v
IGludmlzaWJsZS4gVGhlIGludmlzaWJsZSB2YWx1ZSB3ZSB1c2UgKFZpc2liaWxpdHk6OkhpZGRl
biB2cy4gVmlzaWJpbGl0eTo6Q29sbGFwc2UpIGRlcGVuZHMgb24gdGhlIHNwZWNpZmllZCBmcm9t
L3RvIHZhbHVlcy4KKyAgICBkb3VibGUgZnJvbVZhbCA9IGZyb20gPT0gVmlzaWJpbGl0eTo6Vmlz
aWJsZSA/IDEuIDogMC47CisgICAgZG91YmxlIHRvVmFsID0gdG8gPT0gVmlzaWJpbGl0eTo6Vmlz
aWJsZSA/IDEuIDogMC47CiAgICAgaWYgKGZyb21WYWwgPT0gdG9WYWwpCiAgICAgICAgIHJldHVy
biB0bzsKICAgICBkb3VibGUgcmVzdWx0ID0gYmxlbmRGdW5jKGFuaW0sIGZyb21WYWwsIHRvVmFs
LCBwcm9ncmVzcyk7Ci0gICAgcmV0dXJuIHJlc3VsdCA+IDAuID8gVklTSUJMRSA6ICh0byAhPSBW
SVNJQkxFID8gdG8gOiBmcm9tKTsKKyAgICByZXR1cm4gcmVzdWx0ID4gMC4gPyBWaXNpYmlsaXR5
OjpWaXNpYmxlIDogKHRvICE9IFZpc2liaWxpdHk6OlZpc2libGUgPyB0byA6IGZyb20pOwogfQog
CiBzdGF0aWMgaW5saW5lIExlbmd0aEJveCBibGVuZEZ1bmMoY29uc3QgQ1NTUHJvcGVydHlCbGVu
ZGluZ0NsaWVudCogYW5pbSwgY29uc3QgTGVuZ3RoQm94JiBmcm9tLCBjb25zdCBMZW5ndGhCb3gm
IHRvLCBkb3VibGUgcHJvZ3Jlc3MpCkBAIC0xNTUyLDcgKzE1NTIsNyBAQCBDU1NQcm9wZXJ0eUFu
aW1hdGlvbldyYXBwZXJNYXA6OkNTU1Byb3BlCiAgICAgICAgIG5ldyBMZW5ndGhQcm9wZXJ0eVdy
YXBwZXI8TGVuZ3RoU2l6ZT4oQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1cywgJlJlbmRl
clN0eWxlOjpib3JkZXJUb3BSaWdodFJhZGl1cywgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJUb3BS
aWdodFJhZGl1cyksCiAgICAgICAgIG5ldyBMZW5ndGhQcm9wZXJ0eVdyYXBwZXI8TGVuZ3RoU2l6
ZT4oQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzLCAmUmVuZGVyU3R5bGU6OmJvcmRl
ckJvdHRvbUxlZnRSYWRpdXMsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyQm90dG9tTGVmdFJhZGl1
cyksCiAgICAgICAgIG5ldyBMZW5ndGhQcm9wZXJ0eVdyYXBwZXI8TGVuZ3RoU2l6ZT4oQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1cywgJlJlbmRlclN0eWxlOjpib3JkZXJCb3R0b21S
aWdodFJhZGl1cywgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cyksCi0g
ICAgICAgIG5ldyBQcm9wZXJ0eVdyYXBwZXI8RVZpc2liaWxpdHk+KENTU1Byb3BlcnR5VmlzaWJp
bGl0eSwgJlJlbmRlclN0eWxlOjp2aXNpYmlsaXR5LCAmUmVuZGVyU3R5bGU6OnNldFZpc2liaWxp
dHkpLAorICAgICAgICBuZXcgUHJvcGVydHlXcmFwcGVyPFZpc2liaWxpdHk+KENTU1Byb3BlcnR5
VmlzaWJpbGl0eSwgJlJlbmRlclN0eWxlOjp2aXNpYmlsaXR5LCAmUmVuZGVyU3R5bGU6OnNldFZp
c2liaWxpdHkpLAogICAgICAgICBuZXcgUHJvcGVydHlXcmFwcGVyPGZsb2F0PihDU1NQcm9wZXJ0
eVpvb20sICZSZW5kZXJTdHlsZTo6em9vbSwgJlJlbmRlclN0eWxlOjpzZXRab29tV2l0aG91dFJl
dHVyblZhbHVlKSwKIAogICAgICAgICBuZXcgTGVuZ3RoUHJvcGVydHlXcmFwcGVyPExlbmd0aEJv
eD4oQ1NTUHJvcGVydHlDbGlwLCAmUmVuZGVyU3R5bGU6OmNsaXAsICZSZW5kZXJTdHlsZTo6c2V0
Q2xpcCksCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmlt
YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0Nv
bXBvc2l0ZUFuaW1hdGlvbi5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE3MCw3ICsxNzAsNyBAQCB2b2lkIENvbXBvc2l0ZUFuaW1hdGlvbjo6dXBkYXRlVHJhbnNpdGlv
CiAgICAgICAgICAgICAgICAgICAgIC8vIEFkZCB0aGUgbmV3IHRyYW5zaXRpb24KICAgICAgICAg
ICAgICAgICAgICAgYXV0byBpbXBsaWNpdEFuaW1hdGlvbiA9IEltcGxpY2l0QW5pbWF0aW9uOjpj
cmVhdGUoYW5pbWF0aW9uLCBwcm9wLCBlbGVtZW50LCAqdGhpcywgbW9kaWZpZWRDdXJyZW50U3R5
bGUgPyAqbW9kaWZpZWRDdXJyZW50U3R5bGUgOiAqZnJvbVN0eWxlKTsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKG1fc3VzcGVuZGVkICYmIGltcGxpY2l0QW5pbWF0aW9uLT5oYXNTdHlsZSgpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgaW1wbGljaXRBbmltYXRpb24tPnVwZGF0ZVBsYXlTdGF0
ZShBbmltUGxheVN0YXRlUGF1c2VkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGltcGxpY2l0
QW5pbWF0aW9uLT51cGRhdGVQbGF5U3RhdGUoQW5pbWF0aW9uUGxheVN0YXRlOjpQYXVzZWQpOwog
CiAgICAgICAgICAgICAgICAgICAgIExPRyhBbmltYXRpb25zLCAiQ3JlYXRlZCBJbXBsaWNpdEFu
aW1hdGlvbiAlcCBvbiBlbGVtZW50ICVwIGZvciBwcm9wZXJ0eSAlcyBkdXJhdGlvbiAlLjJmIGRl
bGF5ICUuMmYiLCBpbXBsaWNpdEFuaW1hdGlvbi5wdHIoKSwgJmVsZW1lbnQsIGdldFByb3BlcnR5
TmFtZShwcm9wKSwgYW5pbWF0aW9uLmR1cmF0aW9uKCksIGFuaW1hdGlvbi5kZWxheSgpKTsKICAg
ICAgICAgICAgICAgICAgICAgbV90cmFuc2l0aW9ucy5zZXQocHJvcCwgV1RGTW92ZShpbXBsaWNp
dEFuaW1hdGlvbikpOwpAQCAtMjUzLDcgKzI1Myw3IEBAIHZvaWQgQ29tcG9zaXRlQW5pbWF0aW9u
Ojp1cGRhdGVLZXlmcmFtZUEKICAgICAgICAgICAgICAgICBMT0coQW5pbWF0aW9ucywgIkNyZWF0
aW5nIEtleWZyYW1lQW5pbWF0aW9uICVwIG9uIGVsZW1lbnQgJXAgd2l0aCBrZXlmcmFtZXMgJXMs
IGR1cmF0aW9uICUuMmYsIGRlbGF5ICUuMmYsIGl0ZXJhdGlvbnMgJS4yZiIsIGtleWZyYW1lQW5p
bS5nZXQoKSwgJmVsZW1lbnQsIGFuaW1hdGlvbi5uYW1lKCkudXRmOCgpLmRhdGEoKSwgYW5pbWF0
aW9uLmR1cmF0aW9uKCksIGFuaW1hdGlvbi5kZWxheSgpLCBhbmltYXRpb24uaXRlcmF0aW9uQ291
bnQoKSk7CiAKICAgICAgICAgICAgICAgICBpZiAobV9zdXNwZW5kZWQpIHsKLSAgICAgICAgICAg
ICAgICAgICAga2V5ZnJhbWVBbmltLT51cGRhdGVQbGF5U3RhdGUoQW5pbVBsYXlTdGF0ZVBhdXNl
ZCk7CisgICAgICAgICAgICAgICAgICAgIGtleWZyYW1lQW5pbS0+dXBkYXRlUGxheVN0YXRlKEFu
aW1hdGlvblBsYXlTdGF0ZTo6UGF1c2VkKTsKICAgICAgICAgICAgICAgICAgICAgTE9HKEFuaW1h
dGlvbnMsICIgIChjcmVhdGVkIGluIHN1c3BlbmRlZC9wYXVzZWQgc3RhdGUpIik7CiAgICAgICAg
ICAgICAgICAgfQogI2lmICFMT0dfRElTQUJMRUQKQEAgLTQ2NCwxMyArNDY0LDEzIEBAIHZvaWQg
Q29tcG9zaXRlQW5pbWF0aW9uOjpzdXNwZW5kQW5pbWF0aW8KICAgICBpZiAoIW1fa2V5ZnJhbWVB
bmltYXRpb25zLmlzRW1wdHkoKSkgewogICAgICAgICBtX2tleWZyYW1lQW5pbWF0aW9ucy5jaGVj
a0NvbnNpc3RlbmN5KCk7CiAgICAgICAgIGZvciAoYXV0byYgYW5pbWF0aW9uIDogbV9rZXlmcmFt
ZUFuaW1hdGlvbnMudmFsdWVzKCkpCi0gICAgICAgICAgICBhbmltYXRpb24tPnVwZGF0ZVBsYXlT
dGF0ZShBbmltUGxheVN0YXRlUGF1c2VkKTsKKyAgICAgICAgICAgIGFuaW1hdGlvbi0+dXBkYXRl
UGxheVN0YXRlKEFuaW1hdGlvblBsYXlTdGF0ZTo6UGF1c2VkKTsKICAgICB9CiAKICAgICBpZiAo
IW1fdHJhbnNpdGlvbnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGZvciAoYXV0byYgdHJhbnNpdGlv
biA6IG1fdHJhbnNpdGlvbnMudmFsdWVzKCkpIHsKICAgICAgICAgICAgIGlmICh0cmFuc2l0aW9u
LT5oYXNTdHlsZSgpKQotICAgICAgICAgICAgICAgIHRyYW5zaXRpb24tPnVwZGF0ZVBsYXlTdGF0
ZShBbmltUGxheVN0YXRlUGF1c2VkKTsKKyAgICAgICAgICAgICAgICB0cmFuc2l0aW9uLT51cGRh
dGVQbGF5U3RhdGUoQW5pbWF0aW9uUGxheVN0YXRlOjpQYXVzZWQpOwogICAgICAgICB9CiAgICAg
fQogfQpAQCAtNDg2LDE0ICs0ODYsMTQgQEAgdm9pZCBDb21wb3NpdGVBbmltYXRpb246OnJlc3Vt
ZUFuaW1hdGlvbgogICAgICAgICBtX2tleWZyYW1lQW5pbWF0aW9ucy5jaGVja0NvbnNpc3RlbmN5
KCk7CiAgICAgICAgIGZvciAoYXV0byYgYW5pbWF0aW9uIDogbV9rZXlmcmFtZUFuaW1hdGlvbnMu
dmFsdWVzKCkpIHsKICAgICAgICAgICAgIGlmIChhbmltYXRpb24tPnBsYXlTdGF0ZVBsYXlpbmco
KSkKLSAgICAgICAgICAgICAgICBhbmltYXRpb24tPnVwZGF0ZVBsYXlTdGF0ZShBbmltUGxheVN0
YXRlUGxheWluZyk7CisgICAgICAgICAgICAgICAgYW5pbWF0aW9uLT51cGRhdGVQbGF5U3RhdGUo
QW5pbWF0aW9uUGxheVN0YXRlOjpQbGF5aW5nKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlm
ICghbV90cmFuc2l0aW9ucy5pc0VtcHR5KCkpIHsKICAgICAgICAgZm9yIChhdXRvJiB0cmFuc2l0
aW9uIDogbV90cmFuc2l0aW9ucy52YWx1ZXMoKSkgewogICAgICAgICAgICAgaWYgKHRyYW5zaXRp
b24tPmhhc1N0eWxlKCkpCi0gICAgICAgICAgICAgICAgdHJhbnNpdGlvbi0+dXBkYXRlUGxheVN0
YXRlKEFuaW1QbGF5U3RhdGVQbGF5aW5nKTsKKyAgICAgICAgICAgICAgICB0cmFuc2l0aW9uLT51
cGRhdGVQbGF5U3RhdGUoQW5pbWF0aW9uUGxheVN0YXRlOjpQbGF5aW5nKTsKICAgICAgICAgfQog
ICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5p
bWF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9L
ZXlmcmFtZUFuaW1hdGlvbi5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTYzLDkgKzE2Myw5IEBAIGJvb2wgS2V5ZnJhbWVBbmltYXRpb246OmFuaW1hdGUoQ29tcG9zaXQK
ICAgICAKICAgICAvLyBJZiB3ZSBoYXZlIG5vdCB5ZXQgc3RhcnRlZCwgd2Ugd2lsbCBub3QgaGF2
ZSBhIHZhbGlkIHN0YXJ0IHRpbWUsIHNvIGp1c3Qgc3RhcnQgdGhlIGFuaW1hdGlvbiBpZiBuZWVk
ZWQuCiAgICAgaWYgKGlzTmV3KCkpIHsKLSAgICAgICAgaWYgKG1fYW5pbWF0aW9uLT5wbGF5U3Rh
dGUoKSA9PSBBbmltUGxheVN0YXRlUGxheWluZyAmJiAhY29tcG9zaXRlQW5pbWF0aW9uLmlzU3Vz
cGVuZGVkKCkpCisgICAgICAgIGlmIChtX2FuaW1hdGlvbi0+cGxheVN0YXRlKCkgPT0gQW5pbWF0
aW9uUGxheVN0YXRlOjpQbGF5aW5nICYmICFjb21wb3NpdGVBbmltYXRpb24uaXNTdXNwZW5kZWQo
KSkKICAgICAgICAgICAgIHVwZGF0ZVN0YXRlTWFjaGluZShBbmltYXRpb25TdGF0ZUlucHV0OjpT
dGFydEFuaW1hdGlvbiwgLTEpOwotICAgICAgICBlbHNlIGlmIChtX2FuaW1hdGlvbi0+cGxheVN0
YXRlKCkgPT0gQW5pbVBsYXlTdGF0ZVBhdXNlZCkKKyAgICAgICAgZWxzZSBpZiAobV9hbmltYXRp
b24tPnBsYXlTdGF0ZSgpID09IEFuaW1hdGlvblBsYXlTdGF0ZTo6UGF1c2VkKQogICAgICAgICAg
ICAgdXBkYXRlU3RhdGVNYWNoaW5lKEFuaW1hdGlvblN0YXRlSW5wdXQ6OlBsYXlTdGF0ZVBhdXNl
ZCwgLTEpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1Mu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0JKHJl
dmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC00MTgsNyArNDE4LDcgQEAgTm9kZSogRnJhbWU6Om5vZGVSZXNwb25k
aW5nVG9DbGlja0V2ZW50cwogICAgICAgICAgICAgICAgIHBvaW50ZXJDdXJzb3JTdGlsbFZhbGlk
ID0gZmFsc2U7CiAKICAgICAgICAgICAgIC8vIElmIHdlIGhhdmVuJ3QgcmVhY2hlZCB0aGUgYm9k
eSwgYW5kIHdlIGFyZSBzdGlsbCBwYXlpbmcgYXR0ZW50aW9uIHRvIHBvaW50ZXIgY3Vyc29ycywg
YW5kIHRoZSBub2RlIGhhcyBhIHBvaW50ZXIgY3Vyc29yLi4uCi0gICAgICAgICAgICBpZiAocG9p
bnRlckN1cnNvclN0aWxsVmFsaWQgJiYgbm9kZS0+cmVuZGVyU3R5bGUoKSAmJiBub2RlLT5yZW5k
ZXJTdHlsZSgpLT5jdXJzb3IoKSA9PSBDdXJzb3JQb2ludGVyKQorICAgICAgICAgICAgaWYgKHBv
aW50ZXJDdXJzb3JTdGlsbFZhbGlkICYmIG5vZGUtPnJlbmRlclN0eWxlKCkgJiYgbm9kZS0+cmVu
ZGVyU3R5bGUoKS0+Y3Vyc29yKCkgPT0gQ3Vyc29yVHlwZTo6UG9pbnRlcikKICAgICAgICAgICAg
ICAgICBwb2ludGVyQ3Vyc29yTm9kZSA9IG5vZGU7CiAgICAgICAgICAgICAvLyBXZSB3YW50IHRo
ZSBsb3dlc3QgdW5icm9rZW4gY2hhaW4gb2YgcG9pbnRlciBjdXJzb3JzLgogICAgICAgICAgICAg
ZWxzZSBpZiAocG9pbnRlckN1cnNvck5vZGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hbmltYXRpb24vQW5pbWF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDggKzM4LDggQEAgQW5pbWF0aW9uOjpBbmltYXRpb24oKQogICAgICwgbV90cmln
Z2VyKGluaXRpYWxUcmlnZ2VyKCkpCiAjZW5kaWYKICAgICAsIG1fZGlyZWN0aW9uKGluaXRpYWxE
aXJlY3Rpb24oKSkKLSAgICAsIG1fZmlsbE1vZGUoaW5pdGlhbEZpbGxNb2RlKCkpCi0gICAgLCBt
X3BsYXlTdGF0ZShpbml0aWFsUGxheVN0YXRlKCkpCisgICAgLCBtX2ZpbGxNb2RlKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihpbml0aWFsRmlsbE1vZGUoKSkpCisgICAgLCBtX3BsYXlTdGF0ZShzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbFBsYXlTdGF0ZSgpKSkKICAgICAsIG1fZGVsYXlTZXQo
ZmFsc2UpCiAgICAgLCBtX2RpcmVjdGlvblNldChmYWxzZSkKICAgICAsIG1fZHVyYXRpb25TZXQo
ZmFsc2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1h
dGlvbi5oCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmlt
YXRpb24vQW5pbWF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgY2xlYXJGaWxsTW9kZSgpIHsgbV9maWxsTW9kZVNldCA9IGZhbHNlOyB9CiAg
ICAgdm9pZCBjbGVhckl0ZXJhdGlvbkNvdW50KCkgeyBtX2l0ZXJhdGlvbkNvdW50U2V0ID0gZmFs
c2U7IH0KICAgICB2b2lkIGNsZWFyTmFtZSgpIHsgbV9uYW1lU2V0ID0gZmFsc2U7IH0KLSAgICB2
b2lkIGNsZWFyUGxheVN0YXRlKCkgeyBtX3BsYXlTdGF0ZVNldCA9IEFuaW1QbGF5U3RhdGVQbGF5
aW5nOyB9CisgICAgdm9pZCBjbGVhclBsYXlTdGF0ZSgpIHsgbV9wbGF5U3RhdGVTZXQgPSBmYWxz
ZTsgfQogICAgIHZvaWQgY2xlYXJQcm9wZXJ0eSgpIHsgbV9wcm9wZXJ0eVNldCA9IGZhbHNlOyB9
CiAgICAgdm9pZCBjbGVhclRpbWluZ0Z1bmN0aW9uKCkgeyBtX3RpbWluZ0Z1bmN0aW9uU2V0ID0g
ZmFsc2U7IH0KICNpZiBFTkFCTEUoQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikKQEAgLTEwOSw3ICsx
MDksMTIgQEAgcHVibGljOgogCiAgICAgZG91YmxlIGRlbGF5KCkgY29uc3QgeyByZXR1cm4gbV9k
ZWxheTsgfQogCi0gICAgZW51bSBBbmltYXRpb25Nb2RlIHsgQW5pbWF0ZUFsbCwgQW5pbWF0ZU5v
bmUsIEFuaW1hdGVTaW5nbGVQcm9wZXJ0eSwgQW5pbWF0ZVVua25vd25Qcm9wZXJ0eSB9OworICAg
IGVudW0gQW5pbWF0aW9uTW9kZSB7CisgICAgICAgIEFuaW1hdGVBbGwsCisgICAgICAgIEFuaW1h
dGVOb25lLAorICAgICAgICBBbmltYXRlU2luZ2xlUHJvcGVydHksCisgICAgICAgIEFuaW1hdGVV
bmtub3duUHJvcGVydHkKKyAgICB9OwogCiAgICAgZW51bSBBbmltYXRpb25EaXJlY3Rpb24gewog
ICAgICAgICBBbmltYXRpb25EaXJlY3Rpb25Ob3JtYWwsCkBAIC0xMTcsMTAgKzEyMiwxMSBAQCBw
dWJsaWM6CiAgICAgICAgIEFuaW1hdGlvbkRpcmVjdGlvblJldmVyc2UsCiAgICAgICAgIEFuaW1h
dGlvbkRpcmVjdGlvbkFsdGVybmF0ZVJldmVyc2UKICAgICB9OworCiAgICAgQW5pbWF0aW9uRGly
ZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFuaW1hdGlvbkRp
cmVjdGlvbj4obV9kaXJlY3Rpb24pOyB9CiAgICAgYm9vbCBkaXJlY3Rpb25Jc0ZvcndhcmRzKCkg
Y29uc3QgeyByZXR1cm4gbV9kaXJlY3Rpb24gPT0gQW5pbWF0aW9uRGlyZWN0aW9uTm9ybWFsIHx8
IG1fZGlyZWN0aW9uID09IEFuaW1hdGlvbkRpcmVjdGlvbkFsdGVybmF0ZTsgfQogCi0gICAgdW5z
aWduZWQgZmlsbE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2ZpbGxNb2RlOyB9CisgICAgQW5pbWF0
aW9uRmlsbE1vZGUgZmlsbE1vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBbmltYXRp
b25GaWxsTW9kZT4obV9maWxsTW9kZSk7IH0KIAogICAgIGRvdWJsZSBkdXJhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KIApAQCAtMTI4LDcgKzEzNCw3IEBAIHB1YmxpYzoKICAg
ICBkb3VibGUgaXRlcmF0aW9uQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdGlvbkNvdW50
OyB9CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAg
ICAgU3R5bGU6OlNjb3BlT3JkaW5hbCBuYW1lU3R5bGVTY29wZU9yZGluYWwoKSBjb25zdCB7IHJl
dHVybiBtX25hbWVTdHlsZVNjb3BlT3JkaW5hbDsgfQotICAgIEVBbmltUGxheVN0YXRlIHBsYXlT
dGF0ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVBbmltUGxheVN0YXRlPihtX3BsYXlT
dGF0ZSk7IH0KKyAgICBBbmltYXRpb25QbGF5U3RhdGUgcGxheVN0YXRlKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8QW5pbWF0aW9uUGxheVN0YXRlPihtX3BsYXlTdGF0ZSk7IH0KICAgICBD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5KCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eTsgfQogICAg
IGNvbnN0IFN0cmluZyYgdW5rbm93blByb3BlcnR5KCkgY29uc3QgeyByZXR1cm4gbV91bmtub3du
UHJvcGVydHk7IH0KICAgICBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX3RpbWluZ0Z1bmN0aW9uLmdldCgpOyB9CkBAIC0xNDAsNyArMTQ2LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0RGVsYXkoZG91YmxlIGMpIHsgbV9kZWxheSA9IGM7IG1fZGVsYXlT
ZXQgPSB0cnVlOyB9CiAgICAgdm9pZCBzZXREaXJlY3Rpb24oQW5pbWF0aW9uRGlyZWN0aW9uIGQp
IHsgbV9kaXJlY3Rpb24gPSBkOyBtX2RpcmVjdGlvblNldCA9IHRydWU7IH0KICAgICB2b2lkIHNl
dER1cmF0aW9uKGRvdWJsZSBkKSB7IEFTU0VSVChkID49IDApOyBtX2R1cmF0aW9uID0gZDsgbV9k
dXJhdGlvblNldCA9IHRydWU7IH0KLSAgICB2b2lkIHNldEZpbGxNb2RlKHVuc2lnbmVkIGYpIHsg
bV9maWxsTW9kZSA9IGY7IG1fZmlsbE1vZGVTZXQgPSB0cnVlOyB9CisgICAgdm9pZCBzZXRGaWxs
TW9kZShBbmltYXRpb25GaWxsTW9kZSBmKSB7IG1fZmlsbE1vZGUgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oZik7IG1fZmlsbE1vZGVTZXQgPSB0cnVlOyB9CiAgICAgdm9pZCBzZXRJdGVyYXRpb25D
b3VudChkb3VibGUgYykgeyBtX2l0ZXJhdGlvbkNvdW50ID0gYzsgbV9pdGVyYXRpb25Db3VudFNl
dCA9IHRydWU7IH0KICAgICB2b2lkIHNldE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHlsZTo6
U2NvcGVPcmRpbmFsIHNjb3BlID0gU3R5bGU6OlNjb3BlT3JkaW5hbDo6RWxlbWVudCkKICAgICB7
CkBAIC0xNDgsNyArMTU0LDcgQEAgcHVibGljOgogICAgICAgICBtX25hbWVTdHlsZVNjb3BlT3Jk
aW5hbCA9IHNjb3BlOwogICAgICAgICBtX25hbWVTZXQgPSB0cnVlOwogICAgIH0KLSAgICB2b2lk
IHNldFBsYXlTdGF0ZShFQW5pbVBsYXlTdGF0ZSBkKSB7IG1fcGxheVN0YXRlID0gZDsgbV9wbGF5
U3RhdGVTZXQgPSB0cnVlOyB9CisgICAgdm9pZCBzZXRQbGF5U3RhdGUoQW5pbWF0aW9uUGxheVN0
YXRlIGQpIHsgbV9wbGF5U3RhdGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZCk7IG1fcGxheVN0
YXRlU2V0ID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0UHJvcGVydHkoQ1NTUHJvcGVydHlJRCB0KSB7
IG1fcHJvcGVydHkgPSB0OyBtX3Byb3BlcnR5U2V0ID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0VW5r
bm93blByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHkpIHsgbV91bmtub3duUHJvcGVydHkg
PSBwcm9wZXJ0eTsgfQogICAgIHZvaWQgc2V0VGltaW5nRnVuY3Rpb24oUmVmUHRyPFRpbWluZ0Z1
bmN0aW9uPiYmIGZ1bmN0aW9uKSB7IG1fdGltaW5nRnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9u
KTsgbV90aW1pbmdGdW5jdGlvblNldCA9IHRydWU7IH0KQEAgLTE2OCw4ICsxNzQsOCBAQCBwdWJs
aWM6CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFuaW1hdGlvbiYgbykgY29uc3QgeyByZXR1
cm4gYW5pbWF0aW9uc01hdGNoKG8pOyB9CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEFuaW1h
dGlvbiYgbykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvKTsgfQogCi0gICAgYm9vbCBmaWxs
c0JhY2t3YXJkcygpIGNvbnN0IHsgcmV0dXJuIG1fZmlsbE1vZGVTZXQgJiYgKG1fZmlsbE1vZGUg
PT0gQW5pbWF0aW9uRmlsbE1vZGVCYWNrd2FyZHMgfHwgbV9maWxsTW9kZSA9PSBBbmltYXRpb25G
aWxsTW9kZUJvdGgpOyB9Ci0gICAgYm9vbCBmaWxsc0ZvcndhcmRzKCkgY29uc3QgeyByZXR1cm4g
bV9maWxsTW9kZVNldCAmJiAobV9maWxsTW9kZSA9PSBBbmltYXRpb25GaWxsTW9kZUZvcndhcmRz
IHx8IG1fZmlsbE1vZGUgPT0gQW5pbWF0aW9uRmlsbE1vZGVCb3RoKTsgfQorICAgIGJvb2wgZmls
bHNCYWNrd2FyZHMoKSBjb25zdCB7IHJldHVybiBtX2ZpbGxNb2RlU2V0ICYmIChmaWxsTW9kZSgp
ID09IEFuaW1hdGlvbkZpbGxNb2RlOjpCYWNrd2FyZHMgfHwgZmlsbE1vZGUoKSA9PSBBbmltYXRp
b25GaWxsTW9kZTo6Qm90aCk7IH0KKyAgICBib29sIGZpbGxzRm9yd2FyZHMoKSBjb25zdCB7IHJl
dHVybiBtX2ZpbGxNb2RlU2V0ICYmIChmaWxsTW9kZSgpID09IEFuaW1hdGlvbkZpbGxNb2RlOjpG
b3J3YXJkcyB8fCBmaWxsTW9kZSgpID09IEFuaW1hdGlvbkZpbGxNb2RlOjpCb3RoKTsgfQogCiBw
cml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIEFuaW1hdGlvbigpOwpAQCAtMjEyLDEwICsyMTgs
MTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBkb3VibGUgaW5pdGlhbERlbGF5KCkgeyByZXR1cm4g
MDsgfQogICAgIHN0YXRpYyBBbmltYXRpb25EaXJlY3Rpb24gaW5pdGlhbERpcmVjdGlvbigpIHsg
cmV0dXJuIEFuaW1hdGlvbkRpcmVjdGlvbk5vcm1hbDsgfQogICAgIHN0YXRpYyBkb3VibGUgaW5p
dGlhbER1cmF0aW9uKCkgeyByZXR1cm4gMDsgfQotICAgIHN0YXRpYyB1bnNpZ25lZCBpbml0aWFs
RmlsbE1vZGUoKSB7IHJldHVybiBBbmltYXRpb25GaWxsTW9kZU5vbmU7IH0KKyAgICBzdGF0aWMg
QW5pbWF0aW9uRmlsbE1vZGUgaW5pdGlhbEZpbGxNb2RlKCkgeyByZXR1cm4gQW5pbWF0aW9uRmls
bE1vZGU6Ok5vbmU7IH0KICAgICBzdGF0aWMgZG91YmxlIGluaXRpYWxJdGVyYXRpb25Db3VudCgp
IHsgcmV0dXJuIDEuMDsgfQogICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIGluaXRpYWxOYW1lKCk7
Ci0gICAgc3RhdGljIEVBbmltUGxheVN0YXRlIGluaXRpYWxQbGF5U3RhdGUoKSB7IHJldHVybiBB
bmltUGxheVN0YXRlUGxheWluZzsgfQorICAgIHN0YXRpYyBBbmltYXRpb25QbGF5U3RhdGUgaW5p
dGlhbFBsYXlTdGF0ZSgpIHsgcmV0dXJuIEFuaW1hdGlvblBsYXlTdGF0ZTo6UGxheWluZzsgfQog
ICAgIHN0YXRpYyBDU1NQcm9wZXJ0eUlEIGluaXRpYWxQcm9wZXJ0eSgpIHsgcmV0dXJuIENTU1By
b3BlcnR5SW52YWxpZDsgfQogICAgIHN0YXRpYyBSZWY8VGltaW5nRnVuY3Rpb24+IGluaXRpYWxU
aW1pbmdGdW5jdGlvbigpIHsgcmV0dXJuIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OmNyZWF0
ZSgpOyB9CiAjaWYgRU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oCShyZXZpc2lv
biAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5
cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDE1ICs4Niw0MCBAQCBlbnVtIEludGVycG9sYXRp
b25RdWFsaXR5IHsKICAgICBJbnRlcnBvbGF0aW9uSGlnaAogfTsKIAotZW51bSBMaW5lQ2FwIHsg
QnV0dENhcCwgUm91bmRDYXAsIFNxdWFyZUNhcCB9OworZW51bSBMaW5lQ2FwIHsKKyAgICBCdXR0
Q2FwLAorICAgIFJvdW5kQ2FwLAorICAgIFNxdWFyZUNhcAorfTsKIAotZW51bSBMaW5lSm9pbiB7
IE1pdGVySm9pbiwgUm91bmRKb2luLCBCZXZlbEpvaW4gfTsKK2VudW0gTGluZUpvaW4geworICAg
IE1pdGVySm9pbiwKKyAgICBSb3VuZEpvaW4sCisgICAgQmV2ZWxKb2luCit9OwogCi1lbnVtIEhv
cml6b250YWxBbGlnbm1lbnQgeyBBbGlnbkxlZnQsIEFsaWduUmlnaHQsIEFsaWduSENlbnRlciB9
OworZW51bSBIb3Jpem9udGFsQWxpZ25tZW50IHsKKyAgICBBbGlnbkxlZnQsCisgICAgQWxpZ25S
aWdodCwKKyAgICBBbGlnbkhDZW50ZXIKK307CiAKLWVudW0gVGV4dEJhc2VsaW5lIHsgQWxwaGFi
ZXRpY1RleHRCYXNlbGluZSwgVG9wVGV4dEJhc2VsaW5lLCBNaWRkbGVUZXh0QmFzZWxpbmUsIEJv
dHRvbVRleHRCYXNlbGluZSwgSWRlb2dyYXBoaWNUZXh0QmFzZWxpbmUsIEhhbmdpbmdUZXh0QmFz
ZWxpbmUgfTsKK2VudW0gVGV4dEJhc2VsaW5lIHsKKyAgICBBbHBoYWJldGljVGV4dEJhc2VsaW5l
LAorICAgIFRvcFRleHRCYXNlbGluZSwKKyAgICBNaWRkbGVUZXh0QmFzZWxpbmUsCisgICAgQm90
dG9tVGV4dEJhc2VsaW5lLAorICAgIElkZW9ncmFwaGljVGV4dEJhc2VsaW5lLAorICAgIEhhbmdp
bmdUZXh0QmFzZWxpbmUKK307CiAKLWVudW0gVGV4dEFsaWduIHsgU3RhcnRUZXh0QWxpZ24sIEVu
ZFRleHRBbGlnbiwgTGVmdFRleHRBbGlnbiwgQ2VudGVyVGV4dEFsaWduLCBSaWdodFRleHRBbGln
biB9OworZW51bSBUZXh0QWxpZ24geworICAgIFN0YXJ0VGV4dEFsaWduLAorICAgIEVuZFRleHRB
bGlnbiwKKyAgICBMZWZ0VGV4dEFsaWduLAorICAgIENlbnRlclRleHRBbGlnbiwKKyAgICBSaWdo
dFRleHRBbGlnbgorfTsKIAogZW51bSBSZW5kZXJpbmdNb2RlIHsKICAgICBVbmFjY2VsZXJhdGVk
LApAQCAtMTEyLDEyICsxMzcsNiBAQCBTdHJpbmcgYmxlbmRNb2RlTmFtZShCbGVuZE1vZGUpOwog
Ym9vbCBwYXJzZUJsZW5kTW9kZShjb25zdCBTdHJpbmcmLCBCbGVuZE1vZGUmKTsKIGJvb2wgcGFy
c2VDb21wb3NpdGVBbmRCbGVuZE9wZXJhdG9yKGNvbnN0IFN0cmluZyYsIENvbXBvc2l0ZU9wZXJh
dG9yJiwgQmxlbmRNb2RlJik7CiAKLVN0cmluZyB0ZXh0QWxpZ25OYW1lKFRleHRBbGlnbik7Ci1i
b29sIHBhcnNlVGV4dEFsaWduKGNvbnN0IFN0cmluZyYsIFRleHRBbGlnbiYpOwotCi1TdHJpbmcg
dGV4dEJhc2VsaW5lTmFtZShUZXh0QmFzZWxpbmUpOwotYm9vbCBwYXJzZVRleHRCYXNlbGluZShj
b25zdCBTdHJpbmcmLCBUZXh0QmFzZWxpbmUmKTsKLQogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIEJsZW5kTW9kZSk7CiBXRUJDT1JF
X0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgQ29t
cG9zaXRlT3BlcmF0b3IpOwogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFdURjo6VGV4dFN0cmVhbSYsIFdpbmRSdWxlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAkocmV2
aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE4NywxNiArMzE4NywxNiBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0dXBBbmltYXRpb24oUGxhCiAKICAgICBQbGF0Zm9ybUNB
QW5pbWF0aW9uOjpGaWxsTW9kZVR5cGUgZmlsbE1vZGUgPSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpO
b0ZpbGxNb2RlOwogICAgIHN3aXRjaCAoYW5pbS0+ZmlsbE1vZGUoKSkgewotICAgIGNhc2UgQW5p
bWF0aW9uRmlsbE1vZGVOb25lOgorICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGU6Ok5vbmU6CiAg
ICAgICAgIGZpbGxNb2RlID0gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Rm9yd2FyZHM7IC8vIFVzZSAi
Zm9yd2FyZHMiIHJhdGhlciB0aGFuICJyZW1vdmVkIiBiZWNhdXNlIHRoZSBzdHlsZSBzeXN0ZW0g
d2lsbCByZW1vdmUgdGhlIGFuaW1hdGlvbiB3aGVuIGl0IGlzIGZpbmlzaGVkLiBUaGlzIGF2b2lk
cyBhIGZsYXNoLgogICAgICAgICBicmVhazsKLSAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlQmFj
a3dhcmRzOgorICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGU6OkJhY2t3YXJkczoKICAgICAgICAg
ZmlsbE1vZGUgPSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpCb3RoOyAvLyBVc2UgImJvdGgiIHJhdGhl
ciB0aGFuICJiYWNrd2FyZHMiIGJlY2F1c2UgdGhlIHN0eWxlIHN5c3RlbSB3aWxsIHJlbW92ZSB0
aGUgYW5pbWF0aW9uIHdoZW4gaXQgaXMgZmluaXNoZWQuIFRoaXMgYXZvaWRzIGEgZmxhc2guCiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGVGb3J3YXJkczoKKyAgICBj
YXNlIEFuaW1hdGlvbkZpbGxNb2RlOjpGb3J3YXJkczoKICAgICAgICAgZmlsbE1vZGUgPSBQbGF0
Zm9ybUNBQW5pbWF0aW9uOjpGb3J3YXJkczsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBbmlt
YXRpb25GaWxsTW9kZUJvdGg6CisgICAgY2FzZSBBbmltYXRpb25GaWxsTW9kZTo6Qm90aDoKICAg
ICAgICAgZmlsbE1vZGUgPSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpCb3RoOwogICAgICAgICBicmVh
azsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1dpbmRv
dy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1dp
bmRvdy5tbQkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L3dhay9XQUtXaW5kb3cubW0JKHdvcmtpbmcgY29weSkKQEAgLTY4Miw3ICs2ODIsNyBAQCAtICh2
b2lkKWR1bXBUaWxlcwogICAgIENHUmVjdCBzYXZlZEZyb3plblZpc2libGVSZWN0ID0gX2Zyb3pl
blZpc2libGVSZWN0OwogICAgIE5TTG9nKEAiPT09PT09PT09PT09PT09PT0iKTsKICAgICBpZiAo
IUNHUmVjdElzTnVsbChfZnJvemVuVmlzaWJsZVJlY3QpKSB7Ci0gICAgICAgIE5TTG9nKEAiVklT
SUJMRSBSRUNUIElTIENBQ0hFRDogWyU2LjFmICU2LjFmICU2LjFmICU2LjFmXSIsIF9mcm96ZW5W
aXNpYmxlUmVjdC5vcmlnaW4ueCwgX2Zyb3plblZpc2libGVSZWN0Lm9yaWdpbi55LCBfZnJvemVu
VmlzaWJsZVJlY3Quc2l6ZS53aWR0aCwgX2Zyb3plblZpc2libGVSZWN0LnNpemUuaGVpZ2h0KTsK
KyAgICAgICAgTlNMb2coQCJWaXNpYmlsaXR5OjpWaXNpYmxlIFJFQ1QgSVMgQ0FDSEVEOiBbJTYu
MWYgJTYuMWYgJTYuMWYgJTYuMWZdIiwgX2Zyb3plblZpc2libGVSZWN0Lm9yaWdpbi54LCBfZnJv
emVuVmlzaWJsZVJlY3Qub3JpZ2luLnksIF9mcm96ZW5WaXNpYmxlUmVjdC5zaXplLndpZHRoLCBf
ZnJvemVuVmlzaWJsZVJlY3Quc2l6ZS5oZWlnaHQpOwogICAgICAgICBfZnJvemVuVmlzaWJsZVJl
Y3QgPSBDR1JlY3ROdWxsOwogICAgIH0KICAgICBDR1JlY3QgdmlzaWJsZVJlY3QgPSBbc2VsZiB2
aXNpYmxlUmVjdF07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5T
VVJMRXh0cmFzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJDb3JlTlNVUkxFeHRyYXMubW0JKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE3
Nyw4ICsxNzcsOCBAQCBzdGF0aWMgQk9PTCBpc0xvb2thbGlrZUNoYXJhY3RlcihzdGQ6Om9wCiAg
ICAgICAgIGNhc2UgMHgyMzNGOiAvKiBBUEwgRlVOQ1RJT05BTCBTWU1CT0wgU0xBU0ggQkFSICov
CiAgICAgICAgIGNhc2UgMHgyM0FFOiAvKiBJTlRFR1JBTCBFWFRFTlNJT04gKi8KICAgICAgICAg
Y2FzZSAweDI0NEE6IC8qIE9DUiBET1VCTEUgQkFDS1NMQVNIICovCi0gICAgICAgIGNhc2UgMHgy
NTcxOiAvKiBCT1ggRFJBV0lOR1MgTElHSFQgRElBR09OQUwgVVBQRVIgUklHSFQgVE8gTE9XRVIg
TEVGVCAqLwotICAgICAgICBjYXNlIDB4MjU3MjogLyogQk9YIERSQVdJTkdTIExJR0hUIERJQUdP
TkFMIFVQUEVSIExFRlQgVE8gTE9XRVIgUklHSFQgKi8KKyAgICAgICAgY2FzZSAweDI1NzE6IC8q
IERpc3BsYXlUeXBlOjpCb3ggRFJBV0lOR1MgTElHSFQgRElBR09OQUwgVVBQRVIgUklHSFQgVE8g
TE9XRVIgTEVGVCAqLworICAgICAgICBjYXNlIDB4MjU3MjogLyogRGlzcGxheVR5cGU6OkJveCBE
UkFXSU5HUyBMSUdIVCBESUFHT05BTCBVUFBFUiBMRUZUIFRPIExPV0VSIFJJR0hUICovCiAgICAg
ICAgIGNhc2UgMHgyOUY2OiAvKiBTT0xJRFVTIFdJVEggT1ZFUkJBUiAqLwogICAgICAgICBjYXNl
IDB4MjlGODogLyogQklHIFNPTElEVVMgKi8KICAgICAgICAgY2FzZSAweDJBRkI6IC8qIFRSSVBM
RSBTT0xJRFVTIEJJTkFSWSBSRUxBVElPTiAqLwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0NsaXBQYXRoT3BlcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0NsaXBQYXRoT3BlcmF0aW9uLmgJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9DbGlwUGF0aE9wZXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjAsNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBTaGFwZUNsaXBQYXRoT3BlcmF0
aW9uKFJlZjxCYXNpY1NoYXBlPiYmIHNoYXBlKQogICAgICAgICA6IENsaXBQYXRoT3BlcmF0aW9u
KFNoYXBlKQogICAgICAgICAsIG1fc2hhcGUoV1RGTW92ZShzaGFwZSkpCi0gICAgICAgICwgbV9y
ZWZlcmVuY2VCb3goQm94TWlzc2luZykKKyAgICAgICAgLCBtX3JlZmVyZW5jZUJveChDU1NCb3hU
eXBlOjpCb3hNaXNzaW5nKQogICAgIHsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lQm94LmgJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMjQxLDcgKzI0MSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGludmFsaWRhdGVQYXJlbnRDaGlsZExpc3QoKTsKICNlbmRpZgogCi0gICAg
Ym9vbCB2aXNpYmxlVG9IaXRUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gcmVuZGVyZXIoKS5zdHls
ZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFICYmIHJlbmRlcmVyKCkuc3R5bGUoKS5wb2ludGVy
RXZlbnRzKCkgIT0gUEVfTk9ORTsgfQorICAgIGJvb2wgdmlzaWJsZVRvSGl0VGVzdGluZygpIGNv
bnN0IHsgcmV0dXJuIHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0
eTo6VmlzaWJsZSAmJiByZW5kZXJlcigpLnN0eWxlKCkucG9pbnRlckV2ZW50cygpICE9IFBvaW50
ZXJFdmVudHM6Ok5vbmU7IH0KIAogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUoKSBj
b25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5maXJzdExpbmUoKSA/IHJlbmRlcmVyKCkuZmlyc3RM
aW5lU3R5bGUoKSA6IHJlbmRlcmVyKCkuc3R5bGUoKTsgfQogICAgIApJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjphZGRUb0xpbmUoSW5saW5l
Qm94KgogICAgICAgICAgICAgICAgICAgICB8fCAocGFyZW50U3R5bGUudmVydGljYWxBbGlnbigp
ICE9IFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lICYmICFpc1Jvb3RJbmxpbmVCb3goKSkgfHwgY2hp
bGRTdHlsZS52ZXJ0aWNhbEFsaWduKCkgIT0gVmVydGljYWxBbGlnbjo6QmFzZWxpbmUpCiAgICAg
ICAgICAgICAgICAgICAgIHNob3VsZENsZWFyRGVzY2VuZGFudHNIYXZlU2FtZUxpbmVIZWlnaHRB
bmRCYXNlbGluZSA9IHRydWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoY2hpbGRT
dHlsZS5oYXNUZXh0Q29tYmluZSgpIHx8IGNoaWxkU3R5bGUudGV4dEVtcGhhc2lzTWFyaygpICE9
IFRleHRFbXBoYXNpc01hcmtOb25lKQorICAgICAgICAgICAgaWYgKGNoaWxkU3R5bGUuaGFzVGV4
dENvbWJpbmUoKSB8fCBjaGlsZFN0eWxlLnRleHRFbXBoYXNpc01hcmsoKSAhPSBUZXh0RW1waGFz
aXNNYXJrOjpOb25lKQogICAgICAgICAgICAgICAgIHNob3VsZENsZWFyRGVzY2VuZGFudHNIYXZl
U2FtZUxpbmVIZWlnaHRBbmRCYXNlbGluZSA9IHRydWU7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBpZiAoY2hpbGQtPnJlbmRlcmVyKCkuaXNMaW5lQnJlYWsoKSkgewpAQCAtMTU2LDcg
KzE1Niw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6YWRkVG9MaW5lKElubGluZUJveCoKICAgICAg
ICAgY29uc3QgUmVuZGVyU3R5bGUmIGNoaWxkU3R5bGUgPSBjaGlsZC0+bGluZVN0eWxlKCk7CiAg
ICAgICAgIGlmIChjaGlsZC0+YmVoYXZlc0xpa2VUZXh0KCkpIHsKICAgICAgICAgICAgIGNvbnN0
IFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0gJmNoaWxkLT5saW5lU3R5bGUoKTsKLSAgICAgICAg
ICAgIGlmIChjaGlsZFN0eWxlLT5sZXR0ZXJTcGFjaW5nKCkgPCAwIHx8IGNoaWxkU3R5bGUtPnRl
eHRTaGFkb3coKSB8fCBjaGlsZFN0eWxlLT50ZXh0RW1waGFzaXNNYXJrKCkgIT0gVGV4dEVtcGhh
c2lzTWFya05vbmUgfHwgY2hpbGRTdHlsZS0+aGFzUG9zaXRpdmVTdHJva2VXaWR0aCgpKQorICAg
ICAgICAgICAgaWYgKGNoaWxkU3R5bGUtPmxldHRlclNwYWNpbmcoKSA8IDAgfHwgY2hpbGRTdHls
ZS0+dGV4dFNoYWRvdygpIHx8IGNoaWxkU3R5bGUtPnRleHRFbXBoYXNpc01hcmsoKSAhPSBUZXh0
RW1waGFzaXNNYXJrOjpOb25lIHx8IGNoaWxkU3R5bGUtPmhhc1Bvc2l0aXZlU3Ryb2tlV2lkdGgo
KSkKICAgICAgICAgICAgICAgICBjaGlsZC0+Y2xlYXJLbm93blRvSGF2ZU5vT3ZlcmZsb3coKTsK
ICAgICAgICAgfSBlbHNlIGlmIChjaGlsZC0+cmVuZGVyZXIoKS5pc1JlcGxhY2VkKCkpIHsKICAg
ICAgICAgICAgIGNvbnN0IFJlbmRlckJveCYgYm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PihjaGls
ZC0+cmVuZGVyZXIoKSk7CkBAIC02ODQsNyArNjg0LDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94Ojpw
bGFjZUJveGVzSW5CbG9ja0RpcgogICAgICAgICAgICAgICAgIC8vIFRyZWF0IHRoZSBsZWFkaW5n
IG9uIHRoZSBmaXJzdCBhbmQgbGFzdCBsaW5lcyBvZiBydWJ5IHJ1bnMgYXMgbm90IGJlaW5nIHBh
cnQgb2YgdGhlIG92ZXJhbGwgbGluZVRvcC9saW5lQm90dG9tLgogICAgICAgICAgICAgICAgIC8v
IFJlYWxseSB0aGlzIGlzIGEgd29ya2Fyb3VuZCBoYWNrIGZvciB0aGUgZmFjdCB0aGF0IHJ1Ynkg
c2hvdWxkIGhhdmUgYmVlbiBkb25lIGFzIGxpbmUgbGF5b3V0IGFuZCBub3QgZG9uZSB1c2luZwog
ICAgICAgICAgICAgICAgIC8vIGlubGluZS1ibG9jay4KLSAgICAgICAgICAgICAgICBpZiAocmVu
ZGVyZXIoKS5zdHlsZSgpLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSA9PSAoY2hpbGQtPnJl
bmRlcmVyKCkuc3R5bGUoKS5ydWJ5UG9zaXRpb24oKSA9PSBSdWJ5UG9zaXRpb25BZnRlcikpCisg
ICAgICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS5pc0ZsaXBwZWRMaW5lc1dyaXRp
bmdNb2RlKCkgPT0gKGNoaWxkLT5yZW5kZXJlcigpLnN0eWxlKCkucnVieVBvc2l0aW9uKCkgPT0g
UnVieVBvc2l0aW9uOjpBZnRlcikpCiAgICAgICAgICAgICAgICAgICAgIGhhc0Fubm90YXRpb25z
QmVmb3JlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IGhhc0Fubm90YXRpb25zQWZ0ZXIgPSB0cnVlOwpAQCAtODk1LDcgKzg5NSw3IEBAIGlubGluZSB2
b2lkIElubGluZUZsb3dCb3g6OmFkZFRleHRCb3hWaXMKICAgICBpbnQgcmlnaHRHbHlwaE92ZXJm
bG93ID0gc3Ryb2tlT3ZlcmZsb3cgKyByaWdodEdseXBoRWRnZTsKIAogICAgIGJvb2wgZW1waGFz
aXNNYXJrSXNBYm92ZTsKLSAgICBpZiAobGluZVN0eWxlLnRleHRFbXBoYXNpc01hcmsoKSAhPSBU
ZXh0RW1waGFzaXNNYXJrTm9uZSAmJiB0ZXh0Qm94LmVtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJv
dmUobGluZVN0eWxlLCBlbXBoYXNpc01hcmtJc0Fib3ZlKSkgeworICAgIGlmIChsaW5lU3R5bGUu
dGV4dEVtcGhhc2lzTWFyaygpICE9IFRleHRFbXBoYXNpc01hcms6Ok5vbmUgJiYgdGV4dEJveC5l
bXBoYXNpc01hcmtFeGlzdHNBbmRJc0Fib3ZlKGxpbmVTdHlsZSwgZW1waGFzaXNNYXJrSXNBYm92
ZSkpIHsKICAgICAgICAgaW50IGVtcGhhc2lzTWFya0hlaWdodCA9IGxpbmVTdHlsZS5mb250Q2Fz
Y2FkZSgpLmVtcGhhc2lzTWFya0hlaWdodChsaW5lU3R5bGUudGV4dEVtcGhhc2lzTWFya1N0cmlu
ZygpKTsKICAgICAgICAgaWYgKGVtcGhhc2lzTWFya0lzQWJvdmUgPT0gIWxpbmVTdHlsZS5pc0Zs
aXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkpCiAgICAgICAgICAgICB0b3BHbHlwaE92ZXJmbG93ID0g
c3RkOjptaW4odG9wR2x5cGhPdmVyZmxvdywgLWVtcGhhc2lzTWFya0hlaWdodCk7CkBAIC0xMTU1
LDcgKzExNTUsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpCiAg
ICAgICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZU91dGxpbmUgfHwgcGFpbnRJ
bmZvLnBoYXNlID09IFBhaW50UGhhc2VTZWxmT3V0bGluZSkgewogICAgICAgICAgICAgLy8gQWRk
IG91cnNlbHZlcyB0byB0aGUgcGFpbnQgaW5mbyBzdHJ1Y3QncyBsaXN0IG9mIGlubGluZXMgdGhh
dCBuZWVkIHRvIHBhaW50IHRoZWlyCiAgICAgICAgICAgICAvLyBvdXRsaW5lcy4KLSAgICAgICAg
ICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUgJiYgcmVu
ZGVyZXIoKS5oYXNPdXRsaW5lKCkgJiYgIWlzUm9vdElubGluZUJveCgpKSB7CisgICAgICAgICAg
ICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNp
YmxlICYmIHJlbmRlcmVyKCkuaGFzT3V0bGluZSgpICYmICFpc1Jvb3RJbmxpbmVCb3goKSkgewog
ICAgICAgICAgICAgICAgIFJlbmRlcklubGluZSYgaW5saW5lRmxvdyA9IGRvd25jYXN0PFJlbmRl
cklubGluZT4ocmVuZGVyZXIoKSk7CiAKICAgICAgICAgICAgICAgICBSZW5kZXJCbG9jayogY29u
dGFpbmluZ0Jsb2NrID0gbnVsbHB0cjsKQEAgLTEzMzUsNyArMTMzNSw3IEBAIHN0YXRpYyBMYXlv
dXRSZWN0IGNsaXBSZWN0Rm9yTmluZVBpZWNlSW0KIAogdm9pZCBJbmxpbmVGbG93Qm94OjpwYWlu
dEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYg
cGFpbnRPZmZzZXQpCiB7Ci0gICAgaWYgKCFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290
KHJlbmRlcmVyKCkpIHx8IHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJM
RSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQpCisgICAgaWYgKCFw
YWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KHJlbmRlcmVyKCkpIHx8IHJlbmRlcmVyKCku
c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSB8fCBwYWludEluZm8u
cGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQpCiAgICAgICAgIHJldHVybjsKIAogICAgIExh
eW91dFJlY3QgZnJhbWVSZWN0KHRoaXMtPmZyYW1lUmVjdCgpKTsKQEAgLTE0MDcsNyArMTQwNyw3
IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRCb3hEZWNvcmF0aW9ucygKIAogdm9pZCBJbmxp
bmVGbG93Qm94OjpwYWludE1hc2soUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mZnNldCkKIHsKLSAgICBpZiAoIXBhaW50SW5mby5zaG91bGRQYWludFdpdGhp
blJvb3QocmVuZGVyZXIoKSkgfHwgcmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBW
SVNJQkxFIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlTWFzaykKKyAgICBpZiAoIXBh
aW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QocmVuZGVyZXIoKSkgfHwgcmVuZGVyZXIoKS5z
dHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlIHx8IHBhaW50SW5mby5w
aGFzZSAhPSBQYWludFBoYXNlTWFzaykKICAgICAgICAgcmV0dXJuOwogCiAgICAgTGF5b3V0UmVj
dCBmcmFtZVJlY3QodGhpcy0+ZnJhbWVSZWN0KCkpOwpAQCAtMTU1Miw3ICsxNTUyLDcgQEAgTGF5
b3V0VW5pdCBJbmxpbmVGbG93Qm94Ojpjb21wdXRlT3ZlckFubgogICAgICAgICBpZiAoaXM8SW5s
aW5lRmxvd0JveD4oKmNoaWxkKSkKICAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWF4KHJlc3Vs
dCwgZG93bmNhc3Q8SW5saW5lRmxvd0JveD4oKmNoaWxkKS5jb21wdXRlT3ZlckFubm90YXRpb25B
ZGp1c3RtZW50KGFsbG93ZWRQb3NpdGlvbikpOwogICAgICAgICAKLSAgICAgICAgaWYgKGNoaWxk
LT5yZW5kZXJlcigpLmlzUmVwbGFjZWQoKSAmJiBpczxSZW5kZXJSdWJ5UnVuPihjaGlsZC0+cmVu
ZGVyZXIoKSkgJiYgY2hpbGQtPnJlbmRlcmVyKCkuc3R5bGUoKS5ydWJ5UG9zaXRpb24oKSA9PSBS
dWJ5UG9zaXRpb25CZWZvcmUpIHsKKyAgICAgICAgaWYgKGNoaWxkLT5yZW5kZXJlcigpLmlzUmVw
bGFjZWQoKSAmJiBpczxSZW5kZXJSdWJ5UnVuPihjaGlsZC0+cmVuZGVyZXIoKSkgJiYgY2hpbGQt
PnJlbmRlcmVyKCkuc3R5bGUoKS5ydWJ5UG9zaXRpb24oKSA9PSBSdWJ5UG9zaXRpb246OkJlZm9y
ZSkgewogICAgICAgICAgICAgYXV0byYgcnVieVJ1biA9IGRvd25jYXN0PFJlbmRlclJ1YnlSdW4+
KGNoaWxkLT5yZW5kZXJlcigpKTsKICAgICAgICAgICAgIFJlbmRlclJ1YnlUZXh0KiBydWJ5VGV4
dCA9IHJ1YnlSdW4ucnVieVRleHQoKTsKICAgICAgICAgICAgIGlmICghcnVieVRleHQpCkBAIC0x
NTc2LDcgKzE1NzYsNyBAQCBMYXlvdXRVbml0IElubGluZUZsb3dCb3g6OmNvbXB1dGVPdmVyQW5u
CiAgICAgICAgIGlmIChpczxJbmxpbmVUZXh0Qm94PigqY2hpbGQpKSB7CiAgICAgICAgICAgICBj
b25zdCBSZW5kZXJTdHlsZSYgY2hpbGRMaW5lU3R5bGUgPSBjaGlsZC0+bGluZVN0eWxlKCk7CiAg
ICAgICAgICAgICBib29sIGVtcGhhc2lzTWFya0lzQWJvdmU7Ci0gICAgICAgICAgICBpZiAoY2hp
bGRMaW5lU3R5bGUudGV4dEVtcGhhc2lzTWFyaygpICE9IFRleHRFbXBoYXNpc01hcmtOb25lICYm
IGRvd25jYXN0PElubGluZVRleHRCb3g+KCpjaGlsZCkuZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNB
Ym92ZShjaGlsZExpbmVTdHlsZSwgZW1waGFzaXNNYXJrSXNBYm92ZSkgJiYgZW1waGFzaXNNYXJr
SXNBYm92ZSkgeworICAgICAgICAgICAgaWYgKGNoaWxkTGluZVN0eWxlLnRleHRFbXBoYXNpc01h
cmsoKSAhPSBUZXh0RW1waGFzaXNNYXJrOjpOb25lICYmIGRvd25jYXN0PElubGluZVRleHRCb3g+
KCpjaGlsZCkuZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92ZShjaGlsZExpbmVTdHlsZSwgZW1w
aGFzaXNNYXJrSXNBYm92ZSkgJiYgZW1waGFzaXNNYXJrSXNBYm92ZSkgewogICAgICAgICAgICAg
ICAgIGlmICghY2hpbGRMaW5lU3R5bGUuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGludCB0b3BPZkVtcGhhc2lzTWFyayA9IGNoaWxkLT5sb2dpY2Fs
VG9wKCkgLSBjaGlsZExpbmVTdHlsZS5mb250Q2FzY2FkZSgpLmVtcGhhc2lzTWFya0hlaWdodChj
aGlsZExpbmVTdHlsZS50ZXh0RW1waGFzaXNNYXJrU3RyaW5nKCkpOwogICAgICAgICAgICAgICAg
ICAgICByZXN1bHQgPSBzdGQ6Om1heChyZXN1bHQsIGFsbG93ZWRQb3NpdGlvbiAtIHRvcE9mRW1w
aGFzaXNNYXJrKTsKQEAgLTE2MDAsNyArMTYwMCw3IEBAIExheW91dFVuaXQgSW5saW5lRmxvd0Jv
eDo6Y29tcHV0ZVVuZGVyQW4KICAgICAgICAgaWYgKGlzPElubGluZUZsb3dCb3g+KCpjaGlsZCkp
CiAgICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1heChyZXN1bHQsIGRvd25jYXN0PElubGluZUZs
b3dCb3g+KCpjaGlsZCkuY29tcHV0ZVVuZGVyQW5ub3RhdGlvbkFkanVzdG1lbnQoYWxsb3dlZFBv
c2l0aW9uKSk7CiAKLSAgICAgICAgaWYgKGNoaWxkLT5yZW5kZXJlcigpLmlzUmVwbGFjZWQoKSAm
JiBpczxSZW5kZXJSdWJ5UnVuPihjaGlsZC0+cmVuZGVyZXIoKSkgJiYgY2hpbGQtPnJlbmRlcmVy
KCkuc3R5bGUoKS5ydWJ5UG9zaXRpb24oKSA9PSBSdWJ5UG9zaXRpb25BZnRlcikgeworICAgICAg
ICBpZiAoY2hpbGQtPnJlbmRlcmVyKCkuaXNSZXBsYWNlZCgpICYmIGlzPFJlbmRlclJ1YnlSdW4+
KGNoaWxkLT5yZW5kZXJlcigpKSAmJiBjaGlsZC0+cmVuZGVyZXIoKS5zdHlsZSgpLnJ1YnlQb3Np
dGlvbigpID09IFJ1YnlQb3NpdGlvbjo6QWZ0ZXIpIHsKICAgICAgICAgICAgIGF1dG8mIHJ1YnlS
dW4gPSBkb3duY2FzdDxSZW5kZXJSdWJ5UnVuPihjaGlsZC0+cmVuZGVyZXIoKSk7CiAgICAgICAg
ICAgICBSZW5kZXJSdWJ5VGV4dCogcnVieVRleHQgPSBydWJ5UnVuLnJ1YnlUZXh0KCk7CiAgICAg
ICAgICAgICBpZiAoIXJ1YnlUZXh0KQpAQCAtMTYyNSw3ICsxNjI1LDcgQEAgTGF5b3V0VW5pdCBJ
bmxpbmVGbG93Qm94Ojpjb21wdXRlVW5kZXJBbgogICAgICAgICAgICAgY29uc3QgUmVuZGVyU3R5
bGUmIGNoaWxkTGluZVN0eWxlID0gY2hpbGQtPmxpbmVTdHlsZSgpOwogICAgICAgICAgICAgYm9v
bCBlbXBoYXNpc01hcmtJc0Fib3ZlOwogICAgICAgICAgICAgZG93bmNhc3Q8SW5saW5lVGV4dEJv
eD4oKmNoaWxkKS5lbXBoYXNpc01hcmtFeGlzdHNBbmRJc0Fib3ZlKGNoaWxkTGluZVN0eWxlLCBl
bXBoYXNpc01hcmtJc0Fib3ZlKTsKLSAgICAgICAgICAgIGlmIChjaGlsZExpbmVTdHlsZS50ZXh0
RW1waGFzaXNNYXJrKCkgIT0gVGV4dEVtcGhhc2lzTWFya05vbmUgJiYgIWVtcGhhc2lzTWFya0lz
QWJvdmUpIHsKKyAgICAgICAgICAgIGlmIChjaGlsZExpbmVTdHlsZS50ZXh0RW1waGFzaXNNYXJr
KCkgIT0gVGV4dEVtcGhhc2lzTWFyazo6Tm9uZSAmJiAhZW1waGFzaXNNYXJrSXNBYm92ZSkgewog
ICAgICAgICAgICAgICAgIGlmICghY2hpbGRMaW5lU3R5bGUuaXNGbGlwcGVkTGluZXNXcml0aW5n
TW9kZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQgYm90dG9tT2ZFbXBoYXNp
c01hcmsgPSBjaGlsZC0+bG9naWNhbEJvdHRvbSgpICsgY2hpbGRMaW5lU3R5bGUuZm9udENhc2Nh
ZGUoKS5lbXBoYXNpc01hcmtIZWlnaHQoY2hpbGRMaW5lU3R5bGUudGV4dEVtcGhhc2lzTWFya1N0
cmluZygpKTsKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYXgocmVzdWx0LCBi
b3R0b21PZkVtcGhhc2lzTWFyayAtIGFsbG93ZWRQb3NpdGlvbik7CkBAIC0xNjU1LDcgKzE2NTUs
NyBAQCB2b2lkIElubGluZUZsb3dCb3g6OmNvbGxlY3RMZWFmQm94ZXNJbkxvCiAgICAgICAgIGxl
YWZCb3hlc0luTG9naWNhbE9yZGVyLmFwcGVuZChsZWFmKTsKICAgICB9CiAKLSAgICBpZiAocmVu
ZGVyZXIoKS5zdHlsZSgpLnJ0bE9yZGVyaW5nKCkgPT0gVmlzdWFsT3JkZXIpCisgICAgaWYgKHJl
bmRlcmVyKCkuc3R5bGUoKS5ydGxPcmRlcmluZygpID09IE9yZGVyOjpWaXN1YWwpCiAgICAgICAg
IHJldHVybjsKIAogICAgIC8vIFJldmVyc2Ugb2YgcmVvcmRlcmluZyBvZiB0aGUgbGluZSAoTDIg
YWNjb3JkaW5nIHRvIEJpZGkgc3BlYyk6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lRmxvd0JveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVGbG93Qm94LmgJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVGbG93Qm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAgcHVi
bGljOgogICAgICAgICAvLyBhbiBpbnZpc2libGUgbWFya2VyIGV4aXN0cy4gIFRoZSBzaWRlIGVm
ZmVjdCBvZiBoYXZpbmcgYW4gaW52aXNpYmxlIG1hcmtlciBpcyB0aGF0IHRoZSBxdWlya3MgbW9k
ZSBiZWhhdmlvciBvZiBzaHJpbmtpbmcgbGluZXMgd2l0aCBubwogICAgICAgICAvLyB0ZXh0IGNo
aWxkcmVuIG11c3Qgbm90IGFwcGx5LiAgVGhpcyBjaGFuZ2UgYWxzbyBtZWFucyB0aGF0IGdhcHMg
d2lsbCBleGlzdCBiZXR3ZWVuIGltYWdlIGJ1bGxldCBsaXN0IGl0ZW1zLiAgRXZlbiB3aGVuIHRo
ZSBsaXN0IGJ1bGxldAogICAgICAgICAvLyBpcyBhbiBpbWFnZSwgdGhlIGxpbmUgaXMgc3RpbGwg
Y29uc2lkZXJlZCB0byBiZSBpbW11bmUgZnJvbSB0aGUgcXVpcmsuCi0gICAgICAgIG1faGFzVGV4
dENoaWxkcmVuID0gcmVuZGVyZXIuc3R5bGUoKS5kaXNwbGF5KCkgPT0gTElTVF9JVEVNOworICAg
ICAgICBtX2hhc1RleHRDaGlsZHJlbiA9IHJlbmRlcmVyLnN0eWxlKCkuZGlzcGxheSgpID09IERp
c3BsYXlUeXBlOjpMaXN0SXRlbTsKICAgICAgICAgbV9oYXNUZXh0RGVzY2VuZGFudHMgPSBtX2hh
c1RleHRDaGlsZHJlbjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVUZXh0Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYxLDcgKzM2MSw3
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBlbXBoYXNpc1Bvc2l0aW9uSGFzTmUKIGJvb2wgSW5saW5l
VGV4dEJveDo6ZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92ZShjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUsIGJvb2wmIGFib3ZlKSBjb25zdAogewogICAgIC8vIFRoaXMgZnVuY3Rpb24gcmV0dXJu
cyB0cnVlIGlmIHRoZXJlIGFyZSB0ZXh0IGVtcGhhc2lzIG1hcmtzIGFuZCB0aGV5IGFyZSBzdXBw
cmVzc2VkIGJ5IHJ1YnkgdGV4dC4KLSAgICBpZiAoc3R5bGUudGV4dEVtcGhhc2lzTWFyaygpID09
IFRleHRFbXBoYXNpc01hcmtOb25lKQorICAgIGlmIChzdHlsZS50ZXh0RW1waGFzaXNNYXJrKCkg
PT0gVGV4dEVtcGhhc2lzTWFyazo6Tm9uZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
VGV4dEVtcGhhc2lzUG9zaXRpb24gZW1waGFzaXNQb3NpdGlvbiA9IHN0eWxlLnRleHRFbXBoYXNp
c1Bvc2l0aW9uKCk7CkBAIC00MzQsNyArNDM0LDcgQEAgc3RhdGljIE1hcmtlZFRleHQgY3JlYXRl
TWFya2VkVGV4dEZyb21TZQogCiB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIExheW91dFVuaXQgLyps
aW5lVG9wKi8sIExheW91dFVuaXQgLypsaW5lQm90dG9tKi8pCiB7Ci0gICAgaWYgKGlzTGluZUJy
ZWFrKCkgfHwgIXBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QocmVuZGVyZXIoKSkgfHwg
cmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFCisgICAgaWYgKGlzTGlu
ZUJyZWFrKCkgfHwgIXBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QocmVuZGVyZXIoKSkg
fHwgcmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxl
CiAgICAgICAgIHx8IG1fdHJ1bmNhdGlvbiA9PSBjRnVsbFRydW5jYXRpb24gfHwgcGFpbnRJbmZv
LnBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8ICFtX2xlbikKICAgICAgICAgcmV0dXJuOwog
CkBAIC0xMjM1LDcgKzEyMzUsNyBAQCBmbG9hdCBJbmxpbmVUZXh0Qm94Ojpwb3NpdGlvbkZvck9m
ZnNldCh1CiBUZXh0UnVuIElubGluZVRleHRCb3g6OmNyZWF0ZVRleHRSdW4oYm9vbCBpZ25vcmVD
b21iaW5lZFRleHQsIGJvb2wgaWdub3JlSHlwaGVuKSBjb25zdAogewogICAgIGNvbnN0IGF1dG8m
IHN0eWxlID0gbGluZVN0eWxlKCk7Ci0gICAgVGV4dFJ1biB0ZXh0UnVuIHsgdGV4dChpZ25vcmVD
b21iaW5lZFRleHQsIGlnbm9yZUh5cGhlbiksIHRleHRQb3MoKSwgZXhwYW5zaW9uKCksIGV4cGFu
c2lvbkJlaGF2aW9yKCksIGRpcmVjdGlvbigpLCBkaXJPdmVycmlkZSgpIHx8IHN0eWxlLnJ0bE9y
ZGVyaW5nKCkgPT0gVmlzdWFsT3JkZXIsICFyZW5kZXJlcigpLmNhblVzZVNpbXBsZUZvbnRDb2Rl
UGF0aCgpIH07CisgICAgVGV4dFJ1biB0ZXh0UnVuIHsgdGV4dChpZ25vcmVDb21iaW5lZFRleHQs
IGlnbm9yZUh5cGhlbiksIHRleHRQb3MoKSwgZXhwYW5zaW9uKCksIGV4cGFuc2lvbkJlaGF2aW9y
KCksIGRpcmVjdGlvbigpLCBkaXJPdmVycmlkZSgpIHx8IHN0eWxlLnJ0bE9yZGVyaW5nKCkgPT0g
T3JkZXI6OlZpc3VhbCwgIXJlbmRlcmVyKCkuY2FuVXNlU2ltcGxlRm9udENvZGVQYXRoKCkgfTsK
ICAgICB0ZXh0UnVuLnNldFRhYlNpemUoIXN0eWxlLmNvbGxhcHNlV2hpdGVTcGFjZSgpLCBzdHls
ZS50YWJTaXplKCkpOwogICAgIHJldHVybiB0ZXh0UnVuOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1BvaW50ZXJFdmVudHNIaXRSdWxlcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BvaW50ZXJFdmVudHNIaXRSdWxlcy5jcHAJKHJldmlzaW9u
IDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Qb2ludGVyRXZlbnRzSGl0UnVs
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUG9pbnRlckV2ZW50c0hpdFJ1bGVzOjpQb2ludGVyRXZlbnRzSGl0UnVsZXMoRUhp
dFRlc3RpbmcgaGl0VGVzdGluZywgY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEVQb2lu
dGVyRXZlbnRzIHBvaW50ZXJFdmVudHMpCitQb2ludGVyRXZlbnRzSGl0UnVsZXM6OlBvaW50ZXJF
dmVudHNIaXRSdWxlcyhFSGl0VGVzdGluZyBoaXRUZXN0aW5nLCBjb25zdCBIaXRUZXN0UmVxdWVz
dCYgcmVxdWVzdCwgUG9pbnRlckV2ZW50cyBwb2ludGVyRXZlbnRzKQogICAgIDogcmVxdWlyZVZp
c2libGUoZmFsc2UpCiAgICAgLCByZXF1aXJlRmlsbChmYWxzZSkKICAgICAsIHJlcXVpcmVTdHJv
a2UoZmFsc2UpCkBAIC0zMCw3OCArMzAsNzggQEAgUG9pbnRlckV2ZW50c0hpdFJ1bGVzOjpQb2lu
dGVyRXZlbnRzSGl0UgogICAgICwgY2FuSGl0RmlsbChmYWxzZSkKIHsKICAgICBpZiAocmVxdWVz
dC5zdmdDbGlwQ29udGVudCgpKQotICAgICAgICBwb2ludGVyRXZlbnRzID0gUEVfRklMTDsKKyAg
ICAgICAgcG9pbnRlckV2ZW50cyA9IFBvaW50ZXJFdmVudHM6OkZpbGw7CiAKICAgICBpZiAoaGl0
VGVzdGluZyA9PSBTVkdfUEFUSF9ISVRURVNUSU5HKSB7CiAgICAgICAgIHN3aXRjaCAocG9pbnRl
ckV2ZW50cykKICAgICAgICAgewotICAgICAgICAgICAgY2FzZSBQRV9WSVNJQkxFX1BBSU5URUQ6
Ci0gICAgICAgICAgICBjYXNlIFBFX0FVVE86IC8vICJhdXRvIiBpcyBsaWtlICJ2aXNpYmxlUGFp
bnRlZCIgd2hlbiBpbiBTVkcgY29udGVudAorICAgICAgICAgICAgY2FzZSBQb2ludGVyRXZlbnRz
OjpWaXNpYmxlUGFpbnRlZDoKKyAgICAgICAgICAgIGNhc2UgUG9pbnRlckV2ZW50czo6QXV0bzog
Ly8gImF1dG8iIGlzIGxpa2UgInZpc2libGVQYWludGVkIiB3aGVuIGluIFNWRyBjb250ZW50CiAg
ICAgICAgICAgICAgICAgcmVxdWlyZUZpbGwgPSB0cnVlOwogICAgICAgICAgICAgICAgIHJlcXVp
cmVTdHJva2UgPSB0cnVlOwogICAgICAgICAgICAgICAgIEZBTExUSFJPVUdIOwotICAgICAgICAg
ICAgY2FzZSBQRV9WSVNJQkxFOgorICAgICAgICAgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpWaXNp
YmxlOgogICAgICAgICAgICAgICAgIHJlcXVpcmVWaXNpYmxlID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICBjYW5IaXRGaWxsID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBjYW5IaXRTdHJva2UgPSB0
cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBQRV9WSVNJQkxF
X0ZJTEw6CisgICAgICAgICAgICBjYXNlIFBvaW50ZXJFdmVudHM6OlZpc2libGVGaWxsOgogICAg
ICAgICAgICAgICAgIHJlcXVpcmVWaXNpYmxlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBjYW5I
aXRGaWxsID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ug
UEVfVklTSUJMRV9TVFJPS0U6CisgICAgICAgICAgICBjYXNlIFBvaW50ZXJFdmVudHM6OlZpc2li
bGVTdHJva2U6CiAgICAgICAgICAgICAgICAgcmVxdWlyZVZpc2libGUgPSB0cnVlOwogICAgICAg
ICAgICAgICAgIGNhbkhpdFN0cm9rZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBjYXNlIFBFX1BBSU5URUQ6CisgICAgICAgICAgICBjYXNlIFBvaW50ZXJFdmVu
dHM6OlBhaW50ZWQ6CiAgICAgICAgICAgICAgICAgcmVxdWlyZUZpbGwgPSB0cnVlOwogICAgICAg
ICAgICAgICAgIHJlcXVpcmVTdHJva2UgPSB0cnVlOwogICAgICAgICAgICAgICAgIEZBTExUSFJP
VUdIOwotICAgICAgICAgICAgY2FzZSBQRV9BTEw6CisgICAgICAgICAgICBjYXNlIFBvaW50ZXJF
dmVudHM6OkFsbDoKICAgICAgICAgICAgICAgICBjYW5IaXRGaWxsID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICBjYW5IaXRTdHJva2UgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgY2FzZSBQRV9GSUxMOgorICAgICAgICAgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpG
aWxsOgogICAgICAgICAgICAgICAgIGNhbkhpdEZpbGwgPSB0cnVlOwogICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBQRV9TVFJPS0U6CisgICAgICAgICAgICBjYXNlIFBv
aW50ZXJFdmVudHM6OlN0cm9rZToKICAgICAgICAgICAgICAgICBjYW5IaXRTdHJva2UgPSB0cnVl
OwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBQRV9OT05FOgorICAg
ICAgICAgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpOb25lOgogICAgICAgICAgICAgICAgIC8vIG5v
dGhpbmcgdG8gZG8gaGVyZSwgZGVmYXVsdHMgYXJlIGFsbCBmYWxzZS4KICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIHN3aXRjaCAocG9pbnRl
ckV2ZW50cykKICAgICAgICAgewotICAgICAgICAgICAgY2FzZSBQRV9WSVNJQkxFX1BBSU5URUQ6
Ci0gICAgICAgICAgICBjYXNlIFBFX0FVVE86IC8vICJhdXRvIiBpcyBsaWtlICJ2aXNpYmxlUGFp
bnRlZCIgd2hlbiBpbiBTVkcgY29udGVudAorICAgICAgICAgICAgY2FzZSBQb2ludGVyRXZlbnRz
OjpWaXNpYmxlUGFpbnRlZDoKKyAgICAgICAgICAgIGNhc2UgUG9pbnRlckV2ZW50czo6QXV0bzog
Ly8gImF1dG8iIGlzIGxpa2UgInZpc2libGVQYWludGVkIiB3aGVuIGluIFNWRyBjb250ZW50CiAg
ICAgICAgICAgICAgICAgcmVxdWlyZVZpc2libGUgPSB0cnVlOwogICAgICAgICAgICAgICAgIHJl
cXVpcmVGaWxsID0gdHJ1ZTsKICAgICAgICAgICAgICAgICByZXF1aXJlU3Ryb2tlID0gdHJ1ZTsK
ICAgICAgICAgICAgICAgICBjYW5IaXRGaWxsID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBjYW5I
aXRTdHJva2UgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2Fz
ZSBQRV9WSVNJQkxFX0ZJTEw6Ci0gICAgICAgICAgICBjYXNlIFBFX1ZJU0lCTEVfU1RST0tFOgot
ICAgICAgICAgICAgY2FzZSBQRV9WSVNJQkxFOgorICAgICAgICAgICAgY2FzZSBQb2ludGVyRXZl
bnRzOjpWaXNpYmxlRmlsbDoKKyAgICAgICAgICAgIGNhc2UgUG9pbnRlckV2ZW50czo6VmlzaWJs
ZVN0cm9rZToKKyAgICAgICAgICAgIGNhc2UgUG9pbnRlckV2ZW50czo6VmlzaWJsZToKICAgICAg
ICAgICAgICAgICByZXF1aXJlVmlzaWJsZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgY2FuSGl0
RmlsbCA9IHRydWU7CiAgICAgICAgICAgICAgICAgY2FuSGl0U3Ryb2tlID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgUEVfUEFJTlRFRDoKKyAgICAgICAg
ICAgIGNhc2UgUG9pbnRlckV2ZW50czo6UGFpbnRlZDoKICAgICAgICAgICAgICAgICByZXF1aXJl
RmlsbCA9IHRydWU7CiAgICAgICAgICAgICAgICAgcmVxdWlyZVN0cm9rZSA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgY2FuSGl0RmlsbCA9IHRydWU7CiAgICAgICAgICAgICAgICAgY2FuSGl0U3Ry
b2tlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgUEVf
RklMTDoKLSAgICAgICAgICAgIGNhc2UgUEVfU1RST0tFOgotICAgICAgICAgICAgY2FzZSBQRV9B
TEw6CisgICAgICAgICAgICBjYXNlIFBvaW50ZXJFdmVudHM6OkZpbGw6CisgICAgICAgICAgICBj
YXNlIFBvaW50ZXJFdmVudHM6OlN0cm9rZToKKyAgICAgICAgICAgIGNhc2UgUG9pbnRlckV2ZW50
czo6QWxsOgogICAgICAgICAgICAgICAgIGNhbkhpdEZpbGwgPSB0cnVlOwogICAgICAgICAgICAg
ICAgIGNhbkhpdFN0cm9rZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBjYXNlIFBFX05PTkU6CisgICAgICAgICAgICBjYXNlIFBvaW50ZXJFdmVudHM6Ok5vbmU6
CiAgICAgICAgICAgICAgICAgLy8gbm90aGluZyB0byBkbyBoZXJlLCBkZWZhdWx0cyBhcmUgYWxs
IGZhbHNlLgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUG9pbnRlckV2ZW50c0hpdFJ1bGVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BvaW50ZXJFdmVudHNIaXRSdWxlcy5oCShyZXZpc2lv
biAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUG9pbnRlckV2ZW50c0hpdFJ1
bGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgcHVibGljOgogICAgICAgICBT
VkdfVEVYVF9ISVRURVNUSU5HCiAgICAgfTsKIAotICAgIFBvaW50ZXJFdmVudHNIaXRSdWxlcyhF
SGl0VGVzdGluZywgY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBFUG9pbnRlckV2ZW50cyk7CisgICAg
UG9pbnRlckV2ZW50c0hpdFJ1bGVzKEVIaXRUZXN0aW5nLCBjb25zdCBIaXRUZXN0UmVxdWVzdCYs
IFBvaW50ZXJFdmVudHMpOwogCiAgICAgYm9vbCByZXF1aXJlVmlzaWJsZTsKICAgICBib29sIHJl
cXVpcmVGaWxsOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
CShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjAsNyArNzYwLDcgQEAgTGF5b3V0VW5pdCBSZW5k
ZXJCbG9jazo6Y29tcHV0ZVN0YXJ0UG9zaQogCiAgICAgTGF5b3V0VW5pdCBzdGFydE9mZiA9IHN0
YXJ0T2Zmc2V0Rm9yTGluZUluRnJhZ21lbnQoYmxvY2tPZmZzZXQsIERvTm90SW5kZW50VGV4dCwg
ZnJhZ21lbnQsIGxvZ2ljYWxIZWlnaHRGb3JDaGlsZChjaGlsZCkpOwogCi0gICAgaWYgKHN0eWxl
KCkudGV4dEFsaWduKCkgIT0gV0VCS0lUX0NFTlRFUiAmJiAhY2hpbGQuc3R5bGUoKS5tYXJnaW5T
dGFydFVzaW5nKCZzdHlsZSgpKS5pc0F1dG8oKSkgeworICAgIGlmIChzdHlsZSgpLnRleHRBbGln
bigpICE9IFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlciAmJiAhY2hpbGQuc3R5bGUoKS5tYXJn
aW5TdGFydFVzaW5nKCZzdHlsZSgpKS5pc0F1dG8oKSkgewogICAgICAgICBpZiAoY2hpbGRNYXJn
aW5TdGFydCA8IDApCiAgICAgICAgICAgICBzdGFydE9mZiArPSBjaGlsZE1hcmdpblN0YXJ0Owog
ICAgICAgICBuZXdQb3NpdGlvbiA9IHN0ZDo6bWF4KG5ld1Bvc2l0aW9uLCBzdGFydE9mZik7IC8v
IExldCB0aGUgZmxvYXQgc2l0IGluIHRoZSBjaGlsZCdzIG1hcmdpbiBpZiBpdCBjYW4gZml0LgpA
QCAtMTEwOSw3ICsxMTA5LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnQoUGFpbnRJbmZvJiBw
YWludAogICAgIC8vIHotaW5kZXguIFdlIHBhaW50IGFmdGVyIHdlIHBhaW50ZWQgdGhlIGJhY2tn
cm91bmQvYm9yZGVyLCBzbyB0aGF0IHRoZSBzY3JvbGxiYXJzIHdpbGwKICAgICAvLyBzaXQgYWJv
dmUgdGhlIGJhY2tncm91bmQvYm9yZGVyLgogICAgIGlmICgocGhhc2UgPT0gUGFpbnRQaGFzZUJs
b2NrQmFja2dyb3VuZCB8fCBwaGFzZSA9PSBQYWludFBoYXNlQ2hpbGRCbG9ja0JhY2tncm91bmQp
ICYmIGhhc092ZXJmbG93Q2xpcCgpICYmIGxheWVyKCkKLSAgICAgICAgJiYgc3R5bGUoKS52aXNp
YmlsaXR5KCkgPT0gVklTSUJMRSAmJiBwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KCp0
aGlzKSAmJiAhcGFpbnRJbmZvLnBhaW50Um9vdEJhY2tncm91bmRPbmx5KCkpCisgICAgICAgICYm
IHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUgJiYgcGFpbnRJbmZv
LnNob3VsZFBhaW50V2l0aGluUm9vdCgqdGhpcykgJiYgIXBhaW50SW5mby5wYWludFJvb3RCYWNr
Z3JvdW5kT25seSgpKQogICAgICAgICBsYXllcigpLT5wYWludE92ZXJmbG93Q29udHJvbHMocGFp
bnRJbmZvLmNvbnRleHQoKSwgcm91bmRlZEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQpLCBz
bmFwcGVkSW50UmVjdChwYWludEluZm8ucmVjdCkpOwogfQogCkBAIC0xMjE5LDcgKzEyMTksNyBA
QCB2b2lkIFJlbmRlckJsb2NrOjpwYWludE9iamVjdChQYWludEluZm8mCiAgICAgUGFpbnRQaGFz
ZSBwYWludFBoYXNlID0gcGFpbnRJbmZvLnBoYXNlOwogCiAgICAgLy8gMS4gcGFpbnQgYmFja2dy
b3VuZCwgYm9yZGVycyBldGMKLSAgICBpZiAoKHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZUJsb2Nr
QmFja2dyb3VuZCB8fCBwYWludFBoYXNlID09IFBhaW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3Vu
ZCkgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkgeworICAgIGlmICgocGFpbnRQ
aGFzZSA9PSBQYWludFBoYXNlQmxvY2tCYWNrZ3JvdW5kIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQ
aGFzZUNoaWxkQmxvY2tCYWNrZ3JvdW5kKSAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNp
YmlsaXR5OjpWaXNpYmxlKSB7CiAgICAgICAgIGlmIChoYXNWaXNpYmxlQm94RGVjb3JhdGlvbnMo
KSkKICAgICAgICAgICAgIHBhaW50Qm94RGVjb3JhdGlvbnMocGFpbnRJbmZvLCBwYWludE9mZnNl
dCk7CiAgICAgfQpAQCAtMTIyOCwxMiArMTIyOCwxMiBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWlu
dE9iamVjdChQYWludEluZm8mCiAgICAgaWYgKHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZUJsb2Nr
QmFja2dyb3VuZCB8fCBwYWludFBoYXNlID09IFBhaW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3Vu
ZCB8fCBwYWludFBoYXNlID09IFBhaW50UGhhc2VTZWxlY3Rpb24pCiAgICAgICAgIHBhaW50RXhj
bHVkZWRDaGlsZHJlbkluQm9yZGVyKHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogICAgIAotICAg
IGlmIChwYWludFBoYXNlID09IFBhaW50UGhhc2VNYXNrICYmIHN0eWxlKCkudmlzaWJpbGl0eSgp
ID09IFZJU0lCTEUpIHsKKyAgICBpZiAocGFpbnRQaGFzZSA9PSBQYWludFBoYXNlTWFzayAmJiBz
dHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlKSB7CiAgICAgICAgIHBh
aW50TWFzayhwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGlmIChwYWludFBoYXNlID09IFBhaW50UGhhc2VDbGlwcGluZ01hc2sgJiYgc3R5bGUo
KS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkgeworICAgIGlmIChwYWludFBoYXNlID09IFBhaW50
UGhhc2VDbGlwcGluZ01hc2sgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6
VmlzaWJsZSkgewogICAgICAgICBwYWludENsaXBwaW5nTWFzayhwYWludEluZm8sIHBhaW50T2Zm
c2V0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyNDksNyArMTI0OSw3IEBAIHZvaWQg
UmVuZGVyQmxvY2s6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYKICAgICAvLyBDb2x1bW4gcnVsZXMg
bmVlZCB0byBhY2NvdW50IGZvciBzY3JvbGxpbmcgYW5kIGNsaXBwaW5nLgogICAgIC8vIEZJWE1F
OiBDbGlwcGluZyBvZiBjb2x1bW4gcnVsZXMgZG9lcyBub3Qgd29yay4gV2Ugd2lsbCBuZWVkIGEg
c2VwYXJhdGUgcGFpbnQgcGhhc2UgZm9yIGNvbHVtbiBydWxlcyBJIHN1c3BlY3QgaW4gb3JkZXIg
dG8gZ2V0CiAgICAgLy8gY2xpcHBpbmcgY29ycmVjdCAoc2luY2UgaXQgaGFzIHRvIHBhaW50IGFz
IGJhY2tncm91bmQgYnV0IGlzIHN0aWxsIGNvbnNpZGVyZWQgImNvbnRlbnRzIikuCi0gICAgaWYg
KChwYWludFBoYXNlID09IFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQgfHwgcGFpbnRQaGFzZSA9
PSBQYWludFBoYXNlQ2hpbGRCbG9ja0JhY2tncm91bmQpICYmIHN0eWxlKCkudmlzaWJpbGl0eSgp
ID09IFZJU0lCTEUpCisgICAgaWYgKChwYWludFBoYXNlID09IFBhaW50UGhhc2VCbG9ja0JhY2tn
cm91bmQgfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlQ2hpbGRCbG9ja0JhY2tncm91bmQpICYm
IHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgIHBh
aW50Q29sdW1uUnVsZXMocGFpbnRJbmZvLCBzY3JvbGxlZE9mZnNldCk7CiAKICAgICAvLyBEb25l
IHdpdGggYmFja2dyb3VuZHMsIGJvcmRlcnMgYW5kIGNvbHVtbiBydWxlcy4KQEAgLTEyNzEsMTMg
KzEyNzEsMTMgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJgogICAg
ICAgICBwYWludEZsb2F0cyhwYWludEluZm8sIHNjcm9sbGVkT2Zmc2V0LCBwYWludFBoYXNlID09
IFBhaW50UGhhc2VTZWxlY3Rpb24gfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlVGV4dENsaXAp
OwogCiAgICAgLy8gNS4gcGFpbnQgb3V0bGluZS4KLSAgICBpZiAoKHBhaW50UGhhc2UgPT0gUGFp
bnRQaGFzZU91dGxpbmUgfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlU2VsZk91dGxpbmUpICYm
IGhhc091dGxpbmUoKSAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKQorICAgIGlm
ICgocGFpbnRQaGFzZSA9PSBQYWludFBoYXNlT3V0bGluZSB8fCBwYWludFBoYXNlID09IFBhaW50
UGhhc2VTZWxmT3V0bGluZSkgJiYgaGFzT3V0bGluZSgpICYmIHN0eWxlKCkudmlzaWJpbGl0eSgp
ID09IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgIHBhaW50T3V0bGluZShwYWludEluZm8s
IExheW91dFJlY3QocGFpbnRPZmZzZXQsIHNpemUoKSkpOwogCiAgICAgLy8gNi4gcGFpbnQgY29u
dGludWF0aW9uIG91dGxpbmVzLgogICAgIGlmICgocGFpbnRQaGFzZSA9PSBQYWludFBoYXNlT3V0
bGluZSB8fCBwYWludFBoYXNlID09IFBhaW50UGhhc2VDaGlsZE91dGxpbmVzKSkgewogICAgICAg
ICBSZW5kZXJJbmxpbmUqIGlubGluZUNvbnQgPSBpbmxpbmVDb250aW51YXRpb24oKTsKLSAgICAg
ICAgaWYgKGlubGluZUNvbnQgJiYgaW5saW5lQ29udC0+aGFzT3V0bGluZSgpICYmIGlubGluZUNv
bnQtPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUpIHsKKyAgICAgICAgaWYgKGlubGlu
ZUNvbnQgJiYgaW5saW5lQ29udC0+aGFzT3V0bGluZSgpICYmIGlubGluZUNvbnQtPnN0eWxlKCku
dmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUpIHsKICAgICAgICAgICAgIFJlbmRl
cklubGluZSogaW5saW5lUmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJJbmxpbmU+KGlubGluZUNv
bnQtPmVsZW1lbnQoKS0+cmVuZGVyZXIoKSk7CiAgICAgICAgICAgICBSZW5kZXJCbG9jayogY29u
dGFpbmluZ0Jsb2NrID0gdGhpcy0+Y29udGFpbmluZ0Jsb2NrKCk7CiAKQEAgLTEzNzMsNyArMTM3
Myw3IEBAIGJvb2wgUmVuZGVyQmxvY2s6OnNob3VsZFBhaW50U2VsZWN0aW9uR2EKICAgICBpZiAo
c2V0dGluZ3MoKS5zZWxlY3Rpb25QYWludGluZ1dpdGhvdXRTZWxlY3Rpb25HYXBzRW5hYmxlZCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gc2VsZWN0aW9uU3RhdGUoKSAh
PSBTZWxlY3Rpb25Ob25lICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUgJiYgaXNT
ZWxlY3Rpb25Sb290KCk7CisgICAgcmV0dXJuIHNlbGVjdGlvblN0YXRlKCkgIT0gU2VsZWN0aW9u
Tm9uZSAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmIGlz
U2VsZWN0aW9uUm9vdCgpOwogfQogCiBib29sIFJlbmRlckJsb2NrOjppc1NlbGVjdGlvblJvb3Qo
KSBjb25zdApAQCAtMTg2Niw3ICsxODY2LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6YWRq
dXN0TG9naWNhbExlZgogICAgIGlmIChhcHBseVRleHRJbmRlbnQgJiYgc3R5bGUoKS5pc0xlZnRU
b1JpZ2h0RGlyZWN0aW9uKCkpCiAgICAgICAgIGxlZnQgKz0gdGV4dEluZGVudE9mZnNldCgpOwog
Ci0gICAgaWYgKHN0eWxlKCkubGluZUFsaWduKCkgPT0gTGluZUFsaWduTm9uZSkKKyAgICBpZiAo
c3R5bGUoKS5saW5lQWxpZ24oKSA9PSBMaW5lQWxpZ246Ok5vbmUpCiAgICAgICAgIHJldHVybiBs
ZWZ0OwogICAgIAogICAgIC8vIFB1c2ggaW4gb3VyIGxlZnQgb2Zmc2V0IHNvIHRoYXQgaXQgaXMg
YWxpZ25lZCB3aXRoIHRoZSBjaGFyYWN0ZXIgZ3JpZC4KQEAgLTE5MDYsNyArMTkwNiw3IEBAIExh
eW91dFVuaXQgUmVuZGVyQmxvY2s6OmFkanVzdExvZ2ljYWxSaWcKICAgICBpZiAoYXBwbHlUZXh0
SW5kZW50ICYmICFzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKICAgICAgICAgcmln
aHQgLT0gdGV4dEluZGVudE9mZnNldCgpOwogICAgIAotICAgIGlmIChzdHlsZSgpLmxpbmVBbGln
bigpID09IExpbmVBbGlnbk5vbmUpCisgICAgaWYgKHN0eWxlKCkubGluZUFsaWduKCkgPT0gTGlu
ZUFsaWduOjpOb25lKQogICAgICAgICByZXR1cm4gcmlnaHQ7CiAgICAgCiAgICAgLy8gUHVzaCBp
biBvdXIgcmlnaHQgb2Zmc2V0IHNvIHRoYXQgaXQgaXMgYWxpZ25lZCB3aXRoIHRoZSBjaGFyYWN0
ZXIgZ3JpZC4KQEAgLTIxMzQsNyArMjEzNCw3IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJCbG9j
azo6cG9zaXRpb25Gb3IKIAogc3RhdGljIGlubGluZSBib29sIGlzQ2hpbGRIaXRUZXN0Q2FuZGlk
YXRlKGNvbnN0IFJlbmRlckJveCYgYm94KQogewotICAgIHJldHVybiBib3guaGVpZ2h0KCkgJiYg
Ym94LnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUgJiYgIWJveC5pc091dE9mRmxvd1Bv
c2l0aW9uZWQoKSAmJiAhYm94LmlzSW5GbG93UmVuZGVyRnJhZ21lbnRlZEZsb3coKTsKKyAgICBy
ZXR1cm4gYm94LmhlaWdodCgpICYmIGJveC5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmls
aXR5OjpWaXNpYmxlICYmICFib3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIWJveC5pc0lu
Rmxvd1JlbmRlckZyYWdtZW50ZWRGbG93KCk7CiB9CiAKIC8vIFZhbGlkIGNhbmRpZGF0ZXMgaW4g
YSBGcmFnbWVudGVkRmxvdyBtdXN0IGJlIHJlbmRlcmVkIGJ5IHRoZSBmcmFnbWVudC4KQEAgLTIy
NTgsNyArMjI1OCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2EK
IHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVCbG9ja1ByZWZlcnJlZExvZ2ljYWxXaWR0aHMoTGF5
b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNv
bnN0CiB7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlVG9Vc2UgPSBzdHlsZSgpOwotICAg
IGJvb2wgbm93cmFwID0gc3R5bGVUb1VzZS53aGl0ZVNwYWNlKCkgPT0gTk9XUkFQOworICAgIGJv
b2wgbm93cmFwID0gc3R5bGVUb1VzZS53aGl0ZVNwYWNlKCkgPT0gV2hpdGVTcGFjZTo6Tm9XcmFw
OwogCiAgICAgUmVuZGVyT2JqZWN0KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsKICAgICBSZW5kZXJC
bG9jayogY29udGFpbmluZ0Jsb2NrID0gdGhpcy0+Y29udGFpbmluZ0Jsb2NrKCk7CkBAIC0yNTUw
LDcgKzI1NTAsNyBAQCBSZW5kZXJCbG9jayogUmVuZGVyQmxvY2s6OmZpcnN0TGluZUJsb2NrCiAg
ICAgUmVuZGVyQmxvY2sqIGZpcnN0TGluZUJsb2NrID0gY29uc3RfY2FzdDxSZW5kZXJCbG9jayo+
KHRoaXMpOwogICAgIGJvb2wgaGFzUHNldWRvID0gZmFsc2U7CiAgICAgd2hpbGUgKHRydWUpIHsK
LSAgICAgICAgaGFzUHNldWRvID0gZmlyc3RMaW5lQmxvY2stPnN0eWxlKCkuaGFzUHNldWRvU3R5
bGUoRklSU1RfTElORSk7CisgICAgICAgIGhhc1BzZXVkbyA9IGZpcnN0TGluZUJsb2NrLT5zdHls
ZSgpLmhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkOjpGaXJzdExpbmUpOwogICAgICAgICBpZiAoaGFz
UHNldWRvKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIFJlbmRlckVsZW1lbnQqIHBhcmVu
dEJsb2NrID0gZmlyc3RMaW5lQmxvY2stPnBhcmVudCgpOwpAQCAtMjU3MCw3ICsyNTcwLDcgQEAg
c3RhdGljIGlubGluZSBSZW5kZXJCbG9jayogZmluZEZpcnN0TGV0dAogewogICAgIFJlbmRlckJs
b2NrKiBmaXJzdExldHRlckJsb2NrID0gc3RhcnQ7CiAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAg
ICAgYm9vbCBjYW5IYXZlRmlyc3RMZXR0ZXJSZW5kZXJlciA9IGZpcnN0TGV0dGVyQmxvY2stPnN0
eWxlKCkuaGFzUHNldWRvU3R5bGUoRklSU1RfTEVUVEVSKQorICAgICAgICBib29sIGNhbkhhdmVG
aXJzdExldHRlclJlbmRlcmVyID0gZmlyc3RMZXR0ZXJCbG9jay0+c3R5bGUoKS5oYXNQc2V1ZG9T
dHlsZShQc2V1ZG9JZDo6Rmlyc3RMZXR0ZXIpCiAgICAgICAgICAgICAmJiBmaXJzdExldHRlckJs
b2NrLT5jYW5IYXZlR2VuZXJhdGVkQ2hpbGRyZW4oKQogICAgICAgICAgICAgJiYgaXNSZW5kZXJC
bG9ja0Zsb3dPclJlbmRlckJ1dHRvbigqZmlyc3RMZXR0ZXJCbG9jayk7CiAgICAgICAgIGlmIChj
YW5IYXZlRmlyc3RMZXR0ZXJSZW5kZXJlcikKQEAgLTI1OTUsNyArMjU5NSw3IEBAIHZvaWQgUmVu
ZGVyQmxvY2s6OmdldEZpcnN0TGV0dGVyKFJlbmRlck8KICAgICAgICAgcmV0dXJuOwogCiAgICAg
Ly8gRG9uJ3QgcmVjdXIKLSAgICBpZiAoc3R5bGUoKS5zdHlsZVR5cGUoKSA9PSBGSVJTVF9MRVRU
RVIpCisgICAgaWYgKHN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6OkZpcnN0TGV0dGVy
KQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gZGVzdHJv
eSB0aGUgZmlyc3QtbGV0dGVyIG9iamVjdCBpZiBpdCBpcyBubyBsb25nZXIgdGhlIGZpcnN0IGNo
aWxkLiBOZWVkIHRvIGZpbmQKQEAgLTI2MjAsNyArMjYyMCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6
OmdldEZpcnN0TGV0dGVyKFJlbmRlck8KICAgICAgICAgaWYgKGlzPFJlbmRlckxpc3RNYXJrZXI+
KGN1cnJlbnQpKQogICAgICAgICAgICAgZmlyc3RMZXR0ZXIgPSBjdXJyZW50Lm5leHRTaWJsaW5n
KCk7CiAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnQuaXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRp
b25lZCgpKSB7Ci0gICAgICAgICAgICBpZiAoY3VycmVudC5zdHlsZSgpLnN0eWxlVHlwZSgpID09
IEZJUlNUX0xFVFRFUikgeworICAgICAgICAgICAgaWYgKGN1cnJlbnQuc3R5bGUoKS5zdHlsZVR5
cGUoKSA9PSBQc2V1ZG9JZDo6Rmlyc3RMZXR0ZXIpIHsKICAgICAgICAgICAgICAgICBmaXJzdExl
dHRlciA9IGN1cnJlbnQuZmlyc3RDaGlsZCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQpAQCAtMjYyOSw3ICsyNjI5LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6Z2V0Rmly
c3RMZXR0ZXIoUmVuZGVyTwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGVsc2UgaWYgKGN1
cnJlbnQuaXNGbGV4aWJsZUJveEluY2x1ZGluZ0RlcHJlY2F0ZWQoKSB8fCBjdXJyZW50LmlzUmVu
ZGVyR3JpZCgpKQogICAgICAgICAgICAgZmlyc3RMZXR0ZXIgPSBjdXJyZW50Lm5leHRTaWJsaW5n
KCk7Ci0gICAgICAgIGVsc2UgaWYgKGN1cnJlbnQuc3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShGSVJT
VF9MRVRURVIpICYmIGN1cnJlbnQuY2FuSGF2ZUdlbmVyYXRlZENoaWxkcmVuKCkpICB7CisgICAg
ICAgIGVsc2UgaWYgKGN1cnJlbnQuc3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmly
c3RMZXR0ZXIpICYmIGN1cnJlbnQuY2FuSGF2ZUdlbmVyYXRlZENoaWxkcmVuKCkpICB7CiAgICAg
ICAgICAgICAvLyBXZSBmb3VuZCBhIGxvd2VyLWxldmVsIG5vZGUgd2l0aCBmaXJzdC1sZXR0ZXIs
IHdoaWNoIHN1cGVyc2VkZXMgdGhlIGhpZ2hlci1sZXZlbCBzdHlsZQogICAgICAgICAgICAgZmly
c3RMZXR0ZXJDb250YWluZXIgPSAmY3VycmVudDsKICAgICAgICAgICAgIGZpcnN0TGV0dGVyID0g
Y3VycmVudC5maXJzdENoaWxkKCk7CkBAIC0yODY4LDE0ICsyODY4LDE0IEBAIHZvaWQgUmVuZGVy
QmxvY2s6OmFkZEZvY3VzUmluZ1JlY3RzKFZlY3QKICAgICAgICAgaW5saW5lQ29udGludWF0aW9u
LT5hZGRGb2N1c1JpbmdSZWN0cyhyZWN0cywgZmxvb3JlZExheW91dFBvaW50KExheW91dFBvaW50
KGFkZGl0aW9uYWxPZmZzZXQgKyBpbmxpbmVDb250aW51YXRpb24tPmNvbnRhaW5pbmdCbG9jaygp
LT5sb2NhdGlvbigpIC0gbG9jYXRpb24oKSkpLCBwYWludENvbnRhaW5lcik7CiB9CiAKLVJlbmRl
clB0cjxSZW5kZXJCbG9jaz4gUmVuZGVyQmxvY2s6OmNyZWF0ZUFub255bW91c0Jsb2NrV2l0aFN0
eWxlQW5kRGlzcGxheShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSwgRURpc3BsYXkgZGlzcGxheSkKK1JlbmRlclB0cjxSZW5kZXJCbG9jaz4gUmVuZGVyQmxvY2s6
OmNyZWF0ZUFub255bW91c0Jsb2NrV2l0aFN0eWxlQW5kRGlzcGxheShEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRGlzcGxheVR5cGUgZGlzcGxheSkKIHsKICAg
ICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBjb252ZXJ0IGFsbCBvdXIgaW5saW5lIGRpc3BsYXlz
IHRvIGJsb2NrLXR5cGUgaW4gdGhlIGFub255bW91cyBsb2dpYyA/CiAgICAgUmVuZGVyUHRyPFJl
bmRlckJsb2NrPiBuZXdCb3g7Ci0gICAgaWYgKGRpc3BsYXkgPT0gRkxFWCB8fCBkaXNwbGF5ID09
IElOTElORV9GTEVYKQotICAgICAgICBuZXdCb3ggPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJGbGV4
aWJsZUJveD4oZG9jdW1lbnQsIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhE
aXNwbGF5KHN0eWxlLCBGTEVYKSk7CisgICAgaWYgKGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OkZs
ZXggfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lRmxleCkKKyAgICAgICAgbmV3Qm94
ID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyRmxleGlibGVCb3g+KGRvY3VtZW50LCBSZW5kZXJTdHls
ZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSwgRGlzcGxheVR5cGU6OkZs
ZXgpKTsKICAgICBlbHNlCi0gICAgICAgIG5ld0JveCA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlckJs
b2NrRmxvdz4oZG9jdW1lbnQsIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhE
aXNwbGF5KHN0eWxlLCBCTE9DSykpOworICAgICAgICBuZXdCb3ggPSBjcmVhdGVSZW5kZXJlcjxS
ZW5kZXJCbG9ja0Zsb3c+KGRvY3VtZW50LCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5
bGVXaXRoRGlzcGxheShzdHlsZSwgRGlzcGxheVR5cGU6OkJsb2NrKSk7CiAgICAgCiAgICAgbmV3
Qm94LT5pbml0aWFsaXplU3R5bGUoKTsKICAgICByZXR1cm4gbmV3Qm94OwpAQCAtMjkzMCw5ICsy
OTMwLDkgQEAgYm9vbCBSZW5kZXJCbG9jazo6Y2hpbGRCb3hJc1Vuc3BsaXR0YWJsZQogICAgIFJl
bmRlckZyYWdtZW50ZWRGbG93KiBmcmFnbWVudGVkRmxvdyA9IGVuY2xvc2luZ0ZyYWdtZW50ZWRG
bG93KCk7CiAgICAgYm9vbCBjaGVja0NvbHVtbkJyZWFrcyA9IGZyYWdtZW50ZWRGbG93ICYmIGZy
YWdtZW50ZWRGbG93LT5zaG91bGRDaGVja0NvbHVtbkJyZWFrcygpOwogICAgIGJvb2wgY2hlY2tQ
YWdlQnJlYWtzID0gIWNoZWNrQ29sdW1uQnJlYWtzICYmIHZpZXcoKS5mcmFtZVZpZXcoKS5sYXlv
dXRDb250ZXh0KCkubGF5b3V0U3RhdGUoKS0+cGFnZUxvZ2ljYWxIZWlnaHQoKTsKLSAgICByZXR1
cm4gY2hpbGQuaXNVbnNwbGl0dGFibGVGb3JQYWdpbmF0aW9uKCkgfHwgY2hpbGQuc3R5bGUoKS5i
cmVha0luc2lkZSgpID09IEF2b2lkQnJlYWtJbnNpZGUKLSAgICAgICAgfHwgKGNoZWNrQ29sdW1u
QnJlYWtzICYmIGNoaWxkLnN0eWxlKCkuYnJlYWtJbnNpZGUoKSA9PSBBdm9pZENvbHVtbkJyZWFr
SW5zaWRlKQotICAgICAgICB8fCAoY2hlY2tQYWdlQnJlYWtzICYmIGNoaWxkLnN0eWxlKCkuYnJl
YWtJbnNpZGUoKSA9PSBBdm9pZFBhZ2VCcmVha0luc2lkZSk7CisgICAgcmV0dXJuIGNoaWxkLmlz
VW5zcGxpdHRhYmxlRm9yUGFnaW5hdGlvbigpIHx8IGNoaWxkLnN0eWxlKCkuYnJlYWtJbnNpZGUo
KSA9PSBCcmVha0luc2lkZTo6QXZvaWQKKyAgICAgICAgfHwgKGNoZWNrQ29sdW1uQnJlYWtzICYm
IGNoaWxkLnN0eWxlKCkuYnJlYWtJbnNpZGUoKSA9PSBCcmVha0luc2lkZTo6QXZvaWRDb2x1bW4p
CisgICAgICAgIHx8IChjaGVja1BhZ2VCcmVha3MgJiYgY2hpbGQuc3R5bGUoKS5icmVha0luc2lk
ZSgpID09IEJyZWFrSW5zaWRlOjpBdm9pZFBhZ2UpOwogfQogCiB2b2lkIFJlbmRlckJsb2NrOjpj
b21wdXRlRnJhZ21lbnRSYW5nZUZvckJveENoaWxkKGNvbnN0IFJlbmRlckJveCYgYm94KSBjb25z
dApAQCAtMzA5Niw3ICszMDk2LDcgQEAgY29uc3QgY2hhciogUmVuZGVyQmxvY2s6OnJlbmRlck5h
bWUoKSBjbwogVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihTdHJpbmdWaWV3
IHN0cmluZ1ZpZXcsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZpb3Ig
ZXhwYW5zaW9uLCBUZXh0UnVuRmxhZ3MgZmxhZ3MpCiB7CiAgICAgVGV4dERpcmVjdGlvbiB0ZXh0
RGlyZWN0aW9uID0gTFRSOwotICAgIGJvb2wgZGlyZWN0aW9uYWxPdmVycmlkZSA9IHN0eWxlLnJ0
bE9yZGVyaW5nKCkgPT0gVmlzdWFsT3JkZXI7CisgICAgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRl
ID0gc3R5bGUucnRsT3JkZXJpbmcoKSA9PSBPcmRlcjo6VmlzdWFsOwogICAgIGlmIChmbGFncyAh
PSBEZWZhdWx0VGV4dFJ1bkZsYWdzKSB7CiAgICAgICAgIGlmIChmbGFncyAmIFJlc3BlY3REaXJl
Y3Rpb24pCiAgICAgICAgICAgICB0ZXh0RGlyZWN0aW9uID0gc3R5bGUuZGlyZWN0aW9uKCk7CkBA
IC0zMjMxLDEwICszMjMxLDEwIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dEV4Y2x1ZGVkQ2hp
bGRyZW4KICAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0OwogICAgIGlmIChzdHlsZSgpLmlzTGVm
dFRvUmlnaHREaXJlY3Rpb24oKSkgewogICAgICAgICBzd2l0Y2ggKGxlZ2VuZC5zdHlsZSgpLnRl
eHRBbGlnbigpKSB7Ci0gICAgICAgIGNhc2UgQ0VOVEVSOgorICAgICAgICBjYXNlIFRleHRBbGln
bk1vZGU6OkNlbnRlcjoKICAgICAgICAgICAgIGxvZ2ljYWxMZWZ0ID0gKGxvZ2ljYWxXaWR0aCgp
IC0gbG9naWNhbFdpZHRoRm9yQ2hpbGQobGVnZW5kKSkgLyAyOwogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgUklHSFQ6CisgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6
CiAgICAgICAgICAgICBsb2dpY2FsTGVmdCA9IGxvZ2ljYWxXaWR0aCgpIC0gYm9yZGVyRW5kKCkg
LSBwYWRkaW5nRW5kKCkgLSBsb2dpY2FsV2lkdGhGb3JDaGlsZChsZWdlbmQpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0zMjQzLDEwICszMjQzLDEwIEBAIHZvaWQg
UmVuZGVyQmxvY2s6OmxheW91dEV4Y2x1ZGVkQ2hpbGRyZW4KICAgICAgICAgfQogICAgIH0gZWxz
ZSB7CiAgICAgICAgIHN3aXRjaCAobGVnZW5kLnN0eWxlKCkudGV4dEFsaWduKCkpIHsKLSAgICAg
ICAgY2FzZSBMRUZUOgorICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CiAgICAgICAg
ICAgICBsb2dpY2FsTGVmdCA9IGJvcmRlclN0YXJ0KCkgKyBwYWRkaW5nU3RhcnQoKTsKICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENFTlRFUjogeworICAgICAgICBjYXNlIFRleHRB
bGlnbk1vZGU6OkNlbnRlcjogewogICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGV4
dHJhIHBpeGVsIGdvZXMgdG8gdGhlIGVuZCBzaWRlIGluIFJUTCAoc2luY2UgaXQgd2VudCB0byB0
aGUgZW5kIHNpZGUKICAgICAgICAgICAgIC8vIGluIExUUikuCiAgICAgICAgICAgICBMYXlvdXRV
bml0IGNlbnRlcmVkV2lkdGggPSBsb2dpY2FsV2lkdGgoKSAtIGxvZ2ljYWxXaWR0aEZvckNoaWxk
KGxlZ2VuZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkocmV2
aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE4Niw4ICsxODYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRD
b250aW51YXRpb25XaXRoT3V0bGluZShSZW5kZXJJbmxpbmUqKTsKICAgICBib29sIHBhaW50c0Nv
bnRpbnVhdGlvbk91dGxpbmUoUmVuZGVySW5saW5lKik7CiAKLSAgICBzdGF0aWMgUmVuZGVyUHRy
PFJlbmRlckJsb2NrPiBjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXJBbmREaXNwbGF5
KGNvbnN0IFJlbmRlckJveCYgcGFyZW50LCBFRGlzcGxheSA9IEJMT0NLKTsKLSAgICBSZW5kZXJQ
dHI8UmVuZGVyQmxvY2s+IGNyZWF0ZUFub255bW91c0Jsb2NrKEVEaXNwbGF5ID0gQkxPQ0spIGNv
bnN0OworICAgIHN0YXRpYyBSZW5kZXJQdHI8UmVuZGVyQmxvY2s+IGNyZWF0ZUFub255bW91c1dp
dGhQYXJlbnRSZW5kZXJlckFuZERpc3BsYXkoY29uc3QgUmVuZGVyQm94JiBwYXJlbnQsIERpc3Bs
YXlUeXBlID0gRGlzcGxheVR5cGU6OkJsb2NrKTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyQmxvY2s+
IGNyZWF0ZUFub255bW91c0Jsb2NrKERpc3BsYXlUeXBlID0gRGlzcGxheVR5cGU6OkJsb2NrKSBj
b25zdDsKIAogICAgIFJlbmRlclB0cjxSZW5kZXJCb3g+IGNyZWF0ZUFub255bW91c0JveFdpdGhT
YW1lVHlwZUFzKGNvbnN0IFJlbmRlckJveCYpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC00MTgsNyAr
NDE4LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgYmxvY2tXaWxsQmVEZXN0cm95ZWQoKTsKIAog
cHJpdmF0ZToKLSAgICBzdGF0aWMgUmVuZGVyUHRyPFJlbmRlckJsb2NrPiBjcmVhdGVBbm9ueW1v
dXNCbG9ja1dpdGhTdHlsZUFuZERpc3BsYXkoRG9jdW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYs
IEVEaXNwbGF5KTsKKyAgICBzdGF0aWMgUmVuZGVyUHRyPFJlbmRlckJsb2NrPiBjcmVhdGVBbm9u
eW1vdXNCbG9ja1dpdGhTdHlsZUFuZERpc3BsYXkoRG9jdW1lbnQmLCBjb25zdCBSZW5kZXJTdHls
ZSYsIERpc3BsYXlUeXBlKTsKIAogICAgIC8vIEZJWE1FLUJMT0NLRkxPVzogUmVtb3ZlIHZpcnR1
YWxpemFpb24gd2hlbiBhbGwgY2FsbGVycyBoYXZlIG1vdmVkIHRvIFJlbmRlckJsb2NrRmxvdwog
ICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHRGbG9hdE9mZnNldEZvckxpbmUoTGF5
b3V0VW5pdCwgTGF5b3V0VW5pdCBmaXhlZE9mZnNldCwgTGF5b3V0VW5pdCkgY29uc3QgeyByZXR1
cm4gZml4ZWRPZmZzZXQ7IH07CkBAIC01MjUsNyArNTI1LDcgQEAgTGF5b3V0VW5pdCBibG9ja0Rp
cmVjdGlvbk9mZnNldChSZW5kZXJCbAogTGF5b3V0VW5pdCBpbmxpbmVEaXJlY3Rpb25PZmZzZXQo
UmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3RC
bG9jayk7CiBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludFJlc3BlY3RpbmdFZGl0aW5n
Qm91bmRhcmllcyhSZW5kZXJCbG9jayYsIFJlbmRlckJveCYsIGNvbnN0IExheW91dFBvaW50Jik7
CiAKLWlubGluZSBSZW5kZXJQdHI8UmVuZGVyQmxvY2s+IFJlbmRlckJsb2NrOjpjcmVhdGVBbm9u
eW1vdXNXaXRoUGFyZW50UmVuZGVyZXJBbmREaXNwbGF5KGNvbnN0IFJlbmRlckJveCYgcGFyZW50
LCBFRGlzcGxheSBkaXNwbGF5KQoraW5saW5lIFJlbmRlclB0cjxSZW5kZXJCbG9jaz4gUmVuZGVy
QmxvY2s6OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlckFuZERpc3BsYXkoY29uc3Qg
UmVuZGVyQm94JiBwYXJlbnQsIERpc3BsYXlUeXBlIGRpc3BsYXkpCiB7CiAgICAgcmV0dXJuIGNy
ZWF0ZUFub255bW91c0Jsb2NrV2l0aFN0eWxlQW5kRGlzcGxheShwYXJlbnQuZG9jdW1lbnQoKSwg
cGFyZW50LnN0eWxlKCksIGRpc3BsYXkpOwogfQpAQCAtNTM1LDcgKzUzNSw3IEBAIGlubGluZSBS
ZW5kZXJQdHI8UmVuZGVyQm94PiBSZW5kZXJCbG9jazoKICAgICByZXR1cm4gY3JlYXRlQW5vbnlt
b3VzQmxvY2tXaXRoU3R5bGVBbmREaXNwbGF5KGRvY3VtZW50KCksIHJlbmRlcmVyLnN0eWxlKCks
IHN0eWxlKCkuZGlzcGxheSgpKTsKIH0KIAotaW5saW5lIFJlbmRlclB0cjxSZW5kZXJCbG9jaz4g
UmVuZGVyQmxvY2s6OmNyZWF0ZUFub255bW91c0Jsb2NrKEVEaXNwbGF5IGRpc3BsYXkpIGNvbnN0
CitpbmxpbmUgUmVuZGVyUHRyPFJlbmRlckJsb2NrPiBSZW5kZXJCbG9jazo6Y3JlYXRlQW5vbnlt
b3VzQmxvY2soRGlzcGxheVR5cGUgZGlzcGxheSkgY29uc3QKIHsKICAgICByZXR1cm4gY3JlYXRl
QW5vbnltb3VzQmxvY2tXaXRoU3R5bGVBbmREaXNwbGF5KGRvY3VtZW50KCksIHN0eWxlKCksIGRp
c3BsYXkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxv
dy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
Rmxvdy5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9ja0Zsb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTgsNyArNDE4LDcgQEAgYm9v
bCBSZW5kZXJCbG9ja0Zsb3c6OndpbGxDcmVhdGVDb2x1bW5zKAogICAgIGlmICghZmlyc3RDaGls
ZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoc3R5bGUoKS5zdHlsZVR5cGUo
KSAhPSBOT1BTRVVETykKKyAgICBpZiAoc3R5bGUoKS5zdHlsZVR5cGUoKSAhPSBQc2V1ZG9JZDo6
Tm9uZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gSWYgb3ZlcmZsb3cteSBpcyBz
ZXQgdG8gcGFnZWQteCBvciBwYWdlZC15IG9uIHRoZSBib2R5IG9yIGh0bWwgZWxlbWVudCwgd2Un
bGwgaGFuZGxlIHRoZSBwYWdpbmF0aW5nIGluIHRoZSBSZW5kZXJWaWV3IGluc3RlYWQuCkBAIC01
NjgsNyArNTY4LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dEJsb2NrKGJvb2wgcgog
ICAgIC8vIEZJWE1FOiBUaGlzIHJlcGFpbnQgbG9naWMgc2hvdWxkIGJlIG1vdmVkIGludG8gYSBz
ZXBhcmF0ZSBoZWxwZXIgZnVuY3Rpb24hCiAgICAgLy8gUmVwYWludCB3aXRoIG91ciBuZXcgYm91
bmRzIGlmIHRoZXkgYXJlIGRpZmZlcmVudCBmcm9tIG91ciBvbGQgYm91bmRzLgogICAgIGJvb2wg
ZGlkRnVsbFJlcGFpbnQgPSByZXBhaW50ZXIucmVwYWludEFmdGVyTGF5b3V0KCk7Ci0gICAgaWYg
KCFkaWRGdWxsUmVwYWludCAmJiByZXBhaW50TG9naWNhbFRvcCAhPSByZXBhaW50TG9naWNhbEJv
dHRvbSAmJiAoc3R5bGVUb1VzZS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSB8fCBlbmNsb3NpbmdM
YXllcigpLT5oYXNWaXNpYmxlQ29udGVudCgpKSkgeworICAgIGlmICghZGlkRnVsbFJlcGFpbnQg
JiYgcmVwYWludExvZ2ljYWxUb3AgIT0gcmVwYWludExvZ2ljYWxCb3R0b20gJiYgKHN0eWxlVG9V
c2UudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUgfHwgZW5jbG9zaW5nTGF5ZXIo
KS0+aGFzVmlzaWJsZUNvbnRlbnQoKSkpIHsKICAgICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIHRp
Z2h0ZW4gdXAgdGhlIGxlZnQgYW5kIHJpZ2h0IGludmFsaWRhdGlvbiBwb2ludHMgaWYgd2UgbGV0
IGxheW91dElubGluZUNoaWxkcmVuIGZpbGwgdGhlbSBpbiBiYXNlZCBvZmYgdGhlIHBhcnRpY3Vs
YXIgbGluZXMKICAgICAgICAgLy8gaXQgaGFkIHRvIGxheSBvdXQuIFdlIHdvdWxkbid0IG5lZWQg
dGhlIGhhc092ZXJmbG93Q2xpcCgpIGhhY2sgaW4gdGhhdCBjYXNlIGVpdGhlci4KICAgICAgICAg
TGF5b3V0VW5pdCByZXBhaW50TG9naWNhbExlZnQgPSBsb2dpY2FsTGVmdFZpc3VhbE92ZXJmbG93
KCk7CkBAIC0xNTAxLDcgKzE1MDEsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrRmxvdzo6YXBw
bHlCZWZvcmVCCiAgICAgYm9vbCBjaGVja0NvbHVtbkJyZWFrcyA9IGZyYWdtZW50ZWRGbG93ICYm
IGZyYWdtZW50ZWRGbG93LT5zaG91bGRDaGVja0NvbHVtbkJyZWFrcygpOwogICAgIGJvb2wgY2hl
Y2tQYWdlQnJlYWtzID0gIWNoZWNrQ29sdW1uQnJlYWtzICYmIHZpZXcoKS5mcmFtZVZpZXcoKS5s
YXlvdXRDb250ZXh0KCkubGF5b3V0U3RhdGUoKS0+cGFnZUxvZ2ljYWxIZWlnaHQoKTsgLy8gRklY
TUU6IE9uY2UgY29sdW1ucyBjYW4gcHJpbnQgd2UgaGF2ZSB0byBjaGVjayB0aGlzLgogICAgIGJv
b2wgY2hlY2tGcmFnbWVudEJyZWFrcyA9IGZhbHNlOwotICAgIGJvb2wgY2hlY2tCZWZvcmVBbHdh
eXMgPSAoY2hlY2tDb2x1bW5CcmVha3MgJiYgY2hpbGQuc3R5bGUoKS5icmVha0JlZm9yZSgpID09
IENvbHVtbkJyZWFrQmV0d2VlbikKKyAgICBib29sIGNoZWNrQmVmb3JlQWx3YXlzID0gKGNoZWNr
Q29sdW1uQnJlYWtzICYmIGNoaWxkLnN0eWxlKCkuYnJlYWtCZWZvcmUoKSA9PSBCcmVha0JldHdl
ZW46OkNvbHVtbikKICAgICAgICAgfHwgKGNoZWNrUGFnZUJyZWFrcyAmJiBhbHdheXNQYWdlQnJl
YWsoY2hpbGQuc3R5bGUoKS5icmVha0JlZm9yZSgpKSk7CiAgICAgaWYgKGNoZWNrQmVmb3JlQWx3
YXlzICYmIGluTm9ybWFsRmxvdyhjaGlsZCkgJiYgaGFzTmV4dFBhZ2UobG9naWNhbE9mZnNldCwg
SW5jbHVkZVBhZ2VCb3VuZGFyeSkpIHsKICAgICAgICAgaWYgKGNoZWNrQ29sdW1uQnJlYWtzKSB7
CkBAIC0xNTI2LDcgKzE1MjYsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrRmxvdzo6YXBwbHlB
ZnRlckJyCiAgICAgYm9vbCBjaGVja0NvbHVtbkJyZWFrcyA9IGZyYWdtZW50ZWRGbG93ICYmIGZy
YWdtZW50ZWRGbG93LT5zaG91bGRDaGVja0NvbHVtbkJyZWFrcygpOwogICAgIGJvb2wgY2hlY2tQ
YWdlQnJlYWtzID0gIWNoZWNrQ29sdW1uQnJlYWtzICYmIHZpZXcoKS5mcmFtZVZpZXcoKS5sYXlv
dXRDb250ZXh0KCkubGF5b3V0U3RhdGUoKS0+cGFnZUxvZ2ljYWxIZWlnaHQoKTsgLy8gRklYTUU6
IE9uY2UgY29sdW1ucyBjYW4gcHJpbnQgd2UgaGF2ZSB0byBjaGVjayB0aGlzLgogICAgIGJvb2wg
Y2hlY2tGcmFnbWVudEJyZWFrcyA9IGZhbHNlOwotICAgIGJvb2wgY2hlY2tBZnRlckFsd2F5cyA9
IChjaGVja0NvbHVtbkJyZWFrcyAmJiBjaGlsZC5zdHlsZSgpLmJyZWFrQWZ0ZXIoKSA9PSBDb2x1
bW5CcmVha0JldHdlZW4pCisgICAgYm9vbCBjaGVja0FmdGVyQWx3YXlzID0gKGNoZWNrQ29sdW1u
QnJlYWtzICYmIGNoaWxkLnN0eWxlKCkuYnJlYWtBZnRlcigpID09IEJyZWFrQmV0d2Vlbjo6Q29s
dW1uKQogICAgICAgICB8fCAoY2hlY2tQYWdlQnJlYWtzICYmIGFsd2F5c1BhZ2VCcmVhayhjaGls
ZC5zdHlsZSgpLmJyZWFrQWZ0ZXIoKSkpOwogICAgIGlmIChjaGVja0FmdGVyQWx3YXlzICYmIGlu
Tm9ybWFsRmxvdyhjaGlsZCkgJiYgaGFzTmV4dFBhZ2UobG9naWNhbE9mZnNldCwgSW5jbHVkZVBh
Z2VCb3VuZGFyeSkpIHsKICAgICAgICAgTGF5b3V0VW5pdCBtYXJnaW5PZmZzZXQgPSBtYXJnaW5J
bmZvLmNhbkNvbGxhcHNlV2l0aE1hcmdpbkJlZm9yZSgpID8gTGF5b3V0VW5pdCgpIDogbWFyZ2lu
SW5mby5tYXJnaW4oKTsKQEAgLTE4NTQsNyArMTg1NCw3IEBAIExheW91dFVuaXQgUmVuZGVyQmxv
Y2tGbG93OjphZGp1c3RGb3JVbnMKICAgICAgICAgaWYgKCFoYXNVbmlmb3JtUGFnZUxvZ2ljYWxI
ZWlnaHQgJiYgIXB1c2hUb05leHRQYWdlV2l0aE1pbmltdW1Mb2dpY2FsSGVpZ2h0KHJlbWFpbmlu
Z0xvZ2ljYWxIZWlnaHQsIGxvZ2ljYWxPZmZzZXQsIGNoaWxkTG9naWNhbEhlaWdodCkpCiAgICAg
ICAgICAgICByZXR1cm4gbG9naWNhbE9mZnNldDsKICAgICAgICAgYXV0byByZXN1bHQgPSBsb2dp
Y2FsT2Zmc2V0ICsgcmVtYWluaW5nTG9naWNhbEhlaWdodDsKLSAgICAgICAgYm9vbCBpc0luaXRp
YWxMZXR0ZXIgPSBjaGlsZC5pc0Zsb2F0aW5nKCkgJiYgY2hpbGQuc3R5bGUoKS5zdHlsZVR5cGUo
KSA9PSBGSVJTVF9MRVRURVIgJiYgY2hpbGQuc3R5bGUoKS5pbml0aWFsTGV0dGVyRHJvcCgpID4g
MDsKKyAgICAgICAgYm9vbCBpc0luaXRpYWxMZXR0ZXIgPSBjaGlsZC5pc0Zsb2F0aW5nKCkgJiYg
Y2hpbGQuc3R5bGUoKS5zdHlsZVR5cGUoKSA9PSBQc2V1ZG9JZDo6Rmlyc3RMZXR0ZXIgJiYgY2hp
bGQuc3R5bGUoKS5pbml0aWFsTGV0dGVyRHJvcCgpID4gMDsKICAgICAgICAgaWYgKGlzSW5pdGlh
bExldHRlcikgewogICAgICAgICAgICAgLy8gSW5jcmVhc2Ugb3VyIGxvZ2ljYWwgaGVpZ2h0IHRv
IGVuc3VyZSB0aGF0IGxpbmVzIGFsbCBnZXQgcHVzaGVkIGFsb25nIHdpdGggdGhlIGxldHRlci4K
ICAgICAgICAgICAgIHNldExvZ2ljYWxIZWlnaHQobG9naWNhbE9mZnNldCArIHJlbWFpbmluZ0xv
Z2ljYWxIZWlnaHQpOwpAQCAtMjAzNSw3ICsyMDM1LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6
OnN0eWxlRGlkQ2hhbmdlKFN0eQogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnVwZGF0ZVN0eWxlc0Zv
ckNvbHVtbkNoaWxkcmVuKCkKIHsKICAgICBmb3IgKGF1dG8qIGNoaWxkID0gZmlyc3RDaGlsZEJv
eCgpOyBjaGlsZCAmJiAoY2hpbGQtPmlzSW5GbG93UmVuZGVyRnJhZ21lbnRlZEZsb3coKSB8fCBj
aGlsZC0+aXNSZW5kZXJNdWx0aUNvbHVtblNldCgpKTsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxp
bmdCb3goKSkKLSAgICAgICAgY2hpbGQtPnNldFN0eWxlKFJlbmRlclN0eWxlOjpjcmVhdGVBbm9u
eW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlKCksIEJMT0NLKSk7CisgICAgICAgIGNoaWxkLT5z
ZXRTdHlsZShSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHls
ZSgpLCBEaXNwbGF5VHlwZTo6QmxvY2spKTsKIH0KIAogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnN0
eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUmIG5l
d1N0eWxlKQpAQCAtMjM0NSw3ICsyMzQ1LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1
dGVMb2dpY2FsTG9jYQogICAgIExheW91dFVuaXQgZmxvYXRMb2dpY2FsTGVmdDsKIAogICAgIGJv
b2wgaW5zaWRlRnJhZ21lbnRlZEZsb3cgPSBlbmNsb3NpbmdGcmFnbWVudGVkRmxvdygpOwotICAg
IGJvb2wgaXNJbml0aWFsTGV0dGVyID0gY2hpbGRCb3guc3R5bGUoKS5zdHlsZVR5cGUoKSA9PSBG
SVJTVF9MRVRURVIgJiYgY2hpbGRCb3guc3R5bGUoKS5pbml0aWFsTGV0dGVyRHJvcCgpID4gMDsK
KyAgICBib29sIGlzSW5pdGlhbExldHRlciA9IGNoaWxkQm94LnN0eWxlKCkuc3R5bGVUeXBlKCkg
PT0gUHNldWRvSWQ6OkZpcnN0TGV0dGVyICYmIGNoaWxkQm94LnN0eWxlKCkuaW5pdGlhbExldHRl
ckRyb3AoKSA+IDA7CiAgICAgCiAgICAgaWYgKGlzSW5pdGlhbExldHRlcikgewogICAgICAgICBp
bnQgbGV0dGVyQ2xlYXJhbmNlID0gbG93ZXN0SW5pdGlhbExldHRlckxvZ2ljYWxCb3R0b20oKSAt
IGxvZ2ljYWxUb3BPZmZzZXQ7CkBAIC0yNjE1LDcgKzI2MTUsNyBAQCBMYXlvdXRVbml0IFJlbmRl
ckJsb2NrRmxvdzo6bG93ZXN0SW5pdGlhCiAgICAgYXV0byBlbmQgPSBmbG9hdGluZ09iamVjdFNl
dC5lbmQoKTsKICAgICBmb3IgKGF1dG8gaXQgPSBmbG9hdGluZ09iamVjdFNldC5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgY29uc3QgYXV0byYgZmxvYXRpbmdPYmplY3QgPSAq
aXQtPmdldCgpOwotICAgICAgICBpZiAoZmxvYXRpbmdPYmplY3QuaXNQbGFjZWQoKSAmJiBmbG9h
dGluZ09iamVjdC5yZW5kZXJlcigpLnN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gRklSU1RfTEVUVEVS
ICYmIGZsb2F0aW5nT2JqZWN0LnJlbmRlcmVyKCkuc3R5bGUoKS5pbml0aWFsTGV0dGVyRHJvcCgp
ID4gMCkKKyAgICAgICAgaWYgKGZsb2F0aW5nT2JqZWN0LmlzUGxhY2VkKCkgJiYgZmxvYXRpbmdP
YmplY3QucmVuZGVyZXIoKS5zdHlsZSgpLnN0eWxlVHlwZSgpID09IFBzZXVkb0lkOjpGaXJzdExl
dHRlciAmJiBmbG9hdGluZ09iamVjdC5yZW5kZXJlcigpLnN0eWxlKCkuaW5pdGlhbExldHRlckRy
b3AoKSA+IDApCiAgICAgICAgICAgICBsb3dlc3RGbG9hdEJvdHRvbSA9IHN0ZDo6bWF4KGxvd2Vz
dEZsb2F0Qm90dG9tLCBsb2dpY2FsQm90dG9tRm9yRmxvYXQoZmxvYXRpbmdPYmplY3QpKTsKICAg
ICB9CiAgICAgcmV0dXJuIGxvd2VzdEZsb2F0Qm90dG9tOwpAQCAtMjkwNyw3ICsyOTA3LDcgQEAg
Ym9vbCBSZW5kZXJCbG9ja0Zsb3c6OmhpdFRlc3RJbmxpbmVDaGlsZAogCiB2b2lkIFJlbmRlckJs
b2NrRmxvdzo6YWRqdXN0Rm9yQm9yZGVyRml0KExheW91dFVuaXQgeCwgTGF5b3V0VW5pdCYgbGVm
dCwgTGF5b3V0VW5pdCYgcmlnaHQpIGNvbnN0CiB7Ci0gICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0
eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxp
dHk6OlZpc2libGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFdlIGRvbid0IGRlYWwgd2l0
aCByZWxhdGl2ZSBwb3NpdGlvbmluZy4gIE91ciBhc3N1bXB0aW9uIGlzIHRoYXQgeW91IHNocmlu
ayB0byBmaXQgdGhlIGxpbmVzIHdpdGhvdXQgYWNjb3VudGluZwpAQCAtMjkyNiw3ICsyOTI2LDcg
QEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmFkanVzdEZvckJvcmRlckZpdAogICAgICAgICAgICAg
aWYgKCFvYmotPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewogICAgICAgICAg
ICAgICAgIGlmIChpczxSZW5kZXJCbG9ja0Zsb3c+KCpvYmopICYmICFvYmotPmhhc092ZXJmbG93
Q2xpcCgpKQogICAgICAgICAgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KCpv
YmopLmFkanVzdEZvckJvcmRlckZpdCh4ICsgb2JqLT54KCksIGxlZnQsIHJpZ2h0KTsKLSAgICAg
ICAgICAgICAgICBlbHNlIGlmIChvYmotPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUp
IHsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChvYmotPnN0eWxlKCkudmlzaWJpbGl0eSgpID09
IFZpc2liaWxpdHk6OlZpc2libGUpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gV2UgYXJlIGEg
cmVwbGFjZWQgZWxlbWVudCBvciBzb21lIGtpbmQgb2Ygbm9uLWJsb2NrLWZsb3cgb2JqZWN0Lgog
ICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gc3RkOjptaW4obGVmdCwgeCArIG9iai0+eCgpKTsK
ICAgICAgICAgICAgICAgICAgICAgcmlnaHQgPSBzdGQ6Om1heChyaWdodCwgeCArIG9iai0+eCgp
ICsgb2JqLT53aWR0aCgpKTsKQEAgLTI5NTMsNyArMjk1Myw3IEBAIHZvaWQgUmVuZGVyQmxvY2tG
bG93OjphZGp1c3RGb3JCb3JkZXJGaXQKIAogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmZpdEJvcmRl
clRvTGluZXNJZk5lZWRlZCgpCiB7Ci0gICAgaWYgKHN0eWxlKCkuYm9yZGVyRml0KCkgPT0gQm9y
ZGVyRml0Qm9yZGVyIHx8IGhhc092ZXJyaWRlQ29udGVudExvZ2ljYWxXaWR0aCgpKQorICAgIGlm
IChzdHlsZSgpLmJvcmRlckZpdCgpID09IEJvcmRlckZpdDo6Qm9yZGVyIHx8IGhhc092ZXJyaWRl
Q29udGVudExvZ2ljYWxXaWR0aCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXYWxrIGFu
eSBub3JtYWwgZmxvdyBsaW5lcyB0byBzbnVnbHkgZml0LgpAQCAtMzE1Myw3ICszMTUzLDcgQEAg
Um9vdElubGluZUJveCogUmVuZGVyQmxvY2tGbG93OjpsaW5lQXRJbgogewogICAgIEFTU0VSVChp
ID49IDApOwogCi0gICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAg
aWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKGNoaWxkcmVuSW5saW5lKCkpIHsKQEAgLTMxNzYs
NyArMzE3Niw3IEBAIFJvb3RJbmxpbmVCb3gqIFJlbmRlckJsb2NrRmxvdzo6bGluZUF0SW4KIAog
aW50IFJlbmRlckJsb2NrRmxvdzo6bGluZUNvdW50KGNvbnN0IFJvb3RJbmxpbmVCb3gqIHN0b3BS
b290SW5saW5lQm94LCBib29sKiBmb3VuZCkgY29uc3QKIHsKLSAgICBpZiAoc3R5bGUoKS52aXNp
YmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlz
aWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpbnQgY291bnQgPSAw
OwpAQCAtMzIxNCw3ICszMjE0LDcgQEAgaW50IFJlbmRlckJsb2NrRmxvdzo6bGluZUNvdW50KGNv
bnN0IFJvbwogCiBzdGF0aWMgaW50IGdldEhlaWdodEZvckxpbmVDb3VudChjb25zdCBSZW5kZXJC
bG9ja0Zsb3cmIGJsb2NrLCBpbnQgbGluZUNvdW50LCBib29sIGluY2x1ZGVFZGdlQm9yZGVyUGFk
ZGluZywgYm9vbCBmb3J3YXJkLCBpbnQmIGNvdW50KQogewotICAgIGlmIChibG9jay5zdHlsZSgp
LnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChibG9jay5zdHlsZSgpLnZpc2liaWxp
dHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1cm4gLTE7CiAKICAgICAv
LyBGSVhNRTogT3J0aG9nb25hbCB3cml0aW5nIG1vZGVzIGRvbid0IHdvcmsgaGVyZSwgYnV0IGl0
J3Mgbm90IGV2ZW4gY2xlYXIgaG93IHRoZXkgc2hvdWxkIGJlaGF2ZSBhbnl3YXkuCkBAIC0zMjY0
LDcgKzMyNjQsNyBAQCBpbnQgUmVuZGVyQmxvY2tGbG93Ojpsb2dpY2FsSGVpZ2h0RXhjbHVkCiAK
IHZvaWQgUmVuZGVyQmxvY2tGbG93OjpjbGVhclRydW5jYXRpb24oKQogewotICAgIGlmIChzdHls
ZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHko
KSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoY2hp
bGRyZW5JbmxpbmUoKSAmJiBoYXNNYXJrdXBUcnVuY2F0aW9uKCkpIHsKQEAgLTMzMjMsNyArMzMy
Myw3IEBAIFJlbmRlclRleHQqIFJlbmRlckJsb2NrRmxvdzo6ZmluZENsb3Nlc3QKICAgICBpZiAo
IWJsb2NrLT5jaGlsZHJlbklubGluZSgpKSB7CiAgICAgICAgIC8vIExvb2sgYW1vbmcgb3VyIGlt
bWVkaWF0ZSBjaGlsZHJlbiBmb3IgYW4gYWx0ZXJuYXRlIGJveCB0aGF0IGNvbnRhaW5zIHRoZSBw
b2ludC4KICAgICAgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gYmxvY2stPmZpcnN0Q2hpbGRC
b3goKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nQm94KCkpIHsKLSAgICAgICAg
ICAgIGlmICghY2hpbGQtPmhlaWdodCgpIHx8IGNoaWxkLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAh
PSBXZWJDb3JlOjpWSVNJQkxFIHx8IGNoaWxkLT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlv
bmVkKCkpCisgICAgICAgICAgICBpZiAoIWNoaWxkLT5oZWlnaHQoKSB8fCBjaGlsZC0+c3R5bGUo
KS52aXNpYmlsaXR5KCkgIT0gV2ViQ29yZTo6VmlzaWJpbGl0eTo6VmlzaWJsZSB8fCBjaGlsZC0+
aXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgpKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgZmxvYXQgdG9wID0gY2hpbGQtPnkoKTsKICAgICAgICAgICAgIApA
QCAtMzcwNyw3ICszNzA3LDcgQEAgc3RhdGljIGlubGluZSBib29sIHJlc2l6ZVRleHRQZXJtaXR0
ZWQoYwogCiBpbnQgUmVuZGVyQmxvY2tGbG93OjpsaW5lQ291bnRGb3JUZXh0QXV0b3NpemluZygp
CiB7Ci0gICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKHN0
eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgIHJldHVy
biAwOwogICAgIGlmIChjaGlsZHJlbklubGluZSgpKQogICAgICAgICByZXR1cm4gbGluZUNvdW50
KCk7CkBAIC0zODg4LDcgKzM4ODgsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6c2V0Q29tcHV0
ZWRDb2x1bW5DCiAgICAgICAgIHJldHVybjsKICAgICBtdWx0aUNvbHVtbkZsb3coKS0+c2V0Q29s
dW1uQ291bnRBbmRXaWR0aChjb3VudCwgd2lkdGgpOwogICAgIG11bHRpQ29sdW1uRmxvdygpLT5z
ZXRQcm9ncmVzc2lvbklzSW5saW5lKHN0eWxlKCkuaGFzSW5saW5lQ29sdW1uQXhpcygpKTsKLSAg
ICBtdWx0aUNvbHVtbkZsb3coKS0+c2V0UHJvZ3Jlc3Npb25Jc1JldmVyc2VkKHN0eWxlKCkuY29s
dW1uUHJvZ3Jlc3Npb24oKSA9PSBSZXZlcnNlQ29sdW1uUHJvZ3Jlc3Npb24pOworICAgIG11bHRp
Q29sdW1uRmxvdygpLT5zZXRQcm9ncmVzc2lvbklzUmV2ZXJzZWQoc3R5bGUoKS5jb2x1bW5Qcm9n
cmVzc2lvbigpID09IENvbHVtblByb2dyZXNzaW9uOjpSZXZlcnNlKTsKIH0KIAogdm9pZCBSZW5k
ZXJCbG9ja0Zsb3c6OnVwZGF0ZUNvbHVtblByb2dyZXNzaW9uRnJvbVN0eWxlKFJlbmRlclN0eWxl
JiBzdHlsZSkKQEAgLTM5MDUsNyArMzkwNSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojp1cGRh
dGVDb2x1bW5Qcm9ncmUKICAgICB9CiAKICAgICBib29sIG9sZFByb2dyZXNzaW9uSXNSZXZlcnNl
ZCA9IG11bHRpQ29sdW1uRmxvdygpLT5wcm9ncmVzc2lvbklzUmV2ZXJzZWQoKTsKLSAgICBib29s
IG5ld1Byb2dyZXNzaW9uSXNSZXZlcnNlZCA9IHN0eWxlLmNvbHVtblByb2dyZXNzaW9uKCkgPT0g
UmV2ZXJzZUNvbHVtblByb2dyZXNzaW9uOworICAgIGJvb2wgbmV3UHJvZ3Jlc3Npb25Jc1JldmVy
c2VkID0gc3R5bGUuY29sdW1uUHJvZ3Jlc3Npb24oKSA9PSBDb2x1bW5Qcm9ncmVzc2lvbjo6UmV2
ZXJzZTsKICAgICBpZiAob2xkUHJvZ3Jlc3Npb25Jc1JldmVyc2VkICE9IG5ld1Byb2dyZXNzaW9u
SXNSZXZlcnNlZCkgewogICAgICAgICBtdWx0aUNvbHVtbkZsb3coKS0+c2V0UHJvZ3Jlc3Npb25J
c1JldmVyc2VkKG5ld1Byb2dyZXNzaW9uSXNSZXZlcnNlZCk7CiAgICAgICAgIG5lZWRzTGF5b3V0
ID0gdHJ1ZTsKQEAgLTM5MzMsNyArMzkzMyw3IEBAIHVuc2lnbmVkIFJlbmRlckJsb2NrRmxvdzo6
Y29tcHV0ZWRDb2x1bW4KIGJvb2wgUmVuZGVyQmxvY2tGbG93Ojppc1RvcExheW91dE92ZXJmbG93
QWxsb3dlZCgpIGNvbnN0CiB7CiAgICAgYm9vbCBoYXNUb3BPdmVyZmxvdyA9IFJlbmRlckJsb2Nr
Ojppc1RvcExheW91dE92ZXJmbG93QWxsb3dlZCgpOwotICAgIGlmICghbXVsdGlDb2x1bW5GbG93
KCkgfHwgc3R5bGUoKS5jb2x1bW5Qcm9ncmVzc2lvbigpID09IE5vcm1hbENvbHVtblByb2dyZXNz
aW9uKQorICAgIGlmICghbXVsdGlDb2x1bW5GbG93KCkgfHwgc3R5bGUoKS5jb2x1bW5Qcm9ncmVz
c2lvbigpID09IENvbHVtblByb2dyZXNzaW9uOjpOb3JtYWwpCiAgICAgICAgIHJldHVybiBoYXNU
b3BPdmVyZmxvdzsKICAgICAKICAgICBpZiAoIShpc0hvcml6b250YWxXcml0aW5nTW9kZSgpIF4g
IXN0eWxlKCkuaGFzSW5saW5lQ29sdW1uQXhpcygpKSkKQEAgLTM5NDUsNyArMzk0NSw3IEBAIGJv
b2wgUmVuZGVyQmxvY2tGbG93Ojppc1RvcExheW91dE92ZXJmbG8KIGJvb2wgUmVuZGVyQmxvY2tG
bG93Ojppc0xlZnRMYXlvdXRPdmVyZmxvd0FsbG93ZWQoKSBjb25zdAogewogICAgIGJvb2wgaGFz
TGVmdE92ZXJmbG93ID0gUmVuZGVyQmxvY2s6OmlzTGVmdExheW91dE92ZXJmbG93QWxsb3dlZCgp
OwotICAgIGlmICghbXVsdGlDb2x1bW5GbG93KCkgfHwgc3R5bGUoKS5jb2x1bW5Qcm9ncmVzc2lv
bigpID09IE5vcm1hbENvbHVtblByb2dyZXNzaW9uKQorICAgIGlmICghbXVsdGlDb2x1bW5GbG93
KCkgfHwgc3R5bGUoKS5jb2x1bW5Qcm9ncmVzc2lvbigpID09IENvbHVtblByb2dyZXNzaW9uOjpO
b3JtYWwpCiAgICAgICAgIHJldHVybiBoYXNMZWZ0T3ZlcmZsb3c7CiAgICAgCiAgICAgaWYgKGlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgXiAhc3R5bGUoKS5oYXNJbmxpbmVDb2x1bW5BeGlzKCkp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCShyZXZp
c2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzMiw3ICs1MzIsNyBAQCBwdWJsaWM6CiAgICAgUm9vdElu
bGluZUJveCogY3JlYXRlQW5kQXBwZW5kUm9vdElubGluZUJveCgpOwogCiAgICAgTGF5b3V0VW5p
dCBzdGFydEFsaWduZWRPZmZzZXRGb3JMaW5lKExheW91dFVuaXQgcG9zaXRpb24sIEluZGVudFRl
eHRPck5vdCBzaG91bGRJbmRlbnRUZXh0KTsKLSAgICB2aXJ0dWFsIEVUZXh0QWxpZ24gdGV4dEFs
aWdubWVudEZvckxpbmUoYm9vbCBlbmRzV2l0aFNvZnRCcmVhaykgY29uc3Q7CisgICAgdmlydHVh
bCBUZXh0QWxpZ25Nb2RlIHRleHRBbGlnbm1lbnRGb3JMaW5lKGJvb2wgZW5kc1dpdGhTb2Z0QnJl
YWspIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RJbmxpbmVEaXJlY3Rpb25MaW5lQm91
bmRzKGludCAvKiBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50ICovLCBmbG9hdCYgLyogbG9naWNh
bExlZnQgKi8sIGZsb2F0JiAvKiBsb2dpY2FsV2lkdGggKi8pIGNvbnN0IHsgfQogICAgIFJvb3RJ
bmxpbmVCb3gqIGNvbnN0cnVjdExpbmUoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mLCBjb25zdCBMaW5l
SW5mbyYpOwogCkBAIC01NDgsNyArNTQ4LDcgQEAgcHJpdmF0ZTogICAgICAgIAogICAgIHZvaWQg
Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmUoUm9vdElubGluZUJveCosIGNv
bnN0IExpbmVJbmZvJiwgQmlkaVJ1biogZmlyc3RSdW4sIEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VS
dW4sIGJvb2wgcmVhY2hlZEVuZCwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmLCBW
ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmLCBXb3JkTWVhc3VyZW1lbnRzJik7CiAgICAgdm9pZCB1cGRh
dGVSdWJ5Rm9ySnVzdGlmaWVkVGV4dChSZW5kZXJSdWJ5UnVuJiwgQmlkaVJ1biYsIGNvbnN0IFZl
Y3Rvcjx1bnNpZ25lZCwgMTY+JiBleHBhbnNpb25PcHBvcnR1bml0aWVzLCB1bnNpZ25lZCYgZXhw
YW5zaW9uT3Bwb3J0dW5pdHlDb3VudCwgZmxvYXQmIHRvdGFsTG9naWNhbFdpZHRoLCBmbG9hdCBh
dmFpbGFibGVMb2dpY2FsV2lkdGgsIHNpemVfdCYgZXhwYW5zaW9uSW5kZXgpOwogICAgIHZvaWQg
Y29tcHV0ZUV4cGFuc2lvbkZvckp1c3RpZmllZFRleHQoQmlkaVJ1biogZmlyc3RSdW4sIEJpZGlS
dW4qIHRyYWlsaW5nU3BhY2VSdW4sIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZCwgMTY+JiBleHBhbnNp
b25PcHBvcnR1bml0aWVzLCB1bnNpZ25lZCBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50LCBmbG9h
dCB0b3RhbExvZ2ljYWxXaWR0aCwgZmxvYXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKLSAgICBC
aWRpUnVuKiBjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yU2VnbWVudChSb290SW5s
aW5lQm94KiwgY29uc3QgTGluZUluZm8mLCBFVGV4dEFsaWduLCBmbG9hdCYgbG9naWNhbExlZnQs
CisgICAgQmlkaVJ1biogY29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQo
Um9vdElubGluZUJveCosIGNvbnN0IExpbmVJbmZvJiwgVGV4dEFsaWduTW9kZSwgZmxvYXQmIGxv
Z2ljYWxMZWZ0LAogICAgICAgICBmbG9hdCYgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBCaWRpUnVu
KiBmaXJzdFJ1biwgQmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1biwgR2x5cGhPdmVyZmxvd0FuZEZh
bGxiYWNrRm9udHNNYXAmIHRleHRCb3hEYXRhTWFwLCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmLCBX
b3JkTWVhc3VyZW1lbnRzJik7CiAgICAgdm9pZCBjb21wdXRlQmxvY2tEaXJlY3Rpb25Qb3NpdGlv
bnNGb3JMaW5lKFJvb3RJbmxpbmVCb3gqLCBCaWRpUnVuKiwgR2x5cGhPdmVyZmxvd0FuZEZhbGxi
YWNrRm9udHNNYXAmLCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmKTsKICAgICBCaWRpUnVuKiBoYW5k
bGVUcmFpbGluZ1NwYWNlcyhCaWRpUnVuTGlzdDxCaWRpUnVuPiYsIEJpZGlDb250ZXh0Kik7CkBA
IC01NzUsNyArNTc1LDcgQEAgcHJpdmF0ZTogICAgICAgIAogICAgIC8vIHBhZ2UvY29sdW1uIHRo
YXQgaGFzIGEgZGlmZmVyZW50IGF2YWlsYWJsZSBsaW5lIHdpZHRoIHRoYW4gdGhlIG9sZCBvbmUu
IFVzZWQgdG8ga25vdyB3aGVuIHlvdSBoYXZlIHRvIGRpcnR5IGEKICAgICAvLyBsaW5lLCBpLmUu
LCB0aGF0IGl0IGNhbid0IGJlIHJlLXVzZWQuCiAgICAgYm9vbCBsaW5lV2lkdGhGb3JQYWdpbmF0
ZWRMaW5lQ2hhbmdlZChSb290SW5saW5lQm94KiwgTGF5b3V0VW5pdCBsaW5lRGVsdGEsIFJlbmRl
ckZyYWdtZW50ZWRGbG93KikgY29uc3Q7Ci0gICAgdm9pZCB1cGRhdGVMb2dpY2FsV2lkdGhGb3JB
bGlnbm1lbnQoY29uc3QgRVRleHRBbGlnbiYsIGNvbnN0IFJvb3RJbmxpbmVCb3gqLCBCaWRpUnVu
KiB0cmFpbGluZ1NwYWNlUnVuLCBmbG9hdCYgbG9naWNhbExlZnQsIGZsb2F0JiB0b3RhbExvZ2lj
YWxXaWR0aCwgZmxvYXQmIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgaW50IGV4cGFuc2lvbk9wcG9y
dHVuaXR5Q291bnQpOworICAgIHZvaWQgdXBkYXRlTG9naWNhbFdpZHRoRm9yQWxpZ25tZW50KGNv
bnN0IFRleHRBbGlnbk1vZGUmLCBjb25zdCBSb290SW5saW5lQm94KiwgQmlkaVJ1biogdHJhaWxp
bmdTcGFjZVJ1biwgZmxvYXQmIGxvZ2ljYWxMZWZ0LCBmbG9hdCYgdG90YWxMb2dpY2FsV2lkdGgs
IGZsb2F0JiBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIGludCBleHBhbnNpb25PcHBvcnR1bml0eUNv
dW50KTsKIC8vIEVORCBNRVRIT0RTIERFRklORUQgSU4gUmVuZGVyQmxvY2tMaW5lTGF5b3V0CiAK
ICAgICB2b2lkIGNvbXB1dGVJbmxpbmVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKExheW91dFVuaXQm
IG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBjb25zdDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlv
dXQuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA2LDcgKzMwNiw3IEBA
IFJvb3RJbmxpbmVCb3gqIFJlbmRlckJsb2NrRmxvdzo6Y29uc3RydWMKICAgICAgICAgICAgIHBh
cmVudEJveC0+YWRkVG9MaW5lKGJveCk7CiAgICAgICAgIH0KIAotICAgICAgICBib29sIHZpc3Vh
bGx5T3JkZXJlZCA9IHItPnJlbmRlcmVyKCkuc3R5bGUoKS5ydGxPcmRlcmluZygpID09IFZpc3Vh
bE9yZGVyOworICAgICAgICBib29sIHZpc3VhbGx5T3JkZXJlZCA9IHItPnJlbmRlcmVyKCkuc3R5
bGUoKS5ydGxPcmRlcmluZygpID09IE9yZGVyOjpWaXN1YWw7CiAgICAgICAgIGJveC0+c2V0Qmlk
aUxldmVsKHItPmxldmVsKCkpOwogCiAgICAgICAgIGlmIChpczxJbmxpbmVUZXh0Qm94PigqYm94
KSkgewpAQCAtMzQyLDQyICszNDIsNDIgQEAgUm9vdElubGluZUJveCogUmVuZGVyQmxvY2tGbG93
Ojpjb25zdHJ1YwogICAgIHJldHVybiBsYXN0Um9vdEJveCgpOwogfQogCi1FVGV4dEFsaWduIFJl
bmRlckJsb2NrRmxvdzo6dGV4dEFsaWdubWVudEZvckxpbmUoYm9vbCBlbmRzV2l0aFNvZnRCcmVh
aykgY29uc3QKK1RleHRBbGlnbk1vZGUgUmVuZGVyQmxvY2tGbG93Ojp0ZXh0QWxpZ25tZW50Rm9y
TGluZShib29sIGVuZHNXaXRoU29mdEJyZWFrKSBjb25zdAogewotICAgIEVUZXh0QWxpZ24gYWxp
Z25tZW50ID0gc3R5bGUoKS50ZXh0QWxpZ24oKTsKKyAgICBUZXh0QWxpZ25Nb2RlIGFsaWdubWVu
dCA9IHN0eWxlKCkudGV4dEFsaWduKCk7CiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKICAgICBUZXh0
SnVzdGlmeSB0ZXh0SnVzdGlmeSA9IHN0eWxlKCkudGV4dEp1c3RpZnkoKTsKLSAgICBpZiAoYWxp
Z25tZW50ID09IEpVU1RJRlkgJiYgdGV4dEp1c3RpZnkgPT0gVGV4dEp1c3RpZnlOb25lKQotICAg
ICAgICByZXR1cm4gc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBMVFIgPyBMRUZUIDogUklHSFQ7Cisg
ICAgaWYgKGFsaWdubWVudCA9PSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5ICYmIHRleHRKdXN0aWZ5
ID09IFRleHRKdXN0aWZ5OjpOb25lKQorICAgICAgICByZXR1cm4gc3R5bGUoKS5kaXJlY3Rpb24o
KSA9PSBMVFIgPyBUZXh0QWxpZ25Nb2RlOjpMZWZ0IDogVGV4dEFsaWduTW9kZTo6UmlnaHQ7CiAj
ZW5kaWYKIAogICAgIGlmIChlbmRzV2l0aFNvZnRCcmVhaykKICAgICAgICAgcmV0dXJuIGFsaWdu
bWVudDsKIAogI2lmICFFTkFCTEUoQ1NTM19URVhUKQotICAgIHJldHVybiAoYWxpZ25tZW50ID09
IEpVU1RJRlkpID8gVEFTVEFSVCA6IGFsaWdubWVudDsKKyAgICByZXR1cm4gKGFsaWdubWVudCA9
PSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5KSA/IFRleHRBbGlnbk1vZGU6OlN0YXJ0IDogYWxpZ25t
ZW50OwogI2Vsc2UKLSAgICBpZiAoYWxpZ25tZW50ICE9IEpVU1RJRlkpCisgICAgaWYgKGFsaWdu
bWVudCAhPSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5KQogICAgICAgICByZXR1cm4gYWxpZ25tZW50
OwogCiAgICAgVGV4dEFsaWduTGFzdCBhbGlnbm1lbnRMYXN0ID0gc3R5bGUoKS50ZXh0QWxpZ25M
YXN0KCk7CiAgICAgc3dpdGNoIChhbGlnbm1lbnRMYXN0KSB7Ci0gICAgY2FzZSBUZXh0QWxpZ25M
YXN0U3RhcnQ6Ci0gICAgICAgIHJldHVybiBUQVNUQVJUOwotICAgIGNhc2UgVGV4dEFsaWduTGFz
dEVuZDoKLSAgICAgICAgcmV0dXJuIFRBRU5EOwotICAgIGNhc2UgVGV4dEFsaWduTGFzdExlZnQ6
Ci0gICAgICAgIHJldHVybiBMRUZUOwotICAgIGNhc2UgVGV4dEFsaWduTGFzdFJpZ2h0OgotICAg
ICAgICByZXR1cm4gUklHSFQ7Ci0gICAgY2FzZSBUZXh0QWxpZ25MYXN0Q2VudGVyOgotICAgICAg
ICByZXR1cm4gQ0VOVEVSOwotICAgIGNhc2UgVGV4dEFsaWduTGFzdEp1c3RpZnk6Ci0gICAgICAg
IHJldHVybiBKVVNUSUZZOwotICAgIGNhc2UgVGV4dEFsaWduTGFzdEF1dG86Ci0gICAgICAgIGlm
ICh0ZXh0SnVzdGlmeSA9PSBUZXh0SnVzdGlmeURpc3RyaWJ1dGUpCi0gICAgICAgICAgICByZXR1
cm4gSlVTVElGWTsKLSAgICAgICAgcmV0dXJuIFRBU1RBUlQ7CisgICAgY2FzZSBUZXh0QWxpZ25M
YXN0OjpTdGFydDoKKyAgICAgICAgcmV0dXJuIFRleHRBbGlnbk1vZGU6OlN0YXJ0OworICAgIGNh
c2UgVGV4dEFsaWduTGFzdDo6RW5kOgorICAgICAgICByZXR1cm4gVGV4dEFsaWduTW9kZTo6RW5k
OworICAgIGNhc2UgVGV4dEFsaWduTGFzdDo6TGVmdDoKKyAgICAgICAgcmV0dXJuIFRleHRBbGln
bk1vZGU6OkxlZnQ7CisgICAgY2FzZSBUZXh0QWxpZ25MYXN0OjpSaWdodDoKKyAgICAgICAgcmV0
dXJuIFRleHRBbGlnbk1vZGU6OlJpZ2h0OworICAgIGNhc2UgVGV4dEFsaWduTGFzdDo6Q2VudGVy
OgorICAgICAgICByZXR1cm4gVGV4dEFsaWduTW9kZTo6Q2VudGVyOworICAgIGNhc2UgVGV4dEFs
aWduTGFzdDo6SnVzdGlmeToKKyAgICAgICAgcmV0dXJuIFRleHRBbGlnbk1vZGU6Okp1c3RpZnk7
CisgICAgY2FzZSBUZXh0QWxpZ25MYXN0OjpBdXRvOgorICAgICAgICBpZiAodGV4dEp1c3RpZnkg
PT0gVGV4dEp1c3RpZnk6OkRpc3RyaWJ1dGUpCisgICAgICAgICAgICByZXR1cm4gVGV4dEFsaWdu
TW9kZTo6SnVzdGlmeTsKKyAgICAgICAgcmV0dXJuIFRleHRBbGlnbk1vZGU6OlN0YXJ0OwogICAg
IH0KICAgICByZXR1cm4gYWxpZ25tZW50OwogI2VuZGlmCkBAIC02MTQsNyArNjE0LDcgQEAgdm9p
ZCBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVFeHBhbnNpb25GbwogICAgIH0KIH0KIAotdm9pZCBS
ZW5kZXJCbG9ja0Zsb3c6OnVwZGF0ZUxvZ2ljYWxXaWR0aEZvckFsaWdubWVudChjb25zdCBFVGV4
dEFsaWduJiB0ZXh0QWxpZ24sIGNvbnN0IFJvb3RJbmxpbmVCb3gqIHJvb3RJbmxpbmVCb3gsIEJp
ZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4sIGZsb2F0JiBsb2dpY2FsTGVmdCwgZmxvYXQmIHRvdGFs
TG9naWNhbFdpZHRoLCBmbG9hdCYgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBpbnQgZXhwYW5zaW9u
T3Bwb3J0dW5pdHlDb3VudCkKK3ZvaWQgUmVuZGVyQmxvY2tGbG93Ojp1cGRhdGVMb2dpY2FsV2lk
dGhGb3JBbGlnbm1lbnQoY29uc3QgVGV4dEFsaWduTW9kZSYgdGV4dEFsaWduLCBjb25zdCBSb290
SW5saW5lQm94KiByb290SW5saW5lQm94LCBCaWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVuLCBmbG9h
dCYgbG9naWNhbExlZnQsIGZsb2F0JiB0b3RhbExvZ2ljYWxXaWR0aCwgZmxvYXQmIGF2YWlsYWJs
ZUxvZ2ljYWxXaWR0aCwgaW50IGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQpCiB7CiAgICAgVGV4
dERpcmVjdGlvbiBkaXJlY3Rpb247CiAgICAgaWYgKHJvb3RJbmxpbmVCb3ggJiYgc3R5bGUoKS51
bmljb2RlQmlkaSgpID09IFBsYWludGV4dCkKQEAgLTYyNywxOSArNjI3LDE5IEBAIHZvaWQgUmVu
ZGVyQmxvY2tGbG93Ojp1cGRhdGVMb2dpY2FsV2lkdGgKICAgICAvLyBvYmplY3RzIGhvcml6b250
YWxseS4gVGhlIHRvdGFsIHdpZHRoIG9mIHRoZSBsaW5lIGNhbiBiZSBpbmNyZWFzZWQgaWYgd2Ug
ZW5kIHVwCiAgICAgLy8ganVzdGlmeWluZyB0ZXh0LgogICAgIHN3aXRjaCAodGV4dEFsaWduKSB7
Ci0gICAgY2FzZSBMRUZUOgotICAgIGNhc2UgV0VCS0lUX0xFRlQ6CisgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpMZWZ0OgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0TGVmdDoKICAgICAg
ICAgdXBkYXRlTG9naWNhbFdpZHRoRm9yTGVmdEFsaWduZWRCbG9jayhzdHlsZSgpLmlzTGVmdFRv
UmlnaHREaXJlY3Rpb24oKSwgdHJhaWxpbmdTcGFjZVJ1biwgbG9naWNhbExlZnQsIHRvdGFsTG9n
aWNhbFdpZHRoLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFJJR0hUOgotICAgIGNhc2UgV0VCS0lUX1JJR0hUOgorICAgIGNhc2UgVGV4dEFsaWduTW9k
ZTo6UmlnaHQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRSaWdodDoKICAgICAgICAg
dXBkYXRlTG9naWNhbFdpZHRoRm9yUmlnaHRBbGlnbmVkQmxvY2soc3R5bGUoKS5pc0xlZnRUb1Jp
Z2h0RGlyZWN0aW9uKCksIHRyYWlsaW5nU3BhY2VSdW4sIGxvZ2ljYWxMZWZ0LCB0b3RhbExvZ2lj
YWxXaWR0aCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBDRU5URVI6Ci0gICAgY2FzZSBXRUJLSVRfQ0VOVEVSOgorICAgIGNhc2UgVGV4dEFsaWduTW9k
ZTo6Q2VudGVyOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0Q2VudGVyOgogICAgICAg
ICB1cGRhdGVMb2dpY2FsV2lkdGhGb3JDZW50ZXJBbGlnbmVkQmxvY2soc3R5bGUoKS5pc0xlZnRU
b1JpZ2h0RGlyZWN0aW9uKCksIHRyYWlsaW5nU3BhY2VSdW4sIGxvZ2ljYWxMZWZ0LCB0b3RhbExv
Z2ljYWxXaWR0aCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBKVVNUSUZZOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKICAgICAgICAg
YWRqdXN0SW5saW5lRGlyZWN0aW9uTGluZUJvdW5kcyhleHBhbnNpb25PcHBvcnR1bml0eUNvdW50
LCBsb2dpY2FsTGVmdCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKICAgICAgICAgaWYgKGV4cGFu
c2lvbk9wcG9ydHVuaXR5Q291bnQpIHsKICAgICAgICAgICAgIGlmICh0cmFpbGluZ1NwYWNlUnVu
KSB7CkBAIC02NDksMTMgKzY0OSwxMyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6dXBkYXRlTG9n
aWNhbFdpZHRoCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBGQUxMVEhS
T1VHSDsKLSAgICBjYXNlIFRBU1RBUlQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpTdGFydDoK
ICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBMVFIpCiAgICAgICAgICAgICB1cGRhdGVMb2dpY2Fs
V2lkdGhGb3JMZWZ0QWxpZ25lZEJsb2NrKHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
LCB0cmFpbGluZ1NwYWNlUnVuLCBsb2dpY2FsTGVmdCwgdG90YWxMb2dpY2FsV2lkdGgsIGF2YWls
YWJsZUxvZ2ljYWxXaWR0aCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHVwZGF0ZUxvZ2lj
YWxXaWR0aEZvclJpZ2h0QWxpZ25lZEJsb2NrKHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpLCB0cmFpbGluZ1NwYWNlUnVuLCBsb2dpY2FsTGVmdCwgdG90YWxMb2dpY2FsV2lkdGgsIGF2
YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVEFFTkQ6Cisg
ICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpFbmQ6CiAgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gTFRS
KQogICAgICAgICAgICAgdXBkYXRlTG9naWNhbFdpZHRoRm9yUmlnaHRBbGlnbmVkQmxvY2soc3R5
bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCksIHRyYWlsaW5nU3BhY2VSdW4sIGxvZ2ljYWxM
ZWZ0LCB0b3RhbExvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKICAgICAgICAg
ZWxzZQpAQCAtNjc1LDcgKzY3NSw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUxvZ2ljYWxJbmxpbmVQ
b3NpdGlvbnMKIAogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Q
b3NpdGlvbnNGb3JMaW5lKFJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsIGNvbnN0IExpbmVJbmZvJiBs
aW5lSW5mbywgQmlkaVJ1biogZmlyc3RSdW4sIEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4sIGJv
b2wgcmVhY2hlZEVuZCwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmIHRleHRCb3hE
YXRhTWFwLCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmIHZlcnRpY2FsUG9zaXRpb25DYWNoZSwgV29y
ZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cykKIHsKLSAgICBFVGV4dEFsaWduIHRleHRB
bGlnbiA9IHRleHRBbGlnbm1lbnRGb3JMaW5lKCFyZWFjaGVkRW5kICYmICFsaW5lQm94LT5lbmRz
V2l0aEJyZWFrKCkpOworICAgIFRleHRBbGlnbk1vZGUgdGV4dEFsaWduID0gdGV4dEFsaWdubWVu
dEZvckxpbmUoIXJlYWNoZWRFbmQgJiYgIWxpbmVCb3gtPmVuZHNXaXRoQnJlYWsoKSk7CiAgICAg
CiAgICAgLy8gQ1NTIDIuMTogIidUZXh0LWluZGVudCcgb25seSBhZmZlY3RzIGEgbGluZSBpZiBp
dCBpcyB0aGUgZmlyc3QgZm9ybWF0dGVkIGxpbmUgb2YgYW4gZWxlbWVudC4gRm9yIGV4YW1wbGUs
IHRoZSBmaXJzdCBsaW5lIG9mIGFuIGFub255bW91cyBibG9jayAKICAgICAvLyBib3ggaXMgb25s
eSBhZmZlY3RlZCBpZiBpdCBpcyB0aGUgZmlyc3QgY2hpbGQgb2YgaXRzIHBhcmVudCBlbGVtZW50
LiIKQEAgLTcwMiw3ICs3MDIsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlubGlu
ZURpcmVjCiAgICAgbGluZUJveC0+cGxhY2VCb3hlc0luSW5saW5lRGlyZWN0aW9uKGxpbmVMb2dp
Y2FsTGVmdCwgbmVlZHNXb3JkU3BhY2luZyk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgRXhwYW5zaW9u
QmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3JGb3JJbmxpbmVUZXh0Qm94KFJlbmRlckJsb2NrRmxv
dyYgYmxvY2ssIElubGluZVRleHRCb3gmIHRleHRCb3gsIEJpZGlSdW4qIHByZXZpb3VzUnVuLCBC
aWRpUnVuKiBuZXh0UnVuLCBFVGV4dEFsaWduIHRleHRBbGlnbiwgYm9vbCBpc0FmdGVyRXhwYW5z
aW9uKQorc3RhdGljIGlubGluZSBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvckZv
cklubGluZVRleHRCb3goUmVuZGVyQmxvY2tGbG93JiBibG9jaywgSW5saW5lVGV4dEJveCYgdGV4
dEJveCwgQmlkaVJ1biogcHJldmlvdXNSdW4sIEJpZGlSdW4qIG5leHRSdW4sIFRleHRBbGlnbk1v
ZGUgdGV4dEFsaWduLCBib29sIGlzQWZ0ZXJFeHBhbnNpb24pCiB7CiAgICAgLy8gVGF0ZWNodXlv
a28gaXMgbW9kZWxlZCBhcyB0aGUgT2JqZWN0IFJlcGxhY2VtZW50IENoYXJhY3RlciAoVStGRkZD
KSwgd2hpY2ggY2FuIG5ldmVyIGhhdmUgZXhwYW5zaW9uIG9wcG9ydHVuaXRpZXMgaW5zaWRlIG5v
ciBpbnRyaW5zaWNhbGx5IGFkamFjZW50IHRvIGl0LgogICAgIGlmICh0ZXh0Qm94LnJlbmRlcmVy
KCkuc3R5bGUoKS50ZXh0Q29tYmluZSgpID09IFRleHRDb21iaW5lOjpIb3Jpem9udGFsKQpAQCAt
NzExLDcgKzcxMSw3IEBAIHN0YXRpYyBpbmxpbmUgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW8K
ICAgICBFeHBhbnNpb25CZWhhdmlvciByZXN1bHQgPSAwOwogICAgIGJvb2wgc2V0TGVhZGluZ0V4
cGFuc2lvbiA9IGZhbHNlOwogICAgIGJvb2wgc2V0VHJhaWxpbmdFeHBhbnNpb24gPSBmYWxzZTsK
LSAgICBpZiAodGV4dEFsaWduID09IEpVU1RJRlkpIHsKKyAgICBpZiAodGV4dEFsaWduID09IFRl
eHRBbGlnbk1vZGU6Okp1c3RpZnkpIHsKICAgICAgICAgLy8gSWYgdGhlIG5leHQgYm94IGlzIHJ1
YnksIGFuZCB3ZSdyZSBqdXN0aWZ5aW5nLCBhbmQgdGhlIGZpcnN0IGJveCBpbiB0aGUgcnVieSBi
YXNlIGhhcyBhIGxlYWRpbmcgZXhwYW5zaW9uLCBhbmQgd2UgYXJlIGEgdGV4dCBib3gsIHRoZW4g
Zm9yY2UgYSB0cmFpbGluZyBleHBhbnNpb24uCiAgICAgICAgIGlmIChuZXh0UnVuICYmIGlzPFJl
bmRlclJ1YnlSdW4+KG5leHRSdW4tPnJlbmRlcmVyKCkpICYmIGRvd25jYXN0PFJlbmRlclJ1YnlS
dW4+KG5leHRSdW4tPnJlbmRlcmVyKCkpLnJ1YnlCYXNlKCkgJiYgbmV4dFJ1bi0+cmVuZGVyZXIo
KS5zdHlsZSgpLmNvbGxhcHNlV2hpdGVTcGFjZSgpKSB7CiAgICAgICAgICAgICBhdXRvJiBydWJ5
QmFzZSA9ICpkb3duY2FzdDxSZW5kZXJSdWJ5UnVuPihuZXh0UnVuLT5yZW5kZXJlcigpKS5ydWJ5
QmFzZSgpOwpAQCAtODI1LDcgKzgyNSw3IEBAIHN0YXRpYyBib29sIGlzTGFzdEluRmxvd1J1bihC
aWRpUnVuJiBydW4KICAgICByZXR1cm4gdHJ1ZTsKIH0KICAgICAKLUJpZGlSdW4qIFJlbmRlckJs
b2NrRmxvdzo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQoUm9vdElu
bGluZUJveCogbGluZUJveCwgY29uc3QgTGluZUluZm8mIGxpbmVJbmZvLCBFVGV4dEFsaWduIHRl
eHRBbGlnbiwgZmxvYXQmIGxvZ2ljYWxMZWZ0LCAKK0JpZGlSdW4qIFJlbmRlckJsb2NrRmxvdzo6
Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQoUm9vdElubGluZUJveCog
bGluZUJveCwgY29uc3QgTGluZUluZm8mIGxpbmVJbmZvLCBUZXh0QWxpZ25Nb2RlIHRleHRBbGln
biwgZmxvYXQmIGxvZ2ljYWxMZWZ0LCAKICAgICBmbG9hdCYgYXZhaWxhYmxlTG9naWNhbFdpZHRo
LCBCaWRpUnVuKiBmaXJzdFJ1biwgQmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1biwgR2x5cGhPdmVy
Zmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmIHRleHRCb3hEYXRhTWFwLCBWZXJ0aWNhbFBvc2l0aW9u
Q2FjaGUmIHZlcnRpY2FsUG9zaXRpb25DYWNoZSwKICAgICBXb3JkTWVhc3VyZW1lbnRzJiB3b3Jk
TWVhc3VyZW1lbnRzKQogewpAQCAtODgyLDcgKzg4Miw3IEBAIEJpZGlSdW4qIFJlbmRlckJsb2Nr
Rmxvdzo6Y29tcHV0ZUlubGluZUQKICAgICAgICAgICAgICAgICBjYW5IYW5nUHVuY3R1YXRpb25B
dEVuZCA9IGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBp
ZiAodGV4dEFsaWduID09IEpVU1RJRlkgJiYgcnVuICE9IHRyYWlsaW5nU3BhY2VSdW4pCisgICAg
ICAgICAgICBpZiAodGV4dEFsaWduID09IFRleHRBbGlnbk1vZGU6Okp1c3RpZnkgJiYgcnVuICE9
IHRyYWlsaW5nU3BhY2VSdW4pCiAgICAgICAgICAgICAgICAgY29tcHV0ZUV4cGFuc2lvbk9wcG9y
dHVuaXRpZXMoKnRoaXMsIHRleHRCb3gsIHByZXZpb3VzUnVuLCBydW4tPm5leHQoKSwgcmVuZGVy
VGV4dC5zdHJpbmdWaWV3KHJ1bi0+bV9zdGFydCwgcnVuLT5tX3N0b3ApLCBydW4tPmJveCgpLT5k
aXJlY3Rpb24oKSk7CiAKICAgICAgICAgICAgIGlmICh1bnNpZ25lZCBsZW5ndGggPSByZW5kZXJU
ZXh0LnRleHQoKS5sZW5ndGgoKSkgewpAQCAtODk3LDcgKzg5Nyw3IEBAIEJpZGlSdW4qIFJlbmRl
ckJsb2NrRmxvdzo6Y29tcHV0ZUlubGluZUQKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IGNhbkhhbmdQdW5jdHVhdGlvbkF0U3RhcnQgPSBmYWxzZTsKICAgICAgICAgICAgIGJvb2wgZW5j
b3VudGVyZWRKdXN0aWZpZWRSdWJ5ID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoaXM8UmVuZGVy
UnVieVJ1bj4ocnVuLT5yZW5kZXJlcigpKSAmJiB0ZXh0QWxpZ24gPT0gSlVTVElGWSAmJiBydW4g
IT0gdHJhaWxpbmdTcGFjZVJ1biAmJiBkb3duY2FzdDxSZW5kZXJSdWJ5UnVuPihydW4tPnJlbmRl
cmVyKCkpLnJ1YnlCYXNlKCkpIHsKKyAgICAgICAgICAgIGlmIChpczxSZW5kZXJSdWJ5UnVuPihy
dW4tPnJlbmRlcmVyKCkpICYmIHRleHRBbGlnbiA9PSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5ICYm
IHJ1biAhPSB0cmFpbGluZ1NwYWNlUnVuICYmIGRvd25jYXN0PFJlbmRlclJ1YnlSdW4+KHJ1bi0+
cmVuZGVyZXIoKSkucnVieUJhc2UoKSkgewogICAgICAgICAgICAgICAgIGF1dG8qIHJ1YnlCYXNl
ID0gZG93bmNhc3Q8UmVuZGVyUnVieVJ1bj4ocnVuLT5yZW5kZXJlcigpKS5ydWJ5QmFzZSgpOwog
ICAgICAgICAgICAgICAgIGlmIChydWJ5QmFzZS0+Zmlyc3RSb290Qm94KCkgJiYgIXJ1YnlCYXNl
LT5maXJzdFJvb3RCb3goKS0+bmV4dFJvb3RCb3goKSAmJiBydW4tPnJlbmRlcmVyKCkuc3R5bGUo
KS5jb2xsYXBzZVdoaXRlU3BhY2UoKSkgewogICAgICAgICAgICAgICAgICAgICBydWJ5QmFzZS0+
c2V0SXNBZnRlckV4cGFuc2lvbihpc0FmdGVyRXhwYW5zaW9uKTsKQEAgLTk0MCw3ICs5NDAsNyBA
QCBCaWRpUnVuKiBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbmxpbmVECiAgICAgfQogCiAgICAg
aWYgKGlzPFJlbmRlclJ1YnlCYXNlPigqdGhpcykgJiYgIWV4cGFuc2lvbk9wcG9ydHVuaXR5Q291
bnQpCi0gICAgICAgIHRleHRBbGlnbiA9IENFTlRFUjsKKyAgICAgICAgdGV4dEFsaWduID0gVGV4
dEFsaWduTW9kZTo6Q2VudGVyOwogCiAgICAgdXBkYXRlTG9naWNhbFdpZHRoRm9yQWxpZ25tZW50
KHRleHRBbGlnbiwgbGluZUJveCwgdHJhaWxpbmdTcGFjZVJ1biwgbG9naWNhbExlZnQsIHRvdGFs
TG9naWNhbFdpZHRoLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIGV4cGFuc2lvbk9wcG9ydHVuaXR5
Q291bnQpOwogCkBAIC0xMzc4LDcgKzEzNzgsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5
b3V0UnVuc0FuZEZsb2F0CiAgICAgICAgICAgICBpZiAobGFzdFJvb3RCb3goKSkKICAgICAgICAg
ICAgICAgICBsYXN0Um9vdEJveCgpLT5zZXRMaW5lQnJlYWtJbmZvKGVuZC5yZW5kZXJlcigpLCBl
bmQub2Zmc2V0KCksIHJlc29sdmVyLnN0YXR1cygpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIFZpc3VhbERpcmVjdGlvbk92ZXJyaWRlIG92ZXJyaWRlID0gKHN0eWxlVG9Vc2UucnRs
T3JkZXJpbmcoKSA9PSBWaXN1YWxPcmRlciA/IChzdHlsZVRvVXNlLmRpcmVjdGlvbigpID09IExU
UiA/IFZpc3VhbExlZnRUb1JpZ2h0T3ZlcnJpZGUgOiBWaXN1YWxSaWdodFRvTGVmdE92ZXJyaWRl
KSA6IE5vVmlzdWFsT3ZlcnJpZGUpOworICAgICAgICAgICAgVmlzdWFsRGlyZWN0aW9uT3ZlcnJp
ZGUgb3ZlcnJpZGUgPSAoc3R5bGVUb1VzZS5ydGxPcmRlcmluZygpID09IE9yZGVyOjpWaXN1YWwg
PyAoc3R5bGVUb1VzZS5kaXJlY3Rpb24oKSA9PSBMVFIgPyBWaXN1YWxMZWZ0VG9SaWdodE92ZXJy
aWRlIDogVmlzdWFsUmlnaHRUb0xlZnRPdmVycmlkZSkgOiBOb1Zpc3VhbE92ZXJyaWRlKTsKIAog
ICAgICAgICAgICAgaWYgKGlzTmV3VUJBUGFyYWdyYXBoICYmIHN0eWxlVG9Vc2UudW5pY29kZUJp
ZGkoKSA9PSBQbGFpbnRleHQgJiYgIXJlc29sdmVyLmNvbnRleHQoKS0+cGFyZW50KCkpIHsKICAg
ICAgICAgICAgICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IHN0eWxlVG9Vc2UuZGlyZWN0
aW9uKCk7CkBAIC0xNzYzLDcgKzE3NjMsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y2hlY2tG
bG9hdEluQ2xlYW5MCiAgICAgICAgIGZsb2F0Qm94T25DbGVhbkxpbmUuaGVpZ2h0KCkgKyBmbG9h
dEJveE9uQ2xlYW5MaW5lLnZlcnRpY2FsTWFyZ2luRXh0ZW50KCkpOwogICAgIAogICAgIC8vIFdl
IGhhdmUgdG8gcmVzZXQgdGhlIGNhcC1oZWlnaHQgYWxpZ25tZW50IGRvbmUgYnkgdGhlIGZpcnN0
LWxldHRlciBmbG9hdHMgd2hlbiBpbml0aWFsLWxldHRlciBpcyBzZXQsIHNvIGp1c3QgYWx3YXlz
IHRyZWF0IGZpcnN0LWxldHRlciBmbG9hdHMgYXMgZGlydHkuCi0gICAgaWYgKG9yaWdpbmFsRmxv
YXRSZWN0LnNpemUoKSA9PSBuZXdTaXplICYmIChmbG9hdEJveE9uQ2xlYW5MaW5lLnN0eWxlKCku
c3R5bGVUeXBlKCkgIT0gRklSU1RfTEVUVEVSIHx8ICFmbG9hdEJveE9uQ2xlYW5MaW5lLnN0eWxl
KCkuaW5pdGlhbExldHRlckRyb3AoKSkpCisgICAgaWYgKG9yaWdpbmFsRmxvYXRSZWN0LnNpemUo
KSA9PSBuZXdTaXplICYmIChmbG9hdEJveE9uQ2xlYW5MaW5lLnN0eWxlKCkuc3R5bGVUeXBlKCkg
IT0gUHNldWRvSWQ6OkZpcnN0TGV0dGVyIHx8ICFmbG9hdEJveE9uQ2xlYW5MaW5lLnN0eWxlKCku
aW5pdGlhbExldHRlckRyb3AoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIExheW91dFVuaXQg
ZmxvYXRUb3AgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gb3JpZ2luYWxGbG9hdFJlY3Qu
eSgpIDogb3JpZ2luYWxGbG9hdFJlY3QueCgpOwpAQCAtMjA4OSw3ICsyMDg5LDcgQEAgdm9pZCBS
ZW5kZXJCbG9ja0Zsb3c6OmFkZE92ZXJmbG93RnJvbUlubAogCiB2b2lkIFJlbmRlckJsb2NrRmxv
dzo6ZGVsZXRlRWxsaXBzaXNMaW5lQm94ZXMoKQogewotICAgIEVUZXh0QWxpZ24gdGV4dEFsaWdu
ID0gc3R5bGUoKS50ZXh0QWxpZ24oKTsKKyAgICBUZXh0QWxpZ25Nb2RlIHRleHRBbGlnbiA9IHN0
eWxlKCkudGV4dEFsaWduKCk7CiAgICAgYm9vbCBsdHIgPSBzdHlsZSgpLmlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24oKTsKICAgICBJbmRlbnRUZXh0T3JOb3Qgc2hvdWxkSW5kZW50VGV4dCA9IEluZGVu
dFRleHQ7CiAgICAgZm9yIChSb290SW5saW5lQm94KiBjdXJyID0gZmlyc3RSb290Qm94KCk7IGN1
cnI7IGN1cnIgPSBjdXJyLT5uZXh0Um9vdEJveCgpKSB7CkBAIC0yMTI2LDcgKzIxMjYsNyBAQCB2
b2lkIFJlbmRlckJsb2NrRmxvdzo6Y2hlY2tMaW5lc0ZvclRleHRPCiAgICAgLy8gY2hlY2sgdGhl
IGxlZnQgZWRnZSBvZiB0aGUgbGluZSBib3ggdG8gc2VlIGlmIGl0IGlzIGxlc3MKICAgICAvLyBJ
bmNsdWRlIHRoZSBzY3JvbGxiYXIgZm9yIG92ZXJmbG93IGJsb2Nrcywgd2hpY2ggbWVhbnMgd2Ug
d2FudCB0byB1c2UgImNvbnRlbnRXaWR0aCgpIgogICAgIGJvb2wgbHRyID0gc3R5bGUoKS5pc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCk7Ci0gICAgRVRleHRBbGlnbiB0ZXh0QWxpZ24gPSBzdHlsZSgp
LnRleHRBbGlnbigpOworICAgIFRleHRBbGlnbk1vZGUgdGV4dEFsaWduID0gc3R5bGUoKS50ZXh0
QWxpZ24oKTsKICAgICBib29sIGZpcnN0TGluZSA9IHRydWU7CiAgICAgZm9yIChSb290SW5saW5l
Qm94KiBjdXJyID0gZmlyc3RSb290Qm94KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0Um9vdEJv
eCgpKSB7CiAgICAgICAgIEluZGVudFRleHRPck5vdCBzaG91bGRJbmRlbnRUZXh0ID0gZmlyc3RM
aW5lID8gSW5kZW50VGV4dCA6IERvTm90SW5kZW50VGV4dDsKQEAgLTIyMTQsMTggKzIyMTQsMTgg
QEAgYm9vbCBSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9uTmV3RmxvYXRPbgogCiBMYXlvdXRVbml0
IFJlbmRlckJsb2NrRmxvdzo6c3RhcnRBbGlnbmVkT2Zmc2V0Rm9yTGluZShMYXlvdXRVbml0IHBv
c2l0aW9uLCBJbmRlbnRUZXh0T3JOb3Qgc2hvdWxkSW5kZW50VGV4dCkKIHsKLSAgICBFVGV4dEFs
aWduIHRleHRBbGlnbiA9IHN0eWxlKCkudGV4dEFsaWduKCk7CisgICAgVGV4dEFsaWduTW9kZSB0
ZXh0QWxpZ24gPSBzdHlsZSgpLnRleHRBbGlnbigpOwogICAgIGJvb2wgc2hvdWxkQXBwbHlJbmRl
bnRUZXh0ID0gZmFsc2U7CiAgICAgc3dpdGNoICh0ZXh0QWxpZ24pIHsKLSAgICBjYXNlIExFRlQ6
Ci0gICAgY2FzZSBXRUJLSVRfTEVGVDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6Cisg
ICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgogICAgICAgICBzaG91bGRBcHBseUlu
ZGVudFRleHQgPSBzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBSSUdIVDoKLSAgICBjYXNlIFdFQktJVF9SSUdIVDoKKyAgICBjYXNlIFRl
eHRBbGlnbk1vZGU6OlJpZ2h0OgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQ6
CiAgICAgICAgIHNob3VsZEFwcGx5SW5kZW50VGV4dCA9ICFzdHlsZSgpLmlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24oKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUQVNUQVJUOgorICAgIGNhc2Ug
VGV4dEFsaWduTW9kZTo6U3RhcnQ6CiAgICAgICAgIHNob3VsZEFwcGx5SW5kZW50VGV4dCA9IHRy
dWU7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC0yMjM1LDcgKzIyMzUsNyBAQCBM
YXlvdXRVbml0IFJlbmRlckJsb2NrRmxvdzo6c3RhcnRBbGlnbmVkCiAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDUyMgogICAgIC8vIFRoaXMgcXVpcmsg
aXMgZm9yIGxlZ2FjeSBjb250ZW50IHRoYXQgZG9lc24ndCB3b3JrIHByb3Blcmx5IHdpdGggdGhl
IGNlbnRlciBwb3NpdGlvbmluZyBzY2hlbWUKICAgICAvLyBiZWluZyBob25vcmVkIChlLmcuLCBl
cHVicykuCi0gICAgaWYgKHNob3VsZEFwcGx5SW5kZW50VGV4dCB8fCBzZXR0aW5ncygpLnVzZUxl
Z2FjeVRleHRBbGlnblBvc2l0aW9uZWRFbGVtZW50QmVoYXZpb3IoKSkgLy8gRklYTUU6IEhhbmRs
ZSBUQUVORCBoZXJlCisgICAgaWYgKHNob3VsZEFwcGx5SW5kZW50VGV4dCB8fCBzZXR0aW5ncygp
LnVzZUxlZ2FjeVRleHRBbGlnblBvc2l0aW9uZWRFbGVtZW50QmVoYXZpb3IoKSkgLy8gRklYTUU6
IEhhbmRsZSBUZXh0QWxpZ25Nb2RlOjpFbmQgaGVyZQogICAgICAgICByZXR1cm4gc3RhcnRPZmZz
ZXRGb3JMaW5lKHBvc2l0aW9uLCBzaG91bGRJbmRlbnRUZXh0KTsKIAogICAgIC8vIHVwZGF0ZUxv
Z2ljYWxXaWR0aEZvckFsaWdubWVudCgpIGhhbmRsZXMgdGhlIGRpcmVjdGlvbiBvZiB0aGUgYmxv
Y2sgc28gbm8gbmVlZCB0byBjb25zaWRlciBpdCBoZXJlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0MCwxMyArOTQwLDEz
IEBAIHZvaWQgUmVuZGVyQm94OjpwYW5TY3JvbGwoY29uc3QgSW50UG9pbnQKIAogYm9vbCBSZW5k
ZXJCb3g6Omhhc1ZlcnRpY2FsU2Nyb2xsYmFyV2l0aEF1dG9CZWhhdmlvcigpIGNvbnN0CiB7Ci0g
ICAgYm9vbCBvdmVyZmxvd1Njcm9sbEFjdHNMaWtlQXV0byA9IHN0eWxlKCkub3ZlcmZsb3dZKCkg
PT0gT3ZlcmZsb3c6OlNjcm9sbCAmJiAhc3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShTQ1JPTExCQVIp
ICYmIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLnVzZXNPdmVybGF5U2Nyb2xsYmFycygpOworICAg
IGJvb2wgb3ZlcmZsb3dTY3JvbGxBY3RzTGlrZUF1dG8gPSBzdHlsZSgpLm92ZXJmbG93WSgpID09
IE92ZXJmbG93OjpTY3JvbGwgJiYgIXN0eWxlKCkuaGFzUHNldWRvU3R5bGUoUHNldWRvSWQ6OlNj
cm9sbGJhcikgJiYgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkudXNlc092ZXJsYXlTY3JvbGxiYXJz
KCk7CiAgICAgcmV0dXJuIGhhc092ZXJmbG93Q2xpcCgpICYmIChzdHlsZSgpLm92ZXJmbG93WSgp
ID09IE92ZXJmbG93OjpBdXRvIHx8IHN0eWxlKCkub3ZlcmZsb3dZKCkgPT0gT3ZlcmZsb3c6Ok92
ZXJsYXkgfHwgb3ZlcmZsb3dTY3JvbGxBY3RzTGlrZUF1dG8pOwogfQogCiBib29sIFJlbmRlckJv
eDo6aGFzSG9yaXpvbnRhbFNjcm9sbGJhcldpdGhBdXRvQmVoYXZpb3IoKSBjb25zdAogewotICAg
IGJvb2wgb3ZlcmZsb3dTY3JvbGxBY3RzTGlrZUF1dG8gPSBzdHlsZSgpLm92ZXJmbG93WCgpID09
IE92ZXJmbG93OjpTY3JvbGwgJiYgIXN0eWxlKCkuaGFzUHNldWRvU3R5bGUoU0NST0xMQkFSKSAm
JiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS51c2VzT3ZlcmxheVNjcm9sbGJhcnMoKTsKKyAgICBi
b29sIG92ZXJmbG93U2Nyb2xsQWN0c0xpa2VBdXRvID0gc3R5bGUoKS5vdmVyZmxvd1goKSA9PSBP
dmVyZmxvdzo6U2Nyb2xsICYmICFzdHlsZSgpLmhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkOjpTY3Jv
bGxiYXIpICYmIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLnVzZXNPdmVybGF5U2Nyb2xsYmFycygp
OwogICAgIHJldHVybiBoYXNPdmVyZmxvd0NsaXAoKSAmJiAoc3R5bGUoKS5vdmVyZmxvd1goKSA9
PSBPdmVyZmxvdzo6QXV0byB8fCBzdHlsZSgpLm92ZXJmbG93WCgpID09IE92ZXJmbG93OjpPdmVy
bGF5IHx8IG92ZXJmbG93U2Nyb2xsQWN0c0xpa2VBdXRvKTsKIH0KIApAQCAtMTM5OCw3ICsxMzk4
LDcgQEAgc3RhdGljIGJvb2wgaXNDYW5kaWRhdGVGb3JPcGFxdWVuZXNzVGVzdAogICAgIGNvbnN0
IFJlbmRlclN0eWxlJiBjaGlsZFN0eWxlID0gY2hpbGRCb3guc3R5bGUoKTsKICAgICBpZiAoY2hp
bGRTdHlsZS5wb3NpdGlvbigpICE9IFBvc2l0aW9uVHlwZTo6U3RhdGljICYmIGNoaWxkQm94LmNv
bnRhaW5pbmdCbG9jaygpICE9IGNoaWxkQm94LnBhcmVudCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaWYgKGNoaWxkU3R5bGUudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYg
KGNoaWxkU3R5bGUudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpZiAoY2hpbGRTdHlsZS5zaGFwZU91dHNpZGUoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQ5Miw3ICsxNDkyLDcgQEAgYm9vbCBSZW5kZXJCb3g6OmJh
Y2tncm91bmRIYXNPcGFxdWVUb3BMYQogCiB2b2lkIFJlbmRlckJveDo6cGFpbnRNYXNrKFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7Ci0gICAg
aWYgKCFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KCp0aGlzKSB8fCBzdHlsZSgpLnZp
c2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlTWFz
ayB8fCBwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAoIXBh
aW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QoKnRoaXMpIHx8IHN0eWxlKCkudmlzaWJpbGl0
eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgfHwgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhh
c2VNYXNrIHx8IHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBMYXlvdXRSZWN0IHBhaW50UmVjdCA9IExheW91dFJlY3QocGFpbnRP
ZmZzZXQsIHNpemUoKSk7CkBAIC0xNTAyLDcgKzE1MDIsNyBAQCB2b2lkIFJlbmRlckJveDo6cGFp
bnRNYXNrKFBhaW50SW5mbyYgcGFpCiAKIHZvaWQgUmVuZGVyQm94OjpwYWludENsaXBwaW5nTWFz
ayhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQog
ewotICAgIGlmICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdCgqdGhpcykgfHwgc3R5
bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQ
aGFzZUNsaXBwaW5nTWFzayB8fCBwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQo
KSkKKyAgICBpZiAoIXBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QoKnRoaXMpIHx8IHN0
eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgfHwgcGFpbnRJbmZvLnBo
YXNlICE9IFBhaW50UGhhc2VDbGlwcGluZ01hc2sgfHwgcGFpbnRJbmZvLmNvbnRleHQoKS5wYWlu
dGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIExheW91dFJlY3QgcGFpbnRS
ZWN0ID0gTGF5b3V0UmVjdChwYWludE9mZnNldCwgc2l6ZSgpKTsKQEAgLTIwNjUsNyArMjA2NSw3
IEBAIHZvaWQgUmVuZGVyQm94OjpkaXJ0eUxpbmVCb3hlcyhib29sIGZ1bGwKIHZvaWQgUmVuZGVy
Qm94Ojpwb3NpdGlvbkxpbmVCb3goSW5saW5lRWxlbWVudEJveCYgYm94KQogewogICAgIGlmIChp
c091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewotICAgICAgICAvLyBDYWNoZSB0aGUgeCBwb3NpdGlv
biBvbmx5IGlmIHdlIHdlcmUgYW4gSU5MSU5FIHR5cGUgb3JpZ2luYWxseS4KKyAgICAgICAgLy8g
Q2FjaGUgdGhlIHggcG9zaXRpb24gb25seSBpZiB3ZSB3ZXJlIGFuIERpc3BsYXlUeXBlOjpJbmxp
bmUgdHlwZSBvcmlnaW5hbGx5LgogICAgICAgICBib29sIHdhc0lubGluZSA9IHN0eWxlKCkuaXNP
cmlnaW5hbERpc3BsYXlJbmxpbmVUeXBlKCk7CiAgICAgICAgIGlmICh3YXNJbmxpbmUpIHsKICAg
ICAgICAgICAgIC8vIFRoZSB2YWx1ZSBpcyBjYWNoZWQgaW4gdGhlIHhQb3Mgb2YgdGhlIGJveC4g
IFdlIG9ubHkgbmVlZCB0aGlzIHZhbHVlIGlmCkBAIC0yMTA2LDcgKzIxMDYsNyBAQCB2b2lkIFJl
bmRlckJveDo6ZGVsZXRlTGluZUJveFdyYXBwZXIoKQogCiBMYXlvdXRSZWN0IFJlbmRlckJveDo6
Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lcikgY29uc3QKIHsKLSAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5
KCkgIT0gVklTSUJMRSAmJiAhZW5jbG9zaW5nTGF5ZXIoKS0+aGFzVmlzaWJsZUNvbnRlbnQoKSkK
KyAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAh
ZW5jbG9zaW5nTGF5ZXIoKS0+aGFzVmlzaWJsZUNvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIExh
eW91dFJlY3QoKTsKICAgICBMYXlvdXRSZWN0IHIgPSB2aXN1YWxPdmVyZmxvd1JlY3QoKTsKICAg
ICAvLyBGSVhNRTogbGF5b3V0RGVsdGEgbmVlZHMgdG8gYmUgYXBwbGllZCBpbiBwYXJ0cyBiZWZv
cmUvYWZ0ZXIgdHJhbnNmb3JtcyBhbmQKQEAgLTIzMTIsNyArMjMxMiw3IEBAIHZvaWQgUmVuZGVy
Qm94Ojpjb21wdXRlTG9naWNhbFdpZHRoSW5GcmEKICAgICAvLyB3aWR0aC4gIFVzZSB0aGUgd2lk
dGggZnJvbSB0aGUgc3R5bGUgY29udGV4dC4KICAgICAvLyBGSVhNRTogQWNjb3VudCBmb3IgYmxv
Y2stZmxvdyBpbiBmbGV4aWJsZSBib3hlcy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDY0MTgKLSAgICBpZiAoaGFzT3ZlcnJpZGVDb250ZW50TG9naWNh
bFdpZHRoKCkgJiYgKGlzUnVieVJ1bigpIHx8IHN0eWxlKCkuYm9yZGVyRml0KCkgPT0gQm9yZGVy
Rml0TGluZXMgfHwgKHBhcmVudCgpLT5pc0ZsZXhpYmxlQm94SW5jbHVkaW5nRGVwcmVjYXRlZCgp
KSkpIHsKKyAgICBpZiAoaGFzT3ZlcnJpZGVDb250ZW50TG9naWNhbFdpZHRoKCkgJiYgKGlzUnVi
eVJ1bigpIHx8IHN0eWxlKCkuYm9yZGVyRml0KCkgPT0gQm9yZGVyRml0OjpMaW5lcyB8fCAocGFy
ZW50KCktPmlzRmxleGlibGVCb3hJbmNsdWRpbmdEZXByZWNhdGVkKCkpKSkgewogICAgICAgICBj
b21wdXRlZFZhbHVlcy5tX2V4dGVudCA9IG92ZXJyaWRlQ29udGVudExvZ2ljYWxXaWR0aCgpICsg
Ym9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtMjU4MCw3ICsyNTgwLDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVJbmxpbmVEaXJlY3Rp
b25NYQogCiAgICAgLy8gQ2FzZSBPbmU6IFRoZSBvYmplY3QgaXMgYmVpbmcgY2VudGVyZWQgaW4g
dGhlIGNvbnRhaW5pbmcgYmxvY2sncyBhdmFpbGFibGUgbG9naWNhbCB3aWR0aC4KICAgICBpZiAo
KG1hcmdpblN0YXJ0TGVuZ3RoLmlzQXV0bygpICYmIG1hcmdpbkVuZExlbmd0aC5pc0F1dG8oKSAm
JiBjaGlsZFdpZHRoIDwgY29udGFpbmVyV2lkdGgpCi0gICAgICAgIHx8ICghbWFyZ2luU3RhcnRM
ZW5ndGguaXNBdXRvKCkgJiYgIW1hcmdpbkVuZExlbmd0aC5pc0F1dG8oKSAmJiBjb250YWluaW5n
QmxvY2suc3R5bGUoKS50ZXh0QWxpZ24oKSA9PSBXRUJLSVRfQ0VOVEVSKSkgeworICAgICAgICB8
fCAoIW1hcmdpblN0YXJ0TGVuZ3RoLmlzQXV0bygpICYmICFtYXJnaW5FbmRMZW5ndGguaXNBdXRv
KCkgJiYgY29udGFpbmluZ0Jsb2NrLnN0eWxlKCkudGV4dEFsaWduKCkgPT0gVGV4dEFsaWduTW9k
ZTo6V2ViS2l0Q2VudGVyKSkgewogICAgICAgICAvLyBPdGhlciBicm93c2VycyBjZW50ZXIgdGhl
IG1hcmdpbiBib3ggZm9yIGFsaWduPWNlbnRlciBlbGVtZW50cyBzbyB3ZSBtYXRjaCB0aGVtIGhl
cmUuCiAgICAgICAgIExheW91dFVuaXQgbWFyZ2luU3RhcnRXaWR0aCA9IG1pbmltdW1WYWx1ZUZv
ckxlbmd0aChtYXJnaW5TdGFydExlbmd0aCwgY29udGFpbmVyV2lkdGgpOwogICAgICAgICBMYXlv
dXRVbml0IG1hcmdpbkVuZFdpZHRoID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1hcmdpbkVuZExl
bmd0aCwgY29udGFpbmVyV2lkdGgpOwpAQCAtMjU5OCw4ICsyNTk4LDggQEAgdm9pZCBSZW5kZXJC
b3g6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25NYQogICAgIH0gCiAgICAgCiAgICAgLy8gQ2FzZSBU
aHJlZTogVGhlIG9iamVjdCBpcyBiZWluZyBwdXNoZWQgdG8gdGhlIGVuZCBvZiB0aGUgY29udGFp
bmluZyBibG9jaydzIGF2YWlsYWJsZSBsb2dpY2FsIHdpZHRoLgotICAgIGJvb2wgcHVzaFRvRW5k
RnJvbVRleHRBbGlnbiA9ICFtYXJnaW5FbmRMZW5ndGguaXNBdXRvKCkgJiYgKCghY29udGFpbmlu
Z0Jsb2NrU3R5bGUuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpICYmIGNvbnRhaW5pbmdCbG9ja1N0
eWxlLnRleHRBbGlnbigpID09IFdFQktJVF9MRUZUKQotICAgICAgICB8fCAoY29udGFpbmluZ0Js
b2NrU3R5bGUuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpICYmIGNvbnRhaW5pbmdCbG9ja1N0eWxl
LnRleHRBbGlnbigpID09IFdFQktJVF9SSUdIVCkpOworICAgIGJvb2wgcHVzaFRvRW5kRnJvbVRl
eHRBbGlnbiA9ICFtYXJnaW5FbmRMZW5ndGguaXNBdXRvKCkgJiYgKCghY29udGFpbmluZ0Jsb2Nr
U3R5bGUuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpICYmIGNvbnRhaW5pbmdCbG9ja1N0eWxlLnRl
eHRBbGlnbigpID09IFRleHRBbGlnbk1vZGU6OldlYktpdExlZnQpCisgICAgICAgIHx8IChjb250
YWluaW5nQmxvY2tTdHlsZS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgJiYgY29udGFpbmluZ0Js
b2NrU3R5bGUudGV4dEFsaWduKCkgPT0gVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQpKTsKICAg
ICBpZiAoKG1hcmdpblN0YXJ0TGVuZ3RoLmlzQXV0bygpIHx8IHB1c2hUb0VuZEZyb21UZXh0QWxp
Z24pICYmIGNoaWxkV2lkdGggPCBjb250YWluZXJXaWR0aCkgewogICAgICAgICBtYXJnaW5FbmQg
PSB2YWx1ZUZvckxlbmd0aChtYXJnaW5FbmRMZW5ndGgsIGNvbnRhaW5lcldpZHRoKTsKICAgICAg
ICAgbWFyZ2luU3RhcnQgPSBjb250YWluZXJXaWR0aCAtIGNoaWxkV2lkdGggLSBtYXJnaW5FbmQ7
CkBAIC0yODU3LDcgKzI4NTcsNyBAQCBib29sIFJlbmRlckJveDo6c2tpcENvbnRhaW5pbmdCbG9j
a0ZvclBlCiAgICAgLy8gb2JqZWN0cywgc3VjaCBhcyB0YWJsZS1jZWxscyBhbmQgZmxleGJveGVz
LCB3aWxsIGJlIHRyZWF0ZWQgYXMgaWYgdGhleSB3ZXJlCiAgICAgLy8gbm9uLWFub255bW91cy4K
ICAgICBpZiAoY29udGFpbmluZ0Jsb2NrLmlzQW5vbnltb3VzKCkpCi0gICAgICAgIHJldHVybiBj
b250YWluaW5nQmxvY2suc3R5bGUoKS5kaXNwbGF5KCkgPT0gQkxPQ0sgfHwgY29udGFpbmluZ0Js
b2NrLnN0eWxlKCkuZGlzcGxheSgpID09IElOTElORV9CTE9DSzsKKyAgICAgICAgcmV0dXJuIGNv
bnRhaW5pbmdCbG9jay5zdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6QmxvY2sgfHwg
Y29udGFpbmluZ0Jsb2NrLnN0eWxlKCkuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpJbmxpbmVC
bG9jazsKICAgICAKICAgICAvLyBGb3IgcXVpcmtzIG1vZGUsIHdlIHNraXAgbW9zdCBhdXRvLWhl
aWdodCBjb250YWluaW5nIGJsb2NrcyB3aGVuIGNvbXB1dGluZwogICAgIC8vIHBlcmNlbnRhZ2Vz
LgpAQCAtNDM4Niw3ICs0Mzg2LDcgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlckJveDo6cG9zaXRp
b25Gb3JQbwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCghcmVuZGVyZXIuZmlyc3RDaGlsZCgp
ICYmICFyZW5kZXJlci5pc0lubGluZSgpICYmICFpczxSZW5kZXJCbG9ja0Zsb3c+KHJlbmRlcmVy
KSkKLSAgICAgICAgICAgIHx8IHJlbmRlcmVyLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lC
TEUpCisgICAgICAgICAgICB8fCByZW5kZXJlci5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNp
YmlsaXR5OjpWaXNpYmxlKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgTGF5b3V0
VW5pdCB0b3AgPSByZW5kZXJlci5ib3JkZXJUb3AoKSArIHJlbmRlcmVyLnBhZGRpbmdUb3AoKSAr
IChpczxSZW5kZXJUYWJsZVJvdz4oKnRoaXMpID8gTGF5b3V0VW5pdCgpIDogcmVuZGVyZXIueSgp
KTsKQEAgLTQ2MzQsNyArNDYzNCw3IEBAIGJvb2wgUmVuZGVyQm94Ojppc1Vuc3BsaXR0YWJsZUZv
clBhZ2luYXQKICAgICByZXR1cm4gaXNSZXBsYWNlZCgpCiAgICAgICAgIHx8IGhhc1Vuc3BsaXR0
YWJsZVNjcm9sbGluZ092ZXJmbG93KCkKICAgICAgICAgfHwgKHBhcmVudCgpICYmIGlzV3JpdGlu
Z01vZGVSb290KCkpCi0gICAgICAgIHx8IChpc0Zsb2F0aW5nKCkgJiYgc3R5bGUoKS5zdHlsZVR5
cGUoKSA9PSBGSVJTVF9MRVRURVIgJiYgc3R5bGUoKS5pbml0aWFsTGV0dGVyRHJvcCgpID4gMCk7
CisgICAgICAgIHx8IChpc0Zsb2F0aW5nKCkgJiYgc3R5bGUoKS5zdHlsZVR5cGUoKSA9PSBQc2V1
ZG9JZDo6Rmlyc3RMZXR0ZXIgJiYgc3R5bGUoKS5pbml0aWFsTGV0dGVyRHJvcCgpID4gMCk7CiB9
CiAKIExheW91dFVuaXQgUmVuZGVyQm94OjpsaW5lSGVpZ2h0KGJvb2wgLypmaXJzdExpbmUqLywg
TGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIC8qbGluZVBvc2l0
aW9uTW9kZSovKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNTgwLDIzICsyNTgwLDIzIEBAIExheW91dFJlY3QgUmVuZGVyQm94TW9kZWxPYmplY3Q6Omxv
Y2FsQ2EKICAgICBDYXJldEFsaWdubWVudCBhbGlnbm1lbnQgPSBhbGlnbkxlZnQ7CiAKICAgICBz
d2l0Y2ggKGN1cnJlbnRTdHlsZS50ZXh0QWxpZ24oKSkgewotICAgIGNhc2UgTEVGVDoKLSAgICBj
YXNlIFdFQktJVF9MRUZUOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKKyAgICBjYXNl
IFRleHRBbGlnbk1vZGU6OldlYktpdExlZnQ6CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ0VO
VEVSOgotICAgIGNhc2UgV0VCS0lUX0NFTlRFUjoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNl
bnRlcjoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoKICAgICAgICAgYWxp
Z25tZW50ID0gYWxpZ25DZW50ZXI7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUklHSFQ6Ci0g
ICAgY2FzZSBXRUJLSVRfUklHSFQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpSaWdodDoKKyAg
ICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0OgogICAgICAgICBhbGlnbm1lbnQgPSBh
bGlnblJpZ2h0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEpVU1RJRlk6Ci0gICAgY2FzZSBU
QVNUQVJUOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKKyAgICBjYXNlIFRleHRB
bGlnbk1vZGU6OlN0YXJ0OgogICAgICAgICBpZiAoIWN1cnJlbnRTdHlsZS5pc0xlZnRUb1JpZ2h0
RGlyZWN0aW9uKCkpCiAgICAgICAgICAgICBhbGlnbm1lbnQgPSBhbGlnblJpZ2h0OwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFRBRU5EOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6RW5kOgog
ICAgICAgICBpZiAoY3VycmVudFN0eWxlLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKICAgICAg
ICAgICAgIGFsaWdubWVudCA9IGFsaWduUmlnaHQ7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgJKHJldmlz
aW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzEsNyArMjcxLDcgQEAgcHJvdGVjdGVkOgogICAg
IERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGVGb3JJbWFnZURyYXcoY29uc3QgSW1hZ2UmLCBjb25z
dCBQYWludEluZm8mKSBjb25zdDsKIAogcHVibGljOgotICAgIC8vIEZvciBSZW5kZXJCbG9ja3Mg
YW5kIFJlbmRlcklubGluZXMgd2l0aCBtX3N0eWxlLT5zdHlsZVR5cGUoKSA9PSBGSVJTVF9MRVRU
RVIsIHRoaXMgdHJhY2tzIHRoZWlyIHJlbWFpbmluZyB0ZXh0IGZyYWdtZW50cworICAgIC8vIEZv
ciBSZW5kZXJCbG9ja3MgYW5kIFJlbmRlcklubGluZXMgd2l0aCBtX3N0eWxlLT5zdHlsZVR5cGUo
KSA9PSBQc2V1ZG9JZDo6Rmlyc3RMZXR0ZXIsIHRoaXMgdHJhY2tzIHRoZWlyIHJlbWFpbmluZyB0
ZXh0IGZyYWdtZW50cwogICAgIFJlbmRlclRleHRGcmFnbWVudCogZmlyc3RMZXR0ZXJSZW1haW5p
bmdUZXh0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRGaXJzdExldHRlclJlbWFpbmluZ1RleHQoUmVu
ZGVyVGV4dEZyYWdtZW50Jik7CiAgICAgdm9pZCBjbGVhckZpcnN0TGV0dGVyUmVtYWluaW5nVGV4
dCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAko
cmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsMTQgKzE0MCwxNCBAQCBzdGF0aWMgc3RkOjpv
cHRpb25hbDxDb3VudGVyUGxhbj4gcGxhbkNvCiAgICAgYXV0byYgc3R5bGUgPSByZW5kZXJlci5z
dHlsZSgpOwogCiAgICAgc3dpdGNoIChzdHlsZS5zdHlsZVR5cGUoKSkgewotICAgIGNhc2UgTk9Q
U0VVRE86CisgICAgY2FzZSBQc2V1ZG9JZDo6Tm9uZToKICAgICAgICAgLy8gU29tZXRpbWVzIGVs
ZW1lbnRzIGhhdmUgbW9yZSB0aGVuIG9uZSByZW5kZXJlci4gT25seSB0aGUgZmlyc3Qgb25lIGdl
dHMgdGhlIGNvdW50ZXIKICAgICAgICAgLy8gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvY291
bnRlci1jcmFzaC5odG1sCiAgICAgICAgIGlmIChnZW5lcmF0aW5nRWxlbWVudC0+cmVuZGVyZXIo
KSAhPSAmcmVuZGVyZXIpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEJFRk9SRToKLSAgICBjYXNlIEFGVEVSOgorICAgIGNhc2UgUHNl
dWRvSWQ6OkJlZm9yZToKKyAgICBjYXNlIFBzZXVkb0lkOjpBZnRlcjoKICAgICAgICAgYnJlYWs7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgLy8gQ291bnRlcnMg
YXJlIGZvcmJpZGRlbiBmcm9tIGFsbCBvdGhlciBwc2V1ZG8gZWxlbWVudHMuCkBAIC0zODQsNyAr
Mzg0LDcgQEAgU3RyaW5nIFJlbmRlckNvdW50ZXI6Om9yaWdpbmFsVGV4dCgpIGNvbgogICAgICAg
ICAgICAgaWYgKCFiZWZvcmVBZnRlckNvbnRhaW5lci0+aXNBbm9ueW1vdXMoKSAmJiAhYmVmb3Jl
QWZ0ZXJDb250YWluZXItPmlzUHNldWRvRWxlbWVudCgpKQogICAgICAgICAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsgLy8gUmVuZGVyQ291bnRlcnMgYXJlIHJlc3RyaWN0ZWQgdG8gYmVmb3JlIGFu
ZCBhZnRlciBwc2V1ZG8gZWxlbWVudHMKICAgICAgICAgICAgIFBzZXVkb0lkIGNvbnRhaW5lclN0
eWxlID0gYmVmb3JlQWZ0ZXJDb250YWluZXItPnN0eWxlKCkuc3R5bGVUeXBlKCk7Ci0gICAgICAg
ICAgICBpZiAoKGNvbnRhaW5lclN0eWxlID09IEJFRk9SRSkgfHwgKGNvbnRhaW5lclN0eWxlID09
IEFGVEVSKSkKKyAgICAgICAgICAgIGlmICgoY29udGFpbmVyU3R5bGUgPT0gUHNldWRvSWQ6OkJl
Zm9yZSkgfHwgKGNvbnRhaW5lclN0eWxlID09IFBzZXVkb0lkOjpBZnRlcikpCiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBiZWZvcmVBZnRlckNvbnRhaW5lciA9IGJlZm9yZUFm
dGVyQ29udGFpbmVyLT5wYXJlbnQoKTsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAJ
KHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXBy
ZWNhdGVkRmxleGlibGVCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNyArMTQ3LDcgQEAg
c3RhdGljIExheW91dFVuaXQgbWFyZ2luV2lkdGhGb3JDaGlsZChSZQogc3RhdGljIGJvb2wgY2hp
bGREb2VzTm90QWZmZWN0V2lkdGhPckZsZXhpbmcoUmVuZGVyT2JqZWN0KiBjaGlsZCkKIHsKICAg
ICAvLyBQb3NpdGlvbmVkIGNoaWxkcmVuIGFuZCBjb2xsYXBzZWQgY2hpbGRyZW4gZG9uJ3QgYWZm
ZWN0IHRoZSBtaW4vbWF4IHdpZHRoLgotICAgIHJldHVybiBjaGlsZC0+aXNPdXRPZkZsb3dQb3Np
dGlvbmVkKCkgfHwgY2hpbGQtPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IENPTExBUFNFOworICAg
IHJldHVybiBjaGlsZC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgfHwgY2hpbGQtPnN0eWxlKCku
dmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OkNvbGxhcHNlOwogfQogCiBzdGF0aWMgTGF5b3V0
VW5pdCBjb250ZW50V2lkdGhGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKQpAQCAtNDgzLDcgKzQ4
Myw3IEBAIHZvaWQgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXQKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgTGF5b3V0U2l6ZSYgY2hpbGRMYXlvdXREZWx0YSA9IGNoaWxkTGF5
b3V0RGVsdGFzW2NoaWxkSW5kZXgrK107CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChj
aGlsZC0+c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gQ09MTEFQU0UpIHsKKyAgICAgICAgICAgIGlm
IChjaGlsZC0+c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6Q29sbGFwc2UpIHsK
ICAgICAgICAgICAgICAgICAvLyB2aXNpYmlsaXR5OiBjb2xsYXBzZWQgY2hpbGRyZW4gZG8gbm90
IHBhcnRpY2lwYXRlIGluIG91ciBwb3NpdGlvbmluZy4KICAgICAgICAgICAgICAgICAvLyBCdXQg
d2UgbmVlZCB0byBsYXkgdGhlbSBvdXQuCiAgICAgICAgICAgICAgICAgbGF5b3V0Q2hpbGRJZk5l
ZWRlZEFwcGx5aW5nRGVsdGEoY2hpbGQsIGNoaWxkTGF5b3V0RGVsdGEpOwpAQCAtNTc3LDcgKzU3
Nyw3IEBAIHZvaWQgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXQKIAogICAgICAg
ICAgICAgICAgICAgICAvLyBOb3cgZGlzdHJpYnV0ZSB0aGUgc3BhY2UgdG8gb2JqZWN0cy4KICAg
ICAgICAgICAgICAgICAgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gaXRlcmF0b3IuZmlyc3Qo
KTsgY2hpbGQgJiYgc3BhY2VBdmFpbGFibGVUaGlzUGFzcyAmJiB0b3RhbEZsZXg7IGNoaWxkID0g
aXRlcmF0b3IubmV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQtPnN0
eWxlKCkudmlzaWJpbGl0eSgpID09IENPTExBUFNFKQorICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGNoaWxkLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpDb2xsYXBzZSkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGFsbG93ZWRDaGlsZEZsZXgoY2hpbGQsIGV4cGFuZGluZywgaSkpIHsKQEAg
LTcyNyw3ICs3MjcsNyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6bGF5b3V0
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIExheW91dFNpemUmIGNoaWxkTGF5b3V0RGVsdGEg
PSBjaGlsZExheW91dERlbHRhc1tjaGlsZEluZGV4KytdOwogCi0gICAgICAgICAgICBpZiAoY2hp
bGQtPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IENPTExBUFNFKSB7CisgICAgICAgICAgICBpZiAo
Y2hpbGQtPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OkNvbGxhcHNlKSB7CiAg
ICAgICAgICAgICAgICAgLy8gdmlzaWJpbGl0eTogY29sbGFwc2VkIGNoaWxkcmVuIGRvIG5vdCBw
YXJ0aWNpcGF0ZSBpbiBvdXIgcG9zaXRpb25pbmcuCiAgICAgICAgICAgICAgICAgLy8gQnV0IHdl
IG5lZWQgdG8gbGF5IHRoZW0gZG93bi4KICAgICAgICAgICAgICAgICBsYXlvdXRDaGlsZElmTmVl
ZGVkQXBwbHlpbmdEZWx0YShjaGlsZCwgY2hpbGRMYXlvdXREZWx0YSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwCShyZXZpc2lv
biAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsNyBAQCBQYXRoIFJlbmRlckRldGFp
bHNNYXJrZXI6OmdldFBhdGgoY29uc3QgCiAKIHZvaWQgUmVuZGVyRGV0YWlsc01hcmtlcjo6cGFp
bnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkK
IHsKLSAgICBpZiAocGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHN0
eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpIHsKKyAgICBpZiAocGFpbnRJbmZvLnBoYXNl
ICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2li
aWxpdHk6OlZpc2libGUpIHsKICAgICAgICAgUmVuZGVyQmxvY2tGbG93OjpwYWludChwYWludElu
Zm8sIHBhaW50T2Zmc2V0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTUxLDQ5ICsxNTEsNDkgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFJlbmRlckVs
ZW1lbnQ6OgogICAgIH0KIAogICAgIHN3aXRjaCAoc3R5bGUuZGlzcGxheSgpKSB7Ci0gICAgY2Fz
ZSBOT05FOgotICAgIGNhc2UgQ09OVEVOVFM6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6Tm9uZToK
KyAgICBjYXNlIERpc3BsYXlUeXBlOjpDb250ZW50czoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgY2FzZSBJTkxJTkU6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6SW5saW5lOgogICAgICAg
ICBpZiAoY3JlYXRpb25UeXBlID09IENyZWF0ZUFsbFJlbmRlcmVycykKICAgICAgICAgICAgIHJl
dHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJJbmxpbmU+KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUp
KTsKICAgICAgICAgRkFMTFRIUk9VR0g7IC8vIEZpZWxkc2V0cyBzaG91bGQgbWFrZSBhIGJsb2Nr
IGZsb3cgaWYgZGlzcGxheTppbmxpbmUgaXMgc2V0LgotICAgIGNhc2UgQkxPQ0s6Ci0gICAgY2Fz
ZSBJTkxJTkVfQkxPQ0s6Ci0gICAgY2FzZSBDT01QQUNUOgorICAgIGNhc2UgRGlzcGxheVR5cGU6
OkJsb2NrOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OklubGluZUJsb2NrOgorICAgIGNhc2UgRGlz
cGxheVR5cGU6OkNvbXBhY3Q6CiAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJC
bG9ja0Zsb3c+KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKTsKLSAgICBjYXNlIExJU1RfSVRFTToK
KyAgICBjYXNlIERpc3BsYXlUeXBlOjpMaXN0SXRlbToKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJl
bmRlcmVyPFJlbmRlckxpc3RJdGVtPihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSk7Ci0gICAgY2Fz
ZSBGTEVYOgotICAgIGNhc2UgSU5MSU5FX0ZMRVg6Ci0gICAgY2FzZSBXRUJLSVRfRkxFWDoKLSAg
ICBjYXNlIFdFQktJVF9JTkxJTkVfRkxFWDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpGbGV4Ogor
ICAgIGNhc2UgRGlzcGxheVR5cGU6OklubGluZUZsZXg6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6
V2ViS2l0RmxleDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpXZWJLaXRJbmxpbmVGbGV4OgogICAg
ICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyRmxleGlibGVCb3g+KGVsZW1lbnQsIFdU
Rk1vdmUoc3R5bGUpKTsKLSAgICBjYXNlIEdSSUQ6Ci0gICAgY2FzZSBJTkxJTkVfR1JJRDoKKyAg
ICBjYXNlIERpc3BsYXlUeXBlOjpHcmlkOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OklubGluZUdy
aWQ6CiAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJHcmlkPihlbGVtZW50LCBX
VEZNb3ZlKHN0eWxlKSk7Ci0gICAgY2FzZSBCT1g6Ci0gICAgY2FzZSBJTkxJTkVfQk9YOgorICAg
IGNhc2UgRGlzcGxheVR5cGU6OkJveDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpJbmxpbmVCb3g6
CiAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJEZXByZWNhdGVkRmxleGlibGVC
b3g+KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKTsKICAgICBkZWZhdWx0OiB7CiAgICAgICAgIGlm
IChjcmVhdGlvblR5cGUgPT0gT25seUNyZWF0ZUJsb2NrQW5kRmxleGJveFJlbmRlcmVycykKICAg
ICAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJCbG9ja0Zsb3c+KGVsZW1lbnQs
IFdURk1vdmUoc3R5bGUpKTsKICAgICAgICAgc3dpdGNoIChzdHlsZS5kaXNwbGF5KCkpIHsKLSAg
ICAgICAgY2FzZSBUQUJMRToKLSAgICAgICAgY2FzZSBJTkxJTkVfVEFCTEU6CisgICAgICAgIGNh
c2UgRGlzcGxheVR5cGU6OlRhYmxlOgorICAgICAgICBjYXNlIERpc3BsYXlUeXBlOjpJbmxpbmVU
YWJsZToKICAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJUYWJsZT4oZWxl
bWVudCwgV1RGTW92ZShzdHlsZSkpOwotICAgICAgICBjYXNlIFRBQkxFX0NFTEw6CisgICAgICAg
IGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlQ2VsbDoKICAgICAgICAgICAgIHJldHVybiBjcmVhdGVS
ZW5kZXJlcjxSZW5kZXJUYWJsZUNlbGw+KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKTsKLSAgICAg
ICAgY2FzZSBUQUJMRV9DQVBUSU9OOgorICAgICAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZUNh
cHRpb246CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyVGFibGVDYXB0
aW9uPihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSk7Ci0gICAgICAgIGNhc2UgVEFCTEVfUk9XX0dS
T1VQOgotICAgICAgICBjYXNlIFRBQkxFX0hFQURFUl9HUk9VUDoKLSAgICAgICAgY2FzZSBUQUJM
RV9GT09URVJfR1JPVVA6CisgICAgICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlUm93R3JvdXA6
CisgICAgICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlSGVhZGVyR3JvdXA6CisgICAgICAgIGNh
c2UgRGlzcGxheVR5cGU6OlRhYmxlRm9vdGVyR3JvdXA6CiAgICAgICAgICAgICByZXR1cm4gY3Jl
YXRlUmVuZGVyZXI8UmVuZGVyVGFibGVTZWN0aW9uPihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSk7
Ci0gICAgICAgIGNhc2UgVEFCTEVfUk9XOgorICAgICAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJs
ZVJvdzoKICAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJUYWJsZVJvdz4o
ZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpOwotICAgICAgICBjYXNlIFRBQkxFX0NPTFVNTl9HUk9V
UDoKLSAgICAgICAgY2FzZSBUQUJMRV9DT0xVTU46CisgICAgICAgIGNhc2UgRGlzcGxheVR5cGU6
OlRhYmxlQ29sdW1uR3JvdXA6CisgICAgICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlQ29sdW1u
OgogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclRhYmxlQ29sPihlbGVt
ZW50LCBXVEZNb3ZlKHN0eWxlKSk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVh
azsKQEAgLTIxNSw3ICsyMTUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRl
ckVsZW1lCiAgICAgICAgIFJlbmRlckJsb2NrKiBmaXJzdExpbmVCbG9jayA9IHJlbmRlcmVyRm9y
Rmlyc3RMaW5lU3R5bGUuZmlyc3RMaW5lQmxvY2soKTsKICAgICAgICAgaWYgKCFmaXJzdExpbmVC
bG9jaykKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBhdXRvKiBmaXJzdExp
bmVTdHlsZSA9IGZpcnN0TGluZUJsb2NrLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShGSVJTVF9MSU5F
LCAmc3R5bGUoKSk7CisgICAgICAgIGF1dG8qIGZpcnN0TGluZVN0eWxlID0gZmlyc3RMaW5lQmxv
Y2stPmdldENhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb0lkOjpGaXJzdExpbmUsICZzdHlsZSgpKTsK
ICAgICAgICAgaWYgKCFmaXJzdExpbmVTdHlsZSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgICAgICByZXR1cm4gUmVuZGVyU3R5bGU6OmNsb25lUHRyKCpmaXJzdExpbmVTdHlsZSk7
CkBAIC0yMzcsNyArMjM3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5kZXJF
bGVtZQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgYXV0byBzdHlsZSA9
IGNvbXBvc2VkVHJlZVBhcmVudEVsZW1lbnQtPnN0eWxlUmVzb2x2ZXIoKS5zdHlsZUZvckVsZW1l
bnQoKmNvbXBvc2VkVHJlZVBhcmVudEVsZW1lbnQsICZwYXJlbnRTdHlsZSkucmVuZGVyU3R5bGU7
Ci0gICAgICAgIEFTU0VSVChzdHlsZS0+ZGlzcGxheSgpID09IENPTlRFTlRTKTsKKyAgICAgICAg
QVNTRVJUKHN0eWxlLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OkNvbnRlbnRzKTsKIAogICAg
ICAgICAvLyBXZSBhY3QgYXMgaWYgdGhlcmUgd2FzIGFuIHVuc3R5bGVkIDxzcGFuPiBhcm91bmQg
dGhlIHRleHQgbm9kZS4gT25seSBzdHlsaW5nIGhhcHBlbnMgdmlhIGluaGVyaXRhbmNlLgogICAg
ICAgICBhdXRvIGZpcnN0TGluZVN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZVB0cigpOwpAQCAt
NjUwLDcgKzY1MCw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6cHJvcGFnYXRlU3R5bGVUb0Fub24K
IHsKICAgICAvLyBGSVhNRTogV2UgY291bGQgc2F2ZSB0aGlzIGNhbGwgd2hlbiB0aGUgY2hhbmdl
IG9ubHkgYWZmZWN0ZWQgbm9uLWluaGVyaXRlZCBwcm9wZXJ0aWVzLgogICAgIGZvciAoYXV0byYg
ZWxlbWVudENoaWxkIDogY2hpbGRyZW5PZlR5cGU8UmVuZGVyRWxlbWVudD4oKnRoaXMpKSB7Ci0g
ICAgICAgIGlmICghZWxlbWVudENoaWxkLmlzQW5vbnltb3VzKCkgfHwgZWxlbWVudENoaWxkLnN0
eWxlKCkuc3R5bGVUeXBlKCkgIT0gTk9QU0VVRE8pCisgICAgICAgIGlmICghZWxlbWVudENoaWxk
LmlzQW5vbnltb3VzKCkgfHwgZWxlbWVudENoaWxkLnN0eWxlKCkuc3R5bGVUeXBlKCkgIT0gUHNl
dWRvSWQ6Ok5vbmUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAocHJvcGFn
YXRpb25UeXBlID09IFByb3BhZ2F0ZVRvQmxvY2tDaGlsZHJlbk9ubHkgJiYgIWlzPFJlbmRlckJs
b2NrPihlbGVtZW50Q2hpbGQpKQpAQCAtNzI0LDkgKzcyNCw5IEBAIHZvaWQgUmVuZGVyRWxlbWVu
dDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWwKICAgICAgICAgLy8gS2VlcCBsYXllciBoaWVyYXJjaHkg
dmlzaWJpbGl0eSBiaXRzIHVwIHRvIGRhdGUgaWYgdmlzaWJpbGl0eSBjaGFuZ2VzLgogICAgICAg
ICBpZiAobV9zdHlsZS52aXNpYmlsaXR5KCkgIT0gbmV3U3R5bGUudmlzaWJpbGl0eSgpKSB7CiAg
ICAgICAgICAgICBpZiAoUmVuZGVyTGF5ZXIqIGxheWVyID0gZW5jbG9zaW5nTGF5ZXIoKSkgewot
ICAgICAgICAgICAgICAgIGlmIChuZXdTdHlsZS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkKKyAg
ICAgICAgICAgICAgICBpZiAobmV3U3R5bGUudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZp
c2libGUpCiAgICAgICAgICAgICAgICAgICAgIGxheWVyLT5zZXRIYXNWaXNpYmxlQ29udGVudCgp
OwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGxheWVyLT5oYXNWaXNpYmxlQ29udGVudCgpICYm
ICh0aGlzID09ICZsYXllci0+cmVuZGVyZXIoKSB8fCBsYXllci0+cmVuZGVyZXIoKS5zdHlsZSgp
LnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKSkgeworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGxh
eWVyLT5oYXNWaXNpYmxlQ29udGVudCgpICYmICh0aGlzID09ICZsYXllci0+cmVuZGVyZXIoKSB8
fCBsYXllci0+cmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpW
aXNpYmxlKSkgewogICAgICAgICAgICAgICAgICAgICBsYXllci0+ZGlydHlWaXNpYmxlQ29udGVu
dFN0YXR1cygpOwogICAgICAgICAgICAgICAgICAgICBpZiAoZGlmZiA+IFN0eWxlRGlmZmVyZW5j
ZTo6UmVwYWludExheWVyKQogICAgICAgICAgICAgICAgICAgICAgICAgcmVwYWludCgpOwpAQCAt
NzUxLDcgKzc1MSw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWwK
ICAgICAgICAgICAgIHNldEZsb2F0aW5nKGZhbHNlKTsKICAgICAgICAgICAgIGNsZWFyUG9zaXRp
b25lZFN0YXRlKCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG5ld1N0eWxlLmhhc1BzZXVkb1N0
eWxlKEZJUlNUX0xJTkUpIHx8IG9sZFN0eWxlLT5oYXNQc2V1ZG9TdHlsZShGSVJTVF9MSU5FKSkK
KyAgICAgICAgaWYgKG5ld1N0eWxlLmhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkOjpGaXJzdExpbmUp
IHx8IG9sZFN0eWxlLT5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKSkKICAgICAg
ICAgICAgIGludmFsaWRhdGVDYWNoZWRGaXJzdExpbmVTdHlsZSgpOwogCiAgICAgICAgIHNldEhv
cml6b250YWxXcml0aW5nTW9kZSh0cnVlKTsKQEAgLTg1Myw3ICs4NTMsNyBAQCB2b2lkIFJlbmRl
ckVsZW1lbnQ6Omluc2VydGVkSW50b1RyZWUoKQogCiAgICAgLy8gSWYgfHRoaXN8IGlzIHZpc2li
bGUgYnV0IHRoaXMgb2JqZWN0IHdhcyBub3QsIHRlbGwgdGhlIGxheWVyIGl0IGhhcyBzb21lIHZp
c2libGUgY29udGVudAogICAgIC8vIHRoYXQgbmVlZHMgdG8gYmUgZHJhd24gYW5kIGxheWVyIHZp
c2liaWxpdHkgb3B0aW1pemF0aW9uIGNhbid0IGJlIHVzZWQKLSAgICBpZiAocGFyZW50KCktPnN0
eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0g
VklTSUJMRSAmJiAhaGFzTGF5ZXIoKSkgeworICAgIGlmIChwYXJlbnQoKS0+c3R5bGUoKS52aXNp
YmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9
PSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICFoYXNMYXllcigpKSB7CiAgICAgICAgIGlmICghbGF5
ZXIpCiAgICAgICAgICAgICBsYXllciA9IHBhcmVudCgpLT5lbmNsb3NpbmdMYXllcigpOwogICAg
ICAgICBpZiAobGF5ZXIpCkBAIC04NjcsNyArODY3LDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50Ojp3
aWxsQmVSZW1vdmVkRnJvbVRyZQogewogICAgIC8vIElmIHdlIHJlbW92ZSBhIHZpc2libGUgY2hp
bGQgZnJvbSBhbiBpbnZpc2libGUgcGFyZW50LCB3ZSBkb24ndCBrbm93IHRoZSBsYXllciB2aXNp
YmlsaXR5IGFueSBtb3JlLgogICAgIFJlbmRlckxheWVyKiBsYXllciA9IG51bGxwdHI7Ci0gICAg
aWYgKHBhcmVudCgpLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFICYmIHN0eWxlKCku
dmlzaWJpbGl0eSgpID09IFZJU0lCTEUgJiYgIWhhc0xheWVyKCkpIHsKKyAgICBpZiAocGFyZW50
KCktPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgJiYgc3R5bGUo
KS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhaGFzTGF5ZXIoKSkgewog
ICAgICAgICBpZiAoKGxheWVyID0gcGFyZW50KCktPmVuY2xvc2luZ0xheWVyKCkpKQogICAgICAg
ICAgICAgbGF5ZXItPmRpcnR5VmlzaWJsZUNvbnRlbnRTdGF0dXMoKTsKICAgICB9CkBAIC0xMDc5
LDcgKzEwNzksNyBAQCBib29sIFJlbmRlckVsZW1lbnQ6OnJlcGFpbnRBZnRlckxheW91dElmCiAK
ICAgICBib29sIGZ1bGxSZXBhaW50ID0gc2VsZk5lZWRzTGF5b3V0KCk7CiAgICAgLy8gUHJlc3Vt
YWJseSBhIGJhY2tncm91bmQgb3IgYSBib3JkZXIgZXhpc3RzIGlmIGJvcmRlci1maXQ6bGluZXMg
d2FzIHNwZWNpZmllZC4KLSAgICBpZiAoIWZ1bGxSZXBhaW50ICYmIHN0eWxlKCkuYm9yZGVyRml0
KCkgPT0gQm9yZGVyRml0TGluZXMpCisgICAgaWYgKCFmdWxsUmVwYWludCAmJiBzdHlsZSgpLmJv
cmRlckZpdCgpID09IEJvcmRlckZpdDo6TGluZXMpCiAgICAgICAgIGZ1bGxSZXBhaW50ID0gdHJ1
ZTsKICAgICBpZiAoIWZ1bGxSZXBhaW50KSB7CiAgICAgICAgIC8vIFRoaXMgQVNTRVJUIGZhaWxz
IGR1ZSB0byBhbmltYXRpb25zLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM3MDQ4CkBAIC0xMjA4LDcgKzEyMDgsNyBAQCBib29sIFJlbmRlckVsZW1lbnQ6Omlz
VmlzaWJsZUluRG9jdW1lbnRSCiB7CiAgICAgaWYgKGRvY3VtZW50KCkuYWN0aXZlRE9NT2JqZWN0
c0FyZVN1c3BlbmRlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHN0eWxlKCku
dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9
IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAodmll
dygpLmZyYW1lVmlldygpLmlzT2Zmc2NyZWVuKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTEzMjAsNyArMTMyMCw3IEBAIGJvb2wgUmVuZGVyRWxlbWVudDo6cmVwYWludEZvclBhdXNlZElt
YWcKIAogY29uc3QgUmVuZGVyU3R5bGUqIFJlbmRlckVsZW1lbnQ6OmdldENhY2hlZFBzZXVkb1N0
eWxlKFBzZXVkb0lkIHBzZXVkbywgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKSBjb25z
dAogewotICAgIGlmIChwc2V1ZG8gPCBGSVJTVF9JTlRFUk5BTF9QU0VVRE9JRCAmJiAhc3R5bGUo
KS5oYXNQc2V1ZG9TdHlsZShwc2V1ZG8pKQorICAgIGlmIChwc2V1ZG8gPCBQc2V1ZG9JZDo6Rmly
c3RJbnRlcm5hbFBzZXVkb0lkICYmICFzdHlsZSgpLmhhc1BzZXVkb1N0eWxlKHBzZXVkbykpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVuZGVyU3R5bGUqIGNhY2hlZFN0eWxlID0g
c3R5bGUoKS5nZXRDYWNoZWRQc2V1ZG9TdHlsZShwc2V1ZG8pOwpAQCAtMTMzNSw3ICsxMzM1LDcg
QEAgY29uc3QgUmVuZGVyU3R5bGUqIFJlbmRlckVsZW1lbnQ6OmdldENhYwogCiBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRlckVsZW1lbnQ6OmdldFVuY2FjaGVkUHNldWRvU3R5bGUo
Y29uc3QgUHNldWRvU3R5bGVSZXF1ZXN0JiBwc2V1ZG9TdHlsZVJlcXVlc3QsIGNvbnN0IFJlbmRl
clN0eWxlKiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIG93blN0eWxlKSBjb25zdAog
ewotICAgIGlmIChwc2V1ZG9TdHlsZVJlcXVlc3QucHNldWRvSWQgPCBGSVJTVF9JTlRFUk5BTF9Q
U0VVRE9JRCAmJiAhb3duU3R5bGUgJiYgIXN0eWxlKCkuaGFzUHNldWRvU3R5bGUocHNldWRvU3R5
bGVSZXF1ZXN0LnBzZXVkb0lkKSkKKyAgICBpZiAocHNldWRvU3R5bGVSZXF1ZXN0LnBzZXVkb0lk
IDwgUHNldWRvSWQ6OkZpcnN0SW50ZXJuYWxQc2V1ZG9JZCAmJiAhb3duU3R5bGUgJiYgIXN0eWxl
KCkuaGFzUHNldWRvU3R5bGUocHNldWRvU3R5bGVSZXF1ZXN0LnBzZXVkb0lkKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIXBhcmVudFN0eWxlKSB7CkBAIC0xMzg0LDExICsx
Mzg0LDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVyRWxlbWUKICAgICBp
ZiAoU2hhZG93Um9vdCogcm9vdCA9IGVsZW1lbnQoKS0+Y29udGFpbmluZ1NoYWRvd1Jvb3QoKSkg
ewogICAgICAgICBpZiAocm9vdC0+bW9kZSgpID09IFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdlbnQp
IHsKICAgICAgICAgICAgIGlmIChFbGVtZW50KiBzaGFkb3dIb3N0ID0gZWxlbWVudCgpLT5zaGFk
b3dIb3N0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNoYWRvd0hvc3QtPnJlbmRlcmVyKCkt
PmdldFVuY2FjaGVkUHNldWRvU3R5bGUoUHNldWRvU3R5bGVSZXF1ZXN0KFNFTEVDVElPTikpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBzaGFkb3dIb3N0LT5yZW5kZXJlcigpLT5nZXRVbmNhY2hl
ZFBzZXVkb1N0eWxlKFBzZXVkb1N0eWxlUmVxdWVzdChQc2V1ZG9JZDo6U2VsZWN0aW9uKSk7CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gZ2V0VW5jYWNoZWRQc2V1ZG9TdHlsZShQc2V1
ZG9TdHlsZVJlcXVlc3QoU0VMRUNUSU9OKSk7CisgICAgcmV0dXJuIGdldFVuY2FjaGVkUHNldWRv
U3R5bGUoUHNldWRvU3R5bGVSZXF1ZXN0KFBzZXVkb0lkOjpTZWxlY3Rpb24pKTsKIH0KIAogQ29s
b3IgUmVuZGVyRWxlbWVudDo6c2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAkocmV2aXNpb24gMjMyMTIz
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMTQwLDcgKzE0MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzVHJhbnNwYXJlbnQo
KSBjb25zdCB7IHJldHVybiBzdHlsZSgpLm9wYWNpdHkoKSA8IDEuMGY7IH0KICAgICBmbG9hdCBv
cGFjaXR5KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS5vcGFjaXR5KCk7IH0KIAotICAgIGJvb2wg
dmlzaWJsZVRvSGl0VGVzdGluZygpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCkudmlzaWJpbGl0eSgp
ID09IFZJU0lCTEUgJiYgc3R5bGUoKS5wb2ludGVyRXZlbnRzKCkgIT0gUEVfTk9ORTsgfQorICAg
IGJvb2wgdmlzaWJsZVRvSGl0VGVzdGluZygpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCkudmlzaWJp
bGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUgJiYgc3R5bGUoKS5wb2ludGVyRXZlbnRzKCkg
IT0gUG9pbnRlckV2ZW50czo6Tm9uZTsgfQogCiAgICAgYm9vbCBoYXNCYWNrZ3JvdW5kKCkgY29u
c3QgeyByZXR1cm4gc3R5bGUoKS5oYXNCYWNrZ3JvdW5kKCk7IH0KICAgICBib29sIGhhc01hc2so
KSBjb25zdCB7IHJldHVybiBzdHlsZSgpLmhhc01hc2soKTsgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCShyZXZp
c2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNyArMTE0LDcgQEAgaW50IFJlbmRl
ckZpbGVVcGxvYWRDb250cm9sOjptYXhGaWxlbmFtZQogCiB2b2lkIFJlbmRlckZpbGVVcGxvYWRD
b250cm9sOjpwYWludE9iamVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
bnQmIHBhaW50T2Zmc2V0KQogewotICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJ
QkxFKQorICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxl
KQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gUHVzaCBhIGNsaXAuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwCShyZXZpc2lvbiAy
MzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIFJlbmRlclN0eWxlIGNyZWF0
ZUZ1bGxTY3JlZW5TdHlsZQogICAgIGZ1bGxzY3JlZW5TdHlsZS5zZXRGb250RGVzY3JpcHRpb24o
eyB9KTsKICAgICBmdWxsc2NyZWVuU3R5bGUuZm9udENhc2NhZGUoKS51cGRhdGUobnVsbHB0cik7
CiAKLSAgICBmdWxsc2NyZWVuU3R5bGUuc2V0RGlzcGxheShGTEVYKTsKKyAgICBmdWxsc2NyZWVu
U3R5bGUuc2V0RGlzcGxheShEaXNwbGF5VHlwZTo6RmxleCk7CiAgICAgZnVsbHNjcmVlblN0eWxl
LnNldEp1c3RpZnlDb250ZW50UG9zaXRpb24oQ29udGVudFBvc2l0aW9uOjpDZW50ZXIpOwogICAg
IGZ1bGxzY3JlZW5TdHlsZS5zZXRBbGlnbkl0ZW1zUG9zaXRpb24oSXRlbVBvc2l0aW9uOjpDZW50
ZXIpOwogICAgIGZ1bGxzY3JlZW5TdHlsZS5zZXRGbGV4RGlyZWN0aW9uKEZsZXhEaXJlY3Rpb246
OkNvbHVtbik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCShy
ZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUyNCw4ICs1MjQsOCBAQCB1bnNpZ25lZCBSZW5kZXJHcmlk
Ojpjb21wdXRlQXV0b1JlcGVhdFRyCiBzdGQ6OnVuaXF1ZV9wdHI8T3JkZXJlZFRyYWNrSW5kZXhT
ZXQ+IFJlbmRlckdyaWQ6OmNvbXB1dGVFbXB0eVRyYWNrc0ZvckF1dG9SZXBlYXQoR3JpZCYgZ3Jp
ZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKIHsKICAgICBib29s
IGlzUm93QXhpcyA9IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zOwotICAgIGlmICgoaXNSb3dBeGlz
ICYmIHN0eWxlKCkuZ3JpZEF1dG9SZXBlYXRDb2x1bW5zVHlwZSgpICE9IEF1dG9GaXQpCi0gICAg
ICAgIHx8ICghaXNSb3dBeGlzICYmIHN0eWxlKCkuZ3JpZEF1dG9SZXBlYXRSb3dzVHlwZSgpICE9
IEF1dG9GaXQpKQorICAgIGlmICgoaXNSb3dBeGlzICYmIHN0eWxlKCkuZ3JpZEF1dG9SZXBlYXRD
b2x1bW5zVHlwZSgpICE9IEF1dG9SZXBlYXRUeXBlOjpGaXQpCisgICAgICAgIHx8ICghaXNSb3dB
eGlzICYmIHN0eWxlKCkuZ3JpZEF1dG9SZXBlYXRSb3dzVHlwZSgpICE9IEF1dG9SZXBlYXRUeXBl
OjpGaXQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxP
cmRlcmVkVHJhY2tJbmRleFNldD4gZW1wdHlUcmFja0luZGV4ZXM7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5
Nyw3ICsyOTcsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpyZXBhaW50T3JNYXJrRm9yTGF5b3V0CiB7
CiAjaWYgRU5BQkxFKENTU19JTUFHRV9SRVNPTFVUSU9OKQogICAgIGRvdWJsZSBzY2FsZSA9IHN0
eWxlKCkuaW1hZ2VSZXNvbHV0aW9uKCk7Ci0gICAgaWYgKHN0eWxlKCkuaW1hZ2VSZXNvbHV0aW9u
U25hcCgpID09IEltYWdlUmVzb2x1dGlvblNuYXBQaXhlbHMpCisgICAgaWYgKHN0eWxlKCkuaW1h
Z2VSZXNvbHV0aW9uU25hcCgpID09IEltYWdlUmVzb2x1dGlvblNuYXA6OlBpeGVscykKICAgICAg
ICAgc2NhbGUgPSByb3VuZEZvckltcHJlY2lzZUNvbnZlcnNpb248aW50PihzY2FsZSk7CiAgICAg
aWYgKHNjYWxlIDw9IDApCiAgICAgICAgIHNjYWxlID0gMTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQs
NyArNzQsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6d2lsbEJlRGVzdHJveWVkKCkKIHsKICNpZiAh
QVNTRVJUX0RJU0FCTEVECiAgICAgLy8gTWFrZSBzdXJlIHdlIGRvIG5vdCByZXRhaW4gInRoaXMi
IGluIHRoZSBjb250aW51YXRpb24gb3V0bGluZSB0YWJsZSBtYXAgb2Ygb3VyIGNvbnRhaW5pbmcg
YmxvY2tzLgotICAgIGlmIChwYXJlbnQoKSAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJ
QkxFICYmIGhhc091dGxpbmUoKSkgeworICAgIGlmIChwYXJlbnQoKSAmJiBzdHlsZSgpLnZpc2li
aWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmIGhhc091dGxpbmUoKSkgewogICAgICAg
ICBib29sIGNvbnRhaW5pbmdCbG9ja1BhaW50c0NvbnRpbnVhdGlvbk91dGxpbmUgPSBjb250aW51
YXRpb24oKSB8fCBpc0NvbnRpbnVhdGlvbigpOwogICAgICAgICBpZiAoY29udGFpbmluZ0Jsb2Nr
UGFpbnRzQ29udGludWF0aW9uT3V0bGluZSkgewogICAgICAgICAgICAgaWYgKFJlbmRlckJsb2Nr
KiBjYiA9IGNvbnRhaW5pbmdCbG9jaygpKSB7CkBAIC0xNDgsNyArMTQ4LDcgQEAgc3RhdGljIHZv
aWQgdXBkYXRlU3R5bGVPZkFub255bW91c0Jsb2NrQwogICAgICAgICBSZW5kZXJJbmxpbmUqIGNv
bnRpbnVhdGlvbiA9IGJsb2NrLmlubGluZUNvbnRpbnVhdGlvbigpOwogICAgICAgICBpZiAob2xk
U3R5bGUtPmhhc0luRmxvd1Bvc2l0aW9uKCkgJiYgaW5GbG93UG9zaXRpb25lZElubGluZUFuY2Vz
dG9yKGNvbnRpbnVhdGlvbikpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgYXV0byBi
bG9ja1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXko
YmxvY2suc3R5bGUoKSwgQkxPQ0spOworICAgICAgICBhdXRvIGJsb2NrU3R5bGUgPSBSZW5kZXJT
dHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShibG9jay5zdHlsZSgpLCBEaXNw
bGF5VHlwZTo6QmxvY2spOwogICAgICAgICBibG9ja1N0eWxlLnNldFBvc2l0aW9uKG5ld1N0eWxl
LT5wb3NpdGlvbigpKTsKICAgICAgICAgYmxvY2suc2V0U3R5bGUoV1RGTW92ZShibG9ja1N0eWxl
KSk7CiAgICAgfQpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjp1cGRhdGVB
bHdheXNDcmVhdGVMaW4KICAgICBib29sIGFsd2F5c0NyZWF0ZUxpbmVCb3hlcyA9IChwYXJlbnRS
ZW5kZXJJbmxpbmUgJiYgcGFyZW50UmVuZGVySW5saW5lLT5hbHdheXNDcmVhdGVMaW5lQm94ZXMo
KSkKICAgICAgICAgfHwgKHBhcmVudFJlbmRlcklubGluZSAmJiBwYXJlbnRTdHlsZS0+dmVydGlj
YWxBbGlnbigpICE9IFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lKQogICAgICAgICB8fCBzdHlsZSgp
LnZlcnRpY2FsQWxpZ24oKSAhPSBWZXJ0aWNhbEFsaWduOjpCYXNlbGluZQotICAgICAgICB8fCBz
dHlsZSgpLnRleHRFbXBoYXNpc01hcmsoKSAhPSBUZXh0RW1waGFzaXNNYXJrTm9uZQorICAgICAg
ICB8fCBzdHlsZSgpLnRleHRFbXBoYXNpc01hcmsoKSAhPSBUZXh0RW1waGFzaXNNYXJrOjpOb25l
CiAgICAgICAgIHx8IChjaGVja0ZvbnRzICYmICghcGFyZW50U3R5bGUtPmZvbnRDYXNjYWRlKCku
Zm9udE1ldHJpY3MoKS5oYXNJZGVudGljYWxBc2NlbnREZXNjZW50QW5kTGluZUdhcChzdHlsZSgp
LmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKSkKICAgICAgICAgfHwgcGFyZW50U3R5bGUtPmxp
bmVIZWlnaHQoKSAhPSBzdHlsZSgpLmxpbmVIZWlnaHQoKSkpOwogCkBAIC04MTgsNyArODE4LDcg
QEAgTGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6OmxpbmVzVmlzdWFsT3ZlcgogTGF5b3V0UmVjdCBS
ZW5kZXJJbmxpbmU6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxh
eWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7CiAgICAgLy8gT25seSBm
aXJzdC1sZXR0ZXIgcmVuZGVyZXJzIGFyZSBhbGxvd2VkIGluIGhlcmUgZHVyaW5nIGxheW91dC4g
VGhleSBtdXRhdGUgdGhlIHRyZWUgdHJpZ2dlcmluZyByZXBhaW50cy4KLSAgICBBU1NFUlQoIXZp
ZXcoKS5mcmFtZVZpZXcoKS5sYXlvdXRDb250ZXh0KCkuaXNQYWludE9mZnNldENhY2hlRW5hYmxl
ZCgpIHx8IHN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gRklSU1RfTEVUVEVSIHx8IGhhc1NlbGZQYWlu
dGluZ0xheWVyKCkpOworICAgIEFTU0VSVCghdmlldygpLmZyYW1lVmlldygpLmxheW91dENvbnRl
eHQoKS5pc1BhaW50T2Zmc2V0Q2FjaGVFbmFibGVkKCkgfHwgc3R5bGUoKS5zdHlsZVR5cGUoKSA9
PSBQc2V1ZG9JZDo6Rmlyc3RMZXR0ZXIgfHwgaGFzU2VsZlBhaW50aW5nTGF5ZXIoKSk7CiAKICAg
ICBpZiAoIWZpcnN0TGluZUJveEluY2x1ZGluZ0N1bGxpbmcoKSAmJiAhY29udGludWF0aW9uKCkp
CiAgICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CkBAIC0xMzg3LDcgKzEzODcsNyBAQCB2b2lk
IFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lRm9yTGluZShHCiB2b2lkIFJlbmRlcklubGluZTo6
YWRkQW5ub3RhdGVkUmVnaW9ucyhWZWN0b3I8QW5ub3RhdGVkUmVnaW9uVmFsdWU+JiByZWdpb25z
KQogewogICAgIC8vIENvbnZlcnQgdGhlIHN0eWxlIHJlZ2lvbnMgdG8gYWJzb2x1dGUgY29vcmRp
bmF0ZXMuCi0gICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYg
KHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGNvbnN0IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4mIHN0eWxlUmVn
aW9ucyA9IHN0eWxlKCkuZGFzaGJvYXJkUmVnaW9ucygpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzUsNyAr
MzM1LDcgQEAgUmVuZGVyTGF5ZXI6OlJlbmRlckxheWVyKFJlbmRlckxheWVyTW9kZQogCiAgICAg
aWYgKCFyZW5kZXJlcigpLmZpcnN0Q2hpbGQoKSkgewogICAgICAgICBtX3Zpc2libGVDb250ZW50
U3RhdHVzRGlydHkgPSBmYWxzZTsKLSAgICAgICAgbV9oYXNWaXNpYmxlQ29udGVudCA9IHJlbmRl
cmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRTsKKyAgICAgICAgbV9oYXNWaXNp
YmxlQ29udGVudCA9IHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0
eTo6VmlzaWJsZTsKICAgICB9CiAKICAgICBpZiAoRWxlbWVudCogZWxlbWVudCA9IHJlbmRlcmVy
KCkuZWxlbWVudCgpKSB7CkBAIC0xMjY0LDE0ICsxMjY0LDE0IEBAIHZvaWQgUmVuZGVyTGF5ZXI6
OnVwZGF0ZURlc2NlbmRhbnREZXBlbmQKICAgICB9CiAKICAgICBpZiAobV92aXNpYmxlQ29udGVu
dFN0YXR1c0RpcnR5KSB7Ci0gICAgICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0
eSgpID09IFZJU0lCTEUpCisgICAgICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0
eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgICAgICBtX2hhc1Zpc2libGVDb250
ZW50ID0gdHJ1ZTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvLyBsYXllciBtYXkgYmUg
aGlkZGVuIGJ1dCBzdGlsbCBoYXZlIHNvbWUgdmlzaWJsZSBjb250ZW50LCBjaGVjayBmb3IgdGhp
cwogICAgICAgICAgICAgbV9oYXNWaXNpYmxlQ29udGVudCA9IGZhbHNlOwogICAgICAgICAgICAg
UmVuZGVyT2JqZWN0KiByID0gcmVuZGVyZXIoKS5maXJzdENoaWxkKCk7CiAgICAgICAgICAgICB3
aGlsZSAocikgewotICAgICAgICAgICAgICAgIGlmIChyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9
PSBWSVNJQkxFICYmICFyLT5oYXNMYXllcigpKSB7CisgICAgICAgICAgICAgICAgaWYgKHItPnN0
eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUgJiYgIXItPmhhc0xheWVy
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgbV9oYXNWaXNpYmxlQ29udGVudCA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KQEAgLTMxNDgsNyAr
MzE0OCw3IEBAIFJlZjxTY3JvbGxiYXI+IFJlbmRlckxheWVyOjpjcmVhdGVTY3JvbGwKICAgICBS
ZWZQdHI8U2Nyb2xsYmFyPiB3aWRnZXQ7CiAgICAgQVNTRVJUKHJlbmRlcmVyRm9yU2Nyb2xsYmFy
KHJlbmRlcmVyKCkpKTsKICAgICBhdXRvJiBhY3R1YWxSZW5kZXJlciA9ICpyZW5kZXJlckZvclNj
cm9sbGJhcihyZW5kZXJlcigpKTsKLSAgICBib29sIGhhc0N1c3RvbVNjcm9sbGJhclN0eWxlID0g
aXM8UmVuZGVyQm94PihhY3R1YWxSZW5kZXJlcikgJiYgZG93bmNhc3Q8UmVuZGVyQm94PihhY3R1
YWxSZW5kZXJlcikuc3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShTQ1JPTExCQVIpOworICAgIGJvb2wg
aGFzQ3VzdG9tU2Nyb2xsYmFyU3R5bGUgPSBpczxSZW5kZXJCb3g+KGFjdHVhbFJlbmRlcmVyKSAm
JiBkb3duY2FzdDxSZW5kZXJCb3g+KGFjdHVhbFJlbmRlcmVyKS5zdHlsZSgpLmhhc1BzZXVkb1N0
eWxlKFBzZXVkb0lkOjpTY3JvbGxiYXIpOwogICAgIGlmIChoYXNDdXN0b21TY3JvbGxiYXJTdHls
ZSkKICAgICAgICAgd2lkZ2V0ID0gUmVuZGVyU2Nyb2xsYmFyOjpjcmVhdGVDdXN0b21TY3JvbGxi
YXIoKnRoaXMsIG9yaWVudGF0aW9uLCBkb3duY2FzdDxSZW5kZXJCb3g+KGFjdHVhbFJlbmRlcmVy
KS5lbGVtZW50KCkpOwogICAgIGVsc2UgewpAQCAtMzQ2NiwxNCArMzQ2NiwxNCBAQCBib29sIFJl
bmRlckxheWVyOjpoYXNWZXJ0aWNhbE92ZXJmbG93KCkgCiBzdGF0aWMgYm9vbCBzdHlsZVJlcXVp
cmVzU2Nyb2xsYmFyKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgU2Nyb2xsYmFyT3JpZW50YXRp
b24gYXhpcykKIHsKICAgICBPdmVyZmxvdyBvdmVyZmxvdyA9IGF4aXMgPT0gU2Nyb2xsYmFyT3Jp
ZW50YXRpb246Okhvcml6b250YWxTY3JvbGxiYXIgPyBzdHlsZS5vdmVyZmxvd1goKSA6IHN0eWxl
Lm92ZXJmbG93WSgpOwotICAgIGJvb2wgb3ZlcmZsb3dTY3JvbGxBY3RzTGlrZUF1dG8gPSBvdmVy
ZmxvdyA9PSBPdmVyZmxvdzo6U2Nyb2xsICYmICFzdHlsZS5oYXNQc2V1ZG9TdHlsZShTQ1JPTExC
QVIpICYmIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLnVzZXNPdmVybGF5U2Nyb2xsYmFycygpOwor
ICAgIGJvb2wgb3ZlcmZsb3dTY3JvbGxBY3RzTGlrZUF1dG8gPSBvdmVyZmxvdyA9PSBPdmVyZmxv
dzo6U2Nyb2xsICYmICFzdHlsZS5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6U2Nyb2xsYmFyKSAm
JiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS51c2VzT3ZlcmxheVNjcm9sbGJhcnMoKTsKICAgICBy
ZXR1cm4gb3ZlcmZsb3cgPT0gT3ZlcmZsb3c6OlNjcm9sbCAmJiAhb3ZlcmZsb3dTY3JvbGxBY3Rz
TGlrZUF1dG87CiB9CiAKIHN0YXRpYyBib29sIHN0eWxlRGVmaW5lc0F1dG9tYXRpY1Njcm9sbGJh
cihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIFNjcm9sbGJhck9yaWVudGF0aW9uIGF4aXMpCiB7
CiAgICAgT3ZlcmZsb3cgb3ZlcmZsb3cgPSBheGlzID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpI
b3Jpem9udGFsU2Nyb2xsYmFyID8gc3R5bGUub3ZlcmZsb3dYKCkgOiBzdHlsZS5vdmVyZmxvd1ko
KTsKLSAgICBib29sIG92ZXJmbG93U2Nyb2xsQWN0c0xpa2VBdXRvID0gb3ZlcmZsb3cgPT0gT3Zl
cmZsb3c6OlNjcm9sbCAmJiAhc3R5bGUuaGFzUHNldWRvU3R5bGUoU0NST0xMQkFSKSAmJiBTY3Jv
bGxiYXJUaGVtZTo6dGhlbWUoKS51c2VzT3ZlcmxheVNjcm9sbGJhcnMoKTsKKyAgICBib29sIG92
ZXJmbG93U2Nyb2xsQWN0c0xpa2VBdXRvID0gb3ZlcmZsb3cgPT0gT3ZlcmZsb3c6OlNjcm9sbCAm
JiAhc3R5bGUuaGFzUHNldWRvU3R5bGUoUHNldWRvSWQ6OlNjcm9sbGJhcikgJiYgU2Nyb2xsYmFy
VGhlbWU6OnRoZW1lKCkudXNlc092ZXJsYXlTY3JvbGxiYXJzKCk7CiAgICAgcmV0dXJuIG92ZXJm
bG93ID09IE92ZXJmbG93OjpBdXRvIHx8IG92ZXJmbG93ID09IE92ZXJmbG93OjpPdmVybGF5IHx8
IG92ZXJmbG93U2Nyb2xsQWN0c0xpa2VBdXRvOwogfQogCkBAIC00MDk0LDIzICs0MDk0LDIzIEBA
IHN0YXRpYyBpbmxpbmUgTGF5b3V0UmVjdCBjb21wdXRlUmVmZXJlbmMKICAgICBMYXlvdXRSZWN0
IHJlZmVyZW5jZUJveDsKICAgICBjb25zdCBhdXRvJiBib3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+
KHJlbmRlcmVyKTsKICAgICBzd2l0Y2ggKGNsaXBwaW5nUGF0aC5yZWZlcmVuY2VCb3goKSkgewot
ICAgIGNhc2UgQ29udGVudEJveDoKKyAgICBjYXNlIENTU0JveFR5cGU6OkNvbnRlbnRCb3g6CiAg
ICAgICAgIHJlZmVyZW5jZUJveCA9IGJveC5jb250ZW50Qm94UmVjdCgpOwogICAgICAgICByZWZl
cmVuY2VCb3gubW92ZShvZmZzZXRGcm9tUm9vdCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
UGFkZGluZ0JveDoKKyAgICBjYXNlIENTU0JveFR5cGU6OlBhZGRpbmdCb3g6CiAgICAgICAgIHJl
ZmVyZW5jZUJveCA9IGJveC5wYWRkaW5nQm94UmVjdCgpOwogICAgICAgICByZWZlcmVuY2VCb3gu
bW92ZShvZmZzZXRGcm9tUm9vdCk7CiAgICAgICAgIGJyZWFrOwogICAgIC8vIEZJWE1FOiBTdXBw
b3J0IG1hcmdpbi1ib3guIFVzZSBib3VuZGluZyBjbGllbnQgcmVjdCBmb3Igbm93LgogICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc5ODQKLSAgICBjYXNl
IE1hcmdpbkJveDoKKyAgICBjYXNlIENTU0JveFR5cGU6Ok1hcmdpbkJveDoKICAgICAvLyBmaWxs
LCBzdHJva2UsIHZpZXctYm94IGNvbXB1dGUgdG8gYm9yZGVyLWJveCBmb3IgSFRNTCBlbGVtZW50
cy4KLSAgICBjYXNlIEZpbGw6Ci0gICAgY2FzZSBTdHJva2U6Ci0gICAgY2FzZSBWaWV3Qm94Ogot
ICAgIGNhc2UgQm9yZGVyQm94OgotICAgIGNhc2UgQm94TWlzc2luZzoKKyAgICBjYXNlIENTU0Jv
eFR5cGU6OkZpbGw6CisgICAgY2FzZSBDU1NCb3hUeXBlOjpTdHJva2U6CisgICAgY2FzZSBDU1NC
b3hUeXBlOjpWaWV3Qm94OgorICAgIGNhc2UgQ1NTQm94VHlwZTo6Qm9yZGVyQm94OgorICAgIGNh
c2UgQ1NTQm94VHlwZTo6Qm94TWlzc2luZzoKICAgICAgICAgcmVmZXJlbmNlQm94ID0gYm94LmJv
cmRlckJveFJlY3QoKTsKICAgICAgICAgcmVmZXJlbmNlQm94Lm1vdmUob2Zmc2V0RnJvbVJvb3Qp
OwogICAgICAgICBicmVhazsKQEAgLTYwNDEsNyArNjA0MSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6
OmJhY2tncm91bmRJc0tub3duVG9CZU8KIAogICAgIC8vIFdlIGNhbid0IHVzZSBoYXNWaXNpYmxl
Q29udGVudCgpLCBiZWNhdXNlIHRoYXQgd2lsbCBiZSB0cnVlIGlmIG91ciByZW5kZXJlciBpcyBo
aWRkZW4sIGJ1dCBzb21lIGNoaWxkCiAgICAgLy8gaXMgdmlzaWJsZSBhbmQgdGhhdCBjaGlsZCBk
b2Vzbid0IGNvdmVyIHRoZSBlbnRpcmUgcmVjdC4KLSAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgp
LnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCkudmlz
aWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGlmIChwYWludHNXaXRoRmlsdGVycygpICYmIHJlbmRlcmVyKCkuc3R5bGUoKS5maWx0
ZXIoKS5oYXNGaWx0ZXJUaGF0QWZmZWN0c09wYWNpdHkoKSkKQEAgLTY3MzAsNyArNjczMCw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVNjcm9sbGFibGVBcmVhU2UKIHZvaWQgUmVuZGVyTGF5
ZXI6OnVwZGF0ZVNjcm9sbENvcm5lclN0eWxlKCkKIHsKICAgICBSZW5kZXJFbGVtZW50KiBhY3R1
YWxSZW5kZXJlciA9IHJlbmRlcmVyRm9yU2Nyb2xsYmFyKHJlbmRlcmVyKCkpOwotICAgIGF1dG8g
Y29ybmVyID0gcmVuZGVyZXIoKS5oYXNPdmVyZmxvd0NsaXAoKSA/IGFjdHVhbFJlbmRlcmVyLT5n
ZXRVbmNhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb1N0eWxlUmVxdWVzdChTQ1JPTExCQVJfQ09STkVS
KSwgJmFjdHVhbFJlbmRlcmVyLT5zdHlsZSgpKSA6IG51bGxwdHI7CisgICAgYXV0byBjb3JuZXIg
PSByZW5kZXJlcigpLmhhc092ZXJmbG93Q2xpcCgpID8gYWN0dWFsUmVuZGVyZXItPmdldFVuY2Fj
aGVkUHNldWRvU3R5bGUoUHNldWRvU3R5bGVSZXF1ZXN0KFBzZXVkb0lkOjpTY3JvbGxiYXJDb3Ju
ZXIpLCAmYWN0dWFsUmVuZGVyZXItPnN0eWxlKCkpIDogbnVsbHB0cjsKIAogICAgIGlmICghY29y
bmVyKSB7CiAgICAgICAgIGNsZWFyU2Nyb2xsQ29ybmVyKCk7CkBAIC02NzU3LDcgKzY3NTcsNyBA
QCB2b2lkIFJlbmRlckxheWVyOjpjbGVhclNjcm9sbENvcm5lcigpCiB2b2lkIFJlbmRlckxheWVy
Ojp1cGRhdGVSZXNpemVyU3R5bGUoKQogewogICAgIFJlbmRlckVsZW1lbnQqIGFjdHVhbFJlbmRl
cmVyID0gcmVuZGVyZXJGb3JTY3JvbGxiYXIocmVuZGVyZXIoKSk7Ci0gICAgYXV0byByZXNpemVy
ID0gcmVuZGVyZXIoKS5oYXNPdmVyZmxvd0NsaXAoKSA/IGFjdHVhbFJlbmRlcmVyLT5nZXRVbmNh
Y2hlZFBzZXVkb1N0eWxlKFBzZXVkb1N0eWxlUmVxdWVzdChSRVNJWkVSKSwgJmFjdHVhbFJlbmRl
cmVyLT5zdHlsZSgpKSA6IG51bGxwdHI7CisgICAgYXV0byByZXNpemVyID0gcmVuZGVyZXIoKS5o
YXNPdmVyZmxvd0NsaXAoKSA/IGFjdHVhbFJlbmRlcmVyLT5nZXRVbmNhY2hlZFBzZXVkb1N0eWxl
KFBzZXVkb1N0eWxlUmVxdWVzdChQc2V1ZG9JZDo6UmVzaXplciksICZhY3R1YWxSZW5kZXJlci0+
c3R5bGUoKSkgOiBudWxscHRyOwogCiAgICAgaWYgKCFyZXNpemVyKSB7CiAgICAgICAgIGNsZWFy
UmVzaXplcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjM5LDggKzEy
MzksOCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQWZ0ZXJEZXNjCiAKICAgICBt
X2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVmlzaWJsZShtX293bmluZ0xheWVyLmhhc1Zpc2li
bGVDb250ZW50KCkgfHwgaGFzVmlzaWJsZU5vbkNvbXBvc2l0ZWREZXNjZW5kYW50cygpKTsKICAg
ICBpZiAobV9zY3JvbGxpbmdMYXllcikgewotICAgICAgICBtX3Njcm9sbGluZ0xheWVyLT5zZXRD
b250ZW50c1Zpc2libGUocmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxF
KTsKLSAgICAgICAgbV9zY3JvbGxpbmdMYXllci0+c2V0VXNlckludGVyYWN0aW9uRW5hYmxlZChy
ZW5kZXJlcigpLnN0eWxlKCkucG9pbnRlckV2ZW50cygpICE9IFBFX05PTkUpOworICAgICAgICBt
X3Njcm9sbGluZ0xheWVyLT5zZXRDb250ZW50c1Zpc2libGUocmVuZGVyZXIoKS5zdHlsZSgpLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlKTsKKyAgICAgICAgbV9zY3JvbGxpbmdM
YXllci0+c2V0VXNlckludGVyYWN0aW9uRW5hYmxlZChyZW5kZXJlcigpLnN0eWxlKCkucG9pbnRl
ckV2ZW50cygpICE9IFBvaW50ZXJFdmVudHM6Ok5vbmUpOwogICAgIH0KIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAJ
KHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTIsOCArNTEyLDggQEAgc3RhdGlj
IGJvb2wgc2Nyb2xsYmFySGFzRGlzcGxheU5vbmUoU2NybwogICAgIGlmICghc2Nyb2xsYmFyIHx8
ICFzY3JvbGxiYXItPmlzQ3VzdG9tU2Nyb2xsYmFyKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc2Nyb2xsYmFyU3R5bGUgPSBzdGF0
aWNfY2FzdDxSZW5kZXJTY3JvbGxiYXIqPihzY3JvbGxiYXIpLT5nZXRTY3JvbGxiYXJQc2V1ZG9T
dHlsZShTY3JvbGxiYXJCR1BhcnQsIFNDUk9MTEJBUik7Ci0gICAgcmV0dXJuIHNjcm9sbGJhclN0
eWxlICYmIHNjcm9sbGJhclN0eWxlLT5kaXNwbGF5KCkgPT0gTk9ORTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IHNjcm9sbGJhclN0eWxlID0gc3RhdGljX2Nhc3Q8UmVuZGVyU2Ny
b2xsYmFyKj4oc2Nyb2xsYmFyKS0+Z2V0U2Nyb2xsYmFyUHNldWRvU3R5bGUoU2Nyb2xsYmFyQkdQ
YXJ0LCBQc2V1ZG9JZDo6U2Nyb2xsYmFyKTsKKyAgICByZXR1cm4gc2Nyb2xsYmFyU3R5bGUgJiYg
c2Nyb2xsYmFyU3R5bGUtPmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZTsKIH0KIAogLy8g
RklYTUU6IENhbiB3ZSBtYWtlIHxsYXllcnwgY29uc3QgUmVuZGVyTGF5ZXImPwpAQCAtMjQzMiw3
ICsyNDMyLDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcAogICAg
IG1fcmVldmFsdWF0ZUNvbXBvc2l0aW5nQWZ0ZXJMYXlvdXQgPSB0cnVlOwogICAgIAogICAgIGF1
dG8mIHBsdWdpblJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyV2lkZ2V0PihyZW5kZXJlcik7Ci0g
ICAgaWYgKHBsdWdpblJlbmRlcmVyLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisg
ICAgaWYgKHBsdWdpblJlbmRlcmVyLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6
OlZpc2libGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIElmIHdlIGNhbid0IHJl
bGlhYmx5IGtub3cgdGhlIHNpemUgb2YgdGhlIHBsdWdpbiB5ZXQsIGRvbid0IGNoYW5nZSBjb21w
b3NpdGluZyBzdGF0ZS4KQEAgLTI0NTAsNyArMjQ1MCw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpyZXF1aXJlc0NvbXAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYXV0byYg
ZnJhbWVSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlcldpZGdldD4ocmVuZGVyZXIpOwotICAgIGlm
IChmcmFtZVJlbmRlcmVyLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYg
KGZyYW1lUmVuZGVyZXIuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJs
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFmcmFtZVJlbmRlcmVyLnJlcXVp
cmVzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0Qm94LmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTAsNyAr
MzEwLDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW0oUGFpbnRJbmZvJgogCiB2b2lk
IFJlbmRlckxpc3RCb3g6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7Ci0gICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgp
ICE9IFZJU0lCTEUpCisgICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6
OlZpc2libGUpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAocGFpbnRJbmZvLnBoYXNl
ID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKSB7CkBAIC0zODYsMTcgKzM4NiwxNyBAQCB2b2lkIFJl
bmRlckxpc3RCb3g6OnBhaW50U2Nyb2xsYmFyKFBhaW50CiAKIHN0YXRpYyBMYXlvdXRTaXplIGl0
ZW1PZmZzZXRGb3JBbGlnbm1lbnQoVGV4dFJ1biB0ZXh0UnVuLCBjb25zdCBSZW5kZXJTdHlsZSog
aXRlbVN0eWxlLCBGb250Q2FzY2FkZSBpdGVtRm9udCwgTGF5b3V0UmVjdCBpdGVtQm91ZGluZ0Jv
eCkKIHsKLSAgICBFVGV4dEFsaWduIGFjdHVhbEFsaWdubWVudCA9IGl0ZW1TdHlsZS0+dGV4dEFs
aWduKCk7Ci0gICAgLy8gRklYTUU6IEZpcmVmb3ggZG9lc24ndCByZXNwZWN0IEpVU1RJRlkuIFNo
b3VsZCB3ZT8KLSAgICAvLyBGSVhNRTogSGFuZGxlIFRBRU5EIGhlcmUKLSAgICBpZiAoYWN0dWFs
QWxpZ25tZW50ID09IFRBU1RBUlQgfHwgYWN0dWFsQWxpZ25tZW50ID09IEpVU1RJRlkpCi0gICAg
ICBhY3R1YWxBbGlnbm1lbnQgPSBpdGVtU3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/
IExFRlQgOiBSSUdIVDsKKyAgICBUZXh0QWxpZ25Nb2RlIGFjdHVhbEFsaWdubWVudCA9IGl0ZW1T
dHlsZS0+dGV4dEFsaWduKCk7CisgICAgLy8gRklYTUU6IEZpcmVmb3ggZG9lc24ndCByZXNwZWN0
IFRleHRBbGlnbk1vZGU6Okp1c3RpZnkuIFNob3VsZCB3ZT8KKyAgICAvLyBGSVhNRTogSGFuZGxl
IFRleHRBbGlnbk1vZGU6OkVuZCBoZXJlCisgICAgaWYgKGFjdHVhbEFsaWdubWVudCA9PSBUZXh0
QWxpZ25Nb2RlOjpTdGFydCB8fCBhY3R1YWxBbGlnbm1lbnQgPT0gVGV4dEFsaWduTW9kZTo6SnVz
dGlmeSkKKyAgICAgICAgYWN0dWFsQWxpZ25tZW50ID0gaXRlbVN0eWxlLT5pc0xlZnRUb1JpZ2h0
RGlyZWN0aW9uKCkgPyBUZXh0QWxpZ25Nb2RlOjpMZWZ0IDogVGV4dEFsaWduTW9kZTo6UmlnaHQ7
CiAKICAgICBMYXlvdXRTaXplIG9mZnNldCA9IExheW91dFNpemUoMCwgaXRlbUZvbnQuZm9udE1l
dHJpY3MoKS5hc2NlbnQoKSk7Ci0gICAgaWYgKGFjdHVhbEFsaWdubWVudCA9PSBSSUdIVCB8fCBh
Y3R1YWxBbGlnbm1lbnQgPT0gV0VCS0lUX1JJR0hUKSB7CisgICAgaWYgKGFjdHVhbEFsaWdubWVu
dCA9PSBUZXh0QWxpZ25Nb2RlOjpSaWdodCB8fCBhY3R1YWxBbGlnbm1lbnQgPT0gVGV4dEFsaWdu
TW9kZTo6V2ViS2l0UmlnaHQpIHsKICAgICAgICAgZmxvYXQgdGV4dFdpZHRoID0gaXRlbUZvbnQu
d2lkdGgodGV4dFJ1bik7CiAgICAgICAgIG9mZnNldC5zZXRXaWR0aChpdGVtQm91ZGluZ0JveC53
aWR0aCgpIC0gdGV4dFdpZHRoIC0gb3B0aW9uc1NwYWNpbmdIb3Jpem9udGFsKTsKLSAgICB9IGVs
c2UgaWYgKGFjdHVhbEFsaWdubWVudCA9PSBDRU5URVIgfHwgYWN0dWFsQWxpZ25tZW50ID09IFdF
QktJVF9DRU5URVIpIHsKKyAgICB9IGVsc2UgaWYgKGFjdHVhbEFsaWdubWVudCA9PSBUZXh0QWxp
Z25Nb2RlOjpDZW50ZXIgfHwgYWN0dWFsQWxpZ25tZW50ID09IFRleHRBbGlnbk1vZGU6OldlYktp
dENlbnRlcikgewogICAgICAgICBmbG9hdCB0ZXh0V2lkdGggPSBpdGVtRm9udC53aWR0aCh0ZXh0
UnVuKTsKICAgICAgICAgb2Zmc2V0LnNldFdpZHRoKChpdGVtQm91ZGluZ0JveC53aWR0aCgpIC0g
dGV4dFdpZHRoKSAvIDIpOwogICAgIH0gZWxzZQpAQCAtNDExLDcgKzQxMSw3IEBAIHZvaWQgUmVu
ZGVyTGlzdEJveDo6cGFpbnRJdGVtRm9yZWdyb3VuZCgKIAogICAgIGF1dG8mIGl0ZW1TdHlsZSA9
ICpsaXN0SXRlbUVsZW1lbnQtPmNvbXB1dGVkU3R5bGUoKTsKIAotICAgIGlmIChpdGVtU3R5bGUu
dmlzaWJpbGl0eSgpID09IEhJRERFTikKKyAgICBpZiAoaXRlbVN0eWxlLnZpc2liaWxpdHkoKSA9
PSBWaXNpYmlsaXR5OjpIaWRkZW4pCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyBpdGVt
VGV4dDsKQEAgLTQ2NSw3ICs0NjUsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUJh
Y2tncm91bmQoCiAgICAgICAgIGJhY2tDb2xvciA9IGl0ZW1TdHlsZS52aXNpdGVkRGVwZW5kZW50
Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwogCiAgICAg
Ly8gRHJhdyB0aGUgYmFja2dyb3VuZCBmb3IgdGhpcyBsaXN0IGJveCBpdGVtCi0gICAgaWYgKGl0
ZW1TdHlsZS52aXNpYmlsaXR5KCkgPT0gSElEREVOKQorICAgIGlmIChpdGVtU3R5bGUudmlzaWJp
bGl0eSgpID09IFZpc2liaWxpdHk6OkhpZGRlbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgTGF5
b3V0UmVjdCBpdGVtUmVjdCA9IGl0ZW1Cb3VuZGluZ0JveFJlY3QocGFpbnRPZmZzZXQsIGxpc3RJ
bmRleCk7CkBAIC05MTQsNyArOTE0LDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94Ojpsb2dNb2NrU2Ny
b2xsQW5pbWF0bwogUmVmPFNjcm9sbGJhcj4gUmVuZGVyTGlzdEJveDo6Y3JlYXRlU2Nyb2xsYmFy
KCkKIHsKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiB3aWRnZXQ7Ci0gICAgYm9vbCBoYXNDdXN0b21T
Y3JvbGxiYXJTdHlsZSA9IHN0eWxlKCkuaGFzUHNldWRvU3R5bGUoU0NST0xMQkFSKTsKKyAgICBi
b29sIGhhc0N1c3RvbVNjcm9sbGJhclN0eWxlID0gc3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShQc2V1
ZG9JZDo6U2Nyb2xsYmFyKTsKICAgICBpZiAoaGFzQ3VzdG9tU2Nyb2xsYmFyU3R5bGUpCiAgICAg
ICAgIHdpZGdldCA9IFJlbmRlclNjcm9sbGJhcjo6Y3JlYXRlQ3VzdG9tU2Nyb2xsYmFyKCp0aGlz
LCBWZXJ0aWNhbFNjcm9sbGJhciwgJnNlbGVjdEVsZW1lbnQoKSk7CiAgICAgZWxzZSB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAJKHJldmlzaW9u
IDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgUmVuZGVyU3R5bGUgUmVuZGVyTGlzdEl0
ZW06OmNvbXB1dGVNYXJrZQogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRWYXJpYW50TnVtZXJpY1Nw
YWNpbmcoRm9udFZhcmlhbnROdW1lcmljU3BhY2luZzo6VGFidWxhck51bWJlcnMpOwogICAgIHBh
cmVudFN0eWxlLnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwogICAgIHBhcmVu
dFN0eWxlLmZvbnRDYXNjYWRlKCkudXBkYXRlKCZkb2N1bWVudCgpLmZvbnRTZWxlY3RvcigpKTsK
LSAgICBpZiAoYXV0byBtYXJrZXJTdHlsZSA9IGdldENhY2hlZFBzZXVkb1N0eWxlKE1BUktFUiwg
JnBhcmVudFN0eWxlKSkKKyAgICBpZiAoYXV0byBtYXJrZXJTdHlsZSA9IGdldENhY2hlZFBzZXVk
b1N0eWxlKFBzZXVkb0lkOjpNYXJrZXIsICZwYXJlbnRTdHlsZSkpCiAgICAgICAgIHJldHVybiBS
ZW5kZXJTdHlsZTo6Y2xvbmUoKm1hcmtlclN0eWxlKTsKICAgICBhdXRvIG1hcmtlclN0eWxlID0g
UmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwogICAgIG1hcmtlclN0eWxlLmluaGVyaXRGcm9tKHBhcmVu
dFN0eWxlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1h
cmtlci5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaXN0TWFya2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA1LDE5NyArNDA1LDE5NyBA
QCBzdGF0aWMgTkVWRVJfSU5MSU5FIHZvaWQgdG9DSktJZGVvZ3JhcGhpCiAgICAgYnVpbGRlci5h
cHBlbmQoY2hhcmFjdGVycywgbGVuZ3RoKTsKIH0KIAotc3RhdGljIEVMaXN0U3R5bGVUeXBlIGVm
ZmVjdGl2ZUxpc3RNYXJrZXJUeXBlKEVMaXN0U3R5bGVUeXBlIHR5cGUsIGludCB2YWx1ZSkKK3N0
YXRpYyBMaXN0U3R5bGVUeXBlIGVmZmVjdGl2ZUxpc3RNYXJrZXJUeXBlKExpc3RTdHlsZVR5cGUg
dHlwZSwgaW50IHZhbHVlKQogewogICAgIC8vIE5vdGUsIHRoZSBmb2xsb3dpbmcgc3dpdGNoIHN0
YXRlbWVudCBoYXMgYmVlbiBleHBsaWNpdGx5IGdyb3VwZWQKICAgICAvLyBieSBsaXN0LXN0eWxl
LXR5cGUgb3JkaW5hbCByYW5nZS4KICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIEFyYWJp
Y0luZGljOgotICAgIGNhc2UgQmVuZ2FsaToKLSAgICBjYXNlIEJpbmFyeUxpc3RTdHlsZToKLSAg
ICBjYXNlIENhbWJvZGlhbjoKLSAgICBjYXNlIENpcmNsZToKLSAgICBjYXNlIERlY2ltYWxMZWFk
aW5nWmVybzoKLSAgICBjYXNlIERlY2ltYWxMaXN0U3R5bGU6Ci0gICAgY2FzZSBEZXZhbmFnYXJp
OgotICAgIGNhc2UgRGlzYzoKLSAgICBjYXNlIEd1amFyYXRpOgotICAgIGNhc2UgR3VybXVraGk6
Ci0gICAgY2FzZSBLYW5uYWRhOgotICAgIGNhc2UgS2htZXI6Ci0gICAgY2FzZSBMYW86Ci0gICAg
Y2FzZSBMb3dlckhleGFkZWNpbWFsOgotICAgIGNhc2UgTWFsYXlhbGFtOgotICAgIGNhc2UgTW9u
Z29saWFuOgotICAgIGNhc2UgTXlhbm1hcjoKLSAgICBjYXNlIE5vbmVMaXN0U3R5bGU6Ci0gICAg
Y2FzZSBPY3RhbDoKLSAgICBjYXNlIE9yaXlhOgotICAgIGNhc2UgUGVyc2lhbjoKLSAgICBjYXNl
IFNxdWFyZToKLSAgICBjYXNlIFRlbHVndToKLSAgICBjYXNlIFRoYWk6Ci0gICAgY2FzZSBUaWJl
dGFuOgotICAgIGNhc2UgVXBwZXJIZXhhZGVjaW1hbDoKLSAgICBjYXNlIFVyZHU6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpBcmFiaWNJbmRpYzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkJl
bmdhbGk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpCaW5hcnk6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpDYW1ib2RpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDaXJjbGU6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpEZWNpbWFsTGVhZGluZ1plcm86CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpEZWNpbWFsOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGV2YW5hZ2FyaToKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OkRpc2M6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpHdWph
cmF0aToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okd1cm11a2hpOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6S2FubmFkYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OktobWVyOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6TGFvOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJIZXhh
ZGVjaW1hbDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok1hbGF5YWxhbToKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6Ok1vbmdvbGlhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok15YW5tYXI6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpOb25lOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
T2N0YWw6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpPcml5YToKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OlBlcnNpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpTcXVhcmU6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpUZWx1Z3U6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaGFpOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGliZXRhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
OlVwcGVySGV4YWRlY2ltYWw6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcmR1OgogICAgICAg
ICByZXR1cm4gdHlwZTsgLy8gQ2FuIHJlcHJlc2VudCBhbGwgb3JkaW5hbHMuCi0gICAgY2FzZSBB
cm1lbmlhbjoKLSAgICAgICAgcmV0dXJuICh2YWx1ZSA8IDEgfHwgdmFsdWUgPiA5OTk5OTk5OSkg
PyBEZWNpbWFsTGlzdFN0eWxlIDogdHlwZTsKLSAgICBjYXNlIENKS0lkZW9ncmFwaGljOgotICAg
ICAgICByZXR1cm4gKHZhbHVlIDwgMCkgPyBEZWNpbWFsTGlzdFN0eWxlIDogdHlwZTsKLSAgICBj
YXNlIEdlb3JnaWFuOgotICAgICAgICByZXR1cm4gKHZhbHVlIDwgMSB8fCB2YWx1ZSA+IDE5OTk5
KSA/IERlY2ltYWxMaXN0U3R5bGUgOiB0eXBlOwotICAgIGNhc2UgSGVicmV3OgotICAgICAgICBy
ZXR1cm4gKHZhbHVlIDwgMCB8fCB2YWx1ZSA+IDk5OTk5OSkgPyBEZWNpbWFsTGlzdFN0eWxlIDog
dHlwZTsKLSAgICBjYXNlIExvd2VyUm9tYW46Ci0gICAgY2FzZSBVcHBlclJvbWFuOgotICAgICAg
ICByZXR1cm4gKHZhbHVlIDwgMSB8fCB2YWx1ZSA+IDM5OTkpID8gRGVjaW1hbExpc3RTdHlsZSA6
IHR5cGU7Ci0gICAgY2FzZSBBZmFyOgotICAgIGNhc2UgQW1oYXJpYzoKLSAgICBjYXNlIEFtaGFy
aWNBYmVnZWRlOgotICAgIGNhc2UgQXN0ZXJpc2tzOgotICAgIGNhc2UgQ2prRWFydGhseUJyYW5j
aDoKLSAgICBjYXNlIENqa0hlYXZlbmx5U3RlbToKLSAgICBjYXNlIEV0aGlvcGljOgotICAgIGNh
c2UgRXRoaW9waWNBYmVnZWRlOgotICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlQW1FdDoKLSAgICBj
YXNlIEV0aGlvcGljQWJlZ2VkZUdlejoKLSAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZVRpRXI6Ci0g
ICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVUaUV0OgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUFh
RXI6Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lQWFFdDoKLSAgICBjYXNlIEV0aGlvcGljSGFs
ZWhhbWVBbUV0OgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUdlejoKLSAgICBjYXNlIEV0aGlv
cGljSGFsZWhhbWVPbUV0OgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVNpZEV0OgotICAgIGNh
c2UgRXRoaW9waWNIYWxlaGFtZVNvRXQ6Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lVGlFcjoK
LSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVUaUV0OgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFt
ZVRpZzoKLSAgICBjYXNlIEZvb3Rub3RlczoKLSAgICBjYXNlIEhhbmd1bDoKLSAgICBjYXNlIEhh
bmd1bENvbnNvbmFudDoKLSAgICBjYXNlIEhpcmFnYW5hOgotICAgIGNhc2UgSGlyYWdhbmFJcm9o
YToKLSAgICBjYXNlIEthdGFrYW5hOgotICAgIGNhc2UgS2F0YWthbmFJcm9oYToKLSAgICBjYXNl
IExvd2VyQWxwaGE6Ci0gICAgY2FzZSBMb3dlckFybWVuaWFuOgotICAgIGNhc2UgTG93ZXJHcmVl
azoKLSAgICBjYXNlIExvd2VyTGF0aW46Ci0gICAgY2FzZSBMb3dlck5vcndlZ2lhbjoKLSAgICBj
YXNlIE9yb21vOgotICAgIGNhc2UgU2lkYW1hOgotICAgIGNhc2UgU29tYWxpOgotICAgIGNhc2Ug
VGlncmU6Ci0gICAgY2FzZSBUaWdyaW55YUVyOgotICAgIGNhc2UgVGlncmlueWFFckFiZWdlZGU6
Ci0gICAgY2FzZSBUaWdyaW55YUV0OgotICAgIGNhc2UgVGlncmlueWFFdEFiZWdlZGU6Ci0gICAg
Y2FzZSBVcHBlckFscGhhOgotICAgIGNhc2UgVXBwZXJBcm1lbmlhbjoKLSAgICBjYXNlIFVwcGVy
R3JlZWs6Ci0gICAgY2FzZSBVcHBlckxhdGluOgotICAgIGNhc2UgVXBwZXJOb3J3ZWdpYW46Ci0g
ICAgICAgIHJldHVybiAodmFsdWUgPCAxKSA/IERlY2ltYWxMaXN0U3R5bGUgOiB0eXBlOworICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6QXJtZW5pYW46CisgICAgICAgIHJldHVybiAodmFsdWUgPCAx
IHx8IHZhbHVlID4gOTk5OTk5OTkpID8gTGlzdFN0eWxlVHlwZTo6RGVjaW1hbCA6IHR5cGU7Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDSktJZGVvZ3JhcGhpYzoKKyAgICAgICAgcmV0dXJuICh2
YWx1ZSA8IDApID8gTGlzdFN0eWxlVHlwZTo6RGVjaW1hbCA6IHR5cGU7CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpHZW9yZ2lhbjoKKyAgICAgICAgcmV0dXJuICh2YWx1ZSA8IDEgfHwgdmFsdWUg
PiAxOTk5OSkgPyBMaXN0U3R5bGVUeXBlOjpEZWNpbWFsIDogdHlwZTsKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OkhlYnJldzoKKyAgICAgICAgcmV0dXJuICh2YWx1ZSA8IDAgfHwgdmFsdWUgPiA5
OTk5OTkpID8gTGlzdFN0eWxlVHlwZTo6RGVjaW1hbCA6IHR5cGU7CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpMb3dlclJvbWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJSb21hbjoK
KyAgICAgICAgcmV0dXJuICh2YWx1ZSA8IDEgfHwgdmFsdWUgPiAzOTk5KSA/IExpc3RTdHlsZVR5
cGU6OkRlY2ltYWwgOiB0eXBlOworICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QWZhcjoKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OkFtaGFyaWM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBbWhh
cmljQWJlZ2VkZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFzdGVyaXNrczoKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OkNqa0VhcnRobHlCcmFuY2g6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpDamtIZWF2ZW5seVN0ZW06CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpYzoKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZToKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OkV0aGlvcGljQWJlZ2VkZUFtRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhp
b3BpY0FiZWdlZGVHZXo6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGVU
aUVyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlVGlFdDoKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVBYUVyOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUFhRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpF
dGhpb3BpY0hhbGVoYW1lQW1FdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFs
ZWhhbWVHZXo6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lT21FdDoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVTaWRFdDoKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVTb0V0OgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6RXRoaW9waWNIYWxlaGFtZVRpRXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhp
b3BpY0hhbGVoYW1lVGlFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhh
bWVUaWc6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpGb290bm90ZXM6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpIYW5ndWw6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIYW5ndWxDb25zb25h
bnQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIaXJhZ2FuYToKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OkhpcmFnYW5hSXJvaGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLYXRha2FuYToK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkthdGFrYW5hSXJvaGE6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpMb3dlckFscGhhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJBcm1lbmlh
bjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyR3JlZWs6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpMb3dlckxhdGluOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJOb3J3ZWdp
YW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpPcm9tbzoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OlNpZGFtYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlNvbWFsaToKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OlRpZ3JlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmlueWFFcjoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXJBYmVnZWRlOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6VGlncmlueWFFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3Jpbnlh
RXRBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJBbHBoYToKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OlVwcGVyQXJtZW5pYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpV
cHBlckdyZWVrOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJMYXRpbjoKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OlVwcGVyTm9yd2VnaWFuOgorICAgICAgICByZXR1cm4gKHZhbHVlIDwg
MSkgPyBMaXN0U3R5bGVUeXBlOjpEZWNpbWFsIDogdHlwZTsKICAgICB9CiAKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gdHlwZTsKIH0KIAotc3RhdGljIFVDaGFyIGxpc3RN
YXJrZXJTdWZmaXgoRUxpc3RTdHlsZVR5cGUgdHlwZSwgaW50IHZhbHVlKQorc3RhdGljIFVDaGFy
IGxpc3RNYXJrZXJTdWZmaXgoTGlzdFN0eWxlVHlwZSB0eXBlLCBpbnQgdmFsdWUpCiB7CiAgICAg
Ly8gSWYgdGhlIGxpc3Qtc3R5bGUtdHlwZSBjYW5ub3QgcmVwcmVzZW50IHx2YWx1ZXwgYmVjYXVz
ZSBpdCdzIG91dHNpZGUgaXRzCiAgICAgLy8gb3JkaW5hbCByYW5nZSB0aGVuIHdlIGZhbGwgYmFj
ayB0byBzb21lIGxpc3Qgc3R5bGUgdGhhdCBjYW4gcmVwcmVzZW50IHx2YWx1ZXwuCi0gICAgRUxp
c3RTdHlsZVR5cGUgZWZmZWN0aXZlVHlwZSA9IGVmZmVjdGl2ZUxpc3RNYXJrZXJUeXBlKHR5cGUs
IHZhbHVlKTsKKyAgICBMaXN0U3R5bGVUeXBlIGVmZmVjdGl2ZVR5cGUgPSBlZmZlY3RpdmVMaXN0
TWFya2VyVHlwZSh0eXBlLCB2YWx1ZSk7CiAKICAgICAvLyBOb3RlLCB0aGUgZm9sbG93aW5nIHN3
aXRjaCBzdGF0ZW1lbnQgaGFzIGJlZW4gZXhwbGljaXRseQogICAgIC8vIGdyb3VwZWQgYnkgbGlz
dC1zdHlsZS10eXBlIHN1ZmZpeC4KICAgICBzd2l0Y2ggKGVmZmVjdGl2ZVR5cGUpIHsKLSAgICBj
YXNlIEFzdGVyaXNrczoKLSAgICBjYXNlIENpcmNsZToKLSAgICBjYXNlIERpc2M6Ci0gICAgY2Fz
ZSBGb290bm90ZXM6Ci0gICAgY2FzZSBOb25lTGlzdFN0eWxlOgotICAgIGNhc2UgU3F1YXJlOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QXN0ZXJpc2tzOgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6Q2lyY2xlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGlzYzoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OkZvb3Rub3RlczoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok5vbmU6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpTcXVhcmU6CiAgICAgICAgIHJldHVybiAnICc7Ci0gICAgY2Fz
ZSBBZmFyOgotICAgIGNhc2UgQW1oYXJpYzoKLSAgICBjYXNlIEFtaGFyaWNBYmVnZWRlOgotICAg
IGNhc2UgRXRoaW9waWM6Ci0gICAgY2FzZSBFdGhpb3BpY0FiZWdlZGU6Ci0gICAgY2FzZSBFdGhp
b3BpY0FiZWdlZGVBbUV0OgotICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlR2V6OgotICAgIGNhc2Ug
RXRoaW9waWNBYmVnZWRlVGlFcjoKLSAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZVRpRXQ6Ci0gICAg
Y2FzZSBFdGhpb3BpY0hhbGVoYW1lQWFFcjoKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVBYUV0
OgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUFtRXQ6Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVo
YW1lR2V6OgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZU9tRXQ6Ci0gICAgY2FzZSBFdGhpb3Bp
Y0hhbGVoYW1lU2lkRXQ6Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lU29FdDoKLSAgICBjYXNl
IEV0aGlvcGljSGFsZWhhbWVUaUVyOgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVRpRXQ6Ci0g
ICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lVGlnOgotICAgIGNhc2UgT3JvbW86Ci0gICAgY2FzZSBT
aWRhbWE6Ci0gICAgY2FzZSBTb21hbGk6Ci0gICAgY2FzZSBUaWdyZToKLSAgICBjYXNlIFRpZ3Jp
bnlhRXI6Ci0gICAgY2FzZSBUaWdyaW55YUVyQWJlZ2VkZToKLSAgICBjYXNlIFRpZ3JpbnlhRXQ6
Ci0gICAgY2FzZSBUaWdyaW55YUV0QWJlZ2VkZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFm
YXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBbWhhcmljOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6QW1oYXJpY0FiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpYzoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZToKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZUFtRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpF
dGhpb3BpY0FiZWdlZGVHZXo6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdl
ZGVUaUVyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlVGlFdDoKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVBYUVyOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUFhRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpFdGhpb3BpY0hhbGVoYW1lQW1FdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGlj
SGFsZWhhbWVHZXo6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lT21F
dDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVTaWRFdDoKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVTb0V0OgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVRpRXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpF
dGhpb3BpY0hhbGVoYW1lVGlFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFs
ZWhhbWVUaWc6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpPcm9tbzoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OlNpZGFtYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlNvbWFsaToKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmlu
eWFFcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXJBYmVnZWRlOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6VGlncmlueWFFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRp
Z3JpbnlhRXRBYmVnZWRlOgogICAgICAgICByZXR1cm4gZXRoaW9waWNQcmVmYWNlQ29sb247Ci0g
ICAgY2FzZSBBcm1lbmlhbjoKLSAgICBjYXNlIEFyYWJpY0luZGljOgotICAgIGNhc2UgQmVuZ2Fs
aToKLSAgICBjYXNlIEJpbmFyeUxpc3RTdHlsZToKLSAgICBjYXNlIENhbWJvZGlhbjoKLSAgICBj
YXNlIENKS0lkZW9ncmFwaGljOgotICAgIGNhc2UgQ2prRWFydGhseUJyYW5jaDoKLSAgICBjYXNl
IENqa0hlYXZlbmx5U3RlbToKLSAgICBjYXNlIERlY2ltYWxMZWFkaW5nWmVybzoKLSAgICBjYXNl
IERlY2ltYWxMaXN0U3R5bGU6Ci0gICAgY2FzZSBEZXZhbmFnYXJpOgotICAgIGNhc2UgR2Vvcmdp
YW46Ci0gICAgY2FzZSBHdWphcmF0aToKLSAgICBjYXNlIEd1cm11a2hpOgotICAgIGNhc2UgSGFu
Z3VsOgotICAgIGNhc2UgSGFuZ3VsQ29uc29uYW50OgotICAgIGNhc2UgSGVicmV3OgotICAgIGNh
c2UgSGlyYWdhbmE6Ci0gICAgY2FzZSBIaXJhZ2FuYUlyb2hhOgotICAgIGNhc2UgS2FubmFkYToK
LSAgICBjYXNlIEthdGFrYW5hOgotICAgIGNhc2UgS2F0YWthbmFJcm9oYToKLSAgICBjYXNlIEto
bWVyOgotICAgIGNhc2UgTGFvOgotICAgIGNhc2UgTG93ZXJBbHBoYToKLSAgICBjYXNlIExvd2Vy
QXJtZW5pYW46Ci0gICAgY2FzZSBMb3dlckdyZWVrOgotICAgIGNhc2UgTG93ZXJIZXhhZGVjaW1h
bDoKLSAgICBjYXNlIExvd2VyTGF0aW46Ci0gICAgY2FzZSBMb3dlck5vcndlZ2lhbjoKLSAgICBj
YXNlIExvd2VyUm9tYW46Ci0gICAgY2FzZSBNYWxheWFsYW06Ci0gICAgY2FzZSBNb25nb2xpYW46
Ci0gICAgY2FzZSBNeWFubWFyOgotICAgIGNhc2UgT2N0YWw6Ci0gICAgY2FzZSBPcml5YToKLSAg
ICBjYXNlIFBlcnNpYW46Ci0gICAgY2FzZSBUZWx1Z3U6Ci0gICAgY2FzZSBUaGFpOgotICAgIGNh
c2UgVGliZXRhbjoKLSAgICBjYXNlIFVwcGVyQWxwaGE6Ci0gICAgY2FzZSBVcHBlckFybWVuaWFu
OgotICAgIGNhc2UgVXBwZXJHcmVlazoKLSAgICBjYXNlIFVwcGVySGV4YWRlY2ltYWw6Ci0gICAg
Y2FzZSBVcHBlckxhdGluOgotICAgIGNhc2UgVXBwZXJOb3J3ZWdpYW46Ci0gICAgY2FzZSBVcHBl
clJvbWFuOgotICAgIGNhc2UgVXJkdToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFybWVuaWFu
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QXJhYmljSW5kaWM6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpCZW5nYWxpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QmluYXJ5OgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6Q2FtYm9kaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q0pL
SWRlb2dyYXBoaWM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDamtFYXJ0aGx5QnJhbmNoOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2prSGVhdmVubHlTdGVtOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6RGVjaW1hbExlYWRpbmdaZXJvOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGVj
aW1hbDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRldmFuYWdhcmk6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpHZW9yZ2lhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okd1amFyYXRpOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6R3VybXVraGk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpIYW5ndWw6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIYW5ndWxDb25zb25hbnQ6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpIZWJyZXc6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIaXJh
Z2FuYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkhpcmFnYW5hSXJvaGE6CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpLYW5uYWRhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6S2F0YWthbmE6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLYXRha2FuYUlyb2hhOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6S2htZXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMYW86CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpMb3dlckFscGhhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJB
cm1lbmlhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyR3JlZWs6CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpMb3dlckhleGFkZWNpbWFsOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
TG93ZXJMYXRpbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyTm9yd2VnaWFuOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJSb21hbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
Ok1hbGF5YWxhbToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok1vbmdvbGlhbjoKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6Ok15YW5tYXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpPY3RhbDoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok9yaXlhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
UGVyc2lhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRlbHVndToKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OlRoYWk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWJldGFuOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJBbHBoYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVw
cGVyQXJtZW5pYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckdyZWVrOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJIZXhhZGVjaW1hbDoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OlVwcGVyTGF0aW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlck5vcndlZ2lhbjoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyUm9tYW46CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpVcmR1OgogICAgICAgICByZXR1cm4gJy4nOwogICAgIH0KIApAQCAtNjAzLDUxOCArNjAz
LDUxOCBAQCBzdGF0aWMgVUNoYXIgbGlzdE1hcmtlclN1ZmZpeChFTGlzdFN0eWxlCiAgICAgcmV0
dXJuICcuJzsKIH0KIAotU3RyaW5nIGxpc3RNYXJrZXJUZXh0KEVMaXN0U3R5bGVUeXBlIHR5cGUs
IGludCB2YWx1ZSkKK1N0cmluZyBsaXN0TWFya2VyVGV4dChMaXN0U3R5bGVUeXBlIHR5cGUsIGlu
dCB2YWx1ZSkKIHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAKICAgICAvLyBJZiB0aGUg
bGlzdC1zdHlsZS10eXBlLCBzYXkgaGVicmV3LCBjYW5ub3QgcmVwcmVzZW50IHx2YWx1ZXwgYmVj
YXVzZSBpdCdzIG91dHNpZGUKICAgICAvLyBpdHMgb3JkaW5hbCByYW5nZSB0aGVuIHdlIGZhbGxi
YWNrIHRvIHNvbWUgbGlzdCBzdHlsZSB0aGF0IGNhbiByZXByZXNlbnQgfHZhbHVlfC4KICAgICBz
d2l0Y2ggKGVmZmVjdGl2ZUxpc3RNYXJrZXJUeXBlKHR5cGUsIHZhbHVlKSkgewotICAgICAgICBj
YXNlIE5vbmVMaXN0U3R5bGU6Ci0gICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6Ok5vbmU6CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygp
OwogCi0gICAgICAgIGNhc2UgQXN0ZXJpc2tzOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3Qg
TENoYXIgYXN0ZXJpc2tzU3ltYm9sc1sxXSA9IHsgMHgyQSB9OwotICAgICAgICAgICAgdG9TeW1i
b2xpYyhidWlsZGVyLCB2YWx1ZSwgYXN0ZXJpc2tzU3ltYm9scyk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICAvLyBXZSB1c2UgdGhlIHNhbWUgY2hhcmFjdGVycyBmb3Ig
dGV4dCBzZWN1cml0eS4KLSAgICAgICAgLy8gU2VlIFJlbmRlclRleHQ6OnNldEludGVybmFsU3Ry
aW5nLgotICAgICAgICBjYXNlIENpcmNsZToKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHdo
aXRlQnVsbGV0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIERpc2M6Ci0gICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZChidWxsZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgRm9vdG5vdGVzOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZm9v
dG5vdGVzU3ltYm9sc1s0XSA9IHsgMHgwMDJBLCAweDIwNTEsIDB4MjAyMCwgMHgyMDIxIH07Ci0g
ICAgICAgICAgICB0b1N5bWJvbGljKGJ1aWxkZXIsIHZhbHVlLCBmb290bm90ZXNTeW1ib2xzKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgU3F1YXJlOgotICAg
ICAgICAgICAgLy8gVGhlIENTUyAyLjEgdGVzdCBzdWl0ZSB1c2VzIFUrMjVFRSBCTEFDSyBNRURJ
VU0gU01BTEwgU1FVQVJFCi0gICAgICAgICAgICAvLyBpbnN0ZWFkLCBidXQgSSB0aGluayB0aGlz
IGxvb2tzIGJldHRlci4KLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGJsYWNrU3F1YXJlKTsK
LSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgRGVjaW1hbExpc3RTdHlsZToKLSAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKHZhbHVlKTsKLSAgICAgICAgICAgIGJyZWFr
OworICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QXN0ZXJpc2tzOiB7CisgICAgICAgIHN0YXRpYyBj
b25zdCBMQ2hhciBhc3Rlcmlza3NTeW1ib2xzWzFdID0geyAweDJBIH07CisgICAgICAgIHRvU3lt
Ym9saWMoYnVpbGRlciwgdmFsdWUsIGFzdGVyaXNrc1N5bWJvbHMpOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgLy8gV2UgdXNlIHRoZSBzYW1lIGNoYXJhY3RlcnMgZm9yIHRleHQgc2VjdXJp
dHkuCisgICAgLy8gU2VlIFJlbmRlclRleHQ6OnNldEludGVybmFsU3RyaW5nLgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6Q2lyY2xlOgorICAgICAgICBidWlsZGVyLmFwcGVuZCh3aGl0ZUJ1bGxl
dCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGlzYzoKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoYnVsbGV0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpGb290bm90ZXM6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGZvb3Ru
b3Rlc1N5bWJvbHNbNF0gPSB7IDB4MDAyQSwgMHgyMDUxLCAweDIwMjAsIDB4MjAyMSB9OworICAg
ICAgICB0b1N5bWJvbGljKGJ1aWxkZXIsIHZhbHVlLCBmb290bm90ZXNTeW1ib2xzKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6U3F1YXJlOgorICAgICAg
ICAvLyBUaGUgQ1NTIDIuMSB0ZXN0IHN1aXRlIHVzZXMgVSsyNUVFIEJMQUNLIE1FRElVTSBTTUFM
TCBTUVVBUkUKKyAgICAgICAgLy8gaW5zdGVhZCwgYnV0IEkgdGhpbmsgdGhpcyBsb29rcyBiZXR0
ZXIuCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGJsYWNrU3F1YXJlKTsKKyAgICAgICAgYnJlYWs7
CiAKLSAgICAgICAgY2FzZSBEZWNpbWFsTGVhZGluZ1plcm86Ci0gICAgICAgICAgICBpZiAodmFs
dWUgPCAtOSB8fCB2YWx1ZSA+IDkpIHsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51
bWJlcih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBpZiAodmFsdWUgPCAwKSB7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCItMCIpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKC12YWx1
ZSk7IC8vIC0wMSB0byAtMDkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcwJyk7Ci0gICAgICAgICAgICBidWlsZGVyLmFw
cGVuZE51bWJlcih2YWx1ZSk7IC8vIDAwIHRvIDA5Ci0gICAgICAgICAgICBicmVhazsKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OkRlY2ltYWw6CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVy
KHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2FzZSBBcmFiaWNJbmRpYzogewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGFyYWJpY0luZGljTnVtZXJhbHNbMTBdID0g
ewotICAgICAgICAgICAgICAgIDB4MDY2MCwgMHgwNjYxLCAweDA2NjIsIDB4MDY2MywgMHgwNjY0
LCAweDA2NjUsIDB4MDY2NiwgMHgwNjY3LCAweDA2NjgsIDB4MDY2OQotICAgICAgICAgICAgfTsK
LSAgICAgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgYXJhYmljSW5kaWNOdW1lcmFs
cyk7CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEZWNpbWFsTGVhZGluZ1plcm86CisgICAgICAg
IGlmICh2YWx1ZSA8IC05IHx8IHZhbHVlID4gOSkgeworICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmROdW1iZXIodmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLQotICAgICAg
ICBjYXNlIEJpbmFyeUxpc3RTdHlsZTogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IExDaGFy
IGJpbmFyeU51bWVyYWxzWzJdID0geyAnMCcsICcxJyB9OwotICAgICAgICAgICAgdG9OdW1lcmlj
KGJ1aWxkZXIsIHZhbHVlLCBiaW5hcnlOdW1lcmFscyk7CisgICAgICAgIGlmICh2YWx1ZSA8IDAp
IHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLTAiKTsKKyAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTnVtYmVyKC12YWx1ZSk7IC8vIC0wMSB0byAtMDkKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcwJyk7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTnVtYmVyKHZhbHVlKTsgLy8gMDAgdG8gMDkKKyAgICAgICAgYnJlYWs7
CiAKLSAgICAgICAgY2FzZSBCZW5nYWxpOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNo
YXIgYmVuZ2FsaU51bWVyYWxzWzEwXSA9IHsKLSAgICAgICAgICAgICAgICAweDA5RTYsIDB4MDlF
NywgMHgwOUU4LCAweDA5RTksIDB4MDlFQSwgMHgwOUVCLCAweDA5RUMsIDB4MDlFRCwgMHgwOUVF
LCAweDA5RUYKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b051bWVyaWMoYnVpbGRlciwg
dmFsdWUsIGJlbmdhbGlOdW1lcmFscyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QXJhYmljSW5kaWM6IHsKKyAgICAgICAgc3RhdGljIGNv
bnN0IFVDaGFyIGFyYWJpY0luZGljTnVtZXJhbHNbMTBdID0geworICAgICAgICAgICAgMHgwNjYw
LCAweDA2NjEsIDB4MDY2MiwgMHgwNjYzLCAweDA2NjQsIDB4MDY2NSwgMHgwNjY2LCAweDA2Njcs
IDB4MDY2OCwgMHgwNjY5CisgICAgICAgIH07CisgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2
YWx1ZSwgYXJhYmljSW5kaWNOdW1lcmFscyk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAotICAg
ICAgICBjYXNlIENhbWJvZGlhbjoKLSAgICAgICAgY2FzZSBLaG1lcjogewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IFVDaGFyIGtobWVyTnVtZXJhbHNbMTBdID0gewotICAgICAgICAgICAgICAg
IDB4MTdFMCwgMHgxN0UxLCAweDE3RTIsIDB4MTdFMywgMHgxN0U0LCAweDE3RTUsIDB4MTdFNiwg
MHgxN0U3LCAweDE3RTgsIDB4MTdFOQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvTnVt
ZXJpYyhidWlsZGVyLCB2YWx1ZSwga2htZXJOdW1lcmFscyk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICBjYXNlIERldmFuYWdhcmk6IHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBVQ2hhciBkZXZhbmFnYXJpTnVtZXJhbHNbMTBdID0gewotICAgICAgICAgICAgICAg
IDB4MDk2NiwgMHgwOTY3LCAweDA5NjgsIDB4MDk2OSwgMHgwOTZBLCAweDA5NkIsIDB4MDk2Qywg
MHgwOTZELCAweDA5NkUsIDB4MDk2RgotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvTnVt
ZXJpYyhidWlsZGVyLCB2YWx1ZSwgZGV2YW5hZ2FyaU51bWVyYWxzKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR3VqYXJhdGk6IHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBVQ2hhciBndWphcmF0aU51bWVyYWxzWzEwXSA9IHsKLSAgICAgICAgICAgICAg
ICAweDBBRTYsIDB4MEFFNywgMHgwQUU4LCAweDBBRTksIDB4MEFFQSwgMHgwQUVCLCAweDBBRUMs
IDB4MEFFRCwgMHgwQUVFLCAweDBBRUYKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b051
bWVyaWMoYnVpbGRlciwgdmFsdWUsIGd1amFyYXRpTnVtZXJhbHMpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHdXJtdWtoaTogewotICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IFVDaGFyIGd1cm11a2hpTnVtZXJhbHNbMTBdID0gewotICAgICAgICAgICAgICAg
IDB4MEE2NiwgMHgwQTY3LCAweDBBNjgsIDB4MEE2OSwgMHgwQTZBLCAweDBBNkIsIDB4MEE2Qywg
MHgwQTZELCAweDBBNkUsIDB4MEE2RgotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvTnVt
ZXJpYyhidWlsZGVyLCB2YWx1ZSwgZ3VybXVraGlOdW1lcmFscyk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEthbm5hZGE6IHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBVQ2hhciBrYW5uYWRhTnVtZXJhbHNbMTBdID0gewotICAgICAgICAgICAgICAgIDB4
MENFNiwgMHgwQ0U3LCAweDBDRTgsIDB4MENFOSwgMHgwQ0VBLCAweDBDRUIsIDB4MENFQywgMHgw
Q0VELCAweDBDRUUsIDB4MENFRgotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvTnVtZXJp
YyhidWlsZGVyLCB2YWx1ZSwga2FubmFkYU51bWVyYWxzKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgICAgIGNhc2UgTG93ZXJIZXhhZGVjaW1hbDogewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IExDaGFyIGxvd2VySGV4YWRlY2ltYWxOdW1lcmFsc1sxNl0gPSB7Ci0gICAg
ICAgICAgICAgICAgJzAnLCAnMScsICcyJywgJzMnLCAnNCcsICc1JywgJzYnLCAnNycsICc4Jywg
JzknLCAnYScsICdiJywgJ2MnLCAnZCcsICdlJywgJ2YnCi0gICAgICAgICAgICB9OwotICAgICAg
ICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBsb3dlckhleGFkZWNpbWFsTnVtZXJhbHMp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBMYW86IHsKLSAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBsYW9OdW1lcmFsc1sxMF0gPSB7Ci0gICAgICAg
ICAgICAgICAgMHgwRUQwLCAweDBFRDEsIDB4MEVEMiwgMHgwRUQzLCAweDBFRDQsIDB4MEVENSwg
MHgwRUQ2LCAweDBFRDcsIDB4MEVEOCwgMHgwRUQ5Ci0gICAgICAgICAgICB9OwotICAgICAgICAg
ICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBsYW9OdW1lcmFscyk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIE1hbGF5YWxhbTogewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IFVDaGFyIG1hbGF5YWxhbU51bWVyYWxzWzEwXSA9IHsKLSAgICAgICAgICAg
ICAgICAweDBENjYsIDB4MEQ2NywgMHgwRDY4LCAweDBENjksIDB4MEQ2QSwgMHgwRDZCLCAweDBE
NkMsIDB4MEQ2RCwgMHgwRDZFLCAweDBENkYKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0
b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIG1hbGF5YWxhbU51bWVyYWxzKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgTW9uZ29saWFuOiB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgVUNoYXIgbW9uZ29saWFuTnVtZXJhbHNbMTBdID0gewotICAgICAgICAg
ICAgICAgIDB4MTgxMCwgMHgxODExLCAweDE4MTIsIDB4MTgxMywgMHgxODE0LCAweDE4MTUsIDB4
MTgxNiwgMHgxODE3LCAweDE4MTgsIDB4MTgxOQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAg
IHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgbW9uZ29saWFuTnVtZXJhbHMpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBNeWFubWFyOiB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgVUNoYXIgbXlhbm1hck51bWVyYWxzWzEwXSA9IHsKLSAgICAgICAgICAg
ICAgICAweDEwNDAsIDB4MTA0MSwgMHgxMDQyLCAweDEwNDMsIDB4MTA0NCwgMHgxMDQ1LCAweDEw
NDYsIDB4MTA0NywgMHgxMDQ4LCAweDEwNDkKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0
b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIG15YW5tYXJOdW1lcmFscyk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIE9jdGFsOiB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgTENoYXIgb2N0YWxOdW1lcmFsc1s4XSA9IHsKLSAgICAgICAgICAgICAgICAnMCcs
ICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JwotICAgICAgICAgICAgfTsKLSAgICAg
ICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgb2N0YWxOdW1lcmFscyk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIE9yaXlhOiB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgVUNoYXIgb3JpeWFOdW1lcmFsc1sxMF0gPSB7Ci0gICAgICAgICAgICAg
ICAgMHgwQjY2LCAweDBCNjcsIDB4MEI2OCwgMHgwQjY5LCAweDBCNkEsIDB4MEI2QiwgMHgwQjZD
LCAweDBCNkQsIDB4MEI2RSwgMHgwQjZGCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9O
dW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBvcml5YU51bWVyYWxzKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgUGVyc2lhbjoKLSAgICAgICAgY2FzZSBVcmR1OiB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgdXJkdU51bWVyYWxzWzEwXSA9IHsKLSAg
ICAgICAgICAgICAgICAweDA2RjAsIDB4MDZGMSwgMHgwNkYyLCAweDA2RjMsIDB4MDZGNCwgMHgw
NkY1LCAweDA2RjYsIDB4MDZGNywgMHgwNkY4LCAweDA2RjkKLSAgICAgICAgICAgIH07Ci0gICAg
ICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIHVyZHVOdW1lcmFscyk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFRlbHVndTogewotICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IFVDaGFyIHRlbHVndU51bWVyYWxzWzEwXSA9IHsKLSAgICAgICAgICAg
ICAgICAweDBDNjYsIDB4MEM2NywgMHgwQzY4LCAweDBDNjksIDB4MEM2QSwgMHgwQzZCLCAweDBD
NkMsIDB4MEM2RCwgMHgwQzZFLCAweDBDNkYKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0
b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIHRlbHVndU51bWVyYWxzKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVGliZXRhbjogewotICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IFVDaGFyIHRpYmV0YW5OdW1lcmFsc1sxMF0gPSB7Ci0gICAgICAgICAgICAgICAg
MHgwRjIwLCAweDBGMjEsIDB4MEYyMiwgMHgwRjIzLCAweDBGMjQsIDB4MEYyNSwgMHgwRjI2LCAw
eDBGMjcsIDB4MEYyOCwgMHgwRjI5Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9OdW1l
cmljKGJ1aWxkZXIsIHZhbHVlLCB0aWJldGFuTnVtZXJhbHMpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUaGFpOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgVUNoYXIgdGhhaU51bWVyYWxzWzEwXSA9IHsKLSAgICAgICAgICAgICAgICAweDBFNTAsIDB4
MEU1MSwgMHgwRTUyLCAweDBFNTMsIDB4MEU1NCwgMHgwRTU1LCAweDBFNTYsIDB4MEU1NywgMHgw
RTU4LCAweDBFNTkKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b051bWVyaWMoYnVpbGRl
ciwgdmFsdWUsIHRoYWlOdW1lcmFscyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIFVwcGVySGV4YWRlY2ltYWw6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBMQ2hhciB1cHBlckhleGFkZWNpbWFsTnVtZXJhbHNbMTZdID0gewotICAgICAgICAgICAgICAg
ICcwJywgJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2JywgJzcnLCAnOCcsICc5JywgJ0EnLCAn
QicsICdDJywgJ0QnLCAnRScsICdGJwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvTnVt
ZXJpYyhidWlsZGVyLCB2YWx1ZSwgdXBwZXJIZXhhZGVjaW1hbE51bWVyYWxzKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpCaW5hcnk6IHsK
KyAgICAgICAgc3RhdGljIGNvbnN0IExDaGFyIGJpbmFyeU51bWVyYWxzWzJdID0geyAnMCcsICcx
JyB9OworICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIGJpbmFyeU51bWVyYWxzKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQogCi0gICAgICAgIGNhc2UgTG93ZXJBbHBoYToKLSAgICAg
ICAgY2FzZSBMb3dlckxhdGluOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgTENoYXIgbG93
ZXJMYXRpbkFscGhhYmV0WzI2XSA9IHsKLSAgICAgICAgICAgICAgICAnYScsICdiJywgJ2MnLCAn
ZCcsICdlJywgJ2YnLCAnZycsICdoJywgJ2knLCAnaicsICdrJywgJ2wnLCAnbScsCi0gICAgICAg
ICAgICAgICAgJ24nLCAnbycsICdwJywgJ3EnLCAncicsICdzJywgJ3QnLCAndScsICd2JywgJ3cn
LCAneCcsICd5JywgJ3onCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9BbHBoYWJldGlj
KGJ1aWxkZXIsIHZhbHVlLCBsb3dlckxhdGluQWxwaGFiZXQpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBVcHBlckFscGhhOgotICAgICAgICBjYXNlIFVwcGVy
TGF0aW46IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBMQ2hhciB1cHBlckxhdGluQWxwaGFi
ZXRbMjZdID0gewotICAgICAgICAgICAgICAgICdBJywgJ0InLCAnQycsICdEJywgJ0UnLCAnRics
ICdHJywgJ0gnLCAnSScsICdKJywgJ0snLCAnTCcsICdNJywKLSAgICAgICAgICAgICAgICAnTics
ICdPJywgJ1AnLCAnUScsICdSJywgJ1MnLCAnVCcsICdVJywgJ1YnLCAnVycsICdYJywgJ1knLCAn
WicKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFs
dWUsIHVwcGVyTGF0aW5BbHBoYWJldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIExvd2VyR3JlZWs6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hh
ciBsb3dlckdyZWVrQWxwaGFiZXRbMjRdID0gewotICAgICAgICAgICAgICAgIDB4MDNCMSwgMHgw
M0IyLCAweDAzQjMsIDB4MDNCNCwgMHgwM0I1LCAweDAzQjYsIDB4MDNCNywgMHgwM0I4LAotICAg
ICAgICAgICAgICAgIDB4MDNCOSwgMHgwM0JBLCAweDAzQkIsIDB4MDNCQywgMHgwM0JELCAweDAz
QkUsIDB4MDNCRiwgMHgwM0MwLAotICAgICAgICAgICAgICAgIDB4MDNDMSwgMHgwM0MzLCAweDAz
QzQsIDB4MDNDNSwgMHgwM0M2LCAweDAzQzcsIDB4MDNDOCwgMHgwM0M5Ci0gICAgICAgICAgICB9
OwotICAgICAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBsb3dlckdyZWVrQWxw
aGFiZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OkJlbmdhbGk6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGJlbmdhbGlOdW1l
cmFsc1sxMF0gPSB7CisgICAgICAgICAgICAweDA5RTYsIDB4MDlFNywgMHgwOUU4LCAweDA5RTks
IDB4MDlFQSwgMHgwOUVCLCAweDA5RUMsIDB4MDlFRCwgMHgwOUVFLCAweDA5RUYKKyAgICAgICAg
fTsKKyAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBiZW5nYWxpTnVtZXJhbHMpOwor
ICAgICAgICBicmVhazsKKyAgICB9CiAKLSAgICAgICAgY2FzZSBIaXJhZ2FuYTogewotICAgICAg
ICAgICAgLy8gRklYTUU6IFRoaXMgdGFibGUgY29tZXMgZnJvbSB0aGUgQ1NTMyBkcmFmdCwgYW5k
IGlzIHByb2JhYmx5Ci0gICAgICAgICAgICAvLyBpbmNvcnJlY3QsIGdpdmVuIHRoZSBjb21tZW50
cyBpbiB0aGF0IGRyYWZ0LgotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGhpcmFnYW5h
QWxwaGFiZXRbNDhdID0gewotICAgICAgICAgICAgICAgIDB4MzA0MiwgMHgzMDQ0LCAweDMwNDYs
IDB4MzA0OCwgMHgzMDRBLCAweDMwNEIsIDB4MzA0RCwgMHgzMDRGLAotICAgICAgICAgICAgICAg
IDB4MzA1MSwgMHgzMDUzLCAweDMwNTUsIDB4MzA1NywgMHgzMDU5LCAweDMwNUIsIDB4MzA1RCwg
MHgzMDVGLAotICAgICAgICAgICAgICAgIDB4MzA2MSwgMHgzMDY0LCAweDMwNjYsIDB4MzA2OCwg
MHgzMDZBLCAweDMwNkIsIDB4MzA2QywgMHgzMDZELAotICAgICAgICAgICAgICAgIDB4MzA2RSwg
MHgzMDZGLCAweDMwNzIsIDB4MzA3NSwgMHgzMDc4LCAweDMwN0IsIDB4MzA3RSwgMHgzMDdGLAot
ICAgICAgICAgICAgICAgIDB4MzA4MCwgMHgzMDgxLCAweDMwODIsIDB4MzA4NCwgMHgzMDg2LCAw
eDMwODgsIDB4MzA4OSwgMHgzMDhBLAotICAgICAgICAgICAgICAgIDB4MzA4QiwgMHgzMDhDLCAw
eDMwOEQsIDB4MzA4RiwgMHgzMDkwLCAweDMwOTEsIDB4MzA5MiwgMHgzMDkzCi0gICAgICAgICAg
ICB9OwotICAgICAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBoaXJhZ2FuYUFs
cGhhYmV0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSGly
YWdhbmFJcm9oYTogewotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgdGFibGUgY29tZXMgZnJv
bSB0aGUgQ1NTMyBkcmFmdCwgYW5kIGlzIHByb2JhYmx5Ci0gICAgICAgICAgICAvLyBpbmNvcnJl
Y3QsIGdpdmVuIHRoZSBjb21tZW50cyBpbiB0aGF0IGRyYWZ0LgotICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IFVDaGFyIGhpcmFnYW5hSXJvaGFBbHBoYWJldFs0N10gPSB7Ci0gICAgICAgICAgICAg
ICAgMHgzMDQ0LCAweDMwOEQsIDB4MzA2RiwgMHgzMDZCLCAweDMwN0IsIDB4MzA3OCwgMHgzMDY4
LCAweDMwNjEsCi0gICAgICAgICAgICAgICAgMHgzMDhBLCAweDMwNkMsIDB4MzA4QiwgMHgzMDky
LCAweDMwOEYsIDB4MzA0QiwgMHgzMDg4LCAweDMwNUYsCi0gICAgICAgICAgICAgICAgMHgzMDhD
LCAweDMwNUQsIDB4MzA2NCwgMHgzMDZELCAweDMwNkEsIDB4MzA4OSwgMHgzMDgwLCAweDMwNDYs
Ci0gICAgICAgICAgICAgICAgMHgzMDkwLCAweDMwNkUsIDB4MzA0QSwgMHgzMDRGLCAweDMwODQs
IDB4MzA3RSwgMHgzMDUxLCAweDMwNzUsCi0gICAgICAgICAgICAgICAgMHgzMDUzLCAweDMwNDgs
IDB4MzA2NiwgMHgzMDQyLCAweDMwNTUsIDB4MzA0RCwgMHgzMDg2LCAweDMwODEsCi0gICAgICAg
ICAgICAgICAgMHgzMDdGLCAweDMwNTcsIDB4MzA5MSwgMHgzMDcyLCAweDMwODIsIDB4MzA1Qiwg
MHgzMDU5Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIs
IHZhbHVlLCBoaXJhZ2FuYUlyb2hhQWxwaGFiZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBLYXRha2FuYTogewotICAgICAgICAgICAgLy8gRklYTUU6IFRo
aXMgdGFibGUgY29tZXMgZnJvbSB0aGUgQ1NTMyBkcmFmdCwgYW5kIGlzIHByb2JhYmx5Ci0gICAg
ICAgICAgICAvLyBpbmNvcnJlY3QsIGdpdmVuIHRoZSBjb21tZW50cyBpbiB0aGF0IGRyYWZ0Lgot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGthdGFrYW5hQWxwaGFiZXRbNDhdID0gewot
ICAgICAgICAgICAgICAgIDB4MzBBMiwgMHgzMEE0LCAweDMwQTYsIDB4MzBBOCwgMHgzMEFBLCAw
eDMwQUIsIDB4MzBBRCwgMHgzMEFGLAotICAgICAgICAgICAgICAgIDB4MzBCMSwgMHgzMEIzLCAw
eDMwQjUsIDB4MzBCNywgMHgzMEI5LCAweDMwQkIsIDB4MzBCRCwgMHgzMEJGLAotICAgICAgICAg
ICAgICAgIDB4MzBDMSwgMHgzMEM0LCAweDMwQzYsIDB4MzBDOCwgMHgzMENBLCAweDMwQ0IsIDB4
MzBDQywgMHgzMENELAotICAgICAgICAgICAgICAgIDB4MzBDRSwgMHgzMENGLCAweDMwRDIsIDB4
MzBENSwgMHgzMEQ4LCAweDMwREIsIDB4MzBERSwgMHgzMERGLAotICAgICAgICAgICAgICAgIDB4
MzBFMCwgMHgzMEUxLCAweDMwRTIsIDB4MzBFNCwgMHgzMEU2LCAweDMwRTgsIDB4MzBFOSwgMHgz
MEVBLAotICAgICAgICAgICAgICAgIDB4MzBFQiwgMHgzMEVDLCAweDMwRUQsIDB4MzBFRiwgMHgz
MEYwLCAweDMwRjEsIDB4MzBGMiwgMHgzMEYzCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAg
dG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBrYXRha2FuYUFscGhhYmV0KTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgS2F0YWthbmFJcm9oYTogewotICAg
ICAgICAgICAgLy8gRklYTUU6IFRoaXMgdGFibGUgY29tZXMgZnJvbSB0aGUgQ1NTMyBkcmFmdCwg
YW5kIGlzIHByb2JhYmx5Ci0gICAgICAgICAgICAvLyBpbmNvcnJlY3QsIGdpdmVuIHRoZSBjb21t
ZW50cyBpbiB0aGF0IGRyYWZ0LgotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGthdGFr
YW5hSXJvaGFBbHBoYWJldFs0N10gPSB7Ci0gICAgICAgICAgICAgICAgMHgzMEE0LCAweDMwRUQs
IDB4MzBDRiwgMHgzMENCLCAweDMwREIsIDB4MzBEOCwgMHgzMEM4LCAweDMwQzEsCi0gICAgICAg
ICAgICAgICAgMHgzMEVBLCAweDMwQ0MsIDB4MzBFQiwgMHgzMEYyLCAweDMwRUYsIDB4MzBBQiwg
MHgzMEU4LCAweDMwQkYsCi0gICAgICAgICAgICAgICAgMHgzMEVDLCAweDMwQkQsIDB4MzBDNCwg
MHgzMENELCAweDMwQ0EsIDB4MzBFOSwgMHgzMEUwLCAweDMwQTYsCi0gICAgICAgICAgICAgICAg
MHgzMEYwLCAweDMwQ0UsIDB4MzBBQSwgMHgzMEFGLCAweDMwRTQsIDB4MzBERSwgMHgzMEIxLCAw
eDMwRDUsCi0gICAgICAgICAgICAgICAgMHgzMEIzLCAweDMwQTgsIDB4MzBDNiwgMHgzMEEyLCAw
eDMwQjUsIDB4MzBBRCwgMHgzMEU2LCAweDMwRTEsCi0gICAgICAgICAgICAgICAgMHgzMERGLCAw
eDMwQjcsIDB4MzBGMSwgMHgzMEQyLCAweDMwRTIsIDB4MzBCQiwgMHgzMEI5Ci0gICAgICAgICAg
ICB9OwotICAgICAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBrYXRha2FuYUly
b2hhQWxwaGFiZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkNhbWJvZGlhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OktobWVyOiB7
CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBraG1lck51bWVyYWxzWzEwXSA9IHsKKyAgICAg
ICAgICAgIDB4MTdFMCwgMHgxN0UxLCAweDE3RTIsIDB4MTdFMywgMHgxN0U0LCAweDE3RTUsIDB4
MTdFNiwgMHgxN0U3LCAweDE3RTgsIDB4MTdFOQorICAgICAgICB9OworICAgICAgICB0b051bWVy
aWMoYnVpbGRlciwgdmFsdWUsIGtobWVyTnVtZXJhbHMpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEZXZhbmFnYXJpOiB7CisgICAgICAgIHN0YXRpYyBj
b25zdCBVQ2hhciBkZXZhbmFnYXJpTnVtZXJhbHNbMTBdID0geworICAgICAgICAgICAgMHgwOTY2
LCAweDA5NjcsIDB4MDk2OCwgMHgwOTY5LCAweDA5NkEsIDB4MDk2QiwgMHgwOTZDLCAweDA5NkQs
IDB4MDk2RSwgMHgwOTZGCisgICAgICAgIH07CisgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2
YWx1ZSwgZGV2YW5hZ2FyaU51bWVyYWxzKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6R3VqYXJhdGk6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFy
IGd1amFyYXRpTnVtZXJhbHNbMTBdID0geworICAgICAgICAgICAgMHgwQUU2LCAweDBBRTcsIDB4
MEFFOCwgMHgwQUU5LCAweDBBRUEsIDB4MEFFQiwgMHgwQUVDLCAweDBBRUQsIDB4MEFFRSwgMHgw
QUVGCisgICAgICAgIH07CisgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgZ3VqYXJh
dGlOdW1lcmFscyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6Okd1cm11a2hpOiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBndXJtdWtoaU51bWVy
YWxzWzEwXSA9IHsKKyAgICAgICAgICAgIDB4MEE2NiwgMHgwQTY3LCAweDBBNjgsIDB4MEE2OSwg
MHgwQTZBLCAweDBBNkIsIDB4MEE2QywgMHgwQTZELCAweDBBNkUsIDB4MEE2RgorICAgICAgICB9
OworICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIGd1cm11a2hpTnVtZXJhbHMpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLYW5uYWRhOiB7
CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBrYW5uYWRhTnVtZXJhbHNbMTBdID0geworICAg
ICAgICAgICAgMHgwQ0U2LCAweDBDRTcsIDB4MENFOCwgMHgwQ0U5LCAweDBDRUEsIDB4MENFQiwg
MHgwQ0VDLCAweDBDRUQsIDB4MENFRSwgMHgwQ0VGCisgICAgICAgIH07CisgICAgICAgIHRvTnVt
ZXJpYyhidWlsZGVyLCB2YWx1ZSwga2FubmFkYU51bWVyYWxzKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJIZXhhZGVjaW1hbDogeworICAgICAg
ICBzdGF0aWMgY29uc3QgTENoYXIgbG93ZXJIZXhhZGVjaW1hbE51bWVyYWxzWzE2XSA9IHsKKyAg
ICAgICAgICAgICcwJywgJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2JywgJzcnLCAnOCcsICc5
JywgJ2EnLCAnYicsICdjJywgJ2QnLCAnZScsICdmJworICAgICAgICB9OworICAgICAgICB0b051
bWVyaWMoYnVpbGRlciwgdmFsdWUsIGxvd2VySGV4YWRlY2ltYWxOdW1lcmFscyk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkxhbzogeworICAgICAgICBz
dGF0aWMgY29uc3QgVUNoYXIgbGFvTnVtZXJhbHNbMTBdID0geworICAgICAgICAgICAgMHgwRUQw
LCAweDBFRDEsIDB4MEVEMiwgMHgwRUQzLCAweDBFRDQsIDB4MEVENSwgMHgwRUQ2LCAweDBFRDcs
IDB4MEVEOCwgMHgwRUQ5CisgICAgICAgIH07CisgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2
YWx1ZSwgbGFvTnVtZXJhbHMpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpNYWxheWFsYW06IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIG1hbGF5
YWxhbU51bWVyYWxzWzEwXSA9IHsKKyAgICAgICAgICAgIDB4MEQ2NiwgMHgwRDY3LCAweDBENjgs
IDB4MEQ2OSwgMHgwRDZBLCAweDBENkIsIDB4MEQ2QywgMHgwRDZELCAweDBENkUsIDB4MEQ2Rgor
ICAgICAgICB9OworICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIG1hbGF5YWxhbU51
bWVyYWxzKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
TW9uZ29saWFuOiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBtb25nb2xpYW5OdW1lcmFs
c1sxMF0gPSB7CisgICAgICAgICAgICAweDE4MTAsIDB4MTgxMSwgMHgxODEyLCAweDE4MTMsIDB4
MTgxNCwgMHgxODE1LCAweDE4MTYsIDB4MTgxNywgMHgxODE4LCAweDE4MTkKKyAgICAgICAgfTsK
KyAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBtb25nb2xpYW5OdW1lcmFscyk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok15YW5tYXI6IHsK
KyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIG15YW5tYXJOdW1lcmFsc1sxMF0gPSB7CisgICAg
ICAgICAgICAweDEwNDAsIDB4MTA0MSwgMHgxMDQyLCAweDEwNDMsIDB4MTA0NCwgMHgxMDQ1LCAw
eDEwNDYsIDB4MTA0NywgMHgxMDQ4LCAweDEwNDkKKyAgICAgICAgfTsKKyAgICAgICAgdG9OdW1l
cmljKGJ1aWxkZXIsIHZhbHVlLCBteWFubWFyTnVtZXJhbHMpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpPY3RhbDogeworICAgICAgICBzdGF0aWMgY29u
c3QgTENoYXIgb2N0YWxOdW1lcmFsc1s4XSA9IHsKKyAgICAgICAgICAgICcwJywgJzEnLCAnMics
ICczJywgJzQnLCAnNScsICc2JywgJzcnCisgICAgICAgIH07CisgICAgICAgIHRvTnVtZXJpYyhi
dWlsZGVyLCB2YWx1ZSwgb2N0YWxOdW1lcmFscyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6Ok9yaXlhOiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hh
ciBvcml5YU51bWVyYWxzWzEwXSA9IHsKKyAgICAgICAgICAgIDB4MEI2NiwgMHgwQjY3LCAweDBC
NjgsIDB4MEI2OSwgMHgwQjZBLCAweDBCNkIsIDB4MEI2QywgMHgwQjZELCAweDBCNkUsIDB4MEI2
RgorICAgICAgICB9OworICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIG9yaXlhTnVt
ZXJhbHMpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpQ
ZXJzaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXJkdTogeworICAgICAgICBzdGF0aWMg
Y29uc3QgVUNoYXIgdXJkdU51bWVyYWxzWzEwXSA9IHsKKyAgICAgICAgICAgIDB4MDZGMCwgMHgw
NkYxLCAweDA2RjIsIDB4MDZGMywgMHgwNkY0LCAweDA2RjUsIDB4MDZGNiwgMHgwNkY3LCAweDA2
RjgsIDB4MDZGOQorICAgICAgICB9OworICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUs
IHVyZHVOdW1lcmFscyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OlRlbHVndTogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgdGVsdWd1TnVtZXJh
bHNbMTBdID0geworICAgICAgICAgICAgMHgwQzY2LCAweDBDNjcsIDB4MEM2OCwgMHgwQzY5LCAw
eDBDNkEsIDB4MEM2QiwgMHgwQzZDLCAweDBDNkQsIDB4MEM2RSwgMHgwQzZGCisgICAgICAgIH07
CisgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgdGVsdWd1TnVtZXJhbHMpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWJldGFuOiB7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciB0aWJldGFuTnVtZXJhbHNbMTBdID0geworICAgICAg
ICAgICAgMHgwRjIwLCAweDBGMjEsIDB4MEYyMiwgMHgwRjIzLCAweDBGMjQsIDB4MEYyNSwgMHgw
RjI2LCAweDBGMjcsIDB4MEYyOCwgMHgwRjI5CisgICAgICAgIH07CisgICAgICAgIHRvTnVtZXJp
YyhidWlsZGVyLCB2YWx1ZSwgdGliZXRhbk51bWVyYWxzKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGhhaTogeworICAgICAgICBzdGF0aWMgY29uc3Qg
VUNoYXIgdGhhaU51bWVyYWxzWzEwXSA9IHsKKyAgICAgICAgICAgIDB4MEU1MCwgMHgwRTUxLCAw
eDBFNTIsIDB4MEU1MywgMHgwRTU0LCAweDBFNTUsIDB4MEU1NiwgMHgwRTU3LCAweDBFNTgsIDB4
MEU1OQorICAgICAgICB9OworICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIHRoYWlO
dW1lcmFscyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
OlVwcGVySGV4YWRlY2ltYWw6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IExDaGFyIHVwcGVySGV4
YWRlY2ltYWxOdW1lcmFsc1sxNl0gPSB7CisgICAgICAgICAgICAnMCcsICcxJywgJzInLCAnMycs
ICc0JywgJzUnLCAnNicsICc3JywgJzgnLCAnOScsICdBJywgJ0InLCAnQycsICdEJywgJ0UnLCAn
RicKKyAgICAgICAgfTsKKyAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCB1cHBlckhl
eGFkZWNpbWFsTnVtZXJhbHMpOworICAgICAgICBicmVhazsKKyAgICB9CiAKLSAgICAgICAgY2Fz
ZSBBZmFyOgotICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVBYUV0OgotICAgICAgICBjYXNl
IEV0aGlvcGljSGFsZWhhbWVBYUVyOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIg
ZXRoaW9waWNIYWxlaGFtZUFhRXJBbHBoYWJldFsxOF0gPSB7Ci0gICAgICAgICAgICAgICAgMHgx
MjAwLCAweDEyMDgsIDB4MTIxMCwgMHgxMjE4LCAweDEyMjgsIDB4MTIzMCwgMHgxMjYwLCAweDEy
NzAsIDB4MTI5MCwKLSAgICAgICAgICAgICAgICAweDEyQTAsIDB4MTJBOCwgMHgxMkM4LCAweDEy
RDAsIDB4MTJFOCwgMHgxMkYwLCAweDEzMDgsIDB4MTMzOCwgMHgxMzQ4Ci0gICAgICAgICAgICB9
OwotICAgICAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBldGhpb3BpY0hhbGVo
YW1lQWFFckFscGhhYmV0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2UgQW1oYXJpYzoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lQW1FdDogewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGV0aGlvcGljSGFsZWhhbWVBbUV0QWxwaGFiZXRb
MzNdID0gewotICAgICAgICAgICAgICAgIDB4MTIwMCwgMHgxMjA4LCAweDEyMTAsIDB4MTIxOCwg
MHgxMjIwLCAweDEyMjgsIDB4MTIzMCwgMHgxMjM4LCAweDEyNDAsCi0gICAgICAgICAgICAgICAg
MHgxMjYwLCAweDEyNzAsIDB4MTI3OCwgMHgxMjgwLCAweDEyOTAsIDB4MTI5OCwgMHgxMkEwLCAw
eDEyQTgsIDB4MTJCOCwKLSAgICAgICAgICAgICAgICAweDEyQzgsIDB4MTJEMCwgMHgxMkQ4LCAw
eDEyRTAsIDB4MTJFOCwgMHgxMkYwLCAweDEzMDAsIDB4MTMwOCwgMHgxMzIwLAotICAgICAgICAg
ICAgICAgIDB4MTMyOCwgMHgxMzMwLCAweDEzMzgsIDB4MTM0MCwgMHgxMzQ4LCAweDEzNTAKLSAg
ICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGV0
aGlvcGljSGFsZWhhbWVBbUV0QWxwaGFiZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBBbWhhcmljQWJlZ2VkZToKLSAgICAgICAgY2FzZSBFdGhpb3BpY0Fi
ZWdlZGVBbUV0OiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZXRoaW9waWNBYmVn
ZWRlQW1FdEFscGhhYmV0WzMzXSA9IHsKLSAgICAgICAgICAgICAgICAweDEyQTAsIDB4MTI2MCwg
MHgxMzA4LCAweDEyRjAsIDB4MTMwMCwgMHgxMjAwLCAweDEyQzgsIDB4MTJEOCwgMHgxMkUwLAot
ICAgICAgICAgICAgICAgIDB4MTIxMCwgMHgxMzIwLCAweDEzMjgsIDB4MTJFOCwgMHgxMkE4LCAw
eDEyQjgsIDB4MTIwOCwgMHgxMjE4LCAweDEyOTAsCi0gICAgICAgICAgICAgICAgMHgxMjk4LCAw
eDEyMjAsIDB4MTJEMCwgMHgxMzQ4LCAweDEzMzgsIDB4MTI0MCwgMHgxMjI4LCAweDEyMzAsIDB4
MTIzOCwKLSAgICAgICAgICAgICAgICAweDEyNzAsIDB4MTI3OCwgMHgxMjgwLCAweDEzNDAsIDB4
MTMzMCwgMHgxMzUwCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9BbHBoYWJldGljKGJ1
aWxkZXIsIHZhbHVlLCBldGhpb3BpY0FiZWdlZGVBbUV0QWxwaGFiZXQpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDamtFYXJ0aGx5QnJhbmNoOiB7Ci0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgY2prRWFydGhseUJyYW5jaEFscGhhYmV0WzEyXSA9
IHsKLSAgICAgICAgICAgICAgICAweDVCNTAsIDB4NEUxMSwgMHg1QkM1LCAweDUzNkYsIDB4OEZC
MCwgMHg1REYzLCAweDUzNDgsIDB4NjcyQSwgMHg3NTMzLAotICAgICAgICAgICAgICAgIDB4OTE0
OSwgMHg2MjBDLCAweDRFQTUKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b0FscGhhYmV0
aWMoYnVpbGRlciwgdmFsdWUsIGNqa0VhcnRobHlCcmFuY2hBbHBoYWJldCk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENqa0hlYXZlbmx5U3RlbTogewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGNqa0hlYXZlbmx5U3RlbUFscGhhYmV0WzEwXSA9
IHsKLSAgICAgICAgICAgICAgICAweDc1MzIsIDB4NEU1OSwgMHg0RTE5LCAweDRFMDEsIDB4NjIw
QSwgMHg1REYxLCAweDVFOUEsIDB4OEY5QiwgMHg1OEVDLAotICAgICAgICAgICAgICAgIDB4NzY3
OAotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1
ZSwgY2prSGVhdmVubHlTdGVtQWxwaGFiZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBFdGhpb3BpYzoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1l
R2V6OiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZXRoaW9waWNIYWxlaGFtZUdl
ekFscGhhYmV0WzI2XSA9IHsKLSAgICAgICAgICAgICAgICAweDEyMDAsIDB4MTIwOCwgMHgxMjEw
LCAweDEyMTgsIDB4MTIyMCwgMHgxMjI4LCAweDEyMzAsIDB4MTI0MCwgMHgxMjYwLAotICAgICAg
ICAgICAgICAgIDB4MTI3MCwgMHgxMjgwLCAweDEyOTAsIDB4MTJBMCwgMHgxMkE4LCAweDEyQzgs
IDB4MTJEMCwgMHgxMkQ4LCAweDEyRTgsCi0gICAgICAgICAgICAgICAgMHgxMkYwLCAweDEzMDgs
IDB4MTMyMCwgMHgxMzMwLCAweDEzMzgsIDB4MTM0MCwgMHgxMzQ4LCAweDEzNTAKLSAgICAgICAg
ICAgIH07Ci0gICAgICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGV0aGlvcGlj
SGFsZWhhbWVHZXpBbHBoYWJldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
ICAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZToKLSAgICAgICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVH
ZXo6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBldGhpb3BpY0FiZWdlZGVHZXpB
bHBoYWJldFsyNl0gPSB7Ci0gICAgICAgICAgICAgICAgMHgxMkEwLCAweDEyNjAsIDB4MTMwOCwg
MHgxMkYwLCAweDEyMDAsIDB4MTJDOCwgMHgxMkQ4LCAweDEyMTAsIDB4MTMyMCwKLSAgICAgICAg
ICAgICAgICAweDEyRTgsIDB4MTJBOCwgMHgxMjA4LCAweDEyMTgsIDB4MTI5MCwgMHgxMjIwLCAw
eDEyRDAsIDB4MTM0OCwgMHgxMzM4LAotICAgICAgICAgICAgICAgIDB4MTI0MCwgMHgxMjI4LCAw
eDEyMzAsIDB4MTI3MCwgMHgxMjgwLCAweDEzNDAsIDB4MTMzMCwgMHgxMzUwCi0gICAgICAgICAg
ICB9OwotICAgICAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBldGhpb3BpY0Fi
ZWdlZGVHZXpBbHBoYWJldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICBjYXNlIEhhbmd1bENvbnNvbmFudDogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFy
IGhhbmd1bENvbnNvbmFudEFscGhhYmV0WzE0XSA9IHsKLSAgICAgICAgICAgICAgICAweDMxMzEs
IDB4MzEzNCwgMHgzMTM3LCAweDMxMzksIDB4MzE0MSwgMHgzMTQyLCAweDMxNDUsIDB4MzE0Nywg
MHgzMTQ4LAotICAgICAgICAgICAgICAgIDB4MzE0QSwgMHgzMTRCLCAweDMxNEMsIDB4MzE0RCwg
MHgzMTRFCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIs
IHZhbHVlLCBoYW5ndWxDb25zb25hbnRBbHBoYWJldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotICAgICAgICBjYXNlIEhhbmd1bDogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IFVDaGFyIGhhbmd1bEFscGhhYmV0WzE0XSA9IHsKLSAgICAgICAgICAgICAgICAweEFDMDAsIDB4
QjA5OCwgMHhCMkU0LCAweEI3N0MsIDB4QjlDOCwgMHhCQzE0LCAweEMwQUMsIDB4QzU0NCwgMHhD
NzkwLAotICAgICAgICAgICAgICAgIDB4Q0MyOCwgMHhDRTc0LCAweEQwQzAsIDB4RDMwQywgMHhE
NTU4Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZh
bHVlLCBoYW5ndWxBbHBoYWJldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
ICAgICBjYXNlIE9yb21vOgotICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVPbUV0OiB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZXRoaW9waWNIYWxlaGFtZU9tRXRBbHBoYWJl
dFsyNV0gPSB7Ci0gICAgICAgICAgICAgICAgMHgxMjAwLCAweDEyMDgsIDB4MTIxOCwgMHgxMjI4
LCAweDEyMzAsIDB4MTIzOCwgMHgxMjQwLCAweDEyNjAsIDB4MTI3MCwKLSAgICAgICAgICAgICAg
ICAweDEyNzgsIDB4MTI5MCwgMHgxMjk4LCAweDEyQTAsIDB4MTJBOCwgMHgxMkM4LCAweDEyRTgs
IDB4MTJGMCwgMHgxMkY4LAotICAgICAgICAgICAgICAgIDB4MTMwMCwgMHgxMzA4LCAweDEzMjAs
IDB4MTMyOCwgMHgxMzM4LCAweDEzMzAsIDB4MTM0OAotICAgICAgICAgICAgfTsKLSAgICAgICAg
ICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNIYWxlaGFtZU9tRXRBbHBo
YWJldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFNpZGFt
YToKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lU2lkRXQ6IHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBVQ2hhciBldGhpb3BpY0hhbGVoYW1lU2lkRXRBbHBoYWJldFsyNl0gPSB7Ci0g
ICAgICAgICAgICAgICAgMHgxMjAwLCAweDEyMDgsIDB4MTIxMCwgMHgxMjE4LCAweDEyMjgsIDB4
MTIzMCwgMHgxMjM4LCAweDEyNDAsIDB4MTI2MCwKLSAgICAgICAgICAgICAgICAweDEyNzAsIDB4
MTI3OCwgMHgxMjkwLCAweDEyOTgsIDB4MTJBMCwgMHgxMkE4LCAweDEyQzgsIDB4MTJFOCwgMHgx
MkYwLAotICAgICAgICAgICAgICAgIDB4MTJGOCwgMHgxMzAwLCAweDEzMDgsIDB4MTMyMCwgMHgx
MzI4LCAweDEzMzgsIDB4MTMzMCwgMHgxMzQ4Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAg
dG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBldGhpb3BpY0hhbGVoYW1lU2lkRXRBbHBoYWJl
dCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFNvbWFsaToK
LSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lU29FdDogewotICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IFVDaGFyIGV0aGlvcGljSGFsZWhhbWVTb0V0QWxwaGFiZXRbMjJdID0gewotICAgICAg
ICAgICAgICAgIDB4MTIwMCwgMHgxMjA4LCAweDEyMTAsIDB4MTIxOCwgMHgxMjI4LCAweDEyMzAs
IDB4MTIzOCwgMHgxMjQwLCAweDEyNjAsCi0gICAgICAgICAgICAgICAgMHgxMjcwLCAweDEyOTAs
IDB4MTJBMCwgMHgxMkE4LCAweDEyQjgsIDB4MTJDOCwgMHgxMkQwLCAweDEyRTgsIDB4MTJGMCwK
LSAgICAgICAgICAgICAgICAweDEzMDAsIDB4MTMwOCwgMHgxMzM4LCAweDEzNDgKLSAgICAgICAg
ICAgIH07Ci0gICAgICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGV0aGlvcGlj
SGFsZWhhbWVTb0V0QWxwaGFiZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICAgICAgY2FzZSBUaWdyZToKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lVGlnOiB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZXRoaW9waWNIYWxlaGFtZVRpZ0FscGhhYmV0
WzI3XSA9IHsKLSAgICAgICAgICAgICAgICAweDEyMDAsIDB4MTIwOCwgMHgxMjEwLCAweDEyMTgs
IDB4MTIyOCwgMHgxMjMwLCAweDEyMzgsIDB4MTI0MCwgMHgxMjYwLAotICAgICAgICAgICAgICAg
IDB4MTI3MCwgMHgxMjc4LCAweDEyOTAsIDB4MTJBMCwgMHgxMkE4LCAweDEyQzgsIDB4MTJEMCwg
MHgxMkQ4LCAweDEyRTgsCi0gICAgICAgICAgICAgICAgMHgxMkYwLCAweDEzMDAsIDB4MTMwOCwg
MHgxMzIwLCAweDEzMjgsIDB4MTMzOCwgMHgxMzMwLCAweDEzNDgsIDB4MTM1MAotICAgICAgICAg
ICAgfTsKLSAgICAgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNI
YWxlaGFtZVRpZ0FscGhhYmV0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgVGlncmlueWFFcjoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lVGlFcjog
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGV0aGlvcGljSGFsZWhhbWVUaUVyQWxw
aGFiZXRbMzFdID0gewotICAgICAgICAgICAgICAgIDB4MTIwMCwgMHgxMjA4LCAweDEyMTAsIDB4
MTIxOCwgMHgxMjI4LCAweDEyMzAsIDB4MTIzOCwgMHgxMjQwLCAweDEyNTAsCi0gICAgICAgICAg
ICAgICAgMHgxMjYwLCAweDEyNzAsIDB4MTI3OCwgMHgxMjkwLCAweDEyOTgsIDB4MTJBMCwgMHgx
MkE4LCAweDEyQjgsIDB4MTJDOCwKLSAgICAgICAgICAgICAgICAweDEyRDAsIDB4MTJEOCwgMHgx
MkUwLCAweDEyRTgsIDB4MTJGMCwgMHgxMzAwLCAweDEzMDgsIDB4MTMyMCwgMHgxMzI4LAotICAg
ICAgICAgICAgICAgIDB4MTMzMCwgMHgxMzM4LCAweDEzNDgsIDB4MTM1MAotICAgICAgICAgICAg
fTsKLSAgICAgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNIYWxl
aGFtZVRpRXJBbHBoYWJldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICBjYXNlIFRpZ3JpbnlhRXJBYmVnZWRlOgotICAgICAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZVRp
RXI6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBldGhpb3BpY0FiZWdlZGVUaUVy
QWxwaGFiZXRbMzFdID0gewotICAgICAgICAgICAgICAgIDB4MTJBMCwgMHgxMjYwLCAweDEzMDgs
IDB4MTJGMCwgMHgxMzAwLCAweDEyMDAsIDB4MTJDOCwgMHgxMkQ4LCAweDEyRTAsCi0gICAgICAg
ICAgICAgICAgMHgxMjEwLCAweDEzMjAsIDB4MTMyOCwgMHgxMkU4LCAweDEyQTgsIDB4MTJCOCwg
MHgxMjA4LCAweDEyMTgsIDB4MTI5MCwKLSAgICAgICAgICAgICAgICAweDEyOTgsIDB4MTJEMCwg
MHgxMzQ4LCAweDEzMzgsIDB4MTI0MCwgMHgxMjUwLCAweDEyMjgsIDB4MTIzMCwgMHgxMjM4LAot
ICAgICAgICAgICAgICAgIDB4MTI3MCwgMHgxMjc4LCAweDEzMzAsIDB4MTM1MAotICAgICAgICAg
ICAgfTsKLSAgICAgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNB
YmVnZWRlVGlFckFscGhhYmV0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgVGlncmlueWFFdDoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lVGlFdDog
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGV0aGlvcGljSGFsZWhhbWVUaUV0QWxw
aGFiZXRbMzRdID0gewotICAgICAgICAgICAgICAgIDB4MTIwMCwgMHgxMjA4LCAweDEyMTAsIDB4
MTIxOCwgMHgxMjIwLCAweDEyMjgsIDB4MTIzMCwgMHgxMjM4LCAweDEyNDAsCi0gICAgICAgICAg
ICAgICAgMHgxMjUwLCAweDEyNjAsIDB4MTI3MCwgMHgxMjc4LCAweDEyODAsIDB4MTI5MCwgMHgx
Mjk4LCAweDEyQTAsIDB4MTJBOCwKLSAgICAgICAgICAgICAgICAweDEyQjgsIDB4MTJDOCwgMHgx
MkQwLCAweDEyRDgsIDB4MTJFMCwgMHgxMkU4LCAweDEyRjAsIDB4MTMwMCwgMHgxMzA4LAotICAg
ICAgICAgICAgICAgIDB4MTMyMCwgMHgxMzI4LCAweDEzMzAsIDB4MTMzOCwgMHgxMzQwLCAweDEz
NDgsIDB4MTM1MAotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvQWxwaGFiZXRpYyhidWls
ZGVyLCB2YWx1ZSwgZXRoaW9waWNIYWxlaGFtZVRpRXRBbHBoYWJldCk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFRpZ3JpbnlhRXRBYmVnZWRlOgotICAgICAg
ICBjYXNlIEV0aGlvcGljQWJlZ2VkZVRpRXQ6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBV
Q2hhciBldGhpb3BpY0FiZWdlZGVUaUV0QWxwaGFiZXRbMzRdID0gewotICAgICAgICAgICAgICAg
IDB4MTJBMCwgMHgxMjYwLCAweDEzMDgsIDB4MTJGMCwgMHgxMzAwLCAweDEyMDAsIDB4MTJDOCwg
MHgxMkQ4LCAweDEyRTAsCi0gICAgICAgICAgICAgICAgMHgxMjEwLCAweDEzMjAsIDB4MTMyOCwg
MHgxMkU4LCAweDEyQTgsIDB4MTJCOCwgMHgxMjA4LCAweDEyMTgsIDB4MTI5MCwKLSAgICAgICAg
ICAgICAgICAweDEyOTgsIDB4MTIyMCwgMHgxMkQwLCAweDEzNDgsIDB4MTMzOCwgMHgxMjQwLCAw
eDEyNTAsIDB4MTIyOCwgMHgxMjMwLAotICAgICAgICAgICAgICAgIDB4MTIzOCwgMHgxMjcwLCAw
eDEyNzgsIDB4MTI4MCwgMHgxMzQwLCAweDEzMzAsIDB4MTM1MAotICAgICAgICAgICAgfTsKLSAg
ICAgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNBYmVnZWRlVGlF
dEFscGhhYmV0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
VXBwZXJHcmVlazogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIHVwcGVyR3JlZWtB
bHBoYWJldFsyNF0gPSB7Ci0gICAgICAgICAgICAgICAgMHgwMzkxLCAweDAzOTIsIDB4MDM5Mywg
MHgwMzk0LCAweDAzOTUsIDB4MDM5NiwgMHgwMzk3LCAweDAzOTgsIDB4MDM5OSwKLSAgICAgICAg
ICAgICAgICAweDAzOUEsIDB4MDM5QiwgMHgwMzlDLCAweDAzOUQsIDB4MDM5RSwgMHgwMzlGLCAw
eDAzQTAsIDB4MDNBMSwgMHgwM0EzLAotICAgICAgICAgICAgICAgIDB4MDNBNCwgMHgwM0E1LCAw
eDAzQTYsIDB4MDNBNywgMHgwM0E4LCAweDAzQTkKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAg
ICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIHVwcGVyR3JlZWtBbHBoYWJldCk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIExvd2VyTm9yd2VnaWFuOiB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgTENoYXIgbG93ZXJOb3J3ZWdpYW5BbHBoYWJldFsy
OV0gPSB7Ci0gICAgICAgICAgICAgICAgMHg2MSwgMHg2MiwgMHg2MywgMHg2NCwgMHg2NSwgMHg2
NiwgMHg2NywgMHg2OCwgMHg2OSwKLSAgICAgICAgICAgICAgICAweDZBLCAweDZCLCAweDZDLCAw
eDZELCAweDZFLCAweDZGLCAweDcwLCAweDcxLCAweDcyLAotICAgICAgICAgICAgICAgIDB4NzMs
IDB4NzQsIDB4NzUsIDB4NzYsIDB4NzcsIDB4NzgsIDB4NzksIDB4N0EsIDB4RTYsCi0gICAgICAg
ICAgICAgICAgMHhGOCwgMHhFNQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvQWxwaGFi
ZXRpYyhidWlsZGVyLCB2YWx1ZSwgbG93ZXJOb3J3ZWdpYW5BbHBoYWJldCk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFVwcGVyTm9yd2VnaWFuOiB7Ci0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgTENoYXIgdXBwZXJOb3J3ZWdpYW5BbHBoYWJldFsyOV0gPSB7
Ci0gICAgICAgICAgICAgICAgMHg0MSwgMHg0MiwgMHg0MywgMHg0NCwgMHg0NSwgMHg0NiwgMHg0
NywgMHg0OCwgMHg0OSwKLSAgICAgICAgICAgICAgICAweDRBLCAweDRCLCAweDRDLCAweDRELCAw
eDRFLCAweDRGLCAweDUwLCAweDUxLCAweDUyLAotICAgICAgICAgICAgICAgIDB4NTMsIDB4NTQs
IDB4NTUsIDB4NTYsIDB4NTcsIDB4NTgsIDB4NTksIDB4NUEsIDB4QzYsCi0gICAgICAgICAgICAg
ICAgMHhEOCwgMHhDNQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvQWxwaGFiZXRpYyhi
dWlsZGVyLCB2YWx1ZSwgdXBwZXJOb3J3ZWdpYW5BbHBoYWJldCk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENKS0lkZW9ncmFwaGljOiB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgVUNoYXIgdHJhZGl0aW9uYWxDaGluZXNlSW5mb3JtYWxUYWJsZVsxNl0g
PSB7Ci0gICAgICAgICAgICAgICAgMHg4NDJDLCAweDUxMDQsIDB4NTE0NiwKLSAgICAgICAgICAg
ICAgICAweDUzNDEsIDB4NzY3RSwgMHg1MzQzLAotICAgICAgICAgICAgICAgIDB4OTZGNiwgMHg0
RTAwLCAweDRFOEMsIDB4NEUwOSwgMHg1NkRCLAotICAgICAgICAgICAgICAgIDB4NEU5NCwgMHg1
MTZELCAweDRFMDMsIDB4NTE2QiwgMHg0RTVECi0gICAgICAgICAgICB9OwotICAgICAgICAgICAg
dG9DSktJZGVvZ3JhcGhpYyhidWlsZGVyLCB2YWx1ZSwgdHJhZGl0aW9uYWxDaGluZXNlSW5mb3Jt
YWxUYWJsZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6TG93ZXJBbHBoYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyTGF0aW46
IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IExDaGFyIGxvd2VyTGF0aW5BbHBoYWJldFsyNl0gPSB7
CisgICAgICAgICAgICAnYScsICdiJywgJ2MnLCAnZCcsICdlJywgJ2YnLCAnZycsICdoJywgJ2kn
LCAnaicsICdrJywgJ2wnLCAnbScsCisgICAgICAgICAgICAnbicsICdvJywgJ3AnLCAncScsICdy
JywgJ3MnLCAndCcsICd1JywgJ3YnLCAndycsICd4JywgJ3knLCAneicKKyAgICAgICAgfTsKKyAg
ICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBsb3dlckxhdGluQWxwaGFiZXQpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckFscGhh
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJMYXRpbjogeworICAgICAgICBzdGF0aWMg
Y29uc3QgTENoYXIgdXBwZXJMYXRpbkFscGhhYmV0WzI2XSA9IHsKKyAgICAgICAgICAgICdBJywg
J0InLCAnQycsICdEJywgJ0UnLCAnRicsICdHJywgJ0gnLCAnSScsICdKJywgJ0snLCAnTCcsICdN
JywKKyAgICAgICAgICAgICdOJywgJ08nLCAnUCcsICdRJywgJ1InLCAnUycsICdUJywgJ1UnLCAn
VicsICdXJywgJ1gnLCAnWScsICdaJworICAgICAgICB9OworICAgICAgICB0b0FscGhhYmV0aWMo
YnVpbGRlciwgdmFsdWUsIHVwcGVyTGF0aW5BbHBoYWJldCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyR3JlZWs6IHsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IFVDaGFyIGxvd2VyR3JlZWtBbHBoYWJldFsyNF0gPSB7CisgICAgICAgICAgICAweDAz
QjEsIDB4MDNCMiwgMHgwM0IzLCAweDAzQjQsIDB4MDNCNSwgMHgwM0I2LCAweDAzQjcsIDB4MDNC
OCwKKyAgICAgICAgICAgIDB4MDNCOSwgMHgwM0JBLCAweDAzQkIsIDB4MDNCQywgMHgwM0JELCAw
eDAzQkUsIDB4MDNCRiwgMHgwM0MwLAorICAgICAgICAgICAgMHgwM0MxLCAweDAzQzMsIDB4MDND
NCwgMHgwM0M1LCAweDAzQzYsIDB4MDNDNywgMHgwM0M4LCAweDAzQzkKKyAgICAgICAgfTsKKyAg
ICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBsb3dlckdyZWVrQWxwaGFiZXQpOwor
ICAgICAgICBicmVhazsKKyAgICB9CiAKLSAgICAgICAgY2FzZSBMb3dlclJvbWFuOgotICAgICAg
ICAgICAgdG9Sb21hbihidWlsZGVyLCB2YWx1ZSwgZmFsc2UpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgVXBwZXJSb21hbjoKLSAgICAgICAgICAgIHRvUm9tYW4oYnVpbGRlciwg
dmFsdWUsIHRydWUpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpIaXJhZ2FuYTogeworICAgICAgICAvLyBGSVhNRTogVGhpcyB0YWJsZSBjb21lcyBmcm9tIHRo
ZSBDU1MzIGRyYWZ0LCBhbmQgaXMgcHJvYmFibHkKKyAgICAgICAgLy8gaW5jb3JyZWN0LCBnaXZl
biB0aGUgY29tbWVudHMgaW4gdGhhdCBkcmFmdC4KKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFy
IGhpcmFnYW5hQWxwaGFiZXRbNDhdID0geworICAgICAgICAgICAgMHgzMDQyLCAweDMwNDQsIDB4
MzA0NiwgMHgzMDQ4LCAweDMwNEEsIDB4MzA0QiwgMHgzMDRELCAweDMwNEYsCisgICAgICAgICAg
ICAweDMwNTEsIDB4MzA1MywgMHgzMDU1LCAweDMwNTcsIDB4MzA1OSwgMHgzMDVCLCAweDMwNUQs
IDB4MzA1RiwKKyAgICAgICAgICAgIDB4MzA2MSwgMHgzMDY0LCAweDMwNjYsIDB4MzA2OCwgMHgz
MDZBLCAweDMwNkIsIDB4MzA2QywgMHgzMDZELAorICAgICAgICAgICAgMHgzMDZFLCAweDMwNkYs
IDB4MzA3MiwgMHgzMDc1LCAweDMwNzgsIDB4MzA3QiwgMHgzMDdFLCAweDMwN0YsCisgICAgICAg
ICAgICAweDMwODAsIDB4MzA4MSwgMHgzMDgyLCAweDMwODQsIDB4MzA4NiwgMHgzMDg4LCAweDMw
ODksIDB4MzA4QSwKKyAgICAgICAgICAgIDB4MzA4QiwgMHgzMDhDLCAweDMwOEQsIDB4MzA4Riwg
MHgzMDkwLCAweDMwOTEsIDB4MzA5MiwgMHgzMDkzCisgICAgICAgIH07CisgICAgICAgIHRvQWxw
aGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgaGlyYWdhbmFBbHBoYWJldCk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkhpcmFnYW5hSXJvaGE6IHsKKyAgICAg
ICAgLy8gRklYTUU6IFRoaXMgdGFibGUgY29tZXMgZnJvbSB0aGUgQ1NTMyBkcmFmdCwgYW5kIGlz
IHByb2JhYmx5CisgICAgICAgIC8vIGluY29ycmVjdCwgZ2l2ZW4gdGhlIGNvbW1lbnRzIGluIHRo
YXQgZHJhZnQuCisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBoaXJhZ2FuYUlyb2hhQWxwaGFi
ZXRbNDddID0geworICAgICAgICAgICAgMHgzMDQ0LCAweDMwOEQsIDB4MzA2RiwgMHgzMDZCLCAw
eDMwN0IsIDB4MzA3OCwgMHgzMDY4LCAweDMwNjEsCisgICAgICAgICAgICAweDMwOEEsIDB4MzA2
QywgMHgzMDhCLCAweDMwOTIsIDB4MzA4RiwgMHgzMDRCLCAweDMwODgsIDB4MzA1RiwKKyAgICAg
ICAgICAgIDB4MzA4QywgMHgzMDVELCAweDMwNjQsIDB4MzA2RCwgMHgzMDZBLCAweDMwODksIDB4
MzA4MCwgMHgzMDQ2LAorICAgICAgICAgICAgMHgzMDkwLCAweDMwNkUsIDB4MzA0QSwgMHgzMDRG
LCAweDMwODQsIDB4MzA3RSwgMHgzMDUxLCAweDMwNzUsCisgICAgICAgICAgICAweDMwNTMsIDB4
MzA0OCwgMHgzMDY2LCAweDMwNDIsIDB4MzA1NSwgMHgzMDRELCAweDMwODYsIDB4MzA4MSwKKyAg
ICAgICAgICAgIDB4MzA3RiwgMHgzMDU3LCAweDMwOTEsIDB4MzA3MiwgMHgzMDgyLCAweDMwNUIs
IDB4MzA1OQorICAgICAgICB9OworICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUs
IGhpcmFnYW5hSXJvaGFBbHBoYWJldCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OkthdGFrYW5hOiB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHRhYmxl
IGNvbWVzIGZyb20gdGhlIENTUzMgZHJhZnQsIGFuZCBpcyBwcm9iYWJseQorICAgICAgICAvLyBp
bmNvcnJlY3QsIGdpdmVuIHRoZSBjb21tZW50cyBpbiB0aGF0IGRyYWZ0LgorICAgICAgICBzdGF0
aWMgY29uc3QgVUNoYXIga2F0YWthbmFBbHBoYWJldFs0OF0gPSB7CisgICAgICAgICAgICAweDMw
QTIsIDB4MzBBNCwgMHgzMEE2LCAweDMwQTgsIDB4MzBBQSwgMHgzMEFCLCAweDMwQUQsIDB4MzBB
RiwKKyAgICAgICAgICAgIDB4MzBCMSwgMHgzMEIzLCAweDMwQjUsIDB4MzBCNywgMHgzMEI5LCAw
eDMwQkIsIDB4MzBCRCwgMHgzMEJGLAorICAgICAgICAgICAgMHgzMEMxLCAweDMwQzQsIDB4MzBD
NiwgMHgzMEM4LCAweDMwQ0EsIDB4MzBDQiwgMHgzMENDLCAweDMwQ0QsCisgICAgICAgICAgICAw
eDMwQ0UsIDB4MzBDRiwgMHgzMEQyLCAweDMwRDUsIDB4MzBEOCwgMHgzMERCLCAweDMwREUsIDB4
MzBERiwKKyAgICAgICAgICAgIDB4MzBFMCwgMHgzMEUxLCAweDMwRTIsIDB4MzBFNCwgMHgzMEU2
LCAweDMwRTgsIDB4MzBFOSwgMHgzMEVBLAorICAgICAgICAgICAgMHgzMEVCLCAweDMwRUMsIDB4
MzBFRCwgMHgzMEVGLCAweDMwRjAsIDB4MzBGMSwgMHgzMEYyLCAweDMwRjMKKyAgICAgICAgfTsK
KyAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBrYXRha2FuYUFscGhhYmV0KTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6S2F0YWthbmFJ
cm9oYTogeworICAgICAgICAvLyBGSVhNRTogVGhpcyB0YWJsZSBjb21lcyBmcm9tIHRoZSBDU1Mz
IGRyYWZ0LCBhbmQgaXMgcHJvYmFibHkKKyAgICAgICAgLy8gaW5jb3JyZWN0LCBnaXZlbiB0aGUg
Y29tbWVudHMgaW4gdGhhdCBkcmFmdC4KKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGthdGFr
YW5hSXJvaGFBbHBoYWJldFs0N10gPSB7CisgICAgICAgICAgICAweDMwQTQsIDB4MzBFRCwgMHgz
MENGLCAweDMwQ0IsIDB4MzBEQiwgMHgzMEQ4LCAweDMwQzgsIDB4MzBDMSwKKyAgICAgICAgICAg
IDB4MzBFQSwgMHgzMENDLCAweDMwRUIsIDB4MzBGMiwgMHgzMEVGLCAweDMwQUIsIDB4MzBFOCwg
MHgzMEJGLAorICAgICAgICAgICAgMHgzMEVDLCAweDMwQkQsIDB4MzBDNCwgMHgzMENELCAweDMw
Q0EsIDB4MzBFOSwgMHgzMEUwLCAweDMwQTYsCisgICAgICAgICAgICAweDMwRjAsIDB4MzBDRSwg
MHgzMEFBLCAweDMwQUYsIDB4MzBFNCwgMHgzMERFLCAweDMwQjEsIDB4MzBENSwKKyAgICAgICAg
ICAgIDB4MzBCMywgMHgzMEE4LCAweDMwQzYsIDB4MzBBMiwgMHgzMEI1LCAweDMwQUQsIDB4MzBF
NiwgMHgzMEUxLAorICAgICAgICAgICAgMHgzMERGLCAweDMwQjcsIDB4MzBGMSwgMHgzMEQyLCAw
eDMwRTIsIDB4MzBCQiwgMHgzMEI5CisgICAgICAgIH07CisgICAgICAgIHRvQWxwaGFiZXRpYyhi
dWlsZGVyLCB2YWx1ZSwga2F0YWthbmFJcm9oYUFscGhhYmV0KTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQogCi0gICAgICAgIGNhc2UgQXJtZW5pYW46Ci0gICAgICAgIGNhc2UgVXBwZXJBcm1lbmlh
bjoKLSAgICAgICAgICAgIC8vIENTUzMgc2F5cyAiYXJtZW5pYW4iIG1lYW5zICJsb3dlci1hcm1l
bmlhbiIuCi0gICAgICAgICAgICAvLyBCdXQgdGhlIENTUzIuMSB0ZXN0IHN1aXRlIGNvbnRhaW5z
IHVwcGVyY2FzZSB0ZXN0IHJlc3VsdHMgZm9yICJhcm1lbmlhbiIsCi0gICAgICAgICAgICAvLyBz
byB3ZSdsbCBtYXRjaCB0aGUgdGVzdCBzdWl0ZS4KLSAgICAgICAgICAgIHRvQXJtZW5pYW4oYnVp
bGRlciwgdmFsdWUsIHRydWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTG93
ZXJBcm1lbmlhbjoKLSAgICAgICAgICAgIHRvQXJtZW5pYW4oYnVpbGRlciwgdmFsdWUsIGZhbHNl
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdlb3JnaWFuOgotICAgICAgICAg
ICAgdG9HZW9yZ2lhbihidWlsZGVyLCB2YWx1ZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBIZWJyZXc6Ci0gICAgICAgICAgICB0b0hlYnJldyhidWlsZGVyLCB2YWx1ZSk7Ci0g
ICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFmYXI6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lQWFFdDoKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVBYUVyOiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hh
ciBldGhpb3BpY0hhbGVoYW1lQWFFckFscGhhYmV0WzE4XSA9IHsKKyAgICAgICAgICAgIDB4MTIw
MCwgMHgxMjA4LCAweDEyMTAsIDB4MTIxOCwgMHgxMjI4LCAweDEyMzAsIDB4MTI2MCwgMHgxMjcw
LCAweDEyOTAsCisgICAgICAgICAgICAweDEyQTAsIDB4MTJBOCwgMHgxMkM4LCAweDEyRDAsIDB4
MTJFOCwgMHgxMkYwLCAweDEzMDgsIDB4MTMzOCwgMHgxMzQ4CisgICAgICAgIH07CisgICAgICAg
IHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNIYWxlaGFtZUFhRXJBbHBoYWJl
dCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFtaGFy
aWM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lQW1FdDogeworICAg
ICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZXRoaW9waWNIYWxlaGFtZUFtRXRBbHBoYWJldFszM10g
PSB7CisgICAgICAgICAgICAweDEyMDAsIDB4MTIwOCwgMHgxMjEwLCAweDEyMTgsIDB4MTIyMCwg
MHgxMjI4LCAweDEyMzAsIDB4MTIzOCwgMHgxMjQwLAorICAgICAgICAgICAgMHgxMjYwLCAweDEy
NzAsIDB4MTI3OCwgMHgxMjgwLCAweDEyOTAsIDB4MTI5OCwgMHgxMkEwLCAweDEyQTgsIDB4MTJC
OCwKKyAgICAgICAgICAgIDB4MTJDOCwgMHgxMkQwLCAweDEyRDgsIDB4MTJFMCwgMHgxMkU4LCAw
eDEyRjAsIDB4MTMwMCwgMHgxMzA4LCAweDEzMjAsCisgICAgICAgICAgICAweDEzMjgsIDB4MTMz
MCwgMHgxMzM4LCAweDEzNDAsIDB4MTM0OCwgMHgxMzUwCisgICAgICAgIH07CisgICAgICAgIHRv
QWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNIYWxlaGFtZUFtRXRBbHBoYWJldCk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFtaGFyaWNB
YmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlQW1FdDogewor
ICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZXRoaW9waWNBYmVnZWRlQW1FdEFscGhhYmV0WzMz
XSA9IHsKKyAgICAgICAgICAgIDB4MTJBMCwgMHgxMjYwLCAweDEzMDgsIDB4MTJGMCwgMHgxMzAw
LCAweDEyMDAsIDB4MTJDOCwgMHgxMkQ4LCAweDEyRTAsCisgICAgICAgICAgICAweDEyMTAsIDB4
MTMyMCwgMHgxMzI4LCAweDEyRTgsIDB4MTJBOCwgMHgxMkI4LCAweDEyMDgsIDB4MTIxOCwgMHgx
MjkwLAorICAgICAgICAgICAgMHgxMjk4LCAweDEyMjAsIDB4MTJEMCwgMHgxMzQ4LCAweDEzMzgs
IDB4MTI0MCwgMHgxMjI4LCAweDEyMzAsIDB4MTIzOCwKKyAgICAgICAgICAgIDB4MTI3MCwgMHgx
Mjc4LCAweDEyODAsIDB4MTM0MCwgMHgxMzMwLCAweDEzNTAKKyAgICAgICAgfTsKKyAgICAgICAg
dG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBldGhpb3BpY0FiZWdlZGVBbUV0QWxwaGFiZXQp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDamtFYXJ0
aGx5QnJhbmNoOiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjamtFYXJ0aGx5QnJhbmNo
QWxwaGFiZXRbMTJdID0geworICAgICAgICAgICAgMHg1QjUwLCAweDRFMTEsIDB4NUJDNSwgMHg1
MzZGLCAweDhGQjAsIDB4NURGMywgMHg1MzQ4LCAweDY3MkEsIDB4NzUzMywKKyAgICAgICAgICAg
IDB4OTE0OSwgMHg2MjBDLCAweDRFQTUKKyAgICAgICAgfTsKKyAgICAgICAgdG9BbHBoYWJldGlj
KGJ1aWxkZXIsIHZhbHVlLCBjamtFYXJ0aGx5QnJhbmNoQWxwaGFiZXQpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDamtIZWF2ZW5seVN0ZW06IHsKKyAg
ICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGNqa0hlYXZlbmx5U3RlbUFscGhhYmV0WzEwXSA9IHsK
KyAgICAgICAgICAgIDB4NzUzMiwgMHg0RTU5LCAweDRFMTksIDB4NEUwMSwgMHg2MjBBLCAweDVE
RjEsIDB4NUU5QSwgMHg4RjlCLCAweDU4RUMsCisgICAgICAgICAgICAweDc2NzgKKyAgICAgICAg
fTsKKyAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBjamtIZWF2ZW5seVN0ZW1B
bHBoYWJldCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
OkV0aGlvcGljOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUdlejog
eworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZXRoaW9waWNIYWxlaGFtZUdlekFscGhhYmV0
WzI2XSA9IHsKKyAgICAgICAgICAgIDB4MTIwMCwgMHgxMjA4LCAweDEyMTAsIDB4MTIxOCwgMHgx
MjIwLCAweDEyMjgsIDB4MTIzMCwgMHgxMjQwLCAweDEyNjAsCisgICAgICAgICAgICAweDEyNzAs
IDB4MTI4MCwgMHgxMjkwLCAweDEyQTAsIDB4MTJBOCwgMHgxMkM4LCAweDEyRDAsIDB4MTJEOCwg
MHgxMkU4LAorICAgICAgICAgICAgMHgxMkYwLCAweDEzMDgsIDB4MTMyMCwgMHgxMzMwLCAweDEz
MzgsIDB4MTM0MCwgMHgxMzQ4LCAweDEzNTAKKyAgICAgICAgfTsKKyAgICAgICAgdG9BbHBoYWJl
dGljKGJ1aWxkZXIsIHZhbHVlLCBldGhpb3BpY0hhbGVoYW1lR2V6QWxwaGFiZXQpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGU6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGVHZXo6IHsKKyAgICAgICAg
c3RhdGljIGNvbnN0IFVDaGFyIGV0aGlvcGljQWJlZ2VkZUdlekFscGhhYmV0WzI2XSA9IHsKKyAg
ICAgICAgICAgIDB4MTJBMCwgMHgxMjYwLCAweDEzMDgsIDB4MTJGMCwgMHgxMjAwLCAweDEyQzgs
IDB4MTJEOCwgMHgxMjEwLCAweDEzMjAsCisgICAgICAgICAgICAweDEyRTgsIDB4MTJBOCwgMHgx
MjA4LCAweDEyMTgsIDB4MTI5MCwgMHgxMjIwLCAweDEyRDAsIDB4MTM0OCwgMHgxMzM4LAorICAg
ICAgICAgICAgMHgxMjQwLCAweDEyMjgsIDB4MTIzMCwgMHgxMjcwLCAweDEyODAsIDB4MTM0MCwg
MHgxMzMwLCAweDEzNTAKKyAgICAgICAgfTsKKyAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIs
IHZhbHVlLCBldGhpb3BpY0FiZWdlZGVHZXpBbHBoYWJldCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okhhbmd1bENvbnNvbmFudDogeworICAgICAgICBz
dGF0aWMgY29uc3QgVUNoYXIgaGFuZ3VsQ29uc29uYW50QWxwaGFiZXRbMTRdID0geworICAgICAg
ICAgICAgMHgzMTMxLCAweDMxMzQsIDB4MzEzNywgMHgzMTM5LCAweDMxNDEsIDB4MzE0MiwgMHgz
MTQ1LCAweDMxNDcsIDB4MzE0OCwKKyAgICAgICAgICAgIDB4MzE0QSwgMHgzMTRCLCAweDMxNEMs
IDB4MzE0RCwgMHgzMTRFCisgICAgICAgIH07CisgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVy
LCB2YWx1ZSwgaGFuZ3VsQ29uc29uYW50QWxwaGFiZXQpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIYW5ndWw6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0
IFVDaGFyIGhhbmd1bEFscGhhYmV0WzE0XSA9IHsKKyAgICAgICAgICAgIDB4QUMwMCwgMHhCMDk4
LCAweEIyRTQsIDB4Qjc3QywgMHhCOUM4LCAweEJDMTQsIDB4QzBBQywgMHhDNTQ0LCAweEM3OTAs
CisgICAgICAgICAgICAweENDMjgsIDB4Q0U3NCwgMHhEMEMwLCAweEQzMEMsIDB4RDU1OAorICAg
ICAgICB9OworICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGhhbmd1bEFscGhh
YmV0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6T3Jv
bW86CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lT21FdDogeworICAg
ICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZXRoaW9waWNIYWxlaGFtZU9tRXRBbHBoYWJldFsyNV0g
PSB7CisgICAgICAgICAgICAweDEyMDAsIDB4MTIwOCwgMHgxMjE4LCAweDEyMjgsIDB4MTIzMCwg
MHgxMjM4LCAweDEyNDAsIDB4MTI2MCwgMHgxMjcwLAorICAgICAgICAgICAgMHgxMjc4LCAweDEy
OTAsIDB4MTI5OCwgMHgxMkEwLCAweDEyQTgsIDB4MTJDOCwgMHgxMkU4LCAweDEyRjAsIDB4MTJG
OCwKKyAgICAgICAgICAgIDB4MTMwMCwgMHgxMzA4LCAweDEzMjAsIDB4MTMyOCwgMHgxMzM4LCAw
eDEzMzAsIDB4MTM0OAorICAgICAgICB9OworICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwg
dmFsdWUsIGV0aGlvcGljSGFsZWhhbWVPbUV0QWxwaGFiZXQpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpTaWRhbWE6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpFdGhpb3BpY0hhbGVoYW1lU2lkRXQ6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFy
IGV0aGlvcGljSGFsZWhhbWVTaWRFdEFscGhhYmV0WzI2XSA9IHsKKyAgICAgICAgICAgIDB4MTIw
MCwgMHgxMjA4LCAweDEyMTAsIDB4MTIxOCwgMHgxMjI4LCAweDEyMzAsIDB4MTIzOCwgMHgxMjQw
LCAweDEyNjAsCisgICAgICAgICAgICAweDEyNzAsIDB4MTI3OCwgMHgxMjkwLCAweDEyOTgsIDB4
MTJBMCwgMHgxMkE4LCAweDEyQzgsIDB4MTJFOCwgMHgxMkYwLAorICAgICAgICAgICAgMHgxMkY4
LCAweDEzMDAsIDB4MTMwOCwgMHgxMzIwLCAweDEzMjgsIDB4MTMzOCwgMHgxMzMwLCAweDEzNDgK
KyAgICAgICAgfTsKKyAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBldGhpb3Bp
Y0hhbGVoYW1lU2lkRXRBbHBoYWJldCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OlNvbWFsaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGlj
SGFsZWhhbWVTb0V0OiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBldGhpb3BpY0hhbGVo
YW1lU29FdEFscGhhYmV0WzIyXSA9IHsKKyAgICAgICAgICAgIDB4MTIwMCwgMHgxMjA4LCAweDEy
MTAsIDB4MTIxOCwgMHgxMjI4LCAweDEyMzAsIDB4MTIzOCwgMHgxMjQwLCAweDEyNjAsCisgICAg
ICAgICAgICAweDEyNzAsIDB4MTI5MCwgMHgxMkEwLCAweDEyQTgsIDB4MTJCOCwgMHgxMkM4LCAw
eDEyRDAsIDB4MTJFOCwgMHgxMkYwLAorICAgICAgICAgICAgMHgxMzAwLCAweDEzMDgsIDB4MTMz
OCwgMHgxMzQ4CisgICAgICAgIH07CisgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1
ZSwgZXRoaW9waWNIYWxlaGFtZVNvRXRBbHBoYWJldCk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
RXRoaW9waWNIYWxlaGFtZVRpZzogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZXRoaW9w
aWNIYWxlaGFtZVRpZ0FscGhhYmV0WzI3XSA9IHsKKyAgICAgICAgICAgIDB4MTIwMCwgMHgxMjA4
LCAweDEyMTAsIDB4MTIxOCwgMHgxMjI4LCAweDEyMzAsIDB4MTIzOCwgMHgxMjQwLCAweDEyNjAs
CisgICAgICAgICAgICAweDEyNzAsIDB4MTI3OCwgMHgxMjkwLCAweDEyQTAsIDB4MTJBOCwgMHgx
MkM4LCAweDEyRDAsIDB4MTJEOCwgMHgxMkU4LAorICAgICAgICAgICAgMHgxMkYwLCAweDEzMDAs
IDB4MTMwOCwgMHgxMzIwLCAweDEzMjgsIDB4MTMzOCwgMHgxMzMwLCAweDEzNDgsIDB4MTM1MAor
ICAgICAgICB9OworICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGV0aGlvcGlj
SGFsZWhhbWVUaWdBbHBoYWJldCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3Bp
Y0hhbGVoYW1lVGlFcjogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZXRoaW9waWNIYWxl
aGFtZVRpRXJBbHBoYWJldFszMV0gPSB7CisgICAgICAgICAgICAweDEyMDAsIDB4MTIwOCwgMHgx
MjEwLCAweDEyMTgsIDB4MTIyOCwgMHgxMjMwLCAweDEyMzgsIDB4MTI0MCwgMHgxMjUwLAorICAg
ICAgICAgICAgMHgxMjYwLCAweDEyNzAsIDB4MTI3OCwgMHgxMjkwLCAweDEyOTgsIDB4MTJBMCwg
MHgxMkE4LCAweDEyQjgsIDB4MTJDOCwKKyAgICAgICAgICAgIDB4MTJEMCwgMHgxMkQ4LCAweDEy
RTAsIDB4MTJFOCwgMHgxMkYwLCAweDEzMDAsIDB4MTMwOCwgMHgxMzIwLCAweDEzMjgsCisgICAg
ICAgICAgICAweDEzMzAsIDB4MTMzOCwgMHgxMzQ4LCAweDEzNTAKKyAgICAgICAgfTsKKyAgICAg
ICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBldGhpb3BpY0hhbGVoYW1lVGlFckFscGhh
YmV0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGln
cmlueWFFckFiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGVU
aUVyOiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBldGhpb3BpY0FiZWdlZGVUaUVyQWxw
aGFiZXRbMzFdID0geworICAgICAgICAgICAgMHgxMkEwLCAweDEyNjAsIDB4MTMwOCwgMHgxMkYw
LCAweDEzMDAsIDB4MTIwMCwgMHgxMkM4LCAweDEyRDgsIDB4MTJFMCwKKyAgICAgICAgICAgIDB4
MTIxMCwgMHgxMzIwLCAweDEzMjgsIDB4MTJFOCwgMHgxMkE4LCAweDEyQjgsIDB4MTIwOCwgMHgx
MjE4LCAweDEyOTAsCisgICAgICAgICAgICAweDEyOTgsIDB4MTJEMCwgMHgxMzQ4LCAweDEzMzgs
IDB4MTI0MCwgMHgxMjUwLCAweDEyMjgsIDB4MTIzMCwgMHgxMjM4LAorICAgICAgICAgICAgMHgx
MjcwLCAweDEyNzgsIDB4MTMzMCwgMHgxMzUwCisgICAgICAgIH07CisgICAgICAgIHRvQWxwaGFi
ZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNBYmVnZWRlVGlFckFscGhhYmV0KTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmlueWFFdDoKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVUaUV0OiB7CisgICAgICAgIHN0
YXRpYyBjb25zdCBVQ2hhciBldGhpb3BpY0hhbGVoYW1lVGlFdEFscGhhYmV0WzM0XSA9IHsKKyAg
ICAgICAgICAgIDB4MTIwMCwgMHgxMjA4LCAweDEyMTAsIDB4MTIxOCwgMHgxMjIwLCAweDEyMjgs
IDB4MTIzMCwgMHgxMjM4LCAweDEyNDAsCisgICAgICAgICAgICAweDEyNTAsIDB4MTI2MCwgMHgx
MjcwLCAweDEyNzgsIDB4MTI4MCwgMHgxMjkwLCAweDEyOTgsIDB4MTJBMCwgMHgxMkE4LAorICAg
ICAgICAgICAgMHgxMkI4LCAweDEyQzgsIDB4MTJEMCwgMHgxMkQ4LCAweDEyRTAsIDB4MTJFOCwg
MHgxMkYwLCAweDEzMDAsIDB4MTMwOCwKKyAgICAgICAgICAgIDB4MTMyMCwgMHgxMzI4LCAweDEz
MzAsIDB4MTMzOCwgMHgxMzQwLCAweDEzNDgsIDB4MTM1MAorICAgICAgICB9OworICAgICAgICB0
b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGV0aGlvcGljSGFsZWhhbWVUaUV0QWxwaGFiZXQp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55
YUV0QWJlZ2VkZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZVRpRXQ6
IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGV0aGlvcGljQWJlZ2VkZVRpRXRBbHBoYWJl
dFszNF0gPSB7CisgICAgICAgICAgICAweDEyQTAsIDB4MTI2MCwgMHgxMzA4LCAweDEyRjAsIDB4
MTMwMCwgMHgxMjAwLCAweDEyQzgsIDB4MTJEOCwgMHgxMkUwLAorICAgICAgICAgICAgMHgxMjEw
LCAweDEzMjAsIDB4MTMyOCwgMHgxMkU4LCAweDEyQTgsIDB4MTJCOCwgMHgxMjA4LCAweDEyMTgs
IDB4MTI5MCwKKyAgICAgICAgICAgIDB4MTI5OCwgMHgxMjIwLCAweDEyRDAsIDB4MTM0OCwgMHgx
MzM4LCAweDEyNDAsIDB4MTI1MCwgMHgxMjI4LCAweDEyMzAsCisgICAgICAgICAgICAweDEyMzgs
IDB4MTI3MCwgMHgxMjc4LCAweDEyODAsIDB4MTM0MCwgMHgxMzMwLCAweDEzNTAKKyAgICAgICAg
fTsKKyAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBldGhpb3BpY0FiZWdlZGVU
aUV0QWxwaGFiZXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpVcHBlckdyZWVrOiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciB1cHBlckdyZWVr
QWxwaGFiZXRbMjRdID0geworICAgICAgICAgICAgMHgwMzkxLCAweDAzOTIsIDB4MDM5MywgMHgw
Mzk0LCAweDAzOTUsIDB4MDM5NiwgMHgwMzk3LCAweDAzOTgsIDB4MDM5OSwKKyAgICAgICAgICAg
IDB4MDM5QSwgMHgwMzlCLCAweDAzOUMsIDB4MDM5RCwgMHgwMzlFLCAweDAzOUYsIDB4MDNBMCwg
MHgwM0ExLCAweDAzQTMsCisgICAgICAgICAgICAweDAzQTQsIDB4MDNBNSwgMHgwM0E2LCAweDAz
QTcsIDB4MDNBOCwgMHgwM0E5CisgICAgICAgIH07CisgICAgICAgIHRvQWxwaGFiZXRpYyhidWls
ZGVyLCB2YWx1ZSwgdXBwZXJHcmVla0FscGhhYmV0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJOb3J3ZWdpYW46IHsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IExDaGFyIGxvd2VyTm9yd2VnaWFuQWxwaGFiZXRbMjldID0geworICAgICAgICAgICAg
MHg2MSwgMHg2MiwgMHg2MywgMHg2NCwgMHg2NSwgMHg2NiwgMHg2NywgMHg2OCwgMHg2OSwKKyAg
ICAgICAgICAgIDB4NkEsIDB4NkIsIDB4NkMsIDB4NkQsIDB4NkUsIDB4NkYsIDB4NzAsIDB4NzEs
IDB4NzIsCisgICAgICAgICAgICAweDczLCAweDc0LCAweDc1LCAweDc2LCAweDc3LCAweDc4LCAw
eDc5LCAweDdBLCAweEU2LAorICAgICAgICAgICAgMHhGOCwgMHhFNQorICAgICAgICB9OworICAg
ICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGxvd2VyTm9yd2VnaWFuQWxwaGFiZXQp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlck5v
cndlZ2lhbjogeworICAgICAgICBzdGF0aWMgY29uc3QgTENoYXIgdXBwZXJOb3J3ZWdpYW5BbHBo
YWJldFsyOV0gPSB7CisgICAgICAgICAgICAweDQxLCAweDQyLCAweDQzLCAweDQ0LCAweDQ1LCAw
eDQ2LCAweDQ3LCAweDQ4LCAweDQ5LAorICAgICAgICAgICAgMHg0QSwgMHg0QiwgMHg0QywgMHg0
RCwgMHg0RSwgMHg0RiwgMHg1MCwgMHg1MSwgMHg1MiwKKyAgICAgICAgICAgIDB4NTMsIDB4NTQs
IDB4NTUsIDB4NTYsIDB4NTcsIDB4NTgsIDB4NTksIDB4NUEsIDB4QzYsCisgICAgICAgICAgICAw
eEQ4LCAweEM1CisgICAgICAgIH07CisgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1
ZSwgdXBwZXJOb3J3ZWdpYW5BbHBoYWJldCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OkNKS0lkZW9ncmFwaGljOiB7CisgICAgICAgIHN0YXRpYyBjb25z
dCBVQ2hhciB0cmFkaXRpb25hbENoaW5lc2VJbmZvcm1hbFRhYmxlWzE2XSA9IHsKKyAgICAgICAg
ICAgIDB4ODQyQywgMHg1MTA0LCAweDUxNDYsCisgICAgICAgICAgICAweDUzNDEsIDB4NzY3RSwg
MHg1MzQzLAorICAgICAgICAgICAgMHg5NkY2LCAweDRFMDAsIDB4NEU4QywgMHg0RTA5LCAweDU2
REIsCisgICAgICAgICAgICAweDRFOTQsIDB4NTE2RCwgMHg0RTAzLCAweDUxNkIsIDB4NEU1RAor
ICAgICAgICB9OworICAgICAgICB0b0NKS0lkZW9ncmFwaGljKGJ1aWxkZXIsIHZhbHVlLCB0cmFk
aXRpb25hbENoaW5lc2VJbmZvcm1hbFRhYmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlclJvbWFuOgorICAgICAgICB0b1JvbWFuKGJ1aWxk
ZXIsIHZhbHVlLCBmYWxzZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6VXBwZXJSb21hbjoKKyAgICAgICAgdG9Sb21hbihidWlsZGVyLCB2YWx1ZSwgdHJ1ZSk7Cisg
ICAgICAgIGJyZWFrOworCisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBcm1lbmlhbjoKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyQXJtZW5pYW46CisgICAgICAgIC8vIENTUzMgc2F5cyAi
YXJtZW5pYW4iIG1lYW5zICJsb3dlci1hcm1lbmlhbiIuCisgICAgICAgIC8vIEJ1dCB0aGUgQ1NT
Mi4xIHRlc3Qgc3VpdGUgY29udGFpbnMgdXBwZXJjYXNlIHRlc3QgcmVzdWx0cyBmb3IgImFybWVu
aWFuIiwKKyAgICAgICAgLy8gc28gd2UnbGwgbWF0Y2ggdGhlIHRlc3Qgc3VpdGUuCisgICAgICAg
IHRvQXJtZW5pYW4oYnVpbGRlciwgdmFsdWUsIHRydWUpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyQXJtZW5pYW46CisgICAgICAgIHRvQXJtZW5pYW4oYnVp
bGRlciwgdmFsdWUsIGZhbHNlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpHZW9yZ2lhbjoKKyAgICAgICAgdG9HZW9yZ2lhbihidWlsZGVyLCB2YWx1ZSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGVicmV3OgorICAgICAgICB0b0hl
YnJldyhidWlsZGVyLCB2YWx1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIHJldHVy
biBidWlsZGVyLnRvU3RyaW5nKCk7CkBAIC0xMTg2LDcgKzExODYsNyBAQCB2b2lkIFJlbmRlckxp
c3RNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYgCiAgICAgaWYgKHBhaW50SW5mby5waGFzZSAhPSBQ
YWludFBoYXNlRm9yZWdyb3VuZCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGlmIChzdHls
ZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHko
KSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1cm47CiAKICAgICBMYXlvdXRQ
b2ludCBib3hPcmlnaW4ocGFpbnRPZmZzZXQgKyBsb2NhdGlvbigpKTsKQEAgLTEyMjcsOTggKzEy
MjcsOTggQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpwYWludChQYWludEluZm8mIAogICAgIGNv
bnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDEuMGYpOwogICAgIGNvbnRleHQuc2V0RmlsbENvbG9y
KGNvbG9yKTsKIAotICAgIEVMaXN0U3R5bGVUeXBlIHR5cGUgPSBzdHlsZSgpLmxpc3RTdHlsZVR5
cGUoKTsKKyAgICBMaXN0U3R5bGVUeXBlIHR5cGUgPSBzdHlsZSgpLmxpc3RTdHlsZVR5cGUoKTsK
ICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBEaXNjOgotICAgICAgICAgICAgY29u
dGV4dC5kcmF3RWxsaXBzZShtYXJrZXJSZWN0KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgY2FzZSBDaXJjbGU6Ci0gICAgICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6
dHJhbnNwYXJlbnQpOwotICAgICAgICAgICAgY29udGV4dC5kcmF3RWxsaXBzZShtYXJrZXJSZWN0
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBTcXVhcmU6Ci0gICAgICAgICAg
ICBjb250ZXh0LmRyYXdSZWN0KG1hcmtlclJlY3QpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBjYXNlIE5vbmVMaXN0U3R5bGU6Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNh
c2UgQWZhcjoKLSAgICAgICAgY2FzZSBBbWhhcmljOgotICAgICAgICBjYXNlIEFtaGFyaWNBYmVn
ZWRlOgotICAgICAgICBjYXNlIEFyYWJpY0luZGljOgotICAgICAgICBjYXNlIEFybWVuaWFuOgot
ICAgICAgICBjYXNlIEJpbmFyeUxpc3RTdHlsZToKLSAgICAgICAgY2FzZSBCZW5nYWxpOgotICAg
ICAgICBjYXNlIENhbWJvZGlhbjoKLSAgICAgICAgY2FzZSBDSktJZGVvZ3JhcGhpYzoKLSAgICAg
ICAgY2FzZSBDamtFYXJ0aGx5QnJhbmNoOgotICAgICAgICBjYXNlIENqa0hlYXZlbmx5U3RlbToK
LSAgICAgICAgY2FzZSBEZWNpbWFsTGVhZGluZ1plcm86Ci0gICAgICAgIGNhc2UgRGVjaW1hbExp
c3RTdHlsZToKLSAgICAgICAgY2FzZSBEZXZhbmFnYXJpOgotICAgICAgICBjYXNlIEV0aGlvcGlj
OgotICAgICAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZToKLSAgICAgICAgY2FzZSBFdGhpb3BpY0Fi
ZWdlZGVBbUV0OgotICAgICAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZUdlejoKLSAgICAgICAgY2Fz
ZSBFdGhpb3BpY0FiZWdlZGVUaUVyOgotICAgICAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZVRpRXQ6
Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUFhRXI6Ci0gICAgICAgIGNhc2UgRXRoaW9w
aWNIYWxlaGFtZUFhRXQ6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUFtRXQ6Ci0gICAg
ICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUdlejoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVo
YW1lT21FdDoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lU2lkRXQ6Ci0gICAgICAgIGNh
c2UgRXRoaW9waWNIYWxlaGFtZVNvRXQ6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVRp
RXI6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVRpRXQ6Ci0gICAgICAgIGNhc2UgRXRo
aW9waWNIYWxlaGFtZVRpZzoKLSAgICAgICAgY2FzZSBHZW9yZ2lhbjoKLSAgICAgICAgY2FzZSBH
dWphcmF0aToKLSAgICAgICAgY2FzZSBHdXJtdWtoaToKLSAgICAgICAgY2FzZSBIYW5ndWw6Ci0g
ICAgICAgIGNhc2UgSGFuZ3VsQ29uc29uYW50OgotICAgICAgICBjYXNlIEhlYnJldzoKLSAgICAg
ICAgY2FzZSBIaXJhZ2FuYToKLSAgICAgICAgY2FzZSBIaXJhZ2FuYUlyb2hhOgotICAgICAgICBj
YXNlIEthbm5hZGE6Ci0gICAgICAgIGNhc2UgS2F0YWthbmE6Ci0gICAgICAgIGNhc2UgS2F0YWth
bmFJcm9oYToKLSAgICAgICAgY2FzZSBLaG1lcjoKLSAgICAgICAgY2FzZSBMYW86Ci0gICAgICAg
IGNhc2UgTG93ZXJBbHBoYToKLSAgICAgICAgY2FzZSBMb3dlckFybWVuaWFuOgotICAgICAgICBj
YXNlIExvd2VyR3JlZWs6Ci0gICAgICAgIGNhc2UgTG93ZXJIZXhhZGVjaW1hbDoKLSAgICAgICAg
Y2FzZSBMb3dlckxhdGluOgotICAgICAgICBjYXNlIExvd2VyTm9yd2VnaWFuOgotICAgICAgICBj
YXNlIExvd2VyUm9tYW46Ci0gICAgICAgIGNhc2UgTWFsYXlhbGFtOgotICAgICAgICBjYXNlIE1v
bmdvbGlhbjoKLSAgICAgICAgY2FzZSBNeWFubWFyOgotICAgICAgICBjYXNlIE9jdGFsOgotICAg
ICAgICBjYXNlIE9yaXlhOgotICAgICAgICBjYXNlIE9yb21vOgotICAgICAgICBjYXNlIFBlcnNp
YW46Ci0gICAgICAgIGNhc2UgU2lkYW1hOgotICAgICAgICBjYXNlIFNvbWFsaToKLSAgICAgICAg
Y2FzZSBUZWx1Z3U6Ci0gICAgICAgIGNhc2UgVGhhaToKLSAgICAgICAgY2FzZSBUaWJldGFuOgot
ICAgICAgICBjYXNlIFRpZ3JlOgotICAgICAgICBjYXNlIFRpZ3JpbnlhRXI6Ci0gICAgICAgIGNh
c2UgVGlncmlueWFFckFiZWdlZGU6Ci0gICAgICAgIGNhc2UgVGlncmlueWFFdDoKLSAgICAgICAg
Y2FzZSBUaWdyaW55YUV0QWJlZ2VkZToKLSAgICAgICAgY2FzZSBVcHBlckFscGhhOgotICAgICAg
ICBjYXNlIFVwcGVyQXJtZW5pYW46Ci0gICAgICAgIGNhc2UgVXBwZXJHcmVlazoKLSAgICAgICAg
Y2FzZSBVcHBlckhleGFkZWNpbWFsOgotICAgICAgICBjYXNlIFVwcGVyTGF0aW46Ci0gICAgICAg
IGNhc2UgVXBwZXJOb3J3ZWdpYW46Ci0gICAgICAgIGNhc2UgVXBwZXJSb21hbjoKLSAgICAgICAg
Y2FzZSBVcmR1OgotICAgICAgICBjYXNlIEFzdGVyaXNrczoKLSAgICAgICAgY2FzZSBGb290bm90
ZXM6Ci0gICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRpc2M6Cisg
ICAgICAgIGNvbnRleHQuZHJhd0VsbGlwc2UobWFya2VyUmVjdCk7CisgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNpcmNsZToKKyAgICAgICAgY29udGV4dC5zZXRGaWxs
Q29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICAgICAgY29udGV4dC5kcmF3RWxsaXBzZSht
YXJrZXJSZWN0KTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6U3F1
YXJlOgorICAgICAgICBjb250ZXh0LmRyYXdSZWN0KG1hcmtlclJlY3QpOworICAgICAgICByZXR1
cm47CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpOb25lOgorICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpBZmFyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QW1oYXJp
YzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFtaGFyaWNBYmVnZWRlOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6QXJhYmljSW5kaWM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBcm1lbmlh
bjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkJpbmFyeToKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkJlbmdhbGk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDYW1ib2RpYW46CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpDSktJZGVvZ3JhcGhpYzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
OkNqa0VhcnRobHlCcmFuY2g6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDamtIZWF2ZW5seVN0
ZW06CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEZWNpbWFsTGVhZGluZ1plcm86CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpEZWNpbWFsOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGV2YW5h
Z2FyaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9w
aWNBYmVnZWRlQW1FdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZUdl
ejoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZVRpRXI6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGVUaUV0OgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6RXRoaW9waWNIYWxlaGFtZUFhRXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhp
b3BpY0hhbGVoYW1lQWFFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhh
bWVBbUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUdlejoKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVPbUV0OgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVNpZEV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6RXRoaW9waWNIYWxlaGFtZVNvRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3Bp
Y0hhbGVoYW1lVGlFcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVU
aUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVRpZzoKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6Okdlb3JnaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6R3Vq
YXJhdGk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpHdXJtdWtoaToKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6Okhhbmd1bDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okhhbmd1bENvbnNvbmFu
dDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkhlYnJldzoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkhpcmFnYW5hOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGlyYWdhbmFJcm9oYToKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6Okthbm5hZGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpL
YXRha2FuYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkthdGFrYW5hSXJvaGE6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpLaG1lcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkxhbzoKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyQWxwaGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpMb3dlckFybWVuaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJHcmVlazoKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VySGV4YWRlY2ltYWw6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpMb3dlckxhdGluOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJOb3J3ZWdp
YW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlclJvbWFuOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6TWFsYXlhbGFtOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TW9uZ29saWFuOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TXlhbm1hcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
Ok9jdGFsOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6T3JpeWE6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpPcm9tbzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlBlcnNpYW46CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpTaWRhbWE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpTb21hbGk6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUZWx1Z3U6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpUaGFpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGliZXRhbjoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OlRpZ3JlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmlueWFFcjoKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXJBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6VGlncmlueWFFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXRB
YmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJBbHBoYToKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OlVwcGVyQXJtZW5pYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBl
ckdyZWVrOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJIZXhhZGVjaW1hbDoKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyTGF0aW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpV
cHBlck5vcndlZ2lhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyUm9tYW46CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpVcmR1OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QXN0ZXJp
c2tzOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Rm9vdG5vdGVzOgorICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgaWYgKG1fdGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEz
NDAsNyArMTM0MCw3IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiAK
ICAgICBGbG9hdFBvaW50IHRleHRPcmlnaW4gPSBGbG9hdFBvaW50KG1hcmtlclJlY3QueCgpLCBt
YXJrZXJSZWN0LnkoKSArIHN0eWxlKCkuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSk7CiAgICAgdGV4
dE9yaWdpbiA9IHJvdW5kUG9pbnRUb0RldmljZVBpeGVscyhMYXlvdXRQb2ludCh0ZXh0T3JpZ2lu
KSwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCBzdHlsZSgpLmlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24oKSk7CiAKLSAgICBpZiAodHlwZSA9PSBBc3Rlcmlza3MgfHwgdHlwZSA9PSBGb290
bm90ZXMpCisgICAgaWYgKHR5cGUgPT0gTGlzdFN0eWxlVHlwZTo6QXN0ZXJpc2tzIHx8IHR5cGUg
PT0gTGlzdFN0eWxlVHlwZTo6Rm9vdG5vdGVzKQogICAgICAgICBjb250ZXh0LmRyYXdUZXh0KGZv
bnQsIHRleHRSdW4sIHRleHRPcmlnaW4pOwogICAgIGVsc2UgewogICAgICAgICBjb25zdCBVQ2hh
ciBzdWZmaXggPSBsaXN0TWFya2VyU3VmZml4KHR5cGUsIG1fbGlzdEl0ZW0udmFsdWUoKSk7CkBA
IC0xNDQ4LDkyICsxNDQ4LDkyIEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6dXBkYXRlQ29udGVu
dCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBFTGlzdFN0eWxlVHlwZSB0eXBlID0g
c3R5bGUoKS5saXN0U3R5bGVUeXBlKCk7CisgICAgTGlzdFN0eWxlVHlwZSB0eXBlID0gc3R5bGUo
KS5saXN0U3R5bGVUeXBlKCk7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBOb25lTGlz
dFN0eWxlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Tm9uZToKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBDaXJjbGU6Ci0gICAgY2FzZSBEaXNjOgotICAgIGNhc2UgU3F1YXJlOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6Q2lyY2xlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGlzYzoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlNxdWFyZToKICAgICAgICAgbV90ZXh0ID0gbGlzdE1h
cmtlclRleHQodHlwZSwgMCk7IC8vIHZhbHVlIGlzIGlnbm9yZWQgZm9yIHRoZXNlIHR5cGVzCiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQXN0ZXJpc2tzOgotICAgIGNhc2UgRm9vdG5vdGVzOgot
ICAgIGNhc2UgQWZhcjoKLSAgICBjYXNlIEFtaGFyaWM6Ci0gICAgY2FzZSBBbWhhcmljQWJlZ2Vk
ZToKLSAgICBjYXNlIEFyYWJpY0luZGljOgotICAgIGNhc2UgQXJtZW5pYW46Ci0gICAgY2FzZSBC
aW5hcnlMaXN0U3R5bGU6Ci0gICAgY2FzZSBCZW5nYWxpOgotICAgIGNhc2UgQ2FtYm9kaWFuOgot
ICAgIGNhc2UgQ0pLSWRlb2dyYXBoaWM6Ci0gICAgY2FzZSBDamtFYXJ0aGx5QnJhbmNoOgotICAg
IGNhc2UgQ2prSGVhdmVubHlTdGVtOgotICAgIGNhc2UgRGVjaW1hbExlYWRpbmdaZXJvOgotICAg
IGNhc2UgRGVjaW1hbExpc3RTdHlsZToKLSAgICBjYXNlIERldmFuYWdhcmk6Ci0gICAgY2FzZSBF
dGhpb3BpYzoKLSAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZToKLSAgICBjYXNlIEV0aGlvcGljQWJl
Z2VkZUFtRXQ6Ci0gICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVHZXo6Ci0gICAgY2FzZSBFdGhpb3Bp
Y0FiZWdlZGVUaUVyOgotICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlVGlFdDoKLSAgICBjYXNlIEV0
aGlvcGljSGFsZWhhbWVBYUVyOgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUFhRXQ6Ci0gICAg
Y2FzZSBFdGhpb3BpY0hhbGVoYW1lQW1FdDoKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVHZXo6
Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lT21FdDoKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhh
bWVTaWRFdDoKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVTb0V0OgotICAgIGNhc2UgRXRoaW9w
aWNIYWxlaGFtZVRpRXI6Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lVGlFdDoKLSAgICBjYXNl
IEV0aGlvcGljSGFsZWhhbWVUaWc6Ci0gICAgY2FzZSBHZW9yZ2lhbjoKLSAgICBjYXNlIEd1amFy
YXRpOgotICAgIGNhc2UgR3VybXVraGk6Ci0gICAgY2FzZSBIYW5ndWw6Ci0gICAgY2FzZSBIYW5n
dWxDb25zb25hbnQ6Ci0gICAgY2FzZSBIZWJyZXc6Ci0gICAgY2FzZSBIaXJhZ2FuYToKLSAgICBj
YXNlIEhpcmFnYW5hSXJvaGE6Ci0gICAgY2FzZSBLYW5uYWRhOgotICAgIGNhc2UgS2F0YWthbmE6
Ci0gICAgY2FzZSBLYXRha2FuYUlyb2hhOgotICAgIGNhc2UgS2htZXI6Ci0gICAgY2FzZSBMYW86
Ci0gICAgY2FzZSBMb3dlckFscGhhOgotICAgIGNhc2UgTG93ZXJBcm1lbmlhbjoKLSAgICBjYXNl
IExvd2VyR3JlZWs6Ci0gICAgY2FzZSBMb3dlckhleGFkZWNpbWFsOgotICAgIGNhc2UgTG93ZXJM
YXRpbjoKLSAgICBjYXNlIExvd2VyTm9yd2VnaWFuOgotICAgIGNhc2UgTG93ZXJSb21hbjoKLSAg
ICBjYXNlIE1hbGF5YWxhbToKLSAgICBjYXNlIE1vbmdvbGlhbjoKLSAgICBjYXNlIE15YW5tYXI6
Ci0gICAgY2FzZSBPY3RhbDoKLSAgICBjYXNlIE9yaXlhOgotICAgIGNhc2UgT3JvbW86Ci0gICAg
Y2FzZSBQZXJzaWFuOgotICAgIGNhc2UgU2lkYW1hOgotICAgIGNhc2UgU29tYWxpOgotICAgIGNh
c2UgVGVsdWd1OgotICAgIGNhc2UgVGhhaToKLSAgICBjYXNlIFRpYmV0YW46Ci0gICAgY2FzZSBU
aWdyZToKLSAgICBjYXNlIFRpZ3JpbnlhRXI6Ci0gICAgY2FzZSBUaWdyaW55YUVyQWJlZ2VkZToK
LSAgICBjYXNlIFRpZ3JpbnlhRXQ6Ci0gICAgY2FzZSBUaWdyaW55YUV0QWJlZ2VkZToKLSAgICBj
YXNlIFVwcGVyQWxwaGE6Ci0gICAgY2FzZSBVcHBlckFybWVuaWFuOgotICAgIGNhc2UgVXBwZXJH
cmVlazoKLSAgICBjYXNlIFVwcGVySGV4YWRlY2ltYWw6Ci0gICAgY2FzZSBVcHBlckxhdGluOgot
ICAgIGNhc2UgVXBwZXJOb3J3ZWdpYW46Ci0gICAgY2FzZSBVcHBlclJvbWFuOgotICAgIGNhc2Ug
VXJkdToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFzdGVyaXNrczoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OkZvb3Rub3RlczoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFmYXI6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpBbWhhcmljOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QW1o
YXJpY0FiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBcmFiaWNJbmRpYzoKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OkFybWVuaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Qmlu
YXJ5OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QmVuZ2FsaToKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OkNhbWJvZGlhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNKS0lkZW9ncmFwaGlj
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2prRWFydGhseUJyYW5jaDoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkNqa0hlYXZlbmx5U3RlbToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRl
Y2ltYWxMZWFkaW5nWmVybzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRlY2ltYWw6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpEZXZhbmFnYXJpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
RXRoaW9waWM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGU6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGVBbUV0OgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlR2V6OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRo
aW9waWNBYmVnZWRlVGlFcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2Vk
ZVRpRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lQWFFcjoKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVBYUV0OgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUFtRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpFdGhpb3BpY0hhbGVoYW1lR2V6OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNI
YWxlaGFtZU9tRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lU2lk
RXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lU29FdDoKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVUaUVyOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVRpRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpF
dGhpb3BpY0hhbGVoYW1lVGlnOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6R2VvcmdpYW46Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpHdWphcmF0aToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
Okd1cm11a2hpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGFuZ3VsOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6SGFuZ3VsQ29uc29uYW50OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGVi
cmV3OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGlyYWdhbmE6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpIaXJhZ2FuYUlyb2hhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6S2FubmFkYToK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkthdGFrYW5hOgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6S2F0YWthbmFJcm9oYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OktobWVyOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6TGFvOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJBbHBo
YToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyQXJtZW5pYW46CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpMb3dlckdyZWVrOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJIZXhh
ZGVjaW1hbDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyTGF0aW46CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpMb3dlck5vcndlZ2lhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxv
d2VyUm9tYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpNYWxheWFsYW06CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpNb25nb2xpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpNeWFubWFy
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6T2N0YWw6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpPcml5YToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok9yb21vOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6UGVyc2lhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlNpZGFtYToKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OlNvbWFsaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRlbHVn
dToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRoYWk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpUaWJldGFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmU6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpUaWdyaW55YUVyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmlueWFF
ckFiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55YUV0OgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6VGlncmlueWFFdEFiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpVcHBlckFscGhhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJBcm1lbmlhbjoKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyR3JlZWs6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpVcHBlckhleGFkZWNpbWFsOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJMYXRpbjoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyTm9yd2VnaWFuOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6VXBwZXJSb21hbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVyZHU6CiAgICAg
ICAgIG1fdGV4dCA9IGxpc3RNYXJrZXJUZXh0KHR5cGUsIG1fbGlzdEl0ZW0udmFsdWUoKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTE1NTUsMTA2ICsxNTU1LDEwNiBAQCB2b2lkIFJlbmRl
ckxpc3RNYXJrZXI6OmNvbXB1dGVQcmVmZXJyZWRMCiAgICAgY29uc3QgRm9udENhc2NhZGUmIGZv
bnQgPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCk7CiAKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0
aCA9IDA7Ci0gICAgRUxpc3RTdHlsZVR5cGUgdHlwZSA9IHN0eWxlKCkubGlzdFN0eWxlVHlwZSgp
OworICAgIExpc3RTdHlsZVR5cGUgdHlwZSA9IHN0eWxlKCkubGlzdFN0eWxlVHlwZSgpOwogICAg
IHN3aXRjaCAodHlwZSkgewotICAgICAgICBjYXNlIE5vbmVMaXN0U3R5bGU6Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBBc3Rlcmlza3M6Ci0gICAgICAgIGNhc2UgRm9vdG5vdGVz
OiB7CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpOb25lOgorICAgICAgICBicmVhazsKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OkFzdGVyaXNrczoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkZv
b3Rub3RlczogeworICAgICAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RU
ZXh0UnVuKG1fdGV4dCwgc3R5bGUoKSk7CisgICAgICAgIGxvZ2ljYWxXaWR0aCA9IGZvbnQud2lk
dGgocnVuKTsgLy8gbm8gc3VmZml4IGZvciB0aGVzZSB0eXBlcworICAgIH0KKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDaXJjbGU6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpEaXNjOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6U3F1YXJlOgorICAgICAgICBsb2dp
Y2FsV2lkdGggPSAoZm9udC5mb250TWV0cmljcygpLmFzY2VudCgpICogMiAvIDMgKyAxKSAvIDIg
KyAyOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFmYXI6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpBbWhhcmljOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QW1o
YXJpY0FiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBcmFiaWNJbmRpYzoKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OkFybWVuaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Qmlu
YXJ5OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QmVuZ2FsaToKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OkNhbWJvZGlhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNKS0lkZW9ncmFwaGlj
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2prRWFydGhseUJyYW5jaDoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkNqa0hlYXZlbmx5U3RlbToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRl
Y2ltYWxMZWFkaW5nWmVybzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRlY2ltYWw6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpEZXZhbmFnYXJpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
RXRoaW9waWM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGU6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGVBbUV0OgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlR2V6OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRo
aW9waWNBYmVnZWRlVGlFcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2Vk
ZVRpRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lQWFFcjoKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVBYUV0OgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUFtRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpFdGhpb3BpY0hhbGVoYW1lR2V6OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNI
YWxlaGFtZU9tRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lU2lk
RXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lU29FdDoKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVUaUVyOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVRpRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpF
dGhpb3BpY0hhbGVoYW1lVGlnOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6R2VvcmdpYW46Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpHdWphcmF0aToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
Okd1cm11a2hpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGFuZ3VsOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6SGFuZ3VsQ29uc29uYW50OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGVi
cmV3OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGlyYWdhbmE6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpIaXJhZ2FuYUlyb2hhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6S2FubmFkYToK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkthdGFrYW5hOgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6S2F0YWthbmFJcm9oYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OktobWVyOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6TGFvOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJBbHBo
YToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyQXJtZW5pYW46CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpMb3dlckdyZWVrOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJIZXhh
ZGVjaW1hbDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyTGF0aW46CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpMb3dlck5vcndlZ2lhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxv
d2VyUm9tYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpNYWxheWFsYW06CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpNb25nb2xpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpNeWFubWFy
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6T2N0YWw6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpPcml5YToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok9yb21vOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6UGVyc2lhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlNpZGFtYToKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OlNvbWFsaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRlbHVn
dToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRoYWk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpUaWJldGFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmU6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpUaWdyaW55YUVyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmlueWFF
ckFiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55YUV0OgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6VGlncmlueWFFdEFiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpVcHBlckFscGhhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJBcm1lbmlhbjoKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyR3JlZWs6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpVcHBlckhleGFkZWNpbWFsOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJMYXRpbjoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyTm9yd2VnaWFuOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6VXBwZXJSb21hbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVyZHU6CisgICAg
ICAgIGlmIChtX3RleHQuaXNFbXB0eSgpKQorICAgICAgICAgICAgbG9naWNhbFdpZHRoID0gMDsK
KyAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpj
b25zdHJ1Y3RUZXh0UnVuKG1fdGV4dCwgc3R5bGUoKSk7Ci0gICAgICAgICAgICBsb2dpY2FsV2lk
dGggPSBmb250LndpZHRoKHJ1bik7IC8vIG5vIHN1ZmZpeCBmb3IgdGhlc2UgdHlwZXMKKyAgICAg
ICAgICAgIExheW91dFVuaXQgaXRlbVdpZHRoID0gZm9udC53aWR0aChydW4pOworICAgICAgICAg
ICAgVUNoYXIgc3VmZml4U3BhY2VbMl0gPSB7IGxpc3RNYXJrZXJTdWZmaXgodHlwZSwgbV9saXN0
SXRlbS52YWx1ZSgpKSwgJyAnIH07CisgICAgICAgICAgICBMYXlvdXRVbml0IHN1ZmZpeFNwYWNl
V2lkdGggPSBmb250LndpZHRoKFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHN1ZmZpeFNw
YWNlLCAyLCBzdHlsZSgpKSk7CisgICAgICAgICAgICBsb2dpY2FsV2lkdGggPSBpdGVtV2lkdGgg
KyBzdWZmaXhTcGFjZVdpZHRoOwogICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBDaXJjbGU6Ci0gICAgICAgIGNhc2UgRGlzYzoKLSAgICAgICAgY2FzZSBTcXVhcmU6
Ci0gICAgICAgICAgICBsb2dpY2FsV2lkdGggPSAoZm9udC5mb250TWV0cmljcygpLmFzY2VudCgp
ICogMiAvIDMgKyAxKSAvIDIgKyAyOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
QWZhcjoKLSAgICAgICAgY2FzZSBBbWhhcmljOgotICAgICAgICBjYXNlIEFtaGFyaWNBYmVnZWRl
OgotICAgICAgICBjYXNlIEFyYWJpY0luZGljOgotICAgICAgICBjYXNlIEFybWVuaWFuOgotICAg
ICAgICBjYXNlIEJpbmFyeUxpc3RTdHlsZToKLSAgICAgICAgY2FzZSBCZW5nYWxpOgotICAgICAg
ICBjYXNlIENhbWJvZGlhbjoKLSAgICAgICAgY2FzZSBDSktJZGVvZ3JhcGhpYzoKLSAgICAgICAg
Y2FzZSBDamtFYXJ0aGx5QnJhbmNoOgotICAgICAgICBjYXNlIENqa0hlYXZlbmx5U3RlbToKLSAg
ICAgICAgY2FzZSBEZWNpbWFsTGVhZGluZ1plcm86Ci0gICAgICAgIGNhc2UgRGVjaW1hbExpc3RT
dHlsZToKLSAgICAgICAgY2FzZSBEZXZhbmFnYXJpOgotICAgICAgICBjYXNlIEV0aGlvcGljOgot
ICAgICAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZToKLSAgICAgICAgY2FzZSBFdGhpb3BpY0FiZWdl
ZGVBbUV0OgotICAgICAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZUdlejoKLSAgICAgICAgY2FzZSBF
dGhpb3BpY0FiZWdlZGVUaUVyOgotICAgICAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZVRpRXQ6Ci0g
ICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUFhRXI6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNI
YWxlaGFtZUFhRXQ6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUFtRXQ6Ci0gICAgICAg
IGNhc2UgRXRoaW9waWNIYWxlaGFtZUdlejoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1l
T21FdDoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lU2lkRXQ6Ci0gICAgICAgIGNhc2Ug
RXRoaW9waWNIYWxlaGFtZVNvRXQ6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVRpRXI6
Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVRpRXQ6Ci0gICAgICAgIGNhc2UgRXRoaW9w
aWNIYWxlaGFtZVRpZzoKLSAgICAgICAgY2FzZSBHZW9yZ2lhbjoKLSAgICAgICAgY2FzZSBHdWph
cmF0aToKLSAgICAgICAgY2FzZSBHdXJtdWtoaToKLSAgICAgICAgY2FzZSBIYW5ndWw6Ci0gICAg
ICAgIGNhc2UgSGFuZ3VsQ29uc29uYW50OgotICAgICAgICBjYXNlIEhlYnJldzoKLSAgICAgICAg
Y2FzZSBIaXJhZ2FuYToKLSAgICAgICAgY2FzZSBIaXJhZ2FuYUlyb2hhOgotICAgICAgICBjYXNl
IEthbm5hZGE6Ci0gICAgICAgIGNhc2UgS2F0YWthbmE6Ci0gICAgICAgIGNhc2UgS2F0YWthbmFJ
cm9oYToKLSAgICAgICAgY2FzZSBLaG1lcjoKLSAgICAgICAgY2FzZSBMYW86Ci0gICAgICAgIGNh
c2UgTG93ZXJBbHBoYToKLSAgICAgICAgY2FzZSBMb3dlckFybWVuaWFuOgotICAgICAgICBjYXNl
IExvd2VyR3JlZWs6Ci0gICAgICAgIGNhc2UgTG93ZXJIZXhhZGVjaW1hbDoKLSAgICAgICAgY2Fz
ZSBMb3dlckxhdGluOgotICAgICAgICBjYXNlIExvd2VyTm9yd2VnaWFuOgotICAgICAgICBjYXNl
IExvd2VyUm9tYW46Ci0gICAgICAgIGNhc2UgTWFsYXlhbGFtOgotICAgICAgICBjYXNlIE1vbmdv
bGlhbjoKLSAgICAgICAgY2FzZSBNeWFubWFyOgotICAgICAgICBjYXNlIE9jdGFsOgotICAgICAg
ICBjYXNlIE9yaXlhOgotICAgICAgICBjYXNlIE9yb21vOgotICAgICAgICBjYXNlIFBlcnNpYW46
Ci0gICAgICAgIGNhc2UgU2lkYW1hOgotICAgICAgICBjYXNlIFNvbWFsaToKLSAgICAgICAgY2Fz
ZSBUZWx1Z3U6Ci0gICAgICAgIGNhc2UgVGhhaToKLSAgICAgICAgY2FzZSBUaWJldGFuOgotICAg
ICAgICBjYXNlIFRpZ3JlOgotICAgICAgICBjYXNlIFRpZ3JpbnlhRXI6Ci0gICAgICAgIGNhc2Ug
VGlncmlueWFFckFiZWdlZGU6Ci0gICAgICAgIGNhc2UgVGlncmlueWFFdDoKLSAgICAgICAgY2Fz
ZSBUaWdyaW55YUV0QWJlZ2VkZToKLSAgICAgICAgY2FzZSBVcHBlckFscGhhOgotICAgICAgICBj
YXNlIFVwcGVyQXJtZW5pYW46Ci0gICAgICAgIGNhc2UgVXBwZXJHcmVlazoKLSAgICAgICAgY2Fz
ZSBVcHBlckhleGFkZWNpbWFsOgotICAgICAgICBjYXNlIFVwcGVyTGF0aW46Ci0gICAgICAgIGNh
c2UgVXBwZXJOb3J3ZWdpYW46Ci0gICAgICAgIGNhc2UgVXBwZXJSb21hbjoKLSAgICAgICAgY2Fz
ZSBVcmR1OgotICAgICAgICAgICAgaWYgKG1fdGV4dC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAg
ICAgbG9naWNhbFdpZHRoID0gMDsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAg
IFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4obV90ZXh0LCBzdHls
ZSgpKTsKLSAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGl0ZW1XaWR0aCA9IGZvbnQud2lkdGgo
cnVuKTsKLSAgICAgICAgICAgICAgICBVQ2hhciBzdWZmaXhTcGFjZVsyXSA9IHsgbGlzdE1hcmtl
clN1ZmZpeCh0eXBlLCBtX2xpc3RJdGVtLnZhbHVlKCkpLCAnICcgfTsKLSAgICAgICAgICAgICAg
ICBMYXlvdXRVbml0IHN1ZmZpeFNwYWNlV2lkdGggPSBmb250LndpZHRoKFJlbmRlckJsb2NrOjpj
b25zdHJ1Y3RUZXh0UnVuKHN1ZmZpeFNwYWNlLCAyLCBzdHlsZSgpKSk7Ci0gICAgICAgICAgICAg
ICAgbG9naWNhbFdpZHRoID0gaXRlbVdpZHRoICsgc3VmZml4U3BhY2VXaWR0aDsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBt
X21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IGxvZ2ljYWxXaWR0aDsKQEAgLTE2NzYsOSArMTY3
Niw5IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6dXBkYXRlTWFyZ2lucygpCiAgICAgICAgIGlm
IChpc0ltYWdlKCkpCiAgICAgICAgICAgICBtYXJnaW5FbmQgPSBjTWFya2VyUGFkZGluZzsKICAg
ICAgICAgZWxzZSBzd2l0Y2ggKHN0eWxlKCkubGlzdFN0eWxlVHlwZSgpKSB7Ci0gICAgICAgICAg
ICBjYXNlIERpc2M6Ci0gICAgICAgICAgICBjYXNlIENpcmNsZToKLSAgICAgICAgICAgIGNhc2Ug
U3F1YXJlOgorICAgICAgICAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEaXNjOgorICAgICAgICAg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDaXJjbGU6CisgICAgICAgICAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OlNxdWFyZToKICAgICAgICAgICAgICAgICBtYXJnaW5TdGFydCA9IC0xOwogICAgICAg
ICAgICAgICAgIG1hcmdpbkVuZCA9IGZvbnRNZXRyaWNzLmFzY2VudCgpIC0gbWluUHJlZmVycmVk
TG9naWNhbFdpZHRoKCkgKyAxOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTY5MiwxNSAr
MTY5MiwxNSBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnVwZGF0ZU1hcmdpbnMoKQogICAgICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgaW50IG9mZnNldCA9IGZvbnRNZXRyaWNzLmFz
Y2VudCgpICogMiAvIDM7CiAgICAgICAgICAgICAgICAgc3dpdGNoIChzdHlsZSgpLmxpc3RTdHls
ZVR5cGUoKSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIERpc2M6Ci0gICAgICAgICAgICAg
ICAgICAgIGNhc2UgQ2lyY2xlOgotICAgICAgICAgICAgICAgICAgICBjYXNlIFNxdWFyZToKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblN0YXJ0ID0gLW9mZnNldCAtIGNNYXJrZXJQYWRk
aW5nIC0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICBjYXNlIE5vbmVMaXN0U3R5bGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG1h
cmdpblN0YXJ0ID0gbV90ZXh0LmlzRW1wdHkoKSA/IExheW91dFVuaXQoKSA6IC1taW5QcmVmZXJy
ZWRMb2dpY2FsV2lkdGgoKSAtIG9mZnNldCAvIDI7CisgICAgICAgICAgICAgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpEaXNjOgorICAgICAgICAgICAgICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2ly
Y2xlOgorICAgICAgICAgICAgICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6U3F1YXJlOgorICAgICAg
ICAgICAgICAgICAgICBtYXJnaW5TdGFydCA9IC1vZmZzZXQgLSBjTWFya2VyUGFkZGluZyAtIDE7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6Tm9uZToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgbWFyZ2luU3RhcnQgPSBtX3RleHQuaXNF
bXB0eSgpID8gTGF5b3V0VW5pdCgpIDogLW1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpIC0gb2Zm
c2V0IC8gMjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBt
YXJnaW5FbmQgPSAtbWFyZ2luU3RhcnQgLSBtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKTsKQEAg
LTE3MTAsMTUgKzE3MTAsMTUgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjp1cGRhdGVNYXJnaW5z
KCkKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSBmb250
TWV0cmljcy5hc2NlbnQoKSAqIDIgLyAzOwogICAgICAgICAgICAgICAgIHN3aXRjaCAoc3R5bGUo
KS5saXN0U3R5bGVUeXBlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBEaXNjOgotICAg
ICAgICAgICAgICAgICAgICBjYXNlIENpcmNsZToKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBT
cXVhcmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5FbmQgPSBvZmZzZXQgKyBjTWFy
a2VyUGFkZGluZyArIDEgLSBtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIE5vbmVMaXN0U3R5
bGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkVuZCA9IG1fdGV4dC5pc0Vt
cHR5KCkgPyAwIDogb2Zmc2V0IC8gMjsKKyAgICAgICAgICAgICAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkRpc2M6CisgICAgICAgICAgICAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDaXJjbGU6Cisg
ICAgICAgICAgICAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpTcXVhcmU6CisgICAgICAgICAgICAg
ICAgICAgIG1hcmdpbkVuZCA9IG9mZnNldCArIGNNYXJrZXJQYWRkaW5nICsgMSAtIG1pblByZWZl
cnJlZExvZ2ljYWxXaWR0aCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok5vbmU6CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIG1hcmdp
bkVuZCA9IG1fdGV4dC5pc0VtcHR5KCkgPyAwIDogb2Zmc2V0IC8gMjsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtYXJnaW5TdGFydCA9IC1tYXJnaW5FbmQg
LSBtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKTsKQEAgLTE3NDYsNyArMTc0Niw3IEBAIGludCBS
ZW5kZXJMaXN0TWFya2VyOjpiYXNlbGluZVBvc2l0aW9uKEYKIAogU3RyaW5nIFJlbmRlckxpc3RN
YXJrZXI6OnN1ZmZpeCgpIGNvbnN0CiB7Ci0gICAgRUxpc3RTdHlsZVR5cGUgdHlwZSA9IHN0eWxl
KCkubGlzdFN0eWxlVHlwZSgpOworICAgIExpc3RTdHlsZVR5cGUgdHlwZSA9IHN0eWxlKCkubGlz
dFN0eWxlVHlwZSgpOwogICAgIGNvbnN0IFVDaGFyIHN1ZmZpeCA9IGxpc3RNYXJrZXJTdWZmaXgo
dHlwZSwgbV9saXN0SXRlbS52YWx1ZSgpKTsKIAogICAgIGlmIChzdWZmaXggPT0gJyAnKQpAQCAt
MTc2Nyw3ICsxNzY3LDcgQEAgU3RyaW5nIFJlbmRlckxpc3RNYXJrZXI6OnN1ZmZpeCgpIGNvbnN0
CiAKIGJvb2wgUmVuZGVyTGlzdE1hcmtlcjo6aXNJbnNpZGUoKSBjb25zdAogewotICAgIHJldHVy
biBtX2xpc3RJdGVtLm5vdEluTGlzdCgpIHx8IHN0eWxlKCkubGlzdFN0eWxlUG9zaXRpb24oKSA9
PSBJTlNJREU7CisgICAgcmV0dXJuIG1fbGlzdEl0ZW0ubm90SW5MaXN0KCkgfHwgc3R5bGUoKS5s
aXN0U3R5bGVQb3NpdGlvbigpID09IExpc3RTdHlsZVBvc2l0aW9uOjpJbnNpZGU7CiB9CiAKIEZs
b2F0UmVjdCBSZW5kZXJMaXN0TWFya2VyOjpnZXRSZWxhdGl2ZU1hcmtlclJlY3QoKQpAQCAtMTc3
NiwxMTAgKzE3NzYsMTEwIEBAIEZsb2F0UmVjdCBSZW5kZXJMaXN0TWFya2VyOjpnZXRSZWxhdGl2
ZU0KICAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgwLCAwLCBtX2ltYWdlLT5pbWFnZVNpemUodGhp
cywgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpLndpZHRoKCksIG1faW1hZ2UtPmltYWdlU2l6ZSh0
aGlzLCBzdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSkuaGVpZ2h0KCkpOwogICAgIAogICAgIEZsb2F0
UmVjdCByZWxhdGl2ZVJlY3Q7Ci0gICAgRUxpc3RTdHlsZVR5cGUgdHlwZSA9IHN0eWxlKCkubGlz
dFN0eWxlVHlwZSgpOworICAgIExpc3RTdHlsZVR5cGUgdHlwZSA9IHN0eWxlKCkubGlzdFN0eWxl
VHlwZSgpOwogICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICBjYXNlIEFzdGVyaXNrczoKLSAg
ICAgICAgY2FzZSBGb290bm90ZXM6IHsKLSAgICAgICAgICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBm
b250ID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpOwotICAgICAgICAgICAgVGV4dFJ1biBydW4gPSBS
ZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihtX3RleHQsIHN0eWxlKCkpOwotICAgICAgICAg
ICAgcmVsYXRpdmVSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIGZvbnQud2lkdGgocnVuKSwgZm9udC5m
b250TWV0cmljcygpLmhlaWdodCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgRGlzYzoKLSAgICAgICAgY2FzZSBDaXJjbGU6Ci0gICAgICAgIGNhc2UgU3F1
YXJlOiB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQXJlIHRoZXNlIHBhcnRpY3VsYXIgcm91bmRp
bmcgcnVsZXMgbmVjZXNzYXJ5PwotICAgICAgICAgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRN
ZXRyaWNzID0gc3R5bGUoKS5mb250TWV0cmljcygpOwotICAgICAgICAgICAgaW50IGFzY2VudCA9
IGZvbnRNZXRyaWNzLmFzY2VudCgpOwotICAgICAgICAgICAgaW50IGJ1bGxldFdpZHRoID0gKGFz
Y2VudCAqIDIgLyAzICsgMSkgLyAyOwotICAgICAgICAgICAgcmVsYXRpdmVSZWN0ID0gRmxvYXRS
ZWN0KDEsIDMgKiAoYXNjZW50IC0gYXNjZW50ICogMiAvIDMpIC8gMiwgYnVsbGV0V2lkdGgsIGJ1
bGxldFdpZHRoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
Tm9uZUxpc3RTdHlsZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFzdGVyaXNrczoKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OkZvb3Rub3RlczogeworICAgICAgICBjb25zdCBGb250Q2FzY2Fk
ZSYgZm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKTsKKyAgICAgICAgVGV4dFJ1biBydW4gPSBS
ZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihtX3RleHQsIHN0eWxlKCkpOworICAgICAgICBy
ZWxhdGl2ZVJlY3QgPSBGbG9hdFJlY3QoMCwgMCwgZm9udC53aWR0aChydW4pLCBmb250LmZvbnRN
ZXRyaWNzKCkuaGVpZ2h0KCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpEaXNjOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2lyY2xlOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6U3F1YXJlOiB7CisgICAgICAgIC8vIEZJWE1FOiBBcmUgdGhlc2Ug
cGFydGljdWxhciByb3VuZGluZyBydWxlcyBuZWNlc3Nhcnk/CisgICAgICAgIGNvbnN0IEZvbnRN
ZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlKCkuZm9udE1ldHJpY3MoKTsKKyAgICAgICAgaW50
IGFzY2VudCA9IGZvbnRNZXRyaWNzLmFzY2VudCgpOworICAgICAgICBpbnQgYnVsbGV0V2lkdGgg
PSAoYXNjZW50ICogMiAvIDMgKyAxKSAvIDI7CisgICAgICAgIHJlbGF0aXZlUmVjdCA9IEZsb2F0
UmVjdCgxLCAzICogKGFzY2VudCAtIGFzY2VudCAqIDIgLyAzKSAvIDIsIGJ1bGxldFdpZHRoLCBi
dWxsZXRXaWR0aCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6Ok5vbmU6CisgICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OkFmYXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBbWhhcmljOgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6QW1oYXJpY0FiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpB
cmFiaWNJbmRpYzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFybWVuaWFuOgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6QmluYXJ5OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QmVuZ2FsaToK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNhbWJvZGlhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkNKS0lkZW9ncmFwaGljOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2prRWFydGhseUJy
YW5jaDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNqa0hlYXZlbmx5U3RlbToKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OkRlY2ltYWxMZWFkaW5nWmVybzoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkRlY2ltYWw6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEZXZhbmFnYXJpOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhp
b3BpY0FiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGVBbUV0
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlR2V6OgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlVGlFcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkV0aGlvcGljQWJlZ2VkZVRpRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3Bp
Y0hhbGVoYW1lQWFFcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVB
YUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUFtRXQ6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lR2V6OgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZU9tRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpF
dGhpb3BpY0hhbGVoYW1lU2lkRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hh
bGVoYW1lU29FdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVUaUVy
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVRpRXQ6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lVGlnOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6R2VvcmdpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpHdWphcmF0aToKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6Okd1cm11a2hpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGFu
Z3VsOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGFuZ3VsQ29uc29uYW50OgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6SGVicmV3OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGlyYWdhbmE6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIaXJhZ2FuYUlyb2hhOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6S2FubmFkYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkthdGFrYW5hOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6S2F0YWthbmFJcm9oYToKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OktobWVyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TGFvOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6TG93ZXJBbHBoYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyQXJtZW5p
YW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckdyZWVrOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6TG93ZXJIZXhhZGVjaW1hbDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2Vy
TGF0aW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlck5vcndlZ2lhbjoKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6Okxvd2VyUm9tYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpNYWxh
eWFsYW06CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpNb25nb2xpYW46CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpNeWFubWFyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6T2N0YWw6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpPcml5YToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok9yb21v
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6UGVyc2lhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OlNpZGFtYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlNvbWFsaToKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OlRlbHVndToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRoYWk6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpUaWJldGFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGln
cmU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55YUVyOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6VGlncmlueWFFckFiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdy
aW55YUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmlueWFFdEFiZWdlZGU6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckFscGhhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
VXBwZXJBcm1lbmlhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyR3JlZWs6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckhleGFkZWNpbWFsOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6VXBwZXJMYXRpbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyTm9yd2VnaWFu
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJSb21hbjoKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OlVyZHU6CisgICAgICAgIGlmIChtX3RleHQuaXNFbXB0eSgpKQogICAgICAgICAgICAg
cmV0dXJuIEZsb2F0UmVjdCgpOwotICAgICAgICBjYXNlIEFmYXI6Ci0gICAgICAgIGNhc2UgQW1o
YXJpYzoKLSAgICAgICAgY2FzZSBBbWhhcmljQWJlZ2VkZToKLSAgICAgICAgY2FzZSBBcmFiaWNJ
bmRpYzoKLSAgICAgICAgY2FzZSBBcm1lbmlhbjoKLSAgICAgICAgY2FzZSBCaW5hcnlMaXN0U3R5
bGU6Ci0gICAgICAgIGNhc2UgQmVuZ2FsaToKLSAgICAgICAgY2FzZSBDYW1ib2RpYW46Ci0gICAg
ICAgIGNhc2UgQ0pLSWRlb2dyYXBoaWM6Ci0gICAgICAgIGNhc2UgQ2prRWFydGhseUJyYW5jaDoK
LSAgICAgICAgY2FzZSBDamtIZWF2ZW5seVN0ZW06Ci0gICAgICAgIGNhc2UgRGVjaW1hbExlYWRp
bmdaZXJvOgotICAgICAgICBjYXNlIERlY2ltYWxMaXN0U3R5bGU6Ci0gICAgICAgIGNhc2UgRGV2
YW5hZ2FyaToKLSAgICAgICAgY2FzZSBFdGhpb3BpYzoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0Fi
ZWdlZGU6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlQW1FdDoKLSAgICAgICAgY2FzZSBF
dGhpb3BpY0FiZWdlZGVHZXo6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlVGlFcjoKLSAg
ICAgICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVUaUV0OgotICAgICAgICBjYXNlIEV0aGlvcGljSGFs
ZWhhbWVBYUVyOgotICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVBYUV0OgotICAgICAgICBj
YXNlIEV0aGlvcGljSGFsZWhhbWVBbUV0OgotICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVH
ZXo6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZU9tRXQ6Ci0gICAgICAgIGNhc2UgRXRo
aW9waWNIYWxlaGFtZVNpZEV0OgotICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVTb0V0Ogot
ICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVUaUVyOgotICAgICAgICBjYXNlIEV0aGlvcGlj
SGFsZWhhbWVUaUV0OgotICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVUaWc6Ci0gICAgICAg
IGNhc2UgR2VvcmdpYW46Ci0gICAgICAgIGNhc2UgR3VqYXJhdGk6Ci0gICAgICAgIGNhc2UgR3Vy
bXVraGk6Ci0gICAgICAgIGNhc2UgSGFuZ3VsOgotICAgICAgICBjYXNlIEhhbmd1bENvbnNvbmFu
dDoKLSAgICAgICAgY2FzZSBIZWJyZXc6Ci0gICAgICAgIGNhc2UgSGlyYWdhbmE6Ci0gICAgICAg
IGNhc2UgSGlyYWdhbmFJcm9oYToKLSAgICAgICAgY2FzZSBLYW5uYWRhOgotICAgICAgICBjYXNl
IEthdGFrYW5hOgotICAgICAgICBjYXNlIEthdGFrYW5hSXJvaGE6Ci0gICAgICAgIGNhc2UgS2ht
ZXI6Ci0gICAgICAgIGNhc2UgTGFvOgotICAgICAgICBjYXNlIExvd2VyQWxwaGE6Ci0gICAgICAg
IGNhc2UgTG93ZXJBcm1lbmlhbjoKLSAgICAgICAgY2FzZSBMb3dlckdyZWVrOgotICAgICAgICBj
YXNlIExvd2VySGV4YWRlY2ltYWw6Ci0gICAgICAgIGNhc2UgTG93ZXJMYXRpbjoKLSAgICAgICAg
Y2FzZSBMb3dlck5vcndlZ2lhbjoKLSAgICAgICAgY2FzZSBMb3dlclJvbWFuOgotICAgICAgICBj
YXNlIE1hbGF5YWxhbToKLSAgICAgICAgY2FzZSBNb25nb2xpYW46Ci0gICAgICAgIGNhc2UgTXlh
bm1hcjoKLSAgICAgICAgY2FzZSBPY3RhbDoKLSAgICAgICAgY2FzZSBPcml5YToKLSAgICAgICAg
Y2FzZSBPcm9tbzoKLSAgICAgICAgY2FzZSBQZXJzaWFuOgotICAgICAgICBjYXNlIFNpZGFtYToK
LSAgICAgICAgY2FzZSBTb21hbGk6Ci0gICAgICAgIGNhc2UgVGVsdWd1OgotICAgICAgICBjYXNl
IFRoYWk6Ci0gICAgICAgIGNhc2UgVGliZXRhbjoKLSAgICAgICAgY2FzZSBUaWdyZToKLSAgICAg
ICAgY2FzZSBUaWdyaW55YUVyOgotICAgICAgICBjYXNlIFRpZ3JpbnlhRXJBYmVnZWRlOgotICAg
ICAgICBjYXNlIFRpZ3JpbnlhRXQ6Ci0gICAgICAgIGNhc2UgVGlncmlueWFFdEFiZWdlZGU6Ci0g
ICAgICAgIGNhc2UgVXBwZXJBbHBoYToKLSAgICAgICAgY2FzZSBVcHBlckFybWVuaWFuOgotICAg
ICAgICBjYXNlIFVwcGVyR3JlZWs6Ci0gICAgICAgIGNhc2UgVXBwZXJIZXhhZGVjaW1hbDoKLSAg
ICAgICAgY2FzZSBVcHBlckxhdGluOgotICAgICAgICBjYXNlIFVwcGVyTm9yd2VnaWFuOgotICAg
ICAgICBjYXNlIFVwcGVyUm9tYW46Ci0gICAgICAgIGNhc2UgVXJkdToKLSAgICAgICAgICAgIGlm
IChtX3RleHQuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsK
LSAgICAgICAgICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUoKS5mb250Q2FzY2Fk
ZSgpOwotICAgICAgICAgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4
dFJ1bihtX3RleHQsIHN0eWxlKCkpOwotICAgICAgICAgICAgZmxvYXQgaXRlbVdpZHRoID0gZm9u
dC53aWR0aChydW4pOwotICAgICAgICAgICAgVUNoYXIgc3VmZml4U3BhY2VbMl0gPSB7IGxpc3RN
YXJrZXJTdWZmaXgodHlwZSwgbV9saXN0SXRlbS52YWx1ZSgpKSwgJyAnIH07Ci0gICAgICAgICAg
ICBmbG9hdCBzdWZmaXhTcGFjZVdpZHRoID0gZm9udC53aWR0aChSZW5kZXJCbG9jazo6Y29uc3Ry
dWN0VGV4dFJ1bihzdWZmaXhTcGFjZSwgMiwgc3R5bGUoKSkpOwotICAgICAgICAgICAgcmVsYXRp
dmVSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIGl0ZW1XaWR0aCArIHN1ZmZpeFNwYWNlV2lkdGgsIGZv
bnQuZm9udE1ldHJpY3MoKS5oZWlnaHQoKSk7CisgICAgICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBm
b250ID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpOworICAgICAgICBUZXh0UnVuIHJ1biA9IFJlbmRl
ckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKG1fdGV4dCwgc3R5bGUoKSk7CisgICAgICAgIGZsb2F0
IGl0ZW1XaWR0aCA9IGZvbnQud2lkdGgocnVuKTsKKyAgICAgICAgVUNoYXIgc3VmZml4U3BhY2Vb
Ml0gPSB7IGxpc3RNYXJrZXJTdWZmaXgodHlwZSwgbV9saXN0SXRlbS52YWx1ZSgpKSwgJyAnIH07
CisgICAgICAgIGZsb2F0IHN1ZmZpeFNwYWNlV2lkdGggPSBmb250LndpZHRoKFJlbmRlckJsb2Nr
Ojpjb25zdHJ1Y3RUZXh0UnVuKHN1ZmZpeFNwYWNlLCAyLCBzdHlsZSgpKSk7CisgICAgICAgIHJl
bGF0aXZlUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCBpdGVtV2lkdGggKyBzdWZmaXhTcGFjZVdpZHRo
LCBmb250LmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCkpOwogICAgIH0KIAogICAgIGlmICghc3R5bGUo
KS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDcgKzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJMaXN0SXRlbTsK
IAotU3RyaW5nIGxpc3RNYXJrZXJUZXh0KEVMaXN0U3R5bGVUeXBlLCBpbnQgdmFsdWUpOworU3Ry
aW5nIGxpc3RNYXJrZXJUZXh0KExpc3RTdHlsZVR5cGUsIGludCB2YWx1ZSk7CiAKIC8vIFVzZWQg
dG8gcmVuZGVyIHRoZSBsaXN0IGl0ZW0ncyBtYXJrZXIuCiAvLyBUaGUgUmVuZGVyTGlzdE1hcmtl
ciBhbHdheXMgaGFzIHRvIGJlIGEgY2hpbGQgb2YgYSBSZW5kZXJMaXN0SXRlbS4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVs
ZW1lbnRzLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyAr
NTMsNyBAQCB2b2lkIFJlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyOjpsCiB7CiAgICAg
UmVuZGVyQmxvY2tGbG93OjpsYXlvdXQoKTsKIAotICAgIGlmIChzdHlsZSgpLmRpc3BsYXkoKSA9
PSBOT05FIHx8ICFpczxSZW5kZXJCb3g+KG5leHRTaWJsaW5nKCkpKQorICAgIGlmIChzdHlsZSgp
LmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSB8fCAhaXM8UmVuZGVyQm94PihuZXh0U2li
bGluZygpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVuZGVyQm94JiBidXR0b25Cb3ggPSBk
b3duY2FzdDxSZW5kZXJCb3g+KCpuZXh0U2libGluZygpKTsKQEAgLTk4LDcgKzk4LDcgQEAgUmVu
ZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6UmVuZGVyVAogdm9pZCBSZW5kZXJUZXh0VHJh
Y2tDb250YWluZXJFbGVtZW50OjpsYXlvdXQoKQogewogICAgIFJlbmRlckJsb2NrRmxvdzo6bGF5
b3V0KCk7Ci0gICAgaWYgKHN0eWxlKCkuZGlzcGxheSgpID09IE5PTkUpCisgICAgaWYgKHN0eWxl
KCkuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpOb25lKQogICAgICAgICByZXR1cm47CiAKICAg
ICBBU1NFUlQobWVkaWFDb250cm9sRWxlbWVudFR5cGUoZWxlbWVudCgpKSA9PSBNZWRpYVRleHRU
cmFja0Rpc3BsYXlDb250YWluZXIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck1lbnVMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWVudUxpc3QuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsMTIgKzEy
NywxMiBAQCB2b2lkIFJlbmRlck1lbnVMaXN0OjphZGp1c3RJbm5lclN0eWxlKCkKICAgICBpZiAo
ZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLnNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNO
YXR1cmFsKCkpIHsKICAgICAgICAgLy8gSXRlbXMgaW4gdGhlIHBvcHVwIHdpbGwgbm90IHJlc3Bl
Y3QgdGhlIENTUyB0ZXh0LWFsaWduIGFuZCBkaXJlY3Rpb24gcHJvcGVydGllcywKICAgICAgICAg
Ly8gc28gd2UgbXVzdCBhZGp1c3Qgb3VyIG93biBzdHlsZSB0byBtYXRjaC4KLSAgICAgICAgaW5u
ZXJTdHlsZS5zZXRUZXh0QWxpZ24oTEVGVCk7CisgICAgICAgIGlubmVyU3R5bGUuc2V0VGV4dEFs
aWduKFRleHRBbGlnbk1vZGU6OkxlZnQpOwogICAgICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlv
biA9IChtX2J1dHRvblRleHQgJiYgbV9idXR0b25UZXh0LT50ZXh0KCkuZGVmYXVsdFdyaXRpbmdE
aXJlY3Rpb24oKSA9PSBVX1JJR0hUX1RPX0xFRlQpID8gUlRMIDogTFRSOwogICAgICAgICBpbm5l
clN0eWxlLnNldERpcmVjdGlvbihkaXJlY3Rpb24pOwogI2lmIFBMQVRGT1JNKElPUykKICAgICB9
IGVsc2UgaWYgKGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5zZWxlY3RJdGVtQWxpZ25tZW50
Rm9sbG93c01lbnVXcml0aW5nRGlyZWN0aW9uKCkpIHsKLSAgICAgICAgaW5uZXJTdHlsZS5zZXRU
ZXh0QWxpZ24oc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBMVFIgPyBMRUZUIDogUklHSFQpOworICAg
ICAgICBpbm5lclN0eWxlLnNldFRleHRBbGlnbihzdHlsZSgpLmRpcmVjdGlvbigpID09IExUUiA/
IFRleHRBbGlnbk1vZGU6OkxlZnQgOiBUZXh0QWxpZ25Nb2RlOjpSaWdodCk7CiAgICAgICAgIFRl
eHREaXJlY3Rpb24gZGlyZWN0aW9uOwogICAgICAgICBFVW5pY29kZUJpZGkgdW5pY29kZUJpZGk7
CiAgICAgICAgIGlmIChtdWx0aXBsZSgpICYmIHNlbGVjdGVkT3B0aW9uQ291bnQoKnRoaXMpICE9
IDEpIHsKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIFJlbmRlck1lbnVMaXN0OjphZGp1c3RJbm5l
clN0eWxlKCkKICAgICB9IGVsc2UgaWYgKG1fb3B0aW9uU3R5bGUgJiYgZG9jdW1lbnQoKS5wYWdl
KCktPmNocm9tZSgpLnNlbGVjdEl0ZW1BbGlnbm1lbnRGb2xsb3dzTWVudVdyaXRpbmdEaXJlY3Rp
b24oKSkgewogICAgICAgICBpZiAoKG1fb3B0aW9uU3R5bGUtPmRpcmVjdGlvbigpICE9IGlubmVy
U3R5bGUuZGlyZWN0aW9uKCkgfHwgbV9vcHRpb25TdHlsZS0+dW5pY29kZUJpZGkoKSAhPSBpbm5l
clN0eWxlLnVuaWNvZGVCaWRpKCkpKQogICAgICAgICAgICAgbV9pbm5lckJsb2NrLT5zZXROZWVk
c0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKLSAgICAgICAgaW5uZXJTdHlsZS5zZXRUZXh0
QWxpZ24oc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBMRUZUIDogUklHSFQpOwor
ICAgICAgICBpbm5lclN0eWxlLnNldFRleHRBbGlnbihzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJl
Y3Rpb24oKSA/IFRleHRBbGlnbk1vZGU6OkxlZnQgOiBUZXh0QWxpZ25Nb2RlOjpSaWdodCk7CiAg
ICAgICAgIGlubmVyU3R5bGUuc2V0RGlyZWN0aW9uKG1fb3B0aW9uU3R5bGUtPmRpcmVjdGlvbigp
KTsKICAgICAgICAgaW5uZXJTdHlsZS5zZXRVbmljb2RlQmlkaShtX29wdGlvblN0eWxlLT51bmlj
b2RlQmlkaSgpKTsKICAgICB9CkBAIC01MDcsOCArNTA3LDggQEAgUG9wdXBNZW51U3R5bGUgUmVu
ZGVyTWVudUxpc3Q6Oml0ZW1TdHlsZQogICAgIGdldEl0ZW1CYWNrZ3JvdW5kQ29sb3IobGlzdElu
ZGV4LCBpdGVtQmFja2dyb3VuZENvbG9yLCBpdGVtSGFzQ3VzdG9tQmFja2dyb3VuZENvbG9yKTsK
IAogICAgIGF1dG8mIHN0eWxlID0gKmVsZW1lbnQtPmNvbXB1dGVkU3R5bGUoKTsKLSAgICByZXR1
cm4gUG9wdXBNZW51U3R5bGUoc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmls
dGVyKENTU1Byb3BlcnR5Q29sb3IpLCBpdGVtQmFja2dyb3VuZENvbG9yLCBzdHlsZS5mb250Q2Fz
Y2FkZSgpLCBzdHlsZS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSwKLSAgICAgICAgc3R5bGUuZGlz
cGxheSgpID09IE5PTkUsIHRydWUsIHN0eWxlLnRleHRJbmRlbnQoKSwgc3R5bGUuZGlyZWN0aW9u
KCksIGlzT3ZlcnJpZGUoc3R5bGUudW5pY29kZUJpZGkoKSksCisgICAgcmV0dXJuIFBvcHVwTWVu
dVN0eWxlKHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9w
ZXJ0eUNvbG9yKSwgaXRlbUJhY2tncm91bmRDb2xvciwgc3R5bGUuZm9udENhc2NhZGUoKSwgc3R5
bGUudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUsCisgICAgICAgIHN0eWxlLmRp
c3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSwgdHJ1ZSwgc3R5bGUudGV4dEluZGVudCgpLCBz
dHlsZS5kaXJlY3Rpb24oKSwgaXNPdmVycmlkZShzdHlsZS51bmljb2RlQmlkaSgpKSwKICAgICAg
ICAgaXRlbUhhc0N1c3RvbUJhY2tncm91bmRDb2xvciA/IFBvcHVwTWVudVN0eWxlOjpDdXN0b21C
YWNrZ3JvdW5kQ29sb3IgOiBQb3B1cE1lbnVTdHlsZTo6RGVmYXVsdEJhY2tncm91bmRDb2xvcik7
CiB9CiAKQEAgLTU0Niw3ICs1NDYsNyBAQCBQb3B1cE1lbnVTdHlsZSBSZW5kZXJNZW51TGlzdDo6
bWVudVN0eWxlCiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlVG9Vc2UgPSBtX2lubmVyQmxv
Y2sgPyBtX2lubmVyQmxvY2stPnN0eWxlKCkgOiBzdHlsZSgpOwogICAgIEludFJlY3QgYWJzQm91
bmRzID0gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKTsKICAgICBy
ZXR1cm4gUG9wdXBNZW51U3R5bGUoc3R5bGVUb1VzZS52aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRo
Q29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlVG9Vc2UudmlzaXRlZERlcGVuZGVu
dENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSwKLSAgICAg
ICAgc3R5bGVUb1VzZS5mb250Q2FzY2FkZSgpLCBzdHlsZVRvVXNlLnZpc2liaWxpdHkoKSA9PSBW
SVNJQkxFLCBzdHlsZVRvVXNlLmRpc3BsYXkoKSA9PSBOT05FLAorICAgICAgICBzdHlsZVRvVXNl
LmZvbnRDYXNjYWRlKCksIHN0eWxlVG9Vc2UudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZp
c2libGUsIHN0eWxlVG9Vc2UuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpOb25lLAogICAgICAg
ICBzdHlsZSgpLmhhc0FwcGVhcmFuY2UoKSAmJiBzdHlsZSgpLmFwcGVhcmFuY2UoKSA9PSBNZW51
bGlzdFBhcnQsIHN0eWxlVG9Vc2UudGV4dEluZGVudCgpLAogICAgICAgICBzdHlsZSgpLmRpcmVj
dGlvbigpLCBpc092ZXJyaWRlKHN0eWxlKCkudW5pY29kZUJpZGkoKSksIFBvcHVwTWVudVN0eWxl
OjpEZWZhdWx0QmFja2dyb3VuZENvbG9yLAogICAgICAgICBQb3B1cE1lbnVTdHlsZTo6U2VsZWN0
UG9wdXAsIHRoZW1lKCkucG9wdXBNZW51U2l6ZShzdHlsZVRvVXNlLCBhYnNCb3VuZHMpKTsKQEAg
LTU1OSw3ICs1NTksNyBAQCBIb3N0V2luZG93KiBSZW5kZXJNZW51TGlzdDo6aG9zdFdpbmRvdygp
CiAKIFJlZjxTY3JvbGxiYXI+IFJlbmRlck1lbnVMaXN0OjpjcmVhdGVTY3JvbGxiYXIoU2Nyb2xs
YWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlv
biwgU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUpCiB7Ci0gICAgYm9vbCBoYXNDdXN0
b21TY3JvbGxiYXJTdHlsZSA9IHN0eWxlKCkuaGFzUHNldWRvU3R5bGUoU0NST0xMQkFSKTsKKyAg
ICBib29sIGhhc0N1c3RvbVNjcm9sbGJhclN0eWxlID0gc3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShQ
c2V1ZG9JZDo6U2Nyb2xsYmFyKTsKICAgICBpZiAoaGFzQ3VzdG9tU2Nyb2xsYmFyU3R5bGUpCiAg
ICAgICAgIHJldHVybiBSZW5kZXJTY3JvbGxiYXI6OmNyZWF0ZUN1c3RvbVNjcm9sbGJhcihzY3Jv
bGxhYmxlQXJlYSwgb3JpZW50YXRpb24sICZzZWxlY3RFbGVtZW50KCkpOwogICAgIHJldHVybiBT
Y3JvbGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcihzY3JvbGxhYmxlQXJlYSwgb3JpZW50YXRp
b24sIGNvbnRyb2xTaXplKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
dWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmNwcAko
cmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRp
Q29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzks
NyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoUmVuZGVyTXVsdGlDCiAKIFJlbmRlclB0
cjxSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlcj4gUmVuZGVyTXVsdGlDb2x1bW5T
cGFubmVyUGxhY2Vob2xkZXI6OmNyZWF0ZUFub255bW91cyhSZW5kZXJNdWx0aUNvbHVtbkZsb3cm
IGZyYWdtZW50ZWRGbG93LCBSZW5kZXJCb3gmIHNwYW5uZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBw
YXJlbnRTdHlsZSkKIHsKLSAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFu
b255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50U3R5bGUsIEJMT0NLKTsKKyAgICBhdXRvIG5l
d1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFy
ZW50U3R5bGUsIERpc3BsYXlUeXBlOjpCbG9jayk7CiAgICAgbmV3U3R5bGUuc2V0Q2xlYXIoQ2xl
YXI6OkJvdGgpOyAvLyBXZSBkb24ndCB3YW50IGZsb2F0cyBpbiB0aGUgcm93IHByZWNlZGluZyB0
aGUgc3Bhbm5lciB0byBjb250aW51ZSBvbiB0aGUgb3RoZXIgc2lkZS4KICAgICBhdXRvIHBsYWNl
aG9sZGVyID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xk
ZXI+KGZyYWdtZW50ZWRGbG93LCBzcGFubmVyLCBXVEZNb3ZlKG5ld1N0eWxlKSk7CiAgICAgcGxh
Y2Vob2xkZXItPmluaXRpYWxpemVTdHlsZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTc0LDcgKzE1
NzQsNyBAQCBpbnQgUmVuZGVyT2JqZWN0Ojppbm5lckxpbmVIZWlnaHQoKSBjb25zCiB2b2lkIFJl
bmRlck9iamVjdDo6YWRkQW5ub3RhdGVkUmVnaW9ucyhWZWN0b3I8QW5ub3RhdGVkUmVnaW9uVmFs
dWU+JiByZWdpb25zKQogewogICAgIC8vIENvbnZlcnQgdGhlIHN0eWxlIHJlZ2lvbnMgdG8gYWJz
b2x1dGUgY29vcmRpbmF0ZXMuCi0gICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lC
TEUgfHwgIWlzPFJlbmRlckJveD4oKnRoaXMpKQorICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHko
KSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlIHx8ICFpczxSZW5kZXJCb3g+KCp0aGlzKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIAogICAgIGF1dG8mIGJveCA9IGRvd25jYXN0PFJlbmRlckJveD4oKnRo
aXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkocmV2aXNp
b24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MDcsOSArNDA3LDkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
Ly8gVGhpcyBmdW5jdGlvbiBpcyBrZXB0IGluIHN5bmMgd2l0aCBhbm9ueW1vdXMgYmxvY2sgY3Jl
YXRpb24gY29uZGl0aW9ucyBpbgogICAgICAgICAvLyBSZW5kZXJCbG9jazo6Y3JlYXRlQW5vbnlt
b3VzQmxvY2soKS4gVGhpcyBpbmNsdWRlcyBjcmVhdGluZyBhbiBhbm9ueW1vdXMKLSAgICAgICAg
Ly8gUmVuZGVyQmxvY2sgaGF2aW5nIGEgQkxPQ0sgb3IgQk9YIGRpc3BsYXkuIE90aGVyIGNsYXNz
ZXMgc3VjaCBhcyBSZW5kZXJUZXh0RnJhZ21lbnQKKyAgICAgICAgLy8gUmVuZGVyQmxvY2sgaGF2
aW5nIGEgRGlzcGxheVR5cGU6OkJsb2NrIG9yIERpc3BsYXlUeXBlOjpCb3ggZGlzcGxheS4gT3Ro
ZXIgY2xhc3NlcyBzdWNoIGFzIFJlbmRlclRleHRGcmFnbWVudAogICAgICAgICAvLyBhcmUgbm90
IFJlbmRlckJsb2NrcyBhbmQgd2lsbCByZXR1cm4gZmFsc2UuIFNlZSBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY3MDkuIAotICAgICAgICByZXR1cm4gaXNBbm9ueW1v
dXMoKSAmJiAoc3R5bGUoKS5kaXNwbGF5KCkgPT0gQkxPQ0sgfHwgc3R5bGUoKS5kaXNwbGF5KCkg
PT0gQk9YKSAmJiBzdHlsZSgpLnN0eWxlVHlwZSgpID09IE5PUFNFVURPICYmIGlzUmVuZGVyQmxv
Y2soKSAmJiAhaXNMaXN0TWFya2VyKCkgJiYgIWlzUmVuZGVyRnJhZ21lbnRlZEZsb3coKSAmJiAh
aXNSZW5kZXJNdWx0aUNvbHVtblNldCgpICYmICFpc1JlbmRlclZpZXcoKQorICAgICAgICByZXR1
cm4gaXNBbm9ueW1vdXMoKSAmJiAoc3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OkJs
b2NrIHx8IHN0eWxlKCkuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpCb3gpICYmIHN0eWxlKCku
c3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6Ok5vbmUgJiYgaXNSZW5kZXJCbG9jaygpICYmICFpc0xp
c3RNYXJrZXIoKSAmJiAhaXNSZW5kZXJGcmFnbWVudGVkRmxvdygpICYmICFpc1JlbmRlck11bHRp
Q29sdW1uU2V0KCkgJiYgIWlzUmVuZGVyVmlldygpCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQogICAgICAgICAgICAgJiYgIWlzUmVuZGVyRnVsbFNjcmVlbigpCiAgICAgICAgICAgICAmJiAh
aXNSZW5kZXJGdWxsU2NyZWVuUGxhY2Vob2xkZXIoKQpAQCAtMTAyMyw3ICsxMDIzLDcgQEAgaW5s
aW5lIGJvb2wgUmVuZGVyT2JqZWN0Ojppc0JlZm9yZUNvbnRlbgogICAgIC8vIFRleHQgbm9kZXMg
ZG9uJ3QgaGF2ZSB0aGVpciBvd24gc3R5bGVzLCBzbyBpZ25vcmUgdGhlIHN0eWxlIG9uIGEgdGV4
dCBub2RlLgogICAgIGlmIChpc1RleHQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
IChzdHlsZSgpLnN0eWxlVHlwZSgpICE9IEJFRk9SRSkKKyAgICBpZiAoc3R5bGUoKS5zdHlsZVR5
cGUoKSAhPSBQc2V1ZG9JZDo6QmVmb3JlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0
dXJuIHRydWU7CiB9CkBAIC0xMDMzLDcgKzEwMzMsNyBAQCBpbmxpbmUgYm9vbCBSZW5kZXJPYmpl
Y3Q6OmlzQWZ0ZXJDb250ZW50CiAgICAgLy8gVGV4dCBub2RlcyBkb24ndCBoYXZlIHRoZWlyIG93
biBzdHlsZXMsIHNvIGlnbm9yZSB0aGUgc3R5bGUgb24gYSB0ZXh0IG5vZGUuCiAgICAgaWYgKGlz
VGV4dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHN0eWxlKCkuc3R5bGVUeXBl
KCkgIT0gQUZURVIpCisgICAgaWYgKHN0eWxlKCkuc3R5bGVUeXBlKCkgIT0gUHNldWRvSWQ6OkFm
dGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAJKHJldmlzaW9uIDIz
MjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI0Miw3ICsyNDIsNyBAQCBib29sIFJlbmRlclJlcGxhY2VkOjpzaG91
bGRQYWludChQYWludEluCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgLy8g
aWYgd2UncmUgaW52aXNpYmxlIG9yIGhhdmVuJ3QgcmVjZWl2ZWQgYSBsYXlvdXQgeWV0LCB0aGVu
IGp1c3QgYmFpbC4KLSAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAg
ICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIExheW91dFBvaW50IGFkanVzdGVkUGFpbnRPZmZz
ZXQgPSBwYWludE9mZnNldCArIGxvY2F0aW9uKCk7CkBAIC02NjcsNyArNjY3LDcgQEAgYm9vbCBS
ZW5kZXJSZXBsYWNlZDo6aXNTZWxlY3RlZCgpIGNvbnN0CiAKIExheW91dFJlY3QgUmVuZGVyUmVw
bGFjZWQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7Ci0gICAgaWYgKHN0eWxlKCkudmlz
aWJpbGl0eSgpICE9IFZJU0lCTEUgJiYgIWVuY2xvc2luZ0xheWVyKCktPmhhc1Zpc2libGVDb250
ZW50KCkpCisgICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2li
bGUgJiYgIWVuY2xvc2luZ0xheWVyKCktPmhhc1Zpc2libGVDb250ZW50KCkpCiAgICAgICAgIHJl
dHVybiBMYXlvdXRSZWN0KCk7CiAKICAgICAvLyBUaGUgc2VsZWN0aW9uUmVjdCBjYW4gcHJvamVj
dCBvdXRzaWRlIG9mIHRoZSBvdmVyZmxvd1JlY3QsIHNvIHRha2UgdGhlaXIgdW5pb24KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmNwcAkocmV2aXNpb24g
MjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjAsOSArNjAsOSBAQCBSZW5kZXJSdWJ5UnVuKiBSZW5kZXJSdWJ5
QmFzZTo6cnVieVJ1bigpCiAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclJ1YnlSdW4+KHBhcmVu
dCgpKTsKIH0KIAotRVRleHRBbGlnbiBSZW5kZXJSdWJ5QmFzZTo6dGV4dEFsaWdubWVudEZvckxp
bmUoYm9vbCAvKiBlbmRzV2l0aFNvZnRCcmVhayAqLykgY29uc3QKK1RleHRBbGlnbk1vZGUgUmVu
ZGVyUnVieUJhc2U6OnRleHRBbGlnbm1lbnRGb3JMaW5lKGJvb2wgLyogZW5kc1dpdGhTb2Z0QnJl
YWsgKi8pIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEpVU1RJRlk7CisgICAgcmV0dXJuIFRleHRBbGln
bk1vZGU6Okp1c3RpZnk7CiB9CiAKIHZvaWQgUmVuZGVyUnVieUJhc2U6OmFkanVzdElubGluZURp
cmVjdGlvbkxpbmVCb3VuZHMoaW50IGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQsIGZsb2F0JiBs
b2dpY2FsTGVmdCwgZmxvYXQmIGxvZ2ljYWxXaWR0aCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5oCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAt
NjIsNyArNjIsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGJvb2wgaXNSdWJ5QmFzZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGlzQ2hpbGRBbGxvd2VkKGNv
bnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgRVRleHRBbGlnbiB0ZXh0QWxpZ25tZW50Rm9yTGluZShib29sIGVuZHNXaXRoU29mdEJyZWFr
KSBjb25zdCBvdmVycmlkZTsKKyAgICBUZXh0QWxpZ25Nb2RlIHRleHRBbGlnbm1lbnRGb3JMaW5l
KGJvb2wgZW5kc1dpdGhTb2Z0QnJlYWspIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgYWRqdXN0
SW5saW5lRGlyZWN0aW9uTGluZUJvdW5kcyhpbnQgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCwg
ZmxvYXQmIGxvZ2ljYWxMZWZ0LCBmbG9hdCYgbG9naWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIGZsb2F0IG1faW5pdGlhbE9mZnNldDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSdWJ5UnVuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTksOCAr
OTksOCBAQCBib29sIFJlbmRlclJ1YnlSdW46OmlzQ2hpbGRBbGxvd2VkKGNvbnN0CiAKIFJlbmRl
clB0cjxSZW5kZXJSdWJ5QmFzZT4gUmVuZGVyUnVieVJ1bjo6Y3JlYXRlUnVieUJhc2UoKSBjb25z
dAogewotICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5
bGVXaXRoRGlzcGxheShzdHlsZSgpLCBCTE9DSyk7Ci0gICAgbmV3U3R5bGUuc2V0VGV4dEFsaWdu
KENFTlRFUik7IC8vIEZJWE1FOiB1c2UgV0VCS0lUX0NFTlRFUj8KKyAgICBhdXRvIG5ld1N0eWxl
ID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwg
RGlzcGxheVR5cGU6OkJsb2NrKTsKKyAgICBuZXdTdHlsZS5zZXRUZXh0QWxpZ24oVGV4dEFsaWdu
TW9kZTo6Q2VudGVyKTsgLy8gRklYTUU6IHVzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRDZW50ZXI/
CiAgICAgYXV0byByZW5kZXJlciA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclJ1YnlCYXNlPihkb2N1
bWVudCgpLCBXVEZNb3ZlKG5ld1N0eWxlKSk7CiAgICAgcmVuZGVyZXItPmluaXRpYWxpemVTdHls
ZSgpOwogICAgIHJldHVybiByZW5kZXJlcjsKQEAgLTEwOSw3ICsxMDksNyBAQCBSZW5kZXJQdHI8
UmVuZGVyUnVieUJhc2U+IFJlbmRlclJ1YnlSdW46CiBSZW5kZXJQdHI8UmVuZGVyUnVieVJ1bj4g
UmVuZGVyUnVieVJ1bjo6c3RhdGljQ3JlYXRlUnVieVJ1bihjb25zdCBSZW5kZXJPYmplY3QqIHBh
cmVudFJ1YnkpCiB7CiAgICAgQVNTRVJUKGlzUnVieShwYXJlbnRSdWJ5KSk7Ci0gICAgYXV0byBy
ZW5kZXJlciA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclJ1YnlSdW4+KHBhcmVudFJ1YnktPmRvY3Vt
ZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVu
dFJ1YnktPnN0eWxlKCksIElOTElORV9CTE9DSykpOworICAgIGF1dG8gcmVuZGVyZXIgPSBjcmVh
dGVSZW5kZXJlcjxSZW5kZXJSdWJ5UnVuPihwYXJlbnRSdWJ5LT5kb2N1bWVudCgpLCBSZW5kZXJT
dHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnRSdWJ5LT5zdHlsZSgp
LCBEaXNwbGF5VHlwZTo6SW5saW5lQmxvY2spKTsKICAgICByZW5kZXJlci0+aW5pdGlhbGl6ZVN0
eWxlKCk7CiAgICAgcmV0dXJuIHJlbmRlcmVyOwogfQpAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQg
UmVuZGVyUnVieVJ1bjo6bGF5b3V0QmxvY2soYm9vbCByZWwKICAgICAgICAgLy8gU2luY2UgdGhl
IGV4dHJhIHJlbGF5b3V0IGluIFJlbmRlckJsb2NrRmxvdzo6dXBkYXRlUnVieUZvckp1c3RpZmll
ZFRleHQoKSBjYXVzZXMgdGhlIHNpemUgb2YgdGhlIFJlbmRlclJ1YnlUZXh0L1JlbmRlclJ1YnlC
YXNlCiAgICAgICAgIC8vIGRlcGVuZGVudCBvbiB0aGUgbGluZSdzIGN1cnJlbnQgZXhwYW5zaW9u
LCB3aGVuZXZlciB3ZSByZWxheW91dCB0aGUgUmVuZGVyUnVieVJ1biwgd2UgbmVlZCB0byByZWxh
eW91dCB0aGUgUmVuZGVyUnVieUJhc2UvUmVuZGVyUnVieVRleHQgYXMgd2VsbC4KICAgICAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCB0YWtlIHRoZSBleHBhbnNpb24gb3Bwb3J0dW5pdGllcyBpbnRv
IGFjY291bnQgaWYgcG9zc2libGUuCi0gICAgICAgIHJlbGF5b3V0Q2hpbGRyZW4gPSBzdHlsZSgp
LnRleHRBbGlnbigpID09IEpVU1RJRlk7CisgICAgICAgIHJlbGF5b3V0Q2hpbGRyZW4gPSBzdHls
ZSgpLnRleHRBbGlnbigpID09IFRleHRBbGlnbk1vZGU6Okp1c3RpZnk7CiAgICAgfQogCiAgICAg
UmVuZGVyQmxvY2tGbG93OjpsYXlvdXRCbG9jayhyZWxheW91dENoaWxkcmVuLCBwYWdlSGVpZ2h0
KTsKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFJlbmRlclJ1YnlSdW46OmxheW91dEJsb2NrKGJv
b2wgcmVsCiAgICAgICAgIGxhc3RMaW5lUnVieVRleHRCb3R0b20gPSByb290Qm94LT5sb2dpY2Fs
Qm90dG9tTGF5b3V0T3ZlcmZsb3coKTsKICAgICB9CiAgICAgCi0gICAgaWYgKGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkgJiYgcnQtPnN0eWxlKCkucnVieVBvc2l0aW9uKCkgPT0gUnVieVBvc2l0
aW9uSW50ZXJDaGFyYWN0ZXIpIHsKKyAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSAm
JiBydC0+c3R5bGUoKS5ydWJ5UG9zaXRpb24oKSA9PSBSdWJ5UG9zaXRpb246OkludGVyQ2hhcmFj
dGVyKSB7CiAgICAgICAgIC8vIEJvcG9tb2ZvLiBXZSBuZWVkIHRvIG1vdmUgdGhlIFJlbmRlclJ1
YnlUZXh0IG92ZXIgdG8gdGhlIHJpZ2h0IHNpZGUgYW5kIGNlbnRlciBpdAogICAgICAgICAvLyB2
ZXJ0aWNhbGx5IHJlbGF0aXZlIHRvIHRoZSBiYXNlLgogICAgICAgICBjb25zdCBGb250Q2FzY2Fk
ZSYgZm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKTsKQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lk
IFJlbmRlclJ1YnlSdW46OmxheW91dEJsb2NrKGJvb2wgcmVsCiAgICAgICAgICAgICBMYXlvdXRV
bml0IGV4dGVudCA9IGxhc3RMaW5lQm90dG9tIC0gZmlyc3RMaW5lVG9wOwogICAgICAgICAgICAg
cnQtPnNldFkoZmlyc3RMaW5lVG9wICsgKGV4dGVudCAtIHJ0LT5oZWlnaHQoKSkgLyAyKTsKICAg
ICAgICAgfQotICAgIH0gZWxzZSBpZiAoc3R5bGUoKS5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2Rl
KCkgPT0gKHN0eWxlKCkucnVieVBvc2l0aW9uKCkgPT0gUnVieVBvc2l0aW9uQWZ0ZXIpKSB7Cisg
ICAgfSBlbHNlIGlmIChzdHlsZSgpLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSA9PSAoc3R5
bGUoKS5ydWJ5UG9zaXRpb24oKSA9PSBSdWJ5UG9zaXRpb246OkFmdGVyKSkgewogICAgICAgICBM
YXlvdXRVbml0IGZpcnN0TGluZVRvcCA9IDA7CiAgICAgICAgIGlmIChSZW5kZXJSdWJ5QmFzZSog
cmIgPSBydWJ5QmFzZSgpKSB7CiAgICAgICAgICAgICBSb290SW5saW5lQm94KiByb290Qm94ID0g
cmItPmZpcnN0Um9vdEJveCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJ1YnlUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUnVieVRleHQuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUnVieVRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NywyMCArNTcsMjAg
QEAgYm9vbCBSZW5kZXJSdWJ5VGV4dDo6aXNDaGlsZEFsbG93ZWQoY29ucwogICAgIHJldHVybiBj
aGlsZC5pc0lubGluZSgpOwogfQogCi1FVGV4dEFsaWduIFJlbmRlclJ1YnlUZXh0Ojp0ZXh0QWxp
Z25tZW50Rm9yTGluZShib29sIGVuZHNXaXRoU29mdEJyZWFrKSBjb25zdAorVGV4dEFsaWduTW9k
ZSBSZW5kZXJSdWJ5VGV4dDo6dGV4dEFsaWdubWVudEZvckxpbmUoYm9vbCBlbmRzV2l0aFNvZnRC
cmVhaykgY29uc3QKIHsKLSAgICBFVGV4dEFsaWduIHRleHRBbGlnbiA9IHN0eWxlKCkudGV4dEFs
aWduKCk7CisgICAgVGV4dEFsaWduTW9kZSB0ZXh0QWxpZ24gPSBzdHlsZSgpLnRleHRBbGlnbigp
OwogICAgIC8vIEZJWE1FOiBUaGlzIGNoZWNrIGlzIGJvZ3VzIHNpbmNlIHVzZXIgY2FuIHNldCB0
aGUgaW5pdGlhbCB2YWx1ZS4KICAgICBpZiAodGV4dEFsaWduICE9IFJlbmRlclN0eWxlOjppbml0
aWFsVGV4dEFsaWduKCkpCiAgICAgICAgIHJldHVybiBSZW5kZXJCbG9ja0Zsb3c6OnRleHRBbGln
bm1lbnRGb3JMaW5lKGVuZHNXaXRoU29mdEJyZWFrKTsKIAogICAgIC8vIFRoZSBkZWZhdWx0IGJl
aGF2aW9yIGlzIHRvIGFsbG93IHJ1YnkgdGV4dCB0byBleHBhbmQgaWYgaXQgaXMgc2hvcnRlciB0
aGFuIHRoZSBydWJ5IGJhc2UuCi0gICAgcmV0dXJuIEpVU1RJRlk7CisgICAgcmV0dXJuIFRleHRB
bGlnbk1vZGU6Okp1c3RpZnk7CiB9CiAKIHZvaWQgUmVuZGVyUnVieVRleHQ6OmFkanVzdElubGlu
ZURpcmVjdGlvbkxpbmVCb3VuZHMoaW50IGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQsIGZsb2F0
JiBsb2dpY2FsTGVmdCwgZmxvYXQmIGxvZ2ljYWxXaWR0aCkgY29uc3QKIHsKLSAgICBFVGV4dEFs
aWduIHRleHRBbGlnbiA9IHN0eWxlKCkudGV4dEFsaWduKCk7CisgICAgVGV4dEFsaWduTW9kZSB0
ZXh0QWxpZ24gPSBzdHlsZSgpLnRleHRBbGlnbigpOwogICAgIC8vIEZJWE1FOiBUaGlzIGNoZWNr
IGlzIGJvZ3VzIHNpbmNlIHVzZXIgY2FuIHNldCB0aGUgaW5pdGlhbCB2YWx1ZS4KICAgICBpZiAo
dGV4dEFsaWduICE9IFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEFsaWduKCkpCiAgICAgICAgIHJl
dHVybiBSZW5kZXJCbG9ja0Zsb3c6OmFkanVzdElubGluZURpcmVjdGlvbkxpbmVCb3VuZHMoZXhw
YW5zaW9uT3Bwb3J0dW5pdHlDb3VudCwgbG9naWNhbExlZnQsIGxvZ2ljYWxXaWR0aCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuaAkocmV2aXNpb24gMjMy
MTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgYXZvaWRzRmxv
YXRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBFVGV4dEFsaWduIHRleHRBbGlnbm1lbnRGb3JM
aW5lKGJvb2wgZW5kc1dpdGhTb2Z0QnJlYWspIGNvbnN0IG92ZXJyaWRlOworICAgIFRleHRBbGln
bk1vZGUgdGV4dEFsaWdubWVudEZvckxpbmUoYm9vbCBlbmRzV2l0aFNvZnRCcmVhaykgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdm9pZCBhZGp1c3RJbmxpbmVEaXJlY3Rpb25MaW5lQm91bmRzKGludCBl
eHBhbnNpb25PcHBvcnR1bml0eUNvdW50LCBmbG9hdCYgbG9naWNhbExlZnQsIGZsb2F0JiBsb2dp
Y2FsV2lkdGgpIGNvbnN0IG92ZXJyaWRlOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODgsMjIgKzE4OCwyMiBAQCBzdGF0aWMgUHNldWRvSWQgcHNldWRvRm9yU2Nyb2xsYmFyUGFy
dChTCiAgICAgICAgIGNhc2UgRm9yd2FyZEJ1dHRvblN0YXJ0UGFydDoKICAgICAgICAgY2FzZSBC
YWNrQnV0dG9uRW5kUGFydDoKICAgICAgICAgY2FzZSBGb3J3YXJkQnV0dG9uRW5kUGFydDoKLSAg
ICAgICAgICAgIHJldHVybiBTQ1JPTExCQVJfQlVUVE9OOworICAgICAgICAgICAgcmV0dXJuIFBz
ZXVkb0lkOjpTY3JvbGxiYXJCdXR0b247CiAgICAgICAgIGNhc2UgQmFja1RyYWNrUGFydDoKICAg
ICAgICAgY2FzZSBGb3J3YXJkVHJhY2tQYXJ0OgotICAgICAgICAgICAgcmV0dXJuIFNDUk9MTEJB
Ul9UUkFDS19QSUVDRTsKKyAgICAgICAgICAgIHJldHVybiBQc2V1ZG9JZDo6U2Nyb2xsYmFyVHJh
Y2tQaWVjZTsKICAgICAgICAgY2FzZSBUaHVtYlBhcnQ6Ci0gICAgICAgICAgICByZXR1cm4gU0NS
T0xMQkFSX1RIVU1COworICAgICAgICAgICAgcmV0dXJuIFBzZXVkb0lkOjpTY3JvbGxiYXJUaHVt
YjsKICAgICAgICAgY2FzZSBUcmFja0JHUGFydDoKLSAgICAgICAgICAgIHJldHVybiBTQ1JPTExC
QVJfVFJBQ0s7CisgICAgICAgICAgICByZXR1cm4gUHNldWRvSWQ6OlNjcm9sbGJhclRyYWNrOwog
ICAgICAgICBjYXNlIFNjcm9sbGJhckJHUGFydDoKLSAgICAgICAgICAgIHJldHVybiBTQ1JPTExC
QVI7CisgICAgICAgICAgICByZXR1cm4gUHNldWRvSWQ6OlNjcm9sbGJhcjsKICAgICAgICAgY2Fz
ZSBOb1BhcnQ6CiAgICAgICAgIGNhc2UgQWxsUGFydHM6CiAgICAgICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFNDUk9MTEJBUjsKKyAg
ICByZXR1cm4gUHNldWRvSWQ6OlNjcm9sbGJhcjsKIH0KIAogdm9pZCBSZW5kZXJTY3JvbGxiYXI6
OnVwZGF0ZVNjcm9sbGJhclBhcnQoU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSkKQEAgLTIxMiw5ICsy
MTIsOSBAQCB2b2lkIFJlbmRlclNjcm9sbGJhcjo6dXBkYXRlU2Nyb2xsYmFyUGFyCiAgICAgICAg
IHJldHVybjsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gcGFydFN0eWxlID0g
Z2V0U2Nyb2xsYmFyUHNldWRvU3R5bGUocGFydFR5cGUsIHBzZXVkb0ZvclNjcm9sbGJhclBhcnQo
cGFydFR5cGUpKTsKLSAgICBib29sIG5lZWRSZW5kZXJlciA9IHBhcnRTdHlsZSAmJiBwYXJ0U3R5
bGUtPmRpc3BsYXkoKSAhPSBOT05FOworICAgIGJvb2wgbmVlZFJlbmRlcmVyID0gcGFydFN0eWxl
ICYmIHBhcnRTdHlsZS0+ZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpOb25lOwogCi0gICAgaWYg
KG5lZWRSZW5kZXJlciAmJiBwYXJ0U3R5bGUtPmRpc3BsYXkoKSAhPSBCTE9DSykgeworICAgIGlm
IChuZWVkUmVuZGVyZXIgJiYgcGFydFN0eWxlLT5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6OkJs
b2NrKSB7CiAgICAgICAgIC8vIFNlZSBpZiB3ZSBhcmUgYSBidXR0b24gdGhhdCBzaG91bGQgbm90
IGJlIHZpc2libGUgYWNjb3JkaW5nIHRvIE9TIHNldHRpbmdzLgogICAgICAgICBTY3JvbGxiYXJC
dXR0b25zUGxhY2VtZW50IGJ1dHRvbnNQbGFjZW1lbnQgPSB0aGVtZSgpLmJ1dHRvbnNQbGFjZW1l
bnQoKTsKICAgICAgICAgc3dpdGNoIChwYXJ0VHlwZSkgewpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBSZW5kZXJTZWFyY2hGaWVsZDo6dXBkYXRl
Q2FuY2VsQnV0dAogICAgICAgICByZXR1cm47CiAKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgY3Vy
U3R5bGUgPSBjYW5jZWxCdXR0b25SZW5kZXJlci0+c3R5bGUoKTsKLSAgICBFVmlzaWJpbGl0eSBi
dXR0b25WaXNpYmlsaXR5ID0gdmlzaWJpbGl0eUZvckNhbmNlbEJ1dHRvbigpOworICAgIFZpc2li
aWxpdHkgYnV0dG9uVmlzaWJpbGl0eSA9IHZpc2liaWxpdHlGb3JDYW5jZWxCdXR0b24oKTsKICAg
ICBpZiAoY3VyU3R5bGUudmlzaWJpbGl0eSgpID09IGJ1dHRvblZpc2liaWxpdHkpCiAgICAgICAg
IHJldHVybjsKIApAQCAtMTk0LDkgKzE5NCw5IEBAIHZvaWQgUmVuZGVyU2VhcmNoRmllbGQ6OnVw
ZGF0ZUNhbmNlbEJ1dHQKICAgICBjYW5jZWxCdXR0b25SZW5kZXJlci0+c2V0U3R5bGUoV1RGTW92
ZShjYW5jZWxCdXR0b25TdHlsZSkpOwogfQogCi1FVmlzaWJpbGl0eSBSZW5kZXJTZWFyY2hGaWVs
ZDo6dmlzaWJpbGl0eUZvckNhbmNlbEJ1dHRvbigpIGNvbnN0CitWaXNpYmlsaXR5IFJlbmRlclNl
YXJjaEZpZWxkOjp2aXNpYmlsaXR5Rm9yQ2FuY2VsQnV0dG9uKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gKHN0eWxlKCkudmlzaWJpbGl0eSgpID09IEhJRERFTiB8fCBpbnB1dEVsZW1lbnQoKS52YWx1
ZSgpLmlzRW1wdHkoKSkgPyBISURERU4gOiBWSVNJQkxFOworICAgIHJldHVybiAoc3R5bGUoKS52
aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6SGlkZGVuIHx8IGlucHV0RWxlbWVudCgpLnZhbHVl
KCkuaXNFbXB0eSgpKSA/IFZpc2liaWxpdHk6OkhpZGRlbiA6IFZpc2liaWxpdHk6OlZpc2libGU7
CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgUmVuZGVyU2VhcmNoRmllbGQ6OmF1dG9zYXZlTmFt
ZSgpIGNvbnN0CkBAIC0yNzAsOCArMjcwLDggQEAgUG9wdXBNZW51U3R5bGUgUmVuZGVyU2VhcmNo
RmllbGQ6Oml0ZW1TdAogCiBQb3B1cE1lbnVTdHlsZSBSZW5kZXJTZWFyY2hGaWVsZDo6bWVudVN0
eWxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gUG9wdXBNZW51U3R5bGUoc3R5bGUoKS52aXNpdGVk
RGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlKCku
dmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENvbG9yKSwgc3R5bGUoKS5mb250Q2FzY2FkZSgpLCBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBW
SVNJQkxFLAotICAgICAgICBzdHlsZSgpLmRpc3BsYXkoKSA9PSBOT05FLCB0cnVlLCBzdHlsZSgp
LnRleHRJbmRlbnQoKSwgc3R5bGUoKS5kaXJlY3Rpb24oKSwgaXNPdmVycmlkZShzdHlsZSgpLnVu
aWNvZGVCaWRpKCkpLCBQb3B1cE1lbnVTdHlsZTo6Q3VzdG9tQmFja2dyb3VuZENvbG9yKTsKKyAg
ICByZXR1cm4gUG9wdXBNZW51U3R5bGUoc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRo
Q29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENv
bG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSwgc3R5bGUoKS5m
b250Q2FzY2FkZSgpLCBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxl
LAorICAgICAgICBzdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSwgdHJ1ZSwg
c3R5bGUoKS50ZXh0SW5kZW50KCksIHN0eWxlKCkuZGlyZWN0aW9uKCksIGlzT3ZlcnJpZGUoc3R5
bGUoKS51bmljb2RlQmlkaSgpKSwgUG9wdXBNZW51U3R5bGU6OkN1c3RvbUJhY2tncm91bmRDb2xv
cik7CiB9CiAKIGludCBSZW5kZXJTZWFyY2hGaWVsZDo6Y2xpZW50SW5zZXRMZWZ0KCkgY29uc3QK
QEAgLTM1OSw3ICszNTksNyBAQCBIb3N0V2luZG93KiBSZW5kZXJTZWFyY2hGaWVsZDo6aG9zdFdp
bmRvCiAKIFJlZjxTY3JvbGxiYXI+IFJlbmRlclNlYXJjaEZpZWxkOjpjcmVhdGVTY3JvbGxiYXIo
U2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmll
bnRhdGlvbiwgU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUpCiB7Ci0gICAgYm9vbCBo
YXNDdXN0b21TY3JvbGxiYXJTdHlsZSA9IHN0eWxlKCkuaGFzUHNldWRvU3R5bGUoU0NST0xMQkFS
KTsKKyAgICBib29sIGhhc0N1c3RvbVNjcm9sbGJhclN0eWxlID0gc3R5bGUoKS5oYXNQc2V1ZG9T
dHlsZShQc2V1ZG9JZDo6U2Nyb2xsYmFyKTsKICAgICBpZiAoaGFzQ3VzdG9tU2Nyb2xsYmFyU3R5
bGUpCiAgICAgICAgIHJldHVybiBSZW5kZXJTY3JvbGxiYXI6OmNyZWF0ZUN1c3RvbVNjcm9sbGJh
cihzY3JvbGxhYmxlQXJlYSwgb3JpZW50YXRpb24sICZpbnB1dEVsZW1lbnQoKSk7CiAgICAgcmV0
dXJuIFNjcm9sbGJhcjo6Y3JlYXRlTmF0aXZlU2Nyb2xsYmFyKHNjcm9sbGFibGVBcmVhLCBvcmll
bnRhdGlvbiwgY29udHJvbFNpemUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNlYXJjaEZpZWxkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNlYXJjaEZpZWxkLmgJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1
MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsKICAg
ICBMYXlvdXRVbml0IGNvbXB1dGVDb250cm9sTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxpbmVI
ZWlnaHQsIExheW91dFVuaXQgbm9uQ29udGVudEhlaWdodCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpIG92ZXJyaWRlOwotICAgIEVWaXNpYmlsaXR5IHZpc2li
aWxpdHlGb3JDYW5jZWxCdXR0b24oKSBjb25zdDsKKyAgICBWaXNpYmlsaXR5IHZpc2liaWxpdHlG
b3JDYW5jZWxCdXR0b24oKSBjb25zdDsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGF1dG9zYXZl
TmFtZSgpIGNvbnN0OwogCiAgICAgLy8gUG9wdXBNZW51Q2xpZW50IG1ldGhvZHMKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAkocmV2aXNpb24gMjMyMTIzKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgUmVuZGVyVGFibGU6OndpbGxJbnNlcnRUYWJsZUNv
bHVtbigKIHZvaWQgUmVuZGVyVGFibGU6OndpbGxJbnNlcnRUYWJsZVNlY3Rpb24oUmVuZGVyVGFi
bGVTZWN0aW9uJiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCkKIHsKICAgICBzd2l0
Y2ggKGNoaWxkLnN0eWxlKCkuZGlzcGxheSgpKSB7Ci0gICAgY2FzZSBUQUJMRV9IRUFERVJfR1JP
VVA6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFibGVIZWFkZXJHcm91cDoKICAgICAgICAgcmVz
ZXRTZWN0aW9uUG9pbnRlcklmTm90QmVmb3JlKG1faGVhZCwgYmVmb3JlQ2hpbGQpOwogICAgICAg
ICBpZiAoIW1faGVhZCkKICAgICAgICAgICAgIG1faGVhZCA9IG1ha2VXZWFrUHRyKGNoaWxkKTsK
QEAgLTE1MSwxNCArMTUxLDE0IEBAIHZvaWQgUmVuZGVyVGFibGU6OndpbGxJbnNlcnRUYWJsZVNl
Y3Rpb24KICAgICAgICAgICAgICAgICBtX2ZpcnN0Qm9keSA9IG1ha2VXZWFrUHRyKGNoaWxkKTsK
ICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRBQkxFX0ZPT1RFUl9HUk9VUDoK
KyAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZUZvb3Rlckdyb3VwOgogICAgICAgICByZXNldFNl
Y3Rpb25Qb2ludGVySWZOb3RCZWZvcmUobV9mb290LCBiZWZvcmVDaGlsZCk7CiAgICAgICAgIGlm
ICghbV9mb290KSB7CiAgICAgICAgICAgICBtX2Zvb3QgPSBtYWtlV2Vha1B0cihjaGlsZCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBGQUxMVEhST1VHSDsKLSAgICBj
YXNlIFRBQkxFX1JPV19HUk9VUDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZVJvd0dyb3Vw
OgogICAgICAgICByZXNldFNlY3Rpb25Qb2ludGVySWZOb3RCZWZvcmUobV9maXJzdEJvZHksIGJl
Zm9yZUNoaWxkKTsKICAgICAgICAgaWYgKCFtX2ZpcnN0Qm9keSkKICAgICAgICAgICAgIG1fZmly
c3RCb2R5ID0gbWFrZVdlYWtQdHIoY2hpbGQpOwpAQCAtMzU2LDggKzM1Niw4IEBAIHZvaWQgUmVu
ZGVyVGFibGU6OmxheW91dENhcHRpb25zKEJvdHRvbUMKICAgICAgICAgcmV0dXJuOwogICAgIC8v
IEZJWE1FOiBDb2xsYXBzZSBjYXB0aW9uIG1hcmdpbi4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9jYXB0aW9ucy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoKGJvdHRvbUNhcHRp
b25MYXlvdXRQaGFzZSA9PSBCb3R0b21DYXB0aW9uTGF5b3V0UGhhc2U6OlllcyAmJiBtX2NhcHRp
b25zW2ldLT5zdHlsZSgpLmNhcHRpb25TaWRlKCkgIT0gQ0FQQk9UVE9NKQotICAgICAgICAgICAg
fHwgKGJvdHRvbUNhcHRpb25MYXlvdXRQaGFzZSA9PSBCb3R0b21DYXB0aW9uTGF5b3V0UGhhc2U6
Ok5vICYmIG1fY2FwdGlvbnNbaV0tPnN0eWxlKCkuY2FwdGlvblNpZGUoKSA9PSBDQVBCT1RUT00p
KQorICAgICAgICBpZiAoKGJvdHRvbUNhcHRpb25MYXlvdXRQaGFzZSA9PSBCb3R0b21DYXB0aW9u
TGF5b3V0UGhhc2U6OlllcyAmJiBtX2NhcHRpb25zW2ldLT5zdHlsZSgpLmNhcHRpb25TaWRlKCkg
IT0gQ2FwdGlvblNpZGU6OkJvdHRvbSkKKyAgICAgICAgICAgIHx8IChib3R0b21DYXB0aW9uTGF5
b3V0UGhhc2UgPT0gQm90dG9tQ2FwdGlvbkxheW91dFBoYXNlOjpObyAmJiBtX2NhcHRpb25zW2ld
LT5zdHlsZSgpLmNhcHRpb25TaWRlKCkgPT0gQ2FwdGlvblNpZGU6OkJvdHRvbSkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgbGF5b3V0Q2FwdGlvbigqbV9jYXB0aW9uc1tpXSk7CiAg
ICAgfQpAQCAtNDI1LDcgKzQyNSw3IEBAIHZvaWQgUmVuZGVyVGFibGU6OmxheW91dCgpCiAgICAg
ICAgIExheW91dFVuaXQgdG90YWxTZWN0aW9uTG9naWNhbEhlaWdodCA9IDA7CiAgICAgICAgIExh
eW91dFVuaXQgb2xkVGFibGVMb2dpY2FsVG9wID0gMDsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fY2FwdGlvbnMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChtX2Nh
cHRpb25zW2ldLT5zdHlsZSgpLmNhcHRpb25TaWRlKCkgPT0gQ0FQQk9UVE9NKQorICAgICAgICAg
ICAgaWYgKG1fY2FwdGlvbnNbaV0tPnN0eWxlKCkuY2FwdGlvblNpZGUoKSA9PSBDYXB0aW9uU2lk
ZTo6Qm90dG9tKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgb2xkVGFi
bGVMb2dpY2FsVG9wICs9IG1fY2FwdGlvbnNbaV0tPmxvZ2ljYWxIZWlnaHQoKSArIG1fY2FwdGlv
bnNbaV0tPm1hcmdpbkJlZm9yZSgpICsgbV9jYXB0aW9uc1tpXS0+bWFyZ2luQWZ0ZXIoKTsKICAg
ICAgICAgfQpAQCAtNjY4LDcgKzY2OCw3IEBAIHZvaWQgUmVuZGVyVGFibGU6OnBhaW50KFBhaW50
SW5mbyYgcGFpbnQKIHZvaWQgUmVuZGVyVGFibGU6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7CiAgICAgUGFpbnRQaGFz
ZSBwYWludFBoYXNlID0gcGFpbnRJbmZvLnBoYXNlOwotICAgIGlmICgocGFpbnRQaGFzZSA9PSBQ
YWludFBoYXNlQmxvY2tCYWNrZ3JvdW5kIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZUNoaWxk
QmxvY2tCYWNrZ3JvdW5kKSAmJiBoYXNWaXNpYmxlQm94RGVjb3JhdGlvbnMoKSAmJiBzdHlsZSgp
LnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKQorICAgIGlmICgocGFpbnRQaGFzZSA9PSBQYWludFBo
YXNlQmxvY2tCYWNrZ3JvdW5kIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZUNoaWxkQmxvY2tC
YWNrZ3JvdW5kKSAmJiBoYXNWaXNpYmxlQm94RGVjb3JhdGlvbnMoKSAmJiBzdHlsZSgpLnZpc2li
aWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICBwYWludEJveERlY29yYXRp
b25zKHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogCiAgICAgaWYgKHBhaW50UGhhc2UgPT0gUGFp
bnRQaGFzZU1hc2spIHsKQEAgLTY5NSw3ICs2OTUsNyBAQCB2b2lkIFJlbmRlclRhYmxlOjpwYWlu
dE9iamVjdChQYWludEluZm8mCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgaWYgKGNvbGxh
cHNlQm9yZGVycygpICYmIHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZUNoaWxkQmxvY2tCYWNrZ3Jv
dW5kICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUpIHsKKyAgICBpZiAoY29sbGFw
c2VCb3JkZXJzKCkgJiYgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlQ2hpbGRCbG9ja0JhY2tncm91
bmQgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkgewogICAg
ICAgICByZWNhbGNDb2xsYXBzZWRCb3JkZXJzKCk7CiAgICAgICAgIC8vIFVzaW5nIG91ciBjYWNo
ZWQgc29ydGVkIHN0eWxlcywgd2UgdGhlbiBkbyBpbmRpdmlkdWFsIHBhc3NlcywKICAgICAgICAg
Ly8gcGFpbnRpbmcgZWFjaCBzdHlsZSBvZiBib3JkZXIgZnJvbSBsb3dlc3QgcHJlY2VkZW5jZSB0
byBoaWdoZXN0IHByZWNlZGVuY2UuCkBAIC03MTIsNyArNzEyLDcgQEAgdm9pZCBSZW5kZXJUYWJs
ZTo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJgogICAgIH0KIAogICAgIC8vIFBhaW50IG91dGxpbmUu
Ci0gICAgaWYgKChwYWludFBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IHBhaW50UGhhc2Ug
PT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKSAmJiBoYXNPdXRsaW5lKCkgJiYgc3R5bGUoKS52aXNp
YmlsaXR5KCkgPT0gVklTSUJMRSkKKyAgICBpZiAoKHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZU91
dGxpbmUgfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlU2VsZk91dGxpbmUpICYmIGhhc091dGxp
bmUoKSAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAg
ICAgICBwYWludE91dGxpbmUocGFpbnRJbmZvLCBMYXlvdXRSZWN0KHBhaW50T2Zmc2V0LCBzaXpl
KCkpKTsKIH0KIApAQCAtNzIwLDcgKzcyMCw3IEBAIHZvaWQgUmVuZGVyVGFibGU6OmFkanVzdEJv
cmRlckJveFJlY3RGb3IKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9jYXB0aW9u
cy5zaXplKCk7IGkrKykgewogICAgICAgICBMYXlvdXRVbml0IGNhcHRpb25Mb2dpY2FsSGVpZ2h0
ID0gbV9jYXB0aW9uc1tpXS0+bG9naWNhbEhlaWdodCgpICsgbV9jYXB0aW9uc1tpXS0+bWFyZ2lu
QmVmb3JlKCkgKyBtX2NhcHRpb25zW2ldLT5tYXJnaW5BZnRlcigpOwotICAgICAgICBib29sIGNh
cHRpb25Jc0JlZm9yZSA9IChtX2NhcHRpb25zW2ldLT5zdHlsZSgpLmNhcHRpb25TaWRlKCkgIT0g
Q0FQQk9UVE9NKSBeIHN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKTsKKyAgICAg
ICAgYm9vbCBjYXB0aW9uSXNCZWZvcmUgPSAobV9jYXB0aW9uc1tpXS0+c3R5bGUoKS5jYXB0aW9u
U2lkZSgpICE9IENhcHRpb25TaWRlOjpCb3R0b20pIF4gc3R5bGUoKS5pc0ZsaXBwZWRCbG9ja3NX
cml0aW5nTW9kZSgpOwogICAgICAgICBpZiAoc3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpKSB7CiAgICAgICAgICAgICByZWN0LnNldEhlaWdodChyZWN0LmhlaWdodCgpIC0gY2FwdGlv
bkxvZ2ljYWxIZWlnaHQpOwogICAgICAgICAgICAgaWYgKGNhcHRpb25Jc0JlZm9yZSkKQEAgLTc1
NSw3ICs3NTUsNyBAQCB2b2lkIFJlbmRlclRhYmxlOjpwYWludEJveERlY29yYXRpb25zKFBhCiAK
IHZvaWQgUmVuZGVyVGFibGU6OnBhaW50TWFzayhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewotICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHko
KSAhPSBWSVNJQkxFIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlTWFzaykKKyAgICBp
ZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSB8fCBwYWludElu
Zm8ucGhhc2UgIT0gUGFpbnRQaGFzZU1hc2spCiAgICAgICAgIHJldHVybjsKIAogICAgIExheW91
dFJlY3QgcmVjdChwYWludE9mZnNldCwgc2l6ZSgpKTsKQEAgLTEwMTMsMTEgKzEwMTMsMTEgQEAg
dm9pZCBSZW5kZXJUYWJsZTo6cmVjYWxjU2VjdGlvbnMoKSBjb25zdAogICAgIGZvciAoUmVuZGVy
T2JqZWN0KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gbmV4dFNpYmxpbmcp
IHsKICAgICAgICAgbmV4dFNpYmxpbmcgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKTsKICAgICAgICAg
c3dpdGNoIChjaGlsZC0+c3R5bGUoKS5kaXNwbGF5KCkpIHsKLSAgICAgICAgY2FzZSBUQUJMRV9D
T0xVTU46Ci0gICAgICAgIGNhc2UgVEFCTEVfQ09MVU1OX0dST1VQOgorICAgICAgICBjYXNlIERp
c3BsYXlUeXBlOjpUYWJsZUNvbHVtbjoKKyAgICAgICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFibGVD
b2x1bW5Hcm91cDoKICAgICAgICAgICAgIG1faGFzQ29sRWxlbWVudHMgPSB0cnVlOwogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVEFCTEVfSEVBREVSX0dST1VQOgorICAgICAgICBj
YXNlIERpc3BsYXlUeXBlOjpUYWJsZUhlYWRlckdyb3VwOgogICAgICAgICAgICAgaWYgKGlzPFJl
bmRlclRhYmxlU2VjdGlvbj4oKmNoaWxkKSkgewogICAgICAgICAgICAgICAgIFJlbmRlclRhYmxl
U2VjdGlvbiYgc2VjdGlvbiA9IGRvd25jYXN0PFJlbmRlclRhYmxlU2VjdGlvbj4oKmNoaWxkKTsK
ICAgICAgICAgICAgICAgICBpZiAoIW1faGVhZCkKQEAgLTEwMjcsNyArMTAyNyw3IEBAIHZvaWQg
UmVuZGVyVGFibGU6OnJlY2FsY1NlY3Rpb25zKCkgY29uc3QKICAgICAgICAgICAgICAgICBzZWN0
aW9uLnJlY2FsY0NlbGxzSWZOZWVkZWQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIFRBQkxFX0ZPT1RFUl9HUk9VUDoKKyAgICAgICAgY2FzZSBEaXNw
bGF5VHlwZTo6VGFibGVGb290ZXJHcm91cDoKICAgICAgICAgICAgIGlmIChpczxSZW5kZXJUYWJs
ZVNlY3Rpb24+KCpjaGlsZCkpIHsKICAgICAgICAgICAgICAgICBSZW5kZXJUYWJsZVNlY3Rpb24m
IHNlY3Rpb24gPSBkb3duY2FzdDxSZW5kZXJUYWJsZVNlY3Rpb24+KCpjaGlsZCk7CiAgICAgICAg
ICAgICAgICAgaWYgKCFtX2Zvb3QpCkBAIC0xMDM3LDcgKzEwMzcsNyBAQCB2b2lkIFJlbmRlclRh
YmxlOjpyZWNhbGNTZWN0aW9ucygpIGNvbnN0CiAgICAgICAgICAgICAgICAgc2VjdGlvbi5yZWNh
bGNDZWxsc0lmTmVlZGVkKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBUQUJMRV9ST1dfR1JPVVA6CisgICAgICAgIGNhc2UgRGlzcGxheVR5cGU6OlRh
YmxlUm93R3JvdXA6CiAgICAgICAgICAgICBpZiAoaXM8UmVuZGVyVGFibGVTZWN0aW9uPigqY2hp
bGQpKSB7CiAgICAgICAgICAgICAgICAgUmVuZGVyVGFibGVTZWN0aW9uJiBzZWN0aW9uID0gZG93
bmNhc3Q8UmVuZGVyVGFibGVTZWN0aW9uPigqY2hpbGQpOwogICAgICAgICAgICAgICAgIGlmICgh
bV9maXJzdEJvZHkpCkBAIC0xNTI4LDcgKzE1MjgsNyBAQCBib29sIFJlbmRlclRhYmxlOjpub2Rl
QXRQb2ludChjb25zdCBIaXRUCiAKIFJlbmRlclB0cjxSZW5kZXJUYWJsZT4gUmVuZGVyVGFibGU6
OmNyZWF0ZVRhYmxlV2l0aFN0eWxlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlKQogewotICAgIGF1dG8gdGFibGUgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJUYWJs
ZT4oZG9jdW1lbnQsIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5
KHN0eWxlLCBzdHlsZS5kaXNwbGF5KCkgPT0gSU5MSU5FID8gSU5MSU5FX1RBQkxFIDogVEFCTEUp
KTsKKyAgICBhdXRvIHRhYmxlID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyVGFibGU+KGRvY3VtZW50
LCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSwgc3R5
bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpJbmxpbmUgPyBEaXNwbGF5VHlwZTo6SW5saW5l
VGFibGUgOiBEaXNwbGF5VHlwZTo6VGFibGUpKTsKICAgICB0YWJsZS0+aW5pdGlhbGl6ZVN0eWxl
KCk7CiAgICAgcmV0dXJuIHRhYmxlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjAs
NyArNDIwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIG1hcmtDZWxsRGlydHlXaGVuQ29sbAogCiB2
b2lkIFJlbmRlclRhYmxlQ2VsbDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYs
IGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKIHsKLSAgICBBU1NFUlQoc3R5bGUoKS5kaXNw
bGF5KCkgPT0gVEFCTEVfQ0VMTCk7CisgICAgQVNTRVJUKHN0eWxlKCkuZGlzcGxheSgpID09IERp
c3BsYXlUeXBlOjpUYWJsZUNlbGwpOwogICAgIEFTU0VSVCghcm93KCkgfHwgcm93KCktPnJvd0lu
ZGV4V2FzU2V0KCkpOwogCiAgICAgUmVuZGVyQmxvY2tGbG93OjpzdHlsZURpZENoYW5nZShkaWZm
LCBvbGRTdHlsZSk7CkBAIC0xMTk4LDcgKzExOTgsNyBAQCB2b2lkIFJlbmRlclRhYmxlQ2VsbDo6
cGFpbnRDb2xsYXBzZWRCb3JkCiB7CiAgICAgQVNTRVJUKHBhaW50SW5mby5waGFzZSA9PSBQYWlu
dFBoYXNlQ29sbGFwc2VkVGFibGVCb3JkZXJzKTsKIAotICAgIGlmICghcGFpbnRJbmZvLnNob3Vs
ZFBhaW50V2l0aGluUm9vdCgqdGhpcykgfHwgc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJM
RSkKKyAgICBpZiAoIXBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QoKnRoaXMpIHx8IHN0
eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIExheW91dFJlY3QgbG9jYWxSZXBhaW50UmVjdCA9IHBhaW50SW5mby5yZWN0OwpA
QCAtMTI3MSwxMSArMTI3MSwxMSBAQCB2b2lkIFJlbmRlclRhYmxlQ2VsbDo6cGFpbnRCYWNrZ3Jv
dW5kc0JlCiAgICAgaWYgKCFiYWNrZ3JvdW5kT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAoc3R5bGUoKS52
aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgUmVuZGVyVGFibGUqIHRhYmxlRWx0ID0gdGFibGUoKTsKLSAgICBpZiAoIXRhYmxlRWx0LT5j
b2xsYXBzZUJvcmRlcnMoKSAmJiBzdHlsZSgpLmVtcHR5Q2VsbHMoKSA9PSBISURFICYmICFmaXJz
dENoaWxkKCkpCisgICAgaWYgKCF0YWJsZUVsdC0+Y29sbGFwc2VCb3JkZXJzKCkgJiYgc3R5bGUo
KS5lbXB0eUNlbGxzKCkgPT0gRW1wdHlDZWxsOjpIaWRlICYmICFmaXJzdENoaWxkKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIExheW91dFBvaW50IGFkanVzdGVkUGFpbnRPZmZzZXQgPSBwYWlu
dE9mZnNldDsKQEAgLTEzMDUsNyArMTMwNSw3IEBAIHZvaWQgUmVuZGVyVGFibGVDZWxsOjpwYWlu
dEJveERlY29yYXRpb24KICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVuZGVyVGFibGUqIHRhYmxl
ID0gdGhpcy0+dGFibGUoKTsKLSAgICBpZiAoIXRhYmxlLT5jb2xsYXBzZUJvcmRlcnMoKSAmJiBz
dHlsZSgpLmVtcHR5Q2VsbHMoKSA9PSBISURFICYmICFmaXJzdENoaWxkKCkpCisgICAgaWYgKCF0
YWJsZS0+Y29sbGFwc2VCb3JkZXJzKCkgJiYgc3R5bGUoKS5lbXB0eUNlbGxzKCkgPT0gRW1wdHlD
ZWxsOjpIaWRlICYmICFmaXJzdENoaWxkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIExheW91
dFJlY3QgcGFpbnRSZWN0ID0gTGF5b3V0UmVjdChwYWludE9mZnNldCwgZnJhbWVSZWN0KCkuc2l6
ZSgpKTsKQEAgLTEzMjYsMTEgKzEzMjYsMTEgQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnBhaW50
Qm94RGVjb3JhdGlvbgogCiB2b2lkIFJlbmRlclRhYmxlQ2VsbDo6cGFpbnRNYXNrKFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7Ci0gICAgaWYg
KHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgcGFpbnRJbmZvLnBoYXNlICE9IFBh
aW50UGhhc2VNYXNrKQorICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5
OjpWaXNpYmxlIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlTWFzaykKICAgICAgICAg
cmV0dXJuOwogCiAgICAgUmVuZGVyVGFibGUqIHRhYmxlRWx0ID0gdGFibGUoKTsKLSAgICBpZiAo
IXRhYmxlRWx0LT5jb2xsYXBzZUJvcmRlcnMoKSAmJiBzdHlsZSgpLmVtcHR5Q2VsbHMoKSA9PSBI
SURFICYmICFmaXJzdENoaWxkKCkpCisgICAgaWYgKCF0YWJsZUVsdC0+Y29sbGFwc2VCb3JkZXJz
KCkgJiYgc3R5bGUoKS5lbXB0eUNlbGxzKCkgPT0gRW1wdHlDZWxsOjpIaWRlICYmICFmaXJzdENo
aWxkKCkpCiAgICAgICAgIHJldHVybjsKICAgIAogICAgIExheW91dFJlY3QgcGFpbnRSZWN0ID0g
TGF5b3V0UmVjdChwYWludE9mZnNldCwgZnJhbWVSZWN0KCkuc2l6ZSgpKTsKQEAgLTEzNzAsNyAr
MTM3MCw3IEBAIHZvaWQgUmVuZGVyVGFibGVDZWxsOjpzY3JvbGxiYXJzQ2hhbmdlZCgKIAogUmVu
ZGVyUHRyPFJlbmRlclRhYmxlQ2VsbD4gUmVuZGVyVGFibGVDZWxsOjpjcmVhdGVUYWJsZUNlbGxX
aXRoU3R5bGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7
Ci0gICAgYXV0byBjZWxsID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyVGFibGVDZWxsPihkb2N1bWVu
dCwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUsIFRB
QkxFX0NFTEwpKTsKKyAgICBhdXRvIGNlbGwgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJUYWJsZUNl
bGw+KGRvY3VtZW50LCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxh
eShzdHlsZSwgRGlzcGxheVR5cGU6OlRhYmxlQ2VsbCkpOwogICAgIGNlbGwtPmluaXRpYWxpemVT
dHlsZSgpOwogICAgIHJldHVybiBjZWxsOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3
ICs4Miw3IEBAIHZvaWQgUmVuZGVyVGFibGVDb2w6OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICAg
ICAgSFRNTFRhYmxlQ29sRWxlbWVudCYgdGMgPSBzdGF0aWNfY2FzdDxIVE1MVGFibGVDb2xFbGVt
ZW50Jj4oZWxlbWVudCgpKTsKICAgICAgICAgbV9zcGFuID0gdGMuc3BhbigpOwogICAgIH0gZWxz
ZQotICAgICAgICBtX3NwYW4gPSAhKGhhc0luaXRpYWxpemVkU3R5bGUoKSAmJiBzdHlsZSgpLmRp
c3BsYXkoKSA9PSBUQUJMRV9DT0xVTU5fR1JPVVApOworICAgICAgICBtX3NwYW4gPSAhKGhhc0lu
aXRpYWxpemVkU3R5bGUoKSAmJiBzdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFi
bGVDb2x1bW5Hcm91cCk7CiAgICAgaWYgKG1fc3BhbiAhPSBvbGRTcGFuICYmIGhhc0luaXRpYWxp
emVkU3R5bGUoKSAmJiBwYXJlbnQoKSkKICAgICAgICAgc2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lk
dGhzUmVjYWxjKCk7CiB9CkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBSZW5kZXJUYWJsZUNvbDo6
d2lsbEJlUmVtb3ZlZEZyb21UcgogYm9vbCBSZW5kZXJUYWJsZUNvbDo6aXNDaGlsZEFsbG93ZWQo
Y29uc3QgUmVuZGVyT2JqZWN0JiBjaGlsZCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25z
dAogewogICAgIC8vIFdlIGNhbm5vdCB1c2UgaXNUYWJsZUNvbHVtbiBoZXJlIGFzIHN0eWxlKCkg
bWF5IHJldHVybiAwLgotICAgIHJldHVybiBzdHlsZS5kaXNwbGF5KCkgPT0gVEFCTEVfQ09MVU1O
ICYmIGNoaWxkLmlzUmVuZGVyVGFibGVDb2woKTsKKyAgICByZXR1cm4gc3R5bGUuZGlzcGxheSgp
ID09IERpc3BsYXlUeXBlOjpUYWJsZUNvbHVtbiAmJiBjaGlsZC5pc1JlbmRlclRhYmxlQ29sKCk7
CiB9CiAKIGJvb2wgUmVuZGVyVGFibGVDb2w6OmNhbkhhdmVDaGlsZHJlbigpIGNvbnN0CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaAkocmV2aXNpb24gMjMy
MTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ0LDggKzQ0LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3Bhbih1bnNp
Z25lZCBzcGFuKSB7IG1fc3BhbiA9IHNwYW47IH0KIAogICAgIGJvb2wgaXNUYWJsZUNvbHVtbkdy
b3VwV2l0aENvbHVtbkNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gZmlyc3RDaGlsZCgpOyB9Ci0g
ICAgYm9vbCBpc1RhYmxlQ29sdW1uKCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS5kaXNwbGF5KCkg
PT0gVEFCTEVfQ09MVU1OOyB9Ci0gICAgYm9vbCBpc1RhYmxlQ29sdW1uR3JvdXAoKSBjb25zdCB7
IHJldHVybiBzdHlsZSgpLmRpc3BsYXkoKSA9PSBUQUJMRV9DT0xVTU5fR1JPVVA7IH0KKyAgICBi
b29sIGlzVGFibGVDb2x1bW4oKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLmRpc3BsYXkoKSA9PSBE
aXNwbGF5VHlwZTo6VGFibGVDb2x1bW47IH0KKyAgICBib29sIGlzVGFibGVDb2x1bW5Hcm91cCgp
IGNvbnN0IHsgcmV0dXJuIHN0eWxlKCkuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpUYWJsZUNv
bHVtbkdyb3VwOyB9CiAKICAgICBSZW5kZXJUYWJsZUNvbCogZW5jbG9zaW5nQ29sdW1uR3JvdXAo
KSBjb25zdDsKICAgICBSZW5kZXJUYWJsZUNvbCogZW5jbG9zaW5nQ29sdW1uR3JvdXBJZkFkamFj
ZW50QmVmb3JlKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVSb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZVJvdy5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZVJvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAg
c3RhdGljIGJvb2wgYm9yZGVyV2lkdGhDaGFuZ2VkKGNvbnN0IFJlbgogCiB2b2lkIFJlbmRlclRh
YmxlUm93OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVy
U3R5bGUqIG9sZFN0eWxlKQogewotICAgIEFTU0VSVChzdHlsZSgpLmRpc3BsYXkoKSA9PSBUQUJM
RV9ST1cpOworICAgIEFTU0VSVChzdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFi
bGVSb3cpOwogCiAgICAgUmVuZGVyQm94OjpzdHlsZURpZENoYW5nZShkaWZmLCBvbGRTdHlsZSk7
CiAgICAgcHJvcGFnYXRlU3R5bGVUb0Fub255bW91c0NoaWxkcmVuKFByb3BhZ2F0ZVRvQWxsQ2hp
bGRyZW4pOwpAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgUmVuZGVyVGFibGVSb3c6OnBhaW50T3V0
bGluZUZvclJvd0kKIHsKICAgICBMYXlvdXRQb2ludCBhZGp1c3RlZFBhaW50T2Zmc2V0ID0gcGFp
bnRPZmZzZXQgKyBsb2NhdGlvbigpOwogICAgIFBhaW50UGhhc2UgcGFpbnRQaGFzZSA9IHBhaW50
SW5mby5waGFzZTsKLSAgICBpZiAoKHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZU91dGxpbmUgfHwg
cGFpbnRQaGFzZSA9PSBQYWludFBoYXNlU2VsZk91dGxpbmUpICYmIHN0eWxlKCkudmlzaWJpbGl0
eSgpID09IFZJU0lCTEUpCisgICAgaWYgKChwYWludFBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5l
IHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKSAmJiBzdHlsZSgpLnZpc2li
aWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICBwYWludE91dGxpbmUocGFp
bnRJbmZvLCBMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQsIHNpemUoKSkpOwogfQogCkBA
IC0yMjcsNyArMjI3LDcgQEAgdm9pZCBSZW5kZXJUYWJsZVJvdzo6aW1hZ2VDaGFuZ2VkKFdyYXBw
ZQogCiBSZW5kZXJQdHI8UmVuZGVyVGFibGVSb3c+IFJlbmRlclRhYmxlUm93OjpjcmVhdGVUYWJs
ZVJvd1dpdGhTdHlsZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSkKIHsKLSAgICBhdXRvIHJvdyA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclRhYmxlUm93Pihkb2N1
bWVudCwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUs
IFRBQkxFX1JPVykpOworICAgIGF1dG8gcm93ID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyVGFibGVS
b3c+KGRvY3VtZW50LCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxh
eShzdHlsZSwgRGlzcGxheVR5cGU6OlRhYmxlUm93KSk7CiAgICAgcm93LT5pbml0aWFsaXplU3R5
bGUoKTsKICAgICByZXR1cm4gcm93OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjgsMTAgKzE2OCwxMCBAQCB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6YWRkQ2VsbChS
ZW5kZXJUCiAKICAgICAvLyAjIyMgbW96aWxsYSBzdGlsbCBzZWVtcyB0byBkbyB0aGUgb2xkIEhU
TUwgd2F5LCBldmVuIGZvciBzdHJpY3QgRFRECiAgICAgLy8gKHNlZSB0aGUgYW5ub3RhdGlvbiBv
biB0YWJsZSBjZWxsIGxheW91dGluZyBpbiB0aGUgQ1NTIHNwZWNzIGFuZCB0aGUgdGVzdGNhc2Ug
YmVsb3c6Ci0gICAgLy8gPFRBQkxFIGJvcmRlcj4KKyAgICAvLyA8RGlzcGxheVR5cGU6OlRhYmxl
IGJvcmRlcj4KICAgICAvLyA8VFI+PFREPjEgPFREIHJvd3NwYW49IjIiPjIgPFREPjMgPFREPjQK
ICAgICAvLyA8VFI+PFREIGNvbHNwYW49IjIiPjUKLSAgICAvLyA8L1RBQkxFPgorICAgIC8vIDwv
RGlzcGxheVR5cGU6OlRhYmxlPgogICAgIHdoaWxlIChtX2NDb2wgPCBuQ29scyAmJiAoY2VsbEF0
KGluc2VydGlvblJvdywgbV9jQ29sKS5oYXNDZWxscygpIHx8IGNlbGxBdChpbnNlcnRpb25Sb3cs
IG1fY0NvbCkuaW5Db2xTcGFuKSkKICAgICAgICAgbV9jQ29sKys7CiAKQEAgLTkxNiw3ICs5MTYs
NyBAQCB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6cGFpbnQoUGFpbnRJbmZvCiAgICAgaWYgKHB1
c2hlZENsaXApCiAgICAgICAgIHBvcENvbnRlbnRzQ2xpcChwYWludEluZm8sIHBoYXNlLCBhZGp1
c3RlZFBhaW50T2Zmc2V0KTsKIAotICAgIGlmICgocGhhc2UgPT0gUGFpbnRQaGFzZU91dGxpbmUg
fHwgcGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKSAmJiBzdHlsZSgpLnZpc2liaWxpdHko
KSA9PSBWSVNJQkxFKQorICAgIGlmICgocGhhc2UgPT0gUGFpbnRQaGFzZU91dGxpbmUgfHwgcGhh
c2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKSAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBW
aXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICBwYWludE91dGxpbmUocGFpbnRJbmZvLCBMYXlv
dXRSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQsIHNpemUoKSkpOwogfQogCkBAIC0xNTUxLDcgKzE1
NTEsNyBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZVNlY3Rpb246CiAKIFJlbmRl
clB0cjxSZW5kZXJUYWJsZVNlY3Rpb24+IFJlbmRlclRhYmxlU2VjdGlvbjo6Y3JlYXRlVGFibGVT
ZWN0aW9uV2l0aFN0eWxlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlKQogewotICAgIGF1dG8gc2VjdGlvbiA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclRhYmxlU2Vj
dGlvbj4oZG9jdW1lbnQsIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNw
bGF5KHN0eWxlLCBUQUJMRV9ST1dfR1JPVVApKTsKKyAgICBhdXRvIHNlY3Rpb24gPSBjcmVhdGVS
ZW5kZXJlcjxSZW5kZXJUYWJsZVNlY3Rpb24+KGRvY3VtZW50LCBSZW5kZXJTdHlsZTo6Y3JlYXRl
QW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSwgRGlzcGxheVR5cGU6OlRhYmxlUm93R3Jv
dXApKTsKICAgICBzZWN0aW9uLT5pbml0aWFsaXplU3R5bGUoKTsKICAgICByZXR1cm4gc2VjdGlv
bjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHJldmlz
aW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjcxLDcgKzI3MSw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6c3R5bGVE
aWRDaGFuZ2UoU3R5bGVEaWYKICAgICBpZiAoIW9sZFN0eWxlIHx8IG9sZFN0eWxlLT5mb250Q2Fz
Y2FkZSgpICE9IG5ld1N0eWxlLmZvbnRDYXNjYWRlKCkpCiAgICAgICAgIG1fY2FuVXNlU2ltcGxp
ZmllZFRleHRNZWFzdXJpbmcgPSBjb21wdXRlQ2FuVXNlU2ltcGxpZmllZFRleHRNZWFzdXJpbmco
KTsKIAotICAgIEVUZXh0VHJhbnNmb3JtIG9sZFRyYW5zZm9ybSA9IG9sZFN0eWxlID8gb2xkU3R5
bGUtPnRleHRUcmFuc2Zvcm0oKSA6IFRUTk9ORTsKKyAgICBUZXh0VHJhbnNmb3JtIG9sZFRyYW5z
Zm9ybSA9IG9sZFN0eWxlID8gb2xkU3R5bGUtPnRleHRUcmFuc2Zvcm0oKSA6IFRleHRUcmFuc2Zv
cm06Ok5vbmU7CiAgICAgVGV4dFNlY3VyaXR5IG9sZFNlY3VyaXR5ID0gb2xkU3R5bGUgPyBvbGRT
dHlsZS0+dGV4dFNlY3VyaXR5KCkgOiBUZXh0U2VjdXJpdHk6Ok5vbmU7CiAgICAgaWYgKG5lZWRz
UmVzZXRUZXh0IHx8IG9sZFRyYW5zZm9ybSAhPSBuZXdTdHlsZS50ZXh0VHJhbnNmb3JtKCkgfHwg
b2xkU2VjdXJpdHkgIT0gbmV3U3R5bGUudGV4dFNlY3VyaXR5KCkpCiAgICAgICAgIFJlbmRlclRl
eHQ6OnNldFRleHQob3JpZ2luYWxUZXh0KCksIHRydWUpOwpAQCAtODA4LDcgKzgwOCw3IEBAIHZv
aWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWwKICAgICBmbG9hdCBtYXhXb3Jk
V2lkdGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCk7CiAgICAgdW5zaWduZWQg
bWluaW11bVByZWZpeExlbmd0aCA9IDA7CiAgICAgdW5zaWduZWQgbWluaW11bVN1ZmZpeExlbmd0
aCA9IDA7Ci0gICAgaWYgKHN0eWxlLmh5cGhlbnMoKSA9PSBIeXBoZW5zQXV0byAmJiBjYW5IeXBo
ZW5hdGUoc3R5bGUubG9jYWxlKCkpKSB7CisgICAgaWYgKHN0eWxlLmh5cGhlbnMoKSA9PSBIeXBo
ZW5zOjpBdXRvICYmIGNhbkh5cGhlbmF0ZShzdHlsZS5sb2NhbGUoKSkpIHsKICAgICAgICAgbWF4
V29yZFdpZHRoID0gMDsKIAogICAgICAgICAvLyBNYXAgJ2h5cGhlbmF0ZS1saW1pdC17YmVmb3Jl
LGFmdGVyfTogYXV0bzsnIHRvIDIuCkBAIC04NjUsNyArODY1LDcgQEAgdm9pZCBSZW5kZXJUZXh0
Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbAogICAgICAgICAgICAgQVNTRVJUKGxhc3RXb3JkQm91
bmRhcnkgPT0gaSk7CiAgICAgICAgICAgICBsYXN0V29yZEJvdW5kYXJ5Kys7CiAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgfSBlbHNlIGlmIChjID09IHNvZnRIeXBoZW4gJiYgc3R5bGUu
aHlwaGVucygpICE9IEh5cGhlbnNOb25lKSB7CisgICAgICAgIH0gZWxzZSBpZiAoYyA9PSBzb2Z0
SHlwaGVuICYmIHN0eWxlLmh5cGhlbnMoKSAhPSBIeXBoZW5zOjpOb25lKSB7CiAgICAgICAgICAg
ICBBU1NFUlQoaSA+PSBsYXN0V29yZEJvdW5kYXJ5KTsKICAgICAgICAgICAgIGN1cnJNYXhXaWR0
aCArPSB3aWR0aEZyb21DYWNoZShmb250LCBsYXN0V29yZEJvdW5kYXJ5LCBpIC0gbGFzdFdvcmRC
b3VuZGFyeSwgbGVhZFdpZHRoICsgY3Vyck1heFdpZHRoLCAmZmFsbGJhY2tGb250cywgJmdseXBo
T3ZlcmZsb3csIHN0eWxlKTsKICAgICAgICAgICAgIGlmICghZmlyc3RHbHlwaExlZnRPdmVyZmxv
dykKQEAgLTg3Nyw3ICs4NzcsNyBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRM
b2dpY2FsCiAgICAgICAgIGJvb2wgaGFzQnJlYWsgPSBicmVha0FsbCB8fCBpc0JyZWFrYWJsZShi
cmVha0l0ZXJhdG9yLCBpLCBuZXh0QnJlYWthYmxlLCBicmVha05CU1AsIGNhblVzZUxpbmVCcmVh
a1Nob3J0Y3V0LCBrZWVwQWxsV29yZHMpOwogICAgICAgICBib29sIGJldHdlZW5Xb3JkcyA9IHRy
dWU7CiAgICAgICAgIHVuc2lnbmVkIGogPSBpOwotICAgICAgICB3aGlsZSAoYyAhPSAnXG4nICYm
ICFpc1NwYWNlQWNjb3JkaW5nVG9TdHlsZShjLCBzdHlsZSkgJiYgYyAhPSAnXHQnICYmIChjICE9
IHNvZnRIeXBoZW4gfHwgc3R5bGUuaHlwaGVucygpID09IEh5cGhlbnNOb25lKSkgeworICAgICAg
ICB3aGlsZSAoYyAhPSAnXG4nICYmICFpc1NwYWNlQWNjb3JkaW5nVG9TdHlsZShjLCBzdHlsZSkg
JiYgYyAhPSAnXHQnICYmIChjICE9IHNvZnRIeXBoZW4gfHwgc3R5bGUuaHlwaGVucygpID09IEh5
cGhlbnM6Ok5vbmUpKSB7CiAgICAgICAgICAgICBqKys7CiAgICAgICAgICAgICBpZiAoaiA9PSBs
ZW5ndGgpCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC05MDIsNyArOTAyLDcgQEAgdm9pZCBS
ZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbAogICAgICAgICAgICAgICAgIHcgPSB3
aWR0aEZyb21DYWNoZShmb250LCBpLCB3b3JkTGVuICsgMSwgbGVhZFdpZHRoICsgY3Vyck1heFdp
ZHRoLCAmZmFsbGJhY2tGb250cywgJmdseXBoT3ZlcmZsb3csIHN0eWxlKSAtIHdvcmRUcmFpbGlu
Z1NwYWNlV2lkdGgudmFsdWUoKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAg
IHcgPSB3aWR0aEZyb21DYWNoZShmb250LCBpLCB3b3JkTGVuLCBsZWFkV2lkdGggKyBjdXJyTWF4
V2lkdGgsICZmYWxsYmFja0ZvbnRzLCAmZ2x5cGhPdmVyZmxvdywgc3R5bGUpOwotICAgICAgICAg
ICAgICAgIGlmIChjID09IHNvZnRIeXBoZW4gJiYgc3R5bGUuaHlwaGVucygpICE9IEh5cGhlbnNO
b25lKQorICAgICAgICAgICAgICAgIGlmIChjID09IHNvZnRIeXBoZW4gJiYgc3R5bGUuaHlwaGVu
cygpICE9IEh5cGhlbnM6Ok5vbmUpCiAgICAgICAgICAgICAgICAgICAgIGN1cnJNaW5XaWR0aCA9
IGh5cGhlbldpZHRoKCp0aGlzLCBmb250KTsKICAgICAgICAgICAgIH0KIApAQCAtMTAwNSw3ICsx
MDA1LDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbAogICAgIGlm
ICghc3R5bGUuYXV0b1dyYXAoKSkKICAgICAgICAgbV9taW5XaWR0aCA9IG1fbWF4V2lkdGg7CiAK
LSAgICBpZiAoc3R5bGUud2hpdGVTcGFjZSgpID09IFBSRSkgeworICAgIGlmIChzdHlsZS53aGl0
ZVNwYWNlKCkgPT0gV2hpdGVTcGFjZTo6UHJlKSB7CiAgICAgICAgIGlmIChmaXJzdExpbmUpCiAg
ICAgICAgICAgICBtX2JlZ2luTWluV2lkdGggPSBtX21heFdpZHRoOwogICAgICAgICBtX2VuZE1p
bldpZHRoID0gY3Vyck1heFdpZHRoOwpAQCAtMTEzNywxMyArMTEzNywxMyBAQCBMYXlvdXRVbml0
IFJlbmRlclRleHQ6OnRvcE9mRmlyc3RUZXh0KCkgCiBTdHJpbmcgYXBwbHlUZXh0VHJhbnNmb3Jt
KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBVQ2hhciBwcmV2
aW91c0NoYXJhY3RlcikKIHsKICAgICBzd2l0Y2ggKHN0eWxlLnRleHRUcmFuc2Zvcm0oKSkgewot
ICAgIGNhc2UgVFROT05FOgorICAgIGNhc2UgVGV4dFRyYW5zZm9ybTo6Tm9uZToKICAgICAgICAg
cmV0dXJuIHRleHQ7Ci0gICAgY2FzZSBDQVBJVEFMSVpFOgorICAgIGNhc2UgVGV4dFRyYW5zZm9y
bTo6Q2FwaXRhbGl6ZToKICAgICAgICAgcmV0dXJuIGNhcGl0YWxpemUodGV4dCwgcHJldmlvdXND
aGFyYWN0ZXIpOyAvLyBGSVhNRTogTmVlZCB0byB0YWtlIGxvY2FsZSBpbnRvIGFjY291bnQuCi0g
ICAgY2FzZSBVUFBFUkNBU0U6CisgICAgY2FzZSBUZXh0VHJhbnNmb3JtOjpVcHBlcmNhc2U6CiAg
ICAgICAgIHJldHVybiB0ZXh0LmNvbnZlcnRUb1VwcGVyY2FzZVdpdGhMb2NhbGUoc3R5bGUubG9j
YWxlKCkpOwotICAgIGNhc2UgTE9XRVJDQVNFOgorICAgIGNhc2UgVGV4dFRyYW5zZm9ybTo6TG93
ZXJjYXNlOgogICAgICAgICByZXR1cm4gdGV4dC5jb252ZXJ0VG9Mb3dlcmNhc2VXaXRoTG9jYWxl
KHN0eWxlLmxvY2FsZSgpKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcAko
cmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRG
cmFnbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBSZW5kZXJU
ZXh0RnJhZ21lbnQ6OnN0eWxlRGlkQ2hhbmdlKAogICAgIFJlbmRlclRleHQ6OnN0eWxlRGlkQ2hh
bmdlKGRpZmYsIG9sZFN0eWxlKTsKIAogICAgIGlmIChSZW5kZXJCbG9jayogYmxvY2sgPSBibG9j
a0ZvckFjY29tcGFueWluZ0ZpcnN0TGV0dGVyKCkpCi0gICAgICAgIGJsb2NrLT5tdXRhYmxlU3R5
bGUoKS5yZW1vdmVDYWNoZWRQc2V1ZG9TdHlsZShGSVJTVF9MRVRURVIpOworICAgICAgICBibG9j
ay0+bXV0YWJsZVN0eWxlKCkucmVtb3ZlQ2FjaGVkUHNldWRvU3R5bGUoUHNldWRvSWQ6OkZpcnN0
TGV0dGVyKTsKIH0KIAogdm9pZCBSZW5kZXJUZXh0RnJhZ21lbnQ6OnNldFRleHQoY29uc3QgU3Ry
aW5nJiBuZXdUZXh0LCBib29sIGZvcmNlKQpAQCAtMTEwLDcgKzExMCw3IEBAIFJlbmRlckJsb2Nr
KiBSZW5kZXJUZXh0RnJhZ21lbnQ6OmJsb2NrRm8KICAgICBmb3IgKGF1dG8mIGJsb2NrIDogYW5j
ZXN0b3JzT2ZUeXBlPFJlbmRlckJsb2NrPigqbV9maXJzdExldHRlcikpIHsKICAgICAgICAgaWYg
KGlzPFJlbmRlck11bHRpQ29sdW1uRmxvdz4oYmxvY2spKQogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGlmIChibG9jay5zdHlsZSgpLmhhc1BzZXVkb1N0eWxlKEZJUlNUX0xFVFRFUikgJiYg
YmxvY2suY2FuSGF2ZUNoaWxkcmVuKCkpCisgICAgICAgIGlmIChibG9jay5zdHlsZSgpLmhhc1Bz
ZXVkb1N0eWxlKFBzZXVkb0lkOjpGaXJzdExldHRlcikgJiYgYmxvY2suY2FuSGF2ZUNoaWxkcmVu
KCkpCiAgICAgICAgICAgICByZXR1cm4gJmJsb2NrOwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0
cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAkocmV2aXNp
b24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzksMTMgKzc5LDEzIEBAIHZvaWQgUmVuZGVyVGhlbWU6OmFkanVz
dFN0eWxlKFN0eWxlUmVzb2wKIHsKICAgICAvLyBGb3JjZSBpbmxpbmUgYW5kIHRhYmxlIGRpc3Bs
YXkgc3R5bGVzIHRvIGJlIGlubGluZS1ibG9jayAoZXhjZXB0IGZvciB0YWJsZS0gd2hpY2ggaXMg
YmxvY2spCiAgICAgQ29udHJvbFBhcnQgcGFydCA9IHN0eWxlLmFwcGVhcmFuY2UoKTsKLSAgICBp
ZiAoc3R5bGUuZGlzcGxheSgpID09IElOTElORSB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gSU5MSU5F
X1RBQkxFIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBUQUJMRV9ST1dfR1JPVVAKLSAgICAgICAgfHwg
c3R5bGUuZGlzcGxheSgpID09IFRBQkxFX0hFQURFUl9HUk9VUCB8fCBzdHlsZS5kaXNwbGF5KCkg
PT0gVEFCTEVfRk9PVEVSX0dST1VQCi0gICAgICAgIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBUQUJM
RV9ST1cgfHwgc3R5bGUuZGlzcGxheSgpID09IFRBQkxFX0NPTFVNTl9HUk9VUCB8fCBzdHlsZS5k
aXNwbGF5KCkgPT0gVEFCTEVfQ09MVU1OCi0gICAgICAgIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBU
QUJMRV9DRUxMIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBUQUJMRV9DQVBUSU9OKQotICAgICAgICBz
dHlsZS5zZXREaXNwbGF5KElOTElORV9CTE9DSyk7Ci0gICAgZWxzZSBpZiAoc3R5bGUuZGlzcGxh
eSgpID09IENPTVBBQ1QgfHwgc3R5bGUuZGlzcGxheSgpID09IExJU1RfSVRFTSB8fCBzdHlsZS5k
aXNwbGF5KCkgPT0gVEFCTEUpCi0gICAgICAgIHN0eWxlLnNldERpc3BsYXkoQkxPQ0spOworICAg
IGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OklubGluZSB8fCBzdHlsZS5kaXNw
bGF5KCkgPT0gRGlzcGxheVR5cGU6OklubGluZVRhYmxlIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBE
aXNwbGF5VHlwZTo6VGFibGVSb3dHcm91cAorICAgICAgICB8fCBzdHlsZS5kaXNwbGF5KCkgPT0g
RGlzcGxheVR5cGU6OlRhYmxlSGVhZGVyR3JvdXAgfHwgc3R5bGUuZGlzcGxheSgpID09IERpc3Bs
YXlUeXBlOjpUYWJsZUZvb3Rlckdyb3VwCisgICAgICAgIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBE
aXNwbGF5VHlwZTo6VGFibGVSb3cgfHwgc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpU
YWJsZUNvbHVtbkdyb3VwIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGVD
b2x1bW4KKyAgICAgICAgfHwgc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpUYWJsZUNl
bGwgfHwgc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpUYWJsZUNhcHRpb24pCisgICAg
ICAgIHN0eWxlLnNldERpc3BsYXkoRGlzcGxheVR5cGU6OklubGluZUJsb2NrKTsKKyAgICBlbHNl
IGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OkNvbXBhY3QgfHwgc3R5bGUuZGlz
cGxheSgpID09IERpc3BsYXlUeXBlOjpMaXN0SXRlbSB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gRGlz
cGxheVR5cGU6OlRhYmxlKQorICAgICAgICBzdHlsZS5zZXREaXNwbGF5KERpc3BsYXlUeXBlOjpC
bG9jayk7CiAKICAgICBpZiAoVUFIYXNBcHBlYXJhbmNlICYmIGlzQ29udHJvbFN0eWxlZChzdHls
ZSwgYm9yZGVyLCBiYWNrZ3JvdW5kLCBiYWNrZ3JvdW5kQ29sb3IpKSB7CiAgICAgICAgIHN3aXRj
aCAocGFydCkgewpAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdFN0
eWxlKFN0eWxlUmVzb2wKIAogICAgICAgICAvLyBXaGl0ZXNwYWNlCiAgICAgICAgIGlmIChUaGVt
ZTo6c2luZ2xldG9uKCkuY29udHJvbFJlcXVpcmVzUHJlV2hpdGVTcGFjZShwYXJ0KSkKLSAgICAg
ICAgICAgIHN0eWxlLnNldFdoaXRlU3BhY2UoUFJFKTsKKyAgICAgICAgICAgIHN0eWxlLnNldFdo
aXRlU3BhY2UoV2hpdGVTcGFjZTo6UHJlKTsKIAogICAgICAgICAvLyBXaWR0aCAvIEhlaWdodAog
ICAgICAgICAvLyBUaGUgd2lkdGggYW5kIGhlaWdodCBoZXJlIGFyZSBhZmZlY3RlZCBieSB0aGUg
em9vbS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0J
KHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTMyNCw3ICsxMzI0LDcgQEAgdm9pZCBSZW5kZXJU
aGVtZU1hYzo6YWRqdXN0TWVudUxpc3RTdHlsZQogICAgIHN0eWxlLnNldEhlaWdodChMZW5ndGgo
QXV0bykpOwogCiAgICAgLy8gV2hpdGUtc3BhY2UgaXMgbG9ja2VkIHRvIHByZQotICAgIHN0eWxl
LnNldFdoaXRlU3BhY2UoUFJFKTsKKyAgICBzdHlsZS5zZXRXaGl0ZVNwYWNlKFdoaXRlU3BhY2U6
OlByZSk7CiAKICAgICAvLyBTZXQgdGhlIGZvcmVncm91bmQgY29sb3IgdG8gYmxhY2sgb3IgZ3Jh
eSB3aGVuIHdlIGhhdmUgdGhlIGFxdWEgbG9vay4KICAgICBDb2xvciBjID0gQ29sb3I6OmRhcmtH
cmF5OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3Bw
CShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03ODIsNyArNzgyLDcgQEAgdm9pZCBSZW5kZXJU
aGVtZVdpbjo6YWRqdXN0TWVudUxpc3RCdXR0bwogICAgIHN0eWxlLnNldExpbmVIZWlnaHQoUmVu
ZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0KCkpOwogICAgIAogICAgIC8vIFdoaXRlLXNwYWNl
IGlzIGxvY2tlZCB0byBwcmUKLSAgICBzdHlsZS5zZXRXaGl0ZVNwYWNlKFBSRSk7CisgICAgc3R5
bGUuc2V0V2hpdGVTcGFjZShXaGl0ZVNwYWNlOjpQcmUpOwogfQogCiBib29sIFJlbmRlclRoZW1l
V2luOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiByZW5k
ZXJlciwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAJKHJldmlzaW9uIDIz
MjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzk0LDcgKzM5NCw3IEBAIFJlbmRlckVsZW1lbnQqIFJlbmRlclZpZXc6OnJl
bmRlcmVyRm9yUm8KIHN0YXRpYyBpbmxpbmUgYm9vbCByZW5kZXJlck9ic2N1cmVzQmFja2dyb3Vu
ZChjb25zdCBSZW5kZXJFbGVtZW50JiByb290RWxlbWVudCkKIHsKICAgICBhdXRvJiBzdHlsZSA9
IHJvb3RFbGVtZW50LnN0eWxlKCk7Ci0gICAgaWYgKHN0eWxlLnZpc2liaWxpdHkoKSAhPSBWSVNJ
QkxFIHx8IHN0eWxlLm9wYWNpdHkoKSAhPSAxIHx8IHN0eWxlLmhhc1RyYW5zZm9ybSgpKQorICAg
IGlmIChzdHlsZS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSB8fCBzdHlsZS5v
cGFjaXR5KCkgIT0gMSB8fCBzdHlsZS5oYXNUcmFuc2Zvcm0oKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgaWYgKHN0eWxlLmhhc0JvcmRlclJhZGl1cygpKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODcsNyArMTg3LDcgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnNldFdpZGdldChSZWZQdHI8V2lk
ZwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgICAgICAgICAgaWYg
KHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgICAg
ICAgICAgbV93aWRnZXQtPmhpZGUoKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
ICAgIG1fd2lkZ2V0LT5zaG93KCk7CkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBSZW5kZXJXaWRn
ZXQ6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRAogewogICAgIFJlbmRlclJlcGxhY2VkOjpzdHlsZURp
ZENoYW5nZShkaWZmLCBvbGRTdHlsZSk7CiAgICAgaWYgKG1fd2lkZ2V0KSB7Ci0gICAgICAgIGlm
IChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgICAgICBpZiAoc3R5bGUoKS52
aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgICAgIG1fd2lkZ2V0
LT5oaWRlKCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fd2lkZ2V0LT5zaG93KCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCShyZXZpc2lv
biAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE2MCw3ICsxNjAsNyBAQCBmbG9hdCBSb290SW5saW5lQm94Ojpw
bGFjZUVsbGlwc2lzQm94KGJvCiAKIHZvaWQgUm9vdElubGluZUJveDo6cGFpbnRFbGxpcHNpc0Jv
eChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBM
YXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkgY29uc3QKIHsKLSAgICBp
ZiAoaGFzRWxsaXBzaXNCb3goKSAmJiBwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KHJl
bmRlcmVyKCkpICYmIHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRQor
ICAgIGlmIChoYXNFbGxpcHNpc0JveCgpICYmIHBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJv
b3QocmVuZGVyZXIoKSkgJiYgcmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNp
YmlsaXR5OjpWaXNpYmxlCiAgICAgICAgICAgICAmJiBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQ
aGFzZUZvcmVncm91bmQpCiAgICAgICAgIGVsbGlwc2lzQm94KCktPnBhaW50KHBhaW50SW5mbywg
cGFpbnRPZmZzZXQsIGxpbmVUb3AsIGxpbmVCb3R0b20pOwogfQpAQCAtMzM1LDcgKzMzNSw3IEBA
IExheW91dFVuaXQgUm9vdElubGluZUJveDo6bGluZVNuYXBBZGp1c3QKIHsKICAgICAvLyBJZiBv
dXIgYmxvY2sgZG9lc24ndCBoYXZlIHNuYXBwaW5nIHR1cm5lZCBvbiwgZG8gbm90aGluZy4KICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IGJvdW5kcyBzbmFwcGluZy4KLSAgICBpZiAoYmxvY2tGbG93
KCkuc3R5bGUoKS5saW5lU25hcCgpID09IExpbmVTbmFwTm9uZSkKKyAgICBpZiAoYmxvY2tGbG93
KCkuc3R5bGUoKS5saW5lU25hcCgpID09IExpbmVTbmFwOjpOb25lKQogICAgICAgICByZXR1cm4g
MDsKIAogICAgIC8vIEdldCB0aGUgY3VycmVudCBsaW5lIGdyaWQgYW5kIG9mZnNldC4KQEAgLTM4
Miw3ICszODIsNyBAQCBMYXlvdXRVbml0IFJvb3RJbmxpbmVCb3g6OmxpbmVTbmFwQWRqdXN0CiAg
ICAgICAgICAgICBmaXJzdFRleHRUb3AgPSBwYWdlTG9naWNhbFRvcCArIGxpbmVHcmlkQm94LT5s
b2dpY2FsVG9wKCkgLSBsaW5lR3JpZC0+Ym9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpICsgbGluZUdy
aWRQYWdpbmF0aW9uT3JpZ2luOwogICAgIH0KIAotICAgIGlmIChibG9ja0Zsb3coKS5zdHlsZSgp
LmxpbmVTbmFwKCkgPT0gTGluZVNuYXBDb250YWluKSB7CisgICAgaWYgKGJsb2NrRmxvdygpLnN0
eWxlKCkubGluZVNuYXAoKSA9PSBMaW5lU25hcDo6Q29udGFpbikgewogICAgICAgICAvLyBDb21w
dXRlIHRoZSBkZXNpcmVkIG9mZnNldCBmcm9tIHRoZSB0ZXh0LXRvcCBvZiBhIGdyaWQgbGluZS4K
ICAgICAgICAgLy8gTG9vayBhdCBvdXIgaGVpZ2h0IChsb2dpY2FsSGVpZ2h0KCkpLgogICAgICAg
ICAvLyBMb29rIGF0IHRoZSB0b3RhbCBhdmFpbGFibGUgaGVpZ2h0LiBJdCdzIGdvaW5nIHRvIGJl
ICh0ZXh0Qm90dG9tIC0gdGV4dFRvcCkgKyAobi0xKSoobXVsdGlwbGUgd2l0aCBsZWFkaW5nKQpA
QCAtNDYwLDcgKzQ2MCw3IEBAIEdhcFJlY3RzIFJvb3RJbmxpbmVCb3g6OmxpbmVTZWxlY3Rpb25H
YXAKICAgICAgICAgICAgICAgICBsb2dpY2FsUmVjdC5tb3ZlKHJlbmRlcmVyKCkuaXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSA/IG9mZnNldEZyb21Sb290QmxvY2sgOiBMYXlvdXRTaXplKG9mZnNl
dEZyb21Sb290QmxvY2suaGVpZ2h0KCksIG9mZnNldEZyb21Sb290QmxvY2sud2lkdGgoKSkpOwog
ICAgICAgICAgICAgICAgIExheW91dFJlY3QgZ2FwUmVjdCA9IHJvb3RCbG9jay5sb2dpY2FsUmVj
dFRvUGh5c2ljYWxSZWN0KHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIGxvZ2ljYWxSZWN0KTsK
ICAgICAgICAgICAgICAgICBpZiAoaXNQcmV2aW91c0JveFNlbGVjdGVkICYmIGdhcFJlY3Qud2lk
dGgoKSA+IDAgJiYgZ2FwUmVjdC5oZWlnaHQoKSA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHBhaW50SW5mbyAmJiBib3gtPnBhcmVudCgpLT5yZW5kZXJlcigpLnN0eWxlKCkudmlzaWJp
bGl0eSgpID09IFZJU0lCTEUpCisgICAgICAgICAgICAgICAgICAgIGlmIChwYWludEluZm8gJiYg
Ym94LT5wYXJlbnQoKS0+cmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmls
aXR5OjpWaXNpYmxlKQogICAgICAgICAgICAgICAgICAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0
KCkuZmlsbFJlY3QoZ2FwUmVjdCwgYm94LT5wYXJlbnQoKS0+cmVuZGVyZXIoKS5zZWxlY3Rpb25C
YWNrZ3JvdW5kQ29sb3IoKSk7CiAgICAgICAgICAgICAgICAgICAgIC8vIFZpc2libGVTZWxlY3Rp
b24gbWF5IGJlIG5vbi1jb250aWd1b3VzLCBzZWUgY29tbWVudCBhYm92ZS4KICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0LnVuaXRlQ2VudGVyKGdhcFJlY3QpOwpAQCAtNDk4LDIwICs0OTgsMjAg
QEAgSW50UmVjdCBSb290SW5saW5lQm94Ojpjb21wdXRlQ2FyZXRSZWN0KAogCiAgICAgYm9vbCBy
aWdodEFsaWduZWQgPSBmYWxzZTsKICAgICBzd2l0Y2ggKGJsb2NrU3R5bGUudGV4dEFsaWduKCkp
IHsKLSAgICBjYXNlIFJJR0hUOgotICAgIGNhc2UgV0VCS0lUX1JJR0hUOgorICAgIGNhc2UgVGV4
dEFsaWduTW9kZTo6UmlnaHQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRSaWdodDoK
ICAgICAgICAgcmlnaHRBbGlnbmVkID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBM
RUZUOgotICAgIGNhc2UgV0VCS0lUX0xFRlQ6Ci0gICAgY2FzZSBDRU5URVI6Ci0gICAgY2FzZSBX
RUJLSVRfQ0VOVEVSOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKKyAgICBjYXNlIFRl
eHRBbGlnbk1vZGU6OldlYktpdExlZnQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpDZW50ZXI6
CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRDZW50ZXI6CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgSlVTVElGWToKLSAgICBjYXNlIFRBU1RBUlQ6CisgICAgY2FzZSBUZXh0QWxpZ25N
b2RlOjpKdXN0aWZ5OgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CiAgICAgICAgIHJp
Z2h0QWxpZ25lZCA9ICFibG9ja1N0eWxlLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBUQUVORDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkVuZDoK
ICAgICAgICAgcmlnaHRBbGlnbmVkID0gYmxvY2tTdHlsZS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9u
KCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9TaW1wbGVMaW5lTGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTYzLDcgKzE2Myw3IEBAIHN0YXRpYyBBdm9pZGFuY2VSZWFzb25GbGFncyBjYW5Vc2VGb3JGb24K
ICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBsaW5lSGVpZ2h0Q29uc3RyYWludDsKICAgICBpZiAo
c3R5bGUubGluZUJveENvbnRhaW4oKSAmIExpbmVCb3hDb250YWluR2x5cGhzKQogICAgICAgICBs
aW5lSGVpZ2h0Q29uc3RyYWludCA9IGxpbmVIZWlnaHRGcm9tRmxvdyhmbG93KS50b0Zsb2F0KCk7
Ci0gICAgYm9vbCBmbG93SXNKdXN0aWZpZWQgPSBzdHlsZS50ZXh0QWxpZ24oKSA9PSBKVVNUSUZZ
OworICAgIGJvb2wgZmxvd0lzSnVzdGlmaWVkID0gc3R5bGUudGV4dEFsaWduKCkgPT0gVGV4dEFs
aWduTW9kZTo6SnVzdGlmeTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHRleHRSZW5kZXJlciA6IGNo
aWxkcmVuT2ZUeXBlPFJlbmRlclRleHQ+KGZsb3cpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBEbyBu
b3QgcmV0dXJuIHVudGlsIGFmdGVyIGNoZWNraW5nIGFsbCBjaGlsZHJlbi4KICAgICAgICAgaWYg
KHRleHRSZW5kZXJlci50ZXh0KCkuaXNFbXB0eSgpKQpAQCAtMjE1LDI1ICsyMTUsMjUgQEAgc3Rh
dGljIEF2b2lkYW5jZVJlYXNvbkZsYWdzIGNhblVzZUZvclN0eQogICAgICAgICBTRVRfUkVBU09O
X0FORF9SRVRVUk5fSUZfTkVFREVEKEZsb3dIYXNMaW5lQnJlYWssIHJlYXNvbnMsIGluY2x1ZGVS
ZWFzb25zKTsKICAgICBpZiAoc3R5bGUudW5pY29kZUJpZGkoKSAhPSBVQk5vcm1hbCkKICAgICAg
ICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lGX05FRURFRChGbG93SGFzTm9uTm9ybWFsVW5pY29k
ZUJpRGksIHJlYXNvbnMsIGluY2x1ZGVSZWFzb25zKTsKLSAgICBpZiAoc3R5bGUucnRsT3JkZXJp
bmcoKSAhPSBMb2dpY2FsT3JkZXIpCisgICAgaWYgKHN0eWxlLnJ0bE9yZGVyaW5nKCkgIT0gT3Jk
ZXI6OkxvZ2ljYWwpCiAgICAgICAgIFNFVF9SRUFTT05fQU5EX1JFVFVSTl9JRl9ORUVERUQoRmxv
d0hhc1JUTE9yZGVyaW5nLCByZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7Ci0gICAgaWYgKHN0eWxl
LmxpbmVBbGlnbigpICE9IExpbmVBbGlnbk5vbmUpCisgICAgaWYgKHN0eWxlLmxpbmVBbGlnbigp
ICE9IExpbmVBbGlnbjo6Tm9uZSkKICAgICAgICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lGX05F
RURFRChGbG93SGFzTGluZUFsaWduRWRnZXMsIHJlYXNvbnMsIGluY2x1ZGVSZWFzb25zKTsKLSAg
ICBpZiAoc3R5bGUubGluZVNuYXAoKSAhPSBMaW5lU25hcE5vbmUpCisgICAgaWYgKHN0eWxlLmxp
bmVTbmFwKCkgIT0gTGluZVNuYXA6Ok5vbmUpCiAgICAgICAgIFNFVF9SRUFTT05fQU5EX1JFVFVS
Tl9JRl9ORUVERUQoRmxvd0hhc0xpbmVTbmFwLCByZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7Ci0g
ICAgaWYgKHN0eWxlLnRleHRFbXBoYXNpc0ZpbGwoKSAhPSBUZXh0RW1waGFzaXNGaWxsRmlsbGVk
IHx8IHN0eWxlLnRleHRFbXBoYXNpc01hcmsoKSAhPSBUZXh0RW1waGFzaXNNYXJrTm9uZSkKKyAg
ICBpZiAoc3R5bGUudGV4dEVtcGhhc2lzRmlsbCgpICE9IFRleHRFbXBoYXNpc0ZpbGw6OkZpbGxl
ZCB8fCBzdHlsZS50ZXh0RW1waGFzaXNNYXJrKCkgIT0gVGV4dEVtcGhhc2lzTWFyazo6Tm9uZSkK
ICAgICAgICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lGX05FRURFRChGbG93SGFzVGV4dEVtcGhh
c2lzRmlsbE9yTWFyaywgcmVhc29ucywgaW5jbHVkZVJlYXNvbnMpOwogICAgIGlmIChzdHlsZS50
ZXh0U2hhZG93KCkpCiAgICAgICAgIFNFVF9SRUFTT05fQU5EX1JFVFVSTl9JRl9ORUVERUQoRmxv
d0hhc1RleHRTaGFkb3csIHJlYXNvbnMsIGluY2x1ZGVSZWFzb25zKTsKLSAgICBpZiAoc3R5bGUu
aGFzUHNldWRvU3R5bGUoRklSU1RfTElORSkpCisgICAgaWYgKHN0eWxlLmhhc1BzZXVkb1N0eWxl
KFBzZXVkb0lkOjpGaXJzdExpbmUpKQogICAgICAgICBTRVRfUkVBU09OX0FORF9SRVRVUk5fSUZf
TkVFREVEKEZsb3dIYXNQc2V1ZG9GaXJzdExpbmUsIHJlYXNvbnMsIGluY2x1ZGVSZWFzb25zKTsK
LSAgICBpZiAoc3R5bGUuaGFzUHNldWRvU3R5bGUoRklSU1RfTEVUVEVSKSkKKyAgICBpZiAoc3R5
bGUuaGFzUHNldWRvU3R5bGUoUHNldWRvSWQ6OkZpcnN0TGV0dGVyKSkKICAgICAgICAgU0VUX1JF
QVNPTl9BTkRfUkVUVVJOX0lGX05FRURFRChGbG93SGFzUHNldWRvRmlyc3RMZXR0ZXIsIHJlYXNv
bnMsIGluY2x1ZGVSZWFzb25zKTsKICAgICBpZiAoc3R5bGUuaGFzVGV4dENvbWJpbmUoKSkKICAg
ICAgICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lGX05FRURFRChGbG93SGFzVGV4dENvbWJpbmUs
IHJlYXNvbnMsIGluY2x1ZGVSZWFzb25zKTsKICAgICBpZiAoc3R5bGUuYmFja2dyb3VuZENsaXAo
KSA9PSBGaWxsQm94OjpUZXh0KQogICAgICAgICBTRVRfUkVBU09OX0FORF9SRVRVUk5fSUZfTkVF
REVEKEZsb3dIYXNUZXh0RmlsbEJveCwgcmVhc29ucywgaW5jbHVkZVJlYXNvbnMpOwotICAgIGlm
IChzdHlsZS5ib3JkZXJGaXQoKSA9PSBCb3JkZXJGaXRMaW5lcykKKyAgICBpZiAoc3R5bGUuYm9y
ZGVyRml0KCkgPT0gQm9yZGVyRml0OjpMaW5lcykKICAgICAgICAgU0VUX1JFQVNPTl9BTkRfUkVU
VVJOX0lGX05FRURFRChGbG93SGFzQm9yZGVyRml0TGluZXMsIHJlYXNvbnMsIGluY2x1ZGVSZWFz
b25zKTsKICAgICBpZiAoc3R5bGUubGluZUJyZWFrKCkgIT0gTGluZUJyZWFrOjpBdXRvKQogICAg
ICAgICBTRVRfUkVBU09OX0FORF9SRVRVUk5fSUZfTkVFREVEKEZsb3dIYXNOb25BdXRvTGluZUJy
ZWFrLCByZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7CkBAIC0yNDMsNyArMjQzLDcgQEAgc3RhdGlj
IEF2b2lkYW5jZVJlYXNvbkZsYWdzIGNhblVzZUZvclN0eQogICAgIGlmIChzdHlsZS50cmFpbGlu
Z1dvcmQoKSAhPSBUcmFpbGluZ1dvcmQ6OkF1dG8pCiAgICAgICAgIFNFVF9SRUFTT05fQU5EX1JF
VFVSTl9JRl9ORUVERUQoRmxvd0hhc05vbkF1dG9UcmFpbGluZ1dvcmQsIHJlYXNvbnMsIGluY2x1
ZGVSZWFzb25zKTsKICNlbmRpZgotICAgIGlmIChzdHlsZS5oeXBoZW5zKCkgPT0gSHlwaGVuc0F1
dG8pIHsKKyAgICBpZiAoc3R5bGUuaHlwaGVucygpID09IEh5cGhlbnM6OkF1dG8pIHsKICAgICAg
ICAgYXV0byB0ZXh0UmVhc29ucyA9IGNhblVzZUZvclRleHQoc3R5bGUuaHlwaGVuU3RyaW5nKCks
IHN0eWxlLmZvbnRDYXNjYWRlKCksIHN0ZDo6bnVsbG9wdCwgZmFsc2UsIGluY2x1ZGVSZWFzb25z
KTsKICAgICAgICAgaWYgKHRleHRSZWFzb25zICE9IE5vUmVhc29uKQogICAgICAgICAgICAgU0VU
X1JFQVNPTl9BTkRfUkVUVVJOX0lGX05FRURFRCh0ZXh0UmVhc29ucywgcmVhc29ucywgaW5jbHVk
ZVJlYXNvbnMpOwpAQCAtMzU1LDIzICszNTUsMjMgQEAgYm9vbCBjYW5Vc2VGb3IoY29uc3QgUmVu
ZGVyQmxvY2tGbG93JiBmbAogICAgIHJldHVybiBjYW5Vc2VGb3JXaXRoUmVhc29uKGZsb3csIElu
Y2x1ZGVSZWFzb25zOjpGaXJzdCkgPT0gTm9SZWFzb247CiB9CiAKLXN0YXRpYyBmbG9hdCBjb21w
dXRlTGluZUxlZnQoRVRleHRBbGlnbiB0ZXh0QWxpZ24sIGZsb2F0IGF2YWlsYWJsZVdpZHRoLCBm
bG9hdCBjb21taXR0ZWRXaWR0aCwgZmxvYXQgbG9naWNhbExlZnRPZmZzZXQpCitzdGF0aWMgZmxv
YXQgY29tcHV0ZUxpbmVMZWZ0KFRleHRBbGlnbk1vZGUgdGV4dEFsaWduLCBmbG9hdCBhdmFpbGFi
bGVXaWR0aCwgZmxvYXQgY29tbWl0dGVkV2lkdGgsIGZsb2F0IGxvZ2ljYWxMZWZ0T2Zmc2V0KQog
ewogICAgIGZsb2F0IHJlbWFpbmluZ1dpZHRoID0gYXZhaWxhYmxlV2lkdGggLSBjb21taXR0ZWRX
aWR0aDsKICAgICBmbG9hdCBsZWZ0ID0gbG9naWNhbExlZnRPZmZzZXQ7CiAgICAgc3dpdGNoICh0
ZXh0QWxpZ24pIHsKLSAgICBjYXNlIExFRlQ6Ci0gICAgY2FzZSBXRUJLSVRfTEVGVDoKLSAgICBj
YXNlIFRBU1RBUlQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgorICAgIGNhc2UgVGV4
dEFsaWduTW9kZTo6V2ViS2l0TGVmdDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlN0YXJ0Ogog
ICAgICAgICByZXR1cm4gbGVmdDsKLSAgICBjYXNlIFJJR0hUOgotICAgIGNhc2UgV0VCS0lUX1JJ
R0hUOgotICAgIGNhc2UgVEFFTkQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpSaWdodDoKKyAg
ICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0OgorICAgIGNhc2UgVGV4dEFsaWduTW9k
ZTo6RW5kOgogICAgICAgICByZXR1cm4gbGVmdCArIHN0ZDo6bWF4PGZsb2F0PihyZW1haW5pbmdX
aWR0aCwgMCk7Ci0gICAgY2FzZSBDRU5URVI6Ci0gICAgY2FzZSBXRUJLSVRfQ0VOVEVSOgorICAg
IGNhc2UgVGV4dEFsaWduTW9kZTo6Q2VudGVyOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2Vi
S2l0Q2VudGVyOgogICAgICAgICByZXR1cm4gbGVmdCArIHN0ZDo6bWF4PGZsb2F0PihyZW1haW5p
bmdXaWR0aCAvIDIsIDApOwotICAgIGNhc2UgSlVTVElGWToKKyAgICBjYXNlIFRleHRBbGlnbk1v
ZGU6Okp1c3RpZnk6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVh
azsKICAgICB9CkBAIC02MDYsNyArNjA2LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlTGluZUNvbnN0
cmFpbnMoY29uc3QgUgogICAgIGxpbmUuc2V0TG9naWNhbExlZnRPZmZzZXQoZmxvdy5sb2dpY2Fs
TGVmdE9mZnNldEZvckxpbmUoaGVpZ2h0LCBEb05vdEluZGVudFRleHQsIGxvZ2ljYWxIZWlnaHQp
ICsgKHNob3VsZEFwcGx5VGV4dEluZGVudCAmJiBpc0ZpcnN0TGluZSA/IGZsb3cudGV4dEluZGVu
dE9mZnNldCgpIDogTGF5b3V0VW5pdCgwKSkpOwogICAgIGZsb2F0IGxvZ2ljYWxSaWdodE9mZnNl
dCA9IGZsb3cubG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShoZWlnaHQsIERvTm90SW5kZW50VGV4
dCwgbG9naWNhbEhlaWdodCk7CiAgICAgbGluZS5zZXRBdmFpbGFibGVXaWR0aChzdGQ6Om1heDxm
bG9hdD4oMCwgbG9naWNhbFJpZ2h0T2Zmc2V0IC0gbGluZS5sb2dpY2FsTGVmdE9mZnNldCgpKSk7
Ci0gICAgaWYgKHN0eWxlLnRleHRBbGlnbiA9PSBKVVNUSUZZKQorICAgIGlmIChzdHlsZS50ZXh0
QWxpZ24gPT0gVGV4dEFsaWduTW9kZTo6SnVzdGlmeSkKICAgICAgICAgbGluZS5zZXROZWVkc0Fs
bEZyYWdtZW50cygpOwogICAgIG51bWJlck9mUHJlY2VkaW5nTGluZXNXaXRoSHlwaGVuID0gKHBy
ZXZpb3VzTGluZS5pc0VtcHR5KCkgfHwgIXByZXZpb3VzTGluZS5sYXN0RnJhZ21lbnQoKS5oYXNI
eXBoZW4oKSkgPyAwIDogbnVtYmVyT2ZQcmVjZWRpbmdMaW5lc1dpdGhIeXBoZW4gKyAxOwogICAg
IGlmIChzdHlsZS5oeXBoZW5MaW1pdExpbmVzICYmIG51bWJlck9mUHJlY2VkaW5nTGluZXNXaXRo
SHlwaGVuID49ICpzdHlsZS5oeXBoZW5MaW1pdExpbmVzKQpAQCAtNzkxLDcgKzc5MSw3IEBAIHN0
YXRpYyBib29sIGNyZWF0ZUxpbmVSdW5zKExpbmVTdGF0ZSYgbGkKICAgICAgICAgaWYgKGZyYWdt
ZW50LmlzTGluZUJyZWFrKCkpIHsKICAgICAgICAgICAgIC8vIEFkZCB0aGUgbmV3IGxpbmUgZnJh
Z21lbnQgb25seSBpZiB0aGVyZSdzIG5vdGhpbmcgb24gdGhlIGxpbmUuIChvdGhlcndpc2UgdGhl
IGV4dHJhIG5ldyBsaW5lIGNoYXJhY3RlciB3b3VsZCBzaG93IHVwIGF0IHRoZSBlbmQgb2YgdGhl
IGNvbnRlbnQuKQogICAgICAgICAgICAgaWYgKGxpbmUuaXNFbXB0eSgpIHx8IGZyYWdtZW50LnR5
cGUoKSA9PSBUZXh0RnJhZ21lbnRJdGVyYXRvcjo6VGV4dEZyYWdtZW50OjpIYXJkTGluZUJyZWFr
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHN0eWxlLnRleHRBbGlnbiA9PSBSSUdIVCB8fCBzdHls
ZS50ZXh0QWxpZ24gPT0gV0VCS0lUX1JJR0hUKQorICAgICAgICAgICAgICAgIGlmIChzdHlsZS50
ZXh0QWxpZ24gPT0gVGV4dEFsaWduTW9kZTo6UmlnaHQgfHwgc3R5bGUudGV4dEFsaWduID09IFRl
eHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0KQogICAgICAgICAgICAgICAgICAgICBsaW5lLnJlbW92
ZVRyYWlsaW5nV2hpdGVzcGFjZShydW5zKTsKICAgICAgICAgICAgICAgICBsaW5lLmFwcGVuZEZy
YWdtZW50QW5kQ3JlYXRlUnVuSWZOZWVkZWQoZnJhZ21lbnQsIHJ1bnMpOwogICAgICAgICAgICAg
fQpAQCAtOTAzLDEyICs5MDMsMTIgQEAgc3RhdGljIHZvaWQganVzdGlmeVJ1bnMoY29uc3QgTGlu
ZVN0YXRlJgogICAgIH0KIH0KIAotc3RhdGljIEVUZXh0QWxpZ24gdGV4dEFsaWduRm9yTGluZShj
b25zdCBUZXh0RnJhZ21lbnRJdGVyYXRvcjo6U3R5bGUmIHN0eWxlLCBib29sIGxhc3RMaW5lKQor
c3RhdGljIFRleHRBbGlnbk1vZGUgdGV4dEFsaWduRm9yTGluZShjb25zdCBUZXh0RnJhZ21lbnRJ
dGVyYXRvcjo6U3R5bGUmIHN0eWxlLCBib29sIGxhc3RMaW5lKQogewotICAgIC8vIEZhbGxiYWNr
IHRvIExFRlQgKFNUQVJUKSBhbGlnbm1lbnQgZm9yIG5vbi1jb2xsYXBzYWJsZSBjb250ZW50IGFu
ZCBmb3IgdGhlIGxhc3QgbGluZSBiZWZvcmUgYSBmb3JjZWQgYnJlYWsgb3IgdGhlIGVuZCBvZiB0
aGUgYmxvY2suCisgICAgLy8gRmFsbGJhY2sgdG8gVGV4dEFsaWduTW9kZTo6TGVmdCAoU1RBUlQp
IGFsaWdubWVudCBmb3Igbm9uLWNvbGxhcHNhYmxlIGNvbnRlbnQgYW5kIGZvciB0aGUgbGFzdCBs
aW5lIGJlZm9yZSBhIGZvcmNlZCBicmVhayBvciB0aGUgZW5kIG9mIHRoZSBibG9jay4KICAgICBh
dXRvIHRleHRBbGlnbiA9IHN0eWxlLnRleHRBbGlnbjsKLSAgICBpZiAodGV4dEFsaWduID09IEpV
U1RJRlkgJiYgKCFzdHlsZS5jb2xsYXBzZVdoaXRlc3BhY2UgfHwgbGFzdExpbmUpKQotICAgICAg
ICB0ZXh0QWxpZ24gPSBMRUZUOworICAgIGlmICh0ZXh0QWxpZ24gPT0gVGV4dEFsaWduTW9kZTo6
SnVzdGlmeSAmJiAoIXN0eWxlLmNvbGxhcHNlV2hpdGVzcGFjZSB8fCBsYXN0TGluZSkpCisgICAg
ICAgIHRleHRBbGlnbiA9IFRleHRBbGlnbk1vZGU6OkxlZnQ7CiAgICAgcmV0dXJuIHRleHRBbGln
bjsKIH0KIApAQCAtOTI1LDcgKzkyNSw3IEBAIHN0YXRpYyB2b2lkIGNsb3NlTGluZUVuZGluZ0Fu
ZEFkanVzdFJ1bnMKICAgICBhdXRvIGZpcnN0UnVuSW5kZXggPSBsYXN0UnVuSW5kZXhPZlByZXZp
b3VzTGluZSA/IGxhc3RSdW5JbmRleE9mUHJldmlvdXNMaW5lLnZhbHVlKCkgKyAxIDogMDsKICAg
ICBhdXRvIGxpbmVMb2dpY2FsTGVmdCA9IGxpbmUubG9naWNhbExlZnRPZmZzZXQoKTsKICAgICBh
dXRvIHRleHRBbGlnbiA9IHRleHRBbGlnbkZvckxpbmUoc3R5bGUsIGxhc3RMaW5lSW5GbG93IHx8
IChsaW5lLmxhc3RGcmFnbWVudCgpLmlzVmFsaWQoKSAmJiBsaW5lLmxhc3RGcmFnbWVudCgpLnR5
cGUoKSA9PSBUZXh0RnJhZ21lbnRJdGVyYXRvcjo6VGV4dEZyYWdtZW50OjpIYXJkTGluZUJyZWFr
KSk7Ci0gICAgaWYgKHRleHRBbGlnbiA9PSBKVVNUSUZZKQorICAgIGlmICh0ZXh0QWxpZ24gPT0g
VGV4dEFsaWduTW9kZTo6SnVzdGlmeSkKICAgICAgICAganVzdGlmeVJ1bnMobGluZSwgcnVucywg
Zmlyc3RSdW5JbmRleCk7CiAgICAgZWxzZQogICAgICAgICBsaW5lTG9naWNhbExlZnQgPSBjb21w
dXRlTGluZUxlZnQodGV4dEFsaWduLCBsaW5lLmF2YWlsYWJsZVdpZHRoKCksIGxpbmUud2lkdGgo
KSwgbGluZS5sb2dpY2FsTGVmdE9mZnNldCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAJKHJldmlzaW9u
IDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVu
Y3Rpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCB2b2lkIHBhaW50Rmxv
dyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8m
IHN0eWxlID0gZmxvdy5zdHlsZSgpOwotICAgIGlmIChzdHlsZS52aXNpYmlsaXR5KCkgIT0gVklT
SUJMRSkKKyAgICBpZiAoc3R5bGUudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUp
CiAgICAgICAgIHJldHVybjsKIAogICAgIFRleHRQYWludGVyIHRleHRQYWludGVyKHBhaW50SW5m
by5jb250ZXh0KCkpOwpAQCAtMTQzLDcgKzE0Myw3IEBAIGJvb2wgaGl0VGVzdEZsb3coY29uc3Qg
UmVuZGVyQmxvY2tGbG93JiAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYXV0byYgc3R5
bGUgPSBmbG93LnN0eWxlKCk7Ci0gICAgaWYgKHN0eWxlLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxF
IHx8IHN0eWxlLnBvaW50ZXJFdmVudHMoKSA9PSBQRV9OT05FKQorICAgIGlmIChzdHlsZS52aXNp
YmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSB8fCBzdHlsZS5wb2ludGVyRXZlbnRzKCkg
PT0gUG9pbnRlckV2ZW50czo6Tm9uZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgTGF5
b3V0UmVjdCByYW5nZVJlY3QgPSBsb2NhdGlvbkluQ29udGFpbmVyLmJvdW5kaW5nQm94KCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVu
dEl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2lt
cGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmNwcAkocmV2aXNpb24gMjMyMTIzKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJ
dGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgVGV4dEZyYWdtZW50
SXRlcmF0b3I6OlN0eWxlOjpTdHlsZShjb25zdAogICAgICwga2VlcEFsbFdvcmRzRm9yQ0pLKHN0
eWxlLndvcmRCcmVhaygpID09IFdvcmRCcmVhazo6S2VlcEFsbCkKICAgICAsIHdvcmRTcGFjaW5n
KGZvbnQud29yZFNwYWNpbmcoKSkKICAgICAsIHRhYldpZHRoKGNvbGxhcHNlV2hpdGVzcGFjZSA/
IDAgOiBzdHlsZS50YWJTaXplKCkpCi0gICAgLCBzaG91bGRIeXBoZW5hdGUoc3R5bGUuaHlwaGVu
cygpID09IEh5cGhlbnNBdXRvICYmIGNhbkh5cGhlbmF0ZShzdHlsZS5sb2NhbGUoKSkpCisgICAg
LCBzaG91bGRIeXBoZW5hdGUoc3R5bGUuaHlwaGVucygpID09IEh5cGhlbnM6OkF1dG8gJiYgY2Fu
SHlwaGVuYXRlKHN0eWxlLmxvY2FsZSgpKSkKICAgICAsIGh5cGhlblN0cmluZ1dpZHRoKHNob3Vs
ZEh5cGhlbmF0ZSA/ICh1c2VTaW1wbGlmaWVkVGV4dE1lYXN1cmluZyA/IGZvbnQud2lkdGhGb3JT
aW1wbGVUZXh0KHN0eWxlLmh5cGhlblN0cmluZygpKSA6IGZvbnQud2lkdGgoVGV4dFJ1bihTdHJp
bmcoc3R5bGUuaHlwaGVuU3RyaW5nKCkpKSkpIDogMCkKICAgICAsIGh5cGhlbkxpbWl0QmVmb3Jl
KHN0eWxlLmh5cGhlbmF0aW9uTGltaXRCZWZvcmUoKSA8IDAgPyAyIDogc3R5bGUuaHlwaGVuYXRp
b25MaW1pdEJlZm9yZSgpKQogICAgICwgaHlwaGVuTGltaXRBZnRlcihzdHlsZS5oeXBoZW5hdGlv
bkxpbWl0QWZ0ZXIoKSA8IDAgPyAyIDogc3R5bGUuaHlwaGVuYXRpb25MaW1pdEFmdGVyKCkpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVu
dEl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBs
ZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5oCShyZXZpc2lvbiAyMzIxMjMpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJh
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYsNyBAQCBwdWJsaWM6CiAgICAgICAg
IGV4cGxpY2l0IFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgYm9vbCB1c2VTaW1wbGlmaWVkVGV4
dE1lYXN1cmluZyk7CiAKICAgICAgICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnQ7Ci0gICAgICAg
IEVUZXh0QWxpZ24gdGV4dEFsaWduOworICAgICAgICBUZXh0QWxpZ25Nb2RlIHRleHRBbGlnbjsK
ICAgICAgICAgYm9vbCBoYXNLZXJuaW5nT3JMaWdhdHVyZXM7CiAgICAgICAgIGJvb2wgY29sbGFw
c2VXaGl0ZXNwYWNlOwogICAgICAgICBib29sIHByZXNlcnZlTmV3bGluZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwCShy
ZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRp
b25QYWludGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIxLDE5ICsyMjEsMTkgQEAgc3RhdGlj
IFN0cm9rZVN0eWxlIHRleHREZWNvcmF0aW9uU3R5bGVUbwogewogICAgIFN0cm9rZVN0eWxlIHN0
cm9rZVN0eWxlID0gU29saWRTdHJva2U7CiAgICAgc3dpdGNoIChkZWNvcmF0aW9uU3R5bGUpIHsK
LSAgICBjYXNlIFRleHREZWNvcmF0aW9uU3R5bGVTb2xpZDoKKyAgICBjYXNlIFRleHREZWNvcmF0
aW9uU3R5bGU6OlNvbGlkOgogICAgICAgICBzdHJva2VTdHlsZSA9IFNvbGlkU3Ryb2tlOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFRleHREZWNvcmF0aW9uU3R5bGVEb3VibGU6CisgICAgY2Fz
ZSBUZXh0RGVjb3JhdGlvblN0eWxlOjpEb3VibGU6CiAgICAgICAgIHN0cm9rZVN0eWxlID0gRG91
YmxlU3Ryb2tlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRleHREZWNvcmF0aW9uU3R5bGVE
b3R0ZWQ6CisgICAgY2FzZSBUZXh0RGVjb3JhdGlvblN0eWxlOjpEb3R0ZWQ6CiAgICAgICAgIHN0
cm9rZVN0eWxlID0gRG90dGVkU3Ryb2tlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRleHRE
ZWNvcmF0aW9uU3R5bGVEYXNoZWQ6CisgICAgY2FzZSBUZXh0RGVjb3JhdGlvblN0eWxlOjpEYXNo
ZWQ6CiAgICAgICAgIHN0cm9rZVN0eWxlID0gRGFzaGVkU3Ryb2tlOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIFRleHREZWNvcmF0aW9uU3R5bGVXYXZ5OgorICAgIGNhc2UgVGV4dERlY29yYXRp
b25TdHlsZTo6V2F2eToKICAgICAgICAgc3Ryb2tlU3R5bGUgPSBXYXZ5U3Ryb2tlOwogICAgICAg
ICBicmVhazsKICAgICB9CkBAIC0yNTIsNyArMjUyLDcgQEAgVGV4dERlY29yYXRpb25QYWludGVy
OjpUZXh0RGVjb3JhdGlvblBhaQogICAgICwgbV9kZWNvcmF0aW9ucyB7IE9wdGlvblNldDxUZXh0
RGVjb3JhdGlvbj46OmZyb21SYXcoZGVjb3JhdGlvbnMpIH0KICAgICAsIG1fd2F2eU9mZnNldCB7
IHdhdnlPZmZzZXRGcm9tRGVjb3JhdGlvbigpIH0KICAgICAsIG1faXNQcmludGluZyB7IHJlbmRl
cmVyLmRvY3VtZW50KCkucHJpbnRpbmcoKSB9Ci0gICAgLCBtX3N0eWxlcyB7IHN0eWxlcyA/ICpX
VEZNb3ZlKHN0eWxlcykgOiBzdHlsZXNGb3JSZW5kZXJlcihyZW5kZXJlciwgZGVjb3JhdGlvbnMs
IGlzRmlyc3RMaW5lLCBOT1BTRVVETykgfQorICAgICwgbV9zdHlsZXMgeyBzdHlsZXMgPyAqV1RG
TW92ZShzdHlsZXMpIDogc3R5bGVzRm9yUmVuZGVyZXIocmVuZGVyZXIsIGRlY29yYXRpb25zLCBp
c0ZpcnN0TGluZSwgUHNldWRvSWQ6Ok5vbmUpIH0KICAgICAsIG1fbGluZVN0eWxlIHsgaXNGaXJz
dExpbmUgPyByZW5kZXJlci5maXJzdExpbmVTdHlsZSgpIDogcmVuZGVyZXIuc3R5bGUoKSB9CiB7
CiB9CkBAIC0yNzMsMjEgKzI3MywyMSBAQCB2b2lkIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFp
bnRUZXh0RGVjCiAKICAgICAgICAgYXV0byBzdHJva2VTdHlsZSA9IHRleHREZWNvcmF0aW9uU3R5
bGVUb1N0cm9rZVN0eWxlKHN0eWxlKTsKIAotICAgICAgICBpZiAoc3R5bGUgPT0gVGV4dERlY29y
YXRpb25TdHlsZVdhdnkpCisgICAgICAgIGlmIChzdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxl
OjpXYXZ5KQogICAgICAgICAgICAgc3Ryb2tlV2F2eVRleHREZWNvcmF0aW9uKG1fY29udGV4dCwg
c3RhcnQsIGVuZCwgdGV4dERlY29yYXRpb25UaGlja25lc3MsIG1fbGluZVN0eWxlLmNvbXB1dGVk
Rm9udFBpeGVsU2l6ZSgpKTsKICAgICAgICAgZWxzZSBpZiAoZGVjb3JhdGlvbiA9PSBUZXh0RGVj
b3JhdGlvblVuZGVybGluZSB8fCBkZWNvcmF0aW9uID09IFRleHREZWNvcmF0aW9uT3ZlcmxpbmUp
IHsKICNpZiBFTkFCTEUoQ1NTM19URVhUX0RFQ09SQVRJT05fU0tJUF9JTkspCiAgICAgICAgICAg
ICBpZiAoKG1fbGluZVN0eWxlLnRleHREZWNvcmF0aW9uU2tpcCgpID09IFRleHREZWNvcmF0aW9u
U2tpcEluayB8fCBtX2xpbmVTdHlsZS50ZXh0RGVjb3JhdGlvblNraXAoKSA9PSBUZXh0RGVjb3Jh
dGlvblNraXBBdXRvKSAmJiBtX2lzSG9yaXpvbnRhbCkgewogICAgICAgICAgICAgICAgIGlmICgh
bV9jb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgZHJhd1Nr
aXBJbmtVbmRlcmxpbmUobV9jb250ZXh0LCAqbV9mb250LCB0ZXh0UnVuLCB0ZXh0T3JpZ2luLCBs
b2NhbE9yaWdpbiwgb2Zmc2V0LCBtX3dpZHRoLCBtX2lzUHJpbnRpbmcsIHN0eWxlID09IFRleHRE
ZWNvcmF0aW9uU3R5bGVEb3VibGUsIHN0cm9rZVN0eWxlKTsKKyAgICAgICAgICAgICAgICAgICAg
ZHJhd1NraXBJbmtVbmRlcmxpbmUobV9jb250ZXh0LCAqbV9mb250LCB0ZXh0UnVuLCB0ZXh0T3Jp
Z2luLCBsb2NhbE9yaWdpbiwgb2Zmc2V0LCBtX3dpZHRoLCBtX2lzUHJpbnRpbmcsIHN0eWxlID09
IFRleHREZWNvcmF0aW9uU3R5bGU6OkRvdWJsZSwgc3Ryb2tlU3R5bGUpOwogICAgICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gc3VwcG9ydCB0ZXh0LWRl
Y29yYXRpb24tc2tpcDogbm9uZS4KICNlbmRpZgotICAgICAgICAgICAgICAgIG1fY29udGV4dC5k
cmF3TGluZUZvclRleHQoc3RhcnQsIG1fd2lkdGgsIG1faXNQcmludGluZywgc3R5bGUgPT0gVGV4
dERlY29yYXRpb25TdHlsZURvdWJsZSwgc3Ryb2tlU3R5bGUpOworICAgICAgICAgICAgICAgIG1f
Y29udGV4dC5kcmF3TGluZUZvclRleHQoc3RhcnQsIG1fd2lkdGgsIG1faXNQcmludGluZywgc3R5
bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6RG91YmxlLCBzdHJva2VTdHlsZSk7CiAgICAgICAg
ICAgICAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChkZWNvcmF0aW9uID09
IFRleHREZWNvcmF0aW9uTGluZVRocm91Z2gpOwotICAgICAgICAgICAgbV9jb250ZXh0LmRyYXdM
aW5lRm9yVGV4dChzdGFydCwgbV93aWR0aCwgbV9pc1ByaW50aW5nLCBzdHlsZSA9PSBUZXh0RGVj
b3JhdGlvblN0eWxlRG91YmxlLCBzdHJva2VTdHlsZSk7CisgICAgICAgICAgICBtX2NvbnRleHQu
ZHJhd0xpbmVGb3JUZXh0KHN0YXJ0LCBtX3dpZHRoLCBtX2lzUHJpbnRpbmcsIHN0eWxlID09IFRl
eHREZWNvcmF0aW9uU3R5bGU6OkRvdWJsZSwgc3Ryb2tlU3R5bGUpOwogICAgICAgICB9CiAgICAg
fTsKIApAQCAtMzM2LDEzICszMzYsMTMgQEAgdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBh
aW50VGV4dERlYwogICAgICAgICAvLyBUaGVzZSBkZWNvcmF0aW9ucyBzaG91bGQgbWF0Y2ggdGhl
IHZpc3VhbCBvdmVyZmxvd3MgY29tcHV0ZWQgaW4gdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9u
cygpLgogICAgICAgICBpZiAobV9kZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvblVu
ZGVybGluZSkpIHsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSBjb21wdXRlVW5kZXJsaW5lT2Zm
c2V0KG1fbGluZVN0eWxlLnRleHRVbmRlcmxpbmVQb3NpdGlvbigpLCBtX2xpbmVTdHlsZS5mb250
TWV0cmljcygpLCBtX2lubGluZVRleHRCb3gsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKTsKLSAg
ICAgICAgICAgIGZsb2F0IHdhdnlPZmZzZXQgPSBtX3N0eWxlcy51bmRlcmxpbmVTdHlsZSA9PSBU
ZXh0RGVjb3JhdGlvblN0eWxlV2F2eSA/IG1fd2F2eU9mZnNldCA6IDA7CisgICAgICAgICAgICBm
bG9hdCB3YXZ5T2Zmc2V0ID0gbV9zdHlsZXMudW5kZXJsaW5lU3R5bGUgPT0gVGV4dERlY29yYXRp
b25TdHlsZTo6V2F2eSA/IG1fd2F2eU9mZnNldCA6IDA7CiAgICAgICAgICAgICBGbG9hdFBvaW50
IHN0YXJ0ID0gbG9jYWxPcmlnaW4gKyBGbG9hdFNpemUoMCwgb2Zmc2V0ICsgd2F2eU9mZnNldCk7
CiAgICAgICAgICAgICBGbG9hdFBvaW50IGVuZCA9IGxvY2FsT3JpZ2luICsgRmxvYXRTaXplKG1f
d2lkdGgsIG9mZnNldCArIHdhdnlPZmZzZXQpOwogICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9u
KFRleHREZWNvcmF0aW9uVW5kZXJsaW5lLCBtX3N0eWxlcy51bmRlcmxpbmVTdHlsZSwgbV9zdHls
ZXMudW5kZXJsaW5lQ29sb3IsIHN0YXJ0LCBlbmQsIG9mZnNldCk7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKG1fZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25PdmVybGluZSkpIHsK
LSAgICAgICAgICAgIGZsb2F0IHdhdnlPZmZzZXQgPSBtX3N0eWxlcy5vdmVybGluZVN0eWxlID09
IFRleHREZWNvcmF0aW9uU3R5bGVXYXZ5ID8gbV93YXZ5T2Zmc2V0IDogMDsKKyAgICAgICAgICAg
IGZsb2F0IHdhdnlPZmZzZXQgPSBtX3N0eWxlcy5vdmVybGluZVN0eWxlID09IFRleHREZWNvcmF0
aW9uU3R5bGU6OldhdnkgPyBtX3dhdnlPZmZzZXQgOiAwOwogICAgICAgICAgICAgRmxvYXRQb2lu
dCBzdGFydCA9IGxvY2FsT3JpZ2luIC0gRmxvYXRTaXplKDAsIHdhdnlPZmZzZXQpOwogICAgICAg
ICAgICAgRmxvYXRQb2ludCBlbmQgPSBsb2NhbE9yaWdpbiArIEZsb2F0U2l6ZShtX3dpZHRoLCAt
d2F2eU9mZnNldCk7CiAgICAgICAgICAgICBwYWludERlY29yYXRpb24oVGV4dERlY29yYXRpb25P
dmVybGluZSwgbV9zdHlsZXMub3ZlcmxpbmVTdHlsZSwgbV9zdHlsZXMub3ZlcmxpbmVDb2xvciwg
c3RhcnQsIGVuZCwgMCk7CkBAIC00MDEsNyArNDAxLDcgQEAgc3RhdGljIHZvaWQgY29sbGVjdFN0
eWxlc0ZvclJlbmRlcmVyKFRleAogICAgIH07CiAKICAgICBhdXRvIHN0eWxlRm9yUmVuZGVyZXIg
PSBbJl0gKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpIC0+IGNvbnN0IFJlbmRlclN0eWxl
JiB7Ci0gICAgICAgIGlmIChwc2V1ZG9JZCAhPSBOT1BTRVVETyAmJiByZW5kZXJlci5zdHlsZSgp
Lmhhc1BzZXVkb1N0eWxlKHBzZXVkb0lkKSkgeworICAgICAgICBpZiAocHNldWRvSWQgIT0gUHNl
dWRvSWQ6Ok5vbmUgJiYgcmVuZGVyZXIuc3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShwc2V1ZG9JZCkp
IHsKICAgICAgICAgICAgIGlmIChpczxSZW5kZXJUZXh0PihyZW5kZXJlcikpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuICpkb3duY2FzdDxSZW5kZXJUZXh0PihyZW5kZXJlcikuZ2V0Q2FjaGVkUHNl
dWRvU3R5bGUocHNldWRvSWQpOwogICAgICAgICAgICAgcmV0dXJuICpkb3duY2FzdDxSZW5kZXJF
bGVtZW50PihyZW5kZXJlcikuZ2V0Q2FjaGVkUHNldWRvU3R5bGUocHNldWRvSWQpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaAko
cmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0
aW9uUGFpbnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAg
ICAgICAgVGV4dERlY29yYXRpb25TdHlsZSBsaW5ldGhyb3VnaFN0eWxlOwogICAgIH07CiAgICAg
Ly8gRklYTUU6IE1ha2UgcmVxdWVzdGVkRGVjb3JhdGlvbnMgYW4gT3B0aW9uU2V0PFRleHREZWNv
cmF0aW9uPi4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2
ODQ0Pi4KLSAgICBzdGF0aWMgU3R5bGVzIHN0eWxlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9i
amVjdCYsIHVuc2lnbmVkIHJlcXVlc3RlZERlY29yYXRpb25zLCBib29sIGZpcnN0TGluZVN0eWxl
ID0gZmFsc2UsIFBzZXVkb0lkID0gTk9QU0VVRE8pOworICAgIHN0YXRpYyBTdHlsZXMgc3R5bGVz
Rm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0JiwgdW5zaWduZWQgcmVxdWVzdGVkRGVjb3Jh
dGlvbnMsIGJvb2wgZmlyc3RMaW5lU3R5bGUgPSBmYWxzZSwgUHNldWRvSWQgPSBQc2V1ZG9JZDo6
Tm9uZSk7CiAKIHByaXZhdGU6CiAgICAgR3JhcGhpY3NDb250ZXh0JiBtX2NvbnRleHQ7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaAko
cmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtp
bmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMSw4ICsxMTEsOCBAQCBwdWJsaWM6CiAg
ICAgICAgICwgbV9yZW5kZXJUZXh0SW5mbyhpblJlbmRlclRleHRJbmZvKQogICAgICAgICAsIG1f
bGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZShpbkxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUpCiAg
ICAgICAgICwgbV93aWR0aChsaW5lV2lkdGgpCi0gICAgICAgICwgbV9jdXJyV1MoTk9STUFMKQot
ICAgICAgICAsIG1fbGFzdFdTKE5PUk1BTCkKKyAgICAgICAgLCBtX2N1cnJXUyhXaGl0ZVNwYWNl
OjpOb3JtYWwpCisgICAgICAgICwgbV9sYXN0V1MoV2hpdGVTcGFjZTo6Tm9ybWFsKQogICAgICAg
ICAsIG1fcHJlc2VydmVzTmV3bGluZShmYWxzZSkKICAgICAgICAgLCBtX2F0U3RhcnQodHJ1ZSkK
ICAgICAgICAgLCBtX2lnbm9yaW5nU3BhY2VzKGZhbHNlKQpAQCAtMTYxLDcgKzE2MSw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgY2xlYXJMaW5lQnJlYWtJZkZpdHNPbkxpbmUoYm9vbCBpZ25vcmlu
Z1RyYWlsaW5nU3BhY2UgPSBmYWxzZSkKICAgICB7Ci0gICAgICAgIGlmIChtX3dpZHRoLmZpdHNP
bkxpbmUoaWdub3JpbmdUcmFpbGluZ1NwYWNlKSB8fCBtX2xhc3RXUyA9PSBOT1dSQVAgfHwgbV9o
YW5nc0F0RW5kKQorICAgICAgICBpZiAobV93aWR0aC5maXRzT25MaW5lKGlnbm9yaW5nVHJhaWxp
bmdTcGFjZSkgfHwgbV9sYXN0V1MgPT0gV2hpdGVTcGFjZTo6Tm9XcmFwIHx8IG1faGFuZ3NBdEVu
ZCkKICAgICAgICAgICAgIG1fbGluZUJyZWFrSGlzdG9yeS5jbGVhcigpOwogICAgICAgICBtX2hh
bmdzQXRFbmQgPSBmYWxzZTsKICAgICB9CkBAIC0yNjgsMTMgKzI2OCwxMyBAQCBwcml2YXRlOgog
CiAgICAgTGluZVdpZHRoIG1fd2lkdGg7CiAKLSAgICBFV2hpdGVTcGFjZSBtX2N1cnJXUzsKLSAg
ICBFV2hpdGVTcGFjZSBtX2xhc3RXUzsKKyAgICBXaGl0ZVNwYWNlIG1fY3VycldTOworICAgIFdo
aXRlU3BhY2UgbV9sYXN0V1M7CiAKICAgICBib29sIG1fcHJlc2VydmVzTmV3bGluZTsKICAgICBi
b29sIG1fYXRTdGFydDsKIAotICAgIC8vIFRoaXMgdmFyaWFibGUgaXMgdXNlZCBvbmx5IGlmIHdo
aXRlc3BhY2UgaXNuJ3Qgc2V0IHRvIFBSRSwgYW5kIGl0IHRlbGxzIHVzIHdoZXRoZXIKKyAgICAv
LyBUaGlzIHZhcmlhYmxlIGlzIHVzZWQgb25seSBpZiB3aGl0ZXNwYWNlIGlzbid0IHNldCB0byBX
aGl0ZVNwYWNlOjpQcmUsIGFuZCBpdCB0ZWxscyB1cyB3aGV0aGVyCiAgICAgLy8gb3Igbm90IHdl
IGFyZSBjdXJyZW50bHkgaWdub3Jpbmcgd2hpdGVzcGFjZS4KICAgICBib29sIG1faWdub3JpbmdT
cGFjZXM7CiAKQEAgLTM2NSw3ICszNjUsNyBAQCBpbmxpbmUgdm9pZCBCcmVha2luZ0NvbnRleHQ6
OmhhbmRsZUJSKENsCiAgICAgICAgIC8vIElmIHdlIHdlcmUgcHJlY2VkZWQgYnkgY29sbGFwc2lu
ZyBzcGFjZSBhbmQgYXJlIGluIGEgcmlnaHQtYWxpZ25lZCBjb250YWluZXIgd2UgbmVlZCB0byBl
bnN1cmUgdGhlIHNwYWNlIGdldHMKICAgICAgICAgLy8gY29sbGFwc2VkIGF3YXkgc28gdGhhdCBp
dCBkb2Vzbid0IHB1c2ggdGhlIHRleHQgb3V0IGZyb20gdGhlIGNvbnRhaW5lcidzIHJpZ2h0LWhh
bmQgZWRnZS4KICAgICAgICAgLy8gRklYTUU6IERvIHRoaXMgcmVnYXJkbGVzcyBvZiB0aGUgY29u
dGFpbmVyJ3MgYWxpZ25tZW50IC0gd2lsbCByZXF1aXJlIHJlYmFzZWxpbmluZyBhIGxvdCBvZiB0
ZXN0IHJlc3VsdHMuCi0gICAgICAgIGVsc2UgaWYgKG1faWdub3JpbmdTcGFjZXMgJiYgKG1fYmxv
Y2tTdHlsZS50ZXh0QWxpZ24oKSA9PSBSSUdIVCB8fCBtX2Jsb2NrU3R5bGUudGV4dEFsaWduKCkg
PT0gV0VCS0lUX1JJR0hUKSkKKyAgICAgICAgZWxzZSBpZiAobV9pZ25vcmluZ1NwYWNlcyAmJiAo
bV9ibG9ja1N0eWxlLnRleHRBbGlnbigpID09IFRleHRBbGlnbk1vZGU6OlJpZ2h0IHx8IG1fYmxv
Y2tTdHlsZS50ZXh0QWxpZ24oKSA9PSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRSaWdodCkpCiAgICAg
ICAgICAgICBtX2xpbmVXaGl0ZXNwYWNlQ29sbGFwc2luZ1N0YXRlLnN0b3BJZ25vcmluZ1NwYWNl
cyhJbmxpbmVJdGVyYXRvcigwLCBtX2N1cnJlbnQucmVuZGVyZXIoKSwgbV9jdXJyZW50Lm9mZnNl
dCgpKSk7CiAKICAgICAgICAgaWYgKCFtX2xpbmVJbmZvLmlzRW1wdHkoKSkKQEAgLTQzNyw3ICs0
MzcsNyBAQCBpbmxpbmUgdm9pZCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZU91dE9mCiAgICAgaWYg
KCFpc0lubGluZVR5cGUpCiAgICAgICAgIG1fYmxvY2suc2V0U3RhdGljSW5saW5lUG9zaXRpb25G
b3JDaGlsZChib3gsIG1fYmxvY2subG9naWNhbEhlaWdodCgpLCBtX2Jsb2NrLnN0YXJ0T2Zmc2V0
Rm9yQ29udGVudChtX2Jsb2NrLmxvZ2ljYWxIZWlnaHQoKSkpOwogICAgIGVsc2UgewotICAgICAg
ICAvLyBJZiBvdXIgb3JpZ2luYWwgZGlzcGxheSB3YXMgYW4gSU5MSU5FIHR5cGUsIHRoZW4gd2Ug
Y2FuIGRldGVybWluZSBvdXIgc3RhdGljIHkgcG9zaXRpb24gbm93LgorICAgICAgICAvLyBJZiBv
dXIgb3JpZ2luYWwgZGlzcGxheSB3YXMgYW4gRGlzcGxheVR5cGU6OklubGluZSB0eXBlLCB0aGVu
IHdlIGNhbiBkZXRlcm1pbmUgb3VyIHN0YXRpYyB5IHBvc2l0aW9uIG5vdy4KICAgICAgICAgYm94
LmxheWVyKCktPnNldFN0YXRpY0Jsb2NrUG9zaXRpb24obV9ibG9jay5sb2dpY2FsSGVpZ2h0KCkp
OwogICAgIH0KIApAQCAtNzYyLDcgKzc2Miw3IEBAIGlubGluZSBib29sIEJyZWFraW5nQ29udGV4
dDo6aGFuZGxlVGV4dCgKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSBsaW5lU3R5bGUo
cmVuZGVyVGV4dCwgbV9saW5lSW5mbyk7CiAgICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBz
dHlsZS5mb250Q2FzY2FkZSgpOwogICAgIGJvb2wgaXNGaXhlZFBpdGNoID0gZm9udC5pc0ZpeGVk
UGl0Y2goKTsKLSAgICBib29sIGNhbkh5cGhlbmF0ZSA9IHN0eWxlLmh5cGhlbnMoKSA9PSBIeXBo
ZW5zQXV0byAmJiBXZWJDb3JlOjpjYW5IeXBoZW5hdGUoc3R5bGUubG9jYWxlKCkpOworICAgIGJv
b2wgY2FuSHlwaGVuYXRlID0gc3R5bGUuaHlwaGVucygpID09IEh5cGhlbnM6OkF1dG8gJiYgV2Vi
Q29yZTo6Y2FuSHlwaGVuYXRlKHN0eWxlLmxvY2FsZSgpKTsKICAgICBib29sIGNhbkhhbmdQdW5j
dHVhdGlvbkF0U3RhcnQgPSBzdHlsZS5oYW5naW5nUHVuY3R1YXRpb24oKSAmIEZpcnN0SGFuZ2lu
Z1B1bmN0dWF0aW9uOwogICAgIGJvb2wgY2FuSGFuZ1B1bmN0dWF0aW9uQXRFbmQgPSBzdHlsZS5o
YW5naW5nUHVuY3R1YXRpb24oKSAmIExhc3RIYW5naW5nUHVuY3R1YXRpb247CiAgICAgYm9vbCBj
YW5IYW5nU3RvcE9yQ29tbWFBdExpbmVFbmQgPSBzdHlsZS5oYW5naW5nUHVuY3R1YXRpb24oKSAm
IEFsbG93RW5kSGFuZ2luZ1B1bmN0dWF0aW9uOwpAQCAtNzc4LDcgKzc3OCw3IEBAIGlubGluZSBi
b29sIEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dCgKICAgICBib29sIGJyZWFrTkJTUCA9IG1f
YXV0b1dyYXAgJiYgbV9jdXJyZW50U3R5bGUtPm5ic3BNb2RlKCkgPT0gTkJTUE1vZGU6OlNwYWNl
OwogICAgIC8vIEF1dG8td3JhcHBpbmcgdGV4dCBzaG91bGQgd3JhcCBpbiB0aGUgbWlkZGxlIG9m
IGEgd29yZCBvbmx5IGlmIGl0IGNvdWxkIG5vdCB3cmFwIGJlZm9yZSB0aGUgd29yZCwKICAgICAv
LyB3aGljaCBpcyBvbmx5IHBvc3NpYmxlIGlmIHRoZSB3b3JkIGlzIHRoZSBmaXJzdCB0aGluZyBv
biB0aGUgbGluZS4KLSAgICBib29sIGJyZWFrV29yZHMgPSBtX2N1cnJlbnRTdHlsZS0+YnJlYWtX
b3JkcygpICYmICgobV9hdXRvV3JhcCAmJiAoIW1fd2lkdGguY29tbWl0dGVkV2lkdGgoKSAmJiAh
bV93aWR0aC5oYXNDb21taXR0ZWRSZXBsYWNlZCgpKSkgfHwgbV9jdXJyV1MgPT0gUFJFKTsKKyAg
ICBib29sIGJyZWFrV29yZHMgPSBtX2N1cnJlbnRTdHlsZS0+YnJlYWtXb3JkcygpICYmICgobV9h
dXRvV3JhcCAmJiAoIW1fd2lkdGguY29tbWl0dGVkV2lkdGgoKSAmJiAhbV93aWR0aC5oYXNDb21t
aXR0ZWRSZXBsYWNlZCgpKSkgfHwgbV9jdXJyV1MgPT0gV2hpdGVTcGFjZTo6UHJlKTsKICAgICBi
b29sIG1pZFdvcmRCcmVhayA9IGZhbHNlOwogICAgIGJvb2wgYnJlYWtBbGwgPSBtX2N1cnJlbnRT
dHlsZS0+d29yZEJyZWFrKCkgPT0gV29yZEJyZWFrOjpCcmVha0FsbCAmJiBtX2F1dG9XcmFwOwog
ICAgIGJvb2wga2VlcEFsbFdvcmRzID0gbV9jdXJyZW50U3R5bGUtPndvcmRCcmVhaygpID09IFdv
cmRCcmVhazo6S2VlcEFsbDsKQEAgLTgzMCw3ICs4MzAsNyBAQCBpbmxpbmUgYm9vbCBCcmVha2lu
Z0NvbnRleHQ6OmhhbmRsZVRleHQoCiAgICAgICAgIGlmICghbV9jb2xsYXBzZVdoaXRlU3BhY2Ug
fHwgIW1fY3VycmVudENoYXJhY3RlcklzU3BhY2UpCiAgICAgICAgICAgICBtX2xpbmVJbmZvLnNl
dEVtcHR5KGZhbHNlLCAmbV9ibG9jaywgJm1fd2lkdGgpOwogCi0gICAgICAgIGlmIChjID09IHNv
ZnRIeXBoZW4gJiYgbV9hdXRvV3JhcCAmJiAhaHlwaGVuV2lkdGggJiYgc3R5bGUuaHlwaGVucygp
ICE9IEh5cGhlbnNOb25lKSB7CisgICAgICAgIGlmIChjID09IHNvZnRIeXBoZW4gJiYgbV9hdXRv
V3JhcCAmJiAhaHlwaGVuV2lkdGggJiYgc3R5bGUuaHlwaGVucygpICE9IEh5cGhlbnM6Ok5vbmUp
IHsKICAgICAgICAgICAgIGh5cGhlbldpZHRoID0gbWVhc3VyZUh5cGhlbldpZHRoKHJlbmRlclRl
eHQsIGZvbnQsICZmYWxsYmFja0ZvbnRzKTsKICAgICAgICAgICAgIG1fd2lkdGguYWRkVW5jb21t
aXR0ZWRXaWR0aChoeXBoZW5XaWR0aCk7CiAgICAgICAgIH0KQEAgLTgzOSw3ICs4MzksNyBAQCBp
bmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQoCiAKICAgICAgICAgbV9jdXJy
ZW50Q2hhcmFjdGVySXNXUyA9IG1fY3VycmVudENoYXJhY3RlcklzU3BhY2UgfHwgKGJyZWFrTkJT
UCAmJiBjID09IG5vQnJlYWtTcGFjZSk7CiAKLSAgICAgICAgaWYgKChicmVha0FsbCB8fCBicmVh
a1dvcmRzKSAmJiAhbWlkV29yZEJyZWFrICYmICghbV9jdXJyZW50Q2hhcmFjdGVySXNTcGFjZSB8
fCBzdHlsZS53aGl0ZVNwYWNlKCkgIT0gUFJFX1dSQVApKSB7CisgICAgICAgIGlmICgoYnJlYWtB
bGwgfHwgYnJlYWtXb3JkcykgJiYgIW1pZFdvcmRCcmVhayAmJiAoIW1fY3VycmVudENoYXJhY3Rl
cklzU3BhY2UgfHwgc3R5bGUud2hpdGVTcGFjZSgpICE9IFdoaXRlU3BhY2U6OlByZVdyYXApKSB7
CiAgICAgICAgICAgICB3cmFwVyArPSBjaGFyV2lkdGg7CiAgICAgICAgICAgICBib29sIG1pZFdv
cmRCcmVha0lzQmVmb3JlU3Vycm9nYXRlUGFpciA9IFUxNl9JU19MRUFEKGMpICYmIFUxNl9JU19U
UkFJTChyZW5kZXJUZXh0LmNoYXJhY3RlckF0KG1fY3VycmVudC5vZmZzZXQoKSArIDEpKTsKICAg
ICAgICAgICAgIGNoYXJXaWR0aCA9IHRleHRXaWR0aChyZW5kZXJUZXh0LCBtX2N1cnJlbnQub2Zm
c2V0KCksIG1pZFdvcmRCcmVha0lzQmVmb3JlU3Vycm9nYXRlUGFpciA/IDIgOiAxLCBmb250LCBt
X3dpZHRoLmNvbW1pdHRlZFdpZHRoKCkgKyB3cmFwVywgaXNGaXhlZFBpdGNoLCBtX2NvbGxhcHNl
V2hpdGVTcGFjZSwgZmFsbGJhY2tGb250cywgdGV4dExheW91dCk7CkBAIC04NDcsOCArODQ3LDgg
QEAgaW5saW5lIGJvb2wgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0KAogICAgICAgICB9CiAK
ICAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uID0g
bV9jdXJyZW50Lm5leHRCcmVha2FibGVQb3NpdGlvbigpOwotICAgICAgICBib29sIGJldHdlZW5X
b3JkcyA9IGMgPT0gJ1xuJyB8fCAobV9jdXJyV1MgIT0gUFJFICYmICFtX2F0U3RhcnQgJiYgaXNC
cmVha2FibGUobV9yZW5kZXJUZXh0SW5mby5saW5lQnJlYWtJdGVyYXRvciwgbV9jdXJyZW50Lm9m
ZnNldCgpLCBuZXh0QnJlYWthYmxlUG9zaXRpb24sIGJyZWFrTkJTUCwgY2FuVXNlTGluZUJyZWFr
U2hvcnRjdXQsIGtlZXBBbGxXb3JkcykKLSAgICAgICAgICAgICYmIChzdHlsZS5oeXBoZW5zKCkg
IT0gSHlwaGVuc05vbmUgfHwgKG1fY3VycmVudC5wcmV2aW91c0luU2FtZU5vZGUoKSAhPSBzb2Z0
SHlwaGVuKSkpOworICAgICAgICBib29sIGJldHdlZW5Xb3JkcyA9IGMgPT0gJ1xuJyB8fCAobV9j
dXJyV1MgIT0gV2hpdGVTcGFjZTo6UHJlICYmICFtX2F0U3RhcnQgJiYgaXNCcmVha2FibGUobV9y
ZW5kZXJUZXh0SW5mby5saW5lQnJlYWtJdGVyYXRvciwgbV9jdXJyZW50Lm9mZnNldCgpLCBuZXh0
QnJlYWthYmxlUG9zaXRpb24sIGJyZWFrTkJTUCwgY2FuVXNlTGluZUJyZWFrU2hvcnRjdXQsIGtl
ZXBBbGxXb3JkcykKKyAgICAgICAgICAgICYmIChzdHlsZS5oeXBoZW5zKCkgIT0gSHlwaGVuczo6
Tm9uZSB8fCAobV9jdXJyZW50LnByZXZpb3VzSW5TYW1lTm9kZSgpICE9IHNvZnRIeXBoZW4pKSk7
CiAgICAgICAgIG1fY3VycmVudC5zZXROZXh0QnJlYWthYmxlUG9zaXRpb24obmV4dEJyZWFrYWJs
ZVBvc2l0aW9uKTsKICAgICAgICAgCiAgICAgICAgIGlmIChjYW5IYW5nU3RvcE9yQ29tbWFBdExp
bmVFbmQgJiYgcmVuZGVyVGV4dC5pc0hhbmdhYmxlU3RvcE9yQ29tbWEoYykgJiYgbV93aWR0aC5m
aXRzT25MaW5lKCkpIHsKQEAgLTk0Nyw3ICs5NDcsNyBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0Nv
bnRleHQ6OmhhbmRsZVRleHQoCiAgICAgICAgICAgICAgICAgICAgICAgICB3b3JkTWVhc3VyZW1l
bnQuZW5kT2Zmc2V0ID0gbV9saW5lQnJlYWtIaXN0b3J5Lm9mZnNldCgpOwogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBsYXN0IGJyZWFr
aW5nIHBvc2l0aW9uIGlzIGEgc29mdC1oeXBoZW4uCi0gICAgICAgICAgICAgICAgICAgIGlmICgh
aHlwaGVuYXRlZCAmJiBzdHlsZS5oeXBoZW5zKCkgIT0gSHlwaGVuc05vbmUpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCFoeXBoZW5hdGVkICYmIHN0eWxlLmh5cGhlbnMoKSAhPSBIeXBoZW5z
OjpOb25lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBsYXN0QnJlYWtpbmdQb3NpdG9uOwogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlckF0QnJlYWtpbmdQb3NpdGlvbiA9IG51bGxwdHI7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAobV9saW5lQnJlYWtIaXN0b3J5Lm9mZnNldCgpIHx8IG1fbGlu
ZUJyZWFrSGlzdG9yeS5uZXh0QnJlYWthYmxlUG9zaXRpb24oKSkgewpAQCAtMTA3MSw3ICsxMDcx
LDcgQEAgaW5saW5lIGJvb2wgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0KAogICAgICAgICAg
ICAgLy8gU3BhY2VzIGFmdGVyIHJpZ2h0LWFsaWduZWQgdGV4dCBhbmQgYmVmb3JlIGEgbGluZS1i
cmVhayBnZXQgY29sbGFwc2VkIGF3YXkgY29tcGxldGVseSBzbyB0aGF0IHRoZSB0cmFpbGluZwog
ICAgICAgICAgICAgLy8gc3BhY2UgZG9lc24ndCBzZWVtIHRvIHB1c2ggdGhlIHRleHQgb3V0IGZy
b20gdGhlIHJpZ2h0LWhhbmQgZWRnZS4KICAgICAgICAgICAgIC8vIEZJWE1FOiBEbyB0aGlzIHJl
Z2FyZGxlc3Mgb2YgdGhlIGNvbnRhaW5lcidzIGFsaWdubWVudCAtIHdpbGwgcmVxdWlyZSByZWJh
c2VsaW5pbmcgYSBsb3Qgb2YgdGVzdCByZXN1bHRzLgotICAgICAgICAgICAgaWYgKG1fbmV4dE9i
amVjdCAmJiBtX3N0YXJ0T2ZJZ25vcmVkU3BhY2VzLm9mZnNldCgpICYmIG1fbmV4dE9iamVjdC0+
aXNCUigpICYmIChtX2Jsb2NrU3R5bGUudGV4dEFsaWduKCkgPT0gUklHSFQgfHwgbV9ibG9ja1N0
eWxlLnRleHRBbGlnbigpID09IFdFQktJVF9SSUdIVCkpIHsKKyAgICAgICAgICAgIGlmIChtX25l
eHRPYmplY3QgJiYgbV9zdGFydE9mSWdub3JlZFNwYWNlcy5vZmZzZXQoKSAmJiBtX25leHRPYmpl
Y3QtPmlzQlIoKSAmJiAobV9ibG9ja1N0eWxlLnRleHRBbGlnbigpID09IFRleHRBbGlnbk1vZGU6
OlJpZ2h0IHx8IG1fYmxvY2tTdHlsZS50ZXh0QWxpZ24oKSA9PSBUZXh0QWxpZ25Nb2RlOjpXZWJL
aXRSaWdodCkpIHsKICAgICAgICAgICAgICAgICBtX3N0YXJ0T2ZJZ25vcmVkU3BhY2VzLnNldE9m
ZnNldChtX3N0YXJ0T2ZJZ25vcmVkU3BhY2VzLm9mZnNldCgpIC0gMSk7CiAgICAgICAgICAgICAg
ICAgLy8gSWYgdGhlcmUncyBqdXN0IGEgc2luZ2xlIHRyYWlsaW5nIHNwYWNlIHN0YXJ0IGlnbm9y
aW5nIGl0IG5vdyBzbyBpdCBjb2xsYXBzZXMgYXdheS4KICAgICAgICAgICAgICAgICBpZiAobV9j
dXJyZW50Lm9mZnNldCgpID09IHJlbmRlclRleHQudGV4dCgpLmxlbmd0aCgpIC0gMSkKQEAgLTEx
MzAsNyArMTEzMCw3IEBAIGlubGluZSBib29sIEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dCgK
ICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFoeXBoZW5hdGVkICYm
IG1fbGluZUJyZWFrSGlzdG9yeS5wcmV2aW91c0luU2FtZU5vZGUoKSA9PSBzb2Z0SHlwaGVuICYm
IHN0eWxlLmh5cGhlbnMoKSAhPSBIeXBoZW5zTm9uZSkgeworICAgICAgICBpZiAoIWh5cGhlbmF0
ZWQgJiYgbV9saW5lQnJlYWtIaXN0b3J5LnByZXZpb3VzSW5TYW1lTm9kZSgpID09IHNvZnRIeXBo
ZW4gJiYgc3R5bGUuaHlwaGVucygpICE9IEh5cGhlbnM6Ok5vbmUpIHsKICAgICAgICAgICAgIGh5
cGhlbmF0ZWQgPSB0cnVlOwogICAgICAgICAgICAgbV9hdEVuZCA9IHRydWU7CiAgICAgICAgIH0K
QEAgLTExNDcsNyArMTE0Nyw3IEBAIGlubGluZSBib29sIHRleHRCZWdpbnNXaXRoQnJlYWthYmxl
UG9zaXQKIGlubGluZSBib29sIEJyZWFraW5nQ29udGV4dDo6Y2FuQnJlYWtBdFRoaXNQb3NpdGlv
bigpCiB7CiAgICAgLy8gSWYgd2UgYXJlIG5vLXdyYXAgYW5kIGhhdmUgZm91bmQgYSBsaW5lLWJy
ZWFraW5nIG9wcG9ydHVuaXR5IGFscmVhZHkgdGhlbiB3ZSBzaG91bGQgdGFrZSBpdC4KLSAgICBp
ZiAobV93aWR0aC5jb21taXR0ZWRXaWR0aCgpICYmICFtX3dpZHRoLmZpdHNPbkxpbmUobV9jdXJy
ZW50Q2hhcmFjdGVySXNTcGFjZSkgJiYgbV9jdXJyV1MgPT0gTk9XUkFQKQorICAgIGlmIChtX3dp
ZHRoLmNvbW1pdHRlZFdpZHRoKCkgJiYgIW1fd2lkdGguZml0c09uTGluZShtX2N1cnJlbnRDaGFy
YWN0ZXJJc1NwYWNlKSAmJiBtX2N1cnJXUyA9PSBXaGl0ZVNwYWNlOjpOb1dyYXApCiAgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgLy8gQXZvaWQgYnJlYWtpbmcgb24gZW1wdHkgaW5saW5lcy4K
QEAgLTEyNTcsNyArMTI1Nyw3IEBAIGlubGluZSBJbmxpbmVJdGVyYXRvciBCcmVha2luZ0NvbnRl
eHQ6OmgKICAgICBpZiAobV9saW5lQnJlYWtIaXN0b3J5LmN1cnJlbnQoKSA9PSBtX3Jlc29sdmVy
LnBvc2l0aW9uKCkpIHsKICAgICAgICAgaWYgKCFtX2xpbmVCcmVha0hpc3RvcnkucmVuZGVyZXIo
KSB8fCAhbV9saW5lQnJlYWtIaXN0b3J5LnJlbmRlcmVyKCktPmlzQlIoKSkgewogICAgICAgICAg
ICAgLy8gd2UganVzdCBhZGQgYXMgbXVjaCBhcyBwb3NzaWJsZQotICAgICAgICAgICAgaWYgKG1f
YmxvY2tTdHlsZS53aGl0ZVNwYWNlKCkgPT0gUFJFICYmICFtX2N1cnJlbnQub2Zmc2V0KCkpIHsK
KyAgICAgICAgICAgIGlmIChtX2Jsb2NrU3R5bGUud2hpdGVTcGFjZSgpID09IFdoaXRlU3BhY2U6
OlByZSAmJiAhbV9jdXJyZW50Lm9mZnNldCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fbGFz
dE9iamVjdCkKICAgICAgICAgICAgICAgICAgICAgY29tbWl0TGluZUJyZWFrQXRDdXJyZW50V2lk
dGgoKm1fbGFzdE9iamVjdCwgbV9sYXN0T2JqZWN0LT5pc1RleHQoKSA/IG1fbGFzdE9iamVjdC0+
bGVuZ3RoKCkgOiAwKTsKICAgICAgICAgICAgICAgICBlbHNlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbGluZS9MaW5lSW5saW5lSGVhZGVycy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVJbmxpbmVIZWFkZXJzLmgJKHJldmlzaW9uIDIz
MjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVJbmxpbmVIZWFkZXJz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgaW5saW5lIGJvb2wgc2hvdWxkQ29s
bGFwc2VXaGl0ZVNwYWNlKGNvbgogICAgIC8vIElmIGEgc3BhY2UgKFUrMDAyMCkgYXQgdGhlIGVu
ZCBvZiBhIGxpbmUgaGFzICd3aGl0ZS1zcGFjZScgc2V0IHRvICdub3JtYWwnLCAnbm93cmFwJywg
b3IgJ3ByZS1saW5lJywgaXQgaXMgYWxzbyByZW1vdmVkLgogICAgIC8vIElmIHNwYWNlcyAoVSsw
MDIwKSBvciB0YWJzIChVKzAwMDkpIGF0IHRoZSBlbmQgb2YgYSBsaW5lIGhhdmUgJ3doaXRlLXNw
YWNlJyBzZXQgdG8gJ3ByZS13cmFwJywgVUFzIG1heSB2aXN1YWxseSBjb2xsYXBzZSB0aGVtLgog
ICAgIHJldHVybiBzdHlsZS0+Y29sbGFwc2VXaGl0ZVNwYWNlKCkKLSAgICAgICAgfHwgKHdoaXRl
c3BhY2VQb3NpdGlvbiA9PSBUcmFpbGluZ1doaXRlc3BhY2UgJiYgc3R5bGUtPndoaXRlU3BhY2Uo
KSA9PSBQUkVfV1JBUCAmJiAoIWxpbmVJbmZvLmlzRW1wdHkoKSB8fCAhbGluZUluZm8ucHJldmlv
dXNMaW5lQnJva2VDbGVhbmx5KCkpKTsKKyAgICAgICAgfHwgKHdoaXRlc3BhY2VQb3NpdGlvbiA9
PSBUcmFpbGluZ1doaXRlc3BhY2UgJiYgc3R5bGUtPndoaXRlU3BhY2UoKSA9PSBXaGl0ZVNwYWNl
OjpQcmVXcmFwICYmICghbGluZUluZm8uaXNFbXB0eSgpIHx8ICFsaW5lSW5mby5wcmV2aW91c0xp
bmVCcm9rZUNsZWFubHkoKSkpOwogfQogCiBpbmxpbmUgYm9vbCBza2lwTm9uQnJlYWtpbmdTcGFj
ZShjb25zdCBJbmxpbmVJdGVyYXRvciYgaXQsIGNvbnN0IExpbmVJbmZvJiBsaW5lSW5mbykKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVXaWR0aC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmNwcAkocmV2aXNp
b24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCBzdGF0aWMgYm9vbCBuZXdGbG9hdFNo
cmlua3NMaW5lKGNvbnN0IEZsCiAKICAgICAvLyBpbml0aWFsLWxldHRlciBmbG9hdCBhbHdheXMg
c2hyaW5rcyB0aGUgZmlyc3QgbGluZS4KICAgICBjb25zdCBhdXRvJiBzdHlsZSA9IG5ld0Zsb2F0
LnJlbmRlcmVyKCkuc3R5bGUoKTsKLSAgICBpZiAoaXNGaXJzdExpbmUgJiYgc3R5bGUuc3R5bGVU
eXBlKCkgPT0gRklSU1RfTEVUVEVSICYmICFzdHlsZS5pbml0aWFsTGV0dGVyKCkuaXNFbXB0eSgp
KQorICAgIGlmIChpc0ZpcnN0TGluZSAmJiBzdHlsZS5zdHlsZVR5cGUoKSA9PSBQc2V1ZG9JZDo6
Rmlyc3RMZXR0ZXIgJiYgIXN0eWxlLmluaXRpYWxMZXR0ZXIoKS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIHJldHVybiBmYWxzZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvTWF0aE9wZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhPcGVyYXRvci5jcHAJKHJldmlzaW9uIDIzMjEy
MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE9wZXJhdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzA4LDcgKzcwOCw3IEBAIHZvaWQgTWF0aE9wZXJhdG9yOjpwYWlu
dEhvcml6b250YWxHbHlwaEEKIAogdm9pZCBNYXRoT3BlcmF0b3I6OnBhaW50KGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSwgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQpCiB7Ci0gICAgaWYgKGluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSB8fCBp
bmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHN0eWxlLnZpc2liaWxpdHkoKSAh
PSBWSVNJQkxFKQorICAgIGlmIChpbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkgfHwg
aW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBzdHlsZS52aXNpYmlsaXR5KCkg
IT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gTWFrZSBh
IGNvcHkgb2YgdGhlIFBhaW50SW5mbyBiZWNhdXNlIGFwcGx5VHJhbnNmb3JtIHdpbGwgbW9kaWZ5
IGl0cyByZWN0LgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxGcmFjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNTUsNyArMjU1LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxGcmFjdGlv
bjo6cGFpbnQoUGFpbnRJbgogewogICAgIFJlbmRlck1hdGhNTEJsb2NrOjpwYWludChpbmZvLCBw
YWludE9mZnNldCk7CiAgICAgTGF5b3V0VW5pdCB0aGlja25lc3MgPSBsaW5lVGhpY2tuZXNzKCk7
Ci0gICAgaWYgKGluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNl
ICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lC
TEUgfHwgIWlzVmFsaWQoKSB8fCAhdGhpY2tuZXNzKQorICAgIGlmIChpbmZvLmNvbnRleHQoKS5w
YWludGluZ0Rpc2FibGVkKCkgfHwgaW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCB8
fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlIHx8ICFpc1ZhbGlk
KCkgfHwgIXRoaWNrbmVzcykKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50UG9pbnQgYWRqdXN0
ZWRQYWludE9mZnNldCA9IHJvdW5kZWRJbnRQb2ludChwYWludE9mZnNldCArIGxvY2F0aW9uKCkg
KyBMYXlvdXRQb2ludCgwLCBhc2NlbnRPdmVySG9yaXpvbnRhbEF4aXMoKSkpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNYXRoLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1hdGgu
Y3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTE1hdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHZv
aWQgUmVuZGVyTWF0aE1MTWF0aDo6bGF5b3V0QmxvY2soYm9vbCAKIHsKICAgICBBU1NFUlQobmVl
ZHNMYXlvdXQoKSk7CiAKLSAgICBpZiAoc3R5bGUoKS5kaXNwbGF5KCkgIT0gQkxPQ0spIHsKKyAg
ICBpZiAoc3R5bGUoKS5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6OkJsb2NrKSB7CiAgICAgICAg
IFJlbmRlck1hdGhNTFJvdzo6bGF5b3V0QmxvY2socmVsYXlvdXRDaGlsZHJlbiwgcGFnZUxvZ2lj
YWxIZWlnaHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHAJ
KHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MTWVuY2xvc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDcsNyArMjA3LDcgQEAg
dm9pZCBSZW5kZXJNYXRoTUxNZW5jbG9zZTo6cGFpbnQoUGFpbnRJbgogewogICAgIFJlbmRlck1h
dGhNTFJvdzo6cGFpbnQoaW5mbywgcGFpbnRPZmZzZXQpOwogCi0gICAgaWYgKGluZm8uY29udGV4
dCgpLnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3Jv
dW5kIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKGluZm8uY29u
dGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3Jl
Z3JvdW5kIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIExheW91dFVuaXQgdGhpY2tuZXNzID0gcnVsZVRoaWNrbmVz
cygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxS
b290LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFJvb3QuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NjgsNyArMjY4LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxSb290OjpwYWludChQYWludEluZm8mIAog
ewogICAgIFJlbmRlck1hdGhNTFJvdzo6cGFpbnQoaW5mbywgcGFpbnRPZmZzZXQpOwogCi0gICAg
aWYgKCFmaXJzdENoaWxkKCkgfHwgaW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpIHx8
IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgIWlzVmFsaWQoKSkKKyAgICBpZiAo
IWZpcnN0Q2hpbGQoKSB8fCBpbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkgfHwgc3R5
bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSB8fCAhaXNWYWxpZCgpKQog
ICAgICAgICByZXR1cm47CiAKICAgICAvLyBXZSBkcmF3IHRoZSByYWRpY2FsIG9wZXJhdG9yLgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxUb2tlbi5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTQs
NyArNTk0LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxUb2tlbjo6cGFpbnQoUGFpbnRJbmZvJgogICAg
IFJlbmRlck1hdGhNTEJsb2NrOjpwYWludChpbmZvLCBwYWludE9mZnNldCk7CiAKICAgICAvLyBG
SVhNRTogSW5zdGVhZCBvZiB1c2luZyBEcmF3R2x5cGgsIHdlIG1heSBjb25zaWRlciB1c2luZyB0
aGUgbW9yZSBnZW5lcmFsIFRleHRQYWludGVyIHNvIHRoYXQgd2UgY2FuIGFwcGx5IG1hdGh2YXJp
YW50IHRvIHN0cmluZ3Mgd2l0aCBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIGNoYXJhY3RlcnMgYW5k
IHByZXNlcnZlIGFkdmFuY2VkIENTUyBlZmZlY3RzICh0ZXh0LXNoYWRvdywgZXRjKS4KLSAgICBp
ZiAoaW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpIHx8IGluZm8ucGhhc2UgIT0gUGFp
bnRQaGFzZUZvcmVncm91bmQgfHwgc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCAh
bV9tYXRoVmFyaWFudENvZGVQb2ludCkKKyAgICBpZiAoaW5mby5jb250ZXh0KCkucGFpbnRpbmdE
aXNhYmxlZCgpIHx8IGluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQgfHwgc3R5bGUo
KS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSB8fCAhbV9tYXRoVmFyaWFudENv
ZGVQb2ludCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBtYXRoVmFyaWFudEdseXBoID0g
c3R5bGUoKS5mb250Q2FzY2FkZSgpLmdseXBoRGF0YUZvckNoYXJhY3RlcihtX21hdGhWYXJpYW50
Q29kZVBvaW50LnZhbHVlKCksIG1fbWF0aFZhcmlhbnRJc01pcnJvcmVkKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvQm94U2hhcGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvQm94U2hhcGUuY3BwCShyZXZpc2lvbiAyMzIx
MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL0JveFNoYXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBSb3VuZGVkUmVjdCBjb21wdXRlUm91bmRlZFJl
Y3RGb3JCb3hTaGFwCiB7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gcmVuZGVyZXIu
c3R5bGUoKTsKICAgICBzd2l0Y2ggKGJveCkgewotICAgIGNhc2UgTWFyZ2luQm94OiB7CisgICAg
Y2FzZSBDU1NCb3hUeXBlOjpNYXJnaW5Cb3g6IHsKICAgICAgICAgaWYgKCFzdHlsZS5oYXNCb3Jk
ZXJSYWRpdXMoKSkKICAgICAgICAgICAgIHJldHVybiBSb3VuZGVkUmVjdChyZW5kZXJlci5tYXJn
aW5Cb3hSZWN0KCksIFJvdW5kZWRSZWN0OjpSYWRpaSgpKTsKIApAQCAtNzUsMTggKzc1LDE4IEBA
IFJvdW5kZWRSZWN0IGNvbXB1dGVSb3VuZGVkUmVjdEZvckJveFNoYXAKICAgICAgICAgcmFkaWku
c2NhbGUoY2FsY0JvcmRlclJhZGlpQ29uc3RyYWludFNjYWxlRm9yKG1hcmdpbkJveCwgcmFkaWkp
KTsKICAgICAgICAgcmV0dXJuIFJvdW5kZWRSZWN0KG1hcmdpbkJveCwgcmFkaWkpOwogICAgIH0K
LSAgICBjYXNlIFBhZGRpbmdCb3g6CisgICAgY2FzZSBDU1NCb3hUeXBlOjpQYWRkaW5nQm94Ogog
ICAgICAgICByZXR1cm4gc3R5bGUuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKHJlbmRlcmVyLmJv
cmRlckJveFJlY3QoKSk7Ci0gICAgY2FzZSBDb250ZW50Qm94OgorICAgIGNhc2UgQ1NTQm94VHlw
ZTo6Q29udGVudEJveDoKICAgICAgICAgcmV0dXJuIHN0eWxlLmdldFJvdW5kZWRJbm5lckJvcmRl
ckZvcihyZW5kZXJlci5ib3JkZXJCb3hSZWN0KCksCiAgICAgICAgICAgICByZW5kZXJlci5wYWRk
aW5nVG9wKCkgKyByZW5kZXJlci5ib3JkZXJUb3AoKSwgcmVuZGVyZXIucGFkZGluZ0JvdHRvbSgp
ICsgcmVuZGVyZXIuYm9yZGVyQm90dG9tKCksCiAgICAgICAgICAgICByZW5kZXJlci5wYWRkaW5n
TGVmdCgpICsgcmVuZGVyZXIuYm9yZGVyTGVmdCgpLCByZW5kZXJlci5wYWRkaW5nUmlnaHQoKSAr
IHJlbmRlcmVyLmJvcmRlclJpZ2h0KCkpOwogICAgIC8vIGZpbGwsIHN0cm9rZSwgdmlldy1ib3gg
Y29tcHV0ZSB0byBib3JkZXItYm94IGZvciBIVE1MIGVsZW1lbnRzLgotICAgIGNhc2UgQm9yZGVy
Qm94OgotICAgIGNhc2UgRmlsbDoKLSAgICBjYXNlIFN0cm9rZToKLSAgICBjYXNlIFZpZXdCb3g6
Ci0gICAgY2FzZSBCb3hNaXNzaW5nOgorICAgIGNhc2UgQ1NTQm94VHlwZTo6Qm9yZGVyQm94Ogor
ICAgIGNhc2UgQ1NTQm94VHlwZTo6RmlsbDoKKyAgICBjYXNlIENTU0JveFR5cGU6OlN0cm9rZToK
KyAgICBjYXNlIENTU0JveFR5cGU6OlZpZXdCb3g6CisgICAgY2FzZSBDU1NCb3hUeXBlOjpCb3hN
aXNzaW5nOgogICAgICAgICByZXR1cm4gc3R5bGUuZ2V0Um91bmRlZEJvcmRlckZvcihyZW5kZXJl
ci5ib3JkZXJCb3hSZWN0KCkpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwCShyZXZpc2lvbiAyMzIx
MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MiwxMCArNzIsMTAgQEAgRmxvYXRTaXplIFNoYXBlT3V0
c2lkZUluZm86OnNoYXBlVG9SZW5kZQogCiBzdGF0aWMgaW5saW5lIENTU0JveFR5cGUgcmVmZXJl
bmNlQm94KGNvbnN0IFNoYXBlVmFsdWUmIHNoYXBlVmFsdWUpCiB7Ci0gICAgaWYgKHNoYXBlVmFs
dWUuY3NzQm94KCkgPT0gQm94TWlzc2luZykgeworICAgIGlmIChzaGFwZVZhbHVlLmNzc0JveCgp
ID09IENTU0JveFR5cGU6OkJveE1pc3NpbmcpIHsKICAgICAgICAgaWYgKHNoYXBlVmFsdWUudHlw
ZSgpID09IFNoYXBlVmFsdWU6OlR5cGU6OkltYWdlKQotICAgICAgICAgICAgcmV0dXJuIENvbnRl
bnRCb3g7Ci0gICAgICAgIHJldHVybiBNYXJnaW5Cb3g7CisgICAgICAgICAgICByZXR1cm4gQ1NT
Qm94VHlwZTo6Q29udGVudEJveDsKKyAgICAgICAgcmV0dXJuIENTU0JveFR5cGU6Ok1hcmdpbkJv
eDsKICAgICB9CiAgICAgcmV0dXJuIHNoYXBlVmFsdWUuY3NzQm94KCk7CiB9CkBAIC04NCwzMCAr
ODQsMzAgQEAgdm9pZCBTaGFwZU91dHNpZGVJbmZvOjpzZXRSZWZlcmVuY2VCb3hMbwogewogICAg
IGJvb2wgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUgPSBtX3JlbmRlcmVyLmNvbnRhaW5pbmdCbG9j
aygpLT5zdHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7CiAgICAgc3dpdGNoIChyZWZl
cmVuY2VCb3goKm1fcmVuZGVyZXIuc3R5bGUoKS5zaGFwZU91dHNpZGUoKSkpIHsKLSAgICBjYXNl
IE1hcmdpbkJveDoKKyAgICBjYXNlIENTU0JveFR5cGU6Ok1hcmdpbkJveDoKICAgICAgICAgaWYg
KGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKQogICAgICAgICAgICAgbmV3UmVmZXJlbmNlQm94TG9n
aWNhbFNpemUuZXhwYW5kKG1fcmVuZGVyZXIuaG9yaXpvbnRhbE1hcmdpbkV4dGVudCgpLCBtX3Jl
bmRlcmVyLnZlcnRpY2FsTWFyZ2luRXh0ZW50KCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBuZXdSZWZlcmVuY2VCb3hMb2dpY2FsU2l6ZS5leHBhbmQobV9yZW5kZXJlci52ZXJ0aWNhbE1h
cmdpbkV4dGVudCgpLCBtX3JlbmRlcmVyLmhvcml6b250YWxNYXJnaW5FeHRlbnQoKSk7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQm9yZGVyQm94OgorICAgIGNhc2UgQ1NTQm94VHlwZTo6Qm9y
ZGVyQm94OgogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBhZGRpbmdCb3g6CisgICAgY2FzZSBD
U1NCb3hUeXBlOjpQYWRkaW5nQm94OgogICAgICAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUpCiAgICAgICAgICAgICBuZXdSZWZlcmVuY2VCb3hMb2dpY2FsU2l6ZS5zaHJpbmsobV9yZW5k
ZXJlci5ob3Jpem9udGFsQm9yZGVyRXh0ZW50KCksIG1fcmVuZGVyZXIudmVydGljYWxCb3JkZXJF
eHRlbnQoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG5ld1JlZmVyZW5jZUJveExvZ2lj
YWxTaXplLnNocmluayhtX3JlbmRlcmVyLnZlcnRpY2FsQm9yZGVyRXh0ZW50KCksIG1fcmVuZGVy
ZXIuaG9yaXpvbnRhbEJvcmRlckV4dGVudCgpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBD
b250ZW50Qm94OgorICAgIGNhc2UgQ1NTQm94VHlwZTo6Q29udGVudEJveDoKICAgICAgICAgaWYg
KGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKQogICAgICAgICAgICAgbmV3UmVmZXJlbmNlQm94TG9n
aWNhbFNpemUuc2hyaW5rKG1fcmVuZGVyZXIuaG9yaXpvbnRhbEJvcmRlckFuZFBhZGRpbmdFeHRl
bnQoKSwgbV9yZW5kZXJlci52ZXJ0aWNhbEJvcmRlckFuZFBhZGRpbmdFeHRlbnQoKSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIG5ld1JlZmVyZW5jZUJveExvZ2ljYWxTaXplLnNocmluayht
X3JlbmRlcmVyLnZlcnRpY2FsQm9yZGVyQW5kUGFkZGluZ0V4dGVudCgpLCBtX3JlbmRlcmVyLmhv
cml6b250YWxCb3JkZXJBbmRQYWRkaW5nRXh0ZW50KCkpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIEZpbGw6Ci0gICAgY2FzZSBTdHJva2U6Ci0gICAgY2FzZSBWaWV3Qm94OgotICAgIGNhc2Ug
Qm94TWlzc2luZzoKKyAgICBjYXNlIENTU0JveFR5cGU6OkZpbGw6CisgICAgY2FzZSBDU1NCb3hU
eXBlOjpTdHJva2U6CisgICAgY2FzZSBDU1NCb3hUeXBlOjpWaWV3Qm94OgorICAgIGNhc2UgQ1NT
Qm94VHlwZTo6Qm94TWlzc2luZzoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KQEAgLTIyNCwxNCArMjI0LDIyIEBAIHN0YXRpYyBpbmxpbmUgTGF5
b3V0VW5pdCBib3JkZXJBbmRQYWRkaW4KIExheW91dFVuaXQgU2hhcGVPdXRzaWRlSW5mbzo6bG9n
aWNhbFRvcE9mZnNldCgpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChyZWZlcmVuY2VCb3goKm1fcmVu
ZGVyZXIuc3R5bGUoKS5zaGFwZU91dHNpZGUoKSkpIHsKLSAgICBjYXNlIE1hcmdpbkJveDogcmV0
dXJuIC1tX3JlbmRlcmVyLm1hcmdpbkJlZm9yZSgmbV9yZW5kZXJlci5jb250YWluaW5nQmxvY2so
KS0+c3R5bGUoKSk7Ci0gICAgY2FzZSBCb3JkZXJCb3g6IHJldHVybiBMYXlvdXRVbml0KCk7Ci0g
ICAgY2FzZSBQYWRkaW5nQm94OiByZXR1cm4gYm9yZGVyQmVmb3JlSW5Xcml0aW5nTW9kZShtX3Jl
bmRlcmVyLCBtX3JlbmRlcmVyLmNvbnRhaW5pbmdCbG9jaygpLT5zdHlsZSgpLndyaXRpbmdNb2Rl
KCkpOwotICAgIGNhc2UgQ29udGVudEJveDogcmV0dXJuIGJvcmRlckFuZFBhZGRpbmdCZWZvcmVJ
bldyaXRpbmdNb2RlKG1fcmVuZGVyZXIsIG1fcmVuZGVyZXIuY29udGFpbmluZ0Jsb2NrKCktPnN0
eWxlKCkud3JpdGluZ01vZGUoKSk7Ci0gICAgY2FzZSBGaWxsOiBicmVhazsKLSAgICBjYXNlIFN0
cm9rZTogYnJlYWs7Ci0gICAgY2FzZSBWaWV3Qm94OiBicmVhazsKLSAgICBjYXNlIEJveE1pc3Np
bmc6IGJyZWFrOworICAgIGNhc2UgQ1NTQm94VHlwZTo6TWFyZ2luQm94OgorICAgICAgICByZXR1
cm4gLW1fcmVuZGVyZXIubWFyZ2luQmVmb3JlKCZtX3JlbmRlcmVyLmNvbnRhaW5pbmdCbG9jaygp
LT5zdHlsZSgpKTsKKyAgICBjYXNlIENTU0JveFR5cGU6OkJvcmRlckJveDoKKyAgICAgICAgcmV0
dXJuIExheW91dFVuaXQoKTsKKyAgICBjYXNlIENTU0JveFR5cGU6OlBhZGRpbmdCb3g6CisgICAg
ICAgIHJldHVybiBib3JkZXJCZWZvcmVJbldyaXRpbmdNb2RlKG1fcmVuZGVyZXIsIG1fcmVuZGVy
ZXIuY29udGFpbmluZ0Jsb2NrKCktPnN0eWxlKCkud3JpdGluZ01vZGUoKSk7CisgICAgY2FzZSBD
U1NCb3hUeXBlOjpDb250ZW50Qm94OgorICAgICAgICByZXR1cm4gYm9yZGVyQW5kUGFkZGluZ0Jl
Zm9yZUluV3JpdGluZ01vZGUobV9yZW5kZXJlciwgbV9yZW5kZXJlci5jb250YWluaW5nQmxvY2so
KS0+c3R5bGUoKS53cml0aW5nTW9kZSgpKTsKKyAgICBjYXNlIENTU0JveFR5cGU6OkZpbGw6Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTQm94VHlwZTo6U3Ryb2tlOgorICAgICAgICBicmVh
azsKKyAgICBjYXNlIENTU0JveFR5cGU6OlZpZXdCb3g6CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQ1NTQm94VHlwZTo6Qm94TWlzc2luZzoKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjcyLDE0ICsyODAsMjIgQEAgTGF5b3V0VW5p
dCBTaGFwZU91dHNpZGVJbmZvOjpsb2dpY2FsTGVmdAogICAgICAgICByZXR1cm4gTGF5b3V0VW5p
dCgpOwogICAgIAogICAgIHN3aXRjaCAocmVmZXJlbmNlQm94KCptX3JlbmRlcmVyLnN0eWxlKCku
c2hhcGVPdXRzaWRlKCkpKSB7Ci0gICAgY2FzZSBNYXJnaW5Cb3g6IHJldHVybiAtbV9yZW5kZXJl
ci5tYXJnaW5TdGFydCgmbV9yZW5kZXJlci5jb250YWluaW5nQmxvY2soKS0+c3R5bGUoKSk7Ci0g
ICAgY2FzZSBCb3JkZXJCb3g6IHJldHVybiBMYXlvdXRVbml0KCk7Ci0gICAgY2FzZSBQYWRkaW5n
Qm94OiByZXR1cm4gYm9yZGVyU3RhcnRXaXRoU3R5bGVGb3JXcml0aW5nTW9kZShtX3JlbmRlcmVy
LCBtX3JlbmRlcmVyLmNvbnRhaW5pbmdCbG9jaygpLT5zdHlsZSgpKTsKLSAgICBjYXNlIENvbnRl
bnRCb3g6IHJldHVybiBib3JkZXJBbmRQYWRkaW5nU3RhcnRXaXRoU3R5bGVGb3JXcml0aW5nTW9k
ZShtX3JlbmRlcmVyLCBtX3JlbmRlcmVyLmNvbnRhaW5pbmdCbG9jaygpLT5zdHlsZSgpKTsKLSAg
ICBjYXNlIEZpbGw6IGJyZWFrOwotICAgIGNhc2UgU3Ryb2tlOiBicmVhazsKLSAgICBjYXNlIFZp
ZXdCb3g6IGJyZWFrOwotICAgIGNhc2UgQm94TWlzc2luZzogYnJlYWs7CisgICAgY2FzZSBDU1NC
b3hUeXBlOjpNYXJnaW5Cb3g6CisgICAgICAgIHJldHVybiAtbV9yZW5kZXJlci5tYXJnaW5TdGFy
dCgmbV9yZW5kZXJlci5jb250YWluaW5nQmxvY2soKS0+c3R5bGUoKSk7CisgICAgY2FzZSBDU1NC
b3hUeXBlOjpCb3JkZXJCb3g6CisgICAgICAgIHJldHVybiBMYXlvdXRVbml0KCk7CisgICAgY2Fz
ZSBDU1NCb3hUeXBlOjpQYWRkaW5nQm94OgorICAgICAgICByZXR1cm4gYm9yZGVyU3RhcnRXaXRo
U3R5bGVGb3JXcml0aW5nTW9kZShtX3JlbmRlcmVyLCBtX3JlbmRlcmVyLmNvbnRhaW5pbmdCbG9j
aygpLT5zdHlsZSgpKTsKKyAgICBjYXNlIENTU0JveFR5cGU6OkNvbnRlbnRCb3g6CisgICAgICAg
IHJldHVybiBib3JkZXJBbmRQYWRkaW5nU3RhcnRXaXRoU3R5bGVGb3JXcml0aW5nTW9kZShtX3Jl
bmRlcmVyLCBtX3JlbmRlcmVyLmNvbnRhaW5pbmdCbG9jaygpLT5zdHlsZSgpKTsKKyAgICBjYXNl
IENTU0JveFR5cGU6OkZpbGw6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTQm94VHlwZTo6
U3Ryb2tlOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU0JveFR5cGU6OlZpZXdCb3g6Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTQm94VHlwZTo6Qm94TWlzc2luZzoKKyAgICAgICAg
YnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRlckNvbnRlbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRlckNvbnRlbnQuaAkocmV2aXNpb24g
MjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJDb250ZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgQ291bnRlckNvbnRlbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIENvdW50ZXJDb250ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgaWRlbnRpZmllciwg
RUxpc3RTdHlsZVR5cGUgc3R5bGUsIGNvbnN0IEF0b21pY1N0cmluZyYgc2VwYXJhdG9yKQorICAg
IENvdW50ZXJDb250ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgaWRlbnRpZmllciwgTGlzdFN0eWxl
VHlwZSBzdHlsZSwgY29uc3QgQXRvbWljU3RyaW5nJiBzZXBhcmF0b3IpCiAgICAgICAgIDogbV9p
ZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgICAgICwgbV9saXN0U3R5bGUoc3R5bGUpCiAgICAg
ICAgICwgbV9zZXBhcmF0b3Ioc2VwYXJhdG9yKQpAQCAtNDAsMTIgKzQwLDEyIEBAIHB1YmxpYzoK
ICAgICB9CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX2lkZW50aWZpZXI7IH0KLSAgICBFTGlzdFN0eWxlVHlwZSBsaXN0U3R5bGUoKSBjb25z
dCB7IHJldHVybiBtX2xpc3RTdHlsZTsgfQorICAgIExpc3RTdHlsZVR5cGUgbGlzdFN0eWxlKCkg
Y29uc3QgeyByZXR1cm4gbV9saXN0U3R5bGU7IH0KICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNl
cGFyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fc2VwYXJhdG9yOyB9CiAKIHByaXZhdGU6CiAgICAg
QXRvbWljU3RyaW5nIG1faWRlbnRpZmllcjsKLSAgICBFTGlzdFN0eWxlVHlwZSBtX2xpc3RTdHls
ZTsKKyAgICBMaXN0U3R5bGVUeXBlIG1fbGlzdFN0eWxlOwogICAgIEF0b21pY1N0cmluZyBtX3Nl
cGFyYXRvcjsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEw
OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVyU3R5bGUKICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTdHlsZT4oc3R5bGUsIENsb25lKTsKIH0KIAotUmVu
ZGVyU3R5bGUgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoY29u
c3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBFRGlzcGxheSBkaXNwbGF5KQorUmVuZGVyU3R5
bGUgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoY29uc3QgUmVu
ZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBEaXNwbGF5VHlwZSBkaXNwbGF5KQogewogICAgIGF1dG8g
bmV3U3R5bGUgPSBjcmVhdGUoKTsKICAgICBuZXdTdHlsZS5pbmhlcml0RnJvbShwYXJlbnRTdHls
ZSk7CkBAIC0xMjAsNyArMTIwLDcgQEAgUmVuZGVyU3R5bGUgUmVuZGVyU3R5bGU6OmNyZWF0ZUFu
b255bW91cwogCiBSZW5kZXJTdHlsZSBSZW5kZXJTdHlsZTo6Y3JlYXRlU3R5bGVJbmhlcml0aW5n
RnJvbVBzZXVkb1N0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwc2V1ZG9TdHlsZSkKIHsKLSAgICBB
U1NFUlQocHNldWRvU3R5bGUuc3R5bGVUeXBlKCkgPT0gQkVGT1JFIHx8IHBzZXVkb1N0eWxlLnN0
eWxlVHlwZSgpID09IEFGVEVSKTsKKyAgICBBU1NFUlQocHNldWRvU3R5bGUuc3R5bGVUeXBlKCkg
PT0gUHNldWRvSWQ6OkJlZm9yZSB8fCBwc2V1ZG9TdHlsZS5zdHlsZVR5cGUoKSA9PSBQc2V1ZG9J
ZDo6QWZ0ZXIpOwogCiAgICAgYXV0byBzdHlsZSA9IGNyZWF0ZSgpOwogICAgIHN0eWxlLmluaGVy
aXRGcm9tKHBzZXVkb1N0eWxlKTsKQEAgLTE0MCwzMSArMTQwLDMxIEBAIFJlbmRlclN0eWxlOjpS
ZW5kZXJTdHlsZShDcmVhdGVEZWZhdWx0U3QKICAgICAsIG1faW5oZXJpdGVkRGF0YShTdHlsZUlu
aGVyaXRlZERhdGE6OmNyZWF0ZSgpKQogICAgICwgbV9zdmdTdHlsZShTVkdSZW5kZXJTdHlsZTo6
Y3JlYXRlKCkpCiB7Ci0gICAgbV9pbmhlcml0ZWRGbGFncy5lbXB0eUNlbGxzID0gaW5pdGlhbEVt
cHR5Q2VsbHMoKTsKLSAgICBtX2luaGVyaXRlZEZsYWdzLmNhcHRpb25TaWRlID0gaW5pdGlhbENh
cHRpb25TaWRlKCk7Ci0gICAgbV9pbmhlcml0ZWRGbGFncy5saXN0U3R5bGVUeXBlID0gaW5pdGlh
bExpc3RTdHlsZVR5cGUoKTsKLSAgICBtX2luaGVyaXRlZEZsYWdzLmxpc3RTdHlsZVBvc2l0aW9u
ID0gaW5pdGlhbExpc3RTdHlsZVBvc2l0aW9uKCk7Ci0gICAgbV9pbmhlcml0ZWRGbGFncy52aXNp
YmlsaXR5ID0gaW5pdGlhbFZpc2liaWxpdHkoKTsKLSAgICBtX2luaGVyaXRlZEZsYWdzLnRleHRB
bGlnbiA9IGluaXRpYWxUZXh0QWxpZ24oKTsKLSAgICBtX2luaGVyaXRlZEZsYWdzLnRleHRUcmFu
c2Zvcm0gPSBpbml0aWFsVGV4dFRyYW5zZm9ybSgpOworICAgIG1faW5oZXJpdGVkRmxhZ3MuZW1w
dHlDZWxscyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsRW1wdHlDZWxscygpKTsKKyAg
ICBtX2luaGVyaXRlZEZsYWdzLmNhcHRpb25TaWRlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGlu
aXRpYWxDYXB0aW9uU2lkZSgpKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmxpc3RTdHlsZVR5cGUg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbExpc3RTdHlsZVR5cGUoKSk7CisgICAgbV9p
bmhlcml0ZWRGbGFncy5saXN0U3R5bGVQb3NpdGlvbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
bml0aWFsTGlzdFN0eWxlUG9zaXRpb24oKSk7CisgICAgbV9pbmhlcml0ZWRGbGFncy52aXNpYmls
aXR5ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxWaXNpYmlsaXR5KCkpOworICAgIG1f
aW5oZXJpdGVkRmxhZ3MudGV4dEFsaWduID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxU
ZXh0QWxpZ24oKSk7CisgICAgbV9pbmhlcml0ZWRGbGFncy50ZXh0VHJhbnNmb3JtID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxUZXh0VHJhbnNmb3JtKCkpOwogICAgIG1faW5oZXJpdGVk
RmxhZ3MudGV4dERlY29yYXRpb25zID0gaW5pdGlhbFRleHREZWNvcmF0aW9uKCk7Ci0gICAgbV9p
bmhlcml0ZWRGbGFncy5jdXJzb3IgPSBpbml0aWFsQ3Vyc29yKCk7CisgICAgbV9pbmhlcml0ZWRG
bGFncy5jdXJzb3IgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbEN1cnNvcigpKTsKICNp
ZiBFTkFCTEUoQ1VSU09SX1ZJU0lCSUxJVFkpCi0gICAgbV9pbmhlcml0ZWRGbGFncy5jdXJzb3JW
aXNpYmlsaXR5ID0gaW5pdGlhbEN1cnNvclZpc2liaWxpdHkoKTsKKyAgICBtX2luaGVyaXRlZEZs
YWdzLmN1cnNvclZpc2liaWxpdHkgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbEN1cnNv
clZpc2liaWxpdHkoKSk7CiAjZW5kaWYKICAgICBtX2luaGVyaXRlZEZsYWdzLmRpcmVjdGlvbiA9
IGluaXRpYWxEaXJlY3Rpb24oKTsKLSAgICBtX2luaGVyaXRlZEZsYWdzLndoaXRlU3BhY2UgPSBp
bml0aWFsV2hpdGVTcGFjZSgpOworICAgIG1faW5oZXJpdGVkRmxhZ3Mud2hpdGVTcGFjZSA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsV2hpdGVTcGFjZSgpKTsKICAgICBtX2luaGVyaXRl
ZEZsYWdzLmJvcmRlckNvbGxhcHNlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxCb3Jk
ZXJDb2xsYXBzZSgpKTsKLSAgICBtX2luaGVyaXRlZEZsYWdzLnJ0bE9yZGVyaW5nID0gaW5pdGlh
bFJUTE9yZGVyaW5nKCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5ydGxPcmRlcmluZyA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihpbml0aWFsUlRMT3JkZXJpbmcoKSk7CiAgICAgbV9pbmhlcml0ZWRG
bGFncy5ib3hEaXJlY3Rpb24gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbEJveERpcmVj
dGlvbigpKTsKICAgICBtX2luaGVyaXRlZEZsYWdzLnByaW50Q29sb3JBZGp1c3QgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oaW5pdGlhbFByaW50Q29sb3JBZGp1c3QoKSk7Ci0gICAgbV9pbmhlcml0
ZWRGbGFncy5wb2ludGVyRXZlbnRzID0gaW5pdGlhbFBvaW50ZXJFdmVudHMoKTsKLSAgICBtX2lu
aGVyaXRlZEZsYWdzLmluc2lkZUxpbmsgPSBOb3RJbnNpZGVMaW5rOworICAgIG1faW5oZXJpdGVk
RmxhZ3MucG9pbnRlckV2ZW50cyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsUG9pbnRl
ckV2ZW50cygpKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmluc2lkZUxpbmsgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSW5zaWRlTGluazo6Tm90SW5zaWRlKTsKICAgICBtX2luaGVyaXRlZEZsYWdz
Lmluc2lkZURlZmF1bHRCdXR0b24gPSBmYWxzZTsKICAgICBtX2luaGVyaXRlZEZsYWdzLndyaXRp
bmdNb2RlID0gaW5pdGlhbFdyaXRpbmdNb2RlKCk7CiAKLSAgICBtX25vbkluaGVyaXRlZEZsYWdz
LmVmZmVjdGl2ZURpc3BsYXkgPSBpbml0aWFsRGlzcGxheSgpOwotICAgIG1fbm9uSW5oZXJpdGVk
RmxhZ3Mub3JpZ2luYWxEaXNwbGF5ID0gaW5pdGlhbERpc3BsYXkoKTsKKyAgICBtX25vbkluaGVy
aXRlZEZsYWdzLmVmZmVjdGl2ZURpc3BsYXkgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlh
bERpc3BsYXkoKSk7CisgICAgbV9ub25Jbmhlcml0ZWRGbGFncy5vcmlnaW5hbERpc3BsYXkgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbERpc3BsYXkoKSk7CiAgICAgbV9ub25Jbmhlcml0
ZWRGbGFncy5vdmVyZmxvd1ggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbE92ZXJmbG93
WCgpKTsKICAgICBtX25vbkluaGVyaXRlZEZsYWdzLm92ZXJmbG93WSA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihpbml0aWFsT3ZlcmZsb3dZKCkpOwogICAgIG1fbm9uSW5oZXJpdGVkRmxhZ3MudmVy
dGljYWxBbGlnbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsVmVydGljYWxBbGlnbigp
KTsKQEAgLTE4Niw4ICsxODYsOCBAQCBSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoQ3JlYXRlRGVm
YXVsdFN0CiAgICAgbV9ub25Jbmhlcml0ZWRGbGFncy5hZmZlY3RlZEJ5QWN0aXZlID0gZmFsc2U7
CiAgICAgbV9ub25Jbmhlcml0ZWRGbGFncy5hZmZlY3RlZEJ5RHJhZyA9IGZhbHNlOwogICAgIG1f
bm9uSW5oZXJpdGVkRmxhZ3MuaXNMaW5rID0gZmFsc2U7Ci0gICAgbV9ub25Jbmhlcml0ZWRGbGFn
cy5zdHlsZVR5cGUgPSBOT1BTRVVETzsKLSAgICBtX25vbkluaGVyaXRlZEZsYWdzLnBzZXVkb0Jp
dHMgPSBOT1BTRVVETzsKKyAgICBtX25vbkluaGVyaXRlZEZsYWdzLnN0eWxlVHlwZSA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQc2V1ZG9JZDo6Tm9uZSk7CisgICAgbV9ub25Jbmhlcml0ZWRGbGFn
cy5wc2V1ZG9CaXRzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBzZXVkb0lkOjpOb25lKTsKIAog
ICAgIHN0YXRpY19hc3NlcnQoKHNpemVvZihJbmhlcml0ZWRGbGFncykgPD0gOCksICJJbmhlcml0
ZWRGbGFncyBkb2VzIG5vdCBncm93Iik7CiAgICAgc3RhdGljX2Fzc2VydCgoc2l6ZW9mKE5vbklu
aGVyaXRlZEZsYWdzKSA8PSA4KSwgIk5vbkluaGVyaXRlZEZsYWdzIGRvZXMgbm90IGdyb3ciKTsK
QEAgLTM2Niw3ICszNjYsNyBAQCBib29sIFJlbmRlclN0eWxlOjpvcGVyYXRvcj09KGNvbnN0IFJl
bmRlCiAKIGJvb2wgUmVuZGVyU3R5bGU6Omhhc1VuaXF1ZVBzZXVkb1N0eWxlKCkgY29uc3QKIHsK
LSAgICBpZiAoIW1fY2FjaGVkUHNldWRvU3R5bGVzIHx8IHN0eWxlVHlwZSgpICE9IE5PUFNFVURP
KQorICAgIGlmICghbV9jYWNoZWRQc2V1ZG9TdHlsZXMgfHwgc3R5bGVUeXBlKCkgIT0gUHNldWRv
SWQ6Ok5vbmUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGZvciAoYXV0byYgcHNldWRv
U3R5bGUgOiAqbV9jYWNoZWRQc2V1ZG9TdHlsZXMpIHsKQEAgLTM4Miw3ICszODIsNyBAQCBSZW5k
ZXJTdHlsZSogUmVuZGVyU3R5bGU6OmdldENhY2hlZFBzZXVkCiAgICAgaWYgKCFtX2NhY2hlZFBz
ZXVkb1N0eWxlcyB8fCAhbV9jYWNoZWRQc2V1ZG9TdHlsZXMtPnNpemUoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoc3R5bGVUeXBlKCkgIT0gTk9QU0VVRE8pIAorICAgIGlm
IChzdHlsZVR5cGUoKSAhPSBQc2V1ZG9JZDo6Tm9uZSkgCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgZm9yIChhdXRvJiBwc2V1ZG9TdHlsZSA6ICptX2NhY2hlZFBzZXVkb1N0eWxlcykg
ewpAQCAtMzk4LDcgKzM5OCw3IEBAIFJlbmRlclN0eWxlKiBSZW5kZXJTdHlsZTo6YWRkQ2FjaGVk
UHNldWQKICAgICBpZiAoIXBzZXVkbykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBB
U1NFUlQocHNldWRvLT5zdHlsZVR5cGUoKSA+IE5PUFNFVURPKTsKKyAgICBBU1NFUlQocHNldWRv
LT5zdHlsZVR5cGUoKSA+IFBzZXVkb0lkOjpOb25lKTsKIAogICAgIFJlbmRlclN0eWxlKiByZXN1
bHQgPSBwc2V1ZG8uZ2V0KCk7CiAKQEAgLTcwNiw3ICs3MDYsNyBAQCBib29sIFJlbmRlclN0eWxl
OjpjaGFuZ2VSZXF1aXJlc0xheW91dChjCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAKLSAgICBp
ZiAobV9ub25Jbmhlcml0ZWRGbGFncy5lZmZlY3RpdmVEaXNwbGF5ID49IFRBQkxFKSB7CisgICAg
aWYgKHN0YXRpY19jYXN0PERpc3BsYXlUeXBlPihtX25vbkluaGVyaXRlZEZsYWdzLmVmZmVjdGl2
ZURpc3BsYXkpID49IERpc3BsYXlUeXBlOjpUYWJsZSkgewogICAgICAgICBpZiAobV9pbmhlcml0
ZWRGbGFncy5ib3JkZXJDb2xsYXBzZSAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLmJvcmRlckNv
bGxhcHNlCiAgICAgICAgICAgICB8fCBtX2luaGVyaXRlZEZsYWdzLmVtcHR5Q2VsbHMgIT0gb3Ro
ZXIubV9pbmhlcml0ZWRGbGFncy5lbXB0eUNlbGxzCiAgICAgICAgICAgICB8fCBtX2luaGVyaXRl
ZEZsYWdzLmNhcHRpb25TaWRlICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MuY2FwdGlvblNpZGUK
QEAgLTcyNyw3ICs3MjcsNyBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheW91
dChjCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAobV9ub25Jbmhl
cml0ZWRGbGFncy5lZmZlY3RpdmVEaXNwbGF5ID09IExJU1RfSVRFTSkgeworICAgIGlmIChzdGF0
aWNfY2FzdDxEaXNwbGF5VHlwZT4obV9ub25Jbmhlcml0ZWRGbGFncy5lZmZlY3RpdmVEaXNwbGF5
KSA9PSBEaXNwbGF5VHlwZTo6TGlzdEl0ZW0pIHsKICAgICAgICAgaWYgKG1faW5oZXJpdGVkRmxh
Z3MubGlzdFN0eWxlVHlwZSAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLmxpc3RTdHlsZVR5cGUK
ICAgICAgICAgICAgIHx8IG1faW5oZXJpdGVkRmxhZ3MubGlzdFN0eWxlUG9zaXRpb24gIT0gb3Ro
ZXIubV9pbmhlcml0ZWRGbGFncy5saXN0U3R5bGVQb3NpdGlvbikKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwpAQCAtNzcyLDcgKzc3Miw3IEBAIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVp
cmVzTGF5b3V0KGMKICAgICBpZiAoIWFyZVBvaW50aW5nVG9FcXVhbERhdGEobV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+Y291bnRlckRpcmVjdGl2ZXMsIG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPmNvdW50ZXJEaXJlY3RpdmVzKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAo
KHZpc2liaWxpdHkoKSA9PSBDT0xMQVBTRSkgIT0gKG90aGVyLnZpc2liaWxpdHkoKSA9PSBDT0xM
QVBTRSkpCisgICAgaWYgKCh2aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6Q29sbGFwc2UpICE9
IChvdGhlci52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6Q29sbGFwc2UpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5oYXNPcGFjaXR5
KCkgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+aGFzT3BhY2l0eSgpKSB7CkBAIC04
MDksMTQgKzgwOSwxNCBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheW91dChj
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBib29sIGhhc0ZpcnN0TGluZVN0eWxlID0gaGFzUHNl
dWRvU3R5bGUoRklSU1RfTElORSk7Ci0gICAgaWYgKGhhc0ZpcnN0TGluZVN0eWxlICE9IG90aGVy
Lmhhc1BzZXVkb1N0eWxlKEZJUlNUX0xJTkUpKQorICAgIGJvb2wgaGFzRmlyc3RMaW5lU3R5bGUg
PSBoYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKTsKKyAgICBpZiAoaGFzRmlyc3RM
aW5lU3R5bGUgIT0gb3RoZXIuaGFzUHNldWRvU3R5bGUoUHNldWRvSWQ6OkZpcnN0TGluZSkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChoYXNGaXJzdExpbmVTdHlsZSkgewotICAgICAg
ICBhdXRvKiBmaXJzdExpbmVTdHlsZSA9IGdldENhY2hlZFBzZXVkb1N0eWxlKEZJUlNUX0xJTkUp
OworICAgICAgICBhdXRvKiBmaXJzdExpbmVTdHlsZSA9IGdldENhY2hlZFBzZXVkb1N0eWxlKFBz
ZXVkb0lkOjpGaXJzdExpbmUpOwogICAgICAgICBpZiAoIWZpcnN0TGluZVN0eWxlKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGF1dG8qIG90aGVyRmlyc3RMaW5lU3R5bGUgPSBv
dGhlci5nZXRDYWNoZWRQc2V1ZG9TdHlsZShGSVJTVF9MSU5FKTsKKyAgICAgICAgYXV0byogb3Ro
ZXJGaXJzdExpbmVTdHlsZSA9IG90aGVyLmdldENhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb0lkOjpG
aXJzdExpbmUpOwogICAgICAgICBpZiAoIW90aGVyRmlyc3RMaW5lU3R5bGUpCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgLy8gRklYTUU6IE5vdCBhbGwgZmlyc3QgbGluZSBzdHls
ZSBjaGFuZ2VzIGFjdHVhbGx5IG5lZWQgbGF5b3V0LgpAQCAtODg1LDcgKzg4NSw3IEBAIGJvb2wg
UmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5ZXJSZXAKIAogc3RhdGljIGJvb2wgcmVxdWly
ZXNQYWludGluZyhjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgaWYgKHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBISURERU4pCisgICAgaWYgKHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNp
YmlsaXR5OjpIaWRkZW4pCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIXN0eWxlLm9w
YWNpdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTM0OSw3ICsxMzQ5LDcgQEAgQ291
bnRlckRpcmVjdGl2ZU1hcCYgUmVuZGVyU3R5bGU6OmFjY2VzcwogCiBjb25zdCBBdG9taWNTdHJp
bmcmIFJlbmRlclN0eWxlOjpoeXBoZW5TdHJpbmcoKSBjb25zdAogewotICAgIEFTU0VSVChoeXBo
ZW5zKCkgIT0gSHlwaGVuc05vbmUpOworICAgIEFTU0VSVChoeXBoZW5zKCkgIT0gSHlwaGVuczo6
Tm9uZSk7CiAKICAgICBhdXRvJiBoeXBoZW5hdGlvblN0cmluZyA9IG1fcmFyZUluaGVyaXRlZERh
dGEtPmh5cGhlbmF0aW9uU3RyaW5nOwogICAgIGlmICghaHlwaGVuYXRpb25TdHJpbmcuaXNOdWxs
KCkpCkBAIC0xMzY0LDM2ICsxMzY0LDM2IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgUmVuZGVyU3R5
bGU6Omh5cGhlblMKIGNvbnN0IEF0b21pY1N0cmluZyYgUmVuZGVyU3R5bGU6OnRleHRFbXBoYXNp
c01hcmtTdHJpbmcoKSBjb25zdAogewogICAgIHN3aXRjaCAodGV4dEVtcGhhc2lzTWFyaygpKSB7
Ci0gICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrTm9uZToKKyAgICBjYXNlIFRleHRFbXBoYXNpc01h
cms6Ok5vbmU6CiAgICAgICAgIHJldHVybiBudWxsQXRvbSgpOwotICAgIGNhc2UgVGV4dEVtcGhh
c2lzTWFya0N1c3RvbToKKyAgICBjYXNlIFRleHRFbXBoYXNpc01hcms6OkN1c3RvbToKICAgICAg
ICAgcmV0dXJuIHRleHRFbXBoYXNpc0N1c3RvbU1hcmsoKTsKLSAgICBjYXNlIFRleHRFbXBoYXNp
c01hcmtEb3Q6IHsKKyAgICBjYXNlIFRleHRFbXBoYXNpc01hcms6OkRvdDogewogICAgICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBmaWxsZWREb3RTdHJpbmcoJmJ1bGxl
dCwgMSk7CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG9wZW5E
b3RTdHJpbmcoJndoaXRlQnVsbGV0LCAxKTsKLSAgICAgICAgcmV0dXJuIHRleHRFbXBoYXNpc0Zp
bGwoKSA9PSBUZXh0RW1waGFzaXNGaWxsRmlsbGVkID8gZmlsbGVkRG90U3RyaW5nIDogb3BlbkRv
dFN0cmluZzsKKyAgICAgICAgcmV0dXJuIHRleHRFbXBoYXNpc0ZpbGwoKSA9PSBUZXh0RW1waGFz
aXNGaWxsOjpGaWxsZWQgPyBmaWxsZWREb3RTdHJpbmcgOiBvcGVuRG90U3RyaW5nOwogICAgIH0K
LSAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtDaXJjbGU6IHsKKyAgICBjYXNlIFRleHRFbXBoYXNp
c01hcms6OkNpcmNsZTogewogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiBmaWxsZWRDaXJjbGVTdHJpbmcoJmJsYWNrQ2lyY2xlLCAxKTsKICAgICAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gb3BlbkNpcmNsZVN0cmluZygmd2hpdGVDaXJj
bGUsIDEpOwotICAgICAgICByZXR1cm4gdGV4dEVtcGhhc2lzRmlsbCgpID09IFRleHRFbXBoYXNp
c0ZpbGxGaWxsZWQgPyBmaWxsZWRDaXJjbGVTdHJpbmcgOiBvcGVuQ2lyY2xlU3RyaW5nOworICAg
ICAgICByZXR1cm4gdGV4dEVtcGhhc2lzRmlsbCgpID09IFRleHRFbXBoYXNpc0ZpbGw6OkZpbGxl
ZCA/IGZpbGxlZENpcmNsZVN0cmluZyA6IG9wZW5DaXJjbGVTdHJpbmc7CiAgICAgfQotICAgIGNh
c2UgVGV4dEVtcGhhc2lzTWFya0RvdWJsZUNpcmNsZTogeworICAgIGNhc2UgVGV4dEVtcGhhc2lz
TWFyazo6RG91YmxlQ2lyY2xlOiB7CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmc+IGZpbGxlZERvdWJsZUNpcmNsZVN0cmluZygmZmlzaGV5ZSwgMSk7CiAgICAgICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG9wZW5Eb3VibGVDaXJjbGVTdHJp
bmcoJmJ1bGxzZXllLCAxKTsKLSAgICAgICAgcmV0dXJuIHRleHRFbXBoYXNpc0ZpbGwoKSA9PSBU
ZXh0RW1waGFzaXNGaWxsRmlsbGVkID8gZmlsbGVkRG91YmxlQ2lyY2xlU3RyaW5nIDogb3BlbkRv
dWJsZUNpcmNsZVN0cmluZzsKKyAgICAgICAgcmV0dXJuIHRleHRFbXBoYXNpc0ZpbGwoKSA9PSBU
ZXh0RW1waGFzaXNGaWxsOjpGaWxsZWQgPyBmaWxsZWREb3VibGVDaXJjbGVTdHJpbmcgOiBvcGVu
RG91YmxlQ2lyY2xlU3RyaW5nOwogICAgIH0KLSAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtUcmlh
bmdsZTogeworICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFyazo6VHJpYW5nbGU6IHsKICAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZmlsbGVkVHJpYW5nbGVTdHJpbmco
JmJsYWNrVXBQb2ludGluZ1RyaWFuZ2xlLCAxKTsKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEF0b21pY1N0cmluZz4gb3BlblRyaWFuZ2xlU3RyaW5nKCZ3aGl0ZVVwUG9pbnRpbmdUcmlh
bmdsZSwgMSk7Ci0gICAgICAgIHJldHVybiB0ZXh0RW1waGFzaXNGaWxsKCkgPT0gVGV4dEVtcGhh
c2lzRmlsbEZpbGxlZCA/IGZpbGxlZFRyaWFuZ2xlU3RyaW5nIDogb3BlblRyaWFuZ2xlU3RyaW5n
OworICAgICAgICByZXR1cm4gdGV4dEVtcGhhc2lzRmlsbCgpID09IFRleHRFbXBoYXNpc0ZpbGw6
OkZpbGxlZCA/IGZpbGxlZFRyaWFuZ2xlU3RyaW5nIDogb3BlblRyaWFuZ2xlU3RyaW5nOwogICAg
IH0KLSAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtTZXNhbWU6IHsKKyAgICBjYXNlIFRleHRFbXBo
YXNpc01hcms6OlNlc2FtZTogewogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBmaWxsZWRTZXNhbWVTdHJpbmcoJnNlc2FtZURvdCwgMSk7CiAgICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG9wZW5TZXNhbWVTdHJpbmcoJndoaXRlU2Vz
YW1lRG90LCAxKTsKLSAgICAgICAgcmV0dXJuIHRleHRFbXBoYXNpc0ZpbGwoKSA9PSBUZXh0RW1w
aGFzaXNGaWxsRmlsbGVkID8gZmlsbGVkU2VzYW1lU3RyaW5nIDogb3BlblNlc2FtZVN0cmluZzsK
KyAgICAgICAgcmV0dXJuIHRleHRFbXBoYXNpc0ZpbGwoKSA9PSBUZXh0RW1waGFzaXNGaWxsOjpG
aWxsZWQgPyBmaWxsZWRTZXNhbWVTdHJpbmcgOiBvcGVuU2VzYW1lU3RyaW5nOwogICAgIH0KLSAg
ICBjYXNlIFRleHRFbXBoYXNpc01hcmtBdXRvOgorICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFyazo6
QXV0bzoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBudWxs
QXRvbSgpOwogICAgIH0KQEAgLTE4MjUsNyArMTgyNSw3IEBAIENvbG9yIFJlbmRlclN0eWxlOjpj
b2xvckluY2x1ZGluZ0ZhbGxiYWMKIENvbG9yIFJlbmRlclN0eWxlOjp2aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlJRCBjb2xvclByb3BlcnR5KSBjb25zdAogewogICAgIENvbG9yIHVu
dmlzaXRlZENvbG9yID0gY29sb3JJbmNsdWRpbmdGYWxsYmFjayhjb2xvclByb3BlcnR5LCBmYWxz
ZSk7Ci0gICAgaWYgKGluc2lkZUxpbmsoKSAhPSBJbnNpZGVWaXNpdGVkTGluaykKKyAgICBpZiAo
aW5zaWRlTGluaygpICE9IEluc2lkZUxpbms6Okluc2lkZVZpc2l0ZWQpCiAgICAgICAgIHJldHVy
biB1bnZpc2l0ZWRDb2xvcjsKIAogICAgIENvbG9yIHZpc2l0ZWRDb2xvciA9IGNvbG9ySW5jbHVk
aW5nRmFsbGJhY2soY29sb3JQcm9wZXJ0eSwgdHJ1ZSk7CkBAIC0xOTg2LDExICsxOTg2LDExIEBA
IHZvaWQgUmVuZGVyU3R5bGU6OnNldE1hcmdpbkVuZChMZW5ndGgmJiAKIFRleHRFbXBoYXNpc01h
cmsgUmVuZGVyU3R5bGU6OnRleHRFbXBoYXNpc01hcmsoKSBjb25zdAogewogICAgIGF1dG8gbWFy
ayA9IHN0YXRpY19jYXN0PFRleHRFbXBoYXNpc01hcms+KG1fcmFyZUluaGVyaXRlZERhdGEtPnRl
eHRFbXBoYXNpc01hcmspOwotICAgIGlmIChtYXJrICE9IFRleHRFbXBoYXNpc01hcmtBdXRvKQor
ICAgIGlmIChtYXJrICE9IFRleHRFbXBoYXNpc01hcms6OkF1dG8pCiAgICAgICAgIHJldHVybiBt
YXJrOwogICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQotICAgICAgICByZXR1cm4g
VGV4dEVtcGhhc2lzTWFya0RvdDsKLSAgICByZXR1cm4gVGV4dEVtcGhhc2lzTWFya1Nlc2FtZTsK
KyAgICAgICAgcmV0dXJuIFRleHRFbXBoYXNpc01hcms6OkRvdDsKKyAgICByZXR1cm4gVGV4dEVt
cGhhc2lzTWFyazo6U2VzYW1lOwogfQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKQEAgLTIw
NjcsMzIgKzIwNjcsMzIgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29sdW1uU3R5bGVzRnJvbVBh
ZwogICAgIAogICAgIHN3aXRjaCAocGFnaW5hdGlvbk1vZGUpIHsKICAgICBjYXNlIFBhZ2luYXRp
b246OkxlZnRUb1JpZ2h0UGFnaW5hdGVkOgotICAgICAgICBzZXRDb2x1bW5BeGlzKEhvcml6b250
YWxDb2x1bW5BeGlzKTsKKyAgICAgICAgc2V0Q29sdW1uQXhpcyhDb2x1bW5BeGlzOjpIb3Jpem9u
dGFsKTsKICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAgICAgICAg
ICBzZXRDb2x1bW5Qcm9ncmVzc2lvbihpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBOb3JtYWxD
b2x1bW5Qcm9ncmVzc2lvbiA6IFJldmVyc2VDb2x1bW5Qcm9ncmVzc2lvbik7CisgICAgICAgICAg
ICBzZXRDb2x1bW5Qcm9ncmVzc2lvbihpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBDb2x1bW5Q
cm9ncmVzc2lvbjo6Tm9ybWFsIDogQ29sdW1uUHJvZ3Jlc3Npb246OlJldmVyc2UpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBzZXRDb2x1bW5Qcm9ncmVzc2lvbihpc0ZsaXBwZWRCbG9ja3NX
cml0aW5nTW9kZSgpID8gUmV2ZXJzZUNvbHVtblByb2dyZXNzaW9uIDogTm9ybWFsQ29sdW1uUHJv
Z3Jlc3Npb24pOworICAgICAgICAgICAgc2V0Q29sdW1uUHJvZ3Jlc3Npb24oaXNGbGlwcGVkQmxv
Y2tzV3JpdGluZ01vZGUoKSA/IENvbHVtblByb2dyZXNzaW9uOjpSZXZlcnNlIDogQ29sdW1uUHJv
Z3Jlc3Npb246Ok5vcm1hbCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGFnaW5hdGlvbjo6
UmlnaHRUb0xlZnRQYWdpbmF0ZWQ6Ci0gICAgICAgIHNldENvbHVtbkF4aXMoSG9yaXpvbnRhbENv
bHVtbkF4aXMpOworICAgICAgICBzZXRDb2x1bW5BeGlzKENvbHVtbkF4aXM6Okhvcml6b250YWwp
OwogICAgICAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKLSAgICAgICAgICAgIHNl
dENvbHVtblByb2dyZXNzaW9uKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IFJldmVyc2VDb2x1
bW5Qcm9ncmVzc2lvbiA6IE5vcm1hbENvbHVtblByb2dyZXNzaW9uKTsKKyAgICAgICAgICAgIHNl
dENvbHVtblByb2dyZXNzaW9uKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IENvbHVtblByb2dy
ZXNzaW9uOjpSZXZlcnNlIDogQ29sdW1uUHJvZ3Jlc3Npb246Ok5vcm1hbCk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHNldENvbHVtblByb2dyZXNzaW9uKGlzRmxpcHBlZEJsb2Nrc1dyaXRp
bmdNb2RlKCkgPyBOb3JtYWxDb2x1bW5Qcm9ncmVzc2lvbiA6IFJldmVyc2VDb2x1bW5Qcm9ncmVz
c2lvbik7CisgICAgICAgICAgICBzZXRDb2x1bW5Qcm9ncmVzc2lvbihpc0ZsaXBwZWRCbG9ja3NX
cml0aW5nTW9kZSgpID8gQ29sdW1uUHJvZ3Jlc3Npb246Ok5vcm1hbCA6IENvbHVtblByb2dyZXNz
aW9uOjpSZXZlcnNlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQYWdpbmF0aW9uOjpUb3BU
b0JvdHRvbVBhZ2luYXRlZDoKLSAgICAgICAgc2V0Q29sdW1uQXhpcyhWZXJ0aWNhbENvbHVtbkF4
aXMpOworICAgICAgICBzZXRDb2x1bW5BeGlzKENvbHVtbkF4aXM6OlZlcnRpY2FsKTsKICAgICAg
ICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAgICAgICAgICBzZXRDb2x1bW5Q
cm9ncmVzc2lvbihpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gUmV2ZXJzZUNvbHVtblBy
b2dyZXNzaW9uIDogTm9ybWFsQ29sdW1uUHJvZ3Jlc3Npb24pOworICAgICAgICAgICAgc2V0Q29s
dW1uUHJvZ3Jlc3Npb24oaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSA/IENvbHVtblByb2dy
ZXNzaW9uOjpSZXZlcnNlIDogQ29sdW1uUHJvZ3Jlc3Npb246Ok5vcm1hbCk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHNldENvbHVtblByb2dyZXNzaW9uKGlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oKSA/IE5vcm1hbENvbHVtblByb2dyZXNzaW9uIDogUmV2ZXJzZUNvbHVtblByb2dyZXNzaW9u
KTsKKyAgICAgICAgICAgIHNldENvbHVtblByb2dyZXNzaW9uKGlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oKSA/IENvbHVtblByb2dyZXNzaW9uOjpOb3JtYWwgOiBDb2x1bW5Qcm9ncmVzc2lvbjo6UmV2
ZXJzZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGFnaW5hdGlvbjo6Qm90dG9tVG9Ub3BQ
YWdpbmF0ZWQ6Ci0gICAgICAgIHNldENvbHVtbkF4aXMoVmVydGljYWxDb2x1bW5BeGlzKTsKKyAg
ICAgICAgc2V0Q29sdW1uQXhpcyhDb2x1bW5BeGlzOjpWZXJ0aWNhbCk7CiAgICAgICAgIGlmIChp
c0hvcml6b250YWxXcml0aW5nTW9kZSgpKQotICAgICAgICAgICAgc2V0Q29sdW1uUHJvZ3Jlc3Np
b24oaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSA/IE5vcm1hbENvbHVtblByb2dyZXNzaW9u
IDogUmV2ZXJzZUNvbHVtblByb2dyZXNzaW9uKTsKKyAgICAgICAgICAgIHNldENvbHVtblByb2dy
ZXNzaW9uKGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgPyBDb2x1bW5Qcm9ncmVzc2lvbjo6
Tm9ybWFsIDogQ29sdW1uUHJvZ3Jlc3Npb246OlJldmVyc2UpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBzZXRDb2x1bW5Qcm9ncmVzc2lvbihpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBS
ZXZlcnNlQ29sdW1uUHJvZ3Jlc3Npb24gOiBOb3JtYWxDb2x1bW5Qcm9ncmVzc2lvbik7CisgICAg
ICAgICAgICBzZXRDb2x1bW5Qcm9ncmVzc2lvbihpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBD
b2x1bW5Qcm9ncmVzc2lvbjo6UmV2ZXJzZSA6IENvbHVtblByb2dyZXNzaW9uOjpOb3JtYWwpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIFBhZ2luYXRpb246OlVucGFnaW5hdGVkOgogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ4LDcg
KzE0OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVuZGVyU3R5bGUgY2xvbmUoY29uc3QgUmVu
ZGVyU3R5bGUmKTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBjbG9u
ZVB0cihjb25zdCBSZW5kZXJTdHlsZSYpOwogCi0gICAgc3RhdGljIFJlbmRlclN0eWxlIGNyZWF0
ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxl
LCBFRGlzcGxheSk7CisgICAgc3RhdGljIFJlbmRlclN0eWxlIGNyZWF0ZUFub255bW91c1N0eWxl
V2l0aERpc3BsYXkoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBEaXNwbGF5VHlwZSk7
CiAgICAgc3RhdGljIFJlbmRlclN0eWxlIGNyZWF0ZVN0eWxlSW5oZXJpdGluZ0Zyb21Qc2V1ZG9T
dHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcHNldWRvU3R5bGUpOwogCiAjaWYgIUFTU0VSVF9ESVNB
QkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykKQEAgLTE3NCw3ICsxNzQsNyBAQCBw
dWJsaWM6CiAgICAgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSByZXNvbHZlZEp1c3RpZnlDb250
ZW50KGNvbnN0IFN0eWxlQ29udGVudEFsaWdubWVudERhdGEmIG5vcm1hbFZhbHVlQmVoYXZpb3Vy
KSBjb25zdDsKIAogICAgIFBzZXVkb0lkIHN0eWxlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PFBzZXVkb0lkPihtX25vbkluaGVyaXRlZEZsYWdzLnN0eWxlVHlwZSk7IH0KLSAgICB2
b2lkIHNldFN0eWxlVHlwZShQc2V1ZG9JZCBzdHlsZVR5cGUpIHsgbV9ub25Jbmhlcml0ZWRGbGFn
cy5zdHlsZVR5cGUgPSBzdHlsZVR5cGU7IH0KKyAgICB2b2lkIHNldFN0eWxlVHlwZShQc2V1ZG9J
ZCBzdHlsZVR5cGUpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5zdHlsZVR5cGUgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc3R5bGVUeXBlKTsgfQogCiAgICAgUmVuZGVyU3R5bGUqIGdldENhY2hlZFBz
ZXVkb1N0eWxlKFBzZXVkb0lkKSBjb25zdDsKICAgICBSZW5kZXJTdHlsZSogYWRkQ2FjaGVkUHNl
dWRvU3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPik7CkBAIC0yMjgsNyArMjI4LDcg
QEAgcHVibGljOgogICAgIEZpbHRlck91dHNldHMgZmlsdGVyT3V0c2V0cygpIGNvbnN0IHsgcmV0
dXJuIGhhc0ZpbHRlcigpID8gZmlsdGVyKCkub3V0c2V0cygpIDogRmlsdGVyT3V0c2V0cygpOyB9
CiAKICAgICBPcmRlciBydGxPcmRlcmluZygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE9y
ZGVyPihtX2luaGVyaXRlZEZsYWdzLnJ0bE9yZGVyaW5nKTsgfQotICAgIHZvaWQgc2V0UlRMT3Jk
ZXJpbmcoT3JkZXIgb3JkZXJpbmcpIHsgbV9pbmhlcml0ZWRGbGFncy5ydGxPcmRlcmluZyA9IG9y
ZGVyaW5nOyB9CisgICAgdm9pZCBzZXRSVExPcmRlcmluZyhPcmRlciBvcmRlcmluZykgeyBtX2lu
aGVyaXRlZEZsYWdzLnJ0bE9yZGVyaW5nID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG9yZGVyaW5n
KTsgfQogCiAgICAgYm9vbCBpc1N0eWxlQXZhaWxhYmxlKCkgY29uc3Q7CiAKQEAgLTI0MCw3ICsy
NDAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBhdHRyaWJ1dGUgZ2V0dGVyIG1ldGhvZHMKIAotICAg
IEVEaXNwbGF5IGRpc3BsYXkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRGlzcGxheT4o
bV9ub25Jbmhlcml0ZWRGbGFncy5lZmZlY3RpdmVEaXNwbGF5KTsgfQorICAgIERpc3BsYXlUeXBl
IGRpc3BsYXkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxEaXNwbGF5VHlwZT4obV9ub25J
bmhlcml0ZWRGbGFncy5lZmZlY3RpdmVEaXNwbGF5KTsgfQogCiAgICAgY29uc3QgTGVuZ3RoJiBs
ZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm9mZnNldC5sZWZ0KCk7IH0KICAg
ICBjb25zdCBMZW5ndGgmIHJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm9m
ZnNldC5yaWdodCgpOyB9CkBAIC0zMzEsNyArMzMxLDcgQEAgcHVibGljOgogICAgIE92ZXJmbG93
IG92ZXJmbG93SW5saW5lRGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gaXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKSA/IG92ZXJmbG93WCgpIDogb3ZlcmZsb3dZKCk7IH0KICAgICBPdmVyZmxvdyBv
dmVyZmxvd0Jsb2NrRGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKSA/IG92ZXJmbG93WSgpIDogb3ZlcmZsb3dYKCk7IH0KICAgICAKLSAgICBFVmlzaWJp
bGl0eSB2aXNpYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVZpc2liaWxpdHk+
KG1faW5oZXJpdGVkRmxhZ3MudmlzaWJpbGl0eSk7IH0KKyAgICBWaXNpYmlsaXR5IHZpc2liaWxp
dHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxWaXNpYmlsaXR5PihtX2luaGVyaXRlZEZs
YWdzLnZpc2liaWxpdHkpOyB9CiAgICAgVmVydGljYWxBbGlnbiB2ZXJ0aWNhbEFsaWduKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VmVydGljYWxBbGlnbj4obV9ub25Jbmhlcml0ZWRGbGFn
cy52ZXJ0aWNhbEFsaWduKTsgfQogICAgIGNvbnN0IExlbmd0aCYgdmVydGljYWxBbGlnbkxlbmd0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94RGF0YS0+dmVydGljYWxBbGlnbigpOyB9CiAKQEAgLTM2
Myw4ICszNjMsOCBAQCBwdWJsaWM6CiAgICAgRm9udFNlbGVjdGlvblZhbHVlIGZvbnRJdGFsaWMo
KSBjb25zdCB7IHJldHVybiBmb250RGVzY3JpcHRpb24oKS5pdGFsaWMoKTsgfQogCiAgICAgY29u
c3QgTGVuZ3RoJiB0ZXh0SW5kZW50KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0
YS0+aW5kZW50OyB9Ci0gICAgRVRleHRBbGlnbiB0ZXh0QWxpZ24oKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxFVGV4dEFsaWduPihtX2luaGVyaXRlZEZsYWdzLnRleHRBbGlnbik7IH0KLSAg
ICBFVGV4dFRyYW5zZm9ybSB0ZXh0VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8RVRleHRUcmFuc2Zvcm0+KG1faW5oZXJpdGVkRmxhZ3MudGV4dFRyYW5zZm9ybSk7IH0KKyAg
ICBUZXh0QWxpZ25Nb2RlIHRleHRBbGlnbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRl
eHRBbGlnbk1vZGU+KG1faW5oZXJpdGVkRmxhZ3MudGV4dEFsaWduKTsgfQorICAgIFRleHRUcmFu
c2Zvcm0gdGV4dFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRUcmFu
c2Zvcm0+KG1faW5oZXJpdGVkRmxhZ3MudGV4dFRyYW5zZm9ybSk7IH0KICAgICBUZXh0RGVjb3Jh
dGlvbiB0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PFRleHREZWNvcmF0aW9uPihtX2luaGVyaXRlZEZsYWdzLnRleHREZWNvcmF0aW9ucyk7IH0KICAg
ICBUZXh0RGVjb3JhdGlvbiB0ZXh0RGVjb3JhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PFRleHREZWNvcmF0aW9uPihtX3Zpc3VhbERhdGEtPnRleHREZWNvcmF0aW9uKTsgfQogICAg
IFRleHREZWNvcmF0aW9uU3R5bGUgdGV4dERlY29yYXRpb25TdHlsZSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFRleHREZWNvcmF0aW9uU3R5bGU+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PnRleHREZWNvcmF0aW9uU3R5bGUpOyB9CkBAIC0zOTQsMTIgKzM5NCwxMiBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgTGVuZ3RoJiBsaW5lSGVpZ2h0KCkgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgaW50IGNvbXB1dGVkTGluZUhlaWdodCgpIGNvbnN0OwogCi0gICAgRVdo
aXRlU3BhY2Ugd2hpdGVTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVXaGl0ZVNw
YWNlPihtX2luaGVyaXRlZEZsYWdzLndoaXRlU3BhY2UpOyB9Ci0gICAgc3RhdGljIGJvb2wgYXV0
b1dyYXAoRVdoaXRlU3BhY2UpOworICAgIFdoaXRlU3BhY2Ugd2hpdGVTcGFjZSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PFdoaXRlU3BhY2U+KG1faW5oZXJpdGVkRmxhZ3Mud2hpdGVTcGFj
ZSk7IH0KKyAgICBzdGF0aWMgYm9vbCBhdXRvV3JhcChXaGl0ZVNwYWNlKTsKICAgICBib29sIGF1
dG9XcmFwKCkgY29uc3QgeyByZXR1cm4gYXV0b1dyYXAod2hpdGVTcGFjZSgpKTsgfQotICAgIHN0
YXRpYyBib29sIHByZXNlcnZlTmV3bGluZShFV2hpdGVTcGFjZSk7CisgICAgc3RhdGljIGJvb2wg
cHJlc2VydmVOZXdsaW5lKFdoaXRlU3BhY2UpOwogICAgIGJvb2wgcHJlc2VydmVOZXdsaW5lKCkg
Y29uc3QgeyByZXR1cm4gcHJlc2VydmVOZXdsaW5lKHdoaXRlU3BhY2UoKSk7IH0KLSAgICBzdGF0
aWMgYm9vbCBjb2xsYXBzZVdoaXRlU3BhY2UoRVdoaXRlU3BhY2UpOworICAgIHN0YXRpYyBib29s
IGNvbGxhcHNlV2hpdGVTcGFjZShXaGl0ZVNwYWNlKTsKICAgICBib29sIGNvbGxhcHNlV2hpdGVT
cGFjZSgpIGNvbnN0IHsgcmV0dXJuIGNvbGxhcHNlV2hpdGVTcGFjZSh3aGl0ZVNwYWNlKCkpOyB9
CiAgICAgYm9vbCBpc0NvbGxhcHNpYmxlV2hpdGVTcGFjZShVQ2hhcikgY29uc3Q7CiAgICAgYm9v
bCBicmVha09ubHlBZnRlcldoaXRlU3BhY2UoKSBjb25zdDsKQEAgLTQzNiwxMiArNDM2LDEyIEBA
IHB1YmxpYzoKICAgICBCb3JkZXJDb2xsYXBzZSBib3JkZXJDb2xsYXBzZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEJvcmRlckNvbGxhcHNlPihtX2luaGVyaXRlZEZsYWdzLmJvcmRlckNv
bGxhcHNlKTsgfQogICAgIGZsb2F0IGhvcml6b250YWxCb3JkZXJTcGFjaW5nKCkgY29uc3Q7CiAg
ICAgZmxvYXQgdmVydGljYWxCb3JkZXJTcGFjaW5nKCkgY29uc3Q7Ci0gICAgRUVtcHR5Q2VsbCBl
bXB0eUNlbGxzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUVtcHR5Q2VsbD4obV9pbmhl
cml0ZWRGbGFncy5lbXB0eUNlbGxzKTsgfQotICAgIEVDYXB0aW9uU2lkZSBjYXB0aW9uU2lkZSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVDYXB0aW9uU2lkZT4obV9pbmhlcml0ZWRGbGFn
cy5jYXB0aW9uU2lkZSk7IH0KKyAgICBFbXB0eUNlbGwgZW1wdHlDZWxscygpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEVtcHR5Q2VsbD4obV9pbmhlcml0ZWRGbGFncy5lbXB0eUNlbGxzKTsg
fQorICAgIENhcHRpb25TaWRlIGNhcHRpb25TaWRlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8Q2FwdGlvblNpZGU+KG1faW5oZXJpdGVkRmxhZ3MuY2FwdGlvblNpZGUpOyB9CiAKLSAgICBF
TGlzdFN0eWxlVHlwZSBsaXN0U3R5bGVUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
RUxpc3RTdHlsZVR5cGU+KG1faW5oZXJpdGVkRmxhZ3MubGlzdFN0eWxlVHlwZSk7IH0KKyAgICBM
aXN0U3R5bGVUeXBlIGxpc3RTdHlsZVR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxM
aXN0U3R5bGVUeXBlPihtX2luaGVyaXRlZEZsYWdzLmxpc3RTdHlsZVR5cGUpOyB9CiAgICAgU3R5
bGVJbWFnZSogbGlzdFN0eWxlSW1hZ2UoKSBjb25zdDsKLSAgICBFTGlzdFN0eWxlUG9zaXRpb24g
bGlzdFN0eWxlUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFTGlzdFN0eWxl
UG9zaXRpb24+KG1faW5oZXJpdGVkRmxhZ3MubGlzdFN0eWxlUG9zaXRpb24pOyB9CisgICAgTGlz
dFN0eWxlUG9zaXRpb24gbGlzdFN0eWxlUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxMaXN0U3R5bGVQb3NpdGlvbj4obV9pbmhlcml0ZWRGbGFncy5saXN0U3R5bGVQb3NpdGlv
bik7IH0KIAogICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luVG9wKCkgY29uc3QgeyByZXR1cm4gbV9z
dXJyb3VuZERhdGEtPm1hcmdpbi50b3AoKTsgfQogICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luQm90
dG9tKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm1hcmdpbi5ib3R0b20oKTsgfQpA
QCAtNDY2LDcgKzQ2Niw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdTdGFy
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5wYWRkaW5nLnN0YXJ0KHdyaXRpbmdN
b2RlKCksIGRpcmVjdGlvbigpKTsgfQogICAgIGNvbnN0IExlbmd0aCYgcGFkZGluZ0VuZCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5wYWRkaW5nLmVuZCh3cml0aW5nTW9kZSgpLCBk
aXJlY3Rpb24oKSk7IH0KIAotICAgIEVDdXJzb3IgY3Vyc29yKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8RUN1cnNvcj4obV9pbmhlcml0ZWRGbGFncy5jdXJzb3IpOyB9CisgICAgQ3Vyc29y
VHlwZSBjdXJzb3IoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDdXJzb3JUeXBlPihtX2lu
aGVyaXRlZEZsYWdzLmN1cnNvcik7IH0KIAogI2lmIEVOQUJMRShDVVJTT1JfVklTSUJJTElUWSkK
ICAgICBDdXJzb3JWaXNpYmlsaXR5IGN1cnNvclZpc2liaWxpdHkoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxDdXJzb3JWaXNpYmlsaXR5PihtX2luaGVyaXRlZEZsYWdzLmN1cnNvclZpc2li
aWxpdHkpOyB9CkBAIC00NzQsNyArNDc0LDcgQEAgcHVibGljOgogCiAgICAgQ3Vyc29yTGlzdCog
Y3Vyc29ycygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmN1cnNvckRhdGEu
Z2V0KCk7IH0KIAotICAgIEVJbnNpZGVMaW5rIGluc2lkZUxpbmsoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxFSW5zaWRlTGluaz4obV9pbmhlcml0ZWRGbGFncy5pbnNpZGVMaW5rKTsgfQor
ICAgIEluc2lkZUxpbmsgaW5zaWRlTGluaygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PElu
c2lkZUxpbms+KG1faW5oZXJpdGVkRmxhZ3MuaW5zaWRlTGluayk7IH0KICAgICBib29sIGlzTGlu
aygpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MuaXNMaW5rOyB9CiAKICAgICBi
b29sIGluc2lkZURlZmF1bHRCdXR0b24oKSBjb25zdCB7IHJldHVybiBtX2luaGVyaXRlZEZsYWdz
Lmluc2lkZURlZmF1bHRCdXR0b247IH0KQEAgLTU5Miw3ICs1OTIsNyBAQCBwdWJsaWM6CiAgICAg
c2hvcnQgaHlwaGVuYXRpb25MaW1pdExpbmVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJp
dGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdExpbmVzOyB9CiAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBoeXBoZW5hdGlvblN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEt
Pmh5cGhlbmF0aW9uU3RyaW5nOyB9CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUoKSBj
b25zdCB7IHJldHVybiBmb250RGVzY3JpcHRpb24oKS5sb2NhbGUoKTsgfQotICAgIEVCb3JkZXJG
aXQgYm9yZGVyRml0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJvcmRlckZpdD4obV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+Ym9yZGVyRml0KTsgfQorICAgIEJvcmRlckZpdCBib3JkZXJG
aXQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCb3JkZXJGaXQ+KG1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPmJvcmRlckZpdCk7IH0KICAgICBSZXNpemUgcmVzaXplKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8UmVzaXplPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5yZXNpemUpOyB9
CiAgICAgQ29sdW1uQXhpcyBjb2x1bW5BeGlzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
Q29sdW1uQXhpcz4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bXVsdGlDb2wtPmF4aXMpOyB9CiAg
ICAgYm9vbCBoYXNJbmxpbmVDb2x1bW5BeGlzKCkgY29uc3Q7CkBAIC02NTEsNyArNjUxLDcgQEAg
cHVibGljOgogICAgIExpbmVTbmFwIGxpbmVTbmFwKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8TGluZVNuYXA+KG1fcmFyZUluaGVyaXRlZERhdGEtPmxpbmVTbmFwKTsgfQogICAgIExpbmVB
bGlnbiBsaW5lQWxpZ24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxMaW5lQWxpZ24+KG1f
cmFyZUluaGVyaXRlZERhdGEtPmxpbmVBbGlnbik7IH0KIAotICAgIEVQb2ludGVyRXZlbnRzIHBv
aW50ZXJFdmVudHMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFUG9pbnRlckV2ZW50cz4o
bV9pbmhlcml0ZWRGbGFncy5wb2ludGVyRXZlbnRzKTsgfQorICAgIFBvaW50ZXJFdmVudHMgcG9p
bnRlckV2ZW50cygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFBvaW50ZXJFdmVudHM+KG1f
aW5oZXJpdGVkRmxhZ3MucG9pbnRlckV2ZW50cyk7IH0KICAgICBjb25zdCBBbmltYXRpb25MaXN0
KiBhbmltYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YW5p
bWF0aW9ucy5nZXQoKTsgfQogICAgIGNvbnN0IEFuaW1hdGlvbkxpc3QqIHRyYW5zaXRpb25zKCkg
Y29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNpdGlvbnMuZ2V0KCk7
IH0KIApAQCAtNzk2LDggKzc5Niw4IEBAIHB1YmxpYzoKIAogLy8gYXR0cmlidXRlIHNldHRlciBt
ZXRob2RzCiAKLSAgICB2b2lkIHNldERpc3BsYXkoRURpc3BsYXkgdikgeyBtX25vbkluaGVyaXRl
ZEZsYWdzLmVmZmVjdGl2ZURpc3BsYXkgPSB2OyB9Ci0gICAgdm9pZCBzZXRPcmlnaW5hbERpc3Bs
YXkoRURpc3BsYXkgdikgeyBtX25vbkluaGVyaXRlZEZsYWdzLm9yaWdpbmFsRGlzcGxheSA9IHY7
IH0KKyAgICB2b2lkIHNldERpc3BsYXkoRGlzcGxheVR5cGUgdikgeyBtX25vbkluaGVyaXRlZEZs
YWdzLmVmZmVjdGl2ZURpc3BsYXkgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odik7IH0KKyAgICB2
b2lkIHNldE9yaWdpbmFsRGlzcGxheShEaXNwbGF5VHlwZSB2KSB7IG1fbm9uSW5oZXJpdGVkRmxh
Z3Mub3JpZ2luYWxEaXNwbGF5ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYpOyB9CiAgICAgdm9p
ZCBzZXRQb3NpdGlvbihQb3NpdGlvblR5cGUgdikgeyBtX25vbkluaGVyaXRlZEZsYWdzLnBvc2l0
aW9uID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYpOyB9CiAgICAgdm9pZCBzZXRGbG9hdGluZyhG
bG9hdCB2KSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxvYXRpbmcgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4odik7IH0KIApAQCAtODgyLDcgKzg4Miw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0
T3ZlcmZsb3dYKE92ZXJmbG93IHYpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5vdmVyZmxvd1ggPSAg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYpOyB9CiAgICAgdm9pZCBzZXRPdmVyZmxvd1koT3ZlcmZs
b3cgdikgeyBtX25vbkluaGVyaXRlZEZsYWdzLm92ZXJmbG93WSA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPih2KTsgfQotICAgIHZvaWQgc2V0VmlzaWJpbGl0eShFVmlzaWJpbGl0eSB2KSB7IG1faW5o
ZXJpdGVkRmxhZ3MudmlzaWJpbGl0eSA9IHY7IH0KKyAgICB2b2lkIHNldFZpc2liaWxpdHkoVmlz
aWJpbGl0eSB2KSB7IG1faW5oZXJpdGVkRmxhZ3MudmlzaWJpbGl0eSA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPih2KTsgfQogICAgIHZvaWQgc2V0VmVydGljYWxBbGlnbihWZXJ0aWNhbEFsaWduIHYp
IHsgbV9ub25Jbmhlcml0ZWRGbGFncy52ZXJ0aWNhbEFsaWduID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHYpOyB9CiAgICAgdm9pZCBzZXRWZXJ0aWNhbEFsaWduTGVuZ3RoKExlbmd0aCYmIGxlbmd0
aCkgeyBzZXRWZXJ0aWNhbEFsaWduKFZlcnRpY2FsQWxpZ246Okxlbmd0aCk7IFNFVF9WQVIobV9i
b3hEYXRhLCBtX3ZlcnRpY2FsQWxpZ24sIFdURk1vdmUobGVuZ3RoKSk7IH0KIApAQCAtOTEzLDIx
ICs5MTMsMjEgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRDb2xvcihjb25zdCBDb2xvciYpOwog
ICAgIHZvaWQgc2V0VGV4dEluZGVudChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3JhcmVJ
bmhlcml0ZWREYXRhLCBpbmRlbnQsIFdURk1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldFRl
eHRBbGlnbihFVGV4dEFsaWduIHYpIHsgbV9pbmhlcml0ZWRGbGFncy50ZXh0QWxpZ24gPSB2OyB9
Ci0gICAgdm9pZCBzZXRUZXh0VHJhbnNmb3JtKEVUZXh0VHJhbnNmb3JtIHYpIHsgbV9pbmhlcml0
ZWRGbGFncy50ZXh0VHJhbnNmb3JtID0gdjsgfQorICAgIHZvaWQgc2V0VGV4dEFsaWduKFRleHRB
bGlnbk1vZGUgdikgeyBtX2luaGVyaXRlZEZsYWdzLnRleHRBbGlnbiA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPih2KTsgfQorICAgIHZvaWQgc2V0VGV4dFRyYW5zZm9ybShUZXh0VHJhbnNmb3JtIHYp
IHsgbV9pbmhlcml0ZWRGbGFncy50ZXh0VHJhbnNmb3JtID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHYpOyB9CiAgICAgdm9pZCBhZGRUb1RleHREZWNvcmF0aW9uc0luRWZmZWN0KFRleHREZWNvcmF0
aW9uIHYpIHsgbV9pbmhlcml0ZWRGbGFncy50ZXh0RGVjb3JhdGlvbnMgfD0gdjsgfQogICAgIHZv
aWQgc2V0VGV4dERlY29yYXRpb25zSW5FZmZlY3QoVGV4dERlY29yYXRpb24gdikgeyBtX2luaGVy
aXRlZEZsYWdzLnRleHREZWNvcmF0aW9ucyA9IHY7IH0KICAgICB2b2lkIHNldFRleHREZWNvcmF0
aW9uKFRleHREZWNvcmF0aW9uIHYpIHsgU0VUX1ZBUihtX3Zpc3VhbERhdGEsIHRleHREZWNvcmF0
aW9uLCB2KTsgfQotICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb25TdHlsZShUZXh0RGVjb3JhdGlv
blN0eWxlIHYpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCB0ZXh0RGVjb3JhdGlv
blN0eWxlLCB2KTsgfQotICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb25Ta2lwKFRleHREZWNvcmF0
aW9uU2tpcCBza2lwKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dERlY29yYXRp
b25Ta2lwLCBza2lwKTsgfQotICAgIHZvaWQgc2V0VGV4dFVuZGVybGluZVBvc2l0aW9uKFRleHRV
bmRlcmxpbmVQb3NpdGlvbiB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dFVu
ZGVybGluZVBvc2l0aW9uLCB2KTsgfQotICAgIHZvaWQgc2V0RGlyZWN0aW9uKFRleHREaXJlY3Rp
b24gdikgeyBtX2luaGVyaXRlZEZsYWdzLmRpcmVjdGlvbiA9IHY7IH0KKyAgICB2b2lkIHNldFRl
eHREZWNvcmF0aW9uU3R5bGUoVGV4dERlY29yYXRpb25TdHlsZSB2KSB7IFNFVF9WQVIobV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgdGV4dERlY29yYXRpb25TdHlsZSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHYpKTsgfQorICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb25Ta2lwKFRleHREZWNvcmF0aW9u
U2tpcCBza2lwKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dERlY29yYXRpb25T
a2lwLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2tpcCkpOyB9CisgICAgdm9pZCBzZXRUZXh0VW5k
ZXJsaW5lUG9zaXRpb24oVGV4dFVuZGVybGluZVBvc2l0aW9uIHYpIHsgU0VUX1ZBUihtX3JhcmVJ
bmhlcml0ZWREYXRhLCB0ZXh0VW5kZXJsaW5lUG9zaXRpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVk
Pih2KSk7IH0KKyAgICB2b2lkIHNldERpcmVjdGlvbihUZXh0RGlyZWN0aW9uIHYpIHsgbV9pbmhl
cml0ZWRGbGFncy5kaXJlY3Rpb24gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odik7IH0KICAgICB2
b2lkIHNldEhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb24oYm9vbCB2KSB7IG1fbm9uSW5oZXJpdGVk
RmxhZ3MuaGFzRXhwbGljaXRseVNldERpcmVjdGlvbiA9IHY7IH0KICAgICB2b2lkIHNldExpbmVI
ZWlnaHQoTGVuZ3RoJiYpOwogICAgIGJvb2wgc2V0Wm9vbShmbG9hdCk7CiAgICAgdm9pZCBzZXRa
b29tV2l0aG91dFJldHVyblZhbHVlKGZsb2F0IGYpIHsgc2V0Wm9vbShmKTsgfQogICAgIGJvb2wg
c2V0RWZmZWN0aXZlWm9vbShmbG9hdCk7Ci0gICAgdm9pZCBzZXRUZXh0Wm9vbShUZXh0Wm9vbSB2
KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dFpvb20sIHYpOyB9CisgICAgdm9p
ZCBzZXRUZXh0Wm9vbShUZXh0Wm9vbSB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwg
dGV4dFpvb20sIHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KSk7IH0KIAogI2lmIEVOQUJMRShDU1Mz
X1RFWFQpCiAgICAgdm9pZCBzZXRUZXh0SW5kZW50TGluZShUZXh0SW5kZW50TGluZSB2KSB7IFNF
VF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEluZGVudExpbmUsIHYpOyB9CkBAIC05NTIs
NyArOTUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SW1hZ2VSZXNvbHV0aW9uKGZsb2F0IGYp
IHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBpbWFnZVJlc29sdXRpb24sIGYpOyB9CiAj
ZW5kaWYKIAotICAgIHZvaWQgc2V0V2hpdGVTcGFjZShFV2hpdGVTcGFjZSB2KSB7IG1faW5oZXJp
dGVkRmxhZ3Mud2hpdGVTcGFjZSA9IHY7IH0KKyAgICB2b2lkIHNldFdoaXRlU3BhY2UoV2hpdGVT
cGFjZSB2KSB7IG1faW5oZXJpdGVkRmxhZ3Mud2hpdGVTcGFjZSA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPih2KTsgfQogCiAgICAgdm9pZCBzZXRXb3JkU3BhY2luZyhMZW5ndGgmJik7CiAgICAgdm9p
ZCBzZXRMZXR0ZXJTcGFjaW5nKGZsb2F0KTsKQEAgLTk3OCwxNiArOTc4LDE2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldEJvcmRlckNvbGxhcHNlKEJvcmRlckNvbGxhcHNlIGNvbGxhcHNlKSB7IG1f
aW5oZXJpdGVkRmxhZ3MuYm9yZGVyQ29sbGFwc2UgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29s
bGFwc2UpOyB9CiAgICAgdm9pZCBzZXRIb3Jpem9udGFsQm9yZGVyU3BhY2luZyhmbG9hdCk7CiAg
ICAgdm9pZCBzZXRWZXJ0aWNhbEJvcmRlclNwYWNpbmcoZmxvYXQpOwotICAgIHZvaWQgc2V0RW1w
dHlDZWxscyhFRW1wdHlDZWxsIHYpIHsgbV9pbmhlcml0ZWRGbGFncy5lbXB0eUNlbGxzID0gdjsg
fQotICAgIHZvaWQgc2V0Q2FwdGlvblNpZGUoRUNhcHRpb25TaWRlIHYpIHsgbV9pbmhlcml0ZWRG
bGFncy5jYXB0aW9uU2lkZSA9IHY7IH0KKyAgICB2b2lkIHNldEVtcHR5Q2VsbHMoRW1wdHlDZWxs
IHYpIHsgbV9pbmhlcml0ZWRGbGFncy5lbXB0eUNlbGxzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHYpOyB9CisgICAgdm9pZCBzZXRDYXB0aW9uU2lkZShDYXB0aW9uU2lkZSB2KSB7IG1faW5oZXJp
dGVkRmxhZ3MuY2FwdGlvblNpZGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odik7IH0KIAogICAg
IHZvaWQgc2V0QXNwZWN0UmF0aW9UeXBlKEFzcGVjdFJhdGlvVHlwZSBhc3BlY3RSYXRpb1R5cGUp
IHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBhc3BlY3RSYXRpb1R5cGUsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihhc3BlY3RSYXRpb1R5cGUpKTsgfQogICAgIHZvaWQgc2V0QXNwZWN0
UmF0aW9EZW5vbWluYXRvcihmbG9hdCB2KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0
YSwgYXNwZWN0UmF0aW9EZW5vbWluYXRvciwgdik7IH0KICAgICB2b2lkIHNldEFzcGVjdFJhdGlv
TnVtZXJhdG9yKGZsb2F0IHYpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBhc3Bl
Y3RSYXRpb051bWVyYXRvciwgdik7IH0KIAotICAgIHZvaWQgc2V0TGlzdFN0eWxlVHlwZShFTGlz
dFN0eWxlVHlwZSB2KSB7IG1faW5oZXJpdGVkRmxhZ3MubGlzdFN0eWxlVHlwZSA9IHY7IH0KKyAg
ICB2b2lkIHNldExpc3RTdHlsZVR5cGUoTGlzdFN0eWxlVHlwZSB2KSB7IG1faW5oZXJpdGVkRmxh
Z3MubGlzdFN0eWxlVHlwZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KTsgfQogICAgIHZvaWQg
c2V0TGlzdFN0eWxlSW1hZ2UoUmVmUHRyPFN0eWxlSW1hZ2U+JiYpOwotICAgIHZvaWQgc2V0TGlz
dFN0eWxlUG9zaXRpb24oRUxpc3RTdHlsZVBvc2l0aW9uIHYpIHsgbV9pbmhlcml0ZWRGbGFncy5s
aXN0U3R5bGVQb3NpdGlvbiA9IHY7IH0KKyAgICB2b2lkIHNldExpc3RTdHlsZVBvc2l0aW9uKExp
c3RTdHlsZVBvc2l0aW9uIHYpIHsgbV9pbmhlcml0ZWRGbGFncy5saXN0U3R5bGVQb3NpdGlvbiA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KTsgfQogCiAgICAgdm9pZCByZXNldE1hcmdpbigpIHsg
U0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgbWFyZ2luLCBMZW5ndGhCb3goRml4ZWQpKTsgfQogICAg
IHZvaWQgc2V0TWFyZ2luVG9wKExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fc3Vycm91bmRE
YXRhLCBtYXJnaW4udG9wKCksIFdURk1vdmUobGVuZ3RoKSk7IH0KQEAgLTEwMDQsMTYgKzEwMDQs
MTYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGFkZGluZ0xlZnQoTGVuZ3RoJiYgbGVuZ3RoKSB7
IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIHBhZGRpbmcubGVmdCgpLCBXVEZNb3ZlKGxlbmd0aCkp
OyB9CiAgICAgdm9pZCBzZXRQYWRkaW5nUmlnaHQoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIo
bV9zdXJyb3VuZERhdGEsIHBhZGRpbmcucmlnaHQoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQogCi0g
ICAgdm9pZCBzZXRDdXJzb3IoRUN1cnNvciBjKSB7IG1faW5oZXJpdGVkRmxhZ3MuY3Vyc29yID0g
YzsgfQorICAgIHZvaWQgc2V0Q3Vyc29yKEN1cnNvclR5cGUgYykgeyBtX2luaGVyaXRlZEZsYWdz
LmN1cnNvciA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjKTsgfQogICAgIHZvaWQgYWRkQ3Vyc29y
KFJlZlB0cjxTdHlsZUltYWdlPiYmLCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCA9IEludFBvaW50
KCkpOwogICAgIHZvaWQgc2V0Q3Vyc29yTGlzdChSZWZQdHI8Q3Vyc29yTGlzdD4mJik7CiAgICAg
dm9pZCBjbGVhckN1cnNvckxpc3QoKTsKIAogI2lmIEVOQUJMRShDVVJTT1JfVklTSUJJTElUWSkK
LSAgICB2b2lkIHNldEN1cnNvclZpc2liaWxpdHkoQ3Vyc29yVmlzaWJpbGl0eSBjKSB7IG1faW5o
ZXJpdGVkRmxhZ3MuY3Vyc29yVmlzaWJpbGl0eSA9IGM7IH0KKyAgICB2b2lkIHNldEN1cnNvclZp
c2liaWxpdHkoQ3Vyc29yVmlzaWJpbGl0eSBjKSB7IG1faW5oZXJpdGVkRmxhZ3MuY3Vyc29yVmlz
aWJpbGl0eSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjKTsgfQogI2VuZGlmCiAKLSAgICB2b2lk
IHNldEluc2lkZUxpbmsoRUluc2lkZUxpbmsgaW5zaWRlTGluaykgeyBtX2luaGVyaXRlZEZsYWdz
Lmluc2lkZUxpbmsgPSBpbnNpZGVMaW5rOyB9CisgICAgdm9pZCBzZXRJbnNpZGVMaW5rKEluc2lk
ZUxpbmsgaW5zaWRlTGluaykgeyBtX2luaGVyaXRlZEZsYWdzLmluc2lkZUxpbmsgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oaW5zaWRlTGluayk7IH0KICAgICB2b2lkIHNldElzTGluayhib29sIHYp
IHsgbV9ub25Jbmhlcml0ZWRGbGFncy5pc0xpbmsgPSB2OyB9CiAKICAgICB2b2lkIHNldEluc2lk
ZURlZmF1bHRCdXR0b24oYm9vbCBpbnNpZGVEZWZhdWx0QnV0dG9uKSB7IG1faW5oZXJpdGVkRmxh
Z3MuaW5zaWRlRGVmYXVsdEJ1dHRvbiA9IGluc2lkZURlZmF1bHRCdXR0b247IH0KQEAgLTExMTYs
MTUgKzExMTYsMTUgQEAgcHVibGljOgogICAgIHZvaWQgc2V0T3ZlcmZsb3dXcmFwKE92ZXJmbG93
V3JhcCBiKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgb3ZlcmZsb3dXcmFwLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oYikpOyB9CiAgICAgdm9pZCBzZXROQlNQTW9kZShOQlNQTW9kZSBi
KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgbmJzcE1vZGUsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihiKSk7IH0KICAgICB2b2lkIHNldExpbmVCcmVhayhMaW5lQnJlYWsgYikgeyBTRVRf
VkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGxpbmVCcmVhaywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGIpKTsgfQotICAgIHZvaWQgc2V0SHlwaGVucyhIeXBoZW5zIGgpIHsgU0VUX1ZBUihtX3JhcmVJ
bmhlcml0ZWREYXRhLCBoeXBoZW5zLCBoKTsgfQorICAgIHZvaWQgc2V0SHlwaGVucyhIeXBoZW5z
IGgpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBoeXBoZW5zLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oaCkpOyB9CiAgICAgdm9pZCBzZXRIeXBoZW5hdGlvbkxpbWl0QmVmb3JlKHNob3J0
IGxpbWl0KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgaHlwaGVuYXRpb25MaW1pdEJl
Zm9yZSwgbGltaXQpOyB9CiAgICAgdm9pZCBzZXRIeXBoZW5hdGlvbkxpbWl0QWZ0ZXIoc2hvcnQg
bGltaXQpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBoeXBoZW5hdGlvbkxpbWl0QWZ0
ZXIsIGxpbWl0KTsgfQogICAgIHZvaWQgc2V0SHlwaGVuYXRpb25MaW1pdExpbmVzKHNob3J0IGxp
bWl0KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgaHlwaGVuYXRpb25MaW1pdExpbmVz
LCBsaW1pdCk7IH0KICAgICB2b2lkIHNldEh5cGhlbmF0aW9uU3RyaW5nKGNvbnN0IEF0b21pY1N0
cmluZyYgaCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGh5cGhlbmF0aW9uU3RyaW5n
LCBoKTsgfQotICAgIHZvaWQgc2V0Qm9yZGVyRml0KEVCb3JkZXJGaXQgYikgeyBTRVRfVkFSKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEsIGJvcmRlckZpdCwgYik7IH0KKyAgICB2b2lkIHNldEJvcmRl
ckZpdChCb3JkZXJGaXQgYikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGJvcmRl
ckZpdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGIpKTsgfQogICAgIHZvaWQgc2V0UmVzaXplKFJl
c2l6ZSByKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgcmVzaXplLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4ocikpOyB9Ci0gICAgdm9pZCBzZXRDb2x1bW5BeGlzKENvbHVtbkF4aXMg
YXhpcykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwg
YXhpcywgYXhpcyk7IH0KLSAgICB2b2lkIHNldENvbHVtblByb2dyZXNzaW9uKENvbHVtblByb2dy
ZXNzaW9uIHByb2dyZXNzaW9uKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERh
dGEsIG11bHRpQ29sLCBwcm9ncmVzc2lvbiwgcHJvZ3Jlc3Npb24pOyB9CisgICAgdm9pZCBzZXRD
b2x1bW5BeGlzKENvbHVtbkF4aXMgYXhpcykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLCBtdWx0aUNvbCwgYXhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGF4aXMpKTsg
fQorICAgIHZvaWQgc2V0Q29sdW1uUHJvZ3Jlc3Npb24oQ29sdW1uUHJvZ3Jlc3Npb24gcHJvZ3Jl
c3Npb24pIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbXVsdGlDb2ws
IHByb2dyZXNzaW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHJvZ3Jlc3Npb24pKTsgfQogICAg
IHZvaWQgc2V0Q29sdW1uV2lkdGgoZmxvYXQgZikgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBtdWx0aUNvbCwgYXV0b1dpZHRoLCBmYWxzZSk7IFNFVF9ORVNURURfVkFS
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11bHRpQ29sLCB3aWR0aCwgZik7IH0KICAgICB2b2lk
IHNldEhhc0F1dG9Db2x1bW5XaWR0aCgpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJp
dGVkRGF0YSwgbXVsdGlDb2wsIGF1dG9XaWR0aCwgdHJ1ZSk7IFNFVF9ORVNURURfVkFSKG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEsIG11bHRpQ29sLCB3aWR0aCwgMCk7IH0KICAgICB2b2lkIHNldENv
bHVtbkNvdW50KHVuc2lnbmVkIHNob3J0IGMpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgbXVsdGlDb2wsIGF1dG9Db3VudCwgZmFsc2UpOyBTRVRfTkVTVEVEX1ZBUiht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwgY291bnQsIGMpOyB9CkBAIC0xMTQ5LDgg
KzExNDksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUZXh0Q29tYmluZShUZXh0Q29tYmluZSB2
KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdGV4dENvbWJpbmUsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPih2KSk7IH0KICAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uQ29sb3IoY29u
c3QgQ29sb3ImIGMpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCB0ZXh0RGVjb3Jh
dGlvbkNvbG9yLCBjKTsgfQogICAgIHZvaWQgc2V0VGV4dEVtcGhhc2lzQ29sb3IoY29uc3QgQ29s
b3ImIGMpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RW1waGFzaXNDb2xvciwg
Yyk7IH0KLSAgICB2b2lkIHNldFRleHRFbXBoYXNpc0ZpbGwoVGV4dEVtcGhhc2lzRmlsbCBmaWxs
KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEVtcGhhc2lzRmlsbCwgZmlsbCk7
IH0KLSAgICB2b2lkIHNldFRleHRFbXBoYXNpc01hcmsoVGV4dEVtcGhhc2lzTWFyayBtYXJrKSB7
IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEVtcGhhc2lzTWFyaywgbWFyayk7IH0K
KyAgICB2b2lkIHNldFRleHRFbXBoYXNpc0ZpbGwoVGV4dEVtcGhhc2lzRmlsbCBmaWxsKSB7IFNF
VF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEVtcGhhc2lzRmlsbCwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGZpbGwpKTsgfQorICAgIHZvaWQgc2V0VGV4dEVtcGhhc2lzTWFyayhUZXh0RW1w
aGFzaXNNYXJrIG1hcmspIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RW1waGFz
aXNNYXJrLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obWFyaykpOyB9CiAgICAgdm9pZCBzZXRUZXh0
RW1waGFzaXNDdXN0b21NYXJrKGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaykgeyBTRVRfVkFSKG1f
cmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBoYXNpc0N1c3RvbU1hcmssIG1hcmspOyB9CiAgICAg
dm9pZCBzZXRUZXh0RW1waGFzaXNQb3NpdGlvbihUZXh0RW1waGFzaXNQb3NpdGlvbiBwb3NpdGlv
bikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBoYXNpc1Bvc2l0aW9uLCBw
b3NpdGlvbik7IH0KICAgICBib29sIHNldFRleHRPcmllbnRhdGlvbihUZXh0T3JpZW50YXRpb24p
OwpAQCAtMTE1OCw3ICsxMTU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0T2JqZWN0Rml0KE9i
amVjdEZpdCBmaXQpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBvYmplY3RGaXQs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihmaXQpKTsgfQogICAgIHZvaWQgc2V0T2JqZWN0UG9zaXRp
b24oTGVuZ3RoUG9pbnQmJiBwb3NpdGlvbikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERh
dGEsIG9iamVjdFBvc2l0aW9uLCBXVEZNb3ZlKHBvc2l0aW9uKSk7IH0KIAotICAgIHZvaWQgc2V0
UnVieVBvc2l0aW9uKFJ1YnlQb3NpdGlvbiBwb3NpdGlvbikgeyBTRVRfVkFSKG1fcmFyZUluaGVy
aXRlZERhdGEsIHJ1YnlQb3NpdGlvbiwgcG9zaXRpb24pOyB9CisgICAgdm9pZCBzZXRSdWJ5UG9z
aXRpb24oUnVieVBvc2l0aW9uIHBvc2l0aW9uKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0
YSwgcnVieVBvc2l0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9zaXRpb24pKTsgfQogCiAg
ICAgdm9pZCBzZXRGaWx0ZXIoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BzKSB7IFNFVF9ORVNU
RURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGZpbHRlciwgb3BlcmF0aW9ucywgb3BzKTsg
fQogICAgIHZvaWQgc2V0Q29sb3JGaWx0ZXIoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BzKSB7
IFNFVF9ORVNURURfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGNvbG9yRmlsdGVyLCBvcGVyYXRp
b25zLCBvcHMpOyB9CkBAIC0xMTY5LDE5ICsxMTY5LDE5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
c2V0VGFiU2l6ZSh1bnNpZ25lZCBzaXplKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwg
dGFiU2l6ZSwgc2l6ZSk7IH0KIAotICAgIHZvaWQgc2V0QnJlYWtCZWZvcmUoQnJlYWtCZXR3ZWVu
IGJyZWFrQmVoYXZpb3IpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBicmVha0Jl
Zm9yZSwgYnJlYWtCZWhhdmlvcik7IH0KLSAgICB2b2lkIHNldEJyZWFrQWZ0ZXIoQnJlYWtCZXR3
ZWVuIGJyZWFrQmVoYXZpb3IpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBicmVh
a0FmdGVyLCBicmVha0JlaGF2aW9yKTsgfQotICAgIHZvaWQgc2V0QnJlYWtJbnNpZGUoQnJlYWtJ
bnNpZGUgYnJlYWtCZWhhdmlvcikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGJy
ZWFrSW5zaWRlLCBicmVha0JlaGF2aW9yKTsgfQorICAgIHZvaWQgc2V0QnJlYWtCZWZvcmUoQnJl
YWtCZXR3ZWVuIGJyZWFrQmVoYXZpb3IpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LCBicmVha0JlZm9yZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJyZWFrQmVoYXZpb3IpKTsgfQor
ICAgIHZvaWQgc2V0QnJlYWtBZnRlcihCcmVha0JldHdlZW4gYnJlYWtCZWhhdmlvcikgeyBTRVRf
VkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGJyZWFrQWZ0ZXIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihicmVha0JlaGF2aW9yKSk7IH0KKyAgICB2b2lkIHNldEJyZWFrSW5zaWRlKEJyZWFrSW5z
aWRlIGJyZWFrQmVoYXZpb3IpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBicmVh
a0luc2lkZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJyZWFrQmVoYXZpb3IpKTsgfQogICAgIAot
ICAgIHZvaWQgc2V0SGFuZ2luZ1B1bmN0dWF0aW9uKEhhbmdpbmdQdW5jdHVhdGlvbiBwdW5jdHVh
dGlvbikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGhhbmdpbmdQdW5jdHVhdGlvbiwg
cHVuY3R1YXRpb24pOyB9CisgICAgdm9pZCBzZXRIYW5naW5nUHVuY3R1YXRpb24oSGFuZ2luZ1B1
bmN0dWF0aW9uIHB1bmN0dWF0aW9uKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgaGFu
Z2luZ1B1bmN0dWF0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHVuY3R1YXRpb24pKTsgfQog
CiAgICAgLy8gRW5kIENTUzMgU2V0dGVycwogCiAgICAgdm9pZCBzZXRMaW5lR3JpZChjb25zdCBB
dG9taWNTdHJpbmcmIGxpbmVHcmlkKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgbGlu
ZUdyaWQsIGxpbmVHcmlkKTsgfQotICAgIHZvaWQgc2V0TGluZVNuYXAoTGluZVNuYXAgbGluZVNu
YXApIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBsaW5lU25hcCwgbGluZVNuYXApOyB9
Ci0gICAgdm9pZCBzZXRMaW5lQWxpZ24oTGluZUFsaWduIGxpbmVBbGlnbikgeyBTRVRfVkFSKG1f
cmFyZUluaGVyaXRlZERhdGEsIGxpbmVBbGlnbiwgbGluZUFsaWduKTsgfQorICAgIHZvaWQgc2V0
TGluZVNuYXAoTGluZVNuYXAgbGluZVNuYXApIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRh
LCBsaW5lU25hcCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxpbmVTbmFwKSk7IH0KKyAgICB2b2lk
IHNldExpbmVBbGlnbihMaW5lQWxpZ24gbGluZUFsaWduKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJp
dGVkRGF0YSwgbGluZUFsaWduLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGluZUFsaWduKSk7IH0K
IAotICAgIHZvaWQgc2V0UG9pbnRlckV2ZW50cyhFUG9pbnRlckV2ZW50cyBwKSB7IG1faW5oZXJp
dGVkRmxhZ3MucG9pbnRlckV2ZW50cyA9IHA7IH0KKyAgICB2b2lkIHNldFBvaW50ZXJFdmVudHMo
UG9pbnRlckV2ZW50cyBwKSB7IG1faW5oZXJpdGVkRmxhZ3MucG9pbnRlckV2ZW50cyA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihwKTsgfQogCiAgICAgdm9pZCBjbGVhckFuaW1hdGlvbnMoKTsKICAg
ICB2b2lkIGNsZWFyVHJhbnNpdGlvbnMoKTsKQEAgLTE0MjcsMTMgKzE0MjcsMTMgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBPdmVyZmxvdyBpbml0aWFsT3ZlcmZsb3dYKCkgeyByZXR1cm4gT3ZlcmZs
b3c6OlZpc2libGU7IH0KICAgICBzdGF0aWMgT3ZlcmZsb3cgaW5pdGlhbE92ZXJmbG93WSgpIHsg
cmV0dXJuIE92ZXJmbG93OjpWaXNpYmxlOyB9CiAgICAgc3RhdGljIENsZWFyIGluaXRpYWxDbGVh
cigpIHsgcmV0dXJuIENsZWFyOjpOb25lOyB9Ci0gICAgc3RhdGljIEVEaXNwbGF5IGluaXRpYWxE
aXNwbGF5KCkgeyByZXR1cm4gSU5MSU5FOyB9CisgICAgc3RhdGljIERpc3BsYXlUeXBlIGluaXRp
YWxEaXNwbGF5KCkgeyByZXR1cm4gRGlzcGxheVR5cGU6OklubGluZTsgfQogICAgIHN0YXRpYyBF
VW5pY29kZUJpZGkgaW5pdGlhbFVuaWNvZGVCaWRpKCkgeyByZXR1cm4gVUJOb3JtYWw7IH0KICAg
ICBzdGF0aWMgUG9zaXRpb25UeXBlIGluaXRpYWxQb3NpdGlvbigpIHsgcmV0dXJuIFBvc2l0aW9u
VHlwZTo6U3RhdGljOyB9CiAgICAgc3RhdGljIFZlcnRpY2FsQWxpZ24gaW5pdGlhbFZlcnRpY2Fs
QWxpZ24oKSB7IHJldHVybiBWZXJ0aWNhbEFsaWduOjpCYXNlbGluZTsgfQogICAgIHN0YXRpYyBG
bG9hdCBpbml0aWFsRmxvYXRpbmcoKSB7IHJldHVybiBGbG9hdDo6Tm87IH0KLSAgICBzdGF0aWMg
QnJlYWtCZXR3ZWVuIGluaXRpYWxCcmVha0JldHdlZW4oKSB7IHJldHVybiBBdXRvQnJlYWtCZXR3
ZWVuOyB9Ci0gICAgc3RhdGljIEJyZWFrSW5zaWRlIGluaXRpYWxCcmVha0luc2lkZSgpIHsgcmV0
dXJuIEF1dG9CcmVha0luc2lkZTsgfQorICAgIHN0YXRpYyBCcmVha0JldHdlZW4gaW5pdGlhbEJy
ZWFrQmV0d2VlbigpIHsgcmV0dXJuIEJyZWFrQmV0d2Vlbjo6QXV0bzsgfQorICAgIHN0YXRpYyBC
cmVha0luc2lkZSBpbml0aWFsQnJlYWtJbnNpZGUoKSB7IHJldHVybiBCcmVha0luc2lkZTo6QXV0
bzsgfQogICAgIHN0YXRpYyBIYW5naW5nUHVuY3R1YXRpb24gaW5pdGlhbEhhbmdpbmdQdW5jdHVh
dGlvbigpIHsgcmV0dXJuIE5vSGFuZ2luZ1B1bmN0dWF0aW9uOyB9CiAgICAgc3RhdGljIFRhYmxl
TGF5b3V0VHlwZSBpbml0aWFsVGFibGVMYXlvdXQoKSB7IHJldHVybiBUYWJsZUxheW91dFR5cGU6
OkF1dG87IH0KICAgICBzdGF0aWMgQm9yZGVyQ29sbGFwc2UgaW5pdGlhbEJvcmRlckNvbGxhcHNl
KCkgeyByZXR1cm4gQm9yZGVyQ29sbGFwc2U6OlNlcGFyYXRlOyB9CkBAIC0xNDQxLDI0ICsxNDQx
LDI0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgT3V0bGluZUlzQXV0byBpbml0aWFsT3V0bGluZVN0
eWxlSXNBdXRvKCkgeyByZXR1cm4gT3V0bGluZUlzQXV0bzo6T2ZmOyB9CiAgICAgc3RhdGljIE5p
bmVQaWVjZUltYWdlIGluaXRpYWxOaW5lUGllY2VJbWFnZSgpIHsgcmV0dXJuIE5pbmVQaWVjZUlt
YWdlKCk7IH0KICAgICBzdGF0aWMgTGVuZ3RoU2l6ZSBpbml0aWFsQm9yZGVyUmFkaXVzKCkgeyBy
ZXR1cm4geyB7IDAsIEZpeGVkIH0sIHsgMCwgRml4ZWQgfSB9OyB9Ci0gICAgc3RhdGljIEVDYXB0
aW9uU2lkZSBpbml0aWFsQ2FwdGlvblNpZGUoKSB7IHJldHVybiBDQVBUT1A7IH0KLSAgICBzdGF0
aWMgQ29sdW1uQXhpcyBpbml0aWFsQ29sdW1uQXhpcygpIHsgcmV0dXJuIEF1dG9Db2x1bW5BeGlz
OyB9Ci0gICAgc3RhdGljIENvbHVtblByb2dyZXNzaW9uIGluaXRpYWxDb2x1bW5Qcm9ncmVzc2lv
bigpIHsgcmV0dXJuIE5vcm1hbENvbHVtblByb2dyZXNzaW9uOyB9CisgICAgc3RhdGljIENhcHRp
b25TaWRlIGluaXRpYWxDYXB0aW9uU2lkZSgpIHsgcmV0dXJuIENhcHRpb25TaWRlOjpUb3A7IH0K
KyAgICBzdGF0aWMgQ29sdW1uQXhpcyBpbml0aWFsQ29sdW1uQXhpcygpIHsgcmV0dXJuIENvbHVt
bkF4aXM6OkF1dG87IH0KKyAgICBzdGF0aWMgQ29sdW1uUHJvZ3Jlc3Npb24gaW5pdGlhbENvbHVt
blByb2dyZXNzaW9uKCkgeyByZXR1cm4gQ29sdW1uUHJvZ3Jlc3Npb246Ok5vcm1hbDsgfQogICAg
IHN0YXRpYyBUZXh0RGlyZWN0aW9uIGluaXRpYWxEaXJlY3Rpb24oKSB7IHJldHVybiBMVFI7IH0K
ICAgICBzdGF0aWMgV3JpdGluZ01vZGUgaW5pdGlhbFdyaXRpbmdNb2RlKCkgeyByZXR1cm4gVG9w
VG9Cb3R0b21Xcml0aW5nTW9kZTsgfQogICAgIHN0YXRpYyBUZXh0Q29tYmluZSBpbml0aWFsVGV4
dENvbWJpbmUoKSB7IHJldHVybiBUZXh0Q29tYmluZTo6Tm9uZTsgfQogICAgIHN0YXRpYyBUZXh0
T3JpZW50YXRpb24gaW5pdGlhbFRleHRPcmllbnRhdGlvbigpIHsgcmV0dXJuIFRleHRPcmllbnRh
dGlvbjo6TWl4ZWQ7IH0KICAgICBzdGF0aWMgT2JqZWN0Rml0IGluaXRpYWxPYmplY3RGaXQoKSB7
IHJldHVybiBPYmplY3RGaXQ6OkZpbGw7IH0KICAgICBzdGF0aWMgTGVuZ3RoUG9pbnQgaW5pdGlh
bE9iamVjdFBvc2l0aW9uKCkgeyByZXR1cm4gTGVuZ3RoUG9pbnQoTGVuZ3RoKDUwLjBmLCBQZXJj
ZW50KSwgTGVuZ3RoKDUwLjBmLCBQZXJjZW50KSk7IH0KLSAgICBzdGF0aWMgRUVtcHR5Q2VsbCBp
bml0aWFsRW1wdHlDZWxscygpIHsgcmV0dXJuIFNIT1c7IH0KLSAgICBzdGF0aWMgRUxpc3RTdHls
ZVBvc2l0aW9uIGluaXRpYWxMaXN0U3R5bGVQb3NpdGlvbigpIHsgcmV0dXJuIE9VVFNJREU7IH0K
LSAgICBzdGF0aWMgRUxpc3RTdHlsZVR5cGUgaW5pdGlhbExpc3RTdHlsZVR5cGUoKSB7IHJldHVy
biBEaXNjOyB9Ci0gICAgc3RhdGljIEVUZXh0VHJhbnNmb3JtIGluaXRpYWxUZXh0VHJhbnNmb3Jt
KCkgeyByZXR1cm4gVFROT05FOyB9Ci0gICAgc3RhdGljIEVWaXNpYmlsaXR5IGluaXRpYWxWaXNp
YmlsaXR5KCkgeyByZXR1cm4gVklTSUJMRTsgfQotICAgIHN0YXRpYyBFV2hpdGVTcGFjZSBpbml0
aWFsV2hpdGVTcGFjZSgpIHsgcmV0dXJuIE5PUk1BTDsgfQorICAgIHN0YXRpYyBFbXB0eUNlbGwg
aW5pdGlhbEVtcHR5Q2VsbHMoKSB7IHJldHVybiBFbXB0eUNlbGw6OlNob3c7IH0KKyAgICBzdGF0
aWMgTGlzdFN0eWxlUG9zaXRpb24gaW5pdGlhbExpc3RTdHlsZVBvc2l0aW9uKCkgeyByZXR1cm4g
TGlzdFN0eWxlUG9zaXRpb246Ok91dHNpZGU7IH0KKyAgICBzdGF0aWMgTGlzdFN0eWxlVHlwZSBp
bml0aWFsTGlzdFN0eWxlVHlwZSgpIHsgcmV0dXJuIExpc3RTdHlsZVR5cGU6OkRpc2M7IH0KKyAg
ICBzdGF0aWMgVGV4dFRyYW5zZm9ybSBpbml0aWFsVGV4dFRyYW5zZm9ybSgpIHsgcmV0dXJuIFRl
eHRUcmFuc2Zvcm06Ok5vbmU7IH0KKyAgICBzdGF0aWMgVmlzaWJpbGl0eSBpbml0aWFsVmlzaWJp
bGl0eSgpIHsgcmV0dXJuIFZpc2liaWxpdHk6OlZpc2libGU7IH0KKyAgICBzdGF0aWMgV2hpdGVT
cGFjZSBpbml0aWFsV2hpdGVTcGFjZSgpIHsgcmV0dXJuIFdoaXRlU3BhY2U6Ok5vcm1hbDsgfQog
ICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsSG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoKSB7IHJldHVy
biAwOyB9CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxWZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSB7
IHJldHVybiAwOyB9Ci0gICAgc3RhdGljIEVDdXJzb3IgaW5pdGlhbEN1cnNvcigpIHsgcmV0dXJu
IEN1cnNvckF1dG87IH0KKyAgICBzdGF0aWMgQ3Vyc29yVHlwZSBpbml0aWFsQ3Vyc29yKCkgeyBy
ZXR1cm4gQ3Vyc29yVHlwZTo6QXV0bzsgfQogICAgIHN0YXRpYyBDb2xvciBpbml0aWFsQ29sb3Io
KSB7IHJldHVybiBDb2xvcjo6YmxhY2s7IH0KICAgICBzdGF0aWMgU3R5bGVJbWFnZSogaW5pdGlh
bExpc3RTdHlsZUltYWdlKCkgeyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFs
Qm9yZGVyV2lkdGgoKSB7IHJldHVybiAzOyB9CkBAIC0xNDc4LDEzICsxNDc4LDEzIEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgc2hvcnQgaW5pdGlhbFdpZG93cygpIHsgcmV0dXJuIDI7IH0KICAgICBz
dGF0aWMgc2hvcnQgaW5pdGlhbE9ycGhhbnMoKSB7IHJldHVybiAyOyB9CiAgICAgc3RhdGljIExl
bmd0aCBpbml0aWFsTGluZUhlaWdodCgpIHsgcmV0dXJuIExlbmd0aCgtMTAwLjBmLCBQZXJjZW50
KTsgfQotICAgIHN0YXRpYyBFVGV4dEFsaWduIGluaXRpYWxUZXh0QWxpZ24oKSB7IHJldHVybiBU
QVNUQVJUOyB9CisgICAgc3RhdGljIFRleHRBbGlnbk1vZGUgaW5pdGlhbFRleHRBbGlnbigpIHsg
cmV0dXJuIFRleHRBbGlnbk1vZGU6OlN0YXJ0OyB9CiAgICAgc3RhdGljIFRleHREZWNvcmF0aW9u
IGluaXRpYWxUZXh0RGVjb3JhdGlvbigpIHsgcmV0dXJuIFRleHREZWNvcmF0aW9uTm9uZTsgfQot
ICAgIHN0YXRpYyBUZXh0RGVjb3JhdGlvblN0eWxlIGluaXRpYWxUZXh0RGVjb3JhdGlvblN0eWxl
KCkgeyByZXR1cm4gVGV4dERlY29yYXRpb25TdHlsZVNvbGlkOyB9CisgICAgc3RhdGljIFRleHRE
ZWNvcmF0aW9uU3R5bGUgaW5pdGlhbFRleHREZWNvcmF0aW9uU3R5bGUoKSB7IHJldHVybiBUZXh0
RGVjb3JhdGlvblN0eWxlOjpTb2xpZDsgfQogICAgIHN0YXRpYyBUZXh0RGVjb3JhdGlvblNraXAg
aW5pdGlhbFRleHREZWNvcmF0aW9uU2tpcCgpIHsgcmV0dXJuIFRleHREZWNvcmF0aW9uU2tpcEF1
dG87IH0KICAgICBzdGF0aWMgVGV4dFVuZGVybGluZVBvc2l0aW9uIGluaXRpYWxUZXh0VW5kZXJs
aW5lUG9zaXRpb24oKSB7IHJldHVybiBUZXh0VW5kZXJsaW5lUG9zaXRpb25BdXRvOyB9CiAgICAg
c3RhdGljIGZsb2F0IGluaXRpYWxab29tKCkgeyByZXR1cm4gMS4wZjsgfQotICAgIHN0YXRpYyBU
ZXh0Wm9vbSBpbml0aWFsVGV4dFpvb20oKSB7IHJldHVybiBUZXh0Wm9vbU5vcm1hbDsgfQorICAg
IHN0YXRpYyBUZXh0Wm9vbSBpbml0aWFsVGV4dFpvb20oKSB7IHJldHVybiBUZXh0Wm9vbTo6Tm9y
bWFsOyB9CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxPdXRsaW5lT2Zmc2V0KCkgeyByZXR1cm4g
MDsgfQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsT3BhY2l0eSgpIHsgcmV0dXJuIDEuMGY7IH0K
ICAgICBzdGF0aWMgQm94QWxpZ25tZW50IGluaXRpYWxCb3hBbGlnbigpIHsgcmV0dXJuIEJveEFs
aWdubWVudDo6U3RyZXRjaDsgfQpAQCAtMTUyNCwxOCArMTUyNCwxOCBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIE5CU1BNb2RlIGluaXRpYWxOQlNQTW9kZSgpIHsgcmV0dXJuIE5CU1BNb2RlOjpOb3Jt
YWw7IH0KICAgICBzdGF0aWMgTGluZUJyZWFrIGluaXRpYWxMaW5lQnJlYWsoKSB7IHJldHVybiBM
aW5lQnJlYWs6OkF1dG87IH0KICAgICBzdGF0aWMgRVNwZWFrQXMgaW5pdGlhbFNwZWFrQXMoKSB7
IHJldHVybiBTcGVha05vcm1hbDsgfQotICAgIHN0YXRpYyBIeXBoZW5zIGluaXRpYWxIeXBoZW5z
KCkgeyByZXR1cm4gSHlwaGVuc01hbnVhbDsgfQorICAgIHN0YXRpYyBIeXBoZW5zIGluaXRpYWxI
eXBoZW5zKCkgeyByZXR1cm4gSHlwaGVuczo6TWFudWFsOyB9CiAgICAgc3RhdGljIHNob3J0IGlu
aXRpYWxIeXBoZW5hdGlvbkxpbWl0QmVmb3JlKCkgeyByZXR1cm4gLTE7IH0KICAgICBzdGF0aWMg
c2hvcnQgaW5pdGlhbEh5cGhlbmF0aW9uTGltaXRBZnRlcigpIHsgcmV0dXJuIC0xOyB9CiAgICAg
c3RhdGljIHNob3J0IGluaXRpYWxIeXBoZW5hdGlvbkxpbWl0TGluZXMoKSB7IHJldHVybiAtMTsg
fQogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYWxIeXBoZW5hdGlvblN0cmlu
ZygpIHsgcmV0dXJuIG51bGxBdG9tKCk7IH0KLSAgICBzdGF0aWMgRUJvcmRlckZpdCBpbml0aWFs
Qm9yZGVyRml0KCkgeyByZXR1cm4gQm9yZGVyRml0Qm9yZGVyOyB9CisgICAgc3RhdGljIEJvcmRl
ckZpdCBpbml0aWFsQm9yZGVyRml0KCkgeyByZXR1cm4gQm9yZGVyRml0OjpCb3JkZXI7IH0KICAg
ICBzdGF0aWMgUmVzaXplIGluaXRpYWxSZXNpemUoKSB7IHJldHVybiBSZXNpemU6Ok5vbmU7IH0K
ICAgICBzdGF0aWMgQ29udHJvbFBhcnQgaW5pdGlhbEFwcGVhcmFuY2UoKSB7IHJldHVybiBOb0Nv
bnRyb2xQYXJ0OyB9CiAgICAgc3RhdGljIEFzcGVjdFJhdGlvVHlwZSBpbml0aWFsQXNwZWN0UmF0
aW9UeXBlKCkgeyByZXR1cm4gQXNwZWN0UmF0aW9UeXBlOjpBdXRvOyB9CiAgICAgc3RhdGljIGZs
b2F0IGluaXRpYWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yKCkgeyByZXR1cm4gMTsgfQogICAgIHN0
YXRpYyBmbG9hdCBpbml0aWFsQXNwZWN0UmF0aW9OdW1lcmF0b3IoKSB7IHJldHVybiAxOyB9Ci0g
ICAgc3RhdGljIE9yZGVyIGluaXRpYWxSVExPcmRlcmluZygpIHsgcmV0dXJuIExvZ2ljYWxPcmRl
cjsgfQorICAgIHN0YXRpYyBPcmRlciBpbml0aWFsUlRMT3JkZXJpbmcoKSB7IHJldHVybiBPcmRl
cjo6TG9naWNhbDsgfQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsVGV4dFN0cm9rZVdpZHRoKCkg
eyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBpbml0aWFsQ29sdW1uQ291
bnQoKSB7IHJldHVybiAxOyB9CiAgICAgc3RhdGljIENvbHVtbkZpbGwgaW5pdGlhbENvbHVtbkZp
bGwoKSB7IHJldHVybiBDb2x1bW5GaWxsOjpCYWxhbmNlOyB9CkBAIC0xNTQ2LDcgKzE1NDYsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsVHJhbnNmb3JtT3JpZ2luWCgpIHsg
cmV0dXJuIExlbmd0aCg1MC4wZiwgUGVyY2VudCk7IH0KICAgICBzdGF0aWMgTGVuZ3RoIGluaXRp
YWxUcmFuc2Zvcm1PcmlnaW5ZKCkgeyByZXR1cm4gTGVuZ3RoKDUwLjBmLCBQZXJjZW50KTsgfQog
ICAgIHN0YXRpYyBUcmFuc2Zvcm1Cb3ggaW5pdGlhbFRyYW5zZm9ybUJveCgpIHsgcmV0dXJuIFRy
YW5zZm9ybUJveDo6Qm9yZGVyQm94OyB9Ci0gICAgc3RhdGljIEVQb2ludGVyRXZlbnRzIGluaXRp
YWxQb2ludGVyRXZlbnRzKCkgeyByZXR1cm4gUEVfQVVUTzsgfQorICAgIHN0YXRpYyBQb2ludGVy
RXZlbnRzIGluaXRpYWxQb2ludGVyRXZlbnRzKCkgeyByZXR1cm4gUG9pbnRlckV2ZW50czo6QXV0
bzsgfQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsVHJhbnNmb3JtT3JpZ2luWigpIHsgcmV0dXJu
IDA7IH0KICAgICBzdGF0aWMgVHJhbnNmb3JtU3R5bGUzRCBpbml0aWFsVHJhbnNmb3JtU3R5bGUz
RCgpIHsgcmV0dXJuIFRyYW5zZm9ybVN0eWxlM0Q6OkZsYXQ7IH0KICAgICBzdGF0aWMgQmFja2Zh
Y2VWaXNpYmlsaXR5IGluaXRpYWxCYWNrZmFjZVZpc2liaWxpdHkoKSB7IHJldHVybiBCYWNrZmFj
ZVZpc2liaWxpdHk6OlZpc2libGU7IH0KQEAgLTE1NTQsMTcgKzE1NTQsMTcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFBlcnNwZWN0aXZlT3JpZ2luWCgpIHsgcmV0dXJuIExl
bmd0aCg1MC4wZiwgUGVyY2VudCk7IH0KICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxQZXJzcGVj
dGl2ZU9yaWdpblkoKSB7IHJldHVybiBMZW5ndGgoNTAuMGYsIFBlcmNlbnQpOyB9CiAgICAgc3Rh
dGljIENvbG9yIGluaXRpYWxCYWNrZ3JvdW5kQ29sb3IoKSB7IHJldHVybiBDb2xvcjo6dHJhbnNw
YXJlbnQ7IH0KLSAgICBzdGF0aWMgQ29sb3IgaW5pdGlhbFRleHRFbXBoYXNpc0NvbG9yKCkgeyBy
ZXR1cm4gVGV4dEVtcGhhc2lzRmlsbEZpbGxlZDsgfQotICAgIHN0YXRpYyBUZXh0RW1waGFzaXNG
aWxsIGluaXRpYWxUZXh0RW1waGFzaXNGaWxsKCkgeyByZXR1cm4gVGV4dEVtcGhhc2lzRmlsbEZp
bGxlZDsgfQotICAgIHN0YXRpYyBUZXh0RW1waGFzaXNNYXJrIGluaXRpYWxUZXh0RW1waGFzaXNN
YXJrKCkgeyByZXR1cm4gVGV4dEVtcGhhc2lzTWFya05vbmU7IH0KKyAgICBzdGF0aWMgQ29sb3Ig
aW5pdGlhbFRleHRFbXBoYXNpc0NvbG9yKCkgeyByZXR1cm4gQ29sb3IoKTsgfQorICAgIHN0YXRp
YyBUZXh0RW1waGFzaXNGaWxsIGluaXRpYWxUZXh0RW1waGFzaXNGaWxsKCkgeyByZXR1cm4gVGV4
dEVtcGhhc2lzRmlsbDo6RmlsbGVkOyB9CisgICAgc3RhdGljIFRleHRFbXBoYXNpc01hcmsgaW5p
dGlhbFRleHRFbXBoYXNpc01hcmsoKSB7IHJldHVybiBUZXh0RW1waGFzaXNNYXJrOjpOb25lOyB9
CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdGlhbFRleHRFbXBoYXNpc0N1c3Rv
bU1hcmsoKSB7IHJldHVybiBudWxsQXRvbSgpOyB9CiAgICAgc3RhdGljIFRleHRFbXBoYXNpc1Bv
c2l0aW9uIGluaXRpYWxUZXh0RW1waGFzaXNQb3NpdGlvbigpIHsgcmV0dXJuIFRleHRFbXBoYXNp
c1Bvc2l0aW9uT3ZlciB8IFRleHRFbXBoYXNpc1Bvc2l0aW9uUmlnaHQ7IH0KLSAgICBzdGF0aWMg
UnVieVBvc2l0aW9uIGluaXRpYWxSdWJ5UG9zaXRpb24oKSB7IHJldHVybiBSdWJ5UG9zaXRpb25C
ZWZvcmU7IH0KKyAgICBzdGF0aWMgUnVieVBvc2l0aW9uIGluaXRpYWxSdWJ5UG9zaXRpb24oKSB7
IHJldHVybiBSdWJ5UG9zaXRpb246OkJlZm9yZTsgfQogICAgIHN0YXRpYyBMaW5lQm94Q29udGFp
biBpbml0aWFsTGluZUJveENvbnRhaW4oKSB7IHJldHVybiBMaW5lQm94Q29udGFpbkJsb2NrIHwg
TGluZUJveENvbnRhaW5JbmxpbmUgfCBMaW5lQm94Q29udGFpblJlcGxhY2VkOyB9CiAgICAgc3Rh
dGljIEltYWdlT3JpZW50YXRpb25FbnVtIGluaXRpYWxJbWFnZU9yaWVudGF0aW9uKCkgeyByZXR1
cm4gT3JpZ2luVG9wTGVmdDsgfQogICAgIHN0YXRpYyBJbWFnZVJlbmRlcmluZyBpbml0aWFsSW1h
Z2VSZW5kZXJpbmcoKSB7IHJldHVybiBJbWFnZVJlbmRlcmluZzo6QXV0bzsgfQotICAgIHN0YXRp
YyBJbWFnZVJlc29sdXRpb25Tb3VyY2UgaW5pdGlhbEltYWdlUmVzb2x1dGlvblNvdXJjZSgpIHsg
cmV0dXJuIEltYWdlUmVzb2x1dGlvblNwZWNpZmllZDsgfQotICAgIHN0YXRpYyBJbWFnZVJlc29s
dXRpb25TbmFwIGluaXRpYWxJbWFnZVJlc29sdXRpb25TbmFwKCkgeyByZXR1cm4gSW1hZ2VSZXNv
bHV0aW9uTm9TbmFwOyB9CisgICAgc3RhdGljIEltYWdlUmVzb2x1dGlvblNvdXJjZSBpbml0aWFs
SW1hZ2VSZXNvbHV0aW9uU291cmNlKCkgeyByZXR1cm4gSW1hZ2VSZXNvbHV0aW9uU291cmNlOjpT
cGVjaWZpZWQ7IH0KKyAgICBzdGF0aWMgSW1hZ2VSZXNvbHV0aW9uU25hcCBpbml0aWFsSW1hZ2VS
ZXNvbHV0aW9uU25hcCgpIHsgcmV0dXJuIEltYWdlUmVzb2x1dGlvblNuYXA6Ok5vbmU7IH0KICAg
ICBzdGF0aWMgZmxvYXQgaW5pdGlhbEltYWdlUmVzb2x1dGlvbigpIHsgcmV0dXJuIDE7IH0KICAg
ICBzdGF0aWMgU3R5bGVJbWFnZSogaW5pdGlhbEJvcmRlckltYWdlU291cmNlKCkgeyByZXR1cm4g
bnVsbHB0cjsgfQogICAgIHN0YXRpYyBTdHlsZUltYWdlKiBpbml0aWFsTWFza0JveEltYWdlU291
cmNlKCkgeyByZXR1cm4gbnVsbHB0cjsgfQpAQCAtMTU3NSwxMiArMTU3NSwxMiBAQCBwdWJsaWM6
CiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKICAgICBzdGF0aWMgVGV4dEluZGVudExpbmUgaW5pdGlh
bFRleHRJbmRlbnRMaW5lKCkgeyByZXR1cm4gVGV4dEluZGVudExpbmU6OkZpcnN0TGluZTsgfQog
ICAgIHN0YXRpYyBUZXh0SW5kZW50VHlwZSBpbml0aWFsVGV4dEluZGVudFR5cGUoKSB7IHJldHVy
biBUZXh0SW5kZW50VHlwZTo6Tm9ybWFsOyB9Ci0gICAgc3RhdGljIFRleHRBbGlnbkxhc3QgaW5p
dGlhbFRleHRBbGlnbkxhc3QoKSB7IHJldHVybiBUZXh0QWxpZ25MYXN0QXV0bzsgfQotICAgIHN0
YXRpYyBUZXh0SnVzdGlmeSBpbml0aWFsVGV4dEp1c3RpZnkoKSB7IHJldHVybiBUZXh0SnVzdGlm
eUF1dG87IH0KKyAgICBzdGF0aWMgVGV4dEFsaWduTGFzdCBpbml0aWFsVGV4dEFsaWduTGFzdCgp
IHsgcmV0dXJuIFRleHRBbGlnbkxhc3Q6OkF1dG87IH0KKyAgICBzdGF0aWMgVGV4dEp1c3RpZnkg
aW5pdGlhbFRleHRKdXN0aWZ5KCkgeyByZXR1cm4gVGV4dEp1c3RpZnk6OkF1dG87IH0KICNlbmRp
ZgogCiAjaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQotICAgIHN0YXRpYyBDdXJzb3JWaXNp
YmlsaXR5IGluaXRpYWxDdXJzb3JWaXNpYmlsaXR5KCkgeyByZXR1cm4gQ3Vyc29yVmlzaWJpbGl0
eUF1dG87IH0KKyAgICBzdGF0aWMgQ3Vyc29yVmlzaWJpbGl0eSBpbml0aWFsQ3Vyc29yVmlzaWJp
bGl0eSgpIHsgcmV0dXJuIEN1cnNvclZpc2liaWxpdHk6OkF1dG87IH0KICNlbmRpZgogCiAjaWYg
RU5BQkxFKFRFWFRfQVVUT1NJWklORykKQEAgLTE2MTYsNyArMTYxNiw3IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gaW5pdGlhbEdyaWRBdXRvUmVwZWF0VHJh
Y2tzKCkgeyByZXR1cm4gVmVjdG9yPEdyaWRUcmFja1NpemU+KCk7IH0KICAgICBzdGF0aWMgdW5z
aWduZWQgaW5pdGlhbEdyaWRBdXRvUmVwZWF0SW5zZXJ0aW9uUG9pbnQoKSB7IHJldHVybiAwOyB9
Ci0gICAgc3RhdGljIEF1dG9SZXBlYXRUeXBlIGluaXRpYWxHcmlkQXV0b1JlcGVhdFR5cGUoKSB7
IHJldHVybiBOb0F1dG9SZXBlYXQ7IH0KKyAgICBzdGF0aWMgQXV0b1JlcGVhdFR5cGUgaW5pdGlh
bEdyaWRBdXRvUmVwZWF0VHlwZSgpIHsgcmV0dXJuIEF1dG9SZXBlYXRUeXBlOjpOb25lOyB9CiAK
ICAgICBzdGF0aWMgR3JpZEF1dG9GbG93IGluaXRpYWxHcmlkQXV0b0Zsb3coKSB7IHJldHVybiBB
dXRvRmxvd1JvdzsgfQogCkBAIC0xNjQxLDggKzE2NDEsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IHVuc2lnbmVkIGluaXRpYWxUYWJTaXplKCkgeyByZXR1cm4gODsgfQogCiAgICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyYgaW5pdGlhbExpbmVHcmlkKCkgeyByZXR1cm4gbnVsbEF0b20oKTsg
fQotICAgIHN0YXRpYyBMaW5lU25hcCBpbml0aWFsTGluZVNuYXAoKSB7IHJldHVybiBMaW5lU25h
cE5vbmU7IH0KLSAgICBzdGF0aWMgTGluZUFsaWduIGluaXRpYWxMaW5lQWxpZ24oKSB7IHJldHVy
biBMaW5lQWxpZ25Ob25lOyB9CisgICAgc3RhdGljIExpbmVTbmFwIGluaXRpYWxMaW5lU25hcCgp
IHsgcmV0dXJuIExpbmVTbmFwOjpOb25lOyB9CisgICAgc3RhdGljIExpbmVBbGlnbiBpbml0aWFs
TGluZUFsaWduKCkgeyByZXR1cm4gTGluZUFsaWduOjpOb25lOyB9CiAKICAgICBzdGF0aWMgSW50
U2l6ZSBpbml0aWFsSW5pdGlhbExldHRlcigpIHsgcmV0dXJuIEludFNpemUoKTsgfQogICAgIHN0
YXRpYyBMaW5lQ2xhbXBWYWx1ZSBpbml0aWFsTGluZUNsYW1wKCkgeyByZXR1cm4gTGluZUNsYW1w
VmFsdWUoKTsgfQpAQCAtMTc0MiwxMyArMTc0MiwxMyBAQCBwcml2YXRlOgogCiAgICAgICAgIHZv
aWQgY29weU5vbkluaGVyaXRlZEZyb20oY29uc3QgTm9uSW5oZXJpdGVkRmxhZ3MmKTsKIAotICAg
ICAgICBib29sIGhhc0FueVB1YmxpY1BzZXVkb1N0eWxlcygpIGNvbnN0IHsgcmV0dXJuIFBVQkxJ
Q19QU0VVRE9JRF9NQVNLICYgcHNldWRvQml0czsgfQorICAgICAgICBib29sIGhhc0FueVB1Ymxp
Y1BzZXVkb1N0eWxlcygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQc2V1
ZG9JZDo6UHVibGljUHNldWRvSWRNYXNrKSAmIHBzZXVkb0JpdHM7IH0KICAgICAgICAgYm9vbCBo
YXNQc2V1ZG9TdHlsZShQc2V1ZG9JZCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0SGFzUHNldWRv
U3R5bGUoUHNldWRvSWQpOwogICAgICAgICB2b2lkIHNldEhhc1BzZXVkb1N0eWxlcyhQc2V1ZG9J
ZFNldCk7CiAKLSAgICAgICAgdW5zaWduZWQgZWZmZWN0aXZlRGlzcGxheSA6IDU7IC8vIEVEaXNw
bGF5Ci0gICAgICAgIHVuc2lnbmVkIG9yaWdpbmFsRGlzcGxheSA6IDU7IC8vIEVEaXNwbGF5Cisg
ICAgICAgIHVuc2lnbmVkIGVmZmVjdGl2ZURpc3BsYXkgOiA1OyAvLyBEaXNwbGF5VHlwZQorICAg
ICAgICB1bnNpZ25lZCBvcmlnaW5hbERpc3BsYXkgOiA1OyAvLyBEaXNwbGF5VHlwZQogICAgICAg
ICB1bnNpZ25lZCBvdmVyZmxvd1ggOiAzOyAvLyBPdmVyZmxvdwogICAgICAgICB1bnNpZ25lZCBv
dmVyZmxvd1kgOiAzOyAvLyBPdmVyZmxvdwogICAgICAgICB1bnNpZ25lZCB2ZXJ0aWNhbEFsaWdu
IDogNDsgLy8gVmVydGljYWxBbGlnbgpAQCAtMTc3Myw3ICsxNzczLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgdW5zaWduZWQgaXNMaW5rIDogMTsKIAogICAgICAgICB1bnNpZ25lZCBzdHlsZVR5cGUg
OiA0OyAvLyBQc2V1ZG9JZAotICAgICAgICB1bnNpZ25lZCBwc2V1ZG9CaXRzIDogKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihGSVJTVF9JTlRFUk5BTF9QU0VVRE9JRCkgLSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oRklSU1RfUFVCTElDX1BTRVVET0lEKSk7CisgICAgICAgIHVuc2lnbmVkIHBzZXVkb0Jp
dHMgOiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBzZXVkb0lkOjpGaXJzdEludGVybmFsUHNldWRv
SWQpIC0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBzZXVkb0lkOjpGaXJzdFB1YmxpY1BzZXVkb0lk
KSk7CiAKICAgICAgICAgLy8gSWYgeW91IGFkZCBtb3JlIHN0eWxlIGJpdHMgaGVyZSwgeW91IHdp
bGwgYWxzbyBuZWVkIHRvIHVwZGF0ZSBSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OmNv
cHlOb25Jbmhlcml0ZWRGcm9tKCkuCiAgICAgfTsKQEAgLTE3ODIsMjAgKzE3ODIsMjAgQEAgcHJp
dmF0ZToKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEluaGVyaXRlZEZsYWdzJikgY29u
c3Q7CiAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJbmhlcml0ZWRGbGFncyYgb3RoZXIp
IGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKLSAgICAgICAgdW5zaWduZWQg
ZW1wdHlDZWxscyA6IDE7IC8vIEVFbXB0eUNlbGwKLSAgICAgICAgdW5zaWduZWQgY2FwdGlvblNp
ZGUgOiAyOyAvLyBFQ2FwdGlvblNpZGUKLSAgICAgICAgdW5zaWduZWQgbGlzdFN0eWxlVHlwZSA6
IDc7IC8vIEVMaXN0U3R5bGVUeXBlCi0gICAgICAgIHVuc2lnbmVkIGxpc3RTdHlsZVBvc2l0aW9u
IDogMTsgLy8gRUxpc3RTdHlsZVBvc2l0aW9uCi0gICAgICAgIHVuc2lnbmVkIHZpc2liaWxpdHkg
OiAyOyAvLyBFVmlzaWJpbGl0eQotICAgICAgICB1bnNpZ25lZCB0ZXh0QWxpZ24gOiA0OyAvLyBF
VGV4dEFsaWduCi0gICAgICAgIHVuc2lnbmVkIHRleHRUcmFuc2Zvcm0gOiAyOyAvLyBFVGV4dFRy
YW5zZm9ybQorICAgICAgICB1bnNpZ25lZCBlbXB0eUNlbGxzIDogMTsgLy8gRW1wdHlDZWxsCisg
ICAgICAgIHVuc2lnbmVkIGNhcHRpb25TaWRlIDogMjsgLy8gQ2FwdGlvblNpZGUKKyAgICAgICAg
dW5zaWduZWQgbGlzdFN0eWxlVHlwZSA6IDc7IC8vIExpc3RTdHlsZVR5cGUKKyAgICAgICAgdW5z
aWduZWQgbGlzdFN0eWxlUG9zaXRpb24gOiAxOyAvLyBMaXN0U3R5bGVQb3NpdGlvbgorICAgICAg
ICB1bnNpZ25lZCB2aXNpYmlsaXR5IDogMjsgLy8gVmlzaWJpbGl0eQorICAgICAgICB1bnNpZ25l
ZCB0ZXh0QWxpZ24gOiA0OyAvLyBUZXh0QWxpZ25Nb2RlCisgICAgICAgIHVuc2lnbmVkIHRleHRU
cmFuc2Zvcm0gOiAyOyAvLyBUZXh0VHJhbnNmb3JtCiAgICAgICAgIHVuc2lnbmVkIHRleHREZWNv
cmF0aW9ucyA6IFRleHREZWNvcmF0aW9uQml0czsKLSAgICAgICAgdW5zaWduZWQgY3Vyc29yIDog
NjsgLy8gRUN1cnNvcgorICAgICAgICB1bnNpZ25lZCBjdXJzb3IgOiA2OyAvLyBDdXJzb3JUeXBl
CiAjaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQogICAgICAgICB1bnNpZ25lZCBjdXJzb3JW
aXNpYmlsaXR5IDogMTsgLy8gQ3Vyc29yVmlzaWJpbGl0eQogI2VuZGlmCiAgICAgICAgIHVuc2ln
bmVkIGRpcmVjdGlvbiA6IDE7IC8vIFRleHREaXJlY3Rpb24KLSAgICAgICAgdW5zaWduZWQgd2hp
dGVTcGFjZSA6IDM7IC8vIEVXaGl0ZVNwYWNlCisgICAgICAgIHVuc2lnbmVkIHdoaXRlU3BhY2Ug
OiAzOyAvLyBXaGl0ZVNwYWNlCiAgICAgICAgIC8vIDM1IGJpdHMKICAgICAgICAgdW5zaWduZWQg
Ym9yZGVyQ29sbGFwc2UgOiAxOyAvLyBCb3JkZXJDb2xsYXBzZQogICAgICAgICB1bnNpZ25lZCBi
b3hEaXJlY3Rpb24gOiAxOyAvLyBCb3hEaXJlY3Rpb24KQEAgLTE4MDMsOCArMTgwMyw4IEBAIHBy
aXZhdGU6CiAgICAgICAgIC8vIG5vbiBDU1MyIGluaGVyaXRlZAogICAgICAgICB1bnNpZ25lZCBy
dGxPcmRlcmluZyA6IDE7IC8vIE9yZGVyCiAgICAgICAgIHVuc2lnbmVkIHByaW50Q29sb3JBZGp1
c3QgOiBQcmludENvbG9yQWRqdXN0Qml0czsgLy8gUHJpbnRDb2xvckFkanVzdAotICAgICAgICB1
bnNpZ25lZCBwb2ludGVyRXZlbnRzIDogNDsgLy8gRVBvaW50ZXJFdmVudHMKLSAgICAgICAgdW5z
aWduZWQgaW5zaWRlTGluayA6IDI7IC8vIEVJbnNpZGVMaW5rCisgICAgICAgIHVuc2lnbmVkIHBv
aW50ZXJFdmVudHMgOiA0OyAvLyBQb2ludGVyRXZlbnRzCisgICAgICAgIHVuc2lnbmVkIGluc2lk
ZUxpbmsgOiAyOyAvLyBJbnNpZGVMaW5rCiAgICAgICAgIHVuc2lnbmVkIGluc2lkZURlZmF1bHRC
dXR0b24gOiAxOwogICAgICAgICAvLyA0NiBiaXRzCiAKQEAgLTE4MTYsNyArMTgxNiw3IEBAIHBy
aXZhdGU6CiAgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBpcyB1c2VkIHRvIGltcGxlbWVudCB0aGUg
cmVwbGFjZSBvcGVyYXRpb24uCiAgICAgUmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUmLCBSZW5kZXJT
dHlsZSYmKTsKIAotICAgIEVEaXNwbGF5IG9yaWdpbmFsRGlzcGxheSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEVEaXNwbGF5PihtX25vbkluaGVyaXRlZEZsYWdzLm9yaWdpbmFsRGlzcGxh
eSk7IH0KKyAgICBEaXNwbGF5VHlwZSBvcmlnaW5hbERpc3BsYXkoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxEaXNwbGF5VHlwZT4obV9ub25Jbmhlcml0ZWRGbGFncy5vcmlnaW5hbERpc3Bs
YXkpOyB9CiAKICAgICBib29sIGhhc0F1dG9MZWZ0QW5kUmlnaHQoKSBjb25zdCB7IHJldHVybiBs
ZWZ0KCkuaXNBdXRvKCkgJiYgcmlnaHQoKS5pc0F1dG8oKTsgfQogICAgIGJvb2wgaGFzQXV0b1Rv
cEFuZEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHRvcCgpLmlzQXV0bygpICYmIGJvdHRvbSgpLmlz
QXV0bygpOyB9CkBAIC0xODI1LDExICsxODI1LDExIEBAIHByaXZhdGU6CiAKICAgICBMYXlvdXRC
b3hFeHRlbnQgZ2V0U2hhZG93SW5zZXRFeHRlbnQoY29uc3QgU2hhZG93RGF0YSopIGNvbnN0Owog
Ci0gICAgc3RhdGljIGJvb2wgaXNEaXNwbGF5UmVwbGFjZWRUeXBlKEVEaXNwbGF5KTsKLSAgICBz
dGF0aWMgYm9vbCBpc0Rpc3BsYXlJbmxpbmVUeXBlKEVEaXNwbGF5KTsKLSAgICBzdGF0aWMgYm9v
bCBpc0Rpc3BsYXlGbGV4aWJsZUJveChFRGlzcGxheSk7Ci0gICAgc3RhdGljIGJvb2wgaXNEaXNw
bGF5R3JpZEJveChFRGlzcGxheSk7Ci0gICAgc3RhdGljIGJvb2wgaXNEaXNwbGF5RmxleGlibGVP
ckdyaWRCb3goRURpc3BsYXkpOworICAgIHN0YXRpYyBib29sIGlzRGlzcGxheVJlcGxhY2VkVHlw
ZShEaXNwbGF5VHlwZSk7CisgICAgc3RhdGljIGJvb2wgaXNEaXNwbGF5SW5saW5lVHlwZShEaXNw
bGF5VHlwZSk7CisgICAgc3RhdGljIGJvb2wgaXNEaXNwbGF5RmxleGlibGVCb3goRGlzcGxheVR5
cGUpOworICAgIHN0YXRpYyBib29sIGlzRGlzcGxheUdyaWRCb3goRGlzcGxheVR5cGUpOworICAg
IHN0YXRpYyBib29sIGlzRGlzcGxheUZsZXhpYmxlT3JHcmlkQm94KERpc3BsYXlUeXBlKTsKIAog
ICAgIENvbG9yIGNvbG9ySW5jbHVkaW5nRmFsbGJhY2soQ1NTUHJvcGVydHlJRCBjb2xvclByb3Bl
cnR5LCBib29sIHZpc2l0ZWRMaW5rKSBjb25zdDsKIApAQCAtMTkyMCwyMyArMTkyMCwyMyBAQCBp
bmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhCiAKIGlubGluZSBib29sIFJl
bmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6aGFzUHNldWRvU3R5bGUoUHNldWRvSWQgcHNl
dWRvKSBjb25zdAogewotICAgIEFTU0VSVChwc2V1ZG8gPiBOT1BTRVVETyk7Ci0gICAgQVNTRVJU
KHBzZXVkbyA8IEZJUlNUX0lOVEVSTkFMX1BTRVVET0lEKTsKLSAgICByZXR1cm4gcHNldWRvQml0
cyAmICgxIDw8IChwc2V1ZG8gLSAxIC8qIE5PUFNVRURPICovKSk7CisgICAgQVNTRVJUKHBzZXVk
byA+IFBzZXVkb0lkOjpOb25lKTsKKyAgICBBU1NFUlQocHNldWRvIDwgUHNldWRvSWQ6OkZpcnN0
SW50ZXJuYWxQc2V1ZG9JZCk7CisgICAgcmV0dXJuIHBzZXVkb0JpdHMgJiAoMSA8PCAoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHBzZXVkbykgLSAxIC8qIFBzZXVkb0lkOjpOb25lICovKSk7CiB9CiAK
IGlubGluZSB2b2lkIFJlbmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6c2V0SGFzUHNldWRv
U3R5bGUoUHNldWRvSWQgcHNldWRvKQogewotICAgIEFTU0VSVChwc2V1ZG8gPiBOT1BTRVVETyk7
Ci0gICAgQVNTRVJUKHBzZXVkbyA8IEZJUlNUX0lOVEVSTkFMX1BTRVVET0lEKTsKLSAgICBwc2V1
ZG9CaXRzIHw9IDEgPDwgKHBzZXVkbyAtIDEgLyogTk9QU1VFRE8gKi8pOworICAgIEFTU0VSVChw
c2V1ZG8gPiBQc2V1ZG9JZDo6Tm9uZSk7CisgICAgQVNTRVJUKHBzZXVkbyA8IFBzZXVkb0lkOjpG
aXJzdEludGVybmFsUHNldWRvSWQpOworICAgIHBzZXVkb0JpdHMgfD0gMSA8PCAoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHBzZXVkbykgLSAxIC8qIFBzZXVkb0lkOjpOb25lICovKTsKIH0KIAogaW5s
aW5lIHZvaWQgUmVuZGVyU3R5bGU6Ok5vbkluaGVyaXRlZEZsYWdzOjpzZXRIYXNQc2V1ZG9TdHls
ZXMoUHNldWRvSWRTZXQgcHNldWRvSWRTZXQpCiB7CiAgICAgQVNTRVJUKHBzZXVkb0lkU2V0KTsK
LSAgICBBU1NFUlQoKHBzZXVkb0lkU2V0LmRhdGEoKSAmIFBVQkxJQ19QU0VVRE9JRF9NQVNLKSA9
PSBwc2V1ZG9JZFNldC5kYXRhKCkpOwotICAgIHBzZXVkb0JpdHMgfD0gcHNldWRvSWRTZXQuZGF0
YSgpID4+IDE7IC8vIFNoaWZ0IGRvd24gYXMgd2UgZG8gbm90IHN0b3JlIGEgYml0IGZvciBOT1BT
VUVETy4KKyAgICBBU1NFUlQoKHBzZXVkb0lkU2V0LmRhdGEoKSAmIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQc2V1ZG9JZDo6UHVibGljUHNldWRvSWRNYXNrKSkgPT0gcHNldWRvSWRTZXQuZGF0YSgp
KTsKKyAgICBwc2V1ZG9CaXRzIHw9IHBzZXVkb0lkU2V0LmRhdGEoKSA+PiAxOyAvLyBTaGlmdCBk
b3duIGFzIHdlIGRvIG5vdCBzdG9yZSBhIGJpdCBmb3IgUHNldWRvSWQ6Ok5vbmUuCiB9CiAKIGlu
bGluZSBib29sIFJlbmRlclN0eWxlOjpJbmhlcml0ZWRGbGFnczo6b3BlcmF0b3I9PShjb25zdCBJ
bmhlcml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0CkBAIC0yMDA1LDIyICsyMDA1LDIyIEBAIGlubGlu
ZSBib29sIFJlbmRlclN0eWxlOjpoYXNCYWNrZ3JvdW5kKCkKICAgICByZXR1cm4gdmlzaXRlZERl
cGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKS5pc1Zpc2libGUoKSB8fCAg
aGFzQmFja2dyb3VuZEltYWdlKCk7CiB9CiAKLWlubGluZSBib29sIFJlbmRlclN0eWxlOjphdXRv
V3JhcChFV2hpdGVTcGFjZSB3aGl0ZVNwYWNlKQoraW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmF1
dG9XcmFwKFdoaXRlU3BhY2Ugd2hpdGVTcGFjZSkKIHsKICAgICAvLyBOb3dyYXAgYW5kIHByZSBk
b24ndCBhdXRvbWF0aWNhbGx5IHdyYXAuCi0gICAgcmV0dXJuIHdoaXRlU3BhY2UgIT0gTk9XUkFQ
ICYmIHdoaXRlU3BhY2UgIT0gUFJFOworICAgIHJldHVybiB3aGl0ZVNwYWNlICE9IFdoaXRlU3Bh
Y2U6Ok5vV3JhcCAmJiB3aGl0ZVNwYWNlICE9IFdoaXRlU3BhY2U6OlByZTsKIH0KIAotaW5saW5l
IGJvb2wgUmVuZGVyU3R5bGU6OnByZXNlcnZlTmV3bGluZShFV2hpdGVTcGFjZSB3aGl0ZVNwYWNl
KQoraW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OnByZXNlcnZlTmV3bGluZShXaGl0ZVNwYWNlIHdo
aXRlU3BhY2UpCiB7CiAgICAgLy8gTm9ybWFsIGFuZCBub3dyYXAgZG8gbm90IHByZXNlcnZlIG5l
d2xpbmVzLgotICAgIHJldHVybiB3aGl0ZVNwYWNlICE9IE5PUk1BTCAmJiB3aGl0ZVNwYWNlICE9
IE5PV1JBUDsKKyAgICByZXR1cm4gd2hpdGVTcGFjZSAhPSBXaGl0ZVNwYWNlOjpOb3JtYWwgJiYg
d2hpdGVTcGFjZSAhPSBXaGl0ZVNwYWNlOjpOb1dyYXA7CiB9CiAKLWlubGluZSBib29sIFJlbmRl
clN0eWxlOjpjb2xsYXBzZVdoaXRlU3BhY2UoRVdoaXRlU3BhY2Ugd3MpCitpbmxpbmUgYm9vbCBS
ZW5kZXJTdHlsZTo6Y29sbGFwc2VXaGl0ZVNwYWNlKFdoaXRlU3BhY2Ugd3MpCiB7CiAgICAgLy8g
UHJlIGFuZCBwcmV3cmFwIGRvIG5vdCBjb2xsYXBzZSB3aGl0ZXNwYWNlLgotICAgIHJldHVybiB3
cyAhPSBQUkUgJiYgd3MgIT0gUFJFX1dSQVA7CisgICAgcmV0dXJuIHdzICE9IFdoaXRlU3BhY2U6
OlByZSAmJiB3cyAhPSBXaGl0ZVNwYWNlOjpQcmVXcmFwOwogfQogCiBpbmxpbmUgYm9vbCBSZW5k
ZXJTdHlsZTo6aXNDb2xsYXBzaWJsZVdoaXRlU3BhY2UoVUNoYXIgY2hhcmFjdGVyKSBjb25zdApA
QCAtMjAzOCw3ICsyMDM4LDcgQEAgaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmlzQ29sbGFwc2li
bGVXaAogCiBpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6YnJlYWtPbmx5QWZ0ZXJXaGl0ZVNwYWNl
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gd2hpdGVTcGFjZSgpID09IFBSRV9XUkFQIHx8IGxpbmVC
cmVhaygpID09IExpbmVCcmVhazo6QWZ0ZXJXaGl0ZVNwYWNlOworICAgIHJldHVybiB3aGl0ZVNw
YWNlKCkgPT0gV2hpdGVTcGFjZTo6UHJlV3JhcCB8fCBsaW5lQnJlYWsoKSA9PSBMaW5lQnJlYWs6
OkFmdGVyV2hpdGVTcGFjZTsKIH0KIAogaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmJyZWFrV29y
ZHMoKSBjb25zdApAQCAtMjA0OSw3ICsyMDQ5LDcgQEAgaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6
OmJyZWFrV29yZHMoKSBjbwogaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6Omhhc0lubGluZUNvbHVt
bkF4aXMoKSBjb25zdAogewogICAgIGF1dG8gYXhpcyA9IGNvbHVtbkF4aXMoKTsKLSAgICByZXR1
cm4gKGF4aXMgPT0gQXV0b0NvbHVtbkF4aXMgfHwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA9
PSAoYXhpcyA9PSBIb3Jpem9udGFsQ29sdW1uQXhpcykpICYmICFoYXNMaW5lc0NsYW1wKCk7Cisg
ICAgcmV0dXJuIChheGlzID09IENvbHVtbkF4aXM6OkF1dG8gfHwgaXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKSA9PSAoYXhpcyA9PSBDb2x1bW5BeGlzOjpIb3Jpem9udGFsKSkgJiYgIWhhc0xpbmVz
Q2xhbXAoKTsKIH0KIAogaW5saW5lIEltYWdlT3JpZW50YXRpb25FbnVtIFJlbmRlclN0eWxlOjpp
bWFnZU9yaWVudGF0aW9uKCkgY29uc3QKQEAgLTIxNzAsOSArMjE3MCw5IEBAIGlubGluZSBib29s
IFJlbmRlclN0eWxlOjp3aWxsQ2hhbmdlQ3JlYXQKIAogaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6
OmlzRGlzcGxheVJlZ2lvblR5cGUoKSBjb25zdAogewotICAgIHJldHVybiBkaXNwbGF5KCkgPT0g
QkxPQ0sgfHwgZGlzcGxheSgpID09IElOTElORV9CTE9DSwotICAgICAgICB8fCBkaXNwbGF5KCkg
PT0gVEFCTEVfQ0VMTCB8fCBkaXNwbGF5KCkgPT0gVEFCTEVfQ0FQVElPTgotICAgICAgICB8fCBk
aXNwbGF5KCkgPT0gTElTVF9JVEVNOworICAgIHJldHVybiBkaXNwbGF5KCkgPT0gRGlzcGxheVR5
cGU6OkJsb2NrIHx8IGRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lQmxvY2sKKyAgICAg
ICAgfHwgZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpUYWJsZUNlbGwgfHwgZGlzcGxheSgpID09
IERpc3BsYXlUeXBlOjpUYWJsZUNhcHRpb24KKyAgICAgICAgfHwgZGlzcGxheSgpID09IERpc3Bs
YXlUeXBlOjpMaXN0SXRlbTsKIH0KIAogaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OnNldFdyaXRp
bmdNb2RlKFdyaXRpbmdNb2RlIHYpCkBAIC0yMTkzLDI4ICsyMTkzLDI4IEBAIGlubGluZSB2b2lk
IFJlbmRlclN0eWxlOjpnZXRTaGFkb3dCbG9ja0QKICAgICByZXR1cm4gaXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKSA/IGdldFNoYWRvd1ZlcnRpY2FsRXh0ZW50KHNoYWRvdywgbG9naWNhbFRvcCwg
bG9naWNhbEJvdHRvbSkgOiBnZXRTaGFkb3dIb3Jpem9udGFsRXh0ZW50KHNoYWRvdywgbG9naWNh
bFRvcCwgbG9naWNhbEJvdHRvbSk7CiB9CiAKLWlubGluZSBib29sIFJlbmRlclN0eWxlOjppc0Rp
c3BsYXlSZXBsYWNlZFR5cGUoRURpc3BsYXkgZGlzcGxheSkKK2lubGluZSBib29sIFJlbmRlclN0
eWxlOjppc0Rpc3BsYXlSZXBsYWNlZFR5cGUoRGlzcGxheVR5cGUgZGlzcGxheSkKIHsKLSAgICBy
ZXR1cm4gZGlzcGxheSA9PSBJTkxJTkVfQkxPQ0sgfHwgZGlzcGxheSA9PSBJTkxJTkVfQk9YIHx8
IGRpc3BsYXkgPT0gSU5MSU5FX0ZMRVgKLSAgICAgICAgfHwgZGlzcGxheSA9PSBJTkxJTkVfR1JJ
RCB8fCBkaXNwbGF5ID09IElOTElORV9UQUJMRTsKKyAgICByZXR1cm4gZGlzcGxheSA9PSBEaXNw
bGF5VHlwZTo6SW5saW5lQmxvY2sgfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lQm94
IHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OklubGluZUZsZXgKKyAgICAgICAgfHwgZGlzcGxh
eSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lR3JpZCB8fCBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpJ
bmxpbmVUYWJsZTsKIH0KIAotaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmlzRGlzcGxheUlubGlu
ZVR5cGUoRURpc3BsYXkgZGlzcGxheSkKK2lubGluZSBib29sIFJlbmRlclN0eWxlOjppc0Rpc3Bs
YXlJbmxpbmVUeXBlKERpc3BsYXlUeXBlIGRpc3BsYXkpCiB7Ci0gICAgcmV0dXJuIGRpc3BsYXkg
PT0gSU5MSU5FIHx8IGlzRGlzcGxheVJlcGxhY2VkVHlwZShkaXNwbGF5KTsKKyAgICByZXR1cm4g
ZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lIHx8IGlzRGlzcGxheVJlcGxhY2VkVHlwZShk
aXNwbGF5KTsKIH0KIAotaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmlzRGlzcGxheUZsZXhpYmxl
Qm94KEVEaXNwbGF5IGRpc3BsYXkpCitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6aXNEaXNwbGF5
RmxleGlibGVCb3goRGlzcGxheVR5cGUgZGlzcGxheSkKIHsKLSAgICByZXR1cm4gZGlzcGxheSA9
PSBGTEVYIHx8IGRpc3BsYXkgPT0gSU5MSU5FX0ZMRVg7CisgICAgcmV0dXJuIGRpc3BsYXkgPT0g
RGlzcGxheVR5cGU6OkZsZXggfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lRmxleDsK
IH0KIAotaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmlzRGlzcGxheUdyaWRCb3goRURpc3BsYXkg
ZGlzcGxheSkKK2lubGluZSBib29sIFJlbmRlclN0eWxlOjppc0Rpc3BsYXlHcmlkQm94KERpc3Bs
YXlUeXBlIGRpc3BsYXkpCiB7Ci0gICAgcmV0dXJuIGRpc3BsYXkgPT0gR1JJRCB8fCBkaXNwbGF5
ID09IElOTElORV9HUklEOworICAgIHJldHVybiBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpHcmlk
IHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OklubGluZUdyaWQ7CiB9CiAKLWlubGluZSBib29s
IFJlbmRlclN0eWxlOjppc0Rpc3BsYXlGbGV4aWJsZU9yR3JpZEJveChFRGlzcGxheSBkaXNwbGF5
KQoraW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmlzRGlzcGxheUZsZXhpYmxlT3JHcmlkQm94KERp
c3BsYXlUeXBlIGRpc3BsYXkpCiB7CiAgICAgcmV0dXJuIGlzRGlzcGxheUZsZXhpYmxlQm94KGRp
c3BsYXkpIHx8IGlzRGlzcGxheUdyaWRCb3goZGlzcGxheSk7CiB9CkBAIC0yMjQ2LDcgKzIyNDYs
NyBAQCBpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6c2V0Qm94UmVmbGVjdChSCiAKIGlubGluZSBi
b29sIHBzZXVkb0VsZW1lbnRSZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlKiBzdHls
ZSkKIHsKLSAgICByZXR1cm4gc3R5bGUgJiYgc3R5bGUtPmRpc3BsYXkoKSAhPSBOT05FICYmIHN0
eWxlLT5jb250ZW50RGF0YSgpOworICAgIHJldHVybiBzdHlsZSAmJiBzdHlsZS0+ZGlzcGxheSgp
ICE9IERpc3BsYXlUeXBlOjpOb25lICYmIHN0eWxlLT5jb250ZW50RGF0YSgpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGVDb25zdGFudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5jcHAJKHJldmlzaW9uIDIzMjEyMykK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgVmlzaWJpbGl0eSB2
aXNpYmlsaXR5KQoreworICAgIHN3aXRjaCAodmlzaWJpbGl0eSkgeworICAgIGNhc2UgVmlzaWJp
bGl0eTo6VmlzaWJsZTogdHMgPDwgInZpc2libGUiOyBicmVhazsKKyAgICBjYXNlIFZpc2liaWxp
dHk6OkhpZGRlbjogdHMgPDwgImhpZGRlbiI7IGJyZWFrOworICAgIGNhc2UgVmlzaWJpbGl0eTo6
Q29sbGFwc2U6IHRzIDw8ICJjb2xsYXBzZSI7IGJyZWFrOworICAgIH0KKyAgICAKKyAgICByZXR1
cm4gdHM7Cit9CisKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEltYWdl
UmVuZGVyaW5nIGltYWdlUmVuZGVyaW5nKQogewogICAgIHN3aXRjaCAoaW1hZ2VSZW5kZXJpbmcp
IHsKQEAgLTExMSw3ICsxMjIsNyBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBFCiAKIGJvb2wgYWx3YXlzUGFnZUJyZWFrKEJyZWFrQmV0d2VlbiBiZXR3ZWVuKQogewot
ICAgIHJldHVybiBiZXR3ZWVuID49IFBhZ2VCcmVha0JldHdlZW47CisgICAgcmV0dXJuIGJldHdl
ZW4gPj0gQnJlYWtCZXR3ZWVuOjpQYWdlOwogfQogCiBjb25zdCBmbG9hdCBkZWZhdWx0TWl0ZXJM
aW1pdCA9IDQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGVDb25zdGFudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc3LDMwICs3NywzMiBAQCBlbnVtIGNsYXNzIFN0eWxlRGlmZmVyZW5jZUNvbnRleHRT
ZW5zaXRpCiB9OwogCiAvLyBTdGF0aWMgcHNldWRvIHN0eWxlcy4gRHluYW1pYyBvbmVzIGFyZSBw
cm9kdWNlZCBvbiB0aGUgZmx5LgotZW51bSBQc2V1ZG9JZCA6IHVuc2lnbmVkIGNoYXIgewotICAg
IC8vIFRoZSBvcmRlciBtdXN0IGJlIE5PUCBJRCwgcHVibGljIElEcywgYW5kIHRoZW4gaW50ZXJu
YWwgSURzLgotICAgIE5PUFNFVURPLAotICAgIEZJUlNUX0xJTkUsCi0gICAgRklSU1RfTEVUVEVS
LAotICAgIE1BUktFUiwKLSAgICBCRUZPUkUsCi0gICAgQUZURVIsCi0gICAgU0VMRUNUSU9OLAot
ICAgIFNDUk9MTEJBUiwKLQotICAgIC8vIEludGVybmFsIElEcyBmb2xsb3c6Ci0gICAgU0NST0xM
QkFSX1RIVU1CLAotICAgIFNDUk9MTEJBUl9CVVRUT04sCi0gICAgU0NST0xMQkFSX1RSQUNLLAot
ICAgIFNDUk9MTEJBUl9UUkFDS19QSUVDRSwKLSAgICBTQ1JPTExCQVJfQ09STkVSLAotICAgIFJF
U0laRVIsCi0KLSAgICBBRlRFUl9MQVNUX0lOVEVSTkFMX1BTRVVET0lELAotCi0gICAgRklSU1Rf
UFVCTElDX1BTRVVET0lEID0gRklSU1RfTElORSwKLSAgICBGSVJTVF9JTlRFUk5BTF9QU0VVRE9J
RCA9IFNDUk9MTEJBUl9USFVNQiwKLSAgICBQVUJMSUNfUFNFVURPSURfTUFTSyA9ICgoMSA8PCBG
SVJTVF9JTlRFUk5BTF9QU0VVRE9JRCkgLSAxKSAmIH4oKDEgPDwgRklSU1RfUFVCTElDX1BTRVVE
T0lEKSAtIDEpCitlbnVtIGNsYXNzIFBzZXVkb0lkIDogdW5zaWduZWQgY2hhciB7CisgICAgLy8g
VGhlIG9yZGVyIG11c3QgYmUgTm9uZSwgcHVibGljIElEcywgYW5kIHRoZW4gaW50ZXJuYWwgSURz
LgorICAgIE5vbmUsCisKKyAgICAvLyBQdWJsaWM6CisgICAgRmlyc3RMaW5lLAorICAgIEZpcnN0
TGV0dGVyLAorICAgIE1hcmtlciwKKyAgICBCZWZvcmUsCisgICAgQWZ0ZXIsCisgICAgU2VsZWN0
aW9uLAorICAgIFNjcm9sbGJhciwKKworICAgIC8vIEludGVybmFsOgorICAgIFNjcm9sbGJhclRo
dW1iLAorICAgIFNjcm9sbGJhckJ1dHRvbiwKKyAgICBTY3JvbGxiYXJUcmFjaywKKyAgICBTY3Jv
bGxiYXJUcmFja1BpZWNlLAorICAgIFNjcm9sbGJhckNvcm5lciwKKyAgICBSZXNpemVyLAorCisg
ICAgQWZ0ZXJMYXN0SW50ZXJuYWxQc2V1ZG9JZCwKKworICAgIEZpcnN0UHVibGljUHNldWRvSWQg
PSBGaXJzdExpbmUsCisgICAgRmlyc3RJbnRlcm5hbFBzZXVkb0lkID0gU2Nyb2xsYmFyVGh1bWIs
CisgICAgUHVibGljUHNldWRvSWRNYXNrID0gKCgxIDw8IEZpcnN0SW50ZXJuYWxQc2V1ZG9JZCkg
LSAxKSAmIH4oKDEgPDwgRmlyc3RQdWJsaWNQc2V1ZG9JZCkgLSAxKQogfTsKIAogY2xhc3MgUHNl
dWRvSWRTZXQgewpAQCAtMTI0LDE0ICsxMjYsMTQgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXMo
UHNldWRvSWQgcHNldWRvSWQpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQoKHNpemVvZiht
X2RhdGEpICogOCkgPiBwc2V1ZG9JZCk7Ci0gICAgICAgIHJldHVybiBtX2RhdGEgJiAoMVUgPDwg
cHNldWRvSWQpOworICAgICAgICBBU1NFUlQoKHNpemVvZihtX2RhdGEpICogOCkgPiBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4ocHNldWRvSWQpKTsKKyAgICAgICAgcmV0dXJuIG1fZGF0YSAmICgxVSA8
PCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHNldWRvSWQpKTsKICAgICB9CiAKICAgICB2b2lkIGFk
ZChQc2V1ZG9JZCBwc2V1ZG9JZCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCgoc2l6ZW9mKG1fZGF0
YSkgKiA4KSA+IHBzZXVkb0lkKTsKLSAgICAgICAgbV9kYXRhIHw9ICgxVSA8PCBwc2V1ZG9JZCk7
CisgICAgICAgIEFTU0VSVCgoc2l6ZW9mKG1fZGF0YSkgKiA4KSA+IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihwc2V1ZG9JZCkpOworICAgICAgICBtX2RhdGEgfD0gKDFVIDw8IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihwc2V1ZG9JZCkpOwogICAgIH0KIAogICAgIHZvaWQgbWVyZ2UoUHNldWRvSWRTZXQg
c291cmNlKQpAQCAtNTQzLDE0ICs1NDUsMTQgQEAgZW51bSBjbGFzcyBSZXNpemUgewogfTsKIAog
Ly8gVGhlIG9yZGVyIG9mIHRoaXMgZW51bSBtdXN0IG1hdGNoIHRoZSBvcmRlciBvZiB0aGUgbGlz
dCBzdHlsZSB0eXBlcyBpbiBDU1NWYWx1ZUtleXdvcmRzLmluLgotZW51bSBFTGlzdFN0eWxlVHlw
ZSB7CitlbnVtIGNsYXNzIExpc3RTdHlsZVR5cGUgewogICAgIERpc2MsCiAgICAgQ2lyY2xlLAog
ICAgIFNxdWFyZSwKLSAgICBEZWNpbWFsTGlzdFN0eWxlLAorICAgIERlY2ltYWwsCiAgICAgRGVj
aW1hbExlYWRpbmdaZXJvLAogICAgIEFyYWJpY0luZGljLAotICAgIEJpbmFyeUxpc3RTdHlsZSwK
KyAgICBCaW5hcnksCiAgICAgQmVuZ2FsaSwKICAgICBDYW1ib2RpYW4sCiAgICAgS2htZXIsCkBA
IC02MjQsNyArNjI2LDcgQEAgZW51bSBFTGlzdFN0eWxlVHlwZSB7CiAgICAgS2F0YWthbmEsCiAg
ICAgSGlyYWdhbmFJcm9oYSwKICAgICBLYXRha2FuYUlyb2hhLAotICAgIE5vbmVMaXN0U3R5bGUK
KyAgICBOb25lCiB9OwogCiBlbnVtIGNsYXNzIFF1b3RlVHlwZSB7CkBAIC02MzQsNTAgKzYzNiw1
MCBAQCBlbnVtIGNsYXNzIFF1b3RlVHlwZSB7CiAgICAgTm9DbG9zZVF1b3RlCiB9OwogCi1lbnVt
IEVCb3JkZXJGaXQgewotICAgIEJvcmRlckZpdEJvcmRlciwKLSAgICBCb3JkZXJGaXRMaW5lcwot
fTsKLQotZW51bSBFQW5pbWF0aW9uRmlsbE1vZGUgewotICAgIEFuaW1hdGlvbkZpbGxNb2RlTm9u
ZSwKLSAgICBBbmltYXRpb25GaWxsTW9kZUZvcndhcmRzLAotICAgIEFuaW1hdGlvbkZpbGxNb2Rl
QmFja3dhcmRzLAotICAgIEFuaW1hdGlvbkZpbGxNb2RlQm90aAotfTsKLQotZW51bSBFQW5pbVBs
YXlTdGF0ZSB7Ci0gICAgQW5pbVBsYXlTdGF0ZVBsYXlpbmcgPSAweDAsCi0gICAgQW5pbVBsYXlT
dGF0ZVBhdXNlZCA9IDB4MQotfTsKLQotZW51bSBFV2hpdGVTcGFjZSB7Ci0gICAgTk9STUFMLAot
ICAgIFBSRSwKLSAgICBQUkVfV1JBUCwKLSAgICBQUkVfTElORSwKLSAgICBOT1dSQVAsCi0gICAg
S0hUTUxfTk9XUkFQCitlbnVtIGNsYXNzIEJvcmRlckZpdCB7CisgICAgQm9yZGVyLAorICAgIExp
bmVzCit9OworCitlbnVtIGNsYXNzIEFuaW1hdGlvbkZpbGxNb2RlIHsKKyAgICBOb25lLAorICAg
IEZvcndhcmRzLAorICAgIEJhY2t3YXJkcywKKyAgICBCb3RoCit9OworCitlbnVtIGNsYXNzIEFu
aW1hdGlvblBsYXlTdGF0ZSB7CisgICAgUGxheWluZyA9IDB4MCwKKyAgICBQYXVzZWQgPSAweDEK
K307CisKK2VudW0gY2xhc3MgV2hpdGVTcGFjZSB7CisgICAgTm9ybWFsLAorICAgIFByZSwKKyAg
ICBQcmVXcmFwLAorICAgIFByZUxpbmUsCisgICAgTm9XcmFwLAorICAgIEtIVE1MTm9XcmFwCiB9
OwogCiAvLyBUaGUgb3JkZXIgb2YgdGhpcyBlbnVtIG11c3QgbWF0Y2ggdGhlIG9yZGVyIG9mIHRo
ZSB0ZXh0IGFsaWduIHZhbHVlcyBpbiBDU1NWYWx1ZUtleXdvcmRzLmluLgotZW51bSBFVGV4dEFs
aWduIHsKLSAgICBMRUZULAotICAgIFJJR0hULAotICAgIENFTlRFUiwKLSAgICBKVVNUSUZZLAot
ICAgIFdFQktJVF9MRUZULAotICAgIFdFQktJVF9SSUdIVCwKLSAgICBXRUJLSVRfQ0VOVEVSLAot
ICAgIFRBU1RBUlQsCi0gICAgVEFFTkQsCi19OwotCi1lbnVtIEVUZXh0VHJhbnNmb3JtIHsKLSAg
ICBDQVBJVEFMSVpFLAotICAgIFVQUEVSQ0FTRSwKLSAgICBMT1dFUkNBU0UsCi0gICAgVFROT05F
CitlbnVtIGNsYXNzIFRleHRBbGlnbk1vZGUgeworICAgIExlZnQsCisgICAgUmlnaHQsCisgICAg
Q2VudGVyLAorICAgIEp1c3RpZnksCisgICAgV2ViS2l0TGVmdCwKKyAgICBXZWJLaXRSaWdodCwK
KyAgICBXZWJLaXRDZW50ZXIsCisgICAgU3RhcnQsCisgICAgRW5kLAorfTsKKworZW51bSBjbGFz
cyBUZXh0VHJhbnNmb3JtIHsKKyAgICBDYXBpdGFsaXplLAorICAgIFVwcGVyY2FzZSwKKyAgICBM
b3dlcmNhc2UsCisgICAgTm9uZQogfTsKIAogI2lmIEVOQUJMRShMRVRURVJQUkVTUykKQEAgLTY4
NiwyMTYgKzY4OCwyMTggQEAgc3RhdGljIGNvbnN0IHNpemVfdCBUZXh0RGVjb3JhdGlvbkJpdHMg
PQogc3RhdGljIGNvbnN0IHNpemVfdCBUZXh0RGVjb3JhdGlvbkJpdHMgPSA0OwogI2VuZGlmCiBl
bnVtIFRleHREZWNvcmF0aW9uIHsKLSAgICBUZXh0RGVjb3JhdGlvbk5vbmUgPSAweDAsCi0gICAg
VGV4dERlY29yYXRpb25VbmRlcmxpbmUgPSAweDEsCi0gICAgVGV4dERlY29yYXRpb25PdmVybGlu
ZSA9IDB4MiwKLSAgICBUZXh0RGVjb3JhdGlvbkxpbmVUaHJvdWdoID0gMHg0LAotICAgIFRleHRE
ZWNvcmF0aW9uQmxpbmsgPSAweDgsCisgICAgVGV4dERlY29yYXRpb25Ob25lICAgICAgICAgID0g
MCwKKyAgICBUZXh0RGVjb3JhdGlvblVuZGVybGluZSAgICAgPSAxIDw8IDAsCisgICAgVGV4dERl
Y29yYXRpb25PdmVybGluZSAgICAgID0gMSA8PCAxLAorICAgIFRleHREZWNvcmF0aW9uTGluZVRo
cm91Z2ggICA9IDEgPDwgMiwKKyAgICBUZXh0RGVjb3JhdGlvbkJsaW5rICAgICAgICAgPSAxIDw8
IDMsCiAjaWYgRU5BQkxFKExFVFRFUlBSRVNTKQotICAgIFRleHREZWNvcmF0aW9uTGV0dGVycHJl
c3MgPSAweDEwLAorICAgIFRleHREZWNvcmF0aW9uTGV0dGVycHJlc3MgICA9IDEgPDwgNCwKICNl
bmRpZgogfTsKIGlubGluZSBUZXh0RGVjb3JhdGlvbiBvcGVyYXRvcnwoVGV4dERlY29yYXRpb24g
YSwgVGV4dERlY29yYXRpb24gYikgeyByZXR1cm4gVGV4dERlY29yYXRpb24oaW50KGEpIHwgaW50
KGIpKTsgfQogaW5saW5lIFRleHREZWNvcmF0aW9uJiBvcGVyYXRvcnw9KFRleHREZWNvcmF0aW9u
JiBhLCBUZXh0RGVjb3JhdGlvbiBiKSB7IHJldHVybiBhID0gYSB8IGI7IH0KIAotZW51bSBUZXh0
RGVjb3JhdGlvblN0eWxlIHsKLSAgICBUZXh0RGVjb3JhdGlvblN0eWxlU29saWQsCi0gICAgVGV4
dERlY29yYXRpb25TdHlsZURvdWJsZSwKLSAgICBUZXh0RGVjb3JhdGlvblN0eWxlRG90dGVkLAot
ICAgIFRleHREZWNvcmF0aW9uU3R5bGVEYXNoZWQsCi0gICAgVGV4dERlY29yYXRpb25TdHlsZVdh
dnkKK2VudW0gY2xhc3MgVGV4dERlY29yYXRpb25TdHlsZSB7CisgICAgU29saWQsCisgICAgRG91
YmxlLAorICAgIERvdHRlZCwKKyAgICBEYXNoZWQsCisgICAgV2F2eQogfTsKIAogI2lmIEVOQUJM
RShDU1MzX1RFWFQpCi1lbnVtIFRleHRBbGlnbkxhc3QgewotICAgIFRleHRBbGlnbkxhc3RBdXRv
LAotICAgIFRleHRBbGlnbkxhc3RTdGFydCwKLSAgICBUZXh0QWxpZ25MYXN0RW5kLAotICAgIFRl
eHRBbGlnbkxhc3RMZWZ0LAotICAgIFRleHRBbGlnbkxhc3RSaWdodCwKLSAgICBUZXh0QWxpZ25M
YXN0Q2VudGVyLAotICAgIFRleHRBbGlnbkxhc3RKdXN0aWZ5CitlbnVtIGNsYXNzIFRleHRBbGln
bkxhc3QgeworICAgIEF1dG8sCisgICAgU3RhcnQsCisgICAgRW5kLAorICAgIExlZnQsCisgICAg
UmlnaHQsCisgICAgQ2VudGVyLAorICAgIEp1c3RpZnkKIH07CiAKLWVudW0gVGV4dEp1c3RpZnkg
ewotICAgIFRleHRKdXN0aWZ5QXV0bywKLSAgICBUZXh0SnVzdGlmeU5vbmUsCi0gICAgVGV4dEp1
c3RpZnlJbnRlcldvcmQsCi0gICAgVGV4dEp1c3RpZnlEaXN0cmlidXRlCitlbnVtIGNsYXNzIFRl
eHRKdXN0aWZ5IHsKKyAgICBBdXRvLAorICAgIE5vbmUsCisgICAgSW50ZXJXb3JkLAorICAgIERp
c3RyaWJ1dGUKIH07CiAjZW5kaWYgLy8gQ1NTM19URVhUCiAKIGVudW0gVGV4dERlY29yYXRpb25T
a2lwSXRlbXMgewotICAgIFRleHREZWNvcmF0aW9uU2tpcE5vbmUgPSAwLAotICAgIFRleHREZWNv
cmF0aW9uU2tpcEluayA9IDEgPDwgMCwKLSAgICBUZXh0RGVjb3JhdGlvblNraXBPYmplY3RzID0g
MSA8PCAxLAotICAgIFRleHREZWNvcmF0aW9uU2tpcEF1dG8gPSAxIDw8IDIKKyAgICBUZXh0RGVj
b3JhdGlvblNraXBOb25lICAgICAgPSAwLAorICAgIFRleHREZWNvcmF0aW9uU2tpcEluayAgICAg
ICA9IDEgPDwgMCwKKyAgICBUZXh0RGVjb3JhdGlvblNraXBPYmplY3RzICAgPSAxIDw8IDEsCisg
ICAgVGV4dERlY29yYXRpb25Ta2lwQXV0byAgICAgID0gMSA8PCAyCiB9OwogdHlwZWRlZiB1bnNp
Z25lZCBUZXh0RGVjb3JhdGlvblNraXA7CiAKIGVudW0gVGV4dFVuZGVybGluZVBvc2l0aW9uIHsK
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHN1cHBvcnQgZm9yICd1bmRlciBsZWZ0JyBhbmQgJ3Vu
ZGVyIHJpZ2h0JyB2YWx1ZXMuCi0gICAgVGV4dFVuZGVybGluZVBvc2l0aW9uQXV0byA9IDB4MSwK
LSAgICBUZXh0VW5kZXJsaW5lUG9zaXRpb25BbHBoYWJldGljID0gMHgyLAotICAgIFRleHRVbmRl
cmxpbmVQb3NpdGlvblVuZGVyID0gMHg0Ci19OwotCi1lbnVtIFRleHRab29tIHsKLSAgICBUZXh0
Wm9vbU5vcm1hbCwKLSAgICBUZXh0Wm9vbVJlc2V0Ci19OwotCi1lbnVtIEJyZWFrQmV0d2VlbiB7
Ci0gICAgQXV0b0JyZWFrQmV0d2VlbiwKLSAgICBBdm9pZEJyZWFrQmV0d2VlbiwKLSAgICBBdm9p
ZENvbHVtbkJyZWFrQmV0d2VlbiwKLSAgICBBdm9pZFBhZ2VCcmVha0JldHdlZW4sCi0gICAgQ29s
dW1uQnJlYWtCZXR3ZWVuLAotICAgIFBhZ2VCcmVha0JldHdlZW4sCi0gICAgTGVmdFBhZ2VCcmVh
a0JldHdlZW4sCi0gICAgUmlnaHRQYWdlQnJlYWtCZXR3ZWVuLAotICAgIFJlY3RvUGFnZUJyZWFr
QmV0d2VlbiwKLSAgICBWZXJzb1BhZ2VCcmVha0JldHdlZW4KKyAgICBUZXh0VW5kZXJsaW5lUG9z
aXRpb25BdXRvICAgICAgID0gMSA8PCAwLAorICAgIFRleHRVbmRlcmxpbmVQb3NpdGlvbkFscGhh
YmV0aWMgPSAxIDw8IDEsCisgICAgVGV4dFVuZGVybGluZVBvc2l0aW9uVW5kZXIgICAgICA9IDEg
PDwgMgorfTsKKworZW51bSBjbGFzcyBUZXh0Wm9vbSB7CisgICAgTm9ybWFsLAorICAgIFJlc2V0
Cit9OworCitlbnVtIGNsYXNzIEJyZWFrQmV0d2VlbiB7CisgICAgQXV0bywKKyAgICBBdm9pZCwK
KyAgICBBdm9pZENvbHVtbiwKKyAgICBBdm9pZFBhZ2UsCisgICAgQ29sdW1uLAorICAgIFBhZ2Us
CisgICAgTGVmdFBhZ2UsCisgICAgUmlnaHRQYWdlLAorICAgIFJlY3RvUGFnZSwKKyAgICBWZXJz
b1BhZ2UKIH07CiBib29sIGFsd2F5c1BhZ2VCcmVhayhCcmVha0JldHdlZW4pOwogICAgIAotZW51
bSBCcmVha0luc2lkZSB7Ci0gICAgQXV0b0JyZWFrSW5zaWRlLAotICAgIEF2b2lkQnJlYWtJbnNp
ZGUsCi0gICAgQXZvaWRDb2x1bW5CcmVha0luc2lkZSwKLSAgICBBdm9pZFBhZ2VCcmVha0luc2lk
ZQorZW51bSBjbGFzcyBCcmVha0luc2lkZSB7CisgICAgQXV0bywKKyAgICBBdm9pZCwKKyAgICBB
dm9pZENvbHVtbiwKKyAgICBBdm9pZFBhZ2UKIH07CiAKIGVudW0gSGFuZ2luZ1B1bmN0dWF0aW9u
IHsKLSAgICBOb0hhbmdpbmdQdW5jdHVhdGlvbiA9IDAsCi0gICAgRmlyc3RIYW5naW5nUHVuY3R1
YXRpb24gPSAxIDw8IDAsCi0gICAgTGFzdEhhbmdpbmdQdW5jdHVhdGlvbiA9IDEgPDwgMSwKLSAg
ICBBbGxvd0VuZEhhbmdpbmdQdW5jdHVhdGlvbiA9IDEgPDwgMiwKLSAgICBGb3JjZUVuZEhhbmdp
bmdQdW5jdHVhdGlvbiA9IDEgPDwgMworICAgIE5vSGFuZ2luZ1B1bmN0dWF0aW9uICAgICAgICA9
IDAsCisgICAgRmlyc3RIYW5naW5nUHVuY3R1YXRpb24gICAgID0gMSA8PCAwLAorICAgIExhc3RI
YW5naW5nUHVuY3R1YXRpb24gICAgICA9IDEgPDwgMSwKKyAgICBBbGxvd0VuZEhhbmdpbmdQdW5j
dHVhdGlvbiAgPSAxIDw8IDIsCisgICAgRm9yY2VFbmRIYW5naW5nUHVuY3R1YXRpb24gID0gMSA8
PCAzCiB9OwogaW5saW5lIEhhbmdpbmdQdW5jdHVhdGlvbiBvcGVyYXRvcnwoSGFuZ2luZ1B1bmN0
dWF0aW9uIGEsIEhhbmdpbmdQdW5jdHVhdGlvbiBiKSB7IHJldHVybiBIYW5naW5nUHVuY3R1YXRp
b24oaW50KGEpIHwgaW50KGIpKTsgfQogaW5saW5lIEhhbmdpbmdQdW5jdHVhdGlvbiYgb3BlcmF0
b3J8PShIYW5naW5nUHVuY3R1YXRpb24mIGEsIEhhbmdpbmdQdW5jdHVhdGlvbiBiKSB7IHJldHVy
biBhID0gYSB8IGI7IH0KIAotZW51bSBFRW1wdHlDZWxsIHsKLSAgICBTSE9XLAotICAgIEhJREUK
K2VudW0gY2xhc3MgRW1wdHlDZWxsIHsKKyAgICBTaG93LAorICAgIEhpZGUKIH07CiAKLWVudW0g
RUNhcHRpb25TaWRlIHsKLSAgICBDQVBUT1AsCi0gICAgQ0FQQk9UVE9NLAotICAgIENBUExFRlQs
Ci0gICAgQ0FQUklHSFQKK2VudW0gY2xhc3MgQ2FwdGlvblNpZGUgeworICAgIFRvcCwKKyAgICBC
b3R0b20sCisgICAgTGVmdCwKKyAgICBSaWdodAogfTsKIAotZW51bSBFTGlzdFN0eWxlUG9zaXRp
b24gewotICAgIE9VVFNJREUsCi0gICAgSU5TSURFCitlbnVtIGNsYXNzIExpc3RTdHlsZVBvc2l0
aW9uIHsKKyAgICBPdXRzaWRlLAorICAgIEluc2lkZQogfTsKIAotZW51bSBFVmlzaWJpbGl0eSB7
Ci0gICAgVklTSUJMRSwKLSAgICBISURERU4sCi0gICAgQ09MTEFQU0UKK2VudW0gY2xhc3MgVmlz
aWJpbGl0eSB7CisgICAgVmlzaWJsZSwKKyAgICBIaWRkZW4sCisgICAgQ29sbGFwc2UKIH07CiAK
LWVudW0gRUN1cnNvciB7CitXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3Ry
ZWFtJiwgVmlzaWJpbGl0eSk7CisKK2VudW0gY2xhc3MgQ3Vyc29yVHlwZSB7CiAgICAgLy8gVGhl
IGZvbGxvd2luZyBtdXN0IG1hdGNoIHRoZSBvcmRlciBpbiBDU1NWYWx1ZUtleXdvcmRzLmluLgot
ICAgIEN1cnNvckF1dG8sCi0gICAgQ3Vyc29yRGVmYXVsdCwKLSAgICAvLyBDdXJzb3JOb25lCi0g
ICAgQ3Vyc29yQ29udGV4dE1lbnUsCi0gICAgQ3Vyc29ySGVscCwKLSAgICBDdXJzb3JQb2ludGVy
LAotICAgIEN1cnNvclByb2dyZXNzLAotICAgIEN1cnNvcldhaXQsCi0gICAgQ3Vyc29yQ2VsbCwK
LSAgICBDdXJzb3JDcm9zc2hhaXIsCi0gICAgQ3Vyc29yVGV4dCwKLSAgICBDdXJzb3JWZXJ0aWNh
bFRleHQsCi0gICAgQ3Vyc29yQWxpYXMsCi0gICAgLy8gQ3Vyc29yQ29weQotICAgIEN1cnNvck1v
dmUsCi0gICAgQ3Vyc29yTm9Ecm9wLAotICAgIEN1cnNvck5vdEFsbG93ZWQsCi0gICAgQ3Vyc29y
R3JhYiwKLSAgICBDdXJzb3JHcmFiYmluZywKLSAgICBDdXJzb3JFUmVzaXplLAotICAgIEN1cnNv
ck5SZXNpemUsCi0gICAgQ3Vyc29yTmVSZXNpemUsCi0gICAgQ3Vyc29yTndSZXNpemUsCi0gICAg
Q3Vyc29yU1Jlc2l6ZSwKLSAgICBDdXJzb3JTZVJlc2l6ZSwKLSAgICBDdXJzb3JTd1Jlc2l6ZSwK
LSAgICBDdXJzb3JXUmVzaXplLAotICAgIEN1cnNvckV3UmVzaXplLAotICAgIEN1cnNvck5zUmVz
aXplLAotICAgIEN1cnNvck5lc3dSZXNpemUsCi0gICAgQ3Vyc29yTndzZVJlc2l6ZSwKLSAgICBD
dXJzb3JDb2xSZXNpemUsCi0gICAgQ3Vyc29yUm93UmVzaXplLAotICAgIEN1cnNvckFsbFNjcm9s
bCwKLSAgICBDdXJzb3Jab29tSW4sCi0gICAgQ3Vyc29yWm9vbU91dCwKKyAgICBBdXRvLAorICAg
IERlZmF1bHQsCisgICAgLy8gTm9uZQorICAgIENvbnRleHRNZW51LAorICAgIEhlbHAsCisgICAg
UG9pbnRlciwKKyAgICBQcm9ncmVzcywKKyAgICBXYWl0LAorICAgIENlbGwsCisgICAgQ3Jvc3No
YWlyLAorICAgIFRleHQsCisgICAgVmVydGljYWxUZXh0LAorICAgIEFsaWFzLAorICAgIC8vIENv
cHkKKyAgICBNb3ZlLAorICAgIE5vRHJvcCwKKyAgICBOb3RBbGxvd2VkLAorICAgIEdyYWIsCisg
ICAgR3JhYmJpbmcsCisgICAgRVJlc2l6ZSwKKyAgICBOUmVzaXplLAorICAgIE5FUmVzaXplLAor
ICAgIE5XUmVzaXplLAorICAgIFNSZXNpemUsCisgICAgU0VSZXNpemUsCisgICAgU1dSZXNpemUs
CisgICAgV1Jlc2l6ZSwKKyAgICBFV1Jlc2l6ZSwKKyAgICBOU1Jlc2l6ZSwKKyAgICBORVNXUmVz
aXplLAorICAgIE5XU0VSZXNpemUsCisgICAgQ29sdW1uUmVzaXplLAorICAgIFJvd1Jlc2l6ZSwK
KyAgICBBbGxTY3JvbGwsCisgICAgWm9vbUluLAorICAgIFpvb21PdXQsCiAKICAgICAvLyBUaGUg
Zm9sbG93aW5nIGFyZSBoYW5kbGVkIGFzIGV4Y2VwdGlvbnMgc28gZG9uJ3QgbmVlZCB0byBtYXRj
aC4KLSAgICBDdXJzb3JDb3B5LAotICAgIEN1cnNvck5vbmUKKyAgICBDb3B5LAorICAgIE5vbmUK
IH07CiAKICNpZiBFTkFCTEUoQ1VSU09SX1ZJU0lCSUxJVFkpCi1lbnVtIEN1cnNvclZpc2liaWxp
dHkgewotICAgIEN1cnNvclZpc2liaWxpdHlBdXRvLAotICAgIEN1cnNvclZpc2liaWxpdHlBdXRv
SGlkZSwKK2VudW0gY2xhc3MgQ3Vyc29yVmlzaWJpbGl0eSB7CisgICAgQXV0bywKKyAgICBBdXRv
SGlkZSwKIH07CiAjZW5kaWYKIAogLy8gVGhlIG9yZGVyIG9mIHRoaXMgZW51bSBtdXN0IG1hdGNo
IHRoZSBvcmRlciBvZiB0aGUgZGlzcGxheSB2YWx1ZXMgaW4gQ1NTVmFsdWVLZXl3b3Jkcy5pbi4K
LWVudW0gRURpc3BsYXkgewotICAgIElOTElORSwKLSAgICBCTE9DSywKLSAgICBMSVNUX0lURU0s
Ci0gICAgQ09NUEFDVCwKLSAgICBJTkxJTkVfQkxPQ0ssCi0gICAgVEFCTEUsCi0gICAgSU5MSU5F
X1RBQkxFLAotICAgIFRBQkxFX1JPV19HUk9VUCwKLSAgICBUQUJMRV9IRUFERVJfR1JPVVAsCi0g
ICAgVEFCTEVfRk9PVEVSX0dST1VQLAotICAgIFRBQkxFX1JPVywKLSAgICBUQUJMRV9DT0xVTU5f
R1JPVVAsCi0gICAgVEFCTEVfQ09MVU1OLAotICAgIFRBQkxFX0NFTEwsCi0gICAgVEFCTEVfQ0FQ
VElPTiwKLSAgICBCT1gsCi0gICAgSU5MSU5FX0JPWCwKLSAgICBGTEVYLAotICAgIFdFQktJVF9G
TEVYLAotICAgIElOTElORV9GTEVYLAotICAgIFdFQktJVF9JTkxJTkVfRkxFWCwKLSAgICBDT05U
RU5UUywKLSAgICBHUklELAotICAgIElOTElORV9HUklELAotICAgIE5PTkUKLX07Ci0KLWVudW0g
RUluc2lkZUxpbmsgewotICAgIE5vdEluc2lkZUxpbmssCi0gICAgSW5zaWRlVW52aXNpdGVkTGlu
aywKLSAgICBJbnNpZGVWaXNpdGVkTGluaworZW51bSBjbGFzcyBEaXNwbGF5VHlwZSB7CisgICAg
SW5saW5lLAorICAgIEJsb2NrLAorICAgIExpc3RJdGVtLAorICAgIENvbXBhY3QsCisgICAgSW5s
aW5lQmxvY2ssCisgICAgVGFibGUsCisgICAgSW5saW5lVGFibGUsCisgICAgVGFibGVSb3dHcm91
cCwKKyAgICBUYWJsZUhlYWRlckdyb3VwLAorICAgIFRhYmxlRm9vdGVyR3JvdXAsCisgICAgVGFi
bGVSb3csCisgICAgVGFibGVDb2x1bW5Hcm91cCwKKyAgICBUYWJsZUNvbHVtbiwKKyAgICBUYWJs
ZUNlbGwsCisgICAgVGFibGVDYXB0aW9uLAorICAgIEJveCwKKyAgICBJbmxpbmVCb3gsCisgICAg
RmxleCwKKyAgICBXZWJLaXRGbGV4LAorICAgIElubGluZUZsZXgsCisgICAgV2ViS2l0SW5saW5l
RmxleCwKKyAgICBDb250ZW50cywKKyAgICBHcmlkLAorICAgIElubGluZUdyaWQsCisgICAgTm9u
ZQorfTsKKworZW51bSBjbGFzcyBJbnNpZGVMaW5rIHsKKyAgICBOb3RJbnNpZGUsCisgICAgSW5z
aWRlVW52aXNpdGVkLAorICAgIEluc2lkZVZpc2l0ZWQKIH07CiAgICAgCi1lbnVtIEVQb2ludGVy
RXZlbnRzIHsKLSAgICBQRV9OT05FLAotICAgIFBFX0FVVE8sCi0gICAgUEVfU1RST0tFLAotICAg
IFBFX0ZJTEwsCi0gICAgUEVfUEFJTlRFRCwKLSAgICBQRV9WSVNJQkxFLAotICAgIFBFX1ZJU0lC
TEVfU1RST0tFLAotICAgIFBFX1ZJU0lCTEVfRklMTCwKLSAgICBQRV9WSVNJQkxFX1BBSU5URUQs
Ci0gICAgUEVfQUxMCitlbnVtIGNsYXNzIFBvaW50ZXJFdmVudHMgeworICAgIE5vbmUsCisgICAg
QXV0bywKKyAgICBTdHJva2UsCisgICAgRmlsbCwKKyAgICBQYWludGVkLAorICAgIFZpc2libGUs
CisgICAgVmlzaWJsZVN0cm9rZSwKKyAgICBWaXNpYmxlRmlsbCwKKyAgICBWaXNpYmxlUGFpbnRl
ZCwKKyAgICBBbGwKIH07CiAKIGVudW0gY2xhc3MgVHJhbnNmb3JtU3R5bGUzRCB7CkBAIC05MTks
NDIgKzkyMyw0MiBAQCBlbnVtIGNsYXNzIExpbmVDbGFtcCB7CiAgICAgUGVyY2VudGFnZQogfTsK
IAotZW51bSBIeXBoZW5zIHsKLSAgICBIeXBoZW5zTm9uZSwKLSAgICBIeXBoZW5zTWFudWFsLAot
ICAgIEh5cGhlbnNBdXRvCitlbnVtIGNsYXNzIEh5cGhlbnMgeworICAgIE5vbmUsCisgICAgTWFu
dWFsLAorICAgIEF1dG8KIH07CiAKIGVudW0gRVNwZWFrQXMgewotICAgIFNwZWFrTm9ybWFsID0g
MCwKLSAgICBTcGVha1NwZWxsT3V0ID0gMSA8PCAwLAotICAgIFNwZWFrRGlnaXRzID0gMSA8PCAx
LAorICAgIFNwZWFrTm9ybWFsICAgICAgICAgICAgID0gMCwKKyAgICBTcGVha1NwZWxsT3V0ICAg
ICAgICAgICA9IDEgPDwgMCwKKyAgICBTcGVha0RpZ2l0cyAgICAgICAgICAgICA9IDEgPDwgMSwK
ICAgICBTcGVha0xpdGVyYWxQdW5jdHVhdGlvbiA9IDEgPDwgMiwKLSAgICBTcGVha05vUHVuY3R1
YXRpb24gPSAxIDw8IDMKKyAgICBTcGVha05vUHVuY3R1YXRpb24gICAgICA9IDEgPDwgMwogfTsK
IGlubGluZSBFU3BlYWtBcyBvcGVyYXRvcnwoRVNwZWFrQXMgYSwgRVNwZWFrQXMgYikgeyByZXR1
cm4gRVNwZWFrQXMoaW50KGEpIHwgaW50KGIpKTsgfQogaW5saW5lIEVTcGVha0FzJiBvcGVyYXRv
cnw9KEVTcGVha0FzJiBhLCBFU3BlYWtBcyBiKSB7IHJldHVybiBhID0gYSB8IGI7IH0KIAotZW51
bSBUZXh0RW1waGFzaXNGaWxsIHsKLSAgICBUZXh0RW1waGFzaXNGaWxsRmlsbGVkLAotICAgIFRl
eHRFbXBoYXNpc0ZpbGxPcGVuCitlbnVtIGNsYXNzIFRleHRFbXBoYXNpc0ZpbGwgeworICAgIEZp
bGxlZCwKKyAgICBPcGVuCiB9OwogCi1lbnVtIFRleHRFbXBoYXNpc01hcmsgewotICAgIFRleHRF
bXBoYXNpc01hcmtOb25lLAotICAgIFRleHRFbXBoYXNpc01hcmtBdXRvLAotICAgIFRleHRFbXBo
YXNpc01hcmtEb3QsCi0gICAgVGV4dEVtcGhhc2lzTWFya0NpcmNsZSwKLSAgICBUZXh0RW1waGFz
aXNNYXJrRG91YmxlQ2lyY2xlLAotICAgIFRleHRFbXBoYXNpc01hcmtUcmlhbmdsZSwKLSAgICBU
ZXh0RW1waGFzaXNNYXJrU2VzYW1lLAotICAgIFRleHRFbXBoYXNpc01hcmtDdXN0b20KK2VudW0g
Y2xhc3MgVGV4dEVtcGhhc2lzTWFyayB7CisgICAgTm9uZSwKKyAgICBBdXRvLAorICAgIERvdCwK
KyAgICBDaXJjbGUsCisgICAgRG91YmxlQ2lyY2xlLAorICAgIFRyaWFuZ2xlLAorICAgIFNlc2Ft
ZSwKKyAgICBDdXN0b20KIH07CiAKIGVudW0gVGV4dEVtcGhhc2lzUG9zaXRpb25zIHsKLSAgICBU
ZXh0RW1waGFzaXNQb3NpdGlvbk92ZXIgPSAxIDw8IDAsCisgICAgVGV4dEVtcGhhc2lzUG9zaXRp
b25PdmVyICA9IDEgPDwgMCwKICAgICBUZXh0RW1waGFzaXNQb3NpdGlvblVuZGVyID0gMSA8PCAx
LAotICAgIFRleHRFbXBoYXNpc1Bvc2l0aW9uTGVmdCA9IDEgPDwgMiwKKyAgICBUZXh0RW1waGFz
aXNQb3NpdGlvbkxlZnQgID0gMSA8PCAyLAogICAgIFRleHRFbXBoYXNpc1Bvc2l0aW9uUmlnaHQg
PSAxIDw8IDMKIH07CiB0eXBlZGVmIHVuc2lnbmVkIFRleHRFbXBoYXNpc1Bvc2l0aW9uOwpAQCAt
OTgwLDU4ICs5ODQsNTggQEAgZW51bSBjbGFzcyBJbWFnZVJlbmRlcmluZyB7CiAKIFdURjo6VGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBJbWFnZVJlbmRlcmluZyk7CiAK
LWVudW0gSW1hZ2VSZXNvbHV0aW9uU291cmNlIHsKLSAgICBJbWFnZVJlc29sdXRpb25TcGVjaWZp
ZWQgPSAwLAotICAgIEltYWdlUmVzb2x1dGlvbkZyb21JbWFnZQorZW51bSBjbGFzcyBJbWFnZVJl
c29sdXRpb25Tb3VyY2UgeworICAgIFNwZWNpZmllZCA9IDAsCisgICAgRnJvbUltYWdlCiB9Owog
Ci1lbnVtIEltYWdlUmVzb2x1dGlvblNuYXAgewotICAgIEltYWdlUmVzb2x1dGlvbk5vU25hcCA9
IDAsCi0gICAgSW1hZ2VSZXNvbHV0aW9uU25hcFBpeGVscworZW51bSBjbGFzcyBJbWFnZVJlc29s
dXRpb25TbmFwIHsKKyAgICBOb25lID0gMCwKKyAgICBQaXhlbHMKIH07CiAKLWVudW0gT3JkZXIg
ewotICAgIExvZ2ljYWxPcmRlciA9IDAsCi0gICAgVmlzdWFsT3JkZXIKK2VudW0gY2xhc3MgT3Jk
ZXIgeworICAgIExvZ2ljYWwgPSAwLAorICAgIFZpc3VhbAogfTsKIAotZW51bSBDb2x1bW5BeGlz
IHsKLSAgICBIb3Jpem9udGFsQ29sdW1uQXhpcywKLSAgICBWZXJ0aWNhbENvbHVtbkF4aXMsCi0g
ICAgQXV0b0NvbHVtbkF4aXMKK2VudW0gY2xhc3MgQ29sdW1uQXhpcyB7CisgICAgSG9yaXpvbnRh
bCwKKyAgICBWZXJ0aWNhbCwKKyAgICBBdXRvCiB9OwogCi1lbnVtIENvbHVtblByb2dyZXNzaW9u
IHsKLSAgICBOb3JtYWxDb2x1bW5Qcm9ncmVzc2lvbiwKLSAgICBSZXZlcnNlQ29sdW1uUHJvZ3Jl
c3Npb24KK2VudW0gY2xhc3MgQ29sdW1uUHJvZ3Jlc3Npb24geworICAgIE5vcm1hbCwKKyAgICBS
ZXZlcnNlCiB9OwogCi1lbnVtIExpbmVTbmFwIHsKLSAgICBMaW5lU25hcE5vbmUsCi0gICAgTGlu
ZVNuYXBCYXNlbGluZSwKLSAgICBMaW5lU25hcENvbnRhaW4KK2VudW0gY2xhc3MgTGluZVNuYXAg
eworICAgIE5vbmUsCisgICAgQmFzZWxpbmUsCisgICAgQ29udGFpbgogfTsKIAotZW51bSBMaW5l
QWxpZ24gewotICAgIExpbmVBbGlnbk5vbmUsCi0gICAgTGluZUFsaWduRWRnZXMKK2VudW0gY2xh
c3MgTGluZUFsaWduIHsKKyAgICBOb25lLAorICAgIEVkZ2VzCiB9OwogCi1lbnVtIFJ1YnlQb3Np
dGlvbiB7Ci0gICAgUnVieVBvc2l0aW9uQmVmb3JlLAotICAgIFJ1YnlQb3NpdGlvbkFmdGVyLAot
ICAgIFJ1YnlQb3NpdGlvbkludGVyQ2hhcmFjdGVyCitlbnVtIGNsYXNzIFJ1YnlQb3NpdGlvbiB7
CisgICAgQmVmb3JlLAorICAgIEFmdGVyLAorICAgIEludGVyQ2hhcmFjdGVyCiB9OwogCiBzdGF0
aWMgY29uc3Qgc2l6ZV90IEdyaWRBdXRvRmxvd0JpdHMgPSA0OwogZW51bSBJbnRlcm5hbEdyaWRB
dXRvRmxvd0FsZ29yaXRobSB7Ci0gICAgSW50ZXJuYWxBdXRvRmxvd0FsZ29yaXRobVNwYXJzZSA9
IDB4MSwKLSAgICBJbnRlcm5hbEF1dG9GbG93QWxnb3JpdGhtRGVuc2UgPSAweDIsCisgICAgSW50
ZXJuYWxBdXRvRmxvd0FsZ29yaXRobVNwYXJzZSA9IDEgPDwgMCwKKyAgICBJbnRlcm5hbEF1dG9G
bG93QWxnb3JpdGhtRGVuc2UgID0gMSA8PCAxLAogfTsKIAogZW51bSBJbnRlcm5hbEdyaWRBdXRv
Rmxvd0RpcmVjdGlvbiB7Ci0gICAgSW50ZXJuYWxBdXRvRmxvd0RpcmVjdGlvblJvdyA9IDB4NCwK
LSAgICBJbnRlcm5hbEF1dG9GbG93RGlyZWN0aW9uQ29sdW1uID0gMHg4CisgICAgSW50ZXJuYWxB
dXRvRmxvd0RpcmVjdGlvblJvdyAgICA9IDEgPDwgMiwKKyAgICBJbnRlcm5hbEF1dG9GbG93RGly
ZWN0aW9uQ29sdW1uID0gMSA8PCAzCiB9OwogCiBlbnVtIEdyaWRBdXRvRmxvdyB7CkBAIC0xMDQx
LDEwICsxMDQ1LDEwIEBAIGVudW0gR3JpZEF1dG9GbG93IHsKICAgICBBdXRvRmxvd0NvbHVtbkRl
bnNlID0gSW50ZXJuYWxBdXRvRmxvd0FsZ29yaXRobURlbnNlIHwgSW50ZXJuYWxBdXRvRmxvd0Rp
cmVjdGlvbkNvbHVtbgogfTsKIAotZW51bSBBdXRvUmVwZWF0VHlwZSB7Ci0gICAgTm9BdXRvUmVw
ZWF0LAotICAgIEF1dG9GaWxsLAotICAgIEF1dG9GaXQKK2VudW0gY2xhc3MgQXV0b1JlcGVhdFR5
cGUgeworICAgIE5vbmUsCisgICAgRmlsbCwKKyAgICBGaXQKIH07CiAKIC8vIFJlYXNvbmFibGUg
bWF4aW11bSB0byBwcmV2ZW50IGluc2FuZSBmb250IHNpemVzIGZyb20gY2F1c2luZyBjcmFzaGVz
IG9uIHNvbWUgcGxhdGZvcm1zIChzdWNoIGFzIFdpbmRvd3MpLgpAQCAtMTA3MCw3ICsxMDc0LDcg
QEAgZW51bSBjbGFzcyBJc29sYXRpb24gewogfTsKIAogLy8gRmlsbCwgU3Ryb2tlLCBWaWV3Qm94
IGFyZSBqdXN0IHVzZWQgZm9yIFNWRy4KLWVudW0gQ1NTQm94VHlwZSB7CitlbnVtIGNsYXNzIENT
U0JveFR5cGUgewogICAgIEJveE1pc3NpbmcgPSAwLAogICAgIE1hcmdpbkJveCwKICAgICBCb3Jk
ZXJCb3gsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFwZVZhbHVl
LmgJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
aGFwZVZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAg
ICBUeXBlIG1fdHlwZTsKICAgICBSZWZQdHI8QmFzaWNTaGFwZT4gbV9zaGFwZTsKICAgICBSZWZQ
dHI8U3R5bGVJbWFnZT4gbV9pbWFnZTsKLSAgICBDU1NCb3hUeXBlIG1fY3NzQm94IHsgQm94TWlz
c2luZyB9OworICAgIENTU0JveFR5cGUgbV9jc3NCb3ggeyBDU1NCb3hUeXBlOjpCb3hNaXNzaW5n
IH07CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVN
dWx0aUNvbERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZU11bHRpQ29sRGF0YS5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDggKzMyLDggQEAgU3R5bGVNdWx0aUNvbERhdGE6OlN0eWxlTXVsdGlDb2xEYXRh
KCkKICAgICAsIGF1dG9Db3VudCh0cnVlKQogICAgICwgZmlsbChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUmVuZGVyU3R5bGU6OmluaXRpYWxDb2x1bW5GaWxsKCkpKQogICAgICwgY29sdW1uU3Bhbihm
YWxzZSkKLSAgICAsIGF4aXMoUmVuZGVyU3R5bGU6OmluaXRpYWxDb2x1bW5BeGlzKCkpCi0gICAg
LCBwcm9ncmVzc2lvbihSZW5kZXJTdHlsZTo6aW5pdGlhbENvbHVtblByb2dyZXNzaW9uKCkpCisg
ICAgLCBheGlzKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZW5kZXJTdHlsZTo6aW5pdGlhbENvbHVt
bkF4aXMoKSkpCisgICAgLCBwcm9ncmVzc2lvbihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVy
U3R5bGU6OmluaXRpYWxDb2x1bW5Qcm9ncmVzc2lvbigpKSkKIHsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0
ZWREYXRhLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nywx
MSArODcsMTEgQEAgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdAogICAg
ICwgbmJzcE1vZGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE5CU1BNb2RlOjpOb3JtYWwpKQogICAg
ICwgbGluZUJyZWFrKHN0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5lQnJlYWs6OkF1dG8pKQogICAg
ICwgdXNlclNlbGVjdChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5bGU6OmluaXRpYWxV
c2VyU2VsZWN0KCkpKQotICAgICwgc3BlYWtBcyhTcGVha05vcm1hbCkKLSAgICAsIGh5cGhlbnMo
SHlwaGVuc01hbnVhbCkKLSAgICAsIHRleHRFbXBoYXNpc0ZpbGwoVGV4dEVtcGhhc2lzRmlsbEZp
bGxlZCkKLSAgICAsIHRleHRFbXBoYXNpc01hcmsoVGV4dEVtcGhhc2lzTWFya05vbmUpCi0gICAg
LCB0ZXh0RW1waGFzaXNQb3NpdGlvbihUZXh0RW1waGFzaXNQb3NpdGlvbk92ZXIgfCBUZXh0RW1w
aGFzaXNQb3NpdGlvblJpZ2h0KQorICAgICwgc3BlYWtBcyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
U3BlYWtOb3JtYWwpKQorICAgICwgaHlwaGVucyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSHlwaGVu
czo6TWFudWFsKSkKKyAgICAsIHRleHRFbXBoYXNpc0ZpbGwoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFRleHRFbXBoYXNpc0ZpbGw6OkZpbGxlZCkpCisgICAgLCB0ZXh0RW1waGFzaXNNYXJrKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihUZXh0RW1waGFzaXNNYXJrOjpOb25lKSkKKyAgICAsIHRleHRFbXBo
YXNpc1Bvc2l0aW9uKHN0YXRpY19jYXN0PHVuc2lnbmVkPihUZXh0RW1waGFzaXNQb3NpdGlvbk92
ZXIgfCBUZXh0RW1waGFzaXNQb3NpdGlvblJpZ2h0KSkKICAgICAsIHRleHRPcmllbnRhdGlvbihz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oVGV4dE9yaWVudGF0aW9uOjpNaXhlZCkpCiAjaWYgRU5BQkxF
KENTUzNfVEVYVCkKICAgICAsIHRleHRJbmRlbnRMaW5lKFJlbmRlclN0eWxlOjppbml0aWFsVGV4
dEluZGVudExpbmUoKSkKQEAgLTEwMiw4ICsxMDIsOCBAQCBTdHlsZVJhcmVJbmhlcml0ZWREYXRh
OjpTdHlsZVJhcmVJbmhlcml0CiAgICAgLCBpbWFnZU9yaWVudGF0aW9uKFJlbmRlclN0eWxlOjpp
bml0aWFsSW1hZ2VPcmllbnRhdGlvbigpKQogI2VuZGlmCiAgICAgLCBpbWFnZVJlbmRlcmluZyhz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5bGU6OmluaXRpYWxJbWFnZVJlbmRlcmluZygp
KSkKLSAgICAsIGxpbmVTbmFwKFJlbmRlclN0eWxlOjppbml0aWFsTGluZVNuYXAoKSkKLSAgICAs
IGxpbmVBbGlnbihSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVBbGlnbigpKQorICAgICwgbGluZVNu
YXAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFsTGluZVNuYXAoKSkp
CisgICAgLCBsaW5lQWxpZ24oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0
aWFsTGluZUFsaWduKCkpKQogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJ
TkcpCiAgICAgLCB1c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nKFJlbmRlclN0eWxlOjppbml0aWFs
VXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZygpKQogI2VuZGlmCkBAIC0xMTcsOCArMTE3LDggQEAg
U3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdAogI2VuZGlmCiAgICAgLCB0
ZXh0RGVjb3JhdGlvblNraXAoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvblNraXAo
KSkKICAgICAsIHRleHRVbmRlcmxpbmVQb3NpdGlvbihSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRV
bmRlcmxpbmVQb3NpdGlvbigpKQotICAgICwgcnVieVBvc2l0aW9uKFJlbmRlclN0eWxlOjppbml0
aWFsUnVieVBvc2l0aW9uKCkpCi0gICAgLCB0ZXh0Wm9vbShSZW5kZXJTdHlsZTo6aW5pdGlhbFRl
eHRab29tKCkpCisgICAgLCBydWJ5UG9zaXRpb24oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRl
clN0eWxlOjppbml0aWFsUnVieVBvc2l0aW9uKCkpKQorICAgICwgdGV4dFpvb20oc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFsVGV4dFpvb20oKSkpCiAjaWYgUExBVEZP
Uk0oSU9TKQogICAgICwgdG91Y2hDYWxsb3V0RW5hYmxlZChSZW5kZXJTdHlsZTo6aW5pdGlhbFRv
dWNoQ2FsbG91dEVuYWJsZWQoKSkKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNw
cAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NiwxMCArODYs
MTAgQEAgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSQogICAgICwgdGV4
dE92ZXJmbG93KHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRP
dmVyZmxvdygpKSkKICAgICAsIG1hcmdpbkJlZm9yZUNvbGxhcHNlKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihNYXJnaW5Db2xsYXBzZTo6Q29sbGFwc2UpKQogICAgICwgbWFyZ2luQWZ0ZXJDb2xsYXBz
ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTWFyZ2luQ29sbGFwc2U6OkNvbGxhcHNlKSkKLSAgICAs
IGFwcGVhcmFuY2UoUmVuZGVyU3R5bGU6OmluaXRpYWxBcHBlYXJhbmNlKCkpCi0gICAgLCBib3Jk
ZXJGaXQoUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJGaXQoKSkKKyAgICAsIGFwcGVhcmFuY2Uo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFsQXBwZWFyYW5jZSgpKSkK
KyAgICAsIGJvcmRlckZpdChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5bGU6OmluaXRp
YWxCb3JkZXJGaXQoKSkpCiAgICAgLCB0ZXh0Q29tYmluZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0Q29tYmluZSgpKSkKLSAgICAsIHRleHREZWNvcmF0aW9u
U3R5bGUoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvblN0eWxlKCkpCisgICAgLCB0
ZXh0RGVjb3JhdGlvblN0eWxlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZW5kZXJTdHlsZTo6aW5p
dGlhbFRleHREZWNvcmF0aW9uU3R5bGUoKSkpCiAgICAgLCBhc3BlY3RSYXRpb1R5cGUoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFsQXNwZWN0UmF0aW9UeXBlKCkpKQog
I2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCiAgICAgLCBlZmZlY3RpdmVCbGVuZE1vZGUoUmVu
ZGVyU3R5bGU6OmluaXRpYWxCbGVuZE1vZGUoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAko
cmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
UmFyZU5vbkluaGVyaXRlZERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMTg1LDcgKzE4NSw3IEBA
IHB1YmxpYzoKICAgICB1bnNpZ25lZCBtYXJnaW5CZWZvcmVDb2xsYXBzZSA6IDI7IC8vIE1hcmdp
bkNvbGxhcHNlCiAgICAgdW5zaWduZWQgbWFyZ2luQWZ0ZXJDb2xsYXBzZSA6IDI7IC8vIE1hcmdp
bkNvbGxhcHNlCiAgICAgdW5zaWduZWQgYXBwZWFyYW5jZSA6IDY7IC8vIEVBcHBlYXJhbmNlCi0g
ICAgdW5zaWduZWQgYm9yZGVyRml0IDogMTsgLy8gRUJvcmRlckZpdAorICAgIHVuc2lnbmVkIGJv
cmRlckZpdCA6IDE7IC8vIEJvcmRlckZpdAogICAgIHVuc2lnbmVkIHRleHRDb21iaW5lIDogMTsg
Ly8gQ1NTMyB0ZXh0LWNvbWJpbmUgcHJvcGVydGllcwogCiAgICAgdW5zaWduZWQgdGV4dERlY29y
YXRpb25TdHlsZSA6IDM7IC8vIFRleHREZWNvcmF0aW9uU3R5bGUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAJKHJldmlz
aW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29u
dGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgUmVuZGVy
U1ZHQ29udGFpbmVyOjpwYWludChQYWludEluZm8KICAgICAvLyBvdXRsaW5lIHJlY3QgaW50byBw
YXJlbnQgY29vcmRzIGJlZm9yZSBkcmF3aW5nLgogICAgIC8vIEZJWE1FOiBUaGlzIG1lYW5zIG91
ciBmb2N1cyByaW5nIHdvbid0IHNoYXJlIG91ciByb3RhdGlvbiBsaWtlIGl0IHNob3VsZC4KICAg
ICAvLyBXZSBzaG91bGQgaW5zdGVhZCBkaXNhYmxlIG91ciBjbGlwIGR1cmluZyBQYWludFBoYXNl
T3V0bGluZQotICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5l
ICYmIHN0eWxlKCkub3V0bGluZVdpZHRoKCkgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklT
SUJMRSkgeworICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5l
ICYmIHN0eWxlKCkub3V0bGluZVdpZHRoKCkgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlz
aWJpbGl0eTo6VmlzaWJsZSkgewogICAgICAgICBJbnRSZWN0IHBhaW50UmVjdEluUGFyZW50ID0g
ZW5jbG9zaW5nSW50UmVjdChsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkubWFwUmVjdChyZXBhaW50
UmVjdCkpOwogICAgICAgICBwYWludE91dGxpbmUocGFpbnRJbmZvLCBwYWludFJlY3RJblBhcmVu
dCk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJ
bWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbWFnZS5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNyArMTQw
LDcgQEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6bGF5b3V0KCkKIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6
OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYpCiB7CiAgICAg
aWYgKHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpIHx8IHBhaW50SW5mby5w
aGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZAotICAgICAgICB8fCBzdHlsZSgpLnZpc2liaWxp
dHkoKSA9PSBISURERU4gfHwgIWltYWdlUmVzb3VyY2UoKS5jYWNoZWRJbWFnZSgpKQorICAgICAg
ICB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gfHwgIWltYWdl
UmVzb3VyY2UoKS5jYWNoZWRJbWFnZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBGbG9hdFJl
Y3QgYm91bmRpbmdCb3ggPSByZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpOwpAQCAtMTky
LDcgKzE5Miw3IEBAIGJvb2wgUmVuZGVyU1ZHSW1hZ2U6Om5vZGVBdEZsb2F0UG9pbnQoY28KICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgUG9pbnRlckV2ZW50c0hpdFJ1bGVzIGhpdFJ1bGVz
KFBvaW50ZXJFdmVudHNIaXRSdWxlczo6U1ZHX0lNQUdFX0hJVFRFU1RJTkcsIHJlcXVlc3QsIHN0
eWxlKCkucG9pbnRlckV2ZW50cygpKTsKLSAgICBib29sIGlzVmlzaWJsZSA9IChzdHlsZSgpLnZp
c2liaWxpdHkoKSA9PSBWSVNJQkxFKTsKKyAgICBib29sIGlzVmlzaWJsZSA9IChzdHlsZSgpLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlKTsKICAgICBpZiAoaXNWaXNpYmxlIHx8
ICFoaXRSdWxlcy5yZXF1aXJlVmlzaWJsZSkgewogICAgICAgICBGbG9hdFBvaW50IGxvY2FsUG9p
bnQgPSBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRy
YW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKICAgICAgICAgICAgIApJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRl
eHQuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0lubGluZVRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw4ICs5MSw4IEBA
IHZvaWQgUmVuZGVyU1ZHSW5saW5lVGV4dDo6c3R5bGVEaWRDaGFuZ2UKICAgICBSZW5kZXJUZXh0
OjpzdHlsZURpZENoYW5nZShkaWZmLCBvbGRTdHlsZSk7CiAgICAgdXBkYXRlU2NhbGVkRm9udCgp
OwogCi0gICAgYm9vbCBuZXdQcmVzZXJ2ZXMgPSBzdHlsZSgpLndoaXRlU3BhY2UoKSA9PSBQUkU7
Ci0gICAgYm9vbCBvbGRQcmVzZXJ2ZXMgPSBvbGRTdHlsZSA/IG9sZFN0eWxlLT53aGl0ZVNwYWNl
KCkgPT0gUFJFIDogZmFsc2U7CisgICAgYm9vbCBuZXdQcmVzZXJ2ZXMgPSBzdHlsZSgpLndoaXRl
U3BhY2UoKSA9PSBXaGl0ZVNwYWNlOjpQcmU7CisgICAgYm9vbCBvbGRQcmVzZXJ2ZXMgPSBvbGRT
dHlsZSA/IG9sZFN0eWxlLT53aGl0ZVNwYWNlKCkgPT0gV2hpdGVTcGFjZTo6UHJlIDogZmFsc2U7
CiAgICAgaWYgKG9sZFByZXNlcnZlcyAmJiAhbmV3UHJlc2VydmVzKSB7CiAgICAgICAgIHNldFRl
eHQoYXBwbHlTVkdXaGl0ZXNwYWNlUnVsZXMob3JpZ2luYWxUZXh0KCksIGZhbHNlKSwgdHJ1ZSk7
CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHTW9kZWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6
OmFic29sdXRlRm9jdXMKICAgICAKIGJvb2wgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmNoZWNrSW50
ZXJzZWN0aW9uKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
CiB7Ci0gICAgaWYgKCFyZW5kZXJlciB8fCByZW5kZXJlci0+c3R5bGUoKS5wb2ludGVyRXZlbnRz
KCkgPT0gUEVfTk9ORSkKKyAgICBpZiAoIXJlbmRlcmVyIHx8IHJlbmRlcmVyLT5zdHlsZSgpLnBv
aW50ZXJFdmVudHMoKSA9PSBQb2ludGVyRXZlbnRzOjpOb25lKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKCFpc0dyYXBoaWNzRWxlbWVudCgqcmVuZGVyZXIpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xODEsNyArMTgxLDcgQEAgYm9vbCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6
Y2hlY2tJbnRlcnNlYwogCiBib29sIFJlbmRlclNWR01vZGVsT2JqZWN0OjpjaGVja0VuY2xvc3Vy
ZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAg
IGlmICghcmVuZGVyZXIgfHwgcmVuZGVyZXItPnN0eWxlKCkucG9pbnRlckV2ZW50cygpID09IFBF
X05PTkUpCisgICAgaWYgKCFyZW5kZXJlciB8fCByZW5kZXJlci0+c3R5bGUoKS5wb2ludGVyRXZl
bnRzKCkgPT0gUG9pbnRlckV2ZW50czo6Tm9uZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGlmICghaXNHcmFwaGljc0VsZW1lbnQoKnJlbmRlcmVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZS5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3
IEBAIHN0YXRpYyBpbmxpbmUgUmVuZGVyU1ZHUmVzb3VyY2UqIHJlcXVlc3QKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCi0gICAgaWYgKHN0eWxlLmluc2lkZUxpbmsoKSA9PSBJbnNpZGVWaXNpdGVk
TGluaykgeworICAgIGlmIChzdHlsZS5pbnNpZGVMaW5rKCkgPT0gSW5zaWRlTGluazo6SW5zaWRl
VmlzaXRlZCkgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBjb2RlIGRvZXNuJ3Qgc3VwcG9ydCB0
aGUgdXJpIGNvbXBvbmVudCBvZiB0aGUgdmlzaXRlZCBsaW5rIHBhaW50LCBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzAwMDYKICAgICAgICAgU1ZHUGFpbnRUeXBlIHZp
c2l0ZWRQYWludFR5cGUgPSBhcHBseVRvRmlsbCA/IHN2Z1N0eWxlLnZpc2l0ZWRMaW5rRmlsbFBh
aW50VHlwZSgpIDogc3ZnU3R5bGUudmlzaXRlZExpbmtTdHJva2VQYWludFR5cGUoKTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VDbGlwcGVyLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05Nyw3ICs5Nyw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpwYXRoT25s
eUMKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBTVkdHcmFwaGljc0VsZW1lbnQmIHN0
eWxlZCA9IGRvd25jYXN0PFNWR0dyYXBoaWNzRWxlbWVudD4oKmNoaWxkTm9kZSk7CiAgICAgICAg
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOwotICAgICAgICBp
ZiAoc3R5bGUuZGlzcGxheSgpID09IE5PTkUgfHwgc3R5bGUudmlzaWJpbGl0eSgpICE9IFZJU0lC
TEUpCisgICAgICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUgfHwg
c3R5bGUudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHN0eWxl
LnN2Z1N0eWxlKCk7CiAgICAgICAgIC8vIEN1cnJlbnQgc2hhcGUgaW4gY2xpcC1wYXRoIGdldHMg
Y2xpcHBlZCB0b28uIEZhbGxiYWNrIHRvIG1hc2tpbmcuCkBAIC0yMDYsNyArMjA2LDcgQEAgYm9v
bCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmRyYXdDb250ZQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHJl
bmRlcmVyLT5zdHlsZSgpOwotICAgICAgICBpZiAoc3R5bGUuZGlzcGxheSgpID09IE5PTkUgfHwg
c3R5bGUudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgICAgIGlmIChzdHlsZS5kaXNwbGF5
KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUgfHwgc3R5bGUudmlzaWJpbGl0eSgpICE9IFZpc2liaWxp
dHk6OlZpc2libGUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBXaW5kUnVsZSBu
ZXdDbGlwUnVsZSA9IHN0eWxlLnN2Z1N0eWxlKCkuY2xpcFJ1bGUoKTsKQEAgLTI0Niw3ICsyNDYs
NyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6Y2FsY3VsYXRlCiAgICAgICAgIGlm
ICghcmVuZGVyZXItPmlzU1ZHU2hhcGUoKSAmJiAhcmVuZGVyZXItPmlzU1ZHVGV4dCgpICYmICFj
aGlsZE5vZGUtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnVzZVRhZykpCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gcmVuZGVyZXItPnN0eWxl
KCk7Ci0gICAgICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gTk9ORSB8fCBzdHlsZS52aXNpYmls
aXR5KCkgIT0gVklTSUJMRSkKKyAgICAgICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5
VHlwZTo6Tm9uZSB8fCBzdHlsZS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkK
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgbV9jbGlwQm91bmRhcmllcy51bml0ZShy
ZW5kZXJlci0+bG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLm1hcFJlY3QocmVuZGVyZXItPnJlcGFp
bnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNw
cAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw3ICsxMDcsNyBA
QCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpkcmF3Q29udGVuCiAgICAgICAgIGlmIChy
ZW5kZXJlci0+bmVlZHNMYXlvdXQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7Ci0gICAgICAg
IGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gTk9ORSB8fCBzdHlsZS52aXNpYmlsaXR5KCkgIT0gVklT
SUJMRSkKKyAgICAgICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSB8
fCBzdHlsZS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICBTVkdSZW5kZXJpbmdDb250ZXh0OjpyZW5kZXJTdWJ0cmVlVG9J
bWFnZUJ1ZmZlcihtYXNrZXJEYXRhLT5tYXNrSW1hZ2UuZ2V0KCksICpyZW5kZXJlciwgbWFza0Nv
bnRlbnRUcmFuc2Zvcm1hdGlvbik7CiAgICAgfQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgUmVu
ZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmNhbGN1bGF0ZU0KICAgICAgICAgaWYgKCFjaGlsZE5vZGUt
PmlzU1ZHRWxlbWVudCgpIHx8ICFyZW5kZXJlcikKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSByZW5kZXJlci0+c3R5bGUoKTsKLSAgICAg
ICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBOT05FIHx8IHN0eWxlLnZpc2liaWxpdHkoKSAhPSBW
SVNJQkxFKQorICAgICAgICBpZiAoc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpOb25l
IHx8IHN0eWxlLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICBtX21hc2tDb250ZW50Qm91bmRhcmllcy51bml0ZShyZW5k
ZXJlci0+bG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLm1hcFJlY3QocmVuZGVyZXItPnJlcGFpbnRS
ZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyOSw3ICszMjksNyBAQCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIFJlbmRlclNW
R1Jvb3Q6OmxvCiAKIExheW91dFJlY3QgUmVuZGVyU1ZHUm9vdDo6Y2xpcHBlZE92ZXJmbG93UmVj
dEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
cikgY29uc3QKIHsKLSAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSAmJiAh
ZW5jbG9zaW5nTGF5ZXIoKS0+aGFzVmlzaWJsZUNvbnRlbnQoKSkKKyAgICBpZiAoc3R5bGUoKS52
aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhZW5jbG9zaW5nTGF5ZXIoKS0+
aGFzVmlzaWJsZUNvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKIAogICAg
IEZsb2F0UmVjdCBjb250ZW50UmVwYWludFJlY3QgPSBtX2xvY2FsVG9Cb3JkZXJCb3hUcmFuc2Zv
cm0ubWFwUmVjdChyZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCShyZXZpc2lv
biAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk3LDcgKzI5Nyw3IEBAIHZvaWQgUmVuZGVyU1ZHU2hh
cGU6OmZpbGxTdHJva2VNYXJrZXJzKFAKIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OnBhaW50KFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYpCiB7CiAgICAgaWYgKHBhaW50SW5m
by5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWlu
dFBoYXNlRm9yZWdyb3VuZAotICAgICAgICB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBISURE
RU4gfHwgaXNFbXB0eSgpKQorICAgICAgICB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNp
YmlsaXR5OjpIaWRkZW4gfHwgaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgRmxvYXRS
ZWN0IGJvdW5kaW5nQm94ID0gcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKTsKICAgICBp
ZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBhaW50SW5mb0ludGVyc2VjdHNSZXBhaW50UmVjdChib3Vu
ZGluZ0JveCwgbV9sb2NhbFRyYW5zZm9ybSwgcGFpbnRJbmZvKSkKQEAgLTM3NCw3ICszNzQsNyBA
QCBib29sIFJlbmRlclNWR1NoYXBlOjpub2RlQXRGbG9hdFBvaW50KGNvCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIFBvaW50ZXJFdmVudHNIaXRSdWxlcyBoaXRSdWxlcyhQb2ludGVyRXZl
bnRzSGl0UnVsZXM6OlNWR19QQVRIX0hJVFRFU1RJTkcsIHJlcXVlc3QsIHN0eWxlKCkucG9pbnRl
ckV2ZW50cygpKTsKLSAgICBib29sIGlzVmlzaWJsZSA9IChzdHlsZSgpLnZpc2liaWxpdHkoKSA9
PSBWSVNJQkxFKTsKKyAgICBib29sIGlzVmlzaWJsZSA9IChzdHlsZSgpLnZpc2liaWxpdHkoKSA9
PSBWaXNpYmlsaXR5OjpWaXNpYmxlKTsKICAgICBpZiAoaXNWaXNpYmxlIHx8ICFoaXRSdWxlcy5y
ZXF1aXJlVmlzaWJsZSkgewogICAgICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUg
PSBzdHlsZSgpLnN2Z1N0eWxlKCk7CiAgICAgICAgIFdpbmRSdWxlIGZpbGxSdWxlID0gc3ZnU3R5
bGUuZmlsbFJ1bGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdUZXh0LmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMyLDcgKzQz
Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSb290SW5saW5lQm94PiBSZW5kZXJTVkcKIGJvb2wgUmVu
ZGVyU1ZHVGV4dDo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVz
dCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFyZW50
LCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pCiB7CiAgICAgUG9pbnRlckV2ZW50c0hpdFJ1
bGVzIGhpdFJ1bGVzKFBvaW50ZXJFdmVudHNIaXRSdWxlczo6U1ZHX1RFWFRfSElUVEVTVElORywg
cmVxdWVzdCwgc3R5bGUoKS5wb2ludGVyRXZlbnRzKCkpOwotICAgIGJvb2wgaXNWaXNpYmxlID0g
KHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUpOworICAgIGJvb2wgaXNWaXNpYmxlID0g
KHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUpOwogICAgIGlmIChp
c1Zpc2libGUgfHwgIWhpdFJ1bGVzLnJlcXVpcmVWaXNpYmxlKSB7CiAgICAgICAgIGlmICgoaGl0
UnVsZXMuY2FuSGl0U3Ryb2tlICYmIChzdHlsZSgpLnN2Z1N0eWxlKCkuaGFzU3Ryb2tlKCkgfHwg
IWhpdFJ1bGVzLnJlcXVpcmVTdHJva2UpKQogICAgICAgICAgICAgfHwgKGhpdFJ1bGVzLmNhbkhp
dEZpbGwgJiYgKHN0eWxlKCkuc3ZnU3R5bGUoKS5oYXNGaWxsKCkgfHwgIWhpdFJ1bGVzLnJlcXVp
cmVGaWxsKSkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5l
VGV4dEJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdJbmxpbmVUZXh0Qm94LmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgx
LDcgKzE4MSw3IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb25CYWMKICAg
ICBBU1NFUlQocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHBhaW50
SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZWN0aW9uKTsKICAgICBBU1NFUlQodHJ1bmNhdGlv
bigpID09IGNOb1RydW5jYXRpb24pOwogCi0gICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS52aXNp
YmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxp
dHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRv
JiBwYXJlbnRSZW5kZXJlciA9IHBhcmVudCgpLT5yZW5kZXJlcigpOwpAQCAtMjM5LDcgKzIzOSw3
IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiAKICAgICBBU1NFUlQo
cGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHBhaW50SW5mby5waGFz
ZSA9PSBQYWludFBoYXNlU2VsZWN0aW9uKTsKICAgICBBU1NFUlQodHJ1bmNhdGlvbigpID09IGNO
b1RydW5jYXRpb24pOwogCi0gICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkg
IT0gVklTSUJMRSkKKyAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBW
aXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBOb3RlOiBXZSdy
ZSBleHBsaWNpdGVseSBub3Qgc3VwcG9ydGluZyBjb21wb3NpdGlvbiAmIGN1c3RvbSB1bmRlcmxp
bmVzIGFuZCBjdXN0b20gaGlnaGxpZ2h0ZXJzIC0gdW5saWtlIElubGluZVRleHRCb3guCkBAIC0y
NjUsNyArMjY1LDcgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIAog
CiAgICAgY29uc3QgUmVuZGVyU3R5bGUqIHNlbGVjdGlvblN0eWxlID0gJnN0eWxlOwogICAgIGlm
IChoYXNTZWxlY3Rpb24gJiYgc2hvdWxkUGFpbnRTZWxlY3Rpb25IaWdobGlnaHQpIHsKLSAgICAg
ICAgc2VsZWN0aW9uU3R5bGUgPSBwYXJlbnRSZW5kZXJlci5nZXRDYWNoZWRQc2V1ZG9TdHlsZShT
RUxFQ1RJT04pOworICAgICAgICBzZWxlY3Rpb25TdHlsZSA9IHBhcmVudFJlbmRlcmVyLmdldENh
Y2hlZFBzZXVkb1N0eWxlKFBzZXVkb0lkOjpTZWxlY3Rpb24pOwogICAgICAgICBpZiAoc2VsZWN0
aW9uU3R5bGUpIHsKICAgICAgICAgICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdmdTZWxlY3Rp
b25TdHlsZSA9IHNlbGVjdGlvblN0eWxlLT5zdmdTdHlsZSgpOwogCkBAIC0zOTUsNyArMzk1LDcg
QEAgVGV4dFJ1biBTVkdJbmxpbmVUZXh0Qm94Ojpjb25zdHJ1Y3RUZXh0UgogICAgICAgICAgICAg
ICAgICwgMCAvKiBwYWRkaW5nLCBvbmx5IHJlbGV2YW50IGZvciBqdXN0aWZpZWQgdGV4dCwgbm90
IHJlbGV2YW50IGZvciBTVkcgKi8KICAgICAgICAgICAgICAgICAsIEFsbG93VHJhaWxpbmdFeHBh
bnNpb24KICAgICAgICAgICAgICAgICAsIGRpcmVjdGlvbigpCi0gICAgICAgICAgICAgICAgLCBk
aXJPdmVycmlkZSgpIHx8IHN0eWxlLnJ0bE9yZGVyaW5nKCkgPT0gVmlzdWFsT3JkZXIgLyogZGly
ZWN0aW9uYWxPdmVycmlkZSAqLyk7CisgICAgICAgICAgICAgICAgLCBkaXJPdmVycmlkZSgpIHx8
IHN0eWxlLnJ0bE9yZGVyaW5nKCkgPT0gT3JkZXI6OlZpc3VhbCAvKiBkaXJlY3Rpb25hbE92ZXJy
aWRlICovKTsKIAogICAgIC8vIFdlIGhhbmRsZSBsZXR0ZXIgJiB3b3JkIHNwYWNpbmcgb3Vyc2Vs
dmVzLgogICAgIHJ1bi5kaXNhYmxlU3BhY2luZygpOwpAQCAtNDgwLDcgKzQ4MCw3IEBAIHZvaWQg
U1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEcKICAgICBhdXRvJiBkZWNvcmF0aW9u
UmVuZGVyZXIgPSBmaW5kUmVuZGVyZXJEZWZpbmluaW5nVGV4dERlY29yYXRpb24ocGFyZW50KCkp
OwogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBkZWNvcmF0aW9uU3R5bGUgPSBkZWNvcmF0aW9uUmVu
ZGVyZXIuc3R5bGUoKTsKIAotICAgIGlmIChkZWNvcmF0aW9uU3R5bGUudmlzaWJpbGl0eSgpID09
IEhJRERFTikKKyAgICBpZiAoZGVjb3JhdGlvblN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmls
aXR5OjpIaWRkZW4pCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IFNWR1JlbmRlclN0eWxl
JiBzdmdEZWNvcmF0aW9uU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGUuc3ZnU3R5bGUoKTsKQEAgLTY0
Nyw3ICs2NDcsNyBAQCBib29sIFNWR0lubGluZVRleHRCb3g6Om5vZGVBdFBvaW50KGNvbnN0CiAg
ICAgQVNTRVJUKCFpc0xpbmVCcmVhaygpKTsKIAogICAgIFBvaW50ZXJFdmVudHNIaXRSdWxlcyBo
aXRSdWxlcyhQb2ludGVyRXZlbnRzSGl0UnVsZXM6OlNWR19URVhUX0hJVFRFU1RJTkcsIHJlcXVl
c3QsIHJlbmRlcmVyKCkuc3R5bGUoKS5wb2ludGVyRXZlbnRzKCkpOwotICAgIGJvb2wgaXNWaXNp
YmxlID0gcmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFOworICAgIGJv
b2wgaXNWaXNpYmxlID0gcmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmls
aXR5OjpWaXNpYmxlOwogICAgIGlmIChpc1Zpc2libGUgfHwgIWhpdFJ1bGVzLnJlcXVpcmVWaXNp
YmxlKSB7CiAgICAgICAgIGlmICgoaGl0UnVsZXMuY2FuSGl0U3Ryb2tlICYmIChyZW5kZXJlcigp
LnN0eWxlKCkuc3ZnU3R5bGUoKS5oYXNTdHJva2UoKSB8fCAhaGl0UnVsZXMucmVxdWlyZVN0cm9r
ZSkpCiAgICAgICAgICAgICB8fCAoaGl0UnVsZXMuY2FuSGl0RmlsbCAmJiAocmVuZGVyZXIoKS5z
dHlsZSgpLnN2Z1N0eWxlKCkuaGFzRmlsbCgpIHx8ICFoaXRSdWxlcy5yZXF1aXJlRmlsbCkpKSB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3Vw
cG9ydC5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAg
RmxvYXRSZWN0IFNWR1JlbmRlclN1cHBvcnQ6OnJlcGFpbnRSZWN0RgogTGF5b3V0UmVjdCBTVkdS
ZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJF
bGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lcikKIHsKICAgICAvLyBSZXR1cm4gZWFybHkgZm9yIGFueSBjYXNlcyB3aGVyZSB3ZSBk
b24ndCBhY3R1YWxseSBwYWludAotICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLnZpc2liaWxpdHko
KSAhPSBWSVNJQkxFICYmICFyZW5kZXJlci5lbmNsb3NpbmdMYXllcigpLT5oYXNWaXNpYmxlQ29u
dGVudCgpKQorICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmls
aXR5OjpWaXNpYmxlICYmICFyZW5kZXJlci5lbmNsb3NpbmdMYXllcigpLT5oYXNWaXNpYmxlQ29u
dGVudCgpKQogICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwogCiAgICAgLy8gUGFzcyBvdXIg
bG9jYWwgcGFpbnQgcmVjdCB0byBjb21wdXRlUmVjdEZvclJlcGFpbnQoKSB3aGljaCB3aWxsCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5n
Q29udGV4dC5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNywxMCAr
MTM3LDEwIEBAIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGUKICAgICBp
ZiAoaXM8U2hhcGVDbGlwUGF0aE9wZXJhdGlvbj4oY2xpcFBhdGhPcGVyYXRpb24pKSB7CiAgICAg
ICAgIGF1dG8mIGNsaXBQYXRoID0gZG93bmNhc3Q8U2hhcGVDbGlwUGF0aE9wZXJhdGlvbj4oKmNs
aXBQYXRoT3BlcmF0aW9uKTsKICAgICAgICAgRmxvYXRSZWN0IHJlZmVyZW5jZUJveDsKLSAgICAg
ICAgaWYgKGNsaXBQYXRoLnJlZmVyZW5jZUJveCgpID09IFN0cm9rZSkKKyAgICAgICAgaWYgKGNs
aXBQYXRoLnJlZmVyZW5jZUJveCgpID09IENTU0JveFR5cGU6OlN0cm9rZSkgewogICAgICAgICAg
ICAgLy8gRklYTUU6IHN0cm9rZUJvdW5kaW5nQm94KCkgdGFrZXMgZGFzaGFycmF5IGludG8gYWNj
b3VudCBidXQgc2hvdWxkbid0LgogICAgICAgICAgICAgcmVmZXJlbmNlQm94ID0gcmVuZGVyZXIu
c3Ryb2tlQm91bmRpbmdCb3goKTsKLSAgICAgICAgZWxzZSBpZiAoY2xpcFBhdGgucmVmZXJlbmNl
Qm94KCkgPT0gVmlld0JveCAmJiByZW5kZXJlci5lbGVtZW50KCkpIHsKKyAgICAgICAgfSBlbHNl
IGlmIChjbGlwUGF0aC5yZWZlcmVuY2VCb3goKSA9PSBDU1NCb3hUeXBlOjpWaWV3Qm94ICYmIHJl
bmRlcmVyLmVsZW1lbnQoKSkgewogICAgICAgICAgICAgRmxvYXRTaXplIHZpZXdwb3J0U2l6ZTsK
ICAgICAgICAgICAgIFNWR0xlbmd0aENvbnRleHQoZG93bmNhc3Q8U1ZHRWxlbWVudD4ocmVuZGVy
ZXIuZWxlbWVudCgpKSkuZGV0ZXJtaW5lVmlld3BvcnQodmlld3BvcnRTaXplKTsKICAgICAgICAg
ICAgIHJlZmVyZW5jZUJveC5zZXRXaWR0aCh2aWV3cG9ydFNpemUud2lkdGgoKSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0
TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHByb2Nl
c3NSZW5kZXJTVkdJbmxpbgogewogICAgIGF1dG8mIHN0cmluZyA9IHRleHQudGV4dCgpOwogICAg
IGF1dG8gbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwotICAgIGlmICh0ZXh0LnN0eWxlKCkud2hp
dGVTcGFjZSgpID09IFBSRSkgeworICAgIGlmICh0ZXh0LnN0eWxlKCkud2hpdGVTcGFjZSgpID09
IFdoaXRlU3BhY2U6OlByZSkgewogICAgICAgICBhdENoYXJhY3RlciArPSBsZW5ndGg7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1RleHRNZXRyaWNzQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFNWR1RleHRNZXRyaWNzQnVp
bGRlcjo6bWVhc3VyZVRleHRSCiAgICAgfQogCiAgICAgaW5pdGlhbGl6ZU1lYXN1cmVtZW50V2l0
aFRleHRSZW5kZXJlcih0ZXh0KTsKLSAgICBib29sIHByZXNlcnZlV2hpdGVTcGFjZSA9IHRleHQu
c3R5bGUoKS53aGl0ZVNwYWNlKCkgPT0gUFJFOworICAgIGJvb2wgcHJlc2VydmVXaGl0ZVNwYWNl
ID0gdGV4dC5zdHlsZSgpLndoaXRlU3BhY2UoKSA9PSBXaGl0ZVNwYWNlOjpQcmU7CiAgICAgaW50
IHN1cnJvZ2F0ZVBhaXJDaGFyYWN0ZXJzID0gMDsKIAogICAgIHdoaWxlIChhZHZhbmNlKCkpIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRl
ckJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlckJsb2NrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzAzLDcgKzMwMyw3IEBAIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+
IFJlbmRlclRyZWVCdWlsZGUKICAgICAgICAgICAgIC8vIGNvbHVtbiBzcGFuIGZsYWcgaWYgaXQg
aXMgc2V0LgogICAgICAgICAgICAgQVNTRVJUKCFpbmxpbmVDaGlsZHJlbkJsb2NrLmNvbnRpbnVh
dGlvbigpKTsKICAgICAgICAgICAgIC8vIENhY2hlIHRoaXMgdmFsdWUgYXMgaXQgbWlnaHQgZ2V0
IGNoYW5nZWQgaW4gc2V0U3R5bGUoKSBjYWxsLgotICAgICAgICAgICAgaW5saW5lQ2hpbGRyZW5C
bG9jay5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxh
eShwYXJlbnQuc3R5bGUoKSwgQkxPQ0spKTsKKyAgICAgICAgICAgIGlubGluZUNoaWxkcmVuQmxv
Y2suc2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXko
cGFyZW50LnN0eWxlKCksIERpc3BsYXlUeXBlOjpCbG9jaykpOwogICAgICAgICAgICAgYXV0byBi
bG9ja1RvTW92ZSA9IG1fYnVpbGRlci5kZXRhY2hGcm9tUmVuZGVyRWxlbWVudChwYXJlbnQsIGlu
bGluZUNoaWxkcmVuQmxvY2spOwogCiAgICAgICAgICAgICAvLyBOb3cganVzdCBwdXQgdGhlIGlu
bGluZUNoaWxkcmVuQmxvY2sgaW5zaWRlIHRoZSBibG9ja0NoaWxkcmVuQmxvY2suCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJGaXJzdExl
dHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVCdWlsZGVyRmlyc3RMZXR0ZXIuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJGaXJzdExl
dHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdGF0aWMgUmVuZGVyU3R5bGUgc3R5bGVGb3JGaXJzdExldHRlcihjb25zdCBSZW5k
ZXJCbG9jayYgZmlyc3RMZXR0ZXJCbG9jaywgY29uc3QgUmVuZGVyT2JqZWN0JiBmaXJzdExldHRl
ckNvbnRhaW5lcikKIHsKLSAgICBhdXRvKiBjb250YWluZXJGaXJzdExldHRlclN0eWxlID0gZmly
c3RMZXR0ZXJCbG9jay5nZXRDYWNoZWRQc2V1ZG9TdHlsZShGSVJTVF9MRVRURVIsICZmaXJzdExl
dHRlckNvbnRhaW5lci5maXJzdExpbmVTdHlsZSgpKTsKKyAgICBhdXRvKiBjb250YWluZXJGaXJz
dExldHRlclN0eWxlID0gZmlyc3RMZXR0ZXJCbG9jay5nZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1
ZG9JZDo6Rmlyc3RMZXR0ZXIsICZmaXJzdExldHRlckNvbnRhaW5lci5maXJzdExpbmVTdHlsZSgp
KTsKICAgICAvLyBGSVhNRTogVGhlcmUgYXBwZWFycyB0byBiZSBzb21lIHBhdGggd2hlcmUgd2Ug
aGF2ZSBhIGZpcnN0IGxldHRlciByZW5kZXJlciB3aXRob3V0IGZpcnN0IGxldHRlciBzdHlsZS4K
ICAgICBBU1NFUlQoY29udGFpbmVyRmlyc3RMZXR0ZXJTdHlsZSk7CiAgICAgYXV0byBmaXJzdExl
dHRlclN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKGNvbnRhaW5lckZpcnN0TGV0dGVyU3R5bGUg
PyAqY29udGFpbmVyRmlyc3RMZXR0ZXJTdHlsZSA6IGZpcnN0TGV0dGVyQ29udGFpbmVyLmZpcnN0
TGluZVN0eWxlKCkpOwpAQCAtODIsNyArODIsNyBAQCBzdGF0aWMgUmVuZGVyU3R5bGUgc3R5bGVG
b3JGaXJzdExldHRlcihjCiAgICAgfQogCiAgICAgLy8gRm9yY2UgaW5saW5lIGRpc3BsYXkgKGV4
Y2VwdCBmb3IgZmxvYXRpbmcgZmlyc3QtbGV0dGVycykuCi0gICAgZmlyc3RMZXR0ZXJTdHlsZS5z
ZXREaXNwbGF5KGZpcnN0TGV0dGVyU3R5bGUuaXNGbG9hdGluZygpID8gQkxPQ0sgOiBJTkxJTkUp
OworICAgIGZpcnN0TGV0dGVyU3R5bGUuc2V0RGlzcGxheShmaXJzdExldHRlclN0eWxlLmlzRmxv
YXRpbmcoKSA/IERpc3BsYXlUeXBlOjpCbG9jayA6IERpc3BsYXlUeXBlOjpJbmxpbmUpOwogICAg
IC8vIENTUzIgc2F5cyBmaXJzdC1sZXR0ZXIgY2FuJ3QgYmUgcG9zaXRpb25lZC4KICAgICBmaXJz
dExldHRlclN0eWxlLnNldFBvc2l0aW9uKFBvc2l0aW9uVHlwZTo6U3RhdGljKTsKICAgICByZXR1
cm4gZmlyc3RMZXR0ZXJTdHlsZTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBSZW5kZXJUcmVlQnVpbGRl
cjo6Rmlyc3RMZXR0ZXI6OkZpcnN0TGV0CiAKIHZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6OkZpcnN0
TGV0dGVyOjp1cGRhdGVBZnRlckRlc2NlbmRhbnRzKFJlbmRlckJsb2NrJiBibG9jaykKIHsKLSAg
ICBpZiAoIWJsb2NrLnN0eWxlKCkuaGFzUHNldWRvU3R5bGUoRklSU1RfTEVUVEVSKSkKKyAgICBp
ZiAoIWJsb2NrLnN0eWxlKCkuaGFzUHNldWRvU3R5bGUoUHNldWRvSWQ6OkZpcnN0TGV0dGVyKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIGlmICghc3VwcG9ydHNGaXJzdExldHRlcihibG9jaykpCiAg
ICAgICAgIHJldHVybjsKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIFJlbmRlclRyZWVCdWlsZGVy
OjpGaXJzdExldHRlcjo6dXBkCiAKICAgICAvLyBJZiB0aGUgY2hpbGQgYWxyZWFkeSBoYXMgc3R5
bGUsIHRoZW4gaXQgaGFzIGFscmVhZHkgYmVlbiBjcmVhdGVkLCBzbyB3ZSBqdXN0IHdhbnQKICAg
ICAvLyB0byB1cGRhdGUgaXQuCi0gICAgaWYgKGZpcnN0TGV0dGVyUmVuZGVyZXItPnBhcmVudCgp
LT5zdHlsZSgpLnN0eWxlVHlwZSgpID09IEZJUlNUX0xFVFRFUikgeworICAgIGlmIChmaXJzdExl
dHRlclJlbmRlcmVyLT5wYXJlbnQoKS0+c3R5bGUoKS5zdHlsZVR5cGUoKSA9PSBQc2V1ZG9JZDo6
Rmlyc3RMZXR0ZXIpIHsKICAgICAgICAgdXBkYXRlU3R5bGUoYmxvY2ssICpmaXJzdExldHRlclJl
bmRlcmVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lk
IFJlbmRlclRyZWVCdWlsZGVyOjpGaXJzdExldHRlcjo6dXBkCiAgICAgaWYgKFN0eWxlOjpkZXRl
cm1pbmVDaGFuZ2UoZmlyc3RMZXR0ZXItPnN0eWxlKCksIHBzZXVkb1N0eWxlKSA9PSBTdHlsZTo6
RGV0YWNoKSB7CiAgICAgICAgIC8vIFRoZSBmaXJzdC1sZXR0ZXIgcmVuZGVyZXIgbmVlZHMgdG8g
YmUgcmVwbGFjZWQuIENyZWF0ZSBhIG5ldyByZW5kZXJlciBvZiB0aGUgcmlnaHQgdHlwZS4KICAg
ICAgICAgUmVuZGVyUHRyPFJlbmRlckJveE1vZGVsT2JqZWN0PiBuZXdGaXJzdExldHRlcjsKLSAg
ICAgICAgaWYgKHBzZXVkb1N0eWxlLmRpc3BsYXkoKSA9PSBJTkxJTkUpCisgICAgICAgIGlmIChw
c2V1ZG9TdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OklubGluZSkKICAgICAgICAgICAg
IG5ld0ZpcnN0TGV0dGVyID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVySW5saW5lPihmaXJzdExldHRl
ckJsb2NrLmRvY3VtZW50KCksIFdURk1vdmUocHNldWRvU3R5bGUpKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgbmV3Rmlyc3RMZXR0ZXIgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJCbG9ja0Zs
b3c+KGZpcnN0TGV0dGVyQmxvY2suZG9jdW1lbnQoKSwgV1RGTW92ZShwc2V1ZG9TdHlsZSkpOwpA
QCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6OkZpcnN0TGV0dGVyOjpj
cmUKICAgICBSZW5kZXJFbGVtZW50KiBmaXJzdExldHRlckNvbnRhaW5lciA9IGN1cnJlbnRUZXh0
Q2hpbGQucGFyZW50KCk7CiAgICAgYXV0byBwc2V1ZG9TdHlsZSA9IHN0eWxlRm9yRmlyc3RMZXR0
ZXIoZmlyc3RMZXR0ZXJCbG9jaywgKmZpcnN0TGV0dGVyQ29udGFpbmVyKTsKICAgICBSZW5kZXJQ
dHI8UmVuZGVyQm94TW9kZWxPYmplY3Q+IG5ld0ZpcnN0TGV0dGVyOwotICAgIGlmIChwc2V1ZG9T
dHlsZS5kaXNwbGF5KCkgPT0gSU5MSU5FKQorICAgIGlmIChwc2V1ZG9TdHlsZS5kaXNwbGF5KCkg
PT0gRGlzcGxheVR5cGU6OklubGluZSkKICAgICAgICAgbmV3Rmlyc3RMZXR0ZXIgPSBjcmVhdGVS
ZW5kZXJlcjxSZW5kZXJJbmxpbmU+KGZpcnN0TGV0dGVyQmxvY2suZG9jdW1lbnQoKSwgV1RGTW92
ZShwc2V1ZG9TdHlsZSkpOwogICAgIGVsc2UKICAgICAgICAgbmV3Rmlyc3RMZXR0ZXIgPSBjcmVh
dGVSZW5kZXJlcjxSZW5kZXJCbG9ja0Zsb3c+KGZpcnN0TGV0dGVyQmxvY2suZG9jdW1lbnQoKSwg
V1RGTW92ZShwc2V1ZG9TdHlsZSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3Vw
ZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVySW5saW5lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJJbmxpbmUuY3BwCShy
ZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZUJ1aWxkZXJJbmxpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNyArMTY4LDcg
QEAgdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6SW5saW5lOjphdHRhY2hJZwogICAgICAgICAvLyBp
bmxpbmUgaW50byBjb250aW51YXRpb25zLiBUaGlzIGludm9sdmVzIGNyZWF0aW5nIGFuIGFub255
bW91cyBibG9jayBib3ggdG8gaG9sZAogICAgICAgICAvLyB8bmV3Q2hpbGR8LiBXZSB0aGVuIG1h
a2UgdGhhdCBibG9jayBib3ggYSBjb250aW51YXRpb24gb2YgdGhpcyBpbmxpbmUuIFdlIHRha2Ug
YWxsIG9mCiAgICAgICAgIC8vIHRoZSBjaGlsZHJlbiBhZnRlciB8YmVmb3JlQ2hpbGR8IGFuZCBw
dXQgdGhlbSBpbiBhIGNsb25lIG9mIHRoaXMgb2JqZWN0LgotICAgICAgICBhdXRvIG5ld1N0eWxl
ID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50LnN0
eWxlKCksIEJMT0NLKTsKKyAgICAgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVh
dGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudC5zdHlsZSgpLCBEaXNwbGF5VHlwZTo6
QmxvY2spOwogCiAgICAgICAgIC8vIElmIGluc2lkZSBhbiBpbmxpbmUgYWZmZWN0ZWQgYnkgaW4t
ZmxvdyBwb3NpdGlvbmluZyB0aGUgYmxvY2sgbmVlZHMgdG8gYmUgYWZmZWN0ZWQgYnkgaXQgdG9v
LgogICAgICAgICAvLyBHaXZpbmcgdGhlIGJsb2NrIGEgbGF5ZXIgbGlrZSB0aGlzIGFsbG93cyBp
dCB0byBjb2xsZWN0IHRoZSB4L3kgb2Zmc2V0cyBmcm9tIGlubGluZSBwYXJlbnRzIGxhdGVyLgpA
QCAtMzc2LDcgKzM3Niw3IEBAIHZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6OklubGluZTo6c3BsaXRJ
bmwKIGJvb2wgUmVuZGVyVHJlZUJ1aWxkZXI6OklubGluZTo6bmV3Q2hpbGRJc0lubGluZShjb25z
dCBSZW5kZXJJbmxpbmUmIHBhcmVudCwgY29uc3QgUmVuZGVyT2JqZWN0JiBjaGlsZCkKIHsKICAg
ICAvLyBpbmxpbmUgcGFyZW50IGdlbmVyYXRlcyBpbmxpbmUtdGFibGUuCi0gICAgcmV0dXJuIGNo
aWxkLmlzSW5saW5lKCkgfHwgKG1fYnVpbGRlci50YWJsZUJ1aWxkZXIoKS5jaGlsZFJlcXVpcmVz
VGFibGUocGFyZW50LCBjaGlsZCkgJiYgcGFyZW50LnN0eWxlKCkuZGlzcGxheSgpID09IElOTElO
RSk7CisgICAgcmV0dXJuIGNoaWxkLmlzSW5saW5lKCkgfHwgKG1fYnVpbGRlci50YWJsZUJ1aWxk
ZXIoKS5jaGlsZFJlcXVpcmVzVGFibGUocGFyZW50LCBjaGlsZCkgJiYgcGFyZW50LnN0eWxlKCku
ZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpJbmxpbmUpOwogfQogCiB2b2lkIFJlbmRlclRyZWVC
dWlsZGVyOjpJbmxpbmU6OmNoaWxkQmVjYW1lTm9uSW5saW5lKFJlbmRlcklubGluZSYgcGFyZW50
LCBSZW5kZXJFbGVtZW50JiBjaGlsZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91
cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlckxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlckxpc3QuY3BwCShyZXZp
c2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVy
VHJlZUJ1aWxkZXJMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCB2b2lk
IFJlbmRlclRyZWVCdWlsZGVyOjpMaXN0Ojp1cGRhdGVJdGVtCiB7CiAgICAgYXV0byYgc3R5bGUg
PSBsaXN0SXRlbVJlbmRlcmVyLnN0eWxlKCk7CiAKLSAgICBpZiAoc3R5bGUubGlzdFN0eWxlVHlw
ZSgpID09IE5vbmVMaXN0U3R5bGUgJiYgKCFzdHlsZS5saXN0U3R5bGVJbWFnZSgpIHx8IHN0eWxl
Lmxpc3RTdHlsZUltYWdlKCktPmVycm9yT2NjdXJyZWQoKSkpIHsKKyAgICBpZiAoc3R5bGUubGlz
dFN0eWxlVHlwZSgpID09IExpc3RTdHlsZVR5cGU6Ok5vbmUgJiYgKCFzdHlsZS5saXN0U3R5bGVJ
bWFnZSgpIHx8IHN0eWxlLmxpc3RTdHlsZUltYWdlKCktPmVycm9yT2NjdXJyZWQoKSkpIHsKICAg
ICAgICAgaWYgKGF1dG8qIG1hcmtlciA9IGxpc3RJdGVtUmVuZGVyZXIubWFya2VyUmVuZGVyZXIo
KSkKICAgICAgICAgICAgIG1fYnVpbGRlci5kZXN0cm95KCptYXJrZXIpOwogICAgICAgICByZXR1
cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1
aWxkZXJNYXRoTUwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91
cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlck1hdGhNTC5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlck1hdGhN
TC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgUmVuZGVyVHJlZUJ1aWxkZXI6
Ok1hdGhNTDo6TWF0aE1MKFJlbmRlcgogUmVuZGVyUHRyPFJlbmRlck1hdGhNTEZlbmNlZE9wZXJh
dG9yPiBSZW5kZXJUcmVlQnVpbGRlcjo6TWF0aE1MOjpjcmVhdGVNYXRoTUxPcGVyYXRvcihSZW5k
ZXJNYXRoTUxGZW5jZWQmIHBhcmVudCwgY29uc3QgU3RyaW5nJiBvcGVyYXRvclN0cmluZywKICAg
ICBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkZvcm0gZm9ybSwgTWF0aE1MT3BlcmF0b3JEaWN0
aW9uYXJ5OjpGbGFnIGZsYWcpCiB7Ci0gICAgUmVuZGVyUHRyPFJlbmRlck1hdGhNTEZlbmNlZE9w
ZXJhdG9yPiBuZXdPcGVyYXRvciA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTEZlbmNlZE9w
ZXJhdG9yPihwYXJlbnQuZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0
eWxlV2l0aERpc3BsYXkocGFyZW50LnN0eWxlKCksIEJMT0NLKSwgb3BlcmF0b3JTdHJpbmcsIGZv
cm0sIGZsYWcpOworICAgIFJlbmRlclB0cjxSZW5kZXJNYXRoTUxGZW5jZWRPcGVyYXRvcj4gbmV3
T3BlcmF0b3IgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxGZW5jZWRPcGVyYXRvcj4ocGFy
ZW50LmRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNw
bGF5KHBhcmVudC5zdHlsZSgpLCBEaXNwbGF5VHlwZTo6QmxvY2spLCBvcGVyYXRvclN0cmluZywg
Zm9ybSwgZmxhZyk7CiAgICAgbmV3T3BlcmF0b3ItPmluaXRpYWxpemVTdHlsZSgpOwogICAgIHJl
dHVybiBuZXdPcGVyYXRvcjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRh
dGluZy9SZW5kZXJUcmVlQnVpbGRlck11bHRpQ29sdW1uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJNdWx0aUNvbHVt
bi5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRh
dGluZy9SZW5kZXJUcmVlQnVpbGRlck11bHRpQ29sdW1uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTY2LDcgKzE2Niw3IEBAIHZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6Ok11bHRpQ29sdW1uOjpjcmUK
ICAgICAgICAgfQogICAgIH0KIAotICAgIGF1dG8gbmV3RnJhZ21lbnRlZEZsb3cgPSAhZmxvdy5z
dHlsZSgpLmhhc0xpbmVzQ2xhbXAoKSA/IFdlYkNvcmU6OmNyZWF0ZVJlbmRlcmVyPFJlbmRlck11
bHRpQ29sdW1uRmxvdz4oZmxvdy5kb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnlt
b3VzU3R5bGVXaXRoRGlzcGxheShmbG93LnN0eWxlKCksIEJMT0NLKSkgOiAgV2ViQ29yZTo6Y3Jl
YXRlUmVuZGVyZXI8UmVuZGVyTGluZXNDbGFtcEZsb3c+KGZsb3cuZG9jdW1lbnQoKSwgUmVuZGVy
U3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoZmxvdy5zdHlsZSgpLCBCTE9D
SykpOworICAgIGF1dG8gbmV3RnJhZ21lbnRlZEZsb3cgPSAhZmxvdy5zdHlsZSgpLmhhc0xpbmVz
Q2xhbXAoKSA/IFdlYkNvcmU6OmNyZWF0ZVJlbmRlcmVyPFJlbmRlck11bHRpQ29sdW1uRmxvdz4o
Zmxvdy5kb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlz
cGxheShmbG93LnN0eWxlKCksIERpc3BsYXlUeXBlOjpCbG9jaykpIDogIFdlYkNvcmU6OmNyZWF0
ZVJlbmRlcmVyPFJlbmRlckxpbmVzQ2xhbXBGbG93PihmbG93LmRvY3VtZW50KCksIFJlbmRlclN0
eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KGZsb3cuc3R5bGUoKSwgRGlzcGxh
eVR5cGU6OkJsb2NrKSk7CiAgICAgbmV3RnJhZ21lbnRlZEZsb3ctPmluaXRpYWxpemVTdHlsZSgp
OwogICAgIGF1dG8mIGZyYWdtZW50ZWRGbG93ID0gKm5ld0ZyYWdtZW50ZWRGbG93OwogICAgIG1f
YnVpbGRlci5ibG9ja0J1aWxkZXIoKS5hdHRhY2goZmxvdywgV1RGTW92ZShuZXdGcmFnbWVudGVk
RmxvdyksIG51bGxwdHIpOwpAQCAtMzUyLDcgKzM1Miw3IEBAIFJlbmRlck9iamVjdCogUmVuZGVy
VHJlZUJ1aWxkZXI6Ok11bHRpQ28KICAgICAvLyBOZWVkIHRvIGNyZWF0ZSBhIG5ldyBjb2x1bW4g
c2V0IHdoZW4gdGhlcmUncyBubyBzZXQgYWxyZWFkeSBjcmVhdGVkLiBXZSBhbHNvIGFsd2F5cyBp
bnNlcnQKICAgICAvLyBhbm90aGVyIGNvbHVtbiBzZXQgYWZ0ZXIgYSBzcGFubmVyLiBFdmVuIGlm
IGl0IHR1cm5zIG91dCB0aGF0IHRoZXJlIGFyZSBubyByZW5kZXJlcnMKICAgICAvLyBmb2xsb3dp
bmcgdGhlIHNwYW5uZXIsIHRoZXJlIG1heSBiZSBib3R0b20gbWFyZ2lucyB0aGVyZSwgd2hpY2gg
dGFrZSB1cCBzcGFjZS4KLSAgICBhdXRvIG5ld1NldCA9IGZsb3cuY3JlYXRlTXVsdGlDb2x1bW5T
ZXQoUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkobXVsdGljb2xD
b250YWluZXItPnN0eWxlKCksIEJMT0NLKSk7CisgICAgYXV0byBuZXdTZXQgPSBmbG93LmNyZWF0
ZU11bHRpQ29sdW1uU2V0KFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNw
bGF5KG11bHRpY29sQ29udGFpbmVyLT5zdHlsZSgpLCBEaXNwbGF5VHlwZTo6QmxvY2spKTsKICAg
ICBuZXdTZXQtPmluaXRpYWxpemVTdHlsZSgpOwogICAgIGF1dG8mIHNldCA9ICpuZXdTZXQ7CiAg
ICAgbV9idWlsZGVyLmJsb2NrQnVpbGRlcigpLmF0dGFjaCgqbXVsdGljb2xDb250YWluZXIsIFdU
Rk1vdmUobmV3U2V0KSwgaW5zZXJ0QmVmb3JlTXVsdGljb2xDaGlsZCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJSdWJ5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1
aWxkZXJSdWJ5LmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyUnVieS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ3LDcgKzQ3LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzQW5vbnltb3VzUnVieUlubGluZQog
ICAgICAgICB8fCAhaXNSdWJ5KG9iamVjdC0+cGFyZW50KCkpCiAgICAgICAgIHx8IGlzPFJlbmRl
clJ1YnlSdW4+KCpvYmplY3QpCiAgICAgICAgIHx8IChvYmplY3QtPmlzSW5saW5lKCkgJiYgKG9i
amVjdC0+aXNCZWZvcmVDb250ZW50KCkgfHwgb2JqZWN0LT5pc0FmdGVyQ29udGVudCgpKSkKLSAg
ICAgICAgfHwgKG9iamVjdC0+aXNBbm9ueW1vdXMoKSAmJiBpczxSZW5kZXJCbG9jaz4oKm9iamVj
dCkgJiYgb2JqZWN0LT5zdHlsZSgpLmRpc3BsYXkoKSA9PSBJTkxJTkVfQkxPQ0spKTsKKyAgICAg
ICAgfHwgKG9iamVjdC0+aXNBbm9ueW1vdXMoKSAmJiBpczxSZW5kZXJCbG9jaz4oKm9iamVjdCkg
JiYgb2JqZWN0LT5zdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lQmxvY2sp
KTsKIAogICAgIHJldHVybiBvYmplY3QKICAgICAgICAgJiYgaXNSdWJ5KG9iamVjdC0+cGFyZW50
KCkpCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1J1YnlCZWZvcmVCbG9j
ayhjb24KICAgICByZXR1cm4gaXNBbm9ueW1vdXNSdWJ5SW5saW5lQmxvY2sob2JqZWN0KQogICAg
ICAgICAmJiAhb2JqZWN0LT5wcmV2aW91c1NpYmxpbmcoKQogICAgICAgICAmJiBkb3duY2FzdDxS
ZW5kZXJCbG9jaz4oKm9iamVjdCkuZmlyc3RDaGlsZCgpCi0gICAgICAgICYmIGRvd25jYXN0PFJl
bmRlckJsb2NrPigqb2JqZWN0KS5maXJzdENoaWxkKCktPnN0eWxlKCkuc3R5bGVUeXBlKCkgPT0g
QkVGT1JFOworICAgICAgICAmJiBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKm9iamVjdCkuZmlyc3RD
aGlsZCgpLT5zdHlsZSgpLnN0eWxlVHlwZSgpID09IFBzZXVkb0lkOjpCZWZvcmU7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgYm9vbCBpc1J1YnlBZnRlckJsb2NrKGNvbnN0IFJlbmRlck9iamVjdCogb2Jq
ZWN0KQpAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNSdWJ5QWZ0ZXJCbG9j
ayhjb25zCiAgICAgcmV0dXJuIGlzQW5vbnltb3VzUnVieUlubGluZUJsb2NrKG9iamVjdCkKICAg
ICAgICAgJiYgIW9iamVjdC0+bmV4dFNpYmxpbmcoKQogICAgICAgICAmJiBkb3duY2FzdDxSZW5k
ZXJCbG9jaz4oKm9iamVjdCkuZmlyc3RDaGlsZCgpCi0gICAgICAgICYmIGRvd25jYXN0PFJlbmRl
ckJsb2NrPigqb2JqZWN0KS5maXJzdENoaWxkKCktPnN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gQUZU
RVI7CisgICAgICAgICYmIGRvd25jYXN0PFJlbmRlckJsb2NrPigqb2JqZWN0KS5maXJzdENoaWxk
KCktPnN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6OkFmdGVyOwogfQogCiAjaWZuZGVm
IEFTU0VSVF9ESVNBQkxFRApAQCAtOTcsNyArOTcsNyBAQCBzdGF0aWMgaW5saW5lIFJlbmRlckJs
b2NrKiBydWJ5QWZ0ZXJCbG9jCiAKIHN0YXRpYyBhdXRvIGNyZWF0ZUFub255bW91c1J1YnlJbmxp
bmVCbG9jayhSZW5kZXJPYmplY3QmIHJ1YnkpCiB7Ci0gICAgYXV0byBuZXdCbG9jayA9IGNyZWF0
ZVJlbmRlcmVyPFJlbmRlckJsb2NrRmxvdz4ocnVieS5kb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6
Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShydWJ5LnN0eWxlKCksIElOTElORV9CTE9D
SykpOworICAgIGF1dG8gbmV3QmxvY2sgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJCbG9ja0Zsb3c+
KHJ1YnkuZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERp
c3BsYXkocnVieS5zdHlsZSgpLCBEaXNwbGF5VHlwZTo6SW5saW5lQmxvY2spKTsKICAgICBuZXdC
bG9jay0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAgcmV0dXJuIG5ld0Jsb2NrOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyVGFibGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5k
ZXJUcmVlQnVpbGRlclRhYmxlLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyVGFibGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzksOCArMTM5LDggQEAgUmVuZGVyRWxlbWVudCYgUmVuZGVyVHJlZUJ1aWxk
ZXI6OlRhYmxlOgogICAgIGF1dG8qIHBhcmVudENhbmRpZGF0ZSA9IGJlZm9yZUNoaWxkOwogICAg
IHdoaWxlIChwYXJlbnRDYW5kaWRhdGUgJiYgcGFyZW50Q2FuZGlkYXRlLT5wYXJlbnQoKS0+aXNB
bm9ueW1vdXMoKQogICAgICAgICAmJiAhaXM8UmVuZGVyVGFibGVTZWN0aW9uPigqcGFyZW50Q2Fu
ZGlkYXRlKQotICAgICAgICAmJiBwYXJlbnRDYW5kaWRhdGUtPnN0eWxlKCkuZGlzcGxheSgpICE9
IFRBQkxFX0NBUFRJT04KLSAgICAgICAgJiYgcGFyZW50Q2FuZGlkYXRlLT5zdHlsZSgpLmRpc3Bs
YXkoKSAhPSBUQUJMRV9DT0xVTU5fR1JPVVApCisgICAgICAgICYmIHBhcmVudENhbmRpZGF0ZS0+
c3R5bGUoKS5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6OlRhYmxlQ2FwdGlvbgorICAgICAgICAm
JiBwYXJlbnRDYW5kaWRhdGUtPnN0eWxlKCkuZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpUYWJs
ZUNvbHVtbkdyb3VwKQogICAgICAgICBwYXJlbnRDYW5kaWRhdGUgPSBwYXJlbnRDYW5kaWRhdGUt
PnBhcmVudCgpOwogCiAgICAgaWYgKHBhcmVudENhbmRpZGF0ZSAmJiBpczxSZW5kZXJUYWJsZVNl
Y3Rpb24+KCpwYXJlbnRDYW5kaWRhdGUpICYmIHBhcmVudENhbmRpZGF0ZS0+aXNBbm9ueW1vdXMo
KSAmJiAhcGFyZW50LmlzQWZ0ZXJDb250ZW50KHBhcmVudENhbmRpZGF0ZSkpIHsKQEAgLTE1MCw4
ICsxNTAsOCBAQCBSZW5kZXJFbGVtZW50JiBSZW5kZXJUcmVlQnVpbGRlcjo6VGFibGU6CiAgICAg
fQogCiAgICAgaWYgKGJlZm9yZUNoaWxkICYmICFpczxSZW5kZXJUYWJsZVNlY3Rpb24+KCpiZWZv
cmVDaGlsZCkKLSAgICAgICAgJiYgYmVmb3JlQ2hpbGQtPnN0eWxlKCkuZGlzcGxheSgpICE9IFRB
QkxFX0NBUFRJT04KLSAgICAgICAgJiYgYmVmb3JlQ2hpbGQtPnN0eWxlKCkuZGlzcGxheSgpICE9
IFRBQkxFX0NPTFVNTl9HUk9VUCkKKyAgICAgICAgJiYgYmVmb3JlQ2hpbGQtPnN0eWxlKCkuZGlz
cGxheSgpICE9IERpc3BsYXlUeXBlOjpUYWJsZUNhcHRpb24KKyAgICAgICAgJiYgYmVmb3JlQ2hp
bGQtPnN0eWxlKCkuZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpUYWJsZUNvbHVtbkdyb3VwKQog
ICAgICAgICBiZWZvcmVDaGlsZCA9IG51bGxwdHI7CiAKICAgICBhdXRvIG5ld1NlY3Rpb24gPSBS
ZW5kZXJUYWJsZVNlY3Rpb246OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcihwYXJl
bnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVV
cGRhdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02Miw5ICs2Miw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBjb25zdCBFbGVt
ZW50JiBtX2VsZW1lbnQ7Ci0gICAgRURpc3BsYXkgbV9wcmV2aW91c0Rpc3BsYXk7Ci0gICAgRVZp
c2liaWxpdHkgbV9wcmV2aW91c1Zpc2liaWxpdHk7Ci0gICAgRVZpc2liaWxpdHkgbV9wcmV2aW91
c0ltcGxpY2l0VmlzaWJpbGl0eTsKKyAgICBEaXNwbGF5VHlwZSBtX3ByZXZpb3VzRGlzcGxheTsK
KyAgICBWaXNpYmlsaXR5IG1fcHJldmlvdXNWaXNpYmlsaXR5OworICAgIFZpc2liaWxpdHkgbV9w
cmV2aW91c0ltcGxpY2l0VmlzaWJpbGl0eTsKIH07CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQog
CkBAIC0yNTcsMTMgKzI1NywxMyBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjpwb3BQYXJlbnRz
VG9EZXB0CiB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVCZWZvcmVEZXNjZW5kYW50cyhF
bGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHlsZTo6RWxlbWVudFVwZGF0ZXMqIHVwZGF0ZXMpCiB7
CiAgICAgaWYgKHVwZGF0ZXMpCi0gICAgICAgIGdlbmVyYXRlZENvbnRlbnQoKS51cGRhdGVQc2V1
ZG9FbGVtZW50KGVsZW1lbnQsIHVwZGF0ZXMtPmJlZm9yZVBzZXVkb0VsZW1lbnRVcGRhdGUsIEJF
Rk9SRSk7CisgICAgICAgIGdlbmVyYXRlZENvbnRlbnQoKS51cGRhdGVQc2V1ZG9FbGVtZW50KGVs
ZW1lbnQsIHVwZGF0ZXMtPmJlZm9yZVBzZXVkb0VsZW1lbnRVcGRhdGUsIFBzZXVkb0lkOjpCZWZv
cmUpOwogfQogCiB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVBZnRlckRlc2NlbmRhbnRz
KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlcyogdXBkYXRlcykK
IHsKICAgICBpZiAodXBkYXRlcykKLSAgICAgICAgZ2VuZXJhdGVkQ29udGVudCgpLnVwZGF0ZVBz
ZXVkb0VsZW1lbnQoZWxlbWVudCwgdXBkYXRlcy0+YWZ0ZXJQc2V1ZG9FbGVtZW50VXBkYXRlLCBB
RlRFUik7CisgICAgICAgIGdlbmVyYXRlZENvbnRlbnQoKS51cGRhdGVQc2V1ZG9FbGVtZW50KGVs
ZW1lbnQsIHVwZGF0ZXMtPmFmdGVyUHNldWRvRWxlbWVudFVwZGF0ZSwgUHNldWRvSWQ6OkFmdGVy
KTsKIAogICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwogICAgIGlmICgh
cmVuZGVyZXIpCkBAIC0zMTcsMTMgKzMxNywxMyBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1
cGRhdGVFbGVtZW50UmVuCiAgICAgICAgIH0KIAogICAgICAgICAvLyBkaXNwbGF5Om5vbmUgY2Fu
Y2VscyBhbmltYXRpb25zLgotICAgICAgICBhdXRvIHRlYXJkb3duVHlwZSA9IHVwZGF0ZS5zdHls
ZS0+ZGlzcGxheSgpID09IE5PTkUgPyBUZWFyZG93blR5cGU6OlJlbmRlcmVyVXBkYXRlQ2FuY2Vs
aW5nQW5pbWF0aW9ucyA6IFRlYXJkb3duVHlwZTo6UmVuZGVyZXJVcGRhdGU7CisgICAgICAgIGF1
dG8gdGVhcmRvd25UeXBlID0gdXBkYXRlLnN0eWxlLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6
Ok5vbmUgPyBUZWFyZG93blR5cGU6OlJlbmRlcmVyVXBkYXRlQ2FuY2VsaW5nQW5pbWF0aW9ucyA6
IFRlYXJkb3duVHlwZTo6UmVuZGVyZXJVcGRhdGU7CiAgICAgICAgIHRlYXJEb3duUmVuZGVyZXJz
KGVsZW1lbnQsIHRlYXJkb3duVHlwZSwgbV9idWlsZGVyKTsKIAogICAgICAgICByZW5kZXJpbmdQ
YXJlbnQoKS5kaWRDcmVhdGVPckRlc3Ryb3lDaGlsZFJlbmRlcmVyID0gdHJ1ZTsKICAgICB9CiAK
LSAgICBib29sIGhhc0Rpc3BsYXlDb250ZW50cyA9IHVwZGF0ZS5zdHlsZS0+ZGlzcGxheSgpID09
IENPTlRFTlRTOworICAgIGJvb2wgaGFzRGlzcGxheUNvbnRlbnRzID0gdXBkYXRlLnN0eWxlLT5k
aXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OkNvbnRlbnRzOwogICAgIGlmIChoYXNEaXNwbGF5Q29u
dGVudHMpCiAgICAgICAgIGVsZW1lbnQuc3RvcmVEaXNwbGF5Q29udGVudHNTdHlsZShSZW5kZXJT
dHlsZTo6Y2xvbmVQdHIoKnVwZGF0ZS5zdHlsZSkpOwogICAgIGVsc2UKQEAgLTY0MCwzNCArNjQw
LDM0IEBAIFJlbmRlclZpZXcmIFJlbmRlclRyZWVVcGRhdGVyOjpyZW5kZXJWaWUKIH0KIAogI2lm
IFBMQVRGT1JNKElPUykKLXN0YXRpYyBFVmlzaWJpbGl0eSBlbGVtZW50SW1wbGljaXRWaXNpYmls
aXR5KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCitzdGF0aWMgVmlzaWJpbGl0eSBlbGVtZW50SW1w
bGljaXRWaXNpYmlsaXR5KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgYXV0byogcmVu
ZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAg
cmV0dXJuIFZJU0lCTEU7CisgICAgICAgIHJldHVybiBWaXNpYmlsaXR5OjpWaXNpYmxlOwogCiAg
ICAgYXV0byYgc3R5bGUgPSByZW5kZXJlci0+c3R5bGUoKTsKIAogICAgIGF1dG8gd2lkdGggPSBz
dHlsZS53aWR0aCgpOwogICAgIGF1dG8gaGVpZ2h0ID0gc3R5bGUuaGVpZ2h0KCk7CiAgICAgaWYg
KCh3aWR0aC5pc0ZpeGVkKCkgJiYgd2lkdGgudmFsdWUoKSA8PSAwKSB8fCAoaGVpZ2h0LmlzRml4
ZWQoKSAmJiBoZWlnaHQudmFsdWUoKSA8PSAwKSkKLSAgICAgICAgcmV0dXJuIEhJRERFTjsKKyAg
ICAgICAgcmV0dXJuIFZpc2liaWxpdHk6OkhpZGRlbjsKIAogICAgIGF1dG8gdG9wID0gc3R5bGUu
dG9wKCk7CiAgICAgYXV0byBsZWZ0ID0gc3R5bGUubGVmdCgpOwogICAgIGlmIChsZWZ0LmlzRml4
ZWQoKSAmJiB3aWR0aC5pc0ZpeGVkKCkgJiYgLWxlZnQudmFsdWUoKSA+PSB3aWR0aC52YWx1ZSgp
KQotICAgICAgICByZXR1cm4gSElEREVOOworICAgICAgICByZXR1cm4gVmlzaWJpbGl0eTo6SGlk
ZGVuOwogCiAgICAgaWYgKHRvcC5pc0ZpeGVkKCkgJiYgaGVpZ2h0LmlzRml4ZWQoKSAmJiAtdG9w
LnZhbHVlKCkgPj0gaGVpZ2h0LnZhbHVlKCkpCi0gICAgICAgIHJldHVybiBISURERU47Ci0gICAg
cmV0dXJuIFZJU0lCTEU7CisgICAgICAgIHJldHVybiBWaXNpYmlsaXR5OjpIaWRkZW47CisgICAg
cmV0dXJuIFZpc2liaWxpdHk6OlZpc2libGU7CiB9CiAKIENoZWNrRm9yVmlzaWJpbGl0eUNoYW5n
ZTo6Q2hlY2tGb3JWaXNpYmlsaXR5Q2hhbmdlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAg
OiBtX2VsZW1lbnQoZWxlbWVudCkKLSAgICAsIG1fcHJldmlvdXNEaXNwbGF5KGVsZW1lbnQucmVu
ZGVyU3R5bGUoKSA/IGVsZW1lbnQucmVuZGVyU3R5bGUoKS0+ZGlzcGxheSgpIDogTk9ORSkKLSAg
ICAsIG1fcHJldmlvdXNWaXNpYmlsaXR5KGVsZW1lbnQucmVuZGVyU3R5bGUoKSA/IGVsZW1lbnQu
cmVuZGVyU3R5bGUoKS0+dmlzaWJpbGl0eSgpIDogSElEREVOKQotICAgICwgbV9wcmV2aW91c0lt
cGxpY2l0VmlzaWJpbGl0eShXS09ic2VydmluZ0NvbnRlbnRDaGFuZ2VzKCkgJiYgV0tPYnNlcnZl
ZENvbnRlbnRDaGFuZ2UoKSAhPSBXS0NvbnRlbnRWaXNpYmlsaXR5Q2hhbmdlID8gZWxlbWVudElt
cGxpY2l0VmlzaWJpbGl0eShlbGVtZW50KSA6IFZJU0lCTEUpCisgICAgLCBtX3ByZXZpb3VzRGlz
cGxheShlbGVtZW50LnJlbmRlclN0eWxlKCkgPyBlbGVtZW50LnJlbmRlclN0eWxlKCktPmRpc3Bs
YXkoKSA6IERpc3BsYXlUeXBlOjpOb25lKQorICAgICwgbV9wcmV2aW91c1Zpc2liaWxpdHkoZWxl
bWVudC5yZW5kZXJTdHlsZSgpID8gZWxlbWVudC5yZW5kZXJTdHlsZSgpLT52aXNpYmlsaXR5KCkg
OiBWaXNpYmlsaXR5OjpIaWRkZW4pCisgICAgLCBtX3ByZXZpb3VzSW1wbGljaXRWaXNpYmlsaXR5
KFdLT2JzZXJ2aW5nQ29udGVudENoYW5nZXMoKSAmJiBXS09ic2VydmVkQ29udGVudENoYW5nZSgp
ICE9IFdLQ29udGVudFZpc2liaWxpdHlDaGFuZ2UgPyBlbGVtZW50SW1wbGljaXRWaXNpYmlsaXR5
KGVsZW1lbnQpIDogVmlzaWJpbGl0eTo6VmlzaWJsZSkKIHsKIH0KIApAQCAtNjgwLDggKzY4MCw4
IEBAIENoZWNrRm9yVmlzaWJpbGl0eUNoYW5nZTo6fkNoZWNrRm9yVmlzaWIKICAgICBhdXRvKiBz
dHlsZSA9IG1fZWxlbWVudC5yZW5kZXJTdHlsZSgpOwogICAgIGlmICghc3R5bGUpCiAgICAgICAg
IHJldHVybjsKLSAgICBpZiAoKG1fcHJldmlvdXNEaXNwbGF5ID09IE5PTkUgJiYgc3R5bGUtPmRp
c3BsYXkoKSAhPSBOT05FKSB8fCAobV9wcmV2aW91c1Zpc2liaWxpdHkgPT0gSElEREVOICYmIHN0
eWxlLT52aXNpYmlsaXR5KCkgIT0gSElEREVOKQotICAgICAgICB8fCAobV9wcmV2aW91c0ltcGxp
Y2l0VmlzaWJpbGl0eSA9PSBISURERU4gJiYgZWxlbWVudEltcGxpY2l0VmlzaWJpbGl0eShtX2Vs
ZW1lbnQpID09IFZJU0lCTEUpKQorICAgIGlmICgobV9wcmV2aW91c0Rpc3BsYXkgPT0gRGlzcGxh
eVR5cGU6Ok5vbmUgJiYgc3R5bGUtPmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Tm9uZSkgfHwg
KG1fcHJldmlvdXNWaXNpYmlsaXR5ID09IFZpc2liaWxpdHk6OkhpZGRlbiAmJiBzdHlsZS0+dmlz
aWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OkhpZGRlbikKKyAgICAgICAgfHwgKG1fcHJldmlvdXNJ
bXBsaWNpdFZpc2liaWxpdHkgPT0gVmlzaWJpbGl0eTo6SGlkZGVuICYmIGVsZW1lbnRJbXBsaWNp
dFZpc2liaWxpdHkobV9lbGVtZW50KSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlKSkKICAgICAgICAg
V0tTZXRPYnNlcnZlZENvbnRlbnRDaGFuZ2UoV0tDb250ZW50VmlzaWJpbGl0eUNoYW5nZSk7CiB9
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJU
cmVlVXBkYXRlckdlbmVyYXRlZENvbnRlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRlZENvbnRlbnQu
Y3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTEsMTQgKzkxLDE0IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVN0eWxlRm9yQ29udGVudFJlbmRl
cmUKIAogdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6R2VuZXJhdGVkQ29udGVudDo6dXBkYXRlUHNl
dWRvRWxlbWVudChFbGVtZW50JiBjdXJyZW50LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN0eWxlOjpF
bGVtZW50VXBkYXRlPiYgdXBkYXRlLCBQc2V1ZG9JZCBwc2V1ZG9JZCkKIHsKLSAgICBQc2V1ZG9F
bGVtZW50KiBwc2V1ZG9FbGVtZW50ID0gcHNldWRvSWQgPT0gQkVGT1JFID8gY3VycmVudC5iZWZv
cmVQc2V1ZG9FbGVtZW50KCkgOiBjdXJyZW50LmFmdGVyUHNldWRvRWxlbWVudCgpOworICAgIFBz
ZXVkb0VsZW1lbnQqIHBzZXVkb0VsZW1lbnQgPSBwc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6QmVmb3Jl
ID8gY3VycmVudC5iZWZvcmVQc2V1ZG9FbGVtZW50KCkgOiBjdXJyZW50LmFmdGVyUHNldWRvRWxl
bWVudCgpOwogCiAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gcHNldWRvRWxlbWVudCA/IHBzZXVk
b0VsZW1lbnQtPnJlbmRlcmVyKCkgOiBudWxscHRyKQogICAgICAgICBtX3VwZGF0ZXIucmVuZGVy
VHJlZVBvc2l0aW9uKCkuaW52YWxpZGF0ZU5leHRTaWJsaW5nKCpyZW5kZXJlcik7CiAKICAgICBp
ZiAoIW5lZWRzUHNldWRvRWxlbWVudCh1cGRhdGUpKSB7CiAgICAgICAgIGlmIChwc2V1ZG9FbGVt
ZW50KSB7Ci0gICAgICAgICAgICBpZiAocHNldWRvSWQgPT0gQkVGT1JFKQorICAgICAgICAgICAg
aWYgKHBzZXVkb0lkID09IFBzZXVkb0lkOjpCZWZvcmUpCiAgICAgICAgICAgICAgICAgcmVtb3Zl
QmVmb3JlUHNldWRvRWxlbWVudChjdXJyZW50LCBtX3VwZGF0ZXIubV9idWlsZGVyKTsKICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByZW1vdmVBZnRlclBzZXVkb0VsZW1lbnQoY3Vy
cmVudCwgbV91cGRhdGVyLm1fYnVpbGRlcik7CkBAIC0xMTYsMTMgKzExNiwxMyBAQCB2b2lkIFJl
bmRlclRyZWVVcGRhdGVyOjpHZW5lcmF0ZWRDb250ZW50CiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmIChuZXdQc2V1ZG9FbGVtZW50KSB7Ci0gICAgICAgIGlmIChwc2V1ZG9JZCA9PSBCRUZPUkUp
CisgICAgICAgIGlmIChwc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6QmVmb3JlKQogICAgICAgICAgICAg
Y3VycmVudC5zZXRCZWZvcmVQc2V1ZG9FbGVtZW50KG5ld1BzZXVkb0VsZW1lbnQucmVsZWFzZU5v
bk51bGwoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGN1cnJlbnQuc2V0QWZ0ZXJQc2V1
ZG9FbGVtZW50KG5ld1BzZXVkb0VsZW1lbnQucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogCi0g
ICAgaWYgKHVwZGF0ZS0+c3R5bGUtPmRpc3BsYXkoKSA9PSBDT05URU5UUykgeworICAgIGlmICh1
cGRhdGUtPnN0eWxlLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OkNvbnRlbnRzKSB7CiAgICAg
ICAgIC8vIEZvciBkaXNwbGF5OmNvbnRlbnRzIHdlIGNyZWF0ZSBhbiBpbmxpbmUgd3JhcHBlciB0
aGF0IGluaGVyaXRzIGl0cwogICAgICAgICAvLyBzdHlsZSBmcm9tIHRoZSBkaXNwbGF5OmNvbnRl
bnRzIHN0eWxlLgogICAgICAgICBhdXRvIGNvbnRlbnRzU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3Jl
YXRlUHRyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHls
ZS5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRl
eHRCb3hTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOSw3ICsxMTksNyBAQCBHbHlwaE92
ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvCiAgICAgZmxvYXQgaGVpZ2h0ID0gbGlu
ZVN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKS5mbG9hdEhlaWdodCgpOwogICAgIEds
eXBoT3ZlcmZsb3cgb3ZlcmZsb3dSZXN1bHQ7CiAgICAgCi0gICAgaWYgKGRlY29yYXRpb25TdHls
ZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlV2F2eSkgeworICAgIGlmIChkZWNvcmF0aW9uU3R5bGUg
PT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSkgewogICAgICAgICBnZXRXYXZ5U3Ryb2tlUGFy
YW1ldGVycyhsaW5lU3R5bGUuY29tcHV0ZWRGb250UGl4ZWxTaXplKCksIGNvbnRyb2xQb2ludERp
c3RhbmNlLCBzdGVwKTsKICAgICAgICAgd2F2eU9mZnNldCA9IHdhdnlPZmZzZXRGcm9tRGVjb3Jh
dGlvbigpOwogICAgICAgICBvdmVyZmxvd1Jlc3VsdC5sZWZ0ID0gc3Ryb2tlVGhpY2tuZXNzOwpA
QCAtMTMxLDcgKzEzMSw3IEBAIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0
aW8KICAgICAgICAgLy8gQ29tcGVuc2F0ZSBmb3IgdGhlIGludGVncmFsIGNlaWxpbmcgaW4gR3Jh
cGhpY3NDb250ZXh0Ojpjb21wdXRlTGluZUJvdW5kc0FuZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0
KCkKICAgICAgICAgaW50IHVuZGVybGluZU9mZnNldCA9IDE7CiAgICAgICAgIHVuZGVybGluZU9m
ZnNldCArPSBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KGxpbmVTdHlsZS50ZXh0VW5kZXJsaW5lUG9z
aXRpb24oKSwgbGluZVN0eWxlLmZvbnRNZXRyaWNzKCksIGlubGluZVRleHRCb3gsIHN0cm9rZVRo
aWNrbmVzcyk7Ci0gICAgICAgIGlmIChkZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29yYXRpb25T
dHlsZVdhdnkpIHsKKyAgICAgICAgaWYgKGRlY29yYXRpb25TdHlsZSA9PSBUZXh0RGVjb3JhdGlv
blN0eWxlOjpXYXZ5KSB7CiAgICAgICAgICAgICBleHRlbmRJbnRUb0Zsb2F0KG92ZXJmbG93UmVz
dWx0LmJvdHRvbSwgdW5kZXJsaW5lT2Zmc2V0ICsgd2F2eU9mZnNldCArIGNvbnRyb2xQb2ludERp
c3RhbmNlICsgc3Ryb2tlVGhpY2tuZXNzIC0gaGVpZ2h0KTsKICAgICAgICAgICAgIGV4dGVuZElu
dFRvRmxvYXQob3ZlcmZsb3dSZXN1bHQudG9wLCAtKHVuZGVybGluZU9mZnNldCArIHdhdnlPZmZz
ZXQgLSBjb250cm9sUG9pbnREaXN0YW5jZSAtIHN0cm9rZVRoaWNrbmVzcykpOwogICAgICAgICB9
IGVsc2UgewpAQCAtMTQwLDcgKzE0MCw3IEBAIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dG
b3JEZWNvcmF0aW8KICAgICAgICAgfQogICAgIH0KICAgICBpZiAoZGVjb3JhdGlvbiAmIFRleHRE
ZWNvcmF0aW9uT3ZlcmxpbmUpIHsKLSAgICAgICAgaWYgKGRlY29yYXRpb25TdHlsZSA9PSBUZXh0
RGVjb3JhdGlvblN0eWxlV2F2eSkgeworICAgICAgICBpZiAoZGVjb3JhdGlvblN0eWxlID09IFRl
eHREZWNvcmF0aW9uU3R5bGU6OldhdnkpIHsKICAgICAgICAgICAgIGV4dGVuZEludFRvRmxvYXQo
b3ZlcmZsb3dSZXN1bHQuYm90dG9tLCAtd2F2eU9mZnNldCArIGNvbnRyb2xQb2ludERpc3RhbmNl
ICsgc3Ryb2tlVGhpY2tuZXNzIC0gaGVpZ2h0KTsKICAgICAgICAgICAgIGV4dGVuZEludFRvRmxv
YXQob3ZlcmZsb3dSZXN1bHQudG9wLCB3YXZ5T2Zmc2V0ICsgY29udHJvbFBvaW50RGlzdGFuY2Ug
KyBzdHJva2VUaGlja25lc3MpOwogICAgICAgICB9IGVsc2UgewpAQCAtMTUwLDcgKzE1MCw3IEBA
IEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW8KICAgICB9CiAgICAgaWYg
KGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbkxpbmVUaHJvdWdoKSB7CiAgICAgICAgIGZsb2F0
IGJhc2VsaW5lID0gbGluZVN0eWxlLmZvbnRNZXRyaWNzKCkuZmxvYXRBc2NlbnQoKTsKLSAgICAg
ICAgaWYgKGRlY29yYXRpb25TdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlV2F2eSkgeworICAg
ICAgICBpZiAoZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkpIHsK
ICAgICAgICAgICAgIGV4dGVuZEludFRvRmxvYXQob3ZlcmZsb3dSZXN1bHQuYm90dG9tLCAyICog
YmFzZWxpbmUgLyAzICsgY29udHJvbFBvaW50RGlzdGFuY2UgKyBzdHJva2VUaGlja25lc3MgLSBo
ZWlnaHQpOwogICAgICAgICAgICAgZXh0ZW5kSW50VG9GbG9hdChvdmVyZmxvd1Jlc3VsdC50b3As
IC0oMiAqIGJhc2VsaW5lIC8gMyAtIGNvbnRyb2xQb2ludERpc3RhbmNlIC0gc3Ryb2tlVGhpY2tu
ZXNzKSk7CiAgICAgICAgIH0gZWxzZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZUNoYW5nZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVDaGFu
Z2UuY3BwCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUNo
YW5nZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgQ2hhbmdlIGRldGVybWlu
ZUNoYW5nZShjb25zdCBSZW5kZXJTdHlsZQogewogICAgIGlmIChzMS5kaXNwbGF5KCkgIT0gczIu
ZGlzcGxheSgpKQogICAgICAgICByZXR1cm4gRGV0YWNoOwotICAgIGlmIChzMS5oYXNQc2V1ZG9T
dHlsZShGSVJTVF9MRVRURVIpICE9IHMyLmhhc1BzZXVkb1N0eWxlKEZJUlNUX0xFVFRFUikpCisg
ICAgaWYgKHMxLmhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkOjpGaXJzdExldHRlcikgIT0gczIuaGFz
UHNldWRvU3R5bGUoUHNldWRvSWQ6OkZpcnN0TGV0dGVyKSkKICAgICAgICAgcmV0dXJuIERldGFj
aDsKICAgICAvLyBXZSBqdXN0IGRldGFjaCBpZiBhIHJlbmRlcmVyIGFjcXVpcmVzIG9yIGxvc2Vz
IGEgY29sdW1uLXNwYW4sIHNpbmNlIHNwYW5uaW5nIGVsZW1lbnRzCiAgICAgLy8gdHlwaWNhbGx5
IHdvbid0IGNvbnRhaW4gbXVjaCBjb250ZW50LgpAQCAtNjIsNyArNjIsNyBAQCBDaGFuZ2UgZGV0
ZXJtaW5lQ2hhbmdlKGNvbnN0IFJlbmRlclN0eWxlCiAgICAgLy8gSWYgdGhlIHBzZXVkb1N0eWxl
cyBoYXZlIGNoYW5nZWQsIHdlIHdhbnQgYW55IFN0eWxlQ2hhbmdlIHRoYXQgaXMgbm90IE5vQ2hh
bmdlCiAgICAgLy8gYmVjYXVzZSBzZXRTdHlsZSB3aWxsIGRvIHRoZSByaWdodCB0aGluZyB3aXRo
IGFueXRoaW5nIGVsc2UuCiAgICAgaWYgKHMxLmhhc0FueVB1YmxpY1BzZXVkb1N0eWxlcygpKSB7
Ci0gICAgICAgIGZvciAoUHNldWRvSWQgcHNldWRvSWQgPSBGSVJTVF9QVUJMSUNfUFNFVURPSUQ7
IHBzZXVkb0lkIDwgRklSU1RfSU5URVJOQUxfUFNFVURPSUQ7IHBzZXVkb0lkID0gc3RhdGljX2Nh
c3Q8UHNldWRvSWQ+KHBzZXVkb0lkICsgMSkpIHsKKyAgICAgICAgZm9yIChQc2V1ZG9JZCBwc2V1
ZG9JZCA9IFBzZXVkb0lkOjpGaXJzdFB1YmxpY1BzZXVkb0lkOyBwc2V1ZG9JZCA8IFBzZXVkb0lk
OjpGaXJzdEludGVybmFsUHNldWRvSWQ7IHBzZXVkb0lkID0gc3RhdGljX2Nhc3Q8UHNldWRvSWQ+
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihwc2V1ZG9JZCkgKyAxKSkgewogICAgICAgICAgICAgaWYg
KHMxLmhhc1BzZXVkb1N0eWxlKHBzZXVkb0lkKSkgewogICAgICAgICAgICAgICAgIFJlbmRlclN0
eWxlKiBwczIgPSBzMi5nZXRDYWNoZWRQc2V1ZG9TdHlsZShwc2V1ZG9JZCk7CiAgICAgICAgICAg
ICAgICAgaWYgKCFwczIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUZvbnRTaXpl
RnVuY3Rpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUZv
bnRTaXplRnVuY3Rpb25zLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVGb250U2l6ZUZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcg
KzkyLDcgQEAgZmxvYXQgY29tcHV0ZWRGb250U2l6ZUZyb21TcGVjaWZpZWRTaXplKAogICAgIGlm
ICghdXNlU1ZHWm9vbVJ1bGVzKSB7CiAgICAgICAgIHpvb21GYWN0b3IgPSBzdHlsZS0+ZWZmZWN0
aXZlWm9vbSgpOwogICAgICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOwotICAg
ICAgICBpZiAoZnJhbWUgJiYgc3R5bGUtPnRleHRab29tKCkgIT0gVGV4dFpvb21SZXNldCkKKyAg
ICAgICAgaWYgKGZyYW1lICYmIHN0eWxlLT50ZXh0Wm9vbSgpICE9IFRleHRab29tOjpSZXNldCkK
ICAgICAgICAgICAgIHpvb21GYWN0b3IgKj0gZnJhbWUtPnRleHRab29tRmFjdG9yKCk7CiAgICAg
fQogICAgIHJldHVybiBjb21wdXRlZEZvbnRTaXplRnJvbVNwZWNpZmllZFNpemUoc3BlY2lmaWVk
U2l6ZSwgaXNBYnNvbHV0ZVNpemUsIHpvb21GYWN0b3IsIHVzZVNWR1pvb21SdWxlcyA/IE1pbmlt
dW1Gb250U2l6ZVJ1bGU6Ok5vbmUgOiBNaW5pbXVtRm9udFNpemVSdWxlOjpBYnNvbHV0ZUFuZFJl
bGF0aXZlLCBkb2N1bWVudC5zZXR0aW5ncygpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysr
IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTgsOCArNTgsOCBAQCBSZW5kZXJTdHlsZSByZXNvbHZlRm9yRG9jdW1lbnQo
Y29uc3QgRG9jCiAKICAgICBhdXRvIGRvY3VtZW50U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRl
KCk7CiAKLSAgICBkb2N1bWVudFN0eWxlLnNldERpc3BsYXkoQkxPQ0spOwotICAgIGRvY3VtZW50
U3R5bGUuc2V0UlRMT3JkZXJpbmcoZG9jdW1lbnQudmlzdWFsbHlPcmRlcmVkKCkgPyBWaXN1YWxP
cmRlciA6IExvZ2ljYWxPcmRlcik7CisgICAgZG9jdW1lbnRTdHlsZS5zZXREaXNwbGF5KERpc3Bs
YXlUeXBlOjpCbG9jayk7CisgICAgZG9jdW1lbnRTdHlsZS5zZXRSVExPcmRlcmluZyhkb2N1bWVu
dC52aXN1YWxseU9yZGVyZWQoKSA/IE9yZGVyOjpWaXN1YWwgOiBPcmRlcjo6TG9naWNhbCk7CiAg
ICAgZG9jdW1lbnRTdHlsZS5zZXRab29tKCFkb2N1bWVudC5wcmludGluZygpID8gcmVuZGVyVmll
dy5mcmFtZSgpLnBhZ2Vab29tRmFjdG9yKCkgOiAxKTsKICAgICBkb2N1bWVudFN0eWxlLnNldFBh
Z2VTY2FsZVRyYW5zZm9ybShyZW5kZXJWaWV3LmZyYW1lKCkuZnJhbWVTY2FsZUZhY3RvcigpKTsK
ICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGRvY3VtZW50Rm9udERlc2NyaXB0aW9uID0gZG9j
dW1lbnRTdHlsZS5mb250RGVzY3JpcHRpb24oKTsKQEAgLTk5LDcgKzk5LDcgQEAgUmVuZGVyU3R5
bGUgcmVzb2x2ZUZvckRvY3VtZW50KGNvbnN0IERvYwogICAgICAgICAgICAgcmVuZGVyVmlldy51
cGRhdGVDb2x1bW5Qcm9ncmVzc2lvbkZyb21TdHlsZShkb2N1bWVudFN0eWxlKTsKICAgICAgICAg
aWYgKHJlbmRlclZpZXcucGFnZSgpLnBhZ2luYXRpb25MaW5lR3JpZEVuYWJsZWQoKSkgewogICAg
ICAgICAgICAgZG9jdW1lbnRTdHlsZS5zZXRMaW5lR3JpZCgiLXdlYmtpdC1kZWZhdWx0LXBhZ2lu
YXRpb24tZ3JpZCIpOwotICAgICAgICAgICAgZG9jdW1lbnRTdHlsZS5zZXRMaW5lU25hcChMaW5l
U25hcENvbnRhaW4pOworICAgICAgICAgICAgZG9jdW1lbnRTdHlsZS5zZXRMaW5lU25hcChMaW5l
U25hcDo6Q29udGFpbik7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlU2hhcmluZ1Jlc29sdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVNoYXJpbmdSZXNvbHZlci5jcHAJKHJldmlzaW9uIDIzMjEyMykKKysr
IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2hhcmluZ1Jlc29sdmVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTAsNyArNTAsNyBAQCBzdHJ1Y3QgU2hhcmluZ1Jlc29sdmVyOjpDb250ZXh0IHsK
ICAgICBjb25zdCBVcGRhdGUmIHVwZGF0ZTsKICAgICBjb25zdCBTdHlsZWRFbGVtZW50JiBlbGVt
ZW50OwogICAgIGJvb2wgZWxlbWVudEFmZmVjdGVkQnlDbGFzc1J1bGVzOwotICAgIEVJbnNpZGVM
aW5rIGVsZW1lbnRMaW5rU3RhdGU7CisgICAgSW5zaWRlTGluayBlbGVtZW50TGlua1N0YXRlOwog
fTsKIAogU2hhcmluZ1Jlc29sdmVyOjpTaGFyaW5nUmVzb2x2ZXIoY29uc3QgRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBEb2N1bWVudFJ1bGVTZXRzJiBydWxlU2V0cywgY29uc3QgU2VsZWN0b3JG
aWx0ZXImIHNlbGVjdG9yRmlsdGVyKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVU
cmVlUmVzb2x2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
VHJlZVJlc29sdmVyLmNwcAkocmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNyArMTU2LDcg
QEAgc3RhdGljIGJvb2wgYWZmZWN0c1JlbmRlcmVkU3VidHJlZShFbGVtZQogewogICAgIGlmIChl
bGVtZW50LnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChuZXdTdHls
ZS5kaXNwbGF5KCkgIT0gTk9ORSkKKyAgICBpZiAobmV3U3R5bGUuZGlzcGxheSgpICE9IERpc3Bs
YXlUeXBlOjpOb25lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoZWxlbWVudC5yZW5k
ZXJlcklzTmVlZGVkKG5ld1N0eWxlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMzksMTUg
KzIzOSwxNSBAQCBFbGVtZW50VXBkYXRlcyBUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtCiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBhdXRvIGJlZm9yZVVwZGF0ZSA9IHJlc29sdmVQc2V1ZG9TdHls
ZShlbGVtZW50LCB1cGRhdGUsIEJFRk9SRSk7Ci0gICAgYXV0byBhZnRlclVwZGF0ZSA9IHJlc29s
dmVQc2V1ZG9TdHlsZShlbGVtZW50LCB1cGRhdGUsIEFGVEVSKTsKKyAgICBhdXRvIGJlZm9yZVVw
ZGF0ZSA9IHJlc29sdmVQc2V1ZG9TdHlsZShlbGVtZW50LCB1cGRhdGUsIFBzZXVkb0lkOjpCZWZv
cmUpOworICAgIGF1dG8gYWZ0ZXJVcGRhdGUgPSByZXNvbHZlUHNldWRvU3R5bGUoZWxlbWVudCwg
dXBkYXRlLCBQc2V1ZG9JZDo6QWZ0ZXIpOwogCiAgICAgcmV0dXJuIHsgV1RGTW92ZSh1cGRhdGUp
LCBkZXNjZW5kYW50c1RvUmVzb2x2ZSwgV1RGTW92ZShiZWZvcmVVcGRhdGUpLCBXVEZNb3ZlKGFm
dGVyVXBkYXRlKSB9OwogfQogCiBFbGVtZW50VXBkYXRlIFRyZWVSZXNvbHZlcjo6cmVzb2x2ZVBz
ZXVkb1N0eWxlKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEVsZW1lbnRVcGRhdGUmIGVsZW1lbnRV
cGRhdGUsIFBzZXVkb0lkIHBzZXVkb0lkKQogewotICAgIGlmIChlbGVtZW50VXBkYXRlLnN0eWxl
LT5kaXNwbGF5KCkgPT0gTk9ORSkKKyAgICBpZiAoZWxlbWVudFVwZGF0ZS5zdHlsZS0+ZGlzcGxh
eSgpID09IERpc3BsYXlUeXBlOjpOb25lKQogICAgICAgICByZXR1cm4geyB9OwogICAgIGlmICgh
ZWxlbWVudFVwZGF0ZS5zdHlsZS0+aGFzUHNldWRvU3R5bGUocHNldWRvSWQpKQogICAgICAgICBy
ZXR1cm4geyB9OwpAQCAtMjU2LDExICsyNTYsMTEgQEAgRWxlbWVudFVwZGF0ZSBUcmVlUmVzb2x2
ZXI6OnJlc29sdmVQc2V1ZAogICAgIGlmICghcHNldWRvU3R5bGUpCiAgICAgICAgIHJldHVybiB7
IH07CiAKLSAgICBQc2V1ZG9FbGVtZW50KiBwc2V1ZG9FbGVtZW50ID0gcHNldWRvSWQgPT0gQkVG
T1JFID8gZWxlbWVudC5iZWZvcmVQc2V1ZG9FbGVtZW50KCkgOiBlbGVtZW50LmFmdGVyUHNldWRv
RWxlbWVudCgpOworICAgIFBzZXVkb0VsZW1lbnQqIHBzZXVkb0VsZW1lbnQgPSBwc2V1ZG9JZCA9
PSBQc2V1ZG9JZDo6QmVmb3JlID8gZWxlbWVudC5iZWZvcmVQc2V1ZG9FbGVtZW50KCkgOiBlbGVt
ZW50LmFmdGVyUHNldWRvRWxlbWVudCgpOwogICAgIGlmICghcHNldWRvRWxlbWVudCkgewogICAg
ICAgICBhdXRvIG5ld1BzZXVkb0VsZW1lbnQgPSBQc2V1ZG9FbGVtZW50OjpjcmVhdGUoZWxlbWVu
dCwgcHNldWRvSWQpOwogICAgICAgICBwc2V1ZG9FbGVtZW50ID0gbmV3UHNldWRvRWxlbWVudC5w
dHIoKTsKLSAgICAgICAgaWYgKHBzZXVkb0lkID09IEJFRk9SRSkKKyAgICAgICAgaWYgKHBzZXVk
b0lkID09IFBzZXVkb0lkOjpCZWZvcmUpCiAgICAgICAgICAgICBlbGVtZW50LnNldEJlZm9yZVBz
ZXVkb0VsZW1lbnQoV1RGTW92ZShuZXdQc2V1ZG9FbGVtZW50KSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIGVsZW1lbnQuc2V0QWZ0ZXJQc2V1ZG9FbGVtZW50KFdURk1vdmUobmV3UHNldWRv
RWxlbWVudCkpOwpAQCAtMjc0LDkgKzI3NCw5IEBAIGNvbnN0IFJlbmRlclN0eWxlKiBUcmVlUmVz
b2x2ZXI6OnBhcmVudEIKICAgICAvLyAnZGlzcGxheTogY29udGVudHMnIGRvZXNuJ3QgZ2VuZXJh
dGUgYm94ZXMuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wYXJlbnRTdGFjay5zaXplKCk7IGk7
IC0taSkgewogICAgICAgICBhdXRvJiBwYXJlbnQgPSBtX3BhcmVudFN0YWNrW2kgLSAxXTsKLSAg
ICAgICAgaWYgKHBhcmVudC5zdHlsZS5kaXNwbGF5KCkgPT0gTk9ORSkKKyAgICAgICAgaWYgKHBh
cmVudC5zdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUpCiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgaWYgKHBhcmVudC5zdHlsZS5kaXNwbGF5KCkgIT0gQ09O
VEVOVFMpCisgICAgICAgIGlmIChwYXJlbnQuc3R5bGUuZGlzcGxheSgpICE9IERpc3BsYXlUeXBl
OjpDb250ZW50cykKICAgICAgICAgICAgIHJldHVybiAmcGFyZW50LnN0eWxlOwogICAgIH0KICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTQzMyw3ICs0MzMsNyBAQCBzdGF0aWMgYm9vbCBo
YXNMb2FkaW5nU3R5bGVzaGVldChjb25zdCBTCiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IGNyZWF0ZUluaGVyaXRlZERpc3BsYXlDb250ZW50c1N0eWxlSWZOZWVkZWQoY29u
c3QgUmVuZGVyU3R5bGUmIHBhcmVudEVsZW1lbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBh
cmVudEJveFN0eWxlKQogewotICAgIGlmIChwYXJlbnRFbGVtZW50U3R5bGUuZGlzcGxheSgpICE9
IENPTlRFTlRTKQorICAgIGlmIChwYXJlbnRFbGVtZW50U3R5bGUuZGlzcGxheSgpICE9IERpc3Bs
YXlUeXBlOjpDb250ZW50cykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKHBhcmVu
dEJveFN0eWxlICYmICFwYXJlbnRCb3hTdHlsZS0+aW5oZXJpdGVkTm90RXF1YWwoJnBhcmVudEVs
ZW1lbnRTdHlsZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDY1LDcgKzQ2NSw3IEBA
IHZvaWQgVHJlZVJlc29sdmVyOjpyZXNvbHZlQ29tcG9zZWRUcmVlKCkKICAgICAgICAgaWYgKGlz
PFRleHQ+KG5vZGUpKSB7CiAgICAgICAgICAgICBhdXRvJiB0ZXh0ID0gZG93bmNhc3Q8VGV4dD4o
bm9kZSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICgodGV4dC5zdHlsZVZhbGlkaXR5
KCkgPj0gVmFsaWRpdHk6OlN1YnRyZWVBbmRSZW5kZXJlcnNJbnZhbGlkICYmIHBhcmVudC5jaGFu
Z2UgIT0gRGV0YWNoKSB8fCBwYXJlbnQuc3R5bGUuZGlzcGxheSgpID09IENPTlRFTlRTKSB7Cisg
ICAgICAgICAgICBpZiAoKHRleHQuc3R5bGVWYWxpZGl0eSgpID49IFZhbGlkaXR5OjpTdWJ0cmVl
QW5kUmVuZGVyZXJzSW52YWxpZCAmJiBwYXJlbnQuY2hhbmdlICE9IERldGFjaCkgfHwgcGFyZW50
LnN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Q29udGVudHMpIHsKICAgICAgICAgICAg
ICAgICBUZXh0VXBkYXRlIHRleHRVcGRhdGU7CiAgICAgICAgICAgICAgICAgdGV4dFVwZGF0ZS5p
bmhlcml0ZWREaXNwbGF5Q29udGVudHNTdHlsZSA9IGNyZWF0ZUluaGVyaXRlZERpc3BsYXlDb250
ZW50c1N0eWxlSWZOZWVkZWQocGFyZW50LnN0eWxlLCBwYXJlbnRCb3hTdHlsZSgpKTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNyArMTcyLDcgQEAg
cHJvdGVjdGVkOgogICAgIGNsYXNzIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQ7CiAKIHByaXZh
dGU6Ci0gICAgY29uc3QgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUoUHNldWRvSWQgPSBOT1BT
RVVETykgZmluYWw7CisgICAgY29uc3QgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUoUHNldWRv
SWQgPSBQc2V1ZG9JZDo6Tm9uZSkgZmluYWw7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJUYXJn
ZXQoKSB7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCShyZXZpc2lvbiAy
MzIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05Myw3ICs5Myw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdHRWxlbWVu
dDo6Y3IKICAgICAvLyBXZSBzdGlsbCBoYXZlIHRvIGNyZWF0ZSByZW5kZXJlcnMgZm9yIHRoZSA8
Zz4gJiA8bGluZWFyR3JhZGllbnQ+IGVsZW1lbnQsIHRob3VnaCB0aGUKICAgICAvLyBzdWJ0cmVl
IG1heSBiZSBoaWRkZW4gLSB3ZSBvbmx5IHdhbnQgdGhlIHJlc291cmNlIHJlbmRlcmVycyB0byBl
eGlzdCBzbyB0aGV5IGNhbiBiZQogICAgIC8vIHJlZmVyZW5jZWQgZnJvbSBzb21ld2hlcmUgZWxz
ZS4KLSAgICBpZiAoc3R5bGUuZGlzcGxheSgpID09IE5PTkUpCisgICAgaWYgKHN0eWxlLmRpc3Bs
YXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVy
PFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIAogICAg
IHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyPigq
dGhpcywgV1RGTW92ZShzdHlsZSkpOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwko
cmV2aXNpb24gMjMyMTIzKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTgtMDUtMjIgIFNhbSBXZWluaWcgIDxz
YW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb2Rlcm5pemUgUmVuZGVyU3R5bGVDb25zdGFudHMu
aCAtIFBhcnQgMgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg1OTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKHNlYXJjaEZv
ckxhYmVsc0JlZm9yZUVsZW1lbnQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAg
ICAgICAgKG5zVGV4dEFsaWdubWVudEZyb21SZW5kZXJTdHlsZSk6CisKIDIwMTgtMDUtMjIgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWdyZXNzaW9uKEFzeW5j
UG9saWN5RGVsZWdhdGVzKTogQm94LmFwcCBsb2dpbiBXaW5kb3cgaXMgYmxhbmsKSW5kZXg6IFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJl
c2VudGF0aW9uLm1tCShyZXZpc2lvbiAyMzIxMjMpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtNDU1
LDcgKzQ1NSw3IEBAIHN0YXRpYyBOU1N0cmluZyogc2VhcmNoRm9yTGFiZWxzQmVmb3JlRWwKICAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
c2VhcmNoZWRDZWxsQWJvdmUgPSB0cnVlOwotICAgICAgICB9IGVsc2UgaWYgKG4tPmlzVGV4dE5v
ZGUoKSAmJiBuLT5yZW5kZXJlcigpICYmIG4tPnJlbmRlcmVyKCktPnN0eWxlKCkudmlzaWJpbGl0
eSgpID09IFZJU0lCTEUpIHsKKyAgICAgICAgfSBlbHNlIGlmIChuLT5pc1RleHROb2RlKCkgJiYg
bi0+cmVuZGVyZXIoKSAmJiBuLT5yZW5kZXJlcigpLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBW
aXNpYmlsaXR5OjpWaXNpYmxlKSB7CiAgICAgICAgICAgICAvLyBGb3IgZWFjaCB0ZXh0IGNodW5r
LCBydW4gdGhlIHJlZ2V4cAogICAgICAgICAgICAgU3RyaW5nIG5vZGVTdHJpbmcgPSBuLT5ub2Rl
VmFsdWUoKTsKICAgICAgICAgICAgIC8vIGFkZCAxMDAgZm9yIHNsb3AsIHRvIG1ha2UgaXQgbW9y
ZSBsaWtlbHkgdGhhdCB3ZSdsbCBzZWFyY2ggd2hvbGUgbm9kZXMKSW5kZXg6IFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDIzMjEyMykKKysrIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpA
QCAtOTc5OSwyNSArOTc5OSwyNSBAQCBzdGF0aWMgTlNUZXh0QWxpZ25tZW50IG5zVGV4dEFsaWdu
bWVudEZyCiB7CiAgICAgTlNUZXh0QWxpZ25tZW50IHRleHRBbGlnbm1lbnQ7CiAgICAgc3dpdGNo
IChzdHlsZS0+dGV4dEFsaWduKCkpIHsKLSAgICBjYXNlIFJJR0hUOgotICAgIGNhc2UgV0VCS0lU
X1JJR0hUOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CisgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRSaWdodDoKICAgICAgICAgdGV4dEFsaWdubWVudCA9IE5TVGV4dEFsaWdu
bWVudFJpZ2h0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExFRlQ6Ci0gICAgY2FzZSBXRUJL
SVRfTEVGVDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CisgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRMZWZ0OgogICAgICAgICB0ZXh0QWxpZ25tZW50ID0gTlNUZXh0QWxpZ25t
ZW50TGVmdDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDRU5URVI6Ci0gICAgY2FzZSBXRUJL
SVRfQ0VOVEVSOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6Q2VudGVyOgorICAgIGNhc2UgVGV4
dEFsaWduTW9kZTo6V2ViS2l0Q2VudGVyOgogICAgICAgICB0ZXh0QWxpZ25tZW50ID0gTlNUZXh0
QWxpZ25tZW50Q2VudGVyOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEpVU1RJRlk6CisgICAg
Y2FzZSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5OgogICAgICAgICB0ZXh0QWxpZ25tZW50ID0gTlNU
ZXh0QWxpZ25tZW50SnVzdGlmaWVkOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRBU1RBUlQ6
CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpTdGFydDoKICAgICAgICAgdGV4dEFsaWdubWVudCA9
IHN0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBOU1RleHRBbGlnbm1lbnRMZWZ0IDog
TlNUZXh0QWxpZ25tZW50UmlnaHQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVEFFTkQ6Cisg
ICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpFbmQ6CiAgICAgICAgIHRleHRBbGlnbm1lbnQgPSBzdHls
ZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gTlNUZXh0QWxpZ25tZW50UmlnaHQgOiBOU1Rl
eHRBbGlnbm1lbnRMZWZ0OwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0Ogo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341163</attachid>
            <date>2018-05-23 20:20:09 -0700</date>
            <delta_ts>2018-05-23 22:36:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185901-20180523202004.patch</filename>
            <type>text/plain</type>
            <size>674438</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwMyBAQAorMjAxOC0wNS0yMiAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIE1vZGVybml6ZSBSZW5kZXJTdHlsZUNv
bnN0YW50cy5oIC0gUGFydCAyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODU5MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBWE9iamVjdENhY2hlOjppc05vZGVWaXNpYmxlIGNvbnN0KToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlMaXN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9sOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlz
SWdub3JlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVkaWFUaW1l
RGlzcGxheTo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQgY29uc3QpOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0RPTUhpZGRlbiBjb25zdCk6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRlZmF1bHRPYmplY3RJbmNsdXNpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNVbnZp
c2l0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6aXNWaXNpdGVkIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmlzRGF0
YVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBhbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU0FuaW1hdGlv
bnNGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjp1cGRh
dGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnQpOgorICAgICAgICAqIGFuaW1hdGlvbi9DU1NBbmlt
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQW5pbWF0aW9uOjpzeW5jUHJvcGVydGll
c1dpdGhCYWNraW5nQW5pbWF0aW9uKToKKyAgICAgICAgKiBhbmltYXRpb24vRGVjbGFyYXRpdmVB
bmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVjbGFyYXRpdmVBbmltYXRpb246Omlu
aXRpYWxpemUpOgorICAgICAgICAqIGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdFJlYWRPbmx5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0UmVhZE9ubHk6OmJhY2tpbmdBbmlt
YXRpb25Gb3JDb21wb3NpdGVkUmVuZGVyZXIgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVuZGVyVGV4dERl
Y29yYXRpb25TdHlsZUZsYWdzVG9DU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0
VG9QYWdlQnJlYWspOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvQ29sdW1uQnJlYWspOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6c3R5bGVkRWxlbWVudCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpzdHlsZWRS
ZW5kZXJlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlUmVuZGVyU3R5bGVGb3JQ
cm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpzaGFwZVByb3BlcnR5VmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eWluU3R5
bGUpOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAg
ICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBDYXB0aW9uU2lkZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQ3Vyc29yVHlwZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQ3Vyc29yVmlz
aWJpbGl0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3Bl
cmF0b3IgRGlzcGxheVR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZl
VmFsdWU6Om9wZXJhdG9yIEVtcHR5Q2VsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
cmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgTGlzdFN0eWxlUG9zaXRpb24gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIExpc3RTdHlsZVR5cGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEJyZWFr
QmV0d2VlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3Bl
cmF0b3IgQnJlYWtJbnNpZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZl
VmFsdWU6Om9wZXJhdG9yIFRleHRBbGlnbk1vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRleHRBbGlnbkxhc3QgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRleHRKdXN0aWZ5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0RGVj
b3JhdGlvblN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVl
OjpvcGVyYXRvciBUZXh0VHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
aW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBWaXNpYmlsaXR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBXaGl0ZVNwYWNlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBSdWJ5UG9zaXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRleHRF
bXBoYXNpc0ZpbGwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6
Om9wZXJhdG9yIFRleHRFbXBoYXNpc01hcmsgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFBvaW50ZXJFdmVudHMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEh5cGhlbnMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIExpbmVTbmFwIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBMaW5lQWxp
Z24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9y
IE9yZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVy
YXRvciBCb3JkZXJGaXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFs
dWU6Om9wZXJhdG9yIENvbHVtbkF4aXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJp
bWl0aXZlVmFsdWU6Om9wZXJhdG9yIENvbHVtblByb2dyZXNzaW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBDU1NCb3hUeXBlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0Wm9vbSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUNh
cHRpb25TaWRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2
ZVZhbHVlOjpvcGVyYXRvciBFQ3Vyc29yIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFRGlzcGxheSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUVtcHR5Q2Vs
bCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6
b3BlcmF0b3IgRUxpc3RTdHlsZVBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFTGlzdFN0eWxlVHlwZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3Ig
RVRleHRBbGlnbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRp
dmVWYWx1ZTo6b3BlcmF0b3IgRVRleHRUcmFuc2Zvcm0gY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVWaXNpYmlsaXR5IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRv
ciBFV2hpdGVTcGFjZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmlt
aXRpdmVWYWx1ZTo6b3BlcmF0b3IgRVBvaW50ZXJFdmVudHMgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVCb3JkZXJGaXQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTZWxlY3Rvcjo6cHNldWRvSWQpOgorICAgICAgICAqIGNzcy9DU1NUb1N0eWxl
TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkZp
bGxNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvblBs
YXlTdGF0ZSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW46CisgICAgICAgICog
Y3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRS
dWxlQ29sbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50UnVsZUNvbGxlY3Rvcjo6cnVsZU1hdGNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdCk6CisgICAgICAg
ICogY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmg6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hl
Y2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6Om1hdGNoIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6bWF0Y2hIb3N0UHNldWRvQ2xh
c3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6aGFzU2Nyb2xsYmFyUHNldWRvRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6Om1hdGNoUmVjdXJzaXZlbHkgY29u
c3QpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuaDoKKyAgICAgICAgKiBjc3MvU3R5
bGVCdWlsZGVyQ29udmVydGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRUZXh0QWxpZ24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0Q2xpcFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0U2hhcGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFja0xpc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjc3N0b0xlbmd0aENvbnZlcnNpb25EYXRhV2l0aFRl
eHRab29tRmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydFBhZ2VCcmVha0JldHdlZW4pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0UGFnZUJyZWFrSW5zaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENvbHVtbkJyZWFrQmV0d2Vlbik6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDb2x1bW5CcmVha0luc2lk
ZSk6CisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlSW1hZ2VSZXNvbHV0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbXB1dGVCYXNlU3BlY2lmaWVkRm9udFNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0VGV4dFpvb20pOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjppc1ZhbGlkRGlzcGxheVZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0RGlzcGxh
eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVEaXNw
bGF5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdl
YmtpdFRleHRFbXBoYXNpc1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJD
dXN0b206OmFwcGx5VmFsdWVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRl
ckN1c3RvbTo6ZGV0ZXJtaW5lUnVieVRleHRTaXplTXVsdGlwbGllcik6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVBbHQpOgorICAgICAgICAqIGNzcy9T
dHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxl
Rm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjplcXVpdmFsZW50QmxvY2tEaXNwbGF5KToK
KyAgICAgICAgKFdlYkNvcmU6OmRvZXNOb3RJbmhlcml0VGV4dERlY29yYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YWRqdXN0U3R5bGVGb3JJbnRlckNoYXJhY3RlclJ1
YnkpOgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0RGlzcGxheUNvbnRlbnRzU3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YWRqdXN0U1ZHRWxlbWVudFN0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxlUnVsZXNGb3JFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OmlzQ2FjaGVhYmxlSW5NYXRjaGVkUHJvcGVydGllc0NhY2hlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5TWF0Y2hlZFByb3BlcnRpZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjpQcm9wZXJ0
eTo6YXBwbHkpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJlc29sdmVyOjpTdGF0ZTo6ZWxlbWVudExpbmtTdGF0ZSBjb25zdCk6CisgICAg
ICAgICogY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0b3JDb21waWxlcjo6Y29uc3RydWN0RnJhZ21lbnRzSW50ZXJuYWwpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZVJl
cXVlc3RlZFBzZXVkb0VsZW1lbnRFcXVhbHNUb1NlbGVjdG9yUHNldWRvRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpTZWxlY3RvckNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlTWFya1BzZXVkb1N0eWxlRm9yUHNldWRvRWxlbWVudCk6CisgICAgICAgICogZG9tL0Rv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdHlsZUZvckVsZW1lbnRJ
Z25vcmluZ1BlbmRpbmdTdHlsZXNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
aXNQYWdlQm94VmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VmlzdWFs
bHlPcmRlcmVkKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojppc0ZvY3VzYWJsZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpoYXNEaXNwbGF5Q29udGVudHMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c3RvcmVEaXNwbGF5Q29udGVudHNTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OmJlZm9yZU9yQWZ0ZXJQc2V1ZG9FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OmNvbXB1dGVkU3R5bGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAg
ICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUVkaXRhYmlsaXR5RnJv
bUNvbXB1dGVkU3R5bGUpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjppc1BzZXVkb0VsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
aXNCZWZvcmVQc2V1ZG9FbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Omlz
QWZ0ZXJQc2V1ZG9FbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnBzZXVk
b0lkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmN1c3RvbVBzZXVkb0lkIGNvbnN0
KToKKyAgICAgICAgKiBkb20vUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRp
b246OnVwc3RyZWFtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpkb3duc3Ry
ZWFtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjppc0NhbmRpZGF0ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6cmVuZGVyc0luRGlmZmVyZW50UG9zaXRp
b24gY29uc3QpOgorICAgICAgICAqIGRvbS9Qb3NpdGlvbkl0ZXJhdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBvc2l0aW9uSXRlcmF0b3I6OmlzQ2FuZGlkYXRlIGNvbnN0KToKKyAgICAgICAg
KiBkb20vUHNldWRvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9FbGVtZW50
Ojpwc2V1ZG9FbGVtZW50TmFtZUZvckV2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9F
bGVtZW50OjpQc2V1ZG9FbGVtZW50KToKKyAgICAgICAgKiBkb20vVmlzaXRlZExpbmtTdGF0ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNpdGVkTGlua1N0YXRlOjpkZXRlcm1pbmVMaW5rU3Rh
dGVTbG93Q2FzZSk6CisgICAgICAgICogZG9tL1Zpc2l0ZWRMaW5rU3RhdGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RhdGU6OmRldGVybWluZUxpbmtTdGF0ZSk6CisgICAgICAg
ICogZWRpdGluZy9FZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzU3BlY2lhbEhUTUxF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmlzTm9kZVJlbmRlcmVkKToKKyAgICAgICAgKiBl
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYXNWaXNpYmxlVGV4
dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRCb3gpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlUmVwbGFjZWRFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6c2hvdWxkUmVwcmVzZW50Tm9kZU9mZnNldFpl
cm8pOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6
YWR2YW5jZSk6CisgICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZmluZFN0YXJ0T2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZEVu
ZE9mUGFyYWdyYXBoKToKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9FZGl0b3JJT1MubW06CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRp
bmdEaXJlY3Rpb24pOgorICAgICAgICAqIGh0bWwvSFRNTEFyZWFFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxBcmVhRWxlbWVudDo6aXNGb2N1c2FibGUgY29uc3QpOgorICAgICAg
ICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZUlubmVyVGV4dFN0eWxlKToKKyAgICAg
ICAgKiBodG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE9wdEdyb3VwRWxlbWVudDo6aXNGb2N1c2FibGUgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRN
TE9wdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6
OmlzRm9jdXNhYmxlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6Y3JlYXRlSW5uZXJU
ZXh0U3R5bGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGVj
dGlvblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
OjphZGp1c3RJbm5lclRleHRTdHlsZSBjb25zdCk6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1l
bnRTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmF1
dG9wbGF5UGVybWl0dGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmlzTWFpbkNvbnRlbnRG
b3JQdXJwb3Nlc09mQXV0b3BsYXkpOgorICAgICAgICAqIGh0bWwvUnVieUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UnVieUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6Cisg
ICAgICAgICogaHRtbC9SdWJ5VGV4dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVi
eVRleHRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvc2hh
ZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
Q29udHJvbElubmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmJ1aWxkT2JqZWN0Rm9yRWxlbWVudERhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnBzZXVkb0VsZW1lbnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50
OjpidWlsZE9iamVjdEZvck5vZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTGF5ZXIpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0
cmVlL0xheW91dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6aXNJbmxp
bmVCbG9ja0JveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6aXNCbG9j
a0xldmVsQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94Ojppc0lubGlu
ZUxldmVsQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94Ojppc0Jsb2Nr
Q29udGFpbmVyQm94IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbGVjdEN1cnNvcik6CisgICAgICAgICog
cGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2VhcmNoRm9yTGFiZWxz
QWJvdmVDZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZWFyY2hGb3JMYWJlbHNCZWZv
cmVFbGVtZW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OmNyZWF0ZVNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVZpZXc6OmFkanVzdFNjcm9sbFN0ZXBGb3JGaXhlZENvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0
aW9uL0FuaW1hdGlvbkJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6
cGxheVN0YXRlUGxheWluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNl
Ojp1cGRhdGVQbGF5U3RhdGUpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJh
c2UuaDoKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpibGVuZEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlBbmltYXRpb25XcmFwcGVyTWFwOjpDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXAp
OgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wb3NpdGVBbmltYXRpb246OnVwZGF0ZVRyYW5zaXRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUFuaW1hdGlvbjo6dXBkYXRlS2V5ZnJhbWVBbmltYXRp
b25zKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUFuaW1hdGlvbjo6c3VzcGVuZEFuaW1h
dGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlQW5pbWF0aW9uOjpyZXN1bWVBbmlt
YXRpb25zKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUFuaW1hdGlvbjo6YW5pbWF0ZSk6CisgICAgICAg
ICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6bm9kZVJl
c3BvbmRpbmdUb0NsaWNrRXZlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hbmltYXRpb24vQW5p
bWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbjo6QW5pbWF0aW9uKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjpBbmltYXRpb246OmNsZWFyUGxheVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlv
bjo6ZmlsbE1vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uOjpwbGF5U3Rh
dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uOjpzZXRGaWxsTW9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBbmltYXRpb246OnNldFBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpBbmltYXRpb246OmZpbGxzQmFja3dhcmRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFuaW1hdGlvbjo6ZmlsbHNGb3J3YXJkcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBbmlt
YXRpb246OmluaXRpYWxGaWxsTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb246Omlu
aXRpYWxQbGF5U3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlw
ZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpjcmVhdGVUcmFuc2Zvcm1Bbmlt
YXRpb25zRnJvbUtleWZyYW1lcyk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5k
b3cubW06CisgICAgICAgICgtW1dBS1dpbmRvdyBkdW1wVGlsZXNdKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tOgorICAgICAgICAoV2ViQ29yZTo6aXNMb29r
YWxpa2VDaGFyYWN0ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9DbGlwUGF0aE9wZXJhdGlvbi5o
OgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUJveDo6dmlzaWJsZVRvSGl0VGVzdGluZyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5n
L0lubGluZUZsb3dCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6YWRk
VG9MaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBsYWNlQm94ZXNJbkJs
b2NrRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OmFkZFRleHRC
b3hWaXN1YWxPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWlu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWludEJveERlY29yYXRpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBhaW50TWFzayk6CisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVGbG93Qm94Ojpjb21wdXRlT3ZlckFubm90YXRpb25BZGp1c3RtZW50
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OmNvbXB1dGVVbmRlckFu
bm90YXRpb25BZGp1c3RtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dC
b3g6OmNvbGxlY3RMZWFmQm94ZXNJbkxvZ2ljYWxPcmRlciBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL0lubGluZUZsb3dCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6
OklubGluZUZsb3dCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OmVtcGhhc2lzTWFya0V4aXN0c0FuZElz
QWJvdmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6Y3JlYXRlVGV4dFJ1biBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1BvaW50ZXJFdmVudHNIaXRSdWxlcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQb2ludGVyRXZlbnRzSGl0UnVsZXM6OlBvaW50ZXJFdmVudHNIaXRSdWxlcyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1BvaW50ZXJFdmVudHNIaXRSdWxlcy5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
Y29tcHV0ZVN0YXJ0UG9zaXRpb25EZWx0YUZvckNoaWxkQXZvaWRpbmdGbG9hdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjpwYWludE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6c2hv
dWxkUGFpbnRTZWxlY3Rpb25HYXBzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjphZGp1c3RMb2dpY2FsTGVmdE9mZnNldEZvckxpbmUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OmFkanVzdExvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6aXNDaGlsZEhpdFRlc3RDYW5kaWRhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNvbXB1dGVCbG9ja1ByZWZlcnJlZExvZ2ljYWxXaWR0aHMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmZpcnN0TGluZUJsb2NrIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRGaXJzdExldHRlckJsb2NrKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpnZXRGaXJzdExldHRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6Y3JlYXRlQW5vbnltb3VzQmxvY2tXaXRoU3R5bGVBbmREaXNwbGF5KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjaGlsZEJveElzVW5zcGxpdHRhYmxlRm9y
RnJhZ21lbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29u
c3RydWN0VGV4dFJ1bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0RXhj
bHVkZWRDaGlsZHJlbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRl
cmVyQW5kRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y3JlYXRlQW5v
bnltb3VzQmxvY2sgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojp3aWxsQ3JlYXRlQ29sdW1u
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dEJsb2Nr
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6YXBwbHlCZWZvcmVCcmVhayk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmFwcGx5QWZ0ZXJCcmVhayk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmFkanVzdEZvclVuc3BsaXR0YWJsZUNo
aWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6dXBkYXRlU3R5bGVzRm9y
Q29sdW1uQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojpjb21w
dXRlTG9naWNhbExvY2F0aW9uRm9yRmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2tGbG93Ojpsb3dlc3RJbml0aWFsTGV0dGVyTG9naWNhbEJvdHRvbSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmFkanVzdEZvckJvcmRlckZpdCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmZpdEJvcmRlclRvTGluZXNJZk5lZWRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxpbmVBdEluZGV4IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bGluZUNvdW50IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OmdldEhlaWdodEZvckxpbmVDb3VudCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmNsZWFyVHJ1bmNhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9ja0Zsb3c6OmZpbmRDbG9zZXN0VGV4dEF0QWJzb2x1dGVQb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxpbmVDb3VudEZvclRleHRBdXRvc2l6aW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6c2V0Q29tcHV0ZWRDb2x1bW5D
b3VudEFuZFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6dXBkYXRl
Q29sdW1uUHJvZ3Jlc3Npb25Gcm9tU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2tGbG93Ojppc1RvcExheW91dE92ZXJmbG93QWxsb3dlZCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmlzTGVmdExheW91dE92ZXJmbG93QWxsb3dlZCBjb25zdCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2tGbG93Ojpjb25zdHJ1Y3RMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
Rmxvdzo6dGV4dEFsaWdubWVudEZvckxpbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2tGbG93Ojp1cGRhdGVMb2dpY2FsV2lkdGhGb3JBbGlnbm1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25z
Rm9yTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpleHBhbnNpb25CZWhhdmlvckZvcklubGluZVRl
eHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5l
RGlyZWN0aW9uUG9zaXRpb25zRm9yU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9ja0Zsb3c6OmxheW91dFJ1bnNBbmRGbG9hdHNJblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrRmxvdzo6Y2hlY2tGbG9hdEluQ2xlYW5MaW5lKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrRmxvdzo6ZGVsZXRlRWxsaXBzaXNMaW5lQm94ZXMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpjaGVja0xpbmVzRm9yVGV4dE92ZXJmbG93KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6c3RhcnRBbGlnbmVkT2Zmc2V0Rm9yTGlu
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6Omhhc1ZlcnRpY2FsU2Nyb2xsYmFyV2l0aEF1dG9CZWhhdmlvciBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Omhhc0hvcml6b250YWxTY3JvbGxiYXJXaXRo
QXV0b0JlaGF2aW9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmlzQ2FuZGlkYXRlRm9yT3Bh
cXVlbmVzc1Rlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludE1hc2spOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludENsaXBwaW5nTWFzayk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6OnBvc2l0aW9uTGluZUJveCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEluRnJhZ21lbnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9u
TWFyZ2lucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnNraXBDb250YWlu
aW5nQmxvY2tGb3JQZXJjZW50SGVpZ2h0Q2FsY3VsYXRpb24gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94Ojpwb3NpdGlvbkZvclBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6aXNVbnNwbGl0dGFibGVGb3JQYWdpbmF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94TW9kZWxPYmplY3Q6OmxvY2FsQ2FyZXRSZWN0Rm9yRW1wdHlFbGVtZW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQ291bnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwbGFuQ291bnRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJDb3VudGVyOjpvcmlnaW5hbFRleHQgY29uc3QpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y2hpbGREb2VzTm90QWZmZWN0V2lkdGhPckZsZXhpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRIb3Jpem9udGFsQm94
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6bGF5b3V0
VmVydGljYWxCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRldGFpbHNNYXJrZXI6OnBhaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJFbGVtZW50OjpjcmVhdGVGb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6
Y29tcHV0ZUZpcnN0TGluZVN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVs
ZW1lbnQ6OnByb3BhZ2F0ZVN0eWxlVG9Bbm9ueW1vdXNDaGlsZHJlbik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJFbGVtZW50OjpzdHlsZVdpbGxDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJFbGVtZW50Ojp3aWxsQmVSZW1vdmVkRnJvbVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRWxlbWVudDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRWxlbWVudDo6aXNWaXNpYmxlSW5Eb2N1bWVudFJlY3QgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6Z2V0Q2FjaGVkUHNldWRvU3R5bGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6Z2V0VW5jYWNoZWRQc2V1ZG9TdHlsZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzZWxlY3Rpb25Qc2V1ZG9T
dHlsZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnZpc2libGVUb0hpdFRlc3RpbmcgY29uc3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cGFpbnRPYmplY3QpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUZ1bGxTY3JlZW5TdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZUVtcHR5VHJhY2tzRm9yQXV0
b1JlcGVhdCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpyZXBhaW50T3JNYXJrRm9yTGF5b3V0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlcklubGluZTo6d2lsbEJlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVN0
eWxlT2ZBbm9ueW1vdXNCbG9ja0NvbnRpbnVhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW5saW5lOjp1cGRhdGVBbHdheXNDcmVhdGVMaW5lQm94ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW5saW5lOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmFkZEFubm90YXRlZFJlZ2lvbnMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6UmVuZGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVw
ZGF0ZURlc2NlbmRhbnREZXBlbmRlbnRGbGFncyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6Y3JlYXRlU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlUmVxdWlyZXNT
Y3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVEZWZpbmVzQXV0b21hdGljU2Nyb2xs
YmFyKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVSZWZlcmVuY2VCb3gpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyBjb25zdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUFmdGVyRGVzY2VuZGFudHMpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2Ny
b2xsYmFySGFzRGlzcGxheU5vbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUGx1Z2luIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvckZyYW1l
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYWludE9iamVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjppdGVtT2Zmc2V0Rm9yQWxpZ25tZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RC
b3g6OnBhaW50SXRlbUZvcmVncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJv
eDo6cGFpbnRJdGVtQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94
OjpjcmVhdGVTY3JvbGxiYXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0SXRlbTo6Y29tcHV0ZU1hcmtlclN0eWxl
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjplZmZlY3RpdmVMaXN0TWFya2VyVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpsaXN0TWFya2VyU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6Omxpc3RNYXJrZXJUZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnBhaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnVwZGF0ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGlzdE1hcmtlcjo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6dXBkYXRlTWFyZ2lucyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpzdWZmaXggY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6aXNJbnNpZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGlzdE1hcmtlcjo6Z2V0UmVsYXRpdmVNYXJrZXJSZWN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJN
ZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZWRpYVZv
bHVtZVNsaWRlckNvbnRhaW5lcjo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRl
eHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmxheW91dCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0OjphZGp1
c3RJbm5lclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmlmKToKKyAgICAgICAgKFJlbmRlck1l
bnVMaXN0OjppdGVtU3R5bGUgY29uc3QpOgorICAgICAgICAoUmVuZGVyTWVudUxpc3Q6Om1lbnVT
dHlsZSBjb25zdCk6CisgICAgICAgIChSZW5kZXJNZW51TGlzdDo6Y3JlYXRlU2Nyb2xsYmFyKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xk
ZXI6OmNyZWF0ZUFub255bW91cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFkZEFubm90YXRlZFJlZ2lvbnMp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6aXNBbm9ueW1vdXNCbG9jayBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmlzQmVmb3JlQ29udGVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmlzQWZ0ZXJDb250ZW50IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6
OnNob3VsZFBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjbGlwcGVk
T3ZlcmZsb3dSZWN0Rm9yUmVwYWludCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clJ1YnlCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJ1YnlCYXNlOjp0ZXh0QWxp
Z25tZW50Rm9yTGluZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNl
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyUnVieVJ1bjo6Y3JlYXRlUnVieUJhc2UgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyUnVieVJ1bjo6c3RhdGljQ3JlYXRlUnVieVJ1bik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJSdWJ5UnVuOjpsYXlvdXRCbG9jayk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclJ1YnlUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJ1YnlUZXh0Ojp0ZXh0
QWxpZ25tZW50Rm9yTGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSdWJ5VGV4
dDo6YWRqdXN0SW5saW5lRGlyZWN0aW9uTGluZUJvdW5kcyBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclJ1YnlUZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9s
bGJhci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwc2V1ZG9Gb3JTY3JvbGxiYXJQYXJ0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhcjo6dXBkYXRlU2Nyb2xsYmFyUGFydCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNlYXJjaEZpZWxkOjp1cGRhdGVDYW5jZWxCdXR0b25WaXNpYmlsaXR5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJjaEZpZWxkOjp2aXNpYmlsaXR5Rm9yQ2Fu
Y2VsQnV0dG9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJjaEZpZWxkOjpt
ZW51U3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2VhcmNoRmllbGQ6OmNy
ZWF0ZVNjcm9sbGJhcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlOjp3aWxsSW5zZXJ0VGFibGVTZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlOjpsYXlvdXRDYXB0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
YWJsZTo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpwYWludE9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6YWRqdXN0Qm9yZGVyQm94UmVjdEZv
clBhaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpwYWludE1hc2spOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OnJlY2FsY1NlY3Rpb25zIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpjcmVhdGVUYWJsZVdpdGhTdHlsZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUYWJsZUNlbGw6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRhYmxlQ2VsbDo6cGFpbnRDb2xsYXBzZWRCb3JkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRhYmxlQ2VsbDo6cGFpbnRCYWNrZ3JvdW5kc0JlaGluZENlbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGFibGVDZWxsOjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6cGFpbnRNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRhYmxlQ2VsbDo6Y3JlYXRlVGFibGVDZWxsV2l0aFN0eWxlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVD
b2w6OnVwZGF0ZUZyb21FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ29s
Ojppc0NoaWxkQWxsb3dlZCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q29sLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRhYmxlUm93OjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUYWJsZVJvdzo6cGFpbnRPdXRsaW5lRm9yUm93SWZOZWVkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGFibGVSb3c6OmNyZWF0ZVRhYmxlUm93V2l0aFN0eWxlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6YWRkQ2VsbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUYWJsZVNlY3Rpb246OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2Vj
dGlvbjo6Y3JlYXRlVGFibGVTZWN0aW9uV2l0aFN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpzdHlsZURpZENo
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9n
aWNhbFdpZHRocyk6CisgICAgICAgIChXZWJDb3JlOjphcHBseVRleHRUcmFuc2Zvcm0pOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGV4dEZyYWdtZW50OjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUZXh0RnJhZ21lbnQ6OmJsb2NrRm9yQWNjb21wYW55aW5nRmlyc3RMZXR0ZXIpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjphZGp1c3RNZW51TGlz
dFN0eWxlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpyZW5kZXJlck9ic2N1cmVzQmFja2dyb3VuZCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6
OnNldFdpZGdldCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnN0eWxlRGlkQ2hh
bmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSb290SW5saW5lQm94OjpwYWludEVsbGlwc2lzQm94IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OmxpbmVTbmFwQWRqdXN0bWVudCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjpsaW5lU2VsZWN0aW9uR2FwKToKKyAgICAgICAg
KFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OmNvbXB1dGVDYXJldFJlY3QgY29uc3QpOgorICAgICAg
ICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNp
bXBsZUxpbmVMYXlvdXQ6OmNhblVzZUZvckZvbnRBbmRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNpbXBsZUxpbmVMYXlvdXQ6OmNhblVzZUZvclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNp
bXBsZUxpbmVMYXlvdXQ6OmNvbXB1dGVMaW5lTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGVMaW5lTGF5b3V0Ojp1cGRhdGVMaW5lQ29uc3RyYWlucyk6CisgICAgICAgIChXZWJDb3JlOjpT
aW1wbGVMaW5lTGF5b3V0OjpjcmVhdGVMaW5lUnVucyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGVMaW5lTGF5b3V0Ojp0ZXh0QWxpZ25Gb3JMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBs
ZUxpbmVMYXlvdXQ6OmNsb3NlTGluZUVuZGluZ0FuZEFkanVzdFJ1bnMpOgorICAgICAgICAqIHJl
bmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNpbXBsZUxpbmVMYXlvdXQ6OnBhaW50Rmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVM
aW5lTGF5b3V0OjpoaXRUZXN0Rmxvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVM
YXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVM
aW5lTGF5b3V0OjpUZXh0RnJhZ21lbnRJdGVyYXRvcjo6U3R5bGU6OlN0eWxlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp0ZXh0RGVjb3JhdGlvblN0eWxlVG9TdHJva2VTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50VGV4dERlY29yYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6Y29sbGVjdFN0eWxlc0ZvclJlbmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcv
VGV4dERlY29yYXRpb25QYWludGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvQnJlYWtp
bmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OkJyZWFraW5n
Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OmNsZWFyTGluZUJy
ZWFrSWZGaXRzT25MaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkJyZWFraW5nQ29udGV4dDo6aGFu
ZGxlQlIpOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0OjpoYW5kbGVPdXRPZkZs
b3dQb3NpdGlvbmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkJyZWFraW5nQ29udGV4dDo6aGFuZGxl
VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OmNhbkJyZWFrQXRUaGlz
UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0OjpoYW5kbGVFbmRP
ZkxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9saW5lL0xpbmVJbmxpbmVIZWFkZXJzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpzaG91bGRDb2xsYXBzZVdoaXRlU3BhY2UpOgorICAgICAgICAqIHJl
bmRlcmluZy9saW5lL0xpbmVXaWR0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXdGbG9hdFNo
cmlua3NMaW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL01hdGhPcGVyYXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNYXRoT3BlcmF0b3I6OnBhaW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTEZyYWN0aW9uOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxNYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE1h
dGg6OmxheW91dEJsb2NrKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TE1lbmNsb3NlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE1lbmNsb3NlOjpw
YWludCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJvb3Q6OnBhaW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTFRva2VuOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9C
b3hTaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlUm91bmRlZFJlY3RGb3JCb3hT
aGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnJlZmVyZW5jZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFw
ZU91dHNpZGVJbmZvOjpzZXRSZWZlcmVuY2VCb3hMb2dpY2FsU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFwZU91dHNpZGVJbmZvOjpsb2dpY2FsVG9wT2Zmc2V0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXBlT3V0c2lkZUluZm86OmxvZ2ljYWxMZWZ0T2Zmc2V0IGNvbnN0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQ291bnRlckNvbnRlbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvdW50ZXJDb250ZW50OjpDb3VudGVyQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpD
b3VudGVyQ29udGVudDo6bGlzdFN0eWxlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNyZWF0
ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmNyZWF0ZVN0eWxlSW5oZXJpdGluZ0Zyb21Qc2V1ZG9TdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6Omhhc1VuaXF1ZVBzZXVkb1N0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjpnZXRDYWNoZWRQc2V1ZG9TdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6YWRkQ2FjaGVkUHNldWRvU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5b3V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OnJlcXVpcmVzUGFpbnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omh5
cGhlblN0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6dGV4dEVt
cGhhc2lzTWFya1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
dmlzaXRlZERlcGVuZGVudENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjp0ZXh0RW1waGFzaXNNYXJrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjpzZXRDb2x1bW5TdHlsZXNGcm9tUGFnaW5hdGlvbk1vZGUpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OnNldFN0eWxlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0UlRMT3Jk
ZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmRpc3BsYXkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnZpc2liaWxpdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnRleHRBbGlnbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6dGV4dFRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6d2hpdGVTcGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6ZW1wdHlDZWxscyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6Y2FwdGlvblNpZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omxp
c3RTdHlsZVR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omxpc3RT
dHlsZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjdXJz
b3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omluc2lkZUxpbmsgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmJvcmRlckZpdCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6cG9pbnRlckV2ZW50cyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0RGlzcGxheSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6c2V0T3JpZ2luYWxEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjpzZXRWaXNpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxl
OjpzZXRUZXh0QWxpZ24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRleHRU
cmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRleHREZWNvcmF0
aW9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRleHREZWNvcmF0
aW9uU2tpcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0VGV4dFVuZGVybGlu
ZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXREaXJlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRleHRab29tKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRXaGl0ZVNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjpzZXRFbXB0eUNlbGxzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjpzZXRDYXB0aW9uU2lkZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0
TGlzdFN0eWxlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0TGlzdFN0
eWxlUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0Q3Vyc29yVmlzaWJpbGl0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0SW5zaWRlTGluayk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0SHlwaGVucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6c2V0Qm9yZGVyRml0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpz
ZXRDb2x1bW5BeGlzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRDb2x1bW5Q
cm9ncmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0VGV4dEVtcGhh
c2lzRmlsbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0VGV4dEVtcGhhc2lz
TWFyayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0UnVieVBvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRCcmVha0JlZm9yZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0QnJlYWtBZnRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6c2V0QnJlYWtJbnNpZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OnNldEhhbmdpbmdQdW5jdHVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6c2V0TGluZVNuYXApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldExp
bmVBbGlnbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0UG9pbnRlckV2ZW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbERpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxCcmVha0JldHdlZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxCcmVha0luc2lkZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbENhcHRpb25TaWRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjppbml0aWFsQ29sdW1uQXhpcyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6aW5pdGlhbENvbHVtblByb2dyZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjppbml0aWFsRW1wdHlDZWxscyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6aW5pdGlhbExpc3RTdHlsZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjppbml0aWFsTGlzdFN0eWxlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6aW5pdGlhbFRleHRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OmluaXRpYWxWaXNpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxl
Ojppbml0aWFsV2hpdGVTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5p
dGlhbEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRB
bGlnbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHREZWNvcmF0
aW9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0Wm9v
bSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbEh5cGhlbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJGaXQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxSVExPcmRlcmluZyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFBvaW50ZXJFdmVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RW1waGFzaXNDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRFbXBoYXNpc0ZpbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RW1waGFzaXNNYXJrKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsUnVieVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VSZXNvbHV0aW9uU291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VSZXNvbHV0aW9uU25hcCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRBbGlnbkxhc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0SnVzdGlmeSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbEN1cnNvclZpc2liaWxpdHkpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0b1JlcGVhdFR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lU25hcCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVBbGlnbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6Omhhc0FueVB1YmxpY1BzZXVkb1N0eWxlcyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6b3JpZ2luYWxEaXNwbGF5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6
aGFzUHNldWRvU3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Ok5v
bkluaGVyaXRlZEZsYWdzOjpzZXRIYXNQc2V1ZG9TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OnNldEhhc1BzZXVkb1N0eWxlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YXV0b1dyYXApOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OnByZXNlcnZlTmV3bGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6Y29sbGFwc2VXaGl0ZVNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxl
OjpicmVha09ubHlBZnRlcldoaXRlU3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU3R5bGU6Omhhc0lubGluZUNvbHVtbkF4aXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmlzRGlzcGxheVJlZ2lvblR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU3R5bGU6OmlzRGlzcGxheVJlcGxhY2VkVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6aXNEaXNwbGF5SW5saW5lVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6aXNEaXNwbGF5RmxleGlibGVCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU3R5bGU6OmlzRGlzcGxheUdyaWRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmlzRGlzcGxheUZsZXhpYmxlT3JHcmlkQm94KToKKyAgICAgICAgKFdlYkNvcmU6OnBzZXVk
b0VsZW1lbnRSZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGVDb25zdGFudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6Cisg
ICAgICAgIChXZWJDb3JlOjphbHdheXNQYWdlQnJlYWspOgorICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6UHNldWRvSWRT
ZXQ6OmhhcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9JZFNldDo6YWRkKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZU11
bHRpQ29sRGF0YTo6U3R5bGVNdWx0aUNvbERhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFy
ZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmg6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHQ29udGFpbmVyOjpwYWludCk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJ
bWFnZTo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6Om5vZGVBdEZs
b2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmVUZXh0OjpzdHlsZURpZENoYW5n
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6Y2hlY2tJbnRlcnNlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmNoZWNrRW5jbG9zdXJl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnJlcXVlc3RQYWludGluZ1Jlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OnBhdGhPbmx5Q2xpcHBpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpjYWxjdWxhdGVD
bGlwQ29udGVudFJlcGFpbnRSZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlTWFza2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNl
TWFza2VyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmNhbGN1bGF0ZU1hc2tDb250ZW50UmVwYWludFJlY3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdSb290OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCBjb25zdCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdTaGFwZTo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHU2hhcGU6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0Ojpub2RlQXRG
bG9hdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb25CYWNr
Z3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OmNvbnN0cnVjdFRleHRSdW4gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6Om5vZGVBdFBvaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUmVuZGVyU3VwcG9ydDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwcm9jZXNzUmVuZGVyU1ZHSW5saW5lVGV4dCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjptZWFzdXJlVGV4dFJlbmRlcmVyKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6QmxvY2s6OmRldGFjaCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyRmlyc3RMZXR0ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVGb3JGaXJzdExldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6Rmlyc3RMZXR0ZXI6OnVwZGF0ZUFmdGVyRGVzY2VuZGFu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6OkZpcnN0TGV0dGVyOjp1
cGRhdGVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6Rmlyc3RM
ZXR0ZXI6OmNyZWF0ZVJlbmRlcmVycyk6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1Jl
bmRlclRyZWVCdWlsZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVC
dWlsZGVyOjpJbmxpbmU6OmF0dGFjaElnbm9yaW5nQ29udGludWF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpJbmxpbmU6Om5ld0NoaWxkSXNJbmxpbmUpOgorICAg
ICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlckxpc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6Okxpc3Q6OnVwZGF0ZUl0ZW1NYXJrZXIp
OgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlck1hdGhNTC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6TWF0aE1MOjpjcmVhdGVN
YXRoTUxPcGVyYXRvcik6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVC
dWlsZGVyTXVsdGlDb2x1bW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxk
ZXI6Ok11bHRpQ29sdW1uOjpjcmVhdGVGcmFnbWVudGVkRmxvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUcmVlQnVpbGRlcjo6TXVsdGlDb2x1bW46OnByb2Nlc3NQb3NzaWJsZVNwYW5uZXJE
ZXNjZW5kYW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxk
ZXJSdWJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzQW5vbnltb3VzUnVieUlubGluZUJsb2Nr
KToKKyAgICAgICAgKFdlYkNvcmU6OmlzUnVieUJlZm9yZUJsb2NrKToKKyAgICAgICAgKFdlYkNv
cmU6OmlzUnVieUFmdGVyQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQW5vbnltb3Vz
UnVieUlubGluZUJsb2NrKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJl
ZUJ1aWxkZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6
VGFibGU6OmZpbmRPckNyZWF0ZVBhcmVudEZvckNoaWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcv
dXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VHJlZVVwZGF0ZXI6OnVwZGF0ZUJlZm9yZURlc2NlbmRhbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVBZnRlckRlc2NlbmRhbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6ZWxlbWVudEltcGxpY2l0VmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpDaGVja0ZvclZpc2liaWxpdHlDaGFuZ2U6OkNoZWNrRm9yVmlzaWJpbGl0eUNoYW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDaGVja0ZvclZpc2liaWxpdHlDaGFuZ2U6On5DaGVja0ZvclZpc2li
aWxpdHlDaGFuZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBk
YXRlckdlbmVyYXRlZENvbnRlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVw
ZGF0ZXI6OkdlbmVyYXRlZENvbnRlbnQ6OnVwZGF0ZVBzZXVkb0VsZW1lbnQpOgorICAgICAgICAq
IHN0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2aXN1YWxP
dmVyZmxvd0ZvckRlY29yYXRpb25zKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZUNoYW5nZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6ZGV0ZXJtaW5lQ2hhbmdlKToKKyAgICAgICAgKiBz
dHlsZS9TdHlsZUZvbnRTaXplRnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
Ojpjb21wdXRlZEZvbnRTaXplRnJvbVNwZWNpZmllZFNpemUpOgorICAgICAgICAqIHN0eWxlL1N0
eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpyZXNv
bHZlRm9yRG9jdW1lbnQpOgorICAgICAgICAqIHN0eWxlL1N0eWxlU2hhcmluZ1Jlc29sdmVyLmNw
cDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6YWZmZWN0c1JlbmRlcmVkU3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlUHNldWRvU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6cGFyZW50Qm94U3R5bGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OmNyZWF0ZUluaGVyaXRlZERpc3BsYXlDb250ZW50c1N0eWxlSWZOZWVk
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6cmVzb2x2ZUNvbXBv
c2VkVHJlZSk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
R0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR0VsZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcik6CisKIDIwMTgtMDUtMjMgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBh
cHBsZS5jb20+CiAKICAgICAgICAgRXhwb3NlICR2bSBpZiB3aW5kb3cuaW50ZXJuYWxzIGlzIGV4
cG9zZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg2LDcgKzI4Niw3IEBAIGJv
b2wgQVhPYmplY3RDYWNoZTo6aXNOb2RlVmlzaWJsZShOb2RlKiAKICAgICBpZiAoIXJlbmRlcmVy
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0g
cmVuZGVyZXItPnN0eWxlKCk7Ci0gICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBOT05FIHx8IHN0
eWxlLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0g
RGlzcGxheVR5cGU6Ok5vbmUgfHwgc3R5bGUudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZp
c2libGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyBXZSBhbHNvIG5lZWQg
dG8gY29uc2lkZXIgYXJpYSBoaWRkZW4gc3RhdHVzLgpJbmRleDogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHAJKHJldmlzaW9uIDIzMjE0
MykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNyArMTYzLDcgQEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNj
ZXNzaWJpbGl0eUxpc3Q6OmRldAogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBSZW5kZXJl
ZCBsaXN0IGl0ZW1zIGFsd2F5cyBjb3VudC4KICAgICAgICAgICAgIGlmIChsaXN0SXRlbS0+aXNM
aXN0SXRlbSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFoYXNWaXNpYmxlTWFya2VycyAmJiAo
bGlzdEl0ZW0tPnN0eWxlKCkubGlzdFN0eWxlVHlwZSgpICE9IE5vbmVMaXN0U3R5bGUgfHwgbGlz
dEl0ZW0tPnN0eWxlKCkubGlzdFN0eWxlSW1hZ2UoKSB8fCBjaGlsZEhhc1BzZXVkb1Zpc2libGVM
aXN0SXRlbU1hcmtlcnMobGlzdEl0ZW0pKSkKKyAgICAgICAgICAgICAgICBpZiAoIWhhc1Zpc2li
bGVNYXJrZXJzICYmIChsaXN0SXRlbS0+c3R5bGUoKS5saXN0U3R5bGVUeXBlKCkgIT0gTGlzdFN0
eWxlVHlwZTo6Tm9uZSB8fCBsaXN0SXRlbS0+c3R5bGUoKS5saXN0U3R5bGVJbWFnZSgpIHx8IGNo
aWxkSGFzUHNldWRvVmlzaWJsZUxpc3RJdGVtTWFya2VycyhsaXN0SXRlbSkpKQogICAgICAgICAg
ICAgICAgICAgICBoYXNWaXNpYmxlTWFya2VycyA9IHRydWU7CiAgICAgICAgICAgICAgICAgbGlz
dEl0ZW1Db3VudCsrOwogICAgICAgICAgICAgfSBlbHNlIGlmIChsaXN0SXRlbS0+bm9kZSgpICYm
IGxpc3RJdGVtLT5ub2RlKCktPmhhc1RhZ05hbWUobGlUYWcpKSB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNv
bnRyb2xzLmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3
Niw3ICsxNzYsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbDo6aGVscFRlCiAK
IGJvb2wgQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbDo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQoKSBjb25zdAogewotICAgIGlmICghbV9yZW5kZXJlciB8fCBtX3JlbmRlcmVyLT5zdHls
ZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8IGNvbnRyb2xUeXBlKCkgPT0gTWVkaWFUaW1l
bGluZUNvbnRhaW5lcikKKyAgICBpZiAoIW1fcmVuZGVyZXIgfHwgbV9yZW5kZXJlci0+c3R5bGUo
KS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSB8fCBjb250cm9sVHlwZSgpID09
IE1lZGlhVGltZWxpbmVDb250YWluZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0
dXJuIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCeURlZmF1bHQoKTsKQEAgLTMwMiw3ICszMDIsNyBA
QCBSZWY8QWNjZXNzaWJpbGl0eU9iamVjdD4gQWNjZXNzaWJpbGl0eU1lCiAKIGJvb2wgQWNjZXNz
aWJpbGl0eU1lZGlhVGltZURpc3BsYXk6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkg
Y29uc3QKIHsKLSAgICBpZiAoIW1fcmVuZGVyZXIgfHwgbV9yZW5kZXJlci0+c3R5bGUoKS52aXNp
YmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAoIW1fcmVuZGVyZXIgfHwgbV9yZW5kZXJlci0+
c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICBpZiAoIW1fcmVuZGVyZXItPnN0eWxlKCkud2lkdGgoKS52YWx1ZSgp
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjc1
LDcgKzMyNzUsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRE9NSGlkZGVuKCkgCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9
IHJlbmRlcmVyLT5zdHlsZSgpOwotICAgIHJldHVybiBzdHlsZS5kaXNwbGF5KCkgPT0gTk9ORSB8
fCBzdHlsZS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRTsKKyAgICByZXR1cm4gc3R5bGUuZGlzcGxh
eSgpID09IERpc3BsYXlUeXBlOjpOb25lIHx8IHN0eWxlLnZpc2liaWxpdHkoKSAhPSBWaXNpYmls
aXR5OjpWaXNpYmxlOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzU2hvd2luZ1Zh
bGlkYXRpb25NZXNzYWdlKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNp
b24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0NCw3ICsxMTQ0LDcgQEAgQWNj
ZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBBY2Nlc3NpYmlsaQogICAgIGlmICghbV9yZW5kZXJl
cikKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Oklnbm9yZU9i
amVjdDsKIAotICAgIGlmIChtX3JlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJ
QkxFKSB7CisgICAgaWYgKG1fcmVuZGVyZXItPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2li
aWxpdHk6OlZpc2libGUpIHsKICAgICAgICAgLy8gYXJpYS1oaWRkZW4gaXMgbWVhbnQgdG8gb3Zl
cnJpZGUgdmlzaWJpbGl0eSBhcyB0aGUgZGV0ZXJtaW5hbnQgaW4gQVggaGllcmFyY2h5IGluY2x1
c2lvbi4KICAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGdldEF0dHJp
YnV0ZShhcmlhX2hpZGRlbkF0dHIpLCAiZmFsc2UiKSkKICAgICAgICAgICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpEZWZhdWx0QmVoYXZpb3I7CkBAIC0xNTk2LDcgKzE1
OTYsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzVW52aXNpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgLy8gRklYTUU6IElzIGl0IGEgcHJpdmFjeSB2aW9sYXRpb24g
dG8gZXhwb3NlIHVudmlzaXRlZCBpbmZvcm1hdGlvbiB0byBhY2Nlc3NpYmlsaXR5IEFQSXM/Ci0g
ICAgcmV0dXJuIG1fcmVuZGVyZXItPnN0eWxlKCkuaXNMaW5rKCkgJiYgbV9yZW5kZXJlci0+c3R5
bGUoKS5pbnNpZGVMaW5rKCkgPT0gSW5zaWRlVW52aXNpdGVkTGluazsKKyAgICByZXR1cm4gbV9y
ZW5kZXJlci0+c3R5bGUoKS5pc0xpbmsoKSAmJiBtX3JlbmRlcmVyLT5zdHlsZSgpLmluc2lkZUxp
bmsoKSA9PSBJbnNpZGVMaW5rOjpJbnNpZGVVbnZpc2l0ZWQ7CiB9CiAKIGJvb2wgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6aXNWaXNpdGVkKCkgY29uc3QKQEAgLTE2MDUsNyArMTYwNSw3IEBA
IGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNWaXNpdGUKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgLy8gRklYTUU6IElzIGl0IGEgcHJpdmFjeSB2aW9sYXRpb24gdG8gZXhw
b3NlIHZpc2l0ZWQgaW5mb3JtYXRpb24gdG8gYWNjZXNzaWJpbGl0eSBBUElzPwotICAgIHJldHVy
biBtX3JlbmRlcmVyLT5zdHlsZSgpLmlzTGluaygpICYmIG1fcmVuZGVyZXItPnN0eWxlKCkuaW5z
aWRlTGluaygpID09IEluc2lkZVZpc2l0ZWRMaW5rOworICAgIHJldHVybiBtX3JlbmRlcmVyLT5z
dHlsZSgpLmlzTGluaygpICYmIG1fcmVuZGVyZXItPnN0eWxlKCkuaW5zaWRlTGluaygpID09IElu
c2lkZUxpbms6Okluc2lkZVZpc2l0ZWQ7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6c2V0RWxlbWVudEF0dHJpYnV0ZVZhbHVlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUsIGJvb2wgdmFsdWUpCkBAIC0xNzgzLDcgKzE3ODMsNyBAQCB2b2lkIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OnNldFZhbHVlCiAgICAgICAgICAgICBSZW5kZXJFbGVtZW50JiBy
ZW5kZXJFbGVtZW50ID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIpOwogICAgICAg
ICAgICAgYXV0byBzdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKICAgICAgICAgICAgIHN0
eWxlLmluaGVyaXRGcm9tKHJlbmRlckVsZW1lbnQuc3R5bGUoKSk7Ci0gICAgICAgICAgICBzdHls
ZS5zZXRXaGl0ZVNwYWNlKFBSRSk7CisgICAgICAgICAgICBzdHlsZS5zZXRXaGl0ZVNwYWNlKFdo
aXRlU3BhY2U6OlByZSk7CiAgICAgICAgICAgICByZW5kZXJFbGVtZW50LnNldFN0eWxlSW50ZXJu
YWwoV1RGTW92ZShzdHlsZSkpOwogICAgICAgICB9CiAgICAgICAgIGRvd25jYXN0PEhUTUxFbGVt
ZW50PihlbGVtZW50KS5zZXRJbm5lclRleHQoc3RyaW5nKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAJKHJldmlzaW9u
IDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYyLDcgKzI2Miw3IEBAIGJvb2wgQWNjZXNzaWJp
bGl0eVRhYmxlOjppc0RhdGFUYWJsZSgpIGMKICAgICAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxl
JiByZW5kZXJTdHlsZSA9IGNlbGwtPnN0eWxlKCk7CiAKICAgICAgICAgICAgIC8vIElmIHRoZSBl
bXB0eS1jZWxscyBzdHlsZSBpcyBzZXQsIHdlJ2xsIGNhbGwgaXQgYSBkYXRhIHRhYmxlLgotICAg
ICAgICAgICAgaWYgKHJlbmRlclN0eWxlLmVtcHR5Q2VsbHMoKSA9PSBISURFKQorICAgICAgICAg
ICAgaWYgKHJlbmRlclN0eWxlLmVtcHR5Q2VsbHMoKSA9PSBFbXB0eUNlbGw6OkhpZGUpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgICAgIC8vIElmIGEgY2VsbCBoYXMg
bWF0Y2hpbmcgYm9yZGVyZWQgc2lkZXMsIGNhbGwgaXQgYSAoZnVsbHkpIGJvcmRlcmVkIGNlbGwu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxl
SW50ZXJmYWNlVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCShyZXZpc2lvbiAyMzIx
NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxl
SW50ZXJmYWNlVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MywyMiArMTQzLDIyIEBAIHN0
YXRpYyBBdGtBdHRyaWJ1dGVTZXQqIGdldEF0dHJpYnV0ZVNldEYKICAgICB9CiAKICAgICBzd2l0
Y2ggKHN0eWxlLT50ZXh0QWxpZ24oKSkgewotICAgIGNhc2UgVEFTVEFSVDoKLSAgICBjYXNlIFRB
RU5EOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CisgICAgY2FzZSBUZXh0QWxpZ25N
b2RlOjpFbmQ6CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTEVGVDoKLSAgICBjYXNlIFdFQktJ
VF9MRUZUOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKKyAgICBjYXNlIFRleHRBbGln
bk1vZGU6OldlYktpdExlZnQ6CiAgICAgICAgIHJlc3VsdCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0
KHJlc3VsdCwgYXRrX3RleHRfYXR0cmlidXRlX2dldF9uYW1lKEFUS19URVhUX0FUVFJfSlVTVElG
SUNBVElPTiksICJsZWZ0Iik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUklHSFQ6Ci0gICAg
Y2FzZSBXRUJLSVRfUklHSFQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpSaWdodDoKKyAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0OgogICAgICAgICByZXN1bHQgPSBhZGRUb0F0
a0F0dHJpYnV0ZVNldChyZXN1bHQsIGF0a190ZXh0X2F0dHJpYnV0ZV9nZXRfbmFtZShBVEtfVEVY
VF9BVFRSX0pVU1RJRklDQVRJT04pLCAicmlnaHQiKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBDRU5URVI6Ci0gICAgY2FzZSBXRUJLSVRfQ0VOVEVSOgorICAgIGNhc2UgVGV4dEFsaWduTW9k
ZTo6Q2VudGVyOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0Q2VudGVyOgogICAgICAg
ICByZXN1bHQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChyZXN1bHQsIGF0a190ZXh0X2F0dHJpYnV0
ZV9nZXRfbmFtZShBVEtfVEVYVF9BVFRSX0pVU1RJRklDQVRJT04pLCAiY2VudGVyIik7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSlVTVElGWToKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6Okp1
c3RpZnk6CiAgICAgICAgIHJlc3VsdCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KHJlc3VsdCwgYXRr
X3RleHRfYXR0cmlidXRlX2dldF9uYW1lKEFUS19URVhUX0FUVFJfSlVTVElGSUNBVElPTiksICJm
aWxsIik7CiAgICAgfQogCkBAIC0xNjgsNyArMTY4LDcgQEAgc3RhdGljIEF0a0F0dHJpYnV0ZVNl
dCogZ2V0QXR0cmlidXRlU2V0RgogCiAgICAgcmVzdWx0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQo
cmVzdWx0LCBhdGtfdGV4dF9hdHRyaWJ1dGVfZ2V0X25hbWUoQVRLX1RFWFRfQVRUUl9TVFJJS0VU
SFJPVUdIKSwgKHN0eWxlLT50ZXh0RGVjb3JhdGlvbigpICYgVGV4dERlY29yYXRpb25MaW5lVGhy
b3VnaCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKIAotICAgIHJlc3VsdCA9IGFkZFRvQXRrQXR0cmli
dXRlU2V0KHJlc3VsdCwgYXRrX3RleHRfYXR0cmlidXRlX2dldF9uYW1lKEFUS19URVhUX0FUVFJf
SU5WSVNJQkxFKSwgKHN0eWxlLT52aXNpYmlsaXR5KCkgPT0gSElEREVOKSA/ICJ0cnVlIiA6ICJm
YWxzZSIpOworICAgIHJlc3VsdCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KHJlc3VsdCwgYXRrX3Rl
eHRfYXR0cmlidXRlX2dldF9uYW1lKEFUS19URVhUX0FUVFJfSU5WSVNJQkxFKSwgKHN0eWxlLT52
aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6SGlkZGVuKSA/ICJ0cnVlIiA6ICJmYWxzZSIpOwog
CiAgICAgcmVzdWx0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQocmVzdWx0LCBhdGtfdGV4dF9hdHRy
aWJ1dGVfZ2V0X25hbWUoQVRLX1RFWFRfQVRUUl9FRElUQUJMRSksIG9iamVjdC0+Y2FuU2V0VmFs
dWVBdHRyaWJ1dGUoKSA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAJKHJldmlzaW9uIDIzMjE0MykK
KysrIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRh
dGVDU1NBbmltYXRpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEluIGNhc2UgdGhpcyBlbGVt
ZW50IGlzIG5ld2x5IGdldHRpbmcgYSAiZGlzcGxheTogbm9uZSIgd2UgbmVlZCB0byBjYW5jZWwg
YWxsIG9mIGl0cyBhbmltYXRpb25zIGFuZCBkaXNyZWdhcmQgbmV3IG9uZXMuCi0gICAgaWYgKG9s
ZFN0eWxlICYmIG9sZFN0eWxlLT5oYXNBbmltYXRpb25zKCkgJiYgb2xkU3R5bGUtPmRpc3BsYXko
KSAhPSBOT05FICYmIG5ld1N0eWxlLmRpc3BsYXkoKSA9PSBOT05FKSB7CisgICAgaWYgKG9sZFN0
eWxlICYmIG9sZFN0eWxlLT5oYXNBbmltYXRpb25zKCkgJiYgb2xkU3R5bGUtPmRpc3BsYXkoKSAh
PSBEaXNwbGF5VHlwZTo6Tm9uZSAmJiBuZXdTdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6
Ok5vbmUpIHsKICAgICAgICAgaWYgKG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9uQnlOYW1lLmNvbnRh
aW5zKCZlbGVtZW50KSkgewogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjc3NBbmltYXRp
b25zQnlOYW1lTWFwSXRlbSA6IG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9uQnlOYW1lLnRha2UoJmVs
ZW1lbnQpKQogICAgICAgICAgICAgICAgIGNhbmNlbE9yUmVtb3ZlRGVjbGFyYXRpdmVBbmltYXRp
b24oY3NzQW5pbWF0aW9uc0J5TmFtZU1hcEl0ZW0udmFsdWUpOwpAQCAtMjI5LDcgKzIyOSw3IEBA
IHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5zaXQKICAgICAgICAgcmV0dXJu
OwogCiAgICAgLy8gSW4gY2FzZSB0aGlzIGVsZW1lbnQgaXMgbmV3bHkgZ2V0dGluZyBhICJkaXNw
bGF5OiBub25lIiB3ZSBuZWVkIHRvIGNhbmNlbCBhbGwgb2YgaXRzIGFuaW1hdGlvbnMgYW5kIGRp
c3JlZ2FyZCBuZXcgb25lcy4KLSAgICBpZiAob2xkU3R5bGUgJiYgb2xkU3R5bGUtPmhhc1RyYW5z
aXRpb25zKCkgJiYgb2xkU3R5bGUtPmRpc3BsYXkoKSAhPSBOT05FICYmIG5ld1N0eWxlLmRpc3Bs
YXkoKSA9PSBOT05FKSB7CisgICAgaWYgKG9sZFN0eWxlICYmIG9sZFN0eWxlLT5oYXNUcmFuc2l0
aW9ucygpICYmIG9sZFN0eWxlLT5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6Ok5vbmUgJiYgbmV3
U3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpOb25lKSB7CiAgICAgICAgIGlmIChtX2Vs
ZW1lbnRUb0NTU1RyYW5zaXRpb25CeUNTU1Byb3BlcnR5SUQuY29udGFpbnMoJmVsZW1lbnQpKSB7
CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNzc1RyYW5zaXRpb25zQnlDU1NQcm9wZXJ0
eUlETWFwSXRlbSA6IG1fZWxlbWVudFRvQ1NTVHJhbnNpdGlvbkJ5Q1NTUHJvcGVydHlJRC50YWtl
KCZlbGVtZW50KSkKICAgICAgICAgICAgICAgICBjYW5jZWxPclJlbW92ZURlY2xhcmF0aXZlQW5p
bWF0aW9uKGNzc1RyYW5zaXRpb25zQnlDU1NQcm9wZXJ0eUlETWFwSXRlbS52YWx1ZSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmNwcAkocmV2aXNpb24gMjMy
MTQzKQorKysgU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU1LDE2ICs1NSwxNiBAQCB2b2lkIENTU0FuaW1hdGlvbjo6c3luY1Byb3Bl
cnRpZXNXaXRoQmFjCiAgICAgYXV0byogdGltaW5nID0gZWZmZWN0KCktPnRpbWluZygpOwogCiAg
ICAgc3dpdGNoIChhbmltYXRpb24uZmlsbE1vZGUoKSkgewotICAgIGNhc2UgQW5pbWF0aW9uRmls
bE1vZGVOb25lOgorICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGU6Ok5vbmU6CiAgICAgICAgIHRp
bWluZy0+c2V0RmlsbChGaWxsTW9kZTo6Tm9uZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
QW5pbWF0aW9uRmlsbE1vZGVCYWNrd2FyZHM6CisgICAgY2FzZSBBbmltYXRpb25GaWxsTW9kZTo6
QmFja3dhcmRzOgogICAgICAgICB0aW1pbmctPnNldEZpbGwoRmlsbE1vZGU6OkJhY2t3YXJkcyk7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGVGb3J3YXJkczoKKyAg
ICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlOjpGb3J3YXJkczoKICAgICAgICAgdGltaW5nLT5zZXRG
aWxsKEZpbGxNb2RlOjpGb3J3YXJkcyk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQW5pbWF0
aW9uRmlsbE1vZGVCb3RoOgorICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGU6OkJvdGg6CiAgICAg
ICAgIHRpbWluZy0+c2V0RmlsbChGaWxsTW9kZTo6Qm90aCk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KQEAgLTg4LDkgKzg4LDkgQEAgdm9pZCBDU1NBbmltYXRpb246OnN5bmNQcm9wZXJ0aWVzV2l0
aEJhYwogICAgIHRpbWluZy0+c2V0SXRlcmF0aW9ucyhpdGVyYXRpb25Db3VudCA9PSBBbmltYXRp
b246Okl0ZXJhdGlvbkNvdW50SW5maW5pdGUgPyBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46
OmluZmluaXR5KCkgOiBpdGVyYXRpb25Db3VudCk7CiAKICAgICAvLyBTeW5jaHJvbml6ZSB0aGUg
cGxheSBzdGF0ZQotICAgIGlmIChiYWNraW5nQW5pbWF0aW9uKCkucGxheVN0YXRlKCkgPT0gQW5p
bVBsYXlTdGF0ZVBsYXlpbmcgJiYgcGxheVN0YXRlKCkgPT0gV2ViQW5pbWF0aW9uOjpQbGF5U3Rh
dGU6OlBhdXNlZCkKKyAgICBpZiAoYmFja2luZ0FuaW1hdGlvbigpLnBsYXlTdGF0ZSgpID09IEFu
aW1hdGlvblBsYXlTdGF0ZTo6UGxheWluZyAmJiBwbGF5U3RhdGUoKSA9PSBXZWJBbmltYXRpb246
OlBsYXlTdGF0ZTo6UGF1c2VkKQogICAgICAgICBwbGF5KCk7Ci0gICAgZWxzZSBpZiAoYmFja2lu
Z0FuaW1hdGlvbigpLnBsYXlTdGF0ZSgpID09IEFuaW1QbGF5U3RhdGVQYXVzZWQgJiYgcGxheVN0
YXRlKCkgPT0gV2ViQW5pbWF0aW9uOjpQbGF5U3RhdGU6OlJ1bm5pbmcpCisgICAgZWxzZSBpZiAo
YmFja2luZ0FuaW1hdGlvbigpLnBsYXlTdGF0ZSgpID09IEFuaW1hdGlvblBsYXlTdGF0ZTo6UGF1
c2VkICYmIHBsYXlTdGF0ZSgpID09IFdlYkFuaW1hdGlvbjo6UGxheVN0YXRlOjpSdW5uaW5nKQog
ICAgICAgICBwYXVzZSgpOwogCiAgICAgdW5zdXNwZW5kRWZmZWN0SW52YWxpZGF0aW9uKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlv
bi5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNs
YXJhdGl2ZUFuaW1hdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgdm9p
ZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6aW5pdGlhbGl6ZShjbwogICAgIHNldFRpbWVsaW5lKCZ0
YXJnZXQuZG9jdW1lbnQoKS50aW1lbGluZSgpKTsKICAgICBkb3duY2FzdDxLZXlmcmFtZUVmZmVj
dFJlYWRPbmx5PihlZmZlY3QoKSktPmNvbXB1dGVEZWNsYXJhdGl2ZUFuaW1hdGlvbkJsZW5kaW5n
S2V5ZnJhbWVzKG9sZFN0eWxlLCBuZXdTdHlsZSk7CiAgICAgc3luY1Byb3BlcnRpZXNXaXRoQmFj
a2luZ0FuaW1hdGlvbigpOwotICAgIGlmIChiYWNraW5nQW5pbWF0aW9uKCkucGxheVN0YXRlKCkg
PT0gQW5pbVBsYXlTdGF0ZVBsYXlpbmcpCisgICAgaWYgKGJhY2tpbmdBbmltYXRpb24oKS5wbGF5
U3RhdGUoKSA9PSBBbmltYXRpb25QbGF5U3RhdGU6OlBsYXlpbmcpCiAgICAgICAgIHBsYXkoKTsK
ICAgICBlbHNlCiAgICAgICAgIHBhdXNlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vS2V5ZnJhbWVFZmZlY3RSZWFkT25seS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0UmVhZE9ubHkuY3BwCShyZXZpc2lvbiAyMzIxNDMp
CisrKyBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3RSZWFkT25seS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyNjUsMTYgKzEyNjUsMTYgQEAgUmVmPGNvbnN0IEFuaW1hdGlv
bj4gS2V5ZnJhbWVFZmZlY3RSZWFkTwogICAgIHN3aXRjaCAoZWZmZWN0VGltaW5nLT5maWxsKCkp
IHsKICAgICBjYXNlIEZpbGxNb2RlOjpOb25lOgogICAgIGNhc2UgRmlsbE1vZGU6OkF1dG86Ci0g
ICAgICAgIGFuaW1hdGlvbi0+c2V0RmlsbE1vZGUoQW5pbWF0aW9uRmlsbE1vZGVOb25lKTsKKyAg
ICAgICAgYW5pbWF0aW9uLT5zZXRGaWxsTW9kZShBbmltYXRpb25GaWxsTW9kZTo6Tm9uZSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgRmlsbE1vZGU6OkJhY2t3YXJkczoKLSAgICAgICAgYW5p
bWF0aW9uLT5zZXRGaWxsTW9kZShBbmltYXRpb25GaWxsTW9kZUJhY2t3YXJkcyk7CisgICAgICAg
IGFuaW1hdGlvbi0+c2V0RmlsbE1vZGUoQW5pbWF0aW9uRmlsbE1vZGU6OkJhY2t3YXJkcyk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgRmlsbE1vZGU6OkZvcndhcmRzOgotICAgICAgICBhbmlt
YXRpb24tPnNldEZpbGxNb2RlKEFuaW1hdGlvbkZpbGxNb2RlRm9yd2FyZHMpOworICAgICAgICBh
bmltYXRpb24tPnNldEZpbGxNb2RlKEFuaW1hdGlvbkZpbGxNb2RlOjpGb3J3YXJkcyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgRmlsbE1vZGU6OkJvdGg6Ci0gICAgICAgIGFuaW1hdGlvbi0+
c2V0RmlsbE1vZGUoQW5pbWF0aW9uRmlsbE1vZGVCb3RoKTsKKyAgICAgICAgYW5pbWF0aW9uLT5z
ZXRGaWxsTW9kZShBbmltYXRpb25GaWxsTW9kZTo6Qm90aCk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgwLDE1
ICsxNzgwLDE1IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHJlbmRlclRleHREZWNvcmF0aW8KIHN0
YXRpYyBSZWY8Q1NTVmFsdWU+IHJlbmRlclRleHREZWNvcmF0aW9uU3R5bGVGbGFnc1RvQ1NTVmFs
dWUoVGV4dERlY29yYXRpb25TdHlsZSB0ZXh0RGVjb3JhdGlvblN0eWxlKQogewogICAgIHN3aXRj
aCAodGV4dERlY29yYXRpb25TdHlsZSkgewotICAgIGNhc2UgVGV4dERlY29yYXRpb25TdHlsZVNv
bGlkOgorICAgIGNhc2UgVGV4dERlY29yYXRpb25TdHlsZTo6U29saWQ6CiAgICAgICAgIHJldHVy
biBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZVNvbGlkKTsKLSAgICBjYXNlIFRleHREZWNvcmF0aW9uU3R5bGVEb3VibGU6CisgICAgY2FzZSBU
ZXh0RGVjb3JhdGlvblN0eWxlOjpEb3VibGU6CiAgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6
OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZURvdWJsZSk7Ci0gICAg
Y2FzZSBUZXh0RGVjb3JhdGlvblN0eWxlRG90dGVkOgorICAgIGNhc2UgVGV4dERlY29yYXRpb25T
dHlsZTo6RG90dGVkOgogICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVEb3R0ZWQpOwotICAgIGNhc2UgVGV4dERlY29y
YXRpb25TdHlsZURhc2hlZDoKKyAgICBjYXNlIFRleHREZWNvcmF0aW9uU3R5bGU6OkRhc2hlZDoK
ICAgICAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlRGFzaGVkKTsKLSAgICBjYXNlIFRleHREZWNvcmF0aW9uU3R5bGVXYXZ5
OgorICAgIGNhc2UgVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eToKICAgICAgICAgcmV0dXJuIENT
U1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlV2F2
eSk7CiAgICAgfQogCkBAIC0yMjcyLDMzICsyMjcyLDMzIEBAIHN0YXRpYyBib29sIHBvc2l0aW9u
T2Zmc2V0VmFsdWVJc1JlbmRlcmUKIAogc3RhdGljIENTU1ZhbHVlSUQgY29udmVydFRvUGFnZUJy
ZWFrKEJyZWFrQmV0d2VlbiB2YWx1ZSkKIHsKLSAgICBpZiAodmFsdWUgPT0gUGFnZUJyZWFrQmV0
d2VlbiB8fCB2YWx1ZSA9PSBMZWZ0UGFnZUJyZWFrQmV0d2VlbiB8fCB2YWx1ZSA9PSBSaWdodFBh
Z2VCcmVha0JldHdlZW4KLSAgICAgICAgfHwgdmFsdWUgPT0gUmVjdG9QYWdlQnJlYWtCZXR3ZWVu
IHx8IHZhbHVlID09IFZlcnNvUGFnZUJyZWFrQmV0d2VlbikKKyAgICBpZiAodmFsdWUgPT0gQnJl
YWtCZXR3ZWVuOjpQYWdlIHx8IHZhbHVlID09IEJyZWFrQmV0d2Vlbjo6TGVmdFBhZ2UgfHwgdmFs
dWUgPT0gQnJlYWtCZXR3ZWVuOjpSaWdodFBhZ2UKKyAgICAgICAgfHwgdmFsdWUgPT0gQnJlYWtC
ZXR3ZWVuOjpSZWN0b1BhZ2UgfHwgdmFsdWUgPT0gQnJlYWtCZXR3ZWVuOjpWZXJzb1BhZ2UpCiAg
ICAgICAgIHJldHVybiBDU1NWYWx1ZUFsd2F5czsgLy8gQ1NTIDIuMSBhbGxvd3MgdXMgdG8gbWFw
IHRoZXNlIHRvIGFsd2F5cy4KLSAgICBpZiAodmFsdWUgPT0gQXZvaWRCcmVha0JldHdlZW4gfHwg
dmFsdWUgPT0gQXZvaWRQYWdlQnJlYWtCZXR3ZWVuKQorICAgIGlmICh2YWx1ZSA9PSBCcmVha0Jl
dHdlZW46OkF2b2lkIHx8IHZhbHVlID09IEJyZWFrQmV0d2Vlbjo6QXZvaWRQYWdlKQogICAgICAg
ICByZXR1cm4gQ1NTVmFsdWVBdm9pZDsKICAgICByZXR1cm4gQ1NTVmFsdWVBdXRvOwogfQogCiBz
dGF0aWMgQ1NTVmFsdWVJRCBjb252ZXJ0VG9Db2x1bW5CcmVhayhCcmVha0JldHdlZW4gdmFsdWUp
CiB7Ci0gICAgaWYgKHZhbHVlID09IENvbHVtbkJyZWFrQmV0d2VlbikKKyAgICBpZiAodmFsdWUg
PT0gQnJlYWtCZXR3ZWVuOjpDb2x1bW4pCiAgICAgICAgIHJldHVybiBDU1NWYWx1ZUFsd2F5czsK
LSAgICBpZiAodmFsdWUgPT0gQXZvaWRCcmVha0JldHdlZW4gfHwgdmFsdWUgPT0gQXZvaWRDb2x1
bW5CcmVha0JldHdlZW4pCisgICAgaWYgKHZhbHVlID09IEJyZWFrQmV0d2Vlbjo6QXZvaWQgfHwg
dmFsdWUgPT0gQnJlYWtCZXR3ZWVuOjpBdm9pZENvbHVtbikKICAgICAgICAgcmV0dXJuIENTU1Zh
bHVlQXZvaWQ7CiAgICAgcmV0dXJuIENTU1ZhbHVlQXV0bzsKIH0KIAogc3RhdGljIENTU1ZhbHVl
SUQgY29udmVydFRvUGFnZUJyZWFrKEJyZWFrSW5zaWRlIHZhbHVlKQogewotICAgIGlmICh2YWx1
ZSA9PSBBdm9pZEJyZWFrSW5zaWRlIHx8IHZhbHVlID09IEF2b2lkUGFnZUJyZWFrSW5zaWRlKQor
ICAgIGlmICh2YWx1ZSA9PSBCcmVha0luc2lkZTo6QXZvaWQgfHwgdmFsdWUgPT0gQnJlYWtJbnNp
ZGU6OkF2b2lkUGFnZSkKICAgICAgICAgcmV0dXJuIENTU1ZhbHVlQXZvaWQ7CiAgICAgcmV0dXJu
IENTU1ZhbHVlQXV0bzsKIH0KIAogc3RhdGljIENTU1ZhbHVlSUQgY29udmVydFRvQ29sdW1uQnJl
YWsoQnJlYWtJbnNpZGUgdmFsdWUpCiB7Ci0gICAgaWYgKHZhbHVlID09IEF2b2lkQnJlYWtJbnNp
ZGUgfHwgdmFsdWUgPT0gQXZvaWRDb2x1bW5CcmVha0luc2lkZSkKKyAgICBpZiAodmFsdWUgPT0g
QnJlYWtJbnNpZGU6OkF2b2lkIHx8IHZhbHVlID09IEJyZWFrSW5zaWRlOjpBdm9pZENvbHVtbikK
ICAgICAgICAgcmV0dXJuIENTU1ZhbHVlQXZvaWQ7CiAgICAgcmV0dXJuIENTU1ZhbHVlQXV0bzsK
IH0KQEAgLTIzNzAsMjAgKzIzNzAsMTkgQEAgRWxlbWVudCogQ29tcHV0ZWRTdHlsZUV4dHJhY3Rv
cjo6c3R5bGVkRQogICAgIGlmICghbV9lbGVtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICBQc2V1ZG9FbGVtZW50KiBwc2V1ZG9FbGVtZW50OwotICAgIGlmIChtX3BzZXVkb0VsZW1l
bnRTcGVjaWZpZXIgPT0gQkVGT1JFICYmIChwc2V1ZG9FbGVtZW50ID0gbV9lbGVtZW50LT5iZWZv
cmVQc2V1ZG9FbGVtZW50KCkpKQorICAgIGlmIChtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIgPT0g
UHNldWRvSWQ6OkJlZm9yZSAmJiAocHNldWRvRWxlbWVudCA9IG1fZWxlbWVudC0+YmVmb3JlUHNl
dWRvRWxlbWVudCgpKSkKICAgICAgICAgcmV0dXJuIHBzZXVkb0VsZW1lbnQ7Ci0gICAgaWYgKG1f
cHNldWRvRWxlbWVudFNwZWNpZmllciA9PSBBRlRFUiAmJiAocHNldWRvRWxlbWVudCA9IG1fZWxl
bWVudC0+YWZ0ZXJQc2V1ZG9FbGVtZW50KCkpKQorICAgIGlmIChtX3BzZXVkb0VsZW1lbnRTcGVj
aWZpZXIgPT0gUHNldWRvSWQ6OkFmdGVyICYmIChwc2V1ZG9FbGVtZW50ID0gbV9lbGVtZW50LT5h
ZnRlclBzZXVkb0VsZW1lbnQoKSkpCiAgICAgICAgIHJldHVybiBwc2V1ZG9FbGVtZW50OwogICAg
IHJldHVybiBtX2VsZW1lbnQuZ2V0KCk7CiB9CiAKLQogUmVuZGVyRWxlbWVudCogQ29tcHV0ZWRT
dHlsZUV4dHJhY3Rvcjo6c3R5bGVkUmVuZGVyZXIoKSBjb25zdAogewogICAgIGF1dG8qIGVsZW1l
bnQgPSBzdHlsZWRFbGVtZW50KCk7CiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICBpZiAobV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyICE9IE5PUFNFVURPICYm
IGVsZW1lbnQgPT0gbV9lbGVtZW50LmdldCgpKQorICAgIGlmIChtX3BzZXVkb0VsZW1lbnRTcGVj
aWZpZXIgIT0gUHNldWRvSWQ6Ok5vbmUgJiYgZWxlbWVudCA9PSBtX2VsZW1lbnQuZ2V0KCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChlbGVtZW50LT5oYXNEaXNwbGF5Q29udGVu
dHMoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNDc4LDE0ICsyNDc3LDE0IEBAIHN0
YXRpYyBpbmxpbmUgY29uc3QgUmVuZGVyU3R5bGUqIGNvbXB1dGUKICAgICAgICAgICAgIG93bmVk
U3R5bGUgPSB0aW1lbGluZS0+YW5pbWF0ZWRTdHlsZUZvclJlbmRlcmVyKCpyZW5kZXJlcik7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIG93bmVkU3R5bGUgPSByZW5kZXJlci0+YW5pbWF0aW9u
KCkuYW5pbWF0ZWRTdHlsZUZvclJlbmRlcmVyKCpyZW5kZXJlcik7Ci0gICAgICAgIGlmIChwc2V1
ZG9FbGVtZW50U3BlY2lmaWVyICYmICFlbGVtZW50LmlzUHNldWRvRWxlbWVudCgpKSB7CisgICAg
ICAgIGlmIChwc2V1ZG9FbGVtZW50U3BlY2lmaWVyICE9IFBzZXVkb0lkOjpOb25lICYmICFlbGVt
ZW50LmlzUHNldWRvRWxlbWVudCgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBjYWNo
ZWQgcHNldWRvIHN0eWxlIHdpbGwgb25seSBleGlzdCBpZiB0aGUgYW5pbWF0aW9uIGhhcyBiZWVu
IHJ1biBhdCBsZWFzdCBvbmNlLgogICAgICAgICAgICAgcmV0dXJuIG93bmVkU3R5bGUtPmdldENh
Y2hlZFBzZXVkb1N0eWxlKHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpOwogICAgICAgICB9CiAgICAg
ICAgIHJldHVybiBvd25lZFN0eWxlLmdldCgpOwogICAgIH0KIAotICAgIHJldHVybiBlbGVtZW50
LmNvbXB1dGVkU3R5bGUoZWxlbWVudC5pc1BzZXVkb0VsZW1lbnQoKSA/IE5PUFNFVURPIDogcHNl
dWRvRWxlbWVudFNwZWNpZmllcik7CisgICAgcmV0dXJuIGVsZW1lbnQuY29tcHV0ZWRTdHlsZShl
bGVtZW50LmlzUHNldWRvRWxlbWVudCgpID8gUHNldWRvSWQ6Ok5vbmUgOiBwc2V1ZG9FbGVtZW50
U3BlY2lmaWVyKTsKIH0KIAogc3RhdGljIFJlZjxDU1NWYWx1ZT4gc2hhcGVQcm9wZXJ0eVZhbHVl
KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgU2hhcGVWYWx1ZSogc2hhcGVWYWx1ZSkK
QEAgLTI1MDYsNyArMjUwNSw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHNoYXBlUHJvcGVydHlW
YWx1ZSgKIAogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0
ZWQoKTsKICAgICBsaXN0LT5hcHBlbmQodmFsdWVGb3JCYXNpY1NoYXBlKHN0eWxlLCAqc2hhcGVW
YWx1ZS0+c2hhcGUoKSkpOwotICAgIGlmIChzaGFwZVZhbHVlLT5jc3NCb3goKSAhPSBCb3hNaXNz
aW5nKQorICAgIGlmIChzaGFwZVZhbHVlLT5jc3NCb3goKSAhPSBDU1NCb3hUeXBlOjpCb3hNaXNz
aW5nKQogICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVWYWx1ZShzaGFwZVZhbHVlLT5jc3NCb3goKSkpOwogICAgIHJldHVybiBXVEZNb3ZlKGxpc3Qp
OwogfQpAQCAtMzAxNiw3ICszMDE1LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5T3JkZXI6CiAgICAgICAgICAgICBy
ZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLm9yZGVyKCksIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfTlVNQkVSKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUZsb2F0OgotICAg
ICAgICAgICAgaWYgKHN0eWxlLmRpc3BsYXkoKSAhPSBOT05FICYmIHN0eWxlLmhhc091dE9mRmxv
d1Bvc2l0aW9uKCkpCisgICAgICAgICAgICBpZiAoc3R5bGUuZGlzcGxheSgpICE9IERpc3BsYXlU
eXBlOjpOb25lICYmIHN0eWxlLmhhc091dE9mRmxvd1Bvc2l0aW9uKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25l
KTsKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUuZmxv
YXRpbmcoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGb250OiB7CkBAIC0zMTQ1LDcgKzMx
NDQsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1Zh
bHVlTm9MaW1pdCk7CiAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZShzdHlsZS5oeXBoZW5hdGlvbkxpbWl0TGluZXMoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19O
VU1CRVIpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRml0OgotICAgICAg
ICAgICAgaWYgKHN0eWxlLmJvcmRlckZpdCgpID09IEJvcmRlckZpdEJvcmRlcikKKyAgICAgICAg
ICAgIGlmIChzdHlsZS5ib3JkZXJGaXQoKSA9PSBCb3JkZXJGaXQ6OkJvcmRlcikKICAgICAgICAg
ICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZUJvcmRlcik7CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShDU1NWYWx1ZUxpbmVzKTsKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9O
KQpAQCAtMzIwMCw3ICszMTk5LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOgogICAgICAgICAgICAgZmxvYXQgdmFsdWU7CiAgICAgICAgICAgICBpZiAobWFyZ2lu
UmlnaHQuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpIHsKICAgICAgICAgICAgICAgICAvLyBSZW5k
ZXJCb3ggZ2l2ZXMgYSBtYXJnaW5SaWdodCgpIHRoYXQgaXMgdGhlIGRpc3RhbmNlIGJldHdlZW4g
dGhlIHJpZ2h0LWVkZ2Ugb2YgdGhlIGNoaWxkIGJveAotICAgICAgICAgICAgICAgIC8vIGFuZCB0
aGUgcmlnaHQtZWRnZSBvZiB0aGUgY29udGFpbmluZyBib3gsIHdoZW4gZGlzcGxheSA9PSBCTE9D
Sy4gTGV0J3MgY2FsY3VsYXRlIHRoZSBhYnNvbHV0ZQorICAgICAgICAgICAgICAgIC8vIGFuZCB0
aGUgcmlnaHQtZWRnZSBvZiB0aGUgY29udGFpbmluZyBib3gsIHdoZW4gZGlzcGxheSA9PSBEaXNw
bGF5VHlwZTo6QmxvY2suIExldCdzIGNhbGN1bGF0ZSB0aGUgYWJzb2x1dGUKICAgICAgICAgICAg
ICAgICAvLyB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIG1hcmdpbi1yaWdodCAlIGluc3RlYWQgb2Yg
cmVseWluZyBvbiBSZW5kZXJCb3gncyBtYXJnaW5SaWdodCgpIHZhbHVlLgogICAgICAgICAgICAg
ICAgIHZhbHVlID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1hcmdpblJpZ2h0LCBkb3duY2FzdDxS
ZW5kZXJCb3g+KCpyZW5kZXJlcikuY29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVu
dCgpKTsKICAgICAgICAgICAgIH0gZWxzZQpAQCAtMzM0NSwyMCArMzM0NCwyMCBAQCBSZWZQdHI8
Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6CiAgICAgICAgICAgICByZXR1cm4gcmVu
ZGVyRW1waGFzaXNQb3NpdGlvbkZsYWdzVG9DU1NWYWx1ZShzdHlsZS50ZXh0RW1waGFzaXNQb3Np
dGlvbigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxl
OgogICAgICAgICAgICAgc3dpdGNoIChzdHlsZS50ZXh0RW1waGFzaXNNYXJrKCkpIHsKLSAgICAg
ICAgICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya05vbmU6CisgICAgICAgICAgICBjYXNlIFRleHRF
bXBoYXNpc01hcms6Ok5vbmU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKLSAgICAgICAgICAgIGNhc2UgVGV4
dEVtcGhhc2lzTWFya0N1c3RvbToKKyAgICAgICAgICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFyazo6
Q3VzdG9tOgogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
c3R5bGUudGV4dEVtcGhhc2lzQ3VzdG9tTWFyaygpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NU
UklORyk7Ci0gICAgICAgICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtBdXRvOgorICAgICAgICAg
ICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrOjpBdXRvOgogICAgICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogI2lmIEFTU0VSVF9ESVNBQkxFRAogICAgICAgICAgICAgICAgIEZBTExU
SFJPVUdIOwogI2VuZGlmCi0gICAgICAgICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtEb3Q6Ci0g
ICAgICAgICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtDaXJjbGU6Ci0gICAgICAgICAgICBjYXNl
IFRleHRFbXBoYXNpc01hcmtEb3VibGVDaXJjbGU6Ci0gICAgICAgICAgICBjYXNlIFRleHRFbXBo
YXNpc01hcmtUcmlhbmdsZToKLSAgICAgICAgICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya1Nlc2Ft
ZToKKyAgICAgICAgICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFyazo6RG90OgorICAgICAgICAgICAg
Y2FzZSBUZXh0RW1waGFzaXNNYXJrOjpDaXJjbGU6CisgICAgICAgICAgICBjYXNlIFRleHRFbXBo
YXNpc01hcms6OkRvdWJsZUNpcmNsZToKKyAgICAgICAgICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFy
azo6VHJpYW5nbGU6CisgICAgICAgICAgICBjYXNlIFRleHRFbXBoYXNpc01hcms6OlNlc2FtZToK
ICAgICAgICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2Vw
YXJhdGVkKCk7CiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShzdHlsZS50ZXh0RW1waGFzaXNGaWxsKCkpKTsKICAgICAgICAgICAgICAgICBsaXN0
LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLnRleHRFbXBoYXNpc01hcmso
KSkpOwpAQCAtMzU2MCwxNiArMzU1OSwxNiBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5
bGVFeHRyYWN0b3I6CiAgICAgICAgICAgICBpZiAodCkgewogICAgICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgdC0+c2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgICAgICAgICAg
c3dpdGNoICh0LT5hbmltYXRpb24oaSkuZmlsbE1vZGUoKSkgewotICAgICAgICAgICAgICAgICAg
ICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlTm9uZToKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBB
bmltYXRpb25GaWxsTW9kZTo6Tm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFw
cGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSkpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
QW5pbWF0aW9uRmlsbE1vZGVGb3J3YXJkczoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBbmlt
YXRpb25GaWxsTW9kZTo6Rm9yd2FyZHM6CiAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LT5h
cHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUZvcndhcmRz
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSBBbmltYXRpb25GaWxsTW9kZUJhY2t3YXJkczoKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBBbmltYXRpb25GaWxsTW9kZTo6QmFja3dhcmRzOgogICAgICAgICAgICAgICAgICAgICAgICAg
bGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVC
YWNrd2FyZHMpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlQm90aDoKKyAgICAgICAgICAgICAgICAgICAg
Y2FzZSBBbmltYXRpb25GaWxsTW9kZTo6Qm90aDoKICAgICAgICAgICAgICAgICAgICAgICAgIGxp
c3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQm90
aCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
IH0KQEAgLTM2MDgsMTEgKzM2MDcsMTQgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOgogICAgICAgICAgICAgY29uc3QgQW5pbWF0aW9uTGlzdCogdCA9IHN0eWxlLmFu
aW1hdGlvbnMoKTsKICAgICAgICAgICAgIGlmICh0KSB7CiAgICAgICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCB0LT5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBp
bnQgcHJvcCA9IHQtPmFuaW1hdGlvbihpKS5wbGF5U3RhdGUoKTsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKHByb3AgPT0gQW5pbVBsYXlTdGF0ZVBsYXlpbmcpCisgICAgICAgICAgICAgICAgICAg
IHN3aXRjaCAodC0+YW5pbWF0aW9uKGkpLnBsYXlTdGF0ZSgpKSB7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgQW5pbWF0aW9uUGxheVN0YXRlOjpQbGF5aW5nOgogICAgICAgICAgICAgICAgICAg
ICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVSdW5uaW5nKSk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIEFuaW1hdGlvblBsYXlT
dGF0ZTo6UGF1c2VkOgogICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1Zh
bHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVQYXVzZWQpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5k
KGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVSdW5uaW5nKSk7CkBA
IC0zNzA1LDcgKzM3MDcsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0
b3I6CiAgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UnRsT3JkZXJpbmc6Ci0gICAgICAgICAgICByZXR1cm4g
Y3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShzdHlsZS5ydGxPcmRlcmluZygpID8g
Q1NTVmFsdWVWaXN1YWwgOiBDU1NWYWx1ZUxvZ2ljYWwpOworICAgICAgICAgICAgcmV0dXJuIGNz
c1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoc3R5bGUucnRsT3JkZXJpbmcoKSA9PSBP
cmRlcjo6VmlzdWFsID8gQ1NTVmFsdWVWaXN1YWwgOiBDU1NWYWx1ZUxvZ2ljYWwpOwogI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUYXBIaWdo
bGlnaHRDb2xvcjoKICAgICAgICAgICAgIHJldHVybiBjdXJyZW50Q29sb3JPclZhbGlkQ29sb3Io
JnN0eWxlLCBzdHlsZS50YXBIaWdobGlnaHRDb2xvcigpKTsKQEAgLTM4MzMsNyArMzgzNSw3IEBA
IFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcjoKICAgICAgICAgICAgIGlm
IChpczxTaGFwZUNsaXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0aW9uKSkgewogICAgICAgICAgICAg
ICAgIGF1dG8mIHNoYXBlT3BlcmF0aW9uID0gZG93bmNhc3Q8U2hhcGVDbGlwUGF0aE9wZXJhdGlv
bj4oKm9wZXJhdGlvbik7CiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHZhbHVlRm9yQmFz
aWNTaGFwZShzdHlsZSwgc2hhcGVPcGVyYXRpb24uYmFzaWNTaGFwZSgpKSk7Ci0gICAgICAgICAg
ICAgICAgaWYgKHNoYXBlT3BlcmF0aW9uLnJlZmVyZW5jZUJveCgpICE9IEJveE1pc3NpbmcpCisg
ICAgICAgICAgICAgICAgaWYgKHNoYXBlT3BlcmF0aW9uLnJlZmVyZW5jZUJveCgpICE9IENTU0Jv
eFR5cGU6OkJveE1pc3NpbmcpCiAgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NW
YWx1ZVBvb2wuY3JlYXRlVmFsdWUoc2hhcGVPcGVyYXRpb24ucmVmZXJlbmNlQm94KCkpKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChpczxCb3hDbGlwUGF0aE9wZXJhdGlvbj4oKm9w
ZXJhdGlvbikpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5oCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDggKzUx
LDggQEAgZW51bSBBZGp1c3RQaXhlbFZhbHVlc0ZvckNvbXB1dGVkU3R5bGUgewogCiBjbGFzcyBD
b21wdXRlZFN0eWxlRXh0cmFjdG9yIHsKIHB1YmxpYzoKLSAgICBDb21wdXRlZFN0eWxlRXh0cmFj
dG9yKE5vZGUqLCBib29sIGFsbG93VmlzaXRlZFN0eWxlID0gZmFsc2UsIFBzZXVkb0lkID0gTk9Q
U0VVRE8pOwotICAgIENvbXB1dGVkU3R5bGVFeHRyYWN0b3IoRWxlbWVudCosIGJvb2wgYWxsb3dW
aXNpdGVkU3R5bGUgPSBmYWxzZSwgUHNldWRvSWQgPSBOT1BTRVVETyk7CisgICAgQ29tcHV0ZWRT
dHlsZUV4dHJhY3RvcihOb2RlKiwgYm9vbCBhbGxvd1Zpc2l0ZWRTdHlsZSA9IGZhbHNlLCBQc2V1
ZG9JZCA9IFBzZXVkb0lkOjpOb25lKTsKKyAgICBDb21wdXRlZFN0eWxlRXh0cmFjdG9yKEVsZW1l
bnQqLCBib29sIGFsbG93VmlzaXRlZFN0eWxlID0gZmFsc2UsIFBzZXVkb0lkID0gUHNldWRvSWQ6
Ok5vbmUpOwogCiAgICAgUmVmUHRyPENTU1ZhbHVlPiBwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5
SUQsIEVVcGRhdGVMYXlvdXQgPSBVcGRhdGVMYXlvdXQpOwogICAgIFJlZlB0cjxDU1NWYWx1ZT4g
dmFsdWVGb3JQcm9wZXJ0eWluU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBDU1NQcm9wZXJ0eUlE
LCBSZW5kZXJFbGVtZW50KiA9IG51bGxwdHIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDczLDQ1ICsxMDczLDQ1IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpvcGUKICAgICByZXR1cm4gQm94T3JpZW50OjpIb3Jpem9udGFsOwogfQogCi10ZW1wbGF0
ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRUNhcHRpb25T
aWRlIGUpCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZl
VmFsdWUoQ2FwdGlvblNpZGUgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewog
ICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoIChlKSB7
Ci0gICAgY2FzZSBDQVBMRUZUOgorICAgIGNhc2UgQ2FwdGlvblNpZGU6OkxlZnQ6CiAgICAgICAg
IG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTGVmdDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBDQVBSSUdIVDoKKyAgICBjYXNlIENhcHRpb25TaWRlOjpSaWdodDoKICAgICAgICAgbV92YWx1
ZS52YWx1ZUlEID0gQ1NTVmFsdWVSaWdodDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDQVBU
T1A6CisgICAgY2FzZSBDYXB0aW9uU2lkZTo6VG9wOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQg
PSBDU1NWYWx1ZVRvcDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDQVBCT1RUT006CisgICAg
Y2FzZSBDYXB0aW9uU2lkZTo6Qm90dG9tOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NW
YWx1ZUJvdHRvbTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCi10ZW1wbGF0ZTw+IGlubGlu
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUNhcHRpb25TaWRlKCkgY29uc3QKK3RlbXBs
YXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBDYXB0aW9uU2lkZSgpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKGlzVmFsdWVJRCgpKTsKIAogICAgIHN3aXRjaCAobV92YWx1ZS52
YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUxlZnQ6Ci0gICAgICAgIHJldHVybiBDQVBMRUZU
OworICAgICAgICByZXR1cm4gQ2FwdGlvblNpZGU6OkxlZnQ7CiAgICAgY2FzZSBDU1NWYWx1ZVJp
Z2h0OgotICAgICAgICByZXR1cm4gQ0FQUklHSFQ7CisgICAgICAgIHJldHVybiBDYXB0aW9uU2lk
ZTo6UmlnaHQ7CiAgICAgY2FzZSBDU1NWYWx1ZVRvcDoKLSAgICAgICAgcmV0dXJuIENBUFRPUDsK
KyAgICAgICAgcmV0dXJuIENhcHRpb25TaWRlOjpUb3A7CiAgICAgY2FzZSBDU1NWYWx1ZUJvdHRv
bToKLSAgICAgICAgcmV0dXJuIENBUEJPVFRPTTsKKyAgICAgICAgcmV0dXJuIENhcHRpb25TaWRl
OjpCb3R0b207CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIENBUFRPUDsKKyAgICByZXR1cm4gQ2FwdGlv
blNpZGU6OlRvcDsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U1ByaW1pdGl2ZVZhbHVlKENsZWFyIGUpCkBAIC0xMTU1LDE0MCArMTE1NSwxNDAgQEAgdGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZQogICAgIHJldHVybiBDbGVhcjo6Tm9u
ZTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2
ZVZhbHVlKEVDdXJzb3IgZSkKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NQcmltaXRpdmVWYWx1ZShDdXJzb3JUeXBlIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVD
bGFzcykKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3
aXRjaCAoZSkgewotICAgIGNhc2UgQ3Vyc29yQXV0bzoKKyAgICBjYXNlIEN1cnNvclR5cGU6OkF1
dG86CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXV0bzsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBDdXJzb3JEZWZhdWx0OgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6RGVmYXVs
dDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVEZWZhdWx0OwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEN1cnNvck5vbmU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpOb25lOgog
ICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5vbmU7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQ3Vyc29yQ29udGV4dE1lbnU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpDb250ZXh0
TWVudToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVDb250ZXh0TWVudTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JIZWxwOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6
SGVscDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVIZWxwOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEN1cnNvclBvaW50ZXI6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpQb2lu
dGVyOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVBvaW50ZXI7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yUHJvZ3Jlc3M6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpQ
cm9ncmVzczoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVQcm9ncmVzczsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JXYWl0OgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6
V2FpdDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVXYWl0OwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEN1cnNvckNlbGw6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpDZWxsOgog
ICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUNlbGw7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQ3Vyc29yQ3Jvc3NoYWlyOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6Q3Jvc3NoYWly
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUNyb3NzaGFpcjsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JUZXh0OgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6VGV4dDoK
ICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVUZXh0OwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIEN1cnNvclZlcnRpY2FsVGV4dDoKKyAgICBjYXNlIEN1cnNvclR5cGU6OlZlcnRp
Y2FsVGV4dDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVWZXJ0aWNhbFRleHQ7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yQWxpYXM6CisgICAgY2FzZSBDdXJzb3JU
eXBlOjpBbGlhczoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBbGlhczsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JDb3B5OgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6
Q29weToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVDb3B5OwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEN1cnNvck1vdmU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpNb3ZlOgog
ICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU1vdmU7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQ3Vyc29yTm9Ecm9wOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6Tm9Ecm9wOgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5vRHJvcDsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBDdXJzb3JOb3RBbGxvd2VkOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6Tm90QWxsb3dl
ZDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb3RBbGxvd2VkOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEN1cnNvckdyYWI6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpHcmFi
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUdyYWI7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQ3Vyc29yR3JhYmJpbmc6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpHcmFiYmlu
ZzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVHcmFiYmluZzsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JFUmVzaXplOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6RVJl
c2l6ZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVFUmVzaXplOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEN1cnNvck5SZXNpemU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpO
UmVzaXplOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5SZXNpemU7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yTmVSZXNpemU6CisgICAgY2FzZSBDdXJzb3JUeXBl
OjpORVJlc2l6ZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOZVJlc2l6ZTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JOd1Jlc2l6ZToKKyAgICBjYXNlIEN1cnNv
clR5cGU6Ok5XUmVzaXplOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU53UmVz
aXplOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNvclNSZXNpemU6CisgICAgY2FzZSBD
dXJzb3JUeXBlOjpTUmVzaXplOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVNS
ZXNpemU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yU2VSZXNpemU6CisgICAgY2Fz
ZSBDdXJzb3JUeXBlOjpTRVJlc2l6ZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFs
dWVTZVJlc2l6ZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JTd1Jlc2l6ZToKKyAg
ICBjYXNlIEN1cnNvclR5cGU6OlNXUmVzaXplOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZVN3UmVzaXplOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNvcldSZXNpemU6
CisgICAgY2FzZSBDdXJzb3JUeXBlOjpXUmVzaXplOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQg
PSBDU1NWYWx1ZVdSZXNpemU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yRXdSZXNp
emU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpFV1Jlc2l6ZToKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVFd1Jlc2l6ZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JO
c1Jlc2l6ZToKKyAgICBjYXNlIEN1cnNvclR5cGU6Ok5TUmVzaXplOgogICAgICAgICBtX3ZhbHVl
LnZhbHVlSUQgPSBDU1NWYWx1ZU5zUmVzaXplOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1
cnNvck5lc3dSZXNpemU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpORVNXUmVzaXplOgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5lc3dSZXNpemU7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQ3Vyc29yTndzZVJlc2l6ZToKKyAgICBjYXNlIEN1cnNvclR5cGU6Ok5XU0VSZXNp
emU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTndzZVJlc2l6ZTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JDb2xSZXNpemU6CisgICAgY2FzZSBDdXJzb3JUeXBl
OjpDb2x1bW5SZXNpemU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQ29sUmVz
aXplOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNvclJvd1Jlc2l6ZToKKyAgICBjYXNl
IEN1cnNvclR5cGU6OlJvd1Jlc2l6ZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFs
dWVSb3dSZXNpemU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yQWxsU2Nyb2xsOgor
ICAgIGNhc2UgQ3Vyc29yVHlwZTo6QWxsU2Nyb2xsOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQg
PSBDU1NWYWx1ZUFsbFNjcm9sbDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3Jab29t
SW46CisgICAgY2FzZSBDdXJzb3JUeXBlOjpab29tSW46CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlWm9vbUluOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNvclpvb21P
dXQ6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpab29tT3V0OgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZVpvb21PdXQ7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAotdGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVDdXJzb3IoKSBjb25zdAor
dGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEN1cnNvclR5cGUo
KSBjb25zdAogewogICAgIEFTU0VSVChpc1ZhbHVlSUQoKSk7CiAgICAgc3dpdGNoIChtX3ZhbHVl
LnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlQ29weToKLSAgICAgICAgcmV0dXJuIEN1cnNv
ckNvcHk7CisgICAgICAgIHJldHVybiBDdXJzb3JUeXBlOjpDb3B5OwogICAgIGNhc2UgQ1NTVmFs
dWVXZWJraXRHcmFiOgotICAgICAgICByZXR1cm4gQ3Vyc29yR3JhYjsKKyAgICAgICAgcmV0dXJu
IEN1cnNvclR5cGU6OkdyYWI7CiAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdEdyYWJiaW5nOgotICAg
ICAgICByZXR1cm4gQ3Vyc29yR3JhYmJpbmc7CisgICAgICAgIHJldHVybiBDdXJzb3JUeXBlOjpH
cmFiYmluZzsKICAgICBjYXNlIENTU1ZhbHVlV2Via2l0Wm9vbUluOgotICAgICAgICByZXR1cm4g
Q3Vyc29yWm9vbUluOworICAgICAgICByZXR1cm4gQ3Vyc29yVHlwZTo6Wm9vbUluOwogICAgIGNh
c2UgQ1NTVmFsdWVXZWJraXRab29tT3V0OgotICAgICAgICByZXR1cm4gQ3Vyc29yWm9vbU91dDsK
KyAgICAgICAgcmV0dXJuIEN1cnNvclR5cGU6Olpvb21PdXQ7CiAgICAgY2FzZSBDU1NWYWx1ZU5v
bmU6Ci0gICAgICAgIHJldHVybiBDdXJzb3JOb25lOworICAgICAgICByZXR1cm4gQ3Vyc29yVHlw
ZTo6Tm9uZTsKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RUN1cnNv
cj4obV92YWx1ZS52YWx1ZUlEIC0gQ1NTVmFsdWVBdXRvKTsKKyAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEN1cnNvclR5cGU+KG1fdmFsdWUudmFsdWVJRCAtIENTU1ZhbHVlQXV0byk7CiAgICAg
fQogfQogCkBAIC0xMjk4LDEwICsxMjk4LDEwIEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1MKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lE
OwogICAgIHN3aXRjaCAoZSkgewotICAgIGNhc2UgQ3Vyc29yVmlzaWJpbGl0eUF1dG86CisgICAg
Y2FzZSBDdXJzb3JWaXNpYmlsaXR5OjpBdXRvOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZUF1dG87CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yVmlzaWJpbGl0eUF1
dG9IaWRlOgorICAgIGNhc2UgQ3Vyc29yVmlzaWJpbGl0eTo6QXV0b0hpZGU6CiAgICAgICAgIG1f
dmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXV0b0hpZGU7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
QEAgLTEzMTIsMTM5ICsxMzEyLDEzOSBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVW
YWx1ZTo6b3BlCiAgICAgQVNTRVJUKGlzVmFsdWVJRCgpKTsKIAogICAgIGlmIChtX3ZhbHVlLnZh
bHVlSUQgPT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICByZXR1cm4gQ3Vyc29yVmlzaWJpbGl0eUF1
dG87CisgICAgICAgIHJldHVybiBDdXJzb3JWaXNpYmlsaXR5OjpBdXRvOwogICAgIGlmIChtX3Zh
bHVlLnZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvSGlkZSkKLSAgICAgICAgcmV0dXJuIEN1cnNvclZp
c2liaWxpdHlBdXRvSGlkZTsKKyAgICAgICAgcmV0dXJuIEN1cnNvclZpc2liaWxpdHk6OkF1dG9I
aWRlOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEN1cnNvclZpc2li
aWxpdHlBdXRvOworICAgIHJldHVybiBDdXJzb3JWaXNpYmlsaXR5OjpBdXRvOwogfQogI2VuZGlm
CiAKLXRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1
ZShFRGlzcGxheSBlKQordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1By
aW1pdGl2ZVZhbHVlKERpc3BsYXlUeXBlIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFz
cykKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRj
aCAoZSkgewotICAgIGNhc2UgSU5MSU5FOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OklubGluZToK
ICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVJbmxpbmU7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQkxPQ0s6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6QmxvY2s6CiAgICAgICAg
IG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQmxvY2s7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgTElTVF9JVEVNOgorICAgIGNhc2UgRGlzcGxheVR5cGU6Okxpc3RJdGVtOgogICAgICAgICBt
X3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUxpc3RJdGVtOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIENPTVBBQ1Q6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6Q29tcGFjdDoKICAgICAgICAgbV92
YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVDb21wYWN0OwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IElOTElORV9CTE9DSzoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpJbmxpbmVCbG9jazoKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVJbmxpbmVCbG9jazsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBUQUJMRToKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZToKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVUYWJsZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBJTkxJTkVfVEFCTEU6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6SW5saW5lVGFibGU6CiAgICAg
ICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlSW5saW5lVGFibGU7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgVEFCTEVfUk9XX0dST1VQOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxl
Um93R3JvdXA6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVGFibGVSb3dHcm91
cDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUQUJMRV9IRUFERVJfR1JPVVA6CisgICAgY2Fz
ZSBEaXNwbGF5VHlwZTo6VGFibGVIZWFkZXJHcm91cDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVUYWJsZUhlYWRlckdyb3VwOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRB
QkxFX0ZPT1RFUl9HUk9VUDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZUZvb3Rlckdyb3Vw
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVRhYmxlRm9vdGVyR3JvdXA7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgVEFCTEVfUk9XOgorICAgIGNhc2UgRGlzcGxheVR5cGU6
OlRhYmxlUm93OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVRhYmxlUm93Owog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFRBQkxFX0NPTFVNTl9HUk9VUDoKKyAgICBjYXNlIERp
c3BsYXlUeXBlOjpUYWJsZUNvbHVtbkdyb3VwOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZVRhYmxlQ29sdW1uR3JvdXA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVEFCTEVf
Q09MVU1OOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlQ29sdW1uOgogICAgICAgICBtX3Zh
bHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVRhYmxlQ29sdW1uOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFRBQkxFX0NFTEw6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFibGVDZWxsOgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVRhYmxlQ2VsbDsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBUQUJMRV9DQVBUSU9OOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlQ2FwdGlv
bjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVUYWJsZUNhcHRpb247CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQk9YOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OkJveDoKICAg
ICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVXZWJraXRCb3g7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSU5MSU5FX0JPWDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpJbmxpbmVCb3g6
CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlV2Via2l0SW5saW5lQm94OwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEZMRVg6Ci0gICAgY2FzZSBXRUJLSVRfRkxFWDoKKyAgICBj
YXNlIERpc3BsYXlUeXBlOjpGbGV4OgorICAgIGNhc2UgRGlzcGxheVR5cGU6OldlYktpdEZsZXg6
CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRmxleDsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBJTkxJTkVfRkxFWDoKLSAgICBjYXNlIFdFQktJVF9JTkxJTkVfRkxFWDoKKyAg
ICBjYXNlIERpc3BsYXlUeXBlOjpJbmxpbmVGbGV4OgorICAgIGNhc2UgRGlzcGxheVR5cGU6Oldl
YktpdElubGluZUZsZXg6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlSW5saW5l
RmxleDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHUklEOgorICAgIGNhc2UgRGlzcGxheVR5
cGU6OkdyaWQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlR3JpZDsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBJTkxJTkVfR1JJRDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpJ
bmxpbmVHcmlkOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUlubGluZUdyaWQ7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTk9ORToKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpO
b25lOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5vbmU7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQ09OVEVOVFM6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6Q29udGVudHM6
CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQ29udGVudHM7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9w
ZXJhdG9yIEVEaXNwbGF5KCkgY29uc3QKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpvcGVyYXRvciBEaXNwbGF5VHlwZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzVmFsdWVJ
RCgpKTsKIAogICAgIGlmIChtX3ZhbHVlLnZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lKQotICAgICAg
ICByZXR1cm4gTk9ORTsKKyAgICAgICAgcmV0dXJuIERpc3BsYXlUeXBlOjpOb25lOwogCi0gICAg
RURpc3BsYXkgZGlzcGxheSA9IHN0YXRpY19jYXN0PEVEaXNwbGF5PihtX3ZhbHVlLnZhbHVlSUQg
LSBDU1NWYWx1ZUlubGluZSk7Ci0gICAgQVNTRVJUKGRpc3BsYXkgPj0gSU5MSU5FICYmIGRpc3Bs
YXkgPD0gTk9ORSk7Ci0gICAgaWYgKGRpc3BsYXkgPT0gV0VCS0lUX0ZMRVgpCi0gICAgICAgIHJl
dHVybiBGTEVYOwotICAgIGlmIChkaXNwbGF5ID09IFdFQktJVF9JTkxJTkVfRkxFWCkKLSAgICAg
ICAgcmV0dXJuIElOTElORV9GTEVYOworICAgIERpc3BsYXlUeXBlIGRpc3BsYXkgPSBzdGF0aWNf
Y2FzdDxEaXNwbGF5VHlwZT4obV92YWx1ZS52YWx1ZUlEIC0gQ1NTVmFsdWVJbmxpbmUpOworICAg
IEFTU0VSVChkaXNwbGF5ID49IERpc3BsYXlUeXBlOjpJbmxpbmUgJiYgZGlzcGxheSA8PSBEaXNw
bGF5VHlwZTo6Tm9uZSk7CisgICAgaWYgKGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OldlYktpdEZs
ZXgpCisgICAgICAgIHJldHVybiBEaXNwbGF5VHlwZTo6RmxleDsKKyAgICBpZiAoZGlzcGxheSA9
PSBEaXNwbGF5VHlwZTo6V2ViS2l0SW5saW5lRmxleCkKKyAgICAgICAgcmV0dXJuIERpc3BsYXlU
eXBlOjpJbmxpbmVGbGV4OwogICAgIHJldHVybiBkaXNwbGF5OwogfQogCi10ZW1wbGF0ZTw+IGlu
bGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRUVtcHR5Q2VsbCBlKQor
dGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVt
cHR5Q2VsbCBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7CiAgICAgbV9wcmlt
aXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsKICAgICBzd2l0Y2ggKGUpIHsKLSAgICBjYXNl
IFNIT1c6CisgICAgY2FzZSBFbXB0eUNlbGw6OlNob3c6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlU2hvdzsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBISURFOgorICAgIGNh
c2UgRW1wdHlDZWxsOjpIaWRlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUhp
ZGU7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVFbXB0eUNlbGwoKSBjb25zdAordGVtcGxhdGU8PiBpbmxp
bmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVtcHR5Q2VsbCgpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKGlzVmFsdWVJRCgpKTsKIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAg
ICAgY2FzZSBDU1NWYWx1ZVNob3c6Ci0gICAgICAgIHJldHVybiBTSE9XOworICAgICAgICByZXR1
cm4gRW1wdHlDZWxsOjpTaG93OwogICAgIGNhc2UgQ1NTVmFsdWVIaWRlOgotICAgICAgICByZXR1
cm4gSElERTsKKyAgICAgICAgcmV0dXJuIEVtcHR5Q2VsbDo6SGlkZTsKICAgICBkZWZhdWx0Ogog
ICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gU0hPVzsKKyAgICByZXR1cm4gRW1wdHlDZWxsOjpTaG93OwogfQogCiB0ZW1wbGF0ZTw+
IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRmxleERpcmVjdGlv
biBlKQpAQCAtMTY4MSwyOTcgKzE2ODEsMjk3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1p
dGl2ZVZhbHVlOjpvcGUKICAgICByZXR1cm4gTGluZUJyZWFrOjpBdXRvOwogfQogCi10ZW1wbGF0
ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRUxpc3RTdHls
ZVBvc2l0aW9uIGUpCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJp
bWl0aXZlVmFsdWUoTGlzdFN0eWxlUG9zaXRpb24gZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2
ZUNsYXNzKQogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAg
c3dpdGNoIChlKSB7Ci0gICAgY2FzZSBPVVRTSURFOgorICAgIGNhc2UgTGlzdFN0eWxlUG9zaXRp
b246Ok91dHNpZGU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlT3V0c2lkZTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJTlNJREU6CisgICAgY2FzZSBMaXN0U3R5bGVQb3Np
dGlvbjo6SW5zaWRlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUluc2lkZTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRp
dmVWYWx1ZTo6b3BlcmF0b3IgRUxpc3RTdHlsZVBvc2l0aW9uKCkgY29uc3QKK3RlbXBsYXRlPD4g
aW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBMaXN0U3R5bGVQb3NpdGlvbigpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKGlzVmFsdWVJRCgpKTsKIAogICAgIHN3aXRjaCAobV92YWx1ZS52
YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZU91dHNpZGU6Ci0gICAgICAgIHJldHVybiBPVVRT
SURFOworICAgICAgICByZXR1cm4gTGlzdFN0eWxlUG9zaXRpb246Ok91dHNpZGU7CiAgICAgY2Fz
ZSBDU1NWYWx1ZUluc2lkZToKLSAgICAgICAgcmV0dXJuIElOU0lERTsKKyAgICAgICAgcmV0dXJu
IExpc3RTdHlsZVBvc2l0aW9uOjpJbnNpZGU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIE9VVFNJREU7
CisgICAgcmV0dXJuIExpc3RTdHlsZVBvc2l0aW9uOjpPdXRzaWRlOwogfQogCi10ZW1wbGF0ZTw+
IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRUxpc3RTdHlsZVR5
cGUgZSkKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVW
YWx1ZShMaXN0U3R5bGVUeXBlIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsK
ICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAoZSkg
ewotICAgIGNhc2UgQWZhcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFmYXI6CiAgICAgICAg
IG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQWZhcjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBBbWhhcmljOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QW1oYXJpYzoKICAgICAgICAgbV92
YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBbWhhcmljOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEFtaGFyaWNBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QW1oYXJpY0FiZWdlZGU6
CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQW1oYXJpY0FiZWdlZGU7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQXJhYmljSW5kaWM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpBcmFiaWNJbmRpYzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBcmFiaWNJ
bmRpYzsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBcm1lbmlhbjoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OkFybWVuaWFuOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUFy
bWVuaWFuOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEFzdGVyaXNrczoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkFzdGVyaXNrczoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFs
dWVBc3Rlcmlza3M7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQmluYXJ5TGlzdFN0eWxlOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QmluYXJ5OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQg
PSBDU1NWYWx1ZUJpbmFyeTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBCZW5nYWxpOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6QmVuZ2FsaToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0g
Q1NTVmFsdWVCZW5nYWxpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENhbWJvZGlhbjoKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OkNhbWJvZGlhbjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVDYW1ib2RpYW47CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ2lyY2xlOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2lyY2xlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQg
PSBDU1NWYWx1ZUNpcmNsZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDamtFYXJ0aGx5QnJh
bmNoOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2prRWFydGhseUJyYW5jaDoKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVDamtFYXJ0aGx5QnJhbmNoOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIENqa0hlYXZlbmx5U3RlbToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNq
a0hlYXZlbmx5U3RlbToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVDamtIZWF2
ZW5seVN0ZW07CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ0pLSWRlb2dyYXBoaWM6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpDSktJZGVvZ3JhcGhpYzoKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVDamtJZGVvZ3JhcGhpYzsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBE
ZWNpbWFsTGVhZGluZ1plcm86CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEZWNpbWFsTGVhZGlu
Z1plcm86CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRGVjaW1hbExlYWRpbmda
ZXJvOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERlY2ltYWxMaXN0U3R5bGU6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpEZWNpbWFsOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NW
YWx1ZURlY2ltYWw7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGV2YW5hZ2FyaToKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OkRldmFuYWdhcmk6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9
IENTU1ZhbHVlRGV2YW5hZ2FyaTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEaXNjOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6RGlzYzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NT
VmFsdWVEaXNjOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV0aGlvcGljOgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6RXRoaW9waWM6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlRXRoaW9waWM7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlOgogICAgICAgICBtX3ZhbHVl
LnZhbHVlSUQgPSBDU1NWYWx1ZUV0aGlvcGljQWJlZ2VkZTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBFdGhpb3BpY0FiZWdlZGVBbUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9w
aWNBYmVnZWRlQW1FdDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVFdGhpb3Bp
Y0FiZWdlZGVBbUV0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZUdl
ejoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZUdlejoKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVFdGhpb3BpY0FiZWdlZGVHZXo7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlVGlFcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkV0aGlvcGljQWJlZ2VkZVRpRXI6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlRXRoaW9waWNBYmVnZWRlVGlFcjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFdGhpb3Bp
Y0FiZWdlZGVUaUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlVGlF
dDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVFdGhpb3BpY0FiZWdlZGVUaUV0
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVBYUVyOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUFhRXI6CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlRXRoaW9waWNIYWxlaGFtZUFhRXI7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUFhRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpF
dGhpb3BpY0hhbGVoYW1lQWFFdDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVF
dGhpb3BpY0hhbGVoYW1lQWFFdDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFdGhpb3BpY0hh
bGVoYW1lQW1FdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVBbUV0
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUV0aGlvcGljSGFsZWhhbWVBbUV0
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVHZXo6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lR2V6OgogICAgICAgICBtX3ZhbHVlLnZh
bHVlSUQgPSBDU1NWYWx1ZUV0aGlvcGljSGFsZWhhbWVHZXo7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgRXRoaW9waWNIYWxlaGFtZU9tRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhp
b3BpY0hhbGVoYW1lT21FdDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVFdGhp
b3BpY0hhbGVoYW1lT21FdDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVo
YW1lU2lkRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lU2lkRXQ6
CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRXRoaW9waWNIYWxlaGFtZVNpZEV0
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVTb0V0OgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVNvRXQ6CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlRXRoaW9waWNIYWxlaGFtZVNvRXQ7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVRpRXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpF
dGhpb3BpY0hhbGVoYW1lVGlFcjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVF
dGhpb3BpY0hhbGVoYW1lVGlFcjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFdGhpb3BpY0hh
bGVoYW1lVGlFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVUaUV0
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUV0aGlvcGljSGFsZWhhbWVUaUV0
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVUaWc6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lVGlnOgogICAgICAgICBtX3ZhbHVlLnZh
bHVlSUQgPSBDU1NWYWx1ZUV0aGlvcGljSGFsZWhhbWVUaWc7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgRm9vdG5vdGVzOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Rm9vdG5vdGVzOgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUZvb3Rub3RlczsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBHZW9yZ2lhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okdlb3JnaWFuOgog
ICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUdlb3JnaWFuOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIEd1amFyYXRpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6R3VqYXJhdGk6
CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlR3VqYXJhdGk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgR3VybXVraGk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpHdXJtdWto
aToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVHdXJtdWtoaTsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBIYW5ndWw6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIYW5ndWw6
CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlSGFuZ3VsOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIEhhbmd1bENvbnNvbmFudDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okhh
bmd1bENvbnNvbmFudDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVIYW5ndWxD
b25zb25hbnQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSGVicmV3OgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6SGVicmV3OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUhl
YnJldzsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIaXJhZ2FuYToKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OkhpcmFnYW5hOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUhp
cmFnYW5hOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEhpcmFnYW5hSXJvaGE6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpIaXJhZ2FuYUlyb2hhOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQg
PSBDU1NWYWx1ZUhpcmFnYW5hSXJvaGE7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgS2FubmFk
YToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okthbm5hZGE6CiAgICAgICAgIG1fdmFsdWUudmFs
dWVJRCA9IENTU1ZhbHVlS2FubmFkYTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBLYXRha2Fu
YToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkthdGFrYW5hOgogICAgICAgICBtX3ZhbHVlLnZh
bHVlSUQgPSBDU1NWYWx1ZUthdGFrYW5hOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEthdGFr
YW5hSXJvaGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLYXRha2FuYUlyb2hhOgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUthdGFrYW5hSXJvaGE7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgS2htZXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLaG1lcjoKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVLaG1lcjsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBMYW86CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMYW86CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlTGFvOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExvd2VyQWxw
aGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckFscGhhOgogICAgICAgICBtX3ZhbHVl
LnZhbHVlSUQgPSBDU1NWYWx1ZUxvd2VyQWxwaGE7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
TG93ZXJBcm1lbmlhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyQXJtZW5pYW46CiAg
ICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTG93ZXJBcm1lbmlhbjsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBMb3dlckdyZWVrOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93
ZXJHcmVlazoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVMb3dlckdyZWVrOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIExvd2VySGV4YWRlY2ltYWw6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpMb3dlckhleGFkZWNpbWFsOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZUxvd2VySGV4YWRlY2ltYWw7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTG93ZXJM
YXRpbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyTGF0aW46CiAgICAgICAgIG1fdmFs
dWUudmFsdWVJRCA9IENTU1ZhbHVlTG93ZXJMYXRpbjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBMb3dlck5vcndlZ2lhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyTm9yd2VnaWFu
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUxvd2VyTm9yd2VnaWFuOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIExvd2VyUm9tYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpMb3dlclJvbWFuOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUxvd2VyUm9t
YW47CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWFsYXlhbGFtOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6TWFsYXlhbGFtOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU1h
bGF5YWxhbTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNb25nb2xpYW46CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpNb25nb2xpYW46CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlTW9uZ29saWFuOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE15YW5tYXI6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpNeWFubWFyOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NW
YWx1ZU15YW5tYXI7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTm9uZUxpc3RTdHlsZToKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6Ok5vbmU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlTm9uZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPY3RhbDoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6Ok9jdGFsOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU9j
dGFsOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE9yaXlhOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6T3JpeWE6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlT3JpeWE7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3JvbW86CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpP
cm9tbzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVPcm9tbzsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBQZXJzaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6UGVyc2lh
bjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVQZXJzaWFuOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFNpZGFtYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlNpZGFtYToK
ICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVTaWRhbWE7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgU29tYWxpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6U29tYWxpOgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVNvbWFsaTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBTcXVhcmU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpTcXVhcmU6CiAgICAgICAg
IG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlU3F1YXJlOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFRlbHVndToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRlbHVndToKICAgICAgICAgbV92
YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVUZWx1Z3U7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
VGhhaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRoYWk6CiAgICAgICAgIG1fdmFsdWUudmFs
dWVJRCA9IENTU1ZhbHVlVGhhaTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUaWJldGFuOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGliZXRhbjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVUaWJldGFuOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRpZ3JlOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlVGlncmU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVGlncmlueWFFcjoKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXI6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9
IENTU1ZhbHVlVGlncmlueWFFcjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUaWdyaW55YUVy
QWJlZ2VkZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXJBYmVnZWRlOgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVRpZ3JpbnlhRXJBYmVnZWRlOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFRpZ3JpbnlhRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpU
aWdyaW55YUV0OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVRpZ3JpbnlhRXQ7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVGlncmlueWFFdEFiZWdlZGU6CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpUaWdyaW55YUV0QWJlZ2VkZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVUaWdyaW55YUV0QWJlZ2VkZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBV
cHBlckFscGhhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJBbHBoYToKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVVcHBlckFscGhhOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFVwcGVyQXJtZW5pYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckFybWVu
aWFuOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVVwcGVyQXJtZW5pYW47CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgVXBwZXJHcmVlazoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OlVwcGVyR3JlZWs6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVXBwZXJH
cmVlazsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBVcHBlckhleGFkZWNpbWFsOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJIZXhhZGVjaW1hbDoKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVVcHBlckhleGFkZWNpbWFsOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IFVwcGVyTGF0aW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckxhdGluOgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVVwcGVyTGF0aW47CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgVXBwZXJOb3J3ZWdpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlck5v
cndlZ2lhbjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVVcHBlck5vcndlZ2lh
bjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBVcHBlclJvbWFuOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6VXBwZXJSb21hbjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVV
cHBlclJvbWFuOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFVyZHU6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpVcmR1OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVVyZHU7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0
aXZlVmFsdWU6Om9wZXJhdG9yIEVMaXN0U3R5bGVUeXBlKCkgY29uc3QKK3RlbXBsYXRlPD4gaW5s
aW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBMaXN0U3R5bGVUeXBlKCkgY29uc3QKIHsK
ICAgICBBU1NFUlQoaXNWYWx1ZUlEKCkpOwogCiAgICAgc3dpdGNoIChtX3ZhbHVlLnZhbHVlSUQp
IHsKICAgICBjYXNlIENTU1ZhbHVlTm9uZToKLSAgICAgICAgcmV0dXJuIE5vbmVMaXN0U3R5bGU7
CisgICAgICAgIHJldHVybiBMaXN0U3R5bGVUeXBlOjpOb25lOwogICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxFTGlzdFN0eWxlVHlwZT4obV92YWx1ZS52YWx1ZUlEIC0g
Q1NTVmFsdWVEaXNjKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PExpc3RTdHlsZVR5cGU+
KG1fdmFsdWUudmFsdWVJRCAtIENTU1ZhbHVlRGlzYyk7CiAgICAgfQogfQogCkBAIC0yMjAyLDM0
ICsyMjAyLDM0IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1MKIHsK
ICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAoZSkg
ewotICAgIGNhc2UgQXV0b0JyZWFrQmV0d2VlbjoKKyAgICBjYXNlIEJyZWFrQmV0d2Vlbjo6QXV0
bzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBdXRvOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIEF2b2lkQnJlYWtCZXR3ZWVuOgorICAgIGNhc2UgQnJlYWtCZXR3ZWVuOjpB
dm9pZDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBdm9pZDsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBBdm9pZENvbHVtbkJyZWFrQmV0d2VlbjoKKyAgICBjYXNlIEJyZWFr
QmV0d2Vlbjo6QXZvaWRDb2x1bW46CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVl
QXZvaWRDb2x1bW47CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQXZvaWRQYWdlQnJlYWtCZXR3
ZWVuOgorICAgIGNhc2UgQnJlYWtCZXR3ZWVuOjpBdm9pZFBhZ2U6CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlQXZvaWRQYWdlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENv
bHVtbkJyZWFrQmV0d2VlbjoKKyAgICBjYXNlIEJyZWFrQmV0d2Vlbjo6Q29sdW1uOgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUNvbHVtbjsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBQYWdlQnJlYWtCZXR3ZWVuOgorICAgIGNhc2UgQnJlYWtCZXR3ZWVuOjpQYWdlOgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVBhZ2U7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgTGVmdFBhZ2VCcmVha0JldHdlZW46CisgICAgY2FzZSBCcmVha0JldHdlZW46OkxlZnRQ
YWdlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUxlZnQ7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgUmlnaHRQYWdlQnJlYWtCZXR3ZWVuOgorICAgIGNhc2UgQnJlYWtCZXR3
ZWVuOjpSaWdodFBhZ2U6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlUmlnaHQ7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUmVjdG9QYWdlQnJlYWtCZXR3ZWVuOgorICAgIGNh
c2UgQnJlYWtCZXR3ZWVuOjpSZWN0b1BhZ2U6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlUmVjdG87CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVmVyc29QYWdlQnJlYWtCZXR3
ZWVuOgorICAgIGNhc2UgQnJlYWtCZXR3ZWVuOjpWZXJzb1BhZ2U6CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlVmVyc287CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTIyNDEs
MzEgKzIyNDEsMzEgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZQog
CiAgICAgc3dpdGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlQXV0bzoK
LSAgICAgICAgcmV0dXJuIEF1dG9CcmVha0JldHdlZW47CisgICAgICAgIHJldHVybiBCcmVha0Jl
dHdlZW46OkF1dG87CiAgICAgY2FzZSBDU1NWYWx1ZUF2b2lkOgotICAgICAgICByZXR1cm4gQXZv
aWRCcmVha0JldHdlZW47CisgICAgICAgIHJldHVybiBCcmVha0JldHdlZW46OkF2b2lkOwogICAg
IGNhc2UgQ1NTVmFsdWVBdm9pZENvbHVtbjoKLSAgICAgICAgcmV0dXJuIEF2b2lkQ29sdW1uQnJl
YWtCZXR3ZWVuOworICAgICAgICByZXR1cm4gQnJlYWtCZXR3ZWVuOjpBdm9pZENvbHVtbjsKICAg
ICBjYXNlIENTU1ZhbHVlQXZvaWRQYWdlOgotICAgICAgICByZXR1cm4gQXZvaWRQYWdlQnJlYWtC
ZXR3ZWVuOworICAgICAgICByZXR1cm4gQnJlYWtCZXR3ZWVuOjpBdm9pZFBhZ2U7CiAgICAgY2Fz
ZSBDU1NWYWx1ZUNvbHVtbjoKLSAgICAgICAgcmV0dXJuIENvbHVtbkJyZWFrQmV0d2VlbjsKKyAg
ICAgICAgcmV0dXJuIEJyZWFrQmV0d2Vlbjo6Q29sdW1uOwogICAgIGNhc2UgQ1NTVmFsdWVQYWdl
OgotICAgICAgICByZXR1cm4gUGFnZUJyZWFrQmV0d2VlbjsKKyAgICAgICAgcmV0dXJuIEJyZWFr
QmV0d2Vlbjo6UGFnZTsKICAgICBjYXNlIENTU1ZhbHVlTGVmdDoKLSAgICAgICAgcmV0dXJuIExl
ZnRQYWdlQnJlYWtCZXR3ZWVuOworICAgICAgICByZXR1cm4gQnJlYWtCZXR3ZWVuOjpMZWZ0UGFn
ZTsKICAgICBjYXNlIENTU1ZhbHVlUmlnaHQ6Ci0gICAgICAgIHJldHVybiBSaWdodFBhZ2VCcmVh
a0JldHdlZW47CisgICAgICAgIHJldHVybiBCcmVha0JldHdlZW46OlJpZ2h0UGFnZTsKICAgICBj
YXNlIENTU1ZhbHVlUmVjdG86Ci0gICAgICAgIHJldHVybiBSZWN0b1BhZ2VCcmVha0JldHdlZW47
CisgICAgICAgIHJldHVybiBCcmVha0JldHdlZW46OlJlY3RvUGFnZTsKICAgICBjYXNlIENTU1Zh
bHVlVmVyc286Ci0gICAgICAgIHJldHVybiBWZXJzb1BhZ2VCcmVha0JldHdlZW47CisgICAgICAg
IHJldHVybiBCcmVha0JldHdlZW46OlZlcnNvUGFnZTsKICAgICBkZWZhdWx0OgogICAgICAgICBi
cmVhazsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQXV0
b0JyZWFrQmV0d2VlbjsKKyAgICByZXR1cm4gQnJlYWtCZXR3ZWVuOjpBdXRvOwogfQogCiB0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoQnJlYWtJ
bnNpZGUgZSkKQEAgLTIyNzMsMTYgKzIyNzMsMTYgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTUwogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVf
SUQ7CiAgICAgc3dpdGNoIChlKSB7Ci0gICAgY2FzZSBBdXRvQnJlYWtJbnNpZGU6CisgICAgY2Fz
ZSBCcmVha0luc2lkZTo6QXV0bzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVB
dXRvOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEF2b2lkQnJlYWtJbnNpZGU6CisgICAgY2Fz
ZSBCcmVha0luc2lkZTo6QXZvaWQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVl
QXZvaWQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQXZvaWRDb2x1bW5CcmVha0luc2lkZToK
KyAgICBjYXNlIEJyZWFrSW5zaWRlOjpBdm9pZENvbHVtbjoKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVBdm9pZENvbHVtbjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBdm9p
ZFBhZ2VCcmVha0luc2lkZToKKyAgICBjYXNlIEJyZWFrSW5zaWRlOjpBdm9pZFBhZ2U6CiAgICAg
ICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXZvaWRQYWdlOwogICAgICAgICBicmVhazsK
ICAgICB9CkBAIC0yMjk0LDE5ICsyMjk0LDE5IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1p
dGl2ZVZhbHVlOjpvcGUKICAgICAKICAgICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkgewogICAg
IGNhc2UgQ1NTVmFsdWVBdXRvOgotICAgICAgICByZXR1cm4gQXV0b0JyZWFrSW5zaWRlOworICAg
ICAgICByZXR1cm4gQnJlYWtJbnNpZGU6OkF1dG87CiAgICAgY2FzZSBDU1NWYWx1ZUF2b2lkOgot
ICAgICAgICByZXR1cm4gQXZvaWRCcmVha0luc2lkZTsKKyAgICAgICAgcmV0dXJuIEJyZWFrSW5z
aWRlOjpBdm9pZDsKICAgICBjYXNlIENTU1ZhbHVlQXZvaWRDb2x1bW46Ci0gICAgICAgIHJldHVy
biBBdm9pZENvbHVtbkJyZWFrSW5zaWRlOworICAgICAgICByZXR1cm4gQnJlYWtJbnNpZGU6OkF2
b2lkQ29sdW1uOwogICAgIGNhc2UgQ1NTVmFsdWVBdm9pZFBhZ2U6Ci0gICAgICAgIHJldHVybiBB
dm9pZFBhZ2VCcmVha0luc2lkZTsKKyAgICAgICAgcmV0dXJuIEJyZWFrSW5zaWRlOjpBdm9pZFBh
Z2U7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEF1dG9CcmVha0luc2lkZTsKKyAgICByZXR1cm4gQnJl
YWtJbnNpZGU6OkF1dG87CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NQcmltaXRpdmVWYWx1ZShQb3NpdGlvblR5cGUgZSkKQEAgLTI0MzAsNTMgKzI0MzAsNTMg
QEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZQogICAgIHJldHVybiBU
YWJsZUxheW91dFR5cGU6OkF1dG87CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShFVGV4dEFsaWduIGUpCit0ZW1wbGF0ZTw+IGlubGlu
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoVGV4dEFsaWduTW9kZSBlKQog
ICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlw
ZSA9IENTU19WQUxVRV9JRDsKICAgICBzd2l0Y2ggKGUpIHsKLSAgICBjYXNlIFRBU1RBUlQ6Cisg
ICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpTdGFydDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0g
Q1NTVmFsdWVTdGFydDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUQUVORDoKKyAgICBjYXNl
IFRleHRBbGlnbk1vZGU6OkVuZDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVF
bmQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTEVGVDoKKyAgICBjYXNlIFRleHRBbGlnbk1v
ZGU6OkxlZnQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTGVmdDsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBSSUdIVDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlJpZ2h0
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVJpZ2h0OwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIENFTlRFUjoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAg
ICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVDZW50ZXI7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgSlVTVElGWToKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6Okp1c3RpZnk6CiAgICAg
ICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlSnVzdGlmeTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBXRUJLSVRfTEVGVDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdExlZnQ6
CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlV2Via2l0TGVmdDsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBXRUJLSVRfUklHSFQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpX
ZWJLaXRSaWdodDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVXZWJraXRSaWdo
dDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXRUJLSVRfQ0VOVEVSOgorICAgIGNhc2UgVGV4
dEFsaWduTW9kZTo6V2ViS2l0Q2VudGVyOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NW
YWx1ZVdlYmtpdENlbnRlcjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCi10ZW1wbGF0ZTw+
IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRVRleHRBbGlnbigpIGNvbnN0Cit0
ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgVGV4dEFsaWduTW9k
ZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzVmFsdWVJRCgpKTsKIAogICAgIHN3aXRjaCAobV92
YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdEF1dG86IC8vIExlZ2FjeSAt
d2Via2l0LWF1dG8uIEVxaXV2YWxlbnQgdG8gc3RhcnQuCiAgICAgY2FzZSBDU1NWYWx1ZVN0YXJ0
OgotICAgICAgICByZXR1cm4gVEFTVEFSVDsKKyAgICAgICAgcmV0dXJuIFRleHRBbGlnbk1vZGU6
OlN0YXJ0OwogICAgIGNhc2UgQ1NTVmFsdWVFbmQ6Ci0gICAgICAgIHJldHVybiBUQUVORDsKKyAg
ICAgICAgcmV0dXJuIFRleHRBbGlnbk1vZGU6OkVuZDsKICAgICBkZWZhdWx0OgotICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RVRleHRBbGlnbj4obV92YWx1ZS52YWx1ZUlEIC0gQ1NTVmFsdWVM
ZWZ0KTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRBbGlnbk1vZGU+KG1fdmFsdWUu
dmFsdWVJRCAtIENTU1ZhbHVlTGVmdCk7CiAgICAgfQogfQogCkBAIC0yNDg2LDI1ICsyNDg2LDI1
IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1MKIHsKICAgICBtX3By
aW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAoZSkgewotICAgIGNh
c2UgVGV4dEFsaWduTGFzdFN0YXJ0OgorICAgIGNhc2UgVGV4dEFsaWduTGFzdDo6U3RhcnQ6CiAg
ICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlU3RhcnQ7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgVGV4dEFsaWduTGFzdEVuZDoKKyAgICBjYXNlIFRleHRBbGlnbkxhc3Q6OkVuZDoK
ICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVFbmQ7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgVGV4dEFsaWduTGFzdExlZnQ6CisgICAgY2FzZSBUZXh0QWxpZ25MYXN0OjpMZWZ0
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUxlZnQ7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgVGV4dEFsaWduTGFzdFJpZ2h0OgorICAgIGNhc2UgVGV4dEFsaWduTGFzdDo6
UmlnaHQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlUmlnaHQ7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgVGV4dEFsaWduTGFzdENlbnRlcjoKKyAgICBjYXNlIFRleHRBbGln
bkxhc3Q6OkNlbnRlcjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVDZW50ZXI7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVGV4dEFsaWduTGFzdEp1c3RpZnk6CisgICAgY2Fz
ZSBUZXh0QWxpZ25MYXN0OjpKdXN0aWZ5OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NW
YWx1ZUp1c3RpZnk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVGV4dEFsaWduTGFzdEF1dG86
CisgICAgY2FzZSBUZXh0QWxpZ25MYXN0OjpBdXRvOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQg
PSBDU1NWYWx1ZUF1dG87CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTI1MTYsMjUgKzI1MTYs
MjUgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZQogCiAgICAgc3dp
dGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlQXV0bzoKLSAgICAgICAg
cmV0dXJuIFRleHRBbGlnbkxhc3RBdXRvOworICAgICAgICByZXR1cm4gVGV4dEFsaWduTGFzdDo6
QXV0bzsKICAgICBjYXNlIENTU1ZhbHVlU3RhcnQ6Ci0gICAgICAgIHJldHVybiBUZXh0QWxpZ25M
YXN0U3RhcnQ7CisgICAgICAgIHJldHVybiBUZXh0QWxpZ25MYXN0OjpTdGFydDsKICAgICBjYXNl
IENTU1ZhbHVlRW5kOgotICAgICAgICByZXR1cm4gVGV4dEFsaWduTGFzdEVuZDsKKyAgICAgICAg
cmV0dXJuIFRleHRBbGlnbkxhc3Q6OkVuZDsKICAgICBjYXNlIENTU1ZhbHVlTGVmdDoKLSAgICAg
ICAgcmV0dXJuIFRleHRBbGlnbkxhc3RMZWZ0OworICAgICAgICByZXR1cm4gVGV4dEFsaWduTGFz
dDo6TGVmdDsKICAgICBjYXNlIENTU1ZhbHVlUmlnaHQ6Ci0gICAgICAgIHJldHVybiBUZXh0QWxp
Z25MYXN0UmlnaHQ7CisgICAgICAgIHJldHVybiBUZXh0QWxpZ25MYXN0OjpSaWdodDsKICAgICBj
YXNlIENTU1ZhbHVlQ2VudGVyOgotICAgICAgICByZXR1cm4gVGV4dEFsaWduTGFzdENlbnRlcjsK
KyAgICAgICAgcmV0dXJuIFRleHRBbGlnbkxhc3Q6OkNlbnRlcjsKICAgICBjYXNlIENTU1ZhbHVl
SnVzdGlmeToKLSAgICAgICAgcmV0dXJuIFRleHRBbGlnbkxhc3RKdXN0aWZ5OworICAgICAgICBy
ZXR1cm4gVGV4dEFsaWduTGFzdDo6SnVzdGlmeTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVh
azsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGV4dEFs
aWduTGFzdEF1dG87CisgICAgcmV0dXJuIFRleHRBbGlnbkxhc3Q6OkF1dG87CiB9CiAKIHRlbXBs
YXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShUZXh0SnVz
dGlmeSBlKQpAQCAtMjU0MiwxNiArMjU0MiwxNiBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTCiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9J
RDsKICAgICBzd2l0Y2ggKGUpIHsKLSAgICBjYXNlIFRleHRKdXN0aWZ5QXV0bzoKKyAgICBjYXNl
IFRleHRKdXN0aWZ5OjpBdXRvOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUF1
dG87CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVGV4dEp1c3RpZnlOb25lOgorICAgIGNhc2Ug
VGV4dEp1c3RpZnk6Ok5vbmU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTm9u
ZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUZXh0SnVzdGlmeUludGVyV29yZDoKKyAgICBj
YXNlIFRleHRKdXN0aWZ5OjpJbnRlcldvcmQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlSW50ZXJXb3JkOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRleHRKdXN0aWZ5RGlz
dHJpYnV0ZToKKyAgICBjYXNlIFRleHRKdXN0aWZ5OjpEaXN0cmlidXRlOgogICAgICAgICBtX3Zh
bHVlLnZhbHVlSUQgPSBDU1NWYWx1ZURpc3RyaWJ1dGU7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
QEAgLTI1NjMsMTkgKzI1NjMsMTkgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFs
dWU6Om9wZQogCiAgICAgc3dpdGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1Zh
bHVlQXV0bzoKLSAgICAgICAgcmV0dXJuIFRleHRKdXN0aWZ5QXV0bzsKKyAgICAgICAgcmV0dXJu
IFRleHRKdXN0aWZ5OjpBdXRvOwogICAgIGNhc2UgQ1NTVmFsdWVOb25lOgotICAgICAgICByZXR1
cm4gVGV4dEp1c3RpZnlOb25lOworICAgICAgICByZXR1cm4gVGV4dEp1c3RpZnk6Ok5vbmU7CiAg
ICAgY2FzZSBDU1NWYWx1ZUludGVyV29yZDoKLSAgICAgICAgcmV0dXJuIFRleHRKdXN0aWZ5SW50
ZXJXb3JkOworICAgICAgICByZXR1cm4gVGV4dEp1c3RpZnk6OkludGVyV29yZDsKICAgICBjYXNl
IENTU1ZhbHVlRGlzdHJpYnV0ZToKLSAgICAgICAgcmV0dXJuIFRleHRKdXN0aWZ5RGlzdHJpYnV0
ZTsKKyAgICAgICAgcmV0dXJuIFRleHRKdXN0aWZ5OjpEaXN0cmlidXRlOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiBUZXh0SnVzdGlmeUF1dG87CisgICAgcmV0dXJuIFRleHRKdXN0aWZ5OjpBdXRvOwog
fQogI2VuZGlmIC8vIENTUzNfVEVYVAogCkBAIC0yNjEyLDIxICsyNjEyLDIxIEBAIHRlbXBsYXRl
PD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGUKIAogICAgIHN3aXRjaCAobV92YWx1ZS52
YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZVNvbGlkOgotICAgICAgICByZXR1cm4gVGV4dERl
Y29yYXRpb25TdHlsZVNvbGlkOworICAgICAgICByZXR1cm4gVGV4dERlY29yYXRpb25TdHlsZTo6
U29saWQ7CiAgICAgY2FzZSBDU1NWYWx1ZURvdWJsZToKLSAgICAgICAgcmV0dXJuIFRleHREZWNv
cmF0aW9uU3R5bGVEb3VibGU7CisgICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlvblN0eWxlOjpE
b3VibGU7CiAgICAgY2FzZSBDU1NWYWx1ZURvdHRlZDoKLSAgICAgICAgcmV0dXJuIFRleHREZWNv
cmF0aW9uU3R5bGVEb3R0ZWQ7CisgICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlvblN0eWxlOjpE
b3R0ZWQ7CiAgICAgY2FzZSBDU1NWYWx1ZURhc2hlZDoKLSAgICAgICAgcmV0dXJuIFRleHREZWNv
cmF0aW9uU3R5bGVEYXNoZWQ7CisgICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlvblN0eWxlOjpE
YXNoZWQ7CiAgICAgY2FzZSBDU1NWYWx1ZVdhdnk6Ci0gICAgICAgIHJldHVybiBUZXh0RGVjb3Jh
dGlvblN0eWxlV2F2eTsKKyAgICAgICAgcmV0dXJuIFRleHREZWNvcmF0aW9uU3R5bGU6Oldhdnk7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRleHREZWNvcmF0aW9uU3R5bGVTb2xpZDsKKyAgICByZXR1
cm4gVGV4dERlY29yYXRpb25TdHlsZTo6U29saWQ7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShUZXh0VW5kZXJsaW5lUG9zaXRpb24g
ZSkKQEAgLTI3MTAsNDUgKzI3MTAsNDUgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZl
VmFsdWU6Om9wZQogICAgIHJldHVybiBUZXh0U2VjdXJpdHk6Ok5vbmU7CiB9CiAKLXRlbXBsYXRl
PD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShFVGV4dFRyYW5z
Zm9ybSBlKQordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2
ZVZhbHVlKFRleHRUcmFuc2Zvcm0gZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQog
ewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoIChl
KSB7Ci0gICAgY2FzZSBDQVBJVEFMSVpFOgorICAgIGNhc2UgVGV4dFRyYW5zZm9ybTo6Q2FwaXRh
bGl6ZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVDYXBpdGFsaXplOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFVQUEVSQ0FTRToKKyAgICBjYXNlIFRleHRUcmFuc2Zvcm06
OlVwcGVyY2FzZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVVcHBlcmNhc2U7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTE9XRVJDQVNFOgorICAgIGNhc2UgVGV4dFRyYW5z
Zm9ybTo6TG93ZXJjYXNlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUxvd2Vy
Y2FzZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUVE5PTkU6CisgICAgY2FzZSBUZXh0VHJh
bnNmb3JtOjpOb25lOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5vbmU7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZl
VmFsdWU6Om9wZXJhdG9yIEVUZXh0VHJhbnNmb3JtKCkgY29uc3QKK3RlbXBsYXRlPD4gaW5saW5l
IENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0VHJhbnNmb3JtKCkgY29uc3QKIHsKICAg
ICBBU1NFUlQoaXNWYWx1ZUlEKCkpOwogCiAgICAgc3dpdGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsK
ICAgICBjYXNlIENTU1ZhbHVlQ2FwaXRhbGl6ZToKLSAgICAgICAgcmV0dXJuIENBUElUQUxJWkU7
CisgICAgICAgIHJldHVybiBUZXh0VHJhbnNmb3JtOjpDYXBpdGFsaXplOwogICAgIGNhc2UgQ1NT
VmFsdWVVcHBlcmNhc2U6Ci0gICAgICAgIHJldHVybiBVUFBFUkNBU0U7CisgICAgICAgIHJldHVy
biBUZXh0VHJhbnNmb3JtOjpVcHBlcmNhc2U7CiAgICAgY2FzZSBDU1NWYWx1ZUxvd2VyY2FzZToK
LSAgICAgICAgcmV0dXJuIExPV0VSQ0FTRTsKKyAgICAgICAgcmV0dXJuIFRleHRUcmFuc2Zvcm06
Okxvd2VyY2FzZTsKICAgICBjYXNlIENTU1ZhbHVlTm9uZToKLSAgICAgICAgcmV0dXJuIFRUTk9O
RTsKKyAgICAgICAgcmV0dXJuIFRleHRUcmFuc2Zvcm06Ok5vbmU7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIFRUTk9ORTsKKyAgICByZXR1cm4gVGV4dFRyYW5zZm9ybTo6Tm9uZTsKIH0KIAogdGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVVbmljb2Rl
QmlkaSBlKQpAQCAtMjk4NSw5MSArMjk4NSw5MSBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6b3BlCiAgICAgcmV0dXJuIFZlcnRpY2FsQWxpZ246OlRvcDsKIH0KIAotdGVt
cGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVWaXNp
YmlsaXR5IGUpCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0
aXZlVmFsdWUoVmlzaWJpbGl0eSBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7
CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsKICAgICBzd2l0Y2ggKGUp
IHsKLSAgICBjYXNlIFZJU0lCTEU6CisgICAgY2FzZSBWaXNpYmlsaXR5OjpWaXNpYmxlOgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVZpc2libGU7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgSElEREVOOgorICAgIGNhc2UgVmlzaWJpbGl0eTo6SGlkZGVuOgogICAgICAgICBt
X3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUhpZGRlbjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBDT0xMQVBTRToKKyAgICBjYXNlIFZpc2liaWxpdHk6OkNvbGxhcHNlOgogICAgICAgICBtX3Zh
bHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUNvbGxhcHNlOwogICAgICAgICBicmVhazsKICAgICB9CiB9
CiAKLXRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFVmlzaWJp
bGl0eSgpIGNvbnN0Cit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0
b3IgVmlzaWJpbGl0eSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzVmFsdWVJRCgpKTsKIAogICAg
IHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUhpZGRlbjoKLSAg
ICAgICAgcmV0dXJuIEhJRERFTjsKKyAgICAgICAgcmV0dXJuIFZpc2liaWxpdHk6OkhpZGRlbjsK
ICAgICBjYXNlIENTU1ZhbHVlVmlzaWJsZToKLSAgICAgICAgcmV0dXJuIFZJU0lCTEU7CisgICAg
ICAgIHJldHVybiBWaXNpYmlsaXR5OjpWaXNpYmxlOwogICAgIGNhc2UgQ1NTVmFsdWVDb2xsYXBz
ZToKLSAgICAgICAgcmV0dXJuIENPTExBUFNFOworICAgICAgICByZXR1cm4gVmlzaWJpbGl0eTo6
Q29sbGFwc2U7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFZJU0lCTEU7CisgICAgcmV0dXJuIFZpc2li
aWxpdHk6OlZpc2libGU7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NQcmltaXRpdmVWYWx1ZShFV2hpdGVTcGFjZSBlKQordGVtcGxhdGU8PiBpbmxpbmUgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFdoaXRlU3BhY2UgZSkKICAgICA6IENT
U1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1Nf
VkFMVUVfSUQ7CiAgICAgc3dpdGNoIChlKSB7Ci0gICAgY2FzZSBOT1JNQUw6CisgICAgY2FzZSBX
aGl0ZVNwYWNlOjpOb3JtYWw6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTm9y
bWFsOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBSRToKKyAgICBjYXNlIFdoaXRlU3BhY2U6
OlByZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVQcmU7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgUFJFX1dSQVA6CisgICAgY2FzZSBXaGl0ZVNwYWNlOjpQcmVXcmFwOgog
ICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVByZVdyYXA7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgUFJFX0xJTkU6CisgICAgY2FzZSBXaGl0ZVNwYWNlOjpQcmVMaW5lOgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVByZUxpbmU7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgTk9XUkFQOgorICAgIGNhc2UgV2hpdGVTcGFjZTo6Tm9XcmFwOgogICAgICAgICBt
X3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5vd3JhcDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBLSFRNTF9OT1dSQVA6CisgICAgY2FzZSBXaGl0ZVNwYWNlOjpLSFRNTE5vV3JhcDoKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVXZWJraXROb3dyYXA7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJh
dG9yIEVXaGl0ZVNwYWNlKCkgY29uc3QKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpvcGVyYXRvciBXaGl0ZVNwYWNlKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNWYWx1ZUlE
KCkpOwogCiAgICAgc3dpdGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVl
V2Via2l0Tm93cmFwOgotICAgICAgICByZXR1cm4gS0hUTUxfTk9XUkFQOworICAgICAgICByZXR1
cm4gV2hpdGVTcGFjZTo6S0hUTUxOb1dyYXA7CiAgICAgY2FzZSBDU1NWYWx1ZU5vd3JhcDoKLSAg
ICAgICAgcmV0dXJuIE5PV1JBUDsKKyAgICAgICAgcmV0dXJuIFdoaXRlU3BhY2U6Ok5vV3JhcDsK
ICAgICBjYXNlIENTU1ZhbHVlUHJlOgotICAgICAgICByZXR1cm4gUFJFOworICAgICAgICByZXR1
cm4gV2hpdGVTcGFjZTo6UHJlOwogICAgIGNhc2UgQ1NTVmFsdWVQcmVXcmFwOgotICAgICAgICBy
ZXR1cm4gUFJFX1dSQVA7CisgICAgICAgIHJldHVybiBXaGl0ZVNwYWNlOjpQcmVXcmFwOwogICAg
IGNhc2UgQ1NTVmFsdWVQcmVMaW5lOgotICAgICAgICByZXR1cm4gUFJFX0xJTkU7CisgICAgICAg
IHJldHVybiBXaGl0ZVNwYWNlOjpQcmVMaW5lOwogICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6Ci0g
ICAgICAgIHJldHVybiBOT1JNQUw7CisgICAgICAgIHJldHVybiBXaGl0ZVNwYWNlOjpOb3JtYWw7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIE5PUk1BTDsKKyAgICByZXR1cm4gV2hpdGVTcGFjZTo6Tm9y
bWFsOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0
aXZlVmFsdWUoV29yZEJyZWFrIGUpCkBAIC0zMjU4LDEzICszMjU4LDEzIEBAIHRlbXBsYXRlPD4g
aW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1MKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBl
ID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAocG9zaXRpb24pIHsKLSAgICBjYXNlIFJ1YnlQ
b3NpdGlvbkJlZm9yZToKKyAgICBjYXNlIFJ1YnlQb3NpdGlvbjo6QmVmb3JlOgogICAgICAgICBt
X3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUJlZm9yZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBSdWJ5UG9zaXRpb25BZnRlcjoKKyAgICBjYXNlIFJ1YnlQb3NpdGlvbjo6QWZ0ZXI6CiAgICAg
ICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQWZ0ZXI7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgUnVieVBvc2l0aW9uSW50ZXJDaGFyYWN0ZXI6CisgICAgY2FzZSBSdWJ5UG9zaXRpb246
OkludGVyQ2hhcmFjdGVyOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUludGVy
Q2hhcmFjdGVyOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0zMjc2LDE3ICszMjc2LDE3IEBA
IHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGUKIAogICAgIHN3aXRjaCAo
bV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUJlZm9yZToKLSAgICAgICAgcmV0
dXJuIFJ1YnlQb3NpdGlvbkJlZm9yZTsKKyAgICAgICAgcmV0dXJuIFJ1YnlQb3NpdGlvbjo6QmVm
b3JlOwogICAgIGNhc2UgQ1NTVmFsdWVBZnRlcjoKLSAgICAgICAgcmV0dXJuIFJ1YnlQb3NpdGlv
bkFmdGVyOworICAgICAgICByZXR1cm4gUnVieVBvc2l0aW9uOjpBZnRlcjsKICAgICBjYXNlIENT
U1ZhbHVlSW50ZXJDaGFyYWN0ZXI6Ci0gICAgICAgIHJldHVybiBSdWJ5UG9zaXRpb25JbnRlckNo
YXJhY3RlcjsKKyAgICAgICAgcmV0dXJuIFJ1YnlQb3NpdGlvbjo6SW50ZXJDaGFyYWN0ZXI7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIFJ1YnlQb3NpdGlvbkJlZm9yZTsKKyAgICByZXR1cm4gUnVieVBv
c2l0aW9uOjpCZWZvcmU7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NQcmltaXRpdmVWYWx1ZShUZXh0T3ZlcmZsb3cgb3ZlcmZsb3cpCkBAIC0zMzI1LDEwICsz
MzI1LDEwIEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1MKIHsKICAg
ICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAoZmlsbCkg
ewotICAgIGNhc2UgVGV4dEVtcGhhc2lzRmlsbEZpbGxlZDoKKyAgICBjYXNlIFRleHRFbXBoYXNp
c0ZpbGw6OkZpbGxlZDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVGaWxsZWQ7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVGV4dEVtcGhhc2lzRmlsbE9wZW46CisgICAgY2Fz
ZSBUZXh0RW1waGFzaXNGaWxsOjpPcGVuOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NW
YWx1ZU9wZW47CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTMzNDAsMTUgKzMzNDAsMTUgQEAg
dGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZQogCiAgICAgc3dpdGNoICht
X3ZhbHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlRmlsbGVkOgotICAgICAgICByZXR1
cm4gVGV4dEVtcGhhc2lzRmlsbEZpbGxlZDsKKyAgICAgICAgcmV0dXJuIFRleHRFbXBoYXNpc0Zp
bGw6OkZpbGxlZDsKICAgICBjYXNlIENTU1ZhbHVlT3BlbjoKLSAgICAgICAgcmV0dXJuIFRleHRF
bXBoYXNpc0ZpbGxPcGVuOworICAgICAgICByZXR1cm4gVGV4dEVtcGhhc2lzRmlsbDo6T3BlbjsK
ICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICByZXR1cm4gVGV4dEVtcGhhc2lzRmlsbEZpbGxlZDsKKyAgICByZXR1cm4g
VGV4dEVtcGhhc2lzRmlsbDo6RmlsbGVkOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoVGV4dEVtcGhhc2lzTWFyayBtYXJrKQpAQCAt
MzM1NiwyNCArMzM1NiwyNCBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTCiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsKICAgICBzd2l0
Y2ggKG1hcmspIHsKLSAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtEb3Q6CisgICAgY2FzZSBUZXh0
RW1waGFzaXNNYXJrOjpEb3Q6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRG90
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtDaXJjbGU6CisgICAg
Y2FzZSBUZXh0RW1waGFzaXNNYXJrOjpDaXJjbGU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9
IENTU1ZhbHVlQ2lyY2xlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRleHRFbXBoYXNpc01h
cmtEb3VibGVDaXJjbGU6CisgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrOjpEb3VibGVDaXJjbGU6
CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRG91YmxlQ2lyY2xlOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtUcmlhbmdsZToKKyAgICBjYXNlIFRl
eHRFbXBoYXNpc01hcms6OlRyaWFuZ2xlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NW
YWx1ZVRyaWFuZ2xlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtT
ZXNhbWU6CisgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrOjpTZXNhbWU6CiAgICAgICAgIG1fdmFs
dWUudmFsdWVJRCA9IENTU1ZhbHVlU2VzYW1lOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRl
eHRFbXBoYXNpc01hcmtOb25lOgotICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya0F1dG86Ci0gICAg
Y2FzZSBUZXh0RW1waGFzaXNNYXJrQ3VzdG9tOgorICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFyazo6
Tm9uZToKKyAgICBjYXNlIFRleHRFbXBoYXNpc01hcms6OkF1dG86CisgICAgY2FzZSBUZXh0RW1w
aGFzaXNNYXJrOjpDdXN0b206CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5vbmU7CiAgICAgICAgIGJyZWFrOwpAQCAtMzM4
NiwyMyArMzM4NiwyMyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3Bl
CiAKICAgICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkgewogICAgIGNhc2UgQ1NTVmFsdWVOb25l
OgotICAgICAgICByZXR1cm4gVGV4dEVtcGhhc2lzTWFya05vbmU7CisgICAgICAgIHJldHVybiBU
ZXh0RW1waGFzaXNNYXJrOjpOb25lOwogICAgIGNhc2UgQ1NTVmFsdWVEb3Q6Ci0gICAgICAgIHJl
dHVybiBUZXh0RW1waGFzaXNNYXJrRG90OworICAgICAgICByZXR1cm4gVGV4dEVtcGhhc2lzTWFy
azo6RG90OwogICAgIGNhc2UgQ1NTVmFsdWVDaXJjbGU6Ci0gICAgICAgIHJldHVybiBUZXh0RW1w
aGFzaXNNYXJrQ2lyY2xlOworICAgICAgICByZXR1cm4gVGV4dEVtcGhhc2lzTWFyazo6Q2lyY2xl
OwogICAgIGNhc2UgQ1NTVmFsdWVEb3VibGVDaXJjbGU6Ci0gICAgICAgIHJldHVybiBUZXh0RW1w
aGFzaXNNYXJrRG91YmxlQ2lyY2xlOworICAgICAgICByZXR1cm4gVGV4dEVtcGhhc2lzTWFyazo6
RG91YmxlQ2lyY2xlOwogICAgIGNhc2UgQ1NTVmFsdWVUcmlhbmdsZToKLSAgICAgICAgcmV0dXJu
IFRleHRFbXBoYXNpc01hcmtUcmlhbmdsZTsKKyAgICAgICAgcmV0dXJuIFRleHRFbXBoYXNpc01h
cms6OlRyaWFuZ2xlOwogICAgIGNhc2UgQ1NTVmFsdWVTZXNhbWU6Ci0gICAgICAgIHJldHVybiBU
ZXh0RW1waGFzaXNNYXJrU2VzYW1lOworICAgICAgICByZXR1cm4gVGV4dEVtcGhhc2lzTWFyazo6
U2VzYW1lOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBUZXh0RW1waGFzaXNNYXJrTm9uZTsKKyAgICBy
ZXR1cm4gVGV4dEVtcGhhc2lzTWFyazo6Tm9uZTsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFRleHRPcmllbnRhdGlvbiBlKQpAQCAt
MzQ0NSw3NSArMzQ0NSw3NSBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6
b3BlCiAgICAgcmV0dXJuIFRleHRPcmllbnRhdGlvbjo6TWl4ZWQ7CiB9CiAKLXRlbXBsYXRlPD4g
aW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShFUG9pbnRlckV2ZW50
cyBlKQordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZh
bHVlKFBvaW50ZXJFdmVudHMgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewog
ICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoIChlKSB7
Ci0gICAgY2FzZSBQRV9OT05FOgorICAgIGNhc2UgUG9pbnRlckV2ZW50czo6Tm9uZToKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb25lOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFBFX1NUUk9LRToKKyAgICBjYXNlIFBvaW50ZXJFdmVudHM6OlN0cm9rZToKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVTdHJva2U7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgUEVfRklMTDoKKyAgICBjYXNlIFBvaW50ZXJFdmVudHM6OkZpbGw6CiAgICAgICAgIG1fdmFs
dWUudmFsdWVJRCA9IENTU1ZhbHVlRmlsbDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQRV9Q
QUlOVEVEOgorICAgIGNhc2UgUG9pbnRlckV2ZW50czo6UGFpbnRlZDoKICAgICAgICAgbV92YWx1
ZS52YWx1ZUlEID0gQ1NTVmFsdWVQYWludGVkOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBF
X1ZJU0lCTEU6CisgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpWaXNpYmxlOgogICAgICAgICBtX3Zh
bHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVZpc2libGU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
UEVfVklTSUJMRV9TVFJPS0U6CisgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpWaXNpYmxlU3Ryb2tl
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVZpc2libGVTdHJva2U7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgUEVfVklTSUJMRV9GSUxMOgorICAgIGNhc2UgUG9pbnRlckV2
ZW50czo6VmlzaWJsZUZpbGw6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVmlz
aWJsZUZpbGw7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUEVfVklTSUJMRV9QQUlOVEVEOgor
ICAgIGNhc2UgUG9pbnRlckV2ZW50czo6VmlzaWJsZVBhaW50ZWQ6CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlVmlzaWJsZVBhaW50ZWQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgUEVfQVVUTzoKKyAgICBjYXNlIFBvaW50ZXJFdmVudHM6OkF1dG86CiAgICAgICAgIG1fdmFs
dWUudmFsdWVJRCA9IENTU1ZhbHVlQXV0bzsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQRV9B
TEw6CisgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpBbGw6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlQWxsOwogICAgICAgICBicmVhazsKICAgICB9CiB9CiAKLXRlbXBsYXRlPD4g
aW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFUG9pbnRlckV2ZW50cygpIGNvbnN0
Cit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgUG9pbnRlckV2
ZW50cygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzVmFsdWVJRCgpKTsKIAogICAgIHN3aXRjaCAo
bV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUFsbDoKLSAgICAgICAgcmV0dXJu
IFBFX0FMTDsKKyAgICAgICAgcmV0dXJuIFBvaW50ZXJFdmVudHM6OkFsbDsKICAgICBjYXNlIENT
U1ZhbHVlQXV0bzoKLSAgICAgICAgcmV0dXJuIFBFX0FVVE87CisgICAgICAgIHJldHVybiBQb2lu
dGVyRXZlbnRzOjpBdXRvOwogICAgIGNhc2UgQ1NTVmFsdWVOb25lOgotICAgICAgICByZXR1cm4g
UEVfTk9ORTsKKyAgICAgICAgcmV0dXJuIFBvaW50ZXJFdmVudHM6Ok5vbmU7CiAgICAgY2FzZSBD
U1NWYWx1ZVZpc2libGVQYWludGVkOgotICAgICAgICByZXR1cm4gUEVfVklTSUJMRV9QQUlOVEVE
OworICAgICAgICByZXR1cm4gUG9pbnRlckV2ZW50czo6VmlzaWJsZVBhaW50ZWQ7CiAgICAgY2Fz
ZSBDU1NWYWx1ZVZpc2libGVGaWxsOgotICAgICAgICByZXR1cm4gUEVfVklTSUJMRV9GSUxMOwor
ICAgICAgICByZXR1cm4gUG9pbnRlckV2ZW50czo6VmlzaWJsZUZpbGw7CiAgICAgY2FzZSBDU1NW
YWx1ZVZpc2libGVTdHJva2U6Ci0gICAgICAgIHJldHVybiBQRV9WSVNJQkxFX1NUUk9LRTsKKyAg
ICAgICAgcmV0dXJuIFBvaW50ZXJFdmVudHM6OlZpc2libGVTdHJva2U7CiAgICAgY2FzZSBDU1NW
YWx1ZVZpc2libGU6Ci0gICAgICAgIHJldHVybiBQRV9WSVNJQkxFOworICAgICAgICByZXR1cm4g
UG9pbnRlckV2ZW50czo6VmlzaWJsZTsKICAgICBjYXNlIENTU1ZhbHVlUGFpbnRlZDoKLSAgICAg
ICAgcmV0dXJuIFBFX1BBSU5URUQ7CisgICAgICAgIHJldHVybiBQb2ludGVyRXZlbnRzOjpQYWlu
dGVkOwogICAgIGNhc2UgQ1NTVmFsdWVGaWxsOgotICAgICAgICByZXR1cm4gUEVfRklMTDsKKyAg
ICAgICAgcmV0dXJuIFBvaW50ZXJFdmVudHM6OkZpbGw7CiAgICAgY2FzZSBDU1NWYWx1ZVN0cm9r
ZToKLSAgICAgICAgcmV0dXJuIFBFX1NUUk9LRTsKKyAgICAgICAgcmV0dXJuIFBvaW50ZXJFdmVu
dHM6OlN0cm9rZTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gUEVfQUxMOworICAgIHJldHVybiBQb2lu
dGVyRXZlbnRzOjpBbGw7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NQcmltaXRpdmVWYWx1ZShLZXJuaW5nIGtlcm5pbmcpCkBAIC0zNzIyLDEzICszNzIyLDEz
IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1MKIHsKICAgICBtX3By
aW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAoaHlwaGVucykgewot
ICAgIGNhc2UgSHlwaGVuc05vbmU6CisgICAgY2FzZSBIeXBoZW5zOjpOb25lOgogICAgICAgICBt
X3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5vbmU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
SHlwaGVuc01hbnVhbDoKKyAgICBjYXNlIEh5cGhlbnM6Ok1hbnVhbDoKICAgICAgICAgbV92YWx1
ZS52YWx1ZUlEID0gQ1NTVmFsdWVNYW51YWw7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSHlw
aGVuc0F1dG86CisgICAgY2FzZSBIeXBoZW5zOjpBdXRvOgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZUF1dG87CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTM3NDAsMTcgKzM3
NDAsMTcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZQogCiAgICAg
c3dpdGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlTm9uZToKLSAgICAg
ICAgcmV0dXJuIEh5cGhlbnNOb25lOworICAgICAgICByZXR1cm4gSHlwaGVuczo6Tm9uZTsKICAg
ICBjYXNlIENTU1ZhbHVlTWFudWFsOgotICAgICAgICByZXR1cm4gSHlwaGVuc01hbnVhbDsKKyAg
ICAgICAgcmV0dXJuIEh5cGhlbnM6Ok1hbnVhbDsKICAgICBjYXNlIENTU1ZhbHVlQXV0bzoKLSAg
ICAgICAgcmV0dXJuIEh5cGhlbnNBdXRvOworICAgICAgICByZXR1cm4gSHlwaGVuczo6QXV0bzsK
ICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICByZXR1cm4gSHlwaGVuc0F1dG87CisgICAgcmV0dXJuIEh5cGhlbnM6OkF1
dG87CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRp
dmVWYWx1ZShMaW5lU25hcCBncmlkU25hcCkKQEAgLTM3NTgsMTMgKzM3NTgsMTMgQEAgdGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTUwogewogICAgIG1fcHJpbWl0aXZlVW5p
dFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoIChncmlkU25hcCkgewotICAgIGNhc2Ug
TGluZVNuYXBOb25lOgorICAgIGNhc2UgTGluZVNuYXA6Ok5vbmU6CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlTm9uZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMaW5lU25h
cEJhc2VsaW5lOgorICAgIGNhc2UgTGluZVNuYXA6OkJhc2VsaW5lOgogICAgICAgICBtX3ZhbHVl
LnZhbHVlSUQgPSBDU1NWYWx1ZUJhc2VsaW5lOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExp
bmVTbmFwQ29udGFpbjoKKyAgICBjYXNlIExpbmVTbmFwOjpDb250YWluOgogICAgICAgICBtX3Zh
bHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUNvbnRhaW47CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAg
LTM3NzYsMTcgKzM3NzYsMTcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6
Om9wZQogCiAgICAgc3dpdGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVl
Tm9uZToKLSAgICAgICAgcmV0dXJuIExpbmVTbmFwTm9uZTsKKyAgICAgICAgcmV0dXJuIExpbmVT
bmFwOjpOb25lOwogICAgIGNhc2UgQ1NTVmFsdWVCYXNlbGluZToKLSAgICAgICAgcmV0dXJuIExp
bmVTbmFwQmFzZWxpbmU7CisgICAgICAgIHJldHVybiBMaW5lU25hcDo6QmFzZWxpbmU7CiAgICAg
Y2FzZSBDU1NWYWx1ZUNvbnRhaW46Ci0gICAgICAgIHJldHVybiBMaW5lU25hcENvbnRhaW47Cisg
ICAgICAgIHJldHVybiBMaW5lU25hcDo6Q29udGFpbjsKICAgICBkZWZhdWx0OgogICAgICAgICBi
cmVhazsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gTGlu
ZVNuYXBOb25lOworICAgIHJldHVybiBMaW5lU25hcDo6Tm9uZTsKIH0KIAogdGVtcGxhdGU8PiBp
bmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKExpbmVBbGlnbiBsaW5l
QWxpZ24pCkBAIC0zNzk0LDEwICszNzk0LDEwIEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1MKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lE
OwogICAgIHN3aXRjaCAobGluZUFsaWduKSB7Ci0gICAgY2FzZSBMaW5lQWxpZ25Ob25lOgorICAg
IGNhc2UgTGluZUFsaWduOjpOb25lOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1
ZU5vbmU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUFsaWduRWRnZXM6CisgICAgY2Fz
ZSBMaW5lQWxpZ246OkVkZ2VzOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUVk
Z2VzOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0zODA5LDE1ICszODA5LDE1IEBAIHRlbXBs
YXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGUKIAogICAgIHN3aXRjaCAobV92YWx1
ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZU5vbmU6Ci0gICAgICAgIHJldHVybiBMaW5l
QWxpZ25Ob25lOworICAgICAgICByZXR1cm4gTGluZUFsaWduOjpOb25lOwogICAgIGNhc2UgQ1NT
VmFsdWVFZGdlczoKLSAgICAgICAgcmV0dXJuIExpbmVBbGlnbkVkZ2VzOworICAgICAgICByZXR1
cm4gTGluZUFsaWduOjpFZGdlczsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9
CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gTGluZUFsaWduTm9uZTsK
KyAgICByZXR1cm4gTGluZUFsaWduOjpOb25lOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRVNwZWFrQXMgZSkKQEAgLTM4NDksMTUg
KzM4NDksMTUgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZQogCiAg
ICAgc3dpdGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlTG9naWNhbDoK
LSAgICAgICAgcmV0dXJuIExvZ2ljYWxPcmRlcjsKKyAgICAgICAgcmV0dXJuIE9yZGVyOjpMb2dp
Y2FsOwogICAgIGNhc2UgQ1NTVmFsdWVWaXN1YWw6Ci0gICAgICAgIHJldHVybiBWaXN1YWxPcmRl
cjsKKyAgICAgICAgcmV0dXJuIE9yZGVyOjpWaXN1YWw7CiAgICAgZGVmYXVsdDoKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIExv
Z2ljYWxPcmRlcjsKKyAgICByZXR1cm4gT3JkZXI6OkxvZ2ljYWw7CiB9CiAKIHRlbXBsYXRlPD4g
aW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShPcmRlciBlKQpAQCAt
Mzg2NSwxMCArMzg2NSwxMCBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTCiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsKICAgICBzd2l0
Y2ggKGUpIHsKLSAgICBjYXNlIExvZ2ljYWxPcmRlcjoKKyAgICBjYXNlIE9yZGVyOjpMb2dpY2Fs
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUxvZ2ljYWw7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgVmlzdWFsT3JkZXI6CisgICAgY2FzZSBPcmRlcjo6VmlzdWFsOgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVZpc3VhbDsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQpAQCAtNDI1NiwzNSArNDI1NiwzNSBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRp
dmVWYWx1ZTo6b3BlCiAgICAgcmV0dXJuIEJvcmRlckNvbGxhcHNlOjpTZXBhcmF0ZTsKIH0KIAot
dGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVC
b3JkZXJGaXQgZSkKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmlt
aXRpdmVWYWx1ZShCb3JkZXJGaXQgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQog
ewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoIChl
KSB7Ci0gICAgY2FzZSBCb3JkZXJGaXRCb3JkZXI6CisgICAgY2FzZSBCb3JkZXJGaXQ6OkJvcmRl
cjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVCb3JkZXI7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQm9yZGVyRml0TGluZXM6CisgICAgY2FzZSBCb3JkZXJGaXQ6OkxpbmVz
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUxpbmVzOwogICAgICAgICBicmVh
azsKICAgICB9CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVy
YXRvciBFQm9yZGVyRml0KCkgY29uc3QKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpvcGVyYXRvciBCb3JkZXJGaXQoKSBjb25zdAogewogICAgIEFTU0VSVChpc1ZhbHVlSUQo
KSk7CiAKICAgICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkgewogICAgIGNhc2UgQ1NTVmFsdWVC
b3JkZXI6Ci0gICAgICAgIHJldHVybiBCb3JkZXJGaXRCb3JkZXI7CisgICAgICAgIHJldHVybiBC
b3JkZXJGaXQ6OkJvcmRlcjsKICAgICBjYXNlIENTU1ZhbHVlTGluZXM6Ci0gICAgICAgIHJldHVy
biBCb3JkZXJGaXRMaW5lczsKKyAgICAgICAgcmV0dXJuIEJvcmRlckZpdDo6TGluZXM7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIEJvcmRlckZpdExpbmVzOworICAgIHJldHVybiBCb3JkZXJGaXQ6Okxp
bmVzOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0
aXZlVmFsdWUoSW1hZ2VSZW5kZXJpbmcgaW1hZ2VSZW5kZXJpbmcpCkBAIC00NDA3LDEzICs0NDA3
LDEzIEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1MKIHsKICAgICBt
X3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAoZSkgewotICAg
IGNhc2UgSG9yaXpvbnRhbENvbHVtbkF4aXM6CisgICAgY2FzZSBDb2x1bW5BeGlzOjpIb3Jpem9u
dGFsOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUhvcml6b250YWw7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgVmVydGljYWxDb2x1bW5BeGlzOgorICAgIGNhc2UgQ29sdW1u
QXhpczo6VmVydGljYWw6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVmVydGlj
YWw7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQXV0b0NvbHVtbkF4aXM6CisgICAgY2FzZSBD
b2x1bW5BeGlzOjpBdXRvOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUF1dG87
CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTQ0MjUsMTcgKzQ0MjUsMTcgQEAgdGVtcGxhdGU8
PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZQogCiAgICAgc3dpdGNoIChtX3ZhbHVlLnZh
bHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlSG9yaXpvbnRhbDoKLSAgICAgICAgcmV0dXJuIEhv
cml6b250YWxDb2x1bW5BeGlzOworICAgICAgICByZXR1cm4gQ29sdW1uQXhpczo6SG9yaXpvbnRh
bDsKICAgICBjYXNlIENTU1ZhbHVlVmVydGljYWw6Ci0gICAgICAgIHJldHVybiBWZXJ0aWNhbENv
bHVtbkF4aXM7CisgICAgICAgIHJldHVybiBDb2x1bW5BeGlzOjpWZXJ0aWNhbDsKICAgICBjYXNl
IENTU1ZhbHVlQXV0bzoKLSAgICAgICAgcmV0dXJuIEF1dG9Db2x1bW5BeGlzOworICAgICAgICBy
ZXR1cm4gQ29sdW1uQXhpczo6QXV0bzsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAg
ICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQXV0b0NvbHVtbkF4
aXM7CisgICAgcmV0dXJuIENvbHVtbkF4aXM6OkF1dG87CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5l
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShDb2x1bW5Qcm9ncmVzc2lvbiBl
KQpAQCAtNDQ0MywxMCArNDQ0MywxMCBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTCiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsKICAg
ICBzd2l0Y2ggKGUpIHsKLSAgICBjYXNlIE5vcm1hbENvbHVtblByb2dyZXNzaW9uOgorICAgIGNh
c2UgQ29sdW1uUHJvZ3Jlc3Npb246Ok5vcm1hbDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0g
Q1NTVmFsdWVOb3JtYWw7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUmV2ZXJzZUNvbHVtblBy
b2dyZXNzaW9uOgorICAgIGNhc2UgQ29sdW1uUHJvZ3Jlc3Npb246OlJldmVyc2U6CiAgICAgICAg
IG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlUmV2ZXJzZTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQpAQCAtNDQ1OCwxNSArNDQ1OCwxNSBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVW
YWx1ZTo6b3BlCiAKICAgICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkgewogICAgIGNhc2UgQ1NT
VmFsdWVOb3JtYWw6Ci0gICAgICAgIHJldHVybiBOb3JtYWxDb2x1bW5Qcm9ncmVzc2lvbjsKKyAg
ICAgICAgcmV0dXJuIENvbHVtblByb2dyZXNzaW9uOjpOb3JtYWw7CiAgICAgY2FzZSBDU1NWYWx1
ZVJldmVyc2U6Ci0gICAgICAgIHJldHVybiBSZXZlcnNlQ29sdW1uUHJvZ3Jlc3Npb247CisgICAg
ICAgIHJldHVybiBDb2x1bW5Qcm9ncmVzc2lvbjo6UmV2ZXJzZTsKICAgICBkZWZhdWx0OgogICAg
ICAgICBicmVhazsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gTm9ybWFsQ29sdW1uUHJvZ3Jlc3Npb247CisgICAgcmV0dXJuIENvbHVtblByb2dyZXNzaW9u
OjpOb3JtYWw7CiB9CiAKIGVudW0gTGVuZ3RoQ29udmVyc2lvbiB7CkBAIC00OTA1LDI4ICs0OTA1
LDI4IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1MKIHsKICAgICBt
X3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAoY3NzQm94KSB7
Ci0gICAgY2FzZSBNYXJnaW5Cb3g6CisgICAgY2FzZSBDU1NCb3hUeXBlOjpNYXJnaW5Cb3g6CiAg
ICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTWFyZ2luQm94OwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIEJvcmRlckJveDoKKyAgICBjYXNlIENTU0JveFR5cGU6OkJvcmRlckJveDoK
ICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVCb3JkZXJCb3g7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgUGFkZGluZ0JveDoKKyAgICBjYXNlIENTU0JveFR5cGU6OlBhZGRpbmdC
b3g6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlUGFkZGluZ0JveDsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBDb250ZW50Qm94OgorICAgIGNhc2UgQ1NTQm94VHlwZTo6Q29u
dGVudEJveDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVDb250ZW50Qm94Owog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEZpbGw6CisgICAgY2FzZSBDU1NCb3hUeXBlOjpGaWxs
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUZpbGw7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgU3Ryb2tlOgorICAgIGNhc2UgQ1NTQm94VHlwZTo6U3Ryb2tlOgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVN0cm9rZTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBWaWV3Qm94OgorICAgIGNhc2UgQ1NTQm94VHlwZTo6Vmlld0JveDoKICAgICAgICAgbV92
YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVWaWV3Qm94OwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEJveE1pc3Npbmc6CisgICAgY2FzZSBDU1NCb3hUeXBlOjpCb3hNaXNzaW5nOgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVO
b25lOwogICAgICAgICBicmVhazsKQEAgLTQ5MzcsMjUgKzQ5MzcsMjUgQEAgdGVtcGxhdGU8PiBp
bmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZQogewogICAgIHN3aXRjaCAodmFsdWVJRCgpKSB7
CiAgICAgY2FzZSBDU1NWYWx1ZU1hcmdpbkJveDoKLSAgICAgICAgcmV0dXJuIE1hcmdpbkJveDsK
KyAgICAgICAgcmV0dXJuIENTU0JveFR5cGU6Ok1hcmdpbkJveDsKICAgICBjYXNlIENTU1ZhbHVl
Qm9yZGVyQm94OgotICAgICAgICByZXR1cm4gQm9yZGVyQm94OworICAgICAgICByZXR1cm4gQ1NT
Qm94VHlwZTo6Qm9yZGVyQm94OwogICAgIGNhc2UgQ1NTVmFsdWVQYWRkaW5nQm94OgotICAgICAg
ICByZXR1cm4gUGFkZGluZ0JveDsKKyAgICAgICAgcmV0dXJuIENTU0JveFR5cGU6OlBhZGRpbmdC
b3g7CiAgICAgY2FzZSBDU1NWYWx1ZUNvbnRlbnRCb3g6Ci0gICAgICAgIHJldHVybiBDb250ZW50
Qm94OworICAgICAgICByZXR1cm4gQ1NTQm94VHlwZTo6Q29udGVudEJveDsKICAgICAvLyBUaGUg
Zm9sbG93aW5nIGFyZSB1c2VkIGluIGFuIFNWRyBjb250ZXh0LgogICAgIGNhc2UgQ1NTVmFsdWVG
aWxsOgotICAgICAgICByZXR1cm4gRmlsbDsKKyAgICAgICAgcmV0dXJuIENTU0JveFR5cGU6OkZp
bGw7CiAgICAgY2FzZSBDU1NWYWx1ZVN0cm9rZToKLSAgICAgICAgcmV0dXJuIFN0cm9rZTsKKyAg
ICAgICAgcmV0dXJuIENTU0JveFR5cGU6OlN0cm9rZTsKICAgICBjYXNlIENTU1ZhbHVlVmlld0Jv
eDoKLSAgICAgICAgcmV0dXJuIFZpZXdCb3g7CisgICAgICAgIHJldHVybiBDU1NCb3hUeXBlOjpW
aWV3Qm94OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQm94TWlzc2luZzsKKyAgICByZXR1cm4gQ1NTQm94
VHlwZTo6Qm94TWlzc2luZzsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEl0ZW1Qb3NpdGlvbiBpdGVtUG9zaXRpb24pCkBAIC01MjAx
LDE1ICs1MjAxLDE1IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGUK
IAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZU5vcm1h
bDoKLSAgICAgICAgcmV0dXJuIFRleHRab29tTm9ybWFsOworICAgICAgICByZXR1cm4gVGV4dFpv
b206Ok5vcm1hbDsKICAgICBjYXNlIENTU1ZhbHVlUmVzZXQ6Ci0gICAgICAgIHJldHVybiBUZXh0
Wm9vbVJlc2V0OworICAgICAgICByZXR1cm4gVGV4dFpvb206OlJlc2V0OwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiBUZXh0Wm9vbU5vcm1hbDsKKyAgICByZXR1cm4gVGV4dFpvb206Ok5vcm1hbDsKIH0K
IAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVl
KFRleHRab29tIHRleHRab29tKQpAQCAtNTIxNywxMCArNTIxNywxMCBAQCB0ZW1wbGF0ZTw+IGlu
bGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTCiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9
IENTU19WQUxVRV9JRDsKICAgICBzd2l0Y2ggKHRleHRab29tKSB7Ci0gICAgY2FzZSBUZXh0Wm9v
bU5vcm1hbDoKKyAgICBjYXNlIFRleHRab29tOjpOb3JtYWw6CiAgICAgICAgIG1fdmFsdWUudmFs
dWVJRCA9IENTU1ZhbHVlTm9ybWFsOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBUZXh0Wm9v
bVJlc2V0OgorICAgIGNhc2UgVGV4dFpvb206OlJlc2V0OgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZVJlc2V0OwogICAgICAgICByZXR1cm47CiAgICAgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzAsMzEgKzI3MCwzMSBA
QCBQc2V1ZG9JZCBDU1NTZWxlY3Rvcjo6cHNldWRvSWQoUHNldWRvRWxlCiB7CiAgICAgc3dpdGNo
ICh0eXBlKSB7CiAgICAgY2FzZSBQc2V1ZG9FbGVtZW50Rmlyc3RMaW5lOgotICAgICAgICByZXR1
cm4gRklSU1RfTElORTsKKyAgICAgICAgcmV0dXJuIFBzZXVkb0lkOjpGaXJzdExpbmU7CiAgICAg
Y2FzZSBQc2V1ZG9FbGVtZW50Rmlyc3RMZXR0ZXI6Ci0gICAgICAgIHJldHVybiBGSVJTVF9MRVRU
RVI7CisgICAgICAgIHJldHVybiBQc2V1ZG9JZDo6Rmlyc3RMZXR0ZXI7CiAgICAgY2FzZSBQc2V1
ZG9FbGVtZW50U2VsZWN0aW9uOgotICAgICAgICByZXR1cm4gU0VMRUNUSU9OOworICAgICAgICBy
ZXR1cm4gUHNldWRvSWQ6OlNlbGVjdGlvbjsKICAgICBjYXNlIFBzZXVkb0VsZW1lbnRNYXJrZXI6
Ci0gICAgICAgIHJldHVybiBNQVJLRVI7CisgICAgICAgIHJldHVybiBQc2V1ZG9JZDo6TWFya2Vy
OwogICAgIGNhc2UgUHNldWRvRWxlbWVudEJlZm9yZToKLSAgICAgICAgcmV0dXJuIEJFRk9SRTsK
KyAgICAgICAgcmV0dXJuIFBzZXVkb0lkOjpCZWZvcmU7CiAgICAgY2FzZSBQc2V1ZG9FbGVtZW50
QWZ0ZXI6Ci0gICAgICAgIHJldHVybiBBRlRFUjsKKyAgICAgICAgcmV0dXJuIFBzZXVkb0lkOjpB
ZnRlcjsKICAgICBjYXNlIFBzZXVkb0VsZW1lbnRTY3JvbGxiYXI6Ci0gICAgICAgIHJldHVybiBT
Q1JPTExCQVI7CisgICAgICAgIHJldHVybiBQc2V1ZG9JZDo6U2Nyb2xsYmFyOwogICAgIGNhc2Ug
UHNldWRvRWxlbWVudFNjcm9sbGJhckJ1dHRvbjoKLSAgICAgICAgcmV0dXJuIFNDUk9MTEJBUl9C
VVRUT047CisgICAgICAgIHJldHVybiBQc2V1ZG9JZDo6U2Nyb2xsYmFyQnV0dG9uOwogICAgIGNh
c2UgUHNldWRvRWxlbWVudFNjcm9sbGJhckNvcm5lcjoKLSAgICAgICAgcmV0dXJuIFNDUk9MTEJB
Ul9DT1JORVI7CisgICAgICAgIHJldHVybiBQc2V1ZG9JZDo6U2Nyb2xsYmFyQ29ybmVyOwogICAg
IGNhc2UgUHNldWRvRWxlbWVudFNjcm9sbGJhclRodW1iOgotICAgICAgICByZXR1cm4gU0NST0xM
QkFSX1RIVU1COworICAgICAgICByZXR1cm4gUHNldWRvSWQ6OlNjcm9sbGJhclRodW1iOwogICAg
IGNhc2UgUHNldWRvRWxlbWVudFNjcm9sbGJhclRyYWNrOgotICAgICAgICByZXR1cm4gU0NST0xM
QkFSX1RSQUNLOworICAgICAgICByZXR1cm4gUHNldWRvSWQ6OlNjcm9sbGJhclRyYWNrOwogICAg
IGNhc2UgUHNldWRvRWxlbWVudFNjcm9sbGJhclRyYWNrUGllY2U6Ci0gICAgICAgIHJldHVybiBT
Q1JPTExCQVJfVFJBQ0tfUElFQ0U7CisgICAgICAgIHJldHVybiBQc2V1ZG9JZDo6U2Nyb2xsYmFy
VHJhY2tQaWVjZTsKICAgICBjYXNlIFBzZXVkb0VsZW1lbnRSZXNpemVyOgotICAgICAgICByZXR1
cm4gUkVTSVpFUjsKKyAgICAgICAgcmV0dXJuIFBzZXVkb0lkOjpSZXNpemVyOwogI2lmIEVOQUJM
RShWSURFT19UUkFDSykKICAgICBjYXNlIFBzZXVkb0VsZW1lbnRDdWU6CiAjZW5kaWYKQEAgLTMw
MywxMSArMzAzLDExIEBAIFBzZXVkb0lkIENTU1NlbGVjdG9yOjpwc2V1ZG9JZChQc2V1ZG9FbGUK
ICAgICBjYXNlIFBzZXVkb0VsZW1lbnRVc2VyQWdlbnRDdXN0b206CiAgICAgY2FzZSBQc2V1ZG9F
bGVtZW50V2ViS2l0Q3VzdG9tOgogICAgIGNhc2UgUHNldWRvRWxlbWVudFdlYktpdEN1c3RvbUxl
Z2FjeVByZWZpeGVkOgotICAgICAgICByZXR1cm4gTk9QU0VVRE87CisgICAgICAgIHJldHVybiBQ
c2V1ZG9JZDo6Tm9uZTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gTk9QU0VVRE87CisgICAgcmV0dXJuIFBzZXVkb0lkOjpOb25lOwogfQogCiBDU1NTZWxl
Y3Rvcjo6UHNldWRvRWxlbWVudFR5cGUgQ1NTU2VsZWN0b3I6OnBhcnNlUHNldWRvRWxlbWVudFR5
cGUoY29uc3QgU3RyaW5nJiBuYW1lKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5
bGVNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFw
LmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVN
YXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjMsMTYgKzM2MywxNiBAQCB2b2lkIENTU1RvU3R5
bGVNYXA6Om1hcEFuaW1hdGlvbkZpbGxNb2RlCiAKICAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZU5vbmU6
Ci0gICAgICAgIGxheWVyLnNldEZpbGxNb2RlKEFuaW1hdGlvbkZpbGxNb2RlTm9uZSk7CisgICAg
ICAgIGxheWVyLnNldEZpbGxNb2RlKEFuaW1hdGlvbkZpbGxNb2RlOjpOb25lKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZUZvcndhcmRzOgotICAgICAgICBsYXllci5zZXRGaWxs
TW9kZShBbmltYXRpb25GaWxsTW9kZUZvcndhcmRzKTsKKyAgICAgICAgbGF5ZXIuc2V0RmlsbE1v
ZGUoQW5pbWF0aW9uRmlsbE1vZGU6OkZvcndhcmRzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBDU1NWYWx1ZUJhY2t3YXJkczoKLSAgICAgICAgbGF5ZXIuc2V0RmlsbE1vZGUoQW5pbWF0aW9u
RmlsbE1vZGVCYWNrd2FyZHMpOworICAgICAgICBsYXllci5zZXRGaWxsTW9kZShBbmltYXRpb25G
aWxsTW9kZTo6QmFja3dhcmRzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZUJv
dGg6Ci0gICAgICAgIGxheWVyLnNldEZpbGxNb2RlKEFuaW1hdGlvbkZpbGxNb2RlQm90aCk7Cisg
ICAgICAgIGxheWVyLnNldEZpbGxNb2RlKEFuaW1hdGlvbkZpbGxNb2RlOjpCb3RoKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC00MjMsNyArNDIzLDcg
QEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25QbGF5U3RhdAogICAgIGlmICghaXM8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRUFuaW1Q
bGF5U3RhdGUgcGxheVN0YXRlID0gKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSku
dmFsdWVJRCgpID09IENTU1ZhbHVlUGF1c2VkKSA/IEFuaW1QbGF5U3RhdGVQYXVzZWQgOiBBbmlt
UGxheVN0YXRlUGxheWluZzsKKyAgICBBbmltYXRpb25QbGF5U3RhdGUgcGxheVN0YXRlID0gKGRv
d25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlUGF1
c2VkKSA/IEFuaW1hdGlvblBsYXlTdGF0ZTo6UGF1c2VkIDogQW5pbWF0aW9uUGxheVN0YXRlOjpQ
bGF5aW5nOwogICAgIGxheWVyLnNldFBsYXlTdGF0ZShwbGF5U3RhdGUpOwogfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgkocmV2aXNpb24gMjMyMTQzKQorKysg
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4JKHdvcmtpbmcgY29weSkKQEAg
LTI4Nyw3ICsyODcsNyBAQCBib3R0b20KIC13ZWJraXQtYmFzZWxpbmUtbWlkZGxlCiAvLwogLy8g
Q1NTX1BST1BfVEVYVF9BTElHTjoKLS8vIFRoZSBvcmRlciBoZXJlIG11c3QgbWF0Y2ggdGhlIG9y
ZGVyIG9mIHRoZSBFVGV4dEFsaWduIGVudW0gaW4gUmVuZGVyU3R5bGVDb25zdGFudHMuaC4KKy8v
IFRoZSBvcmRlciBoZXJlIG11c3QgbWF0Y2ggdGhlIG9yZGVyIG9mIHRoZSBUZXh0QWxpZ25Nb2Rl
IGVudW0gaW4gUmVuZGVyU3R5bGVDb25zdGFudHMuaC4KIC8vCiAtd2Via2l0LWF1dG8KIGxlZnQK
QEAgLTMxMiw3ICszMTIsNyBAQCBvdXRzaWRlCiBpbnNpZGUKIC8vCiAvLyBDU1NfUFJPUF9MSVNU
X1NUWUxFX1RZUEU6Ci0vLyBUaGUgb3JkZXIgaGVyZSBtdXN0IG1hdGNoIHRoZSBvcmRlciBvZiB0
aGUgRUxpc3RTdHlsZVR5cGUgZW51bSBpbiBSZW5kZXJTdHlsZUNvbnN0YW50cy5oLgorLy8gVGhl
IG9yZGVyIGhlcmUgbXVzdCBtYXRjaCB0aGUgb3JkZXIgb2YgdGhlIExpc3RTdHlsZVR5cGUgZW51
bSBpbiBSZW5kZXJTdHlsZUNvbnN0YW50cy5oLgogLy8KIGRpc2MKIGNpcmNsZQpAQCAtMzk3LDcg
KzM5Nyw3IEBAIGthdGFrYW5hLWlyb2hhCiAvL25vbmUKIC8vCiAvLyBDU1NfUFJPUF9ESVNQTEFZ
OgotLy8gVGhlIG9yZGVyIGhlcmUgbXVzdCBtYXRjaCB0aGUgb3JkZXIgb2YgdGhlIEVEaXNwbGF5
IGVudW0gaW4gUmVuZGVyU3R5bGVDb25zdGFudHMuaC4KKy8vIFRoZSBvcmRlciBoZXJlIG11c3Qg
bWF0Y2ggdGhlIG9yZGVyIG9mIHRoZSBEaXNwbGF5VHlwZSBlbnVtIGluIFJlbmRlclN0eWxlQ29u
c3RhbnRzLmguCiAvLwogaW5saW5lCiBibG9jawpAQCAtNDI2LDcgKzQyNiw3IEBAIGlubGluZS1n
cmlkCiAvL25vbmUKIC8vCiAvLyBDU1NfUFJPUF9DVVJTT1I6Ci0vLyBUaGUgb3JkZXIgaGVyZSBt
dXN0IG1hdGNoIHRoZSBvcmRlciBvZiB0aGUgRUN1cnNvciBlbnVtIGluIFJlbmRlclN0eWxlQ29u
c3RhbnRzLmguCisvLyBUaGUgb3JkZXIgaGVyZSBtdXN0IG1hdGNoIHRoZSBvcmRlciBvZiB0aGUg
Q3Vyc29yVHlwZSBlbnVtIGluIFJlbmRlclN0eWxlQ29uc3RhbnRzLmguCiAvLwogYXV0bwogZGVm
YXVsdApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3Bw
CShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xs
ZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNyArMTQwLDcgQEAgaW5saW5lIHZvaWQg
RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmFkZEVsZQogdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6
Y29sbGVjdE1hdGNoaW5nUnVsZXMoY29uc3QgTWF0Y2hSZXF1ZXN0JiBtYXRjaFJlcXVlc3QsIFN0
eWxlUmVzb2x2ZXI6OlJ1bGVSYW5nZSYgcnVsZVJhbmdlKQogewogICAgIEFTU0VSVChtYXRjaFJl
cXVlc3QucnVsZVNldCk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghKG1fbW9kZSA9PSBTZWxl
Y3RvckNoZWNrZXI6Ok1vZGU6OkNvbGxlY3RpbmdSdWxlc0lnbm9yaW5nVmlydHVhbFBzZXVkb0Vs
ZW1lbnRzICYmIG1fcHNldWRvU3R5bGVSZXF1ZXN0LnBzZXVkb0lkICE9IE5PUFNFVURPKSwgIldo
ZW4gaW4gU3R5bGVJbnZhbGlkYXRpb24gb3IgU2hhcmluZ1J1bGVzLCBTZWxlY3RvckNoZWNrZXIg
ZG9lcyBub3QgdHJ5IHRvIG1hdGNoIHRoZSBwc2V1ZG8gSUQuIFdoaWxlIEVsZW1lbnRSdWxlQ29s
bGVjdG9yIHN1cHBvcnRzIG1hdGNoaW5nIGEgcGFydGljdWxhciBwc2V1ZG9JZCBpbiB0aGlzIGNh
c2UsIHRoaXMgd291bGQgaW5kaWNhdGUgYSBlcnJvciBhdCB0aGUgY2FsbCBzaXRlIHNpbmNlIG1h
dGNoaW5nIGEgcGFydGljdWxhciBlbGVtZW50IHNob3VsZCBiZSB1bm5lY2Vzc2FyeS4iKTsKKyAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKCEobV9tb2RlID09IFNlbGVjdG9yQ2hlY2tlcjo6TW9kZTo6
Q29sbGVjdGluZ1J1bGVzSWdub3JpbmdWaXJ0dWFsUHNldWRvRWxlbWVudHMgJiYgbV9wc2V1ZG9T
dHlsZVJlcXVlc3QucHNldWRvSWQgIT0gUHNldWRvSWQ6Ok5vbmUpLCAiV2hlbiBpbiBTdHlsZUlu
dmFsaWRhdGlvbiBvciBTaGFyaW5nUnVsZXMsIFNlbGVjdG9yQ2hlY2tlciBkb2VzIG5vdCB0cnkg
dG8gbWF0Y2ggdGhlIHBzZXVkbyBJRC4gV2hpbGUgRWxlbWVudFJ1bGVDb2xsZWN0b3Igc3VwcG9y
dHMgbWF0Y2hpbmcgYSBwYXJ0aWN1bGFyIHBzZXVkb0lkIGluIHRoaXMgY2FzZSwgdGhpcyB3b3Vs
ZCBpbmRpY2F0ZSBhIGVycm9yIGF0IHRoZSBjYWxsIHNpdGUgc2luY2UgbWF0Y2hpbmcgYSBwYXJ0
aWN1bGFyIGVsZW1lbnQgc2hvdWxkIGJlIHVubmVjZXNzYXJ5LiIpOwogCiAgICAgYXV0byogc2hh
ZG93Um9vdCA9IG1fZWxlbWVudC5jb250YWluaW5nU2hhZG93Um9vdCgpOwogICAgIGlmIChzaGFk
b3dSb290ICYmIHNoYWRvd1Jvb3QtPm1vZGUoKSA9PSBTaGFkb3dSb290TW9kZTo6VXNlckFnZW50
KQpAQCAtMzYwLDcgKzM2MCw3IEBAIGlubGluZSBib29sIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpy
dWxlTWEKICAgICAvLyBUaGlzIGlzIGxpbWl0ZWQgdG8gSFRNTCBvbmx5IHNvIHdlIGRvbid0IG5l
ZWQgdG8gY2hlY2sgdGhlIG5hbWVzcGFjZSAoYmVjYXVzZSBvZiB0YWcgbmFtZSBtYXRjaCkuCiAg
ICAgTWF0Y2hCYXNlZE9uUnVsZUhhc2ggbWF0Y2hCYXNlZE9uUnVsZUhhc2ggPSBydWxlRGF0YS5t
YXRjaEJhc2VkT25SdWxlSGFzaCgpOwogICAgIGlmIChtYXRjaEJhc2VkT25SdWxlSGFzaCAhPSBN
YXRjaEJhc2VkT25SdWxlSGFzaDo6Tm9uZSAmJiBtX2VsZW1lbnQuaXNIVE1MRWxlbWVudCgpKSB7
Ci0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9wc2V1ZG9TdHlsZVJlcXVlc3QucHNldWRv
SWQgPT0gTk9QU0VVRE8sICJJZiB3ZSBtYXRjaCBiYXNlZCBvbiB0aGUgcnVsZSBoYXNoIHdoaWxl
IGNvbGxlY3RpbmcgZm9yIGEgcGFydGljdWxhciBwc2V1ZG8gZWxlbWVudCBJRCwgd2Ugd291bGQg
YWRkIGluY29ycmVjdCBydWxlcyBmb3IgdGhhdCBwc2V1ZG8gZWxlbWVudCBJRC4gV2Ugc2hvdWxk
IG5ldmVyIGVuZCBpbiBydWxlTWF0Y2hlcygpIHdpdGggYSBwc2V1ZG8gZWxlbWVudCBpZiB0aGUg
cnVsZURhdGEgY2Fubm90IG1hdGNoIGFueSBwc2V1ZG8gZWxlbWVudC4iKTsKKyAgICAgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRShtX3BzZXVkb1N0eWxlUmVxdWVzdC5wc2V1ZG9JZCA9PSBQc2V1ZG9J
ZDo6Tm9uZSwgIklmIHdlIG1hdGNoIGJhc2VkIG9uIHRoZSBydWxlIGhhc2ggd2hpbGUgY29sbGVj
dGluZyBmb3IgYSBwYXJ0aWN1bGFyIHBzZXVkbyBlbGVtZW50IElELCB3ZSB3b3VsZCBhZGQgaW5j
b3JyZWN0IHJ1bGVzIGZvciB0aGF0IHBzZXVkbyBlbGVtZW50IElELiBXZSBzaG91bGQgbmV2ZXIg
ZW5kIGluIHJ1bGVNYXRjaGVzKCkgd2l0aCBhIHBzZXVkbyBlbGVtZW50IGlmIHRoZSBydWxlRGF0
YSBjYW5ub3QgbWF0Y2ggYW55IHBzZXVkbyBlbGVtZW50LiIpOwogCiAgICAgICAgIHN3aXRjaCAo
bWF0Y2hCYXNlZE9uUnVsZUhhc2gpIHsKICAgICAgICAgY2FzZSBNYXRjaEJhc2VkT25SdWxlSGFz
aDo6Tm9uZToKQEAgLTM5NSw3ICszOTUsNyBAQCBpbmxpbmUgYm9vbCBFbGVtZW50UnVsZUNvbGxl
Y3Rvcjo6cnVsZU1hCiAgICAgICAgIGF1dG8gc2VsZWN0b3JDaGVja2VyID0gU2VsZWN0b3JDb21w
aWxlcjo6cnVsZUNvbGxlY3RvclNpbXBsZVNlbGVjdG9yQ2hlY2tlckZ1bmN0aW9uKGNvbXBpbGVk
U2VsZWN0b3JDaGVja2VyLCBjb21waWxlZFNlbGVjdG9yLnN0YXR1cyk7CiAjaWYgIUFTU0VSVF9N
U0dfRElTQUJMRUQKICAgICAgICAgdW5zaWduZWQgaWdub3JlU3BlY2lmaWNpdHk7Ci0gICAgICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoIXNlbGVjdG9yQ2hlY2tlcigmbV9lbGVtZW50LCAmaWdub3Jl
U3BlY2lmaWNpdHkpIHx8IG1fcHNldWRvU3R5bGVSZXF1ZXN0LnBzZXVkb0lkID09IE5PUFNFVURP
LCAiV2hlbiBtYXRjaGluZyBwc2V1ZG8gZWxlbWVudHMsIHdlIHNob3VsZCBuZXZlciBjb21waWxl
IGEgc2VsZWN0b3IgY2hlY2tlciB3aXRob3V0IGNvbnRleHQgdW5sZXNzIGl0IGNhbm5vdCBtYXRj
aCBhbnl0aGluZy4iKTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc2VsZWN0b3JDaGVj
a2VyKCZtX2VsZW1lbnQsICZpZ25vcmVTcGVjaWZpY2l0eSkgfHwgbV9wc2V1ZG9TdHlsZVJlcXVl
c3QucHNldWRvSWQgPT0gUHNldWRvSWQ6Ok5vbmUsICJXaGVuIG1hdGNoaW5nIHBzZXVkbyBlbGVt
ZW50cywgd2Ugc2hvdWxkIG5ldmVyIGNvbXBpbGUgYSBzZWxlY3RvciBjaGVja2VyIHdpdGhvdXQg
Y29udGV4dCB1bmxlc3MgaXQgY2Fubm90IG1hdGNoIGFueXRoaW5nLiIpOwogI2VuZGlmCiAjaWYg
Q1NTX1NFTEVDVE9SX0pJVF9QUk9GSUxJTkcKICAgICAgICAgcnVsZURhdGEuY29tcGlsZWRTZWxl
Y3RvclVzZWQoKTsKQEAgLTQ1OCw3ICs0NTgsNyBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9y
Ojpjb2xsZWN0TWF0Y2hpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgc2l6ZSA9IHJ1bGVzLT5z
aXplKCk7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRh
ID0gcnVsZXMtPmRhdGEoKVtpXTsKIAotICAgICAgICBpZiAoIXJ1bGVEYXRhLmNhbk1hdGNoUHNl
dWRvRWxlbWVudCgpICYmIG1fcHNldWRvU3R5bGVSZXF1ZXN0LnBzZXVkb0lkICE9IE5PUFNFVURP
KQorICAgICAgICBpZiAoIXJ1bGVEYXRhLmNhbk1hdGNoUHNldWRvRWxlbWVudCgpICYmIG1fcHNl
dWRvU3R5bGVSZXF1ZXN0LnBzZXVkb0lkICE9IFBzZXVkb0lkOjpOb25lKQogICAgICAgICAgICAg
Y29udGludWU7CiAKICAgICAgICAgaWYgKG1fc2VsZWN0b3JGaWx0ZXIgJiYgbV9zZWxlY3RvckZp
bHRlci0+ZmFzdFJlamVjdFNlbGVjdG9yKHJ1bGVEYXRhLmRlc2NlbmRhbnRTZWxlY3RvcklkZW50
aWZpZXJIYXNoZXMoKSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xs
ZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xs
ZWN0b3IuaAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRS
dWxlQ29sbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToK
ICAgICBjb25zdCBTZWxlY3RvckZpbHRlciogbV9zZWxlY3RvckZpbHRlciB7IG51bGxwdHIgfTsK
IAogICAgIGJvb2wgbV9pc1ByaW50U3R5bGUgeyBmYWxzZSB9OwotICAgIFBzZXVkb1N0eWxlUmVx
dWVzdCBtX3BzZXVkb1N0eWxlUmVxdWVzdCB7IE5PUFNFVURPIH07CisgICAgUHNldWRvU3R5bGVS
ZXF1ZXN0IG1fcHNldWRvU3R5bGVSZXF1ZXN0IHsgUHNldWRvSWQ6Ok5vbmUgfTsKICAgICBTZWxl
Y3RvckNoZWNrZXI6Ok1vZGUgbV9tb2RlIHsgU2VsZWN0b3JDaGVja2VyOjpNb2RlOjpSZXNvbHZp
bmdTdHlsZSB9OwogICAgIGJvb2wgbV9pc01hdGNoaW5nU2xvdHRlZFBzZXVkb0VsZW1lbnRzIHsg
ZmFsc2UgfTsKICAgICBib29sIG1faXNNYXRjaGluZ0hvc3RQc2V1ZG9DbGFzcyB7IGZhbHNlIH07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAkocmV2aXNpb24gMjMy
MTQzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE4NSwxNSArMTg1LDE1IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjptYXRjaChj
b25zdCBDU1NTZWwKICAgICBNYXRjaFJlc3VsdCByZXN1bHQgPSBtYXRjaFJlY3Vyc2l2ZWx5KGNo
ZWNraW5nQ29udGV4dCwgY29udGV4dCwgcHNldWRvSWRTZXQsIHNwZWNpZmljaXR5KTsKICAgICBp
ZiAocmVzdWx0Lm1hdGNoICE9IE1hdGNoOjpTZWxlY3Rvck1hdGNoZXMpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBpZiAoY2hlY2tpbmdDb250ZXh0LnBzZXVkb0lkICE9IE5PUFNFVURPICYm
ICFwc2V1ZG9JZFNldC5oYXMoY2hlY2tpbmdDb250ZXh0LnBzZXVkb0lkKSkKKyAgICBpZiAoY2hl
Y2tpbmdDb250ZXh0LnBzZXVkb0lkICE9IFBzZXVkb0lkOjpOb25lICYmICFwc2V1ZG9JZFNldC5o
YXMoY2hlY2tpbmdDb250ZXh0LnBzZXVkb0lkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgaWYgKGNoZWNraW5nQ29udGV4dC5wc2V1ZG9JZCA9PSBOT1BTRVVETyAmJiBwc2V1ZG9JZFNl
dCkgewotICAgICAgICBQc2V1ZG9JZFNldCBwdWJsaWNQc2V1ZG9JZFNldCA9IHBzZXVkb0lkU2V0
ICYgUHNldWRvSWRTZXQ6OmZyb21NYXNrKFBVQkxJQ19QU0VVRE9JRF9NQVNLKTsKKyAgICBpZiAo
Y2hlY2tpbmdDb250ZXh0LnBzZXVkb0lkID09IFBzZXVkb0lkOjpOb25lICYmIHBzZXVkb0lkU2V0
KSB7CisgICAgICAgIFBzZXVkb0lkU2V0IHB1YmxpY1BzZXVkb0lkU2V0ID0gcHNldWRvSWRTZXQg
JiBQc2V1ZG9JZFNldDo6ZnJvbU1hc2soc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBzZXVkb0lkOjpQ
dWJsaWNQc2V1ZG9JZE1hc2spKTsKICAgICAgICAgaWYgKGNoZWNraW5nQ29udGV4dC5yZXNvbHZp
bmdNb2RlID09IE1vZGU6OlJlc29sdmluZ1N0eWxlICYmIHB1YmxpY1BzZXVkb0lkU2V0KQogICAg
ICAgICAgICAgY2hlY2tpbmdDb250ZXh0LnBzZXVkb0lEU2V0ID0gcHVibGljUHNldWRvSWRTZXQ7
CiAKLSAgICAgICAgLy8gV2hlbiBpZ25vcmluZyB2aXJ0dWFsIHBzZXVkbyBlbGVtZW50cywgdGhl
IGNvbnRleHQncyBwc2V1ZG8gc2hvdWxkIGFsc28gYmUgTk9QU0VVRE8gYnV0IHRoYXQgZG9lcwor
ICAgICAgICAvLyBXaGVuIGlnbm9yaW5nIHZpcnR1YWwgcHNldWRvIGVsZW1lbnRzLCB0aGUgY29u
dGV4dCdzIHBzZXVkbyBzaG91bGQgYWxzbyBiZSBQc2V1ZG9JZDo6Tm9uZSBidXQgdGhhdCBkb2Vz
CiAgICAgICAgIC8vIG5vdCBjYXVzZSBhIGZhaWx1cmUuCiAgICAgICAgIHJldHVybiBjaGVja2lu
Z0NvbnRleHQucmVzb2x2aW5nTW9kZSA9PSBNb2RlOjpDb2xsZWN0aW5nUnVsZXNJZ25vcmluZ1Zp
cnR1YWxQc2V1ZG9FbGVtZW50cyB8fCByZXN1bHQubWF0Y2hUeXBlID09IE1hdGNoVHlwZTo6RWxl
bWVudDsKICAgICB9CkBAIC0yMDgsNyArMjA4LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6Om1h
dGNoSG9zdFBzZXVkb0NsYQogICAgIHNwZWNpZmljaXR5ID0gc2VsZWN0b3Iuc2ltcGxlU2VsZWN0
b3JTcGVjaWZpY2l0eSgpOwogCiAgICAgaWYgKGF1dG8qIHNlbGVjdG9yTGlzdCA9IHNlbGVjdG9y
LnNlbGVjdG9yTGlzdCgpKSB7Ci0gICAgICAgIExvY2FsQ29udGV4dCBjb250ZXh0KCpzZWxlY3Rv
ckxpc3QtPmZpcnN0KCksIGVsZW1lbnQsIFZpc2l0ZWRNYXRjaFR5cGU6OkVuYWJsZWQsIE5PUFNF
VURPKTsKKyAgICAgICAgTG9jYWxDb250ZXh0IGNvbnRleHQoKnNlbGVjdG9yTGlzdC0+Zmlyc3Qo
KSwgZWxlbWVudCwgVmlzaXRlZE1hdGNoVHlwZTo6RW5hYmxlZCwgUHNldWRvSWQ6Ok5vbmUpOwog
ICAgICAgICBjb250ZXh0LmluRnVuY3Rpb25hbFBzZXVkb0NsYXNzID0gdHJ1ZTsKICAgICAgICAg
Y29udGV4dC5wc2V1ZG9FbGVtZW50RWZmZWN0aXZlID0gZmFsc2U7CiAgICAgICAgIFBzZXVkb0lk
U2V0IGlnbm9yZUR5bmFtaWNQc2V1ZG87CkBAIC0yMjIsMTMgKzIyMiwxMyBAQCBib29sIFNlbGVj
dG9yQ2hlY2tlcjo6bWF0Y2hIb3N0UHNldWRvQ2xhCiAKIGlubGluZSBzdGF0aWMgYm9vbCBoYXNT
Y3JvbGxiYXJQc2V1ZG9FbGVtZW50KGNvbnN0IFBzZXVkb0lkU2V0JiBkeW5hbWljUHNldWRvSWRT
ZXQpCiB7Ci0gICAgUHNldWRvSWRTZXQgc2Nyb2xsYmFySWRTZXQgPSB7IFNDUk9MTEJBUiwgU0NS
T0xMQkFSX1RIVU1CLCBTQ1JPTExCQVJfQlVUVE9OLCBTQ1JPTExCQVJfVFJBQ0ssIFNDUk9MTEJB
Ul9UUkFDS19QSUVDRSwgU0NST0xMQkFSX0NPUk5FUiB9OworICAgIFBzZXVkb0lkU2V0IHNjcm9s
bGJhcklkU2V0ID0geyBQc2V1ZG9JZDo6U2Nyb2xsYmFyLCBQc2V1ZG9JZDo6U2Nyb2xsYmFyVGh1
bWIsIFBzZXVkb0lkOjpTY3JvbGxiYXJCdXR0b24sIFBzZXVkb0lkOjpTY3JvbGxiYXJUcmFjaywg
UHNldWRvSWQ6OlNjcm9sbGJhclRyYWNrUGllY2UsIFBzZXVkb0lkOjpTY3JvbGxiYXJDb3JuZXIg
fTsKICAgICBpZiAoZHluYW1pY1BzZXVkb0lkU2V0ICYgc2Nyb2xsYmFySWRTZXQpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgLy8gUkVTSVpFUiBkb2VzIG5vdCBhbHdheXMgaGF2ZSBhIHNj
cm9sbGJhciBidXQgaXQgaXMgYSBzY3JvbGxiYXItbGlrZSBwc2V1ZG8gZWxlbWVudAorICAgIC8v
IFBzZXVkb0lkOjpSZXNpemVyIGRvZXMgbm90IGFsd2F5cyBoYXZlIGEgc2Nyb2xsYmFyIGJ1dCBp
dCBpcyBhIHNjcm9sbGJhci1saWtlIHBzZXVkbyBlbGVtZW50CiAgICAgLy8gYmVjYXVzZSBpdCBj
YW4gaGF2ZSBtb3JlIHRoYW4gb25lIHBzZXVkbyBlbGVtZW50LgotICAgIHJldHVybiBkeW5hbWlj
UHNldWRvSWRTZXQuaGFzKFJFU0laRVIpOworICAgIHJldHVybiBkeW5hbWljUHNldWRvSWRTZXQu
aGFzKFBzZXVkb0lkOjpSZXNpemVyKTsKIH0KIAogc3RhdGljIFNlbGVjdG9yQ2hlY2tlcjo6TG9j
YWxDb250ZXh0IGxvY2FsQ29udGV4dEZvclBhcmVudChjb25zdCBTZWxlY3RvckNoZWNrZXI6Okxv
Y2FsQ29udGV4dCYgY29udGV4dCkKQEAgLTI5Myw3ICsyOTMsNyBAQCBTZWxlY3RvckNoZWNrZXI6
Ok1hdGNoUmVzdWx0IFNlbGVjdG9yQ2hlCiAgICAgICAgICAgICAgICAgcmV0dXJuIE1hdGNoUmVz
dWx0OjpmYWlscyhNYXRjaDo6U2VsZWN0b3JGYWlsc0NvbXBsZXRlbHkpOwogCiAgICAgICAgICAg
ICBQc2V1ZG9JZCBwc2V1ZG9JZCA9IENTU1NlbGVjdG9yOjpwc2V1ZG9JZChjb250ZXh0LnNlbGVj
dG9yLT5wc2V1ZG9FbGVtZW50VHlwZSgpKTsKLSAgICAgICAgICAgIGlmIChwc2V1ZG9JZCAhPSBO
T1BTRVVETykKKyAgICAgICAgICAgIGlmIChwc2V1ZG9JZCAhPSBQc2V1ZG9JZDo6Tm9uZSkKICAg
ICAgICAgICAgICAgICBkeW5hbWljUHNldWRvSWRTZXQuYWRkKHBzZXVkb0lkKTsKICAgICAgICAg
ICAgIG1hdGNoVHlwZSA9IE1hdGNoVHlwZTo6VmlydHVhbFBzZXVkb0VsZW1lbnRPbmx5OwogICAg
ICAgICB9CkBAIC0zMTIsMTQgKzMxMiwxNCBAQCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoUmVzdWx0
IFNlbGVjdG9yQ2hlCiAKICAgICBpZiAocmVsYXRpb24gIT0gQ1NTU2VsZWN0b3I6OlN1YnNlbGVj
dG9yKSB7CiAgICAgICAgIC8vIEJhaWwtb3V0IGlmIHRoaXMgc2VsZWN0b3IgaXMgaXJyZWxldmFu
dCBmb3IgdGhlIHBzZXVkb0lkCi0gICAgICAgIGlmIChjb250ZXh0LnBzZXVkb0lkICE9IE5PUFNF
VURPICYmICFkeW5hbWljUHNldWRvSWRTZXQuaGFzKGNvbnRleHQucHNldWRvSWQpKQorICAgICAg
ICBpZiAoY29udGV4dC5wc2V1ZG9JZCAhPSBQc2V1ZG9JZDo6Tm9uZSAmJiAhZHluYW1pY1BzZXVk
b0lkU2V0Lmhhcyhjb250ZXh0LnBzZXVkb0lkKSkKICAgICAgICAgICAgIHJldHVybiBNYXRjaFJl
c3VsdDo6ZmFpbHMoTWF0Y2g6OlNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5KTsKIAogICAgICAgICAv
LyBEaXNhYmxlIDp2aXNpdGVkIG1hdGNoaW5nIHdoZW4gd2UgdHJ5IHRvIG1hdGNoIGFueXRoaW5n
IGVsc2UgdGhhbiBhbiBhbmNlc3RvcnMuCiAgICAgICAgIGlmICghY29udGV4dC5zZWxlY3Rvci0+
aGFzRGVzY2VuZGFudE9yQ2hpbGRSZWxhdGlvbigpKQogICAgICAgICAgICAgbmV4dENvbnRleHQu
dmlzaXRlZE1hdGNoVHlwZSA9IFZpc2l0ZWRNYXRjaFR5cGU6OkRpc2FibGVkOwogCi0gICAgICAg
IG5leHRDb250ZXh0LnBzZXVkb0lkID0gTk9QU0VVRE87CisgICAgICAgIG5leHRDb250ZXh0LnBz
ZXVkb0lkID0gUHNldWRvSWQ6Ok5vbmU7CiAgICAgICAgIC8vIFZpcnR1YWwgcHNldWRvIGVsZW1l
bnQgaXMgb25seSBlZmZlY3RpdmUgaW4gdGhlIHJpZ2h0bW9zdCBmcmFnbWVudC4KICAgICAgICAg
bmV4dENvbnRleHQucHNldWRvRWxlbWVudEVmZmVjdGl2ZSA9IGZhbHNlOwogICAgICAgICBuZXh0
Q29udGV4dC5pc01hdGNoRWxlbWVudCA9IGZhbHNlOwpAQCAtNDEzLDcgKzQxMyw3IEBAIFNlbGVj
dG9yQ2hlY2tlcjo6TWF0Y2hSZXN1bHQgU2VsZWN0b3JDaGUKICAgICAgICAgICAgIC8vIFdlIG1h
a2UgYW4gZXhjZXB0aW9uIGZvciBzY3JvbGxiYXIgcHNldWRvIGVsZW1lbnRzIGFuZCBhbGxvdyBh
IHNldCBvZiBwc2V1ZG8gY2xhc3NlcyAoYnV0IG5vdGhpbmcgZWxzZSkKICAgICAgICAgICAgIC8v
IHRvIGZvbGxvdyB0aGUgcHNldWRvIGVsZW1lbnRzLgogICAgICAgICAgICAgbmV4dENvbnRleHQu
aGFzU2Nyb2xsYmFyUHNldWRvID0gaGFzU2Nyb2xsYmFyUHNldWRvRWxlbWVudChkeW5hbWljUHNl
dWRvSWRTZXQpOwotICAgICAgICAgICAgbmV4dENvbnRleHQuaGFzU2VsZWN0aW9uUHNldWRvID0g
ZHluYW1pY1BzZXVkb0lkU2V0LmhhcyhTRUxFQ1RJT04pOworICAgICAgICAgICAgbmV4dENvbnRl
eHQuaGFzU2VsZWN0aW9uUHNldWRvID0gZHluYW1pY1BzZXVkb0lkU2V0LmhhcyhQc2V1ZG9JZDo6
U2VsZWN0aW9uKTsKICAgICAgICAgICAgIGlmICgoY29udGV4dC5pc01hdGNoRWxlbWVudCB8fCBj
aGVja2luZ0NvbnRleHQucmVzb2x2aW5nTW9kZSA9PSBNb2RlOjpDb2xsZWN0aW5nUnVsZXMpICYm
IGR5bmFtaWNQc2V1ZG9JZFNldAogICAgICAgICAgICAgICAgICYmICFuZXh0Q29udGV4dC5oYXNT
ZWxlY3Rpb25Qc2V1ZG8KICAgICAgICAgICAgICAgICAmJiAhKG5leHRDb250ZXh0Lmhhc1Njcm9s
bGJhclBzZXVkbyAmJiBuZXh0Q29udGV4dC5zZWxlY3Rvci0+bWF0Y2goKSA9PSBDU1NTZWxlY3Rv
cjo6UHNldWRvQ2xhc3MpKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAko
cmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICAgICAgeyB9CiAK
ICAgICAgICAgY29uc3QgU2VsZWN0b3JDaGVja2VyOjpNb2RlIHJlc29sdmluZ01vZGU7Ci0gICAg
ICAgIFBzZXVkb0lkIHBzZXVkb0lkIHsgTk9QU0VVRE8gfTsKKyAgICAgICAgUHNldWRvSWQgcHNl
dWRvSWQgeyBQc2V1ZG9JZDo6Tm9uZSB9OwogICAgICAgICBSZW5kZXJTY3JvbGxiYXIqIHNjcm9s
bGJhciB7IG51bGxwdHIgfTsKICAgICAgICAgU2Nyb2xsYmFyUGFydCBzY3JvbGxiYXJQYXJ0IHsg
Tm9QYXJ0IH07CiAgICAgICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlIHsgbnVsbHB0ciB9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAkocmV2
aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
U3RyaW5nIGNvbnZlcnRTdHJpbmdPckF1dG8oU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVl
Jik7CiAgICAgc3RhdGljIFN0cmluZyBjb252ZXJ0U3RyaW5nT3JOb25lKFN0eWxlUmVzb2x2ZXIm
LCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBUZXh0RW1waGFzaXNQb3NpdGlvbiBjb252
ZXJ0VGV4dEVtcGhhc2lzUG9zaXRpb24oU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7
Ci0gICAgc3RhdGljIEVUZXh0QWxpZ24gY29udmVydFRleHRBbGlnbihTdHlsZVJlc29sdmVyJiwg
Y29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgVGV4dEFsaWduTW9kZSBjb252ZXJ0VGV4dEFs
aWduKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBSZWZQdHI8
Q2xpcFBhdGhPcGVyYXRpb24+IGNvbnZlcnRDbGlwUGF0aChTdHlsZVJlc29sdmVyJiwgY29uc3Qg
Q1NTVmFsdWUmKTsKICAgICBzdGF0aWMgUmVzaXplIGNvbnZlcnRSZXNpemUoU3R5bGVSZXNvbHZl
ciYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIGludCBjb252ZXJ0TWFycXVlZVJlcGV0
aXRpb24oU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CkBAIC01MDIsNyArNTAyLDcg
QEAgaW5saW5lIFRleHRFbXBoYXNpc1Bvc2l0aW9uIFN0eWxlQnVpbGRlcgogICAgIHJldHVybiBw
b3NpdGlvbjsKIH0KIAotaW5saW5lIEVUZXh0QWxpZ24gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0VGV4dEFsaWduKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNvbnN0IENTU1Zh
bHVlJiB2YWx1ZSkKK2lubGluZSBUZXh0QWxpZ25Nb2RlIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydFRleHRBbGlnbihTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBDU1NW
YWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIEFTU0VSVChwcmltaXRpdmVWYWx1ZS5pc1ZhbHVl
SUQoKSk7CkBAIC01MTEsMTAgKzUxMSwxMCBAQCBpbmxpbmUgRVRleHRBbGlnbiBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6CiAgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZTsKIAogICAgIGF1dG8q
IHBhcmVudFN0eWxlID0gc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpOwotICAgIGlmIChwYXJl
bnRTdHlsZS0+dGV4dEFsaWduKCkgPT0gVEFTVEFSVCkKLSAgICAgICAgcmV0dXJuIHBhcmVudFN0
eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBMRUZUIDogUklHSFQ7Ci0gICAgaWYgKHBh
cmVudFN0eWxlLT50ZXh0QWxpZ24oKSA9PSBUQUVORCkKLSAgICAgICAgcmV0dXJuIHBhcmVudFN0
eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBSSUdIVCA6IExFRlQ7CisgICAgaWYgKHBh
cmVudFN0eWxlLT50ZXh0QWxpZ24oKSA9PSBUZXh0QWxpZ25Nb2RlOjpTdGFydCkKKyAgICAgICAg
cmV0dXJuIHBhcmVudFN0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBUZXh0QWxpZ25N
b2RlOjpMZWZ0IDogVGV4dEFsaWduTW9kZTo6UmlnaHQ7CisgICAgaWYgKHBhcmVudFN0eWxlLT50
ZXh0QWxpZ24oKSA9PSBUZXh0QWxpZ25Nb2RlOjpFbmQpCisgICAgICAgIHJldHVybiBwYXJlbnRT
dHlsZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gVGV4dEFsaWduTW9kZTo6UmlnaHQgOiBU
ZXh0QWxpZ25Nb2RlOjpMZWZ0OwogICAgIHJldHVybiBwYXJlbnRTdHlsZS0+dGV4dEFsaWduKCk7
CiB9CiAKQEAgLTUzMiw3ICs1MzIsNyBAQCBpbmxpbmUgUmVmUHRyPENsaXBQYXRoT3BlcmF0aW9u
PiBTdHlsZUJ1CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIENTU0JveFR5
cGUgcmVmZXJlbmNlQm94ID0gQm94TWlzc2luZzsKKyAgICBDU1NCb3hUeXBlIHJlZmVyZW5jZUJv
eCA9IENTU0JveFR5cGU6OkJveE1pc3Npbmc7CiAgICAgUmVmUHRyPENsaXBQYXRoT3BlcmF0aW9u
PiBvcGVyYXRpb247CiAKICAgICBmb3IgKGF1dG8mIGN1cnJlbnRWYWx1ZSA6IGRvd25jYXN0PENT
U1ZhbHVlTGlzdD4odmFsdWUpKSB7CkBAIC01NDgsMTQgKzU0OCwxNCBAQCBpbmxpbmUgUmVmUHRy
PENsaXBQYXRoT3BlcmF0aW9uPiBTdHlsZUJ1CiAgICAgICAgICAgICAgICAgfHwgcHJpbWl0aXZl
VmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlRmlsbAogICAgICAgICAgICAgICAgIHx8IHByaW1p
dGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZVN0cm9rZQogICAgICAgICAgICAgICAgIHx8
IHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZVZpZXdCb3gpOwotICAgICAgICAg
ICAgQVNTRVJUKHJlZmVyZW5jZUJveCA9PSBCb3hNaXNzaW5nKTsKKyAgICAgICAgICAgIEFTU0VS
VChyZWZlcmVuY2VCb3ggPT0gQ1NTQm94VHlwZTo6Qm94TWlzc2luZyk7CiAgICAgICAgICAgICBy
ZWZlcmVuY2VCb3ggPSBwcmltaXRpdmVWYWx1ZTsKICAgICAgICAgfQogICAgIH0KICAgICBpZiAo
b3BlcmF0aW9uKQogICAgICAgICBkb3duY2FzdDxTaGFwZUNsaXBQYXRoT3BlcmF0aW9uPigqb3Bl
cmF0aW9uKS5zZXRSZWZlcmVuY2VCb3gocmVmZXJlbmNlQm94KTsKICAgICBlbHNlIHsKLSAgICAg
ICAgQVNTRVJUKHJlZmVyZW5jZUJveCAhPSBCb3hNaXNzaW5nKTsKKyAgICAgICAgQVNTRVJUKHJl
ZmVyZW5jZUJveCAhPSBDU1NCb3hUeXBlOjpCb3hNaXNzaW5nKTsKICAgICAgICAgb3BlcmF0aW9u
ID0gQm94Q2xpcFBhdGhPcGVyYXRpb246OmNyZWF0ZShyZWZlcmVuY2VCb3gpOwogICAgIH0KIApA
QCAtNzc1LDcgKzc3NSw3IEBAIGlubGluZSBSZWZQdHI8U2hhcGVWYWx1ZT4gU3R5bGVCdWlsZGVy
Q28KICAgICAgICAgcmV0dXJuIFNoYXBlVmFsdWU6OmNyZWF0ZShzdHlsZVJlc29sdmVyLnN0eWxl
SW1hZ2UodmFsdWUpLnJlbGVhc2VOb25OdWxsKCkpOwogCiAgICAgUmVmUHRyPEJhc2ljU2hhcGU+
IHNoYXBlOwotICAgIENTU0JveFR5cGUgcmVmZXJlbmNlQm94ID0gQm94TWlzc2luZzsKKyAgICBD
U1NCb3hUeXBlIHJlZmVyZW5jZUJveCA9IENTU0JveFR5cGU6OkJveE1pc3Npbmc7CiAgICAgZm9y
IChhdXRvJiBjdXJyZW50VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgewog
ICAgICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
PihjdXJyZW50VmFsdWUuZ2V0KCkpOwogICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNTaGFw
ZSgpKQpAQCAtNzk0LDcgKzc5NCw3IEBAIGlubGluZSBSZWZQdHI8U2hhcGVWYWx1ZT4gU3R5bGVC
dWlsZGVyQ28KICAgICBpZiAoc2hhcGUpCiAgICAgICAgIHJldHVybiBTaGFwZVZhbHVlOjpjcmVh
dGUoc2hhcGUucmVsZWFzZU5vbk51bGwoKSwgcmVmZXJlbmNlQm94KTsKIAotICAgIGlmIChyZWZl
cmVuY2VCb3ggIT0gQm94TWlzc2luZykKKyAgICBpZiAocmVmZXJlbmNlQm94ICE9IENTU0JveFR5
cGU6OkJveE1pc3NpbmcpCiAgICAgICAgIHJldHVybiBTaGFwZVZhbHVlOjpjcmVhdGUocmVmZXJl
bmNlQm94KTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtOTIzLDcgKzkyMyw3IEBA
IGlubGluZSBib29sIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXQKICAgICAgICAgICAgIHVu
c2lnbmVkIGF1dG9SZXBlYXRJbmRleCA9IDA7CiAgICAgICAgICAgICBDU1NWYWx1ZUlEIGF1dG9S
ZXBlYXRJRCA9IGRvd25jYXN0PENTU0dyaWRBdXRvUmVwZWF0VmFsdWU+KGN1cnJlbnRWYWx1ZS5n
ZXQoKSkuYXV0b1JlcGVhdElEKCk7CiAgICAgICAgICAgICBBU1NFUlQoYXV0b1JlcGVhdElEID09
IENTU1ZhbHVlQXV0b0ZpbGwgfHwgYXV0b1JlcGVhdElEID09IENTU1ZhbHVlQXV0b0ZpdCk7Ci0g
ICAgICAgICAgICB0cmFja3NEYXRhLm1fYXV0b1JlcGVhdFR5cGUgPSBhdXRvUmVwZWF0SUQgPT0g
Q1NTVmFsdWVBdXRvRmlsbCA/IEF1dG9GaWxsIDogQXV0b0ZpdDsKKyAgICAgICAgICAgIHRyYWNr
c0RhdGEubV9hdXRvUmVwZWF0VHlwZSA9IGF1dG9SZXBlYXRJRCA9PSBDU1NWYWx1ZUF1dG9GaWxs
ID8gQXV0b1JlcGVhdFR5cGU6OkZpbGwgOiBBdXRvUmVwZWF0VHlwZTo6Rml0OwogICAgICAgICAg
ICAgZm9yIChhdXRvJiBhdXRvUmVwZWF0VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KGN1
cnJlbnRWYWx1ZS5nZXQoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAoaXM8Q1NTR3JpZExpbmVO
YW1lc1ZhbHVlPihhdXRvUmVwZWF0VmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNyZWF0
ZUdyaWRMaW5lTmFtZXNMaXN0KGF1dG9SZXBlYXRWYWx1ZS5nZXQoKSwgYXV0b1JlcGVhdEluZGV4
LCB0cmFja3NEYXRhLm1fYXV0b1JlcGVhdE5hbWVkR3JpZExpbmVzLCB0cmFja3NEYXRhLm1fYXV0
b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRMaW5lcyk7CkBAIC0xMDc4LDcgKzEwNzgsNyBAQCBpbmxp
bmUgR3JpZEF1dG9GbG93IFN0eWxlQnVpbGRlckNvbnZlcnRlCiBpbmxpbmUgQ1NTVG9MZW5ndGhD
b252ZXJzaW9uRGF0YSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNzc3RvTGVuZ3RoQ29udmVyc2lv
bkRhdGFXaXRoVGV4dFpvb21GYWN0b3IoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIHsK
ICAgICBpZiAoYXV0byogZnJhbWUgPSBzdHlsZVJlc29sdmVyLmRvY3VtZW50KCkuZnJhbWUoKSkg
ewotICAgICAgICBmbG9hdCB0ZXh0Wm9vbUZhY3RvciA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+
dGV4dFpvb20oKSAhPSBUZXh0Wm9vbVJlc2V0ID8gZnJhbWUtPnRleHRab29tRmFjdG9yKCkgOiAx
LjBmOworICAgICAgICBmbG9hdCB0ZXh0Wm9vbUZhY3RvciA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUo
KS0+dGV4dFpvb20oKSAhPSBUZXh0Wm9vbTo6UmVzZXQgPyBmcmFtZS0+dGV4dFpvb21GYWN0b3Io
KSA6IDEuMGY7CiAgICAgICAgIHJldHVybiBzdHlsZVJlc29sdmVyLnN0YXRlKCkuY3NzVG9MZW5n
dGhDb252ZXJzaW9uRGF0YSgpLmNvcHlXaXRoQWRqdXN0ZWRab29tKHN0eWxlUmVzb2x2ZXIuc3R5
bGUoKS0+ZWZmZWN0aXZlWm9vbSgpICogdGV4dFpvb21GYWN0b3IpOwogICAgIH0KICAgICByZXR1
cm4gc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKTsKQEAg
LTE0NjgsOSArMTQ2OCw5IEBAIGlubGluZSBCcmVha0JldHdlZW4gU3R5bGVCdWlsZGVyQ29udmVy
dGUKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZSk7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1
ZUFsd2F5cykKLSAgICAgICAgcmV0dXJuIFBhZ2VCcmVha0JldHdlZW47CisgICAgICAgIHJldHVy
biBCcmVha0JldHdlZW46OlBhZ2U7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9
PSBDU1NWYWx1ZUF2b2lkKQotICAgICAgICByZXR1cm4gQXZvaWRQYWdlQnJlYWtCZXR3ZWVuOwor
ICAgICAgICByZXR1cm4gQnJlYWtCZXR3ZWVuOjpBdm9pZFBhZ2U7CiAgICAgcmV0dXJuIHByaW1p
dGl2ZVZhbHVlOwogfQogCkBAIC0xNDc4LDcgKzE0NzgsNyBAQCBpbmxpbmUgQnJlYWtJbnNpZGUg
U3R5bGVCdWlsZGVyQ29udmVydGVyCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS52
YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdm9pZCkKLSAgICAgICAgcmV0dXJuIEF2b2lkUGFnZUJyZWFr
SW5zaWRlOworICAgICAgICByZXR1cm4gQnJlYWtJbnNpZGU6OkF2b2lkUGFnZTsKICAgICByZXR1
cm4gcHJpbWl0aXZlVmFsdWU7CiB9CiAKQEAgLTE0ODYsOSArMTQ4Niw5IEBAIGlubGluZSBCcmVh
a0JldHdlZW4gU3R5bGVCdWlsZGVyQ29udmVydGUKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1
ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgaWYgKHByaW1pdGl2
ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUFsd2F5cykKLSAgICAgICAgcmV0dXJuIENvbHVt
bkJyZWFrQmV0d2VlbjsKKyAgICAgICAgcmV0dXJuIEJyZWFrQmV0d2Vlbjo6Q29sdW1uOwogICAg
IGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdm9pZCkKLSAgICAgICAg
cmV0dXJuIEF2b2lkQ29sdW1uQnJlYWtCZXR3ZWVuOworICAgICAgICByZXR1cm4gQnJlYWtCZXR3
ZWVuOjpBdm9pZENvbHVtbjsKICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWU7CiB9CiAKQEAgLTE0
OTYsNyArMTQ5Niw3IEBAIGlubGluZSBCcmVha0luc2lkZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIK
IHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSk7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF2
b2lkKQotICAgICAgICByZXR1cm4gQXZvaWRDb2x1bW5CcmVha0luc2lkZTsKKyAgICAgICAgcmV0
dXJuIEJyZWFrSW5zaWRlOjpBdm9pZENvbHVtbjsKICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWU7
CiB9CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCShy
ZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9t
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw3ICsxNTYsNyBAQCBwcml2YXRlOgogCiAgICAgdGVt
cGxhdGUgPENTU1Byb3BlcnR5SUQgaWQ+CiAgICAgc3RhdGljIHZvaWQgYXBwbHlUZXh0T3JCb3hT
aGFkb3dWYWx1ZShTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgYm9vbCBp
c1ZhbGlkRGlzcGxheVZhbHVlKFN0eWxlUmVzb2x2ZXImLCBFRGlzcGxheSk7CisgICAgc3RhdGlj
IGJvb2wgaXNWYWxpZERpc3BsYXlWYWx1ZShTdHlsZVJlc29sdmVyJiwgRGlzcGxheVR5cGUpOwog
CiAgICAgZW51bSBDb3VudGVyQmVoYXZpb3Ige0luY3JlbWVudCA9IDAsIFJlc2V0fTsKICAgICB0
ZW1wbGF0ZSA8Q291bnRlckJlaGF2aW9yIGNvdW50ZXJCZWhhdmlvcj4KQEAgLTM5NCw5ICszOTQs
OSBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsCiAgICAgZm9yIChh
dXRvJiBpdGVtIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKICAgICAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUmIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KGl0ZW0uZ2V0KCkpOwogICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09
IENTU1ZhbHVlRnJvbUltYWdlKQotICAgICAgICAgICAgc291cmNlID0gSW1hZ2VSZXNvbHV0aW9u
RnJvbUltYWdlOworICAgICAgICAgICAgc291cmNlID0gSW1hZ2VSZXNvbHV0aW9uU291cmNlOjpG
cm9tSW1hZ2U7CiAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBD
U1NWYWx1ZVNuYXApCi0gICAgICAgICAgICBzbmFwID0gSW1hZ2VSZXNvbHV0aW9uU25hcFBpeGVs
czsKKyAgICAgICAgICAgIHNuYXAgPSBJbWFnZVJlc29sdXRpb25TbmFwOjpQaXhlbHM7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIHJlc29sdXRpb24gPSBwcmltaXRpdmVWYWx1ZS5kb3VibGVW
YWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RQUFgpOwogICAgIH0KQEAgLTY1Niw3ICs2NTYs
NyBAQCBzdGF0aWMgaW5saW5lIGZsb2F0IGNvbXB1dGVCYXNlU3BlY2lmaWVkCiB7CiAgICAgZmxv
YXQgcmVzdWx0ID0gc3R5bGUuc3BlY2lmaWVkRm9udFNpemUoKTsKICAgICBhdXRvKiBmcmFtZSA9
IGRvY3VtZW50LmZyYW1lKCk7Ci0gICAgaWYgKGZyYW1lICYmIHN0eWxlLnRleHRab29tKCkgIT0g
VGV4dFpvb21SZXNldCkKKyAgICBpZiAoZnJhbWUgJiYgc3R5bGUudGV4dFpvb20oKSAhPSBUZXh0
Wm9vbTo6UmVzZXQpCiAgICAgICAgIHJlc3VsdCAqPSBmcmFtZS0+dGV4dFpvb21GYWN0b3IoKTsK
ICAgICByZXN1bHQgKj0gc3R5bGUuZWZmZWN0aXZlWm9vbSgpOwogICAgIGlmIChwZXJjZW50YWdl
QXV0b3NpemluZ0VuYWJsZWQpCkBAIC04MTUsOSArODE1LDkgQEAgaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbAogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUu
dmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKQotICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxl
KCktPnNldFRleHRab29tKFRleHRab29tTm9ybWFsKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci5z
dHlsZSgpLT5zZXRUZXh0Wm9vbShUZXh0Wm9vbTo6Tm9ybWFsKTsKICAgICBlbHNlIGlmIChwcmlt
aXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVSZXNldCkKLSAgICAgICAgc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5zZXRUZXh0Wm9vbShUZXh0Wm9vbVJlc2V0KTsKKyAgICAgICAgc3R5bGVS
ZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0Wm9vbShUZXh0Wm9vbTo6UmVzZXQpOwogICAgIHN0eWxl
UmVzb2x2ZXIuc3RhdGUoKS5zZXRGb250RGlydHkodHJ1ZSk7CiB9CiAKQEAgLTEwMDQsMjMgKzEw
MDQsMjMgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbAogICAgIHN0
eWxlUmVzb2x2ZXIuc2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7CiB9CiAKLWlu
bGluZSBib29sIFN0eWxlQnVpbGRlckN1c3RvbTo6aXNWYWxpZERpc3BsYXlWYWx1ZShTdHlsZVJl
c29sdmVyJiBzdHlsZVJlc29sdmVyLCBFRGlzcGxheSBkaXNwbGF5KQoraW5saW5lIGJvb2wgU3R5
bGVCdWlsZGVyQ3VzdG9tOjppc1ZhbGlkRGlzcGxheVZhbHVlKFN0eWxlUmVzb2x2ZXImIHN0eWxl
UmVzb2x2ZXIsIERpc3BsYXlUeXBlIGRpc3BsYXkpCiB7Ci0gICAgaWYgKGlzPFNWR0VsZW1lbnQ+
KHN0eWxlUmVzb2x2ZXIuZWxlbWVudCgpKSAmJiBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnN0eWxl
VHlwZSgpID09IE5PUFNFVURPKQotICAgICAgICByZXR1cm4gZGlzcGxheSA9PSBJTkxJTkUgfHwg
ZGlzcGxheSA9PSBCTE9DSyB8fCBkaXNwbGF5ID09IE5PTkU7CisgICAgaWYgKGlzPFNWR0VsZW1l
bnQ+KHN0eWxlUmVzb2x2ZXIuZWxlbWVudCgpKSAmJiBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnN0
eWxlVHlwZSgpID09IFBzZXVkb0lkOjpOb25lKQorICAgICAgICByZXR1cm4gZGlzcGxheSA9PSBE
aXNwbGF5VHlwZTo6SW5saW5lIHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OkJsb2NrIHx8IGRp
c3BsYXkgPT0gRGlzcGxheVR5cGU6Ok5vbmU7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGlubGlu
ZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0RGlzcGxheShTdHlsZVJlc29s
dmVyJiBzdHlsZVJlc29sdmVyKQogewotICAgIEVEaXNwbGF5IGRpc3BsYXkgPSBzdHlsZVJlc29s
dmVyLnBhcmVudFN0eWxlKCktPmRpc3BsYXkoKTsKKyAgICBEaXNwbGF5VHlwZSBkaXNwbGF5ID0g
c3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5kaXNwbGF5KCk7CiAgICAgaWYgKGlzVmFsaWRE
aXNwbGF5VmFsdWUoc3R5bGVSZXNvbHZlciwgZGlzcGxheSkpCiAgICAgICAgIHN0eWxlUmVzb2x2
ZXIuc3R5bGUoKS0+c2V0RGlzcGxheShkaXNwbGF5KTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRGlzcGxheShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29s
dmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgRURpc3BsYXkgZGlzcGxheSA9IGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CisgICAgRGlzcGxheVR5cGUgZGlzcGxheSA9IGRv
d25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgaWYgKGlzVmFsaWREaXNwbGF5
VmFsdWUoc3R5bGVSZXNvbHZlciwgZGlzcGxheSkpCiAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5
bGUoKS0+c2V0RGlzcGxheShkaXNwbGF5KTsKIH0KQEAgLTExMTgsOCArMTExOCw4IEBAIGlubGlu
ZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWwKIAogICAgIGF1dG8mIHByaW1pdGl2
ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAocHJp
bWl0aXZlVmFsdWUuaXNTdHJpbmcoKSkgewotICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCkt
PnNldFRleHRFbXBoYXNpc0ZpbGwoVGV4dEVtcGhhc2lzRmlsbEZpbGxlZCk7Ci0gICAgICAgIHN0
eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzTWFyayhUZXh0RW1waGFzaXNNYXJr
Q3VzdG9tKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNG
aWxsKFRleHRFbXBoYXNpc0ZpbGw6OkZpbGxlZCk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5
bGUoKS0+c2V0VGV4dEVtcGhhc2lzTWFyayhUZXh0RW1waGFzaXNNYXJrOjpDdXN0b20pOwogICAg
ICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsocHJp
bWl0aXZlVmFsdWUuc3RyaW5nVmFsdWUoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0x
MTI4LDkgKzExMjgsOSBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFs
CiAKICAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlRmlsbGVkIHx8
IHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU9wZW4pIHsKICAgICAgICAgc3R5
bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNGaWxsKHByaW1pdGl2ZVZhbHVlKTsK
LSAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNNYXJrKFRleHRF
bXBoYXNpc01hcmtBdXRvKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0
RW1waGFzaXNNYXJrKFRleHRFbXBoYXNpc01hcms6OkF1dG8pOwogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzRmlsbChUZXh0RW1waGFz
aXNGaWxsRmlsbGVkKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0RW1w
aGFzaXNGaWxsKFRleHRFbXBoYXNpc0ZpbGw6OkZpbGxlZCk7CiAgICAgICAgIHN0eWxlUmVzb2x2
ZXIuc3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzTWFyayhwcmltaXRpdmVWYWx1ZSk7CiAgICAgfQog
fQpAQCAtMTIxOSwxMyArMTIxOSwxMyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206
OmFwcGx5VmFsCiB7CiAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5jbGVhckN1cnNvckxpc3Qo
KTsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkgewotICAgICAgICBFQ3Vy
c29yIGN1cnNvciA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CisgICAgICAg
IEN1cnNvclR5cGUgY3Vyc29yID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsK
ICAgICAgICAgaWYgKHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+Y3Vyc29yKCkgIT0gY3Vyc29yKQog
ICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRDdXJzb3IoY3Vyc29yKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Q3Vy
c29yKEN1cnNvckF1dG8pOworICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Q3Vyc29yKEN1
cnNvclR5cGU6OkF1dG8pOwogICAgIGF1dG8mIGxpc3QgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+
KHZhbHVlKTsKICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBsaXN0KSB7CiAgICAgICAgIGlmIChpczxD
U1NDdXJzb3JJbWFnZVZhbHVlPihpdGVtKSkgewpAQCAtMTQxNCw3ICsxNDE0LDcgQEAgaW5saW5l
IHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbAogICAgICAgICAgICAgZGlkU2V0ID0g
dHJ1ZTsKICAgICAgICAgfSBlbHNlIGlmIChjb250ZW50VmFsdWUuaXNBdHRyKCkpIHsKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBDYW4gYSBuYW1lc3BhY2UgYmUgc3BlY2lmaWVkIGZvciBhbiBhdHRy
KGZvbyk/Ci0gICAgICAgICAgICBpZiAoc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zdHlsZVR5cGUo
KSA9PSBOT1BTRVVETykKKyAgICAgICAgICAgIGlmIChzdHlsZVJlc29sdmVyLnN0eWxlKCktPnN0
eWxlVHlwZSgpID09IFBzZXVkb0lkOjpOb25lKQogICAgICAgICAgICAgICAgIHN0eWxlUmVzb2x2
ZXIuc3R5bGUoKS0+c2V0SGFzQXR0ckNvbnRlbnQoKTsKICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICBjb25zdF9jYXN0PFJlbmRlclN0eWxlKj4oc3R5bGVSZXNvbHZlci5wYXJlbnRT
dHlsZSgpKS0+c2V0SGFzQXR0ckNvbnRlbnQoKTsKQEAgLTE0MjYsMTAgKzE0MjYsMTAgQEAgaW5s
aW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbAogICAgICAgICAgICAgc3R5bGVS
ZXNvbHZlci5ydWxlU2V0cygpLm11dGFibGVGZWF0dXJlcygpLnJlZ2lzdGVyQ29udGVudEF0dHJp
YnV0ZShhdHRyLmxvY2FsTmFtZSgpKTsKICAgICAgICAgfSBlbHNlIGlmIChjb250ZW50VmFsdWUu
aXNDb3VudGVyKCkpIHsKICAgICAgICAgICAgIGF1dG8qIGNvdW50ZXJWYWx1ZSA9IGNvbnRlbnRW
YWx1ZS5jb3VudGVyVmFsdWUoKTsKLSAgICAgICAgICAgIEVMaXN0U3R5bGVUeXBlIGxpc3RTdHls
ZVR5cGUgPSBOb25lTGlzdFN0eWxlOworICAgICAgICAgICAgTGlzdFN0eWxlVHlwZSBsaXN0U3R5
bGVUeXBlID0gTGlzdFN0eWxlVHlwZTo6Tm9uZTsKICAgICAgICAgICAgIENTU1ZhbHVlSUQgbGlz
dFN0eWxlSWRlbnQgPSBjb3VudGVyVmFsdWUtPmxpc3RTdHlsZUlkZW50KCk7CiAgICAgICAgICAg
ICBpZiAobGlzdFN0eWxlSWRlbnQgIT0gQ1NTVmFsdWVOb25lKQotICAgICAgICAgICAgICAgIGxp
c3RTdHlsZVR5cGUgPSBzdGF0aWNfY2FzdDxFTGlzdFN0eWxlVHlwZT4obGlzdFN0eWxlSWRlbnQg
LSBDU1NWYWx1ZURpc2MpOworICAgICAgICAgICAgICAgIGxpc3RTdHlsZVR5cGUgPSBzdGF0aWNf
Y2FzdDxMaXN0U3R5bGVUeXBlPihsaXN0U3R5bGVJZGVudCAtIENTU1ZhbHVlRGlzYyk7CiAgICAg
ICAgICAgICBhdXRvIGNvdW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJDb250ZW50Pihj
b3VudGVyVmFsdWUtPmlkZW50aWZpZXIoKSwgbGlzdFN0eWxlVHlwZSwgY291bnRlclZhbHVlLT5z
ZXBhcmF0b3IoKSk7CiAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldENvbnRl
bnQoV1RGTW92ZShjb3VudGVyKSwgZGlkU2V0KTsKICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7
CkBAIC0xNjAwLDcgKzE2MDAsNyBAQCBpbmxpbmUgZmxvYXQgU3R5bGVCdWlsZGVyQ3VzdG9tOjpz
bWFsbGVyCiAKIGlubGluZSBmbG9hdCBTdHlsZUJ1aWxkZXJDdXN0b206OmRldGVybWluZVJ1YnlU
ZXh0U2l6ZU11bHRpcGxpZXIoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIHsKLSAgICBp
ZiAoc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5ydWJ5UG9zaXRpb24oKSAhPSBSdWJ5UG9zaXRpb25J
bnRlckNoYXJhY3RlcikKKyAgICBpZiAoc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5ydWJ5UG9zaXRp
b24oKSAhPSBSdWJ5UG9zaXRpb246OkludGVyQ2hhcmFjdGVyKQogICAgICAgICByZXR1cm4gMC41
ZjsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGhhY2sgaXMgdG8gZW5zdXJlIHRvbmUgbWFya3MgYXJl
IHRoZSBzYW1lIHNpemUgYXMKQEAgLTE4MTAsNyArMTgxMCw3IEBAIHZvaWQgU3R5bGVCdWlsZGVy
Q3VzdG9tOjphcHBseVZhbHVlQWx0KFMKICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5z
ZXRDb250ZW50QWx0VGV4dChwcmltaXRpdmVWYWx1ZS5zdHJpbmdWYWx1ZSgpKTsKICAgICBlbHNl
IGlmIChwcmltaXRpdmVWYWx1ZS5pc0F0dHIoKSkgewogICAgICAgICAvLyBGSVhNRTogQ2FuIGEg
bmFtZXNwYWNlIGJlIHNwZWNpZmllZCBmb3IgYW4gYXR0cihmb28pPwotICAgICAgICBpZiAoc3R5
bGVSZXNvbHZlci5zdHlsZSgpLT5zdHlsZVR5cGUoKSA9PSBOT1BTRVVETykKKyAgICAgICAgaWYg
KHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6Ok5vbmUpCiAg
ICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFVuaXF1ZSgpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBjb25zdF9jYXN0PFJlbmRlclN0eWxlKj4oc3R5bGVSZXNvbHZlci5w
YXJlbnRTdHlsZSgpKS0+c2V0VW5pcXVlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1OSwxMSArMzU5LDExIEBAIEVsZW1lbnRT
dHlsZSBTdHlsZVJlc29sdmVyOjpzdHlsZUZvckVsZW0KIAogICAgIGlmIChlbGVtZW50LmlzTGlu
aygpKSB7CiAgICAgICAgIHN0eWxlLnNldElzTGluayh0cnVlKTsKLSAgICAgICAgRUluc2lkZUxp
bmsgbGlua1N0YXRlID0gc3RhdGUuZWxlbWVudExpbmtTdGF0ZSgpOwotICAgICAgICBpZiAobGlu
a1N0YXRlICE9IE5vdEluc2lkZUxpbmspIHsKKyAgICAgICAgSW5zaWRlTGluayBsaW5rU3RhdGUg
PSBzdGF0ZS5lbGVtZW50TGlua1N0YXRlKCk7CisgICAgICAgIGlmIChsaW5rU3RhdGUgIT0gSW5z
aWRlTGluazo6Tm90SW5zaWRlKSB7CiAgICAgICAgICAgICBib29sIGZvcmNlVmlzaXRlZCA9IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Zm9yY2VQc2V1ZG9TdGF0ZShlbGVtZW50LCBDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NWaXNpdGVkKTsKICAgICAgICAgICAgIGlmIChmb3JjZVZpc2l0ZWQp
Ci0gICAgICAgICAgICAgICAgbGlua1N0YXRlID0gSW5zaWRlVmlzaXRlZExpbms7CisgICAgICAg
ICAgICAgICAgbGlua1N0YXRlID0gSW5zaWRlTGluazo6SW5zaWRlVmlzaXRlZDsKICAgICAgICAg
fQogICAgICAgICBzdHlsZS5zZXRJbnNpZGVMaW5rKGxpbmtTdGF0ZSk7CiAgICAgfQpAQCAtNjcz
LDUzICs2NzMsNTMgQEAgc3RhdGljIHZvaWQgYWRkSW50cmluc2ljTWFyZ2lucyhSZW5kZXJTdAog
ICAgIH0KIH0KIAotc3RhdGljIEVEaXNwbGF5IGVxdWl2YWxlbnRCbG9ja0Rpc3BsYXkoY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCitzdGF0aWMgRGlz
cGxheVR5cGUgZXF1aXZhbGVudEJsb2NrRGlzcGxheShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUs
IGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBzd2l0Y2ggKGF1dG8gZGlzcGxheSA9
IHN0eWxlLmRpc3BsYXkoKSkgewotICAgIGNhc2UgQkxPQ0s6Ci0gICAgY2FzZSBUQUJMRToKLSAg
ICBjYXNlIEJPWDoKLSAgICBjYXNlIEZMRVg6Ci0gICAgY2FzZSBXRUJLSVRfRkxFWDoKLSAgICBj
YXNlIEdSSUQ6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6QmxvY2s6CisgICAgY2FzZSBEaXNwbGF5
VHlwZTo6VGFibGU6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6Qm94OgorICAgIGNhc2UgRGlzcGxh
eVR5cGU6OkZsZXg6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6V2ViS2l0RmxleDoKKyAgICBjYXNl
IERpc3BsYXlUeXBlOjpHcmlkOgogICAgICAgICByZXR1cm4gZGlzcGxheTsKIAotICAgIGNhc2Ug
TElTVF9JVEVNOgorICAgIGNhc2UgRGlzcGxheVR5cGU6Okxpc3RJdGVtOgogICAgICAgICAvLyBJ
dCBpcyBhIFdpbklFIGJ1ZyB0aGF0IGZsb2F0ZWQgbGlzdCBpdGVtcyBsb3NlIHRoZWlyIGJ1bGxl
dHMsIHNvIHdlJ2xsIGVtdWxhdGUgdGhlIHF1aXJrLCBidXQgb25seSBpbiBxdWlya3MgbW9kZS4K
ICAgICAgICAgaWYgKGRvY3VtZW50LmluUXVpcmtzTW9kZSgpICYmIHN0eWxlLmlzRmxvYXRpbmco
KSkKLSAgICAgICAgICAgIHJldHVybiBCTE9DSzsKKyAgICAgICAgICAgIHJldHVybiBEaXNwbGF5
VHlwZTo6QmxvY2s7CiAgICAgICAgIHJldHVybiBkaXNwbGF5OwotICAgIGNhc2UgSU5MSU5FX1RB
QkxFOgotICAgICAgICByZXR1cm4gVEFCTEU7Ci0gICAgY2FzZSBJTkxJTkVfQk9YOgotICAgICAg
ICByZXR1cm4gQk9YOwotICAgIGNhc2UgSU5MSU5FX0ZMRVg6Ci0gICAgY2FzZSBXRUJLSVRfSU5M
SU5FX0ZMRVg6Ci0gICAgICAgIHJldHVybiBGTEVYOwotICAgIGNhc2UgSU5MSU5FX0dSSUQ6Ci0g
ICAgICAgIHJldHVybiBHUklEOwotCi0gICAgY2FzZSBJTkxJTkU6Ci0gICAgY2FzZSBDT01QQUNU
OgotICAgIGNhc2UgSU5MSU5FX0JMT0NLOgotICAgIGNhc2UgVEFCTEVfUk9XX0dST1VQOgotICAg
IGNhc2UgVEFCTEVfSEVBREVSX0dST1VQOgotICAgIGNhc2UgVEFCTEVfRk9PVEVSX0dST1VQOgot
ICAgIGNhc2UgVEFCTEVfUk9XOgotICAgIGNhc2UgVEFCTEVfQ09MVU1OX0dST1VQOgotICAgIGNh
c2UgVEFCTEVfQ09MVU1OOgotICAgIGNhc2UgVEFCTEVfQ0VMTDoKLSAgICBjYXNlIFRBQkxFX0NB
UFRJT046Ci0gICAgICAgIHJldHVybiBCTE9DSzsKLSAgICBjYXNlIENPTlRFTlRTOgorICAgIGNh
c2UgRGlzcGxheVR5cGU6OklubGluZVRhYmxlOgorICAgICAgICByZXR1cm4gRGlzcGxheVR5cGU6
OlRhYmxlOworICAgIGNhc2UgRGlzcGxheVR5cGU6OklubGluZUJveDoKKyAgICAgICAgcmV0dXJu
IERpc3BsYXlUeXBlOjpCb3g7CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6SW5saW5lRmxleDoKKyAg
ICBjYXNlIERpc3BsYXlUeXBlOjpXZWJLaXRJbmxpbmVGbGV4OgorICAgICAgICByZXR1cm4gRGlz
cGxheVR5cGU6OkZsZXg7CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6SW5saW5lR3JpZDoKKyAgICAg
ICAgcmV0dXJuIERpc3BsYXlUeXBlOjpHcmlkOworCisgICAgY2FzZSBEaXNwbGF5VHlwZTo6SW5s
aW5lOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OkNvbXBhY3Q6CisgICAgY2FzZSBEaXNwbGF5VHlw
ZTo6SW5saW5lQmxvY2s6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFibGVSb3dHcm91cDoKKyAg
ICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZUhlYWRlckdyb3VwOgorICAgIGNhc2UgRGlzcGxheVR5
cGU6OlRhYmxlRm9vdGVyR3JvdXA6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFibGVSb3c6Cisg
ICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1bW5Hcm91cDoKKyAgICBjYXNlIERpc3BsYXlU
eXBlOjpUYWJsZUNvbHVtbjoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZUNlbGw6CisgICAg
Y2FzZSBEaXNwbGF5VHlwZTo6VGFibGVDYXB0aW9uOgorICAgICAgICByZXR1cm4gRGlzcGxheVR5
cGU6OkJsb2NrOworICAgIGNhc2UgRGlzcGxheVR5cGU6OkNvbnRlbnRzOgogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIENPTlRFTlRTOwotICAgIGNhc2UgTk9O
RToKKyAgICAgICAgcmV0dXJuIERpc3BsYXlUeXBlOjpDb250ZW50czsKKyAgICBjYXNlIERpc3Bs
YXlUeXBlOjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0
dXJuIE5PTkU7CisgICAgICAgIHJldHVybiBEaXNwbGF5VHlwZTo6Tm9uZTsKICAgICB9CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEJMT0NLOworICAgIHJldHVybiBEaXNw
bGF5VHlwZTo6QmxvY2s7CiB9CiAKIC8vIENTUyByZXF1aXJlcyB0ZXh0LWRlY29yYXRpb24gdG8g
YmUgcmVzZXQgYXQgZWFjaCBET00gZWxlbWVudCBmb3IgdGFibGVzLCAKQEAgLTcyNyw4ICs3Mjcs
OCBAQCBzdGF0aWMgRURpc3BsYXkgZXF1aXZhbGVudEJsb2NrRGlzcGxheShjCiAvLyBhbmQgYWJz
b2x1dGUgb3IgcmVsYXRpdmVseSBwb3NpdGlvbmVkIGVsZW1lbnRzLgogc3RhdGljIGJvb2wgZG9l
c05vdEluaGVyaXRUZXh0RGVjb3JhdGlvbihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0
IEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuIHN0eWxlLmRpc3BsYXkoKSA9PSBUQUJM
RSB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gSU5MSU5FX1RBQkxFCi0gICAgICAgIHx8IHN0eWxlLmRp
c3BsYXkoKSA9PSBJTkxJTkVfQkxPQ0sgfHwgc3R5bGUuZGlzcGxheSgpID09IElOTElORV9CT1gg
fHwgKGVsZW1lbnQgJiYgaXNBdFNoYWRvd0JvdW5kYXJ5KCplbGVtZW50KSkKKyAgICByZXR1cm4g
c3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpUYWJsZSB8fCBzdHlsZS5kaXNwbGF5KCkg
PT0gRGlzcGxheVR5cGU6OklubGluZVRhYmxlCisgICAgICAgIHx8IHN0eWxlLmRpc3BsYXkoKSA9
PSBEaXNwbGF5VHlwZTo6SW5saW5lQmxvY2sgfHwgc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlU
eXBlOjpJbmxpbmVCb3ggfHwgKGVsZW1lbnQgJiYgaXNBdFNoYWRvd0JvdW5kYXJ5KCplbGVtZW50
KSkKICAgICAgICAgfHwgc3R5bGUuaXNGbG9hdGluZygpIHx8IHN0eWxlLmhhc091dE9mRmxvd1Bv
c2l0aW9uKCk7CiB9CiAKQEAgLTc0Miw5ICs3NDIsOSBAQCBzdGF0aWMgYm9vbCBpc1Njcm9sbGFi
bGVPdmVyZmxvdyhPdmVyZmxvCiB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkanVzdFN0eWxlRm9ySW50
ZXJDaGFyYWN0ZXJSdWJ5KCkKIHsKICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSBtX3N0YXRlLnN0
eWxlKCk7Ci0gICAgaWYgKHN0eWxlLT5ydWJ5UG9zaXRpb24oKSAhPSBSdWJ5UG9zaXRpb25JbnRl
ckNoYXJhY3RlciB8fCAhbV9zdGF0ZS5lbGVtZW50KCkgfHwgIW1fc3RhdGUuZWxlbWVudCgpLT5o
YXNUYWdOYW1lKHJ0VGFnKSkKKyAgICBpZiAoc3R5bGUtPnJ1YnlQb3NpdGlvbigpICE9IFJ1YnlQ
b3NpdGlvbjo6SW50ZXJDaGFyYWN0ZXIgfHwgIW1fc3RhdGUuZWxlbWVudCgpIHx8ICFtX3N0YXRl
LmVsZW1lbnQoKS0+aGFzVGFnTmFtZShydFRhZykpCiAgICAgICAgIHJldHVybjsKLSAgICBzdHls
ZS0+c2V0VGV4dEFsaWduKENFTlRFUik7CisgICAgc3R5bGUtPnNldFRleHRBbGlnbihUZXh0QWxp
Z25Nb2RlOjpDZW50ZXIpOwogICAgIGlmIChzdHlsZS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
KSkKICAgICAgICAgc3R5bGUtPnNldFdyaXRpbmdNb2RlKExlZnRUb1JpZ2h0V3JpdGluZ01vZGUp
OwogfQpAQCAtNzk2LDIwICs3OTYsMjAgQEAgc3RhdGljIHZvaWQgYWRqdXN0RGlzcGxheUNvbnRl
bnRzU3R5bGUoUgogewogICAgIGJvb2wgZGlzcGxheUNvbnRlbnRzRW5hYmxlZCA9IGlzPEhUTUxT
bG90RWxlbWVudD4oZWxlbWVudCkgfHwgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS5kaXNwbGF5Q29udGVudHNFbmFibGVkKCk7CiAgICAgaWYgKCFkaXNwbGF5Q29udGVu
dHNFbmFibGVkKSB7Ci0gICAgICAgIHN0eWxlLnNldERpc3BsYXkoSU5MSU5FKTsKKyAgICAgICAg
c3R5bGUuc2V0RGlzcGxheShEaXNwbGF5VHlwZTo6SW5saW5lKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBpZiAoIWVsZW1lbnQpIHsKLSAgICAgICAgaWYgKHN0eWxlLnN0eWxlVHlwZSgp
ICE9IEJFRk9SRSAmJiBzdHlsZS5zdHlsZVR5cGUoKSAhPSBBRlRFUikKLSAgICAgICAgICAgIHN0
eWxlLnNldERpc3BsYXkoTk9ORSk7CisgICAgICAgIGlmIChzdHlsZS5zdHlsZVR5cGUoKSAhPSBQ
c2V1ZG9JZDo6QmVmb3JlICYmIHN0eWxlLnN0eWxlVHlwZSgpICE9IFBzZXVkb0lkOjpBZnRlcikK
KyAgICAgICAgICAgIHN0eWxlLnNldERpc3BsYXkoRGlzcGxheVR5cGU6Ok5vbmUpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIGlmIChlbGVtZW50LT5kb2N1bWVudCgpLmRvY3VtZW50RWxl
bWVudCgpID09IGVsZW1lbnQpIHsKLSAgICAgICAgc3R5bGUuc2V0RGlzcGxheShCTE9DSyk7Cisg
ICAgICAgIHN0eWxlLnNldERpc3BsYXkoRGlzcGxheVR5cGU6OkJsb2NrKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBpZiAoaGFzRWZmZWN0aXZlRGlzcGxheU5vbmVGb3JEaXNwbGF5Q29u
dGVudHMoKmVsZW1lbnQpKQotICAgICAgICBzdHlsZS5zZXREaXNwbGF5KE5PTkUpOworICAgICAg
ICBzdHlsZS5zZXREaXNwbGF5KERpc3BsYXlUeXBlOjpOb25lKTsKIH0KIAogdm9pZCBTdHlsZVJl
c29sdmVyOjphZGp1c3RTVkdFbGVtZW50U3R5bGUoY29uc3QgU1ZHRWxlbWVudCYgc3ZnRWxlbWVu
dCwgUmVuZGVyU3R5bGUmIHN0eWxlKQpAQCAtODI2LDcgKzgyNiw3IEBAIHZvaWQgU3R5bGVSZXNv
bHZlcjo6YWRqdXN0U1ZHRWxlbWVudFN0eWwKIAogICAgIC8vIFNWRyB0ZXh0IGxheW91dCBjb2Rl
IGV4cGVjdHMgdXMgdG8gYmUgYSBibG9jay1sZXZlbCBzdHlsZSBlbGVtZW50LgogICAgIGlmICgo
c3ZnRWxlbWVudC5oYXNUYWdOYW1lKFNWR05hbWVzOjpmb3JlaWduT2JqZWN0VGFnKSB8fCBzdmdF
bGVtZW50Lmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRleHRUYWcpKSAmJiBzdHlsZS5pc0Rpc3BsYXlJ
bmxpbmVUeXBlKCkpCi0gICAgICAgIHN0eWxlLnNldERpc3BsYXkoQkxPQ0spOworICAgICAgICBz
dHlsZS5zZXREaXNwbGF5KERpc3BsYXlUeXBlOjpCbG9jayk7CiB9CiAKIHZvaWQgU3R5bGVSZXNv
bHZlcjo6YWRqdXN0UmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBSZW5kZXJT
dHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hTdHlsZSwgY29u
c3QgRWxlbWVudCogZWxlbWVudCkKQEAgLTgzOSwxMCArODM5LDEwIEBAIHZvaWQgU3R5bGVSZXNv
bHZlcjo6YWRqdXN0UmVuZGVyU3R5bGUoUmUKICAgICAvLyBDYWNoZSBvdXIgb3JpZ2luYWwgZGlz
cGxheS4KICAgICBzdHlsZS5zZXRPcmlnaW5hbERpc3BsYXkoc3R5bGUuZGlzcGxheSgpKTsKIAot
ICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gQ09OVEVOVFMpCisgICAgaWYgKHN0eWxlLmRpc3Bs
YXkoKSA9PSBEaXNwbGF5VHlwZTo6Q29udGVudHMpCiAgICAgICAgIGFkanVzdERpc3BsYXlDb250
ZW50c1N0eWxlKHN0eWxlLCBlbGVtZW50KTsKIAotICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgIT0g
Tk9ORSAmJiBzdHlsZS5kaXNwbGF5KCkgIT0gQ09OVEVOVFMpIHsKKyAgICBpZiAoc3R5bGUuZGlz
cGxheSgpICE9IERpc3BsYXlUeXBlOjpOb25lICYmIHN0eWxlLmRpc3BsYXkoKSAhPSBEaXNwbGF5
VHlwZTo6Q29udGVudHMpIHsKICAgICAgICAgaWYgKGVsZW1lbnQpIHsKICAgICAgICAgICAgIC8v
IElmIHdlIGhhdmUgYSA8dGQ+IHRoYXQgc3BlY2lmaWVzIGEgZmxvYXQgcHJvcGVydHksIGluIHF1
aXJrcyBtb2RlIHdlIGp1c3QgZHJvcCB0aGUgZmxvYXQKICAgICAgICAgICAgIC8vIHByb3BlcnR5
LgpAQCAtODUwLDMzICs4NTAsMzMgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphZGp1c3RSZW5kZXJT
dHlsZShSZQogICAgICAgICAgICAgLy8gdGhlc2UgdGFncyB0byByZXRhaW4gdGhlaXIgZGlzcGxh
eSB0eXBlcy4KICAgICAgICAgICAgIGlmIChkb2N1bWVudCgpLmluUXVpcmtzTW9kZSgpKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUodGRUYWcpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHN0eWxlLnNldERpc3BsYXkoVEFCTEVfQ0VMTCk7CisgICAgICAgICAgICAg
ICAgICAgIHN0eWxlLnNldERpc3BsYXkoRGlzcGxheVR5cGU6OlRhYmxlQ2VsbCk7CiAgICAgICAg
ICAgICAgICAgICAgIHN0eWxlLnNldEZsb2F0aW5nKEZsb2F0OjpObyk7CiAgICAgICAgICAgICAg
ICAgfSBlbHNlIGlmIChpczxIVE1MVGFibGVFbGVtZW50PigqZWxlbWVudCkpCi0gICAgICAgICAg
ICAgICAgICAgIHN0eWxlLnNldERpc3BsYXkoc3R5bGUuaXNEaXNwbGF5SW5saW5lVHlwZSgpID8g
SU5MSU5FX1RBQkxFIDogVEFCTEUpOworICAgICAgICAgICAgICAgICAgICBzdHlsZS5zZXREaXNw
bGF5KHN0eWxlLmlzRGlzcGxheUlubGluZVR5cGUoKSA/IERpc3BsYXlUeXBlOjpJbmxpbmVUYWJs
ZSA6IERpc3BsYXlUeXBlOjpUYWJsZSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlm
IChlbGVtZW50LT5oYXNUYWdOYW1lKHRkVGFnKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKHRoVGFn
KSkgewotICAgICAgICAgICAgICAgIGlmIChzdHlsZS53aGl0ZVNwYWNlKCkgPT0gS0hUTUxfTk9X
UkFQKSB7CisgICAgICAgICAgICAgICAgaWYgKHN0eWxlLndoaXRlU3BhY2UoKSA9PSBXaGl0ZVNw
YWNlOjpLSFRNTE5vV3JhcCkgewogICAgICAgICAgICAgICAgICAgICAvLyBGaWd1cmUgb3V0IGlm
IHdlIGFyZSByZWFsbHkgbm93cmFwcGluZyBvciBpZiB3ZSBzaG91bGQganVzdAogICAgICAgICAg
ICAgICAgICAgICAvLyB1c2Ugbm9ybWFsIGluc3RlYWQuIElmIHRoZSB3aWR0aCBvZiB0aGUgY2Vs
bCBpcyBmaXhlZCwgdGhlbgotICAgICAgICAgICAgICAgICAgICAvLyB3ZSBkb24ndCBhY3R1YWxs
eSB1c2UgTk9XUkFQLgorICAgICAgICAgICAgICAgICAgICAvLyB3ZSBkb24ndCBhY3R1YWxseSB1
c2UgV2hpdGVTcGFjZTo6Tm9XcmFwLgogICAgICAgICAgICAgICAgICAgICBpZiAoc3R5bGUud2lk
dGgoKS5pc0ZpeGVkKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS5zZXRXaGl0ZVNw
YWNlKE5PUk1BTCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS5zZXRXaGl0ZVNwYWNl
KFdoaXRlU3BhY2U6Ok5vcm1hbCk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHN0eWxlLnNldFdoaXRlU3BhY2UoTk9XUkFQKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHN0eWxlLnNldFdoaXRlU3BhY2UoV2hpdGVTcGFjZTo6Tm9XcmFwKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIFRhYmxlcyBu
ZXZlciBzdXBwb3J0IHRoZSAtd2Via2l0LSogdmFsdWVzIGZvciB0ZXh0LWFsaWduIGFuZCB3aWxs
IHJlc2V0IGJhY2sgdG8gdGhlIGRlZmF1bHQuCi0gICAgICAgICAgICBpZiAoaXM8SFRNTFRhYmxl
RWxlbWVudD4oKmVsZW1lbnQpICYmIChzdHlsZS50ZXh0QWxpZ24oKSA9PSBXRUJLSVRfTEVGVCB8
fCBzdHlsZS50ZXh0QWxpZ24oKSA9PSBXRUJLSVRfQ0VOVEVSIHx8IHN0eWxlLnRleHRBbGlnbigp
ID09IFdFQktJVF9SSUdIVCkpCi0gICAgICAgICAgICAgICAgc3R5bGUuc2V0VGV4dEFsaWduKFRB
U1RBUlQpOworICAgICAgICAgICAgaWYgKGlzPEhUTUxUYWJsZUVsZW1lbnQ+KCplbGVtZW50KSAm
JiAoc3R5bGUudGV4dEFsaWduKCkgPT0gVGV4dEFsaWduTW9kZTo6V2ViS2l0TGVmdCB8fCBzdHls
ZS50ZXh0QWxpZ24oKSA9PSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRDZW50ZXIgfHwgc3R5bGUudGV4
dEFsaWduKCkgPT0gVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQpKQorICAgICAgICAgICAgICAg
IHN0eWxlLnNldFRleHRBbGlnbihUZXh0QWxpZ25Nb2RlOjpTdGFydCk7CiAKICAgICAgICAgICAg
IC8vIEZyYW1lcyBhbmQgZnJhbWVzZXRzIG5ldmVyIGhvbm9yIHBvc2l0aW9uOnJlbGF0aXZlIG9y
IHBvc2l0aW9uOmFic29sdXRlLiBUaGlzIGlzIG5lY2Vzc2FyeSB0bwogICAgICAgICAgICAgLy8g
Zml4IGEgY3Jhc2ggd2hlcmUgYSBzaXRlIHRyaWVzIHRvIHBvc2l0aW9uIHRoZXNlIG9iamVjdHMu
IFRoZXkgYWxzbyBuZXZlciBob25vciBkaXNwbGF5LgogICAgICAgICAgICAgaWYgKGVsZW1lbnQt
Pmhhc1RhZ05hbWUoZnJhbWVUYWcpIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUoZnJhbWVzZXRUYWcp
KSB7CiAgICAgICAgICAgICAgICAgc3R5bGUuc2V0UG9zaXRpb24oUG9zaXRpb25UeXBlOjpTdGF0
aWMpOwotICAgICAgICAgICAgICAgIHN0eWxlLnNldERpc3BsYXkoQkxPQ0spOworICAgICAgICAg
ICAgICAgIHN0eWxlLnNldERpc3BsYXkoRGlzcGxheVR5cGU6OkJsb2NrKTsKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgLy8gUnVieSB0ZXh0IGRvZXMgbm90IHN1cHBvcnQgZmxvYXQgb3Ig
cG9zaXRpb24uIFRoaXMgbWlnaHQgY2hhbmdlIHdpdGggZXZvbHV0aW9uIG9mIHRoZSBzcGVjaWZp
Y2F0aW9uLgpAQCAtODkwLDEwICs4OTAsMTAgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphZGp1c3RS
ZW5kZXJTdHlsZShSZQogICAgICAgICAgICAgLy8ganVzdCBhIHNpbmdsZSBkZWNsYXJhdGlvbiB0
aGF0IHNldHMgdGhlICd0ZXh0LWFsaWduJyBwcm9wZXJ0eSB0byB0aGUgdmFsdWUgJ2NlbnRlcicu
CiAgICAgICAgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9y
ZW5kZXJpbmcuaHRtbCNyZW5kZXJpbmcKICAgICAgICAgICAgIGlmIChlbGVtZW50LT5oYXNUYWdO
YW1lKHRoVGFnKSAmJiAhc3R5bGUuaGFzRXhwbGljaXRseVNldFRleHRBbGlnbigpICYmIHBhcmVu
dFN0eWxlLnRleHRBbGlnbigpID09IFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEFsaWduKCkpCi0g
ICAgICAgICAgICAgICAgc3R5bGUuc2V0VGV4dEFsaWduKENFTlRFUik7CisgICAgICAgICAgICAg
ICAgc3R5bGUuc2V0VGV4dEFsaWduKFRleHRBbGlnbk1vZGU6OkNlbnRlcik7CiAKICAgICAgICAg
ICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKGxlZ2VuZFRhZykpCi0gICAgICAgICAgICAgICAg
c3R5bGUuc2V0RGlzcGxheShCTE9DSyk7CisgICAgICAgICAgICAgICAgc3R5bGUuc2V0RGlzcGxh
eShEaXNwbGF5VHlwZTo6QmxvY2spOwogICAgICAgICB9CiAKICAgICAgICAgLy8gQWJzb2x1dGUv
Zml4ZWQgcG9zaXRpb25lZCBlbGVtZW50cywgZmxvYXRpbmcgZWxlbWVudHMgYW5kIHRoZSBkb2N1
bWVudCBlbGVtZW50IG5lZWQgYmxvY2stbGlrZSBvdXRzaWRlIGRpc3BsYXkuCkBAIC05MDIsMjgg
KzkwMiwyOCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0eWxlKFJlCiAKICAg
ICAgICAgLy8gRklYTUU6IERvbid0IHN1cHBvcnQgdGhpcyBtdXRhdGlvbiBmb3IgcHNldWRvIHN0
eWxlcyBsaWtlIGZpcnN0LWxldHRlciBvciBmaXJzdC1saW5lLCBzaW5jZSBpdCdzIG5vdCBjb21w
bGV0ZWx5CiAgICAgICAgIC8vIGNsZWFyIGhvdyB0aGF0IHNob3VsZCB3b3JrLgotICAgICAgICBp
ZiAoc3R5bGUuZGlzcGxheSgpID09IElOTElORSAmJiBzdHlsZS5zdHlsZVR5cGUoKSA9PSBOT1BT
RVVETyAmJiBzdHlsZS53cml0aW5nTW9kZSgpICE9IHBhcmVudFN0eWxlLndyaXRpbmdNb2RlKCkp
Ci0gICAgICAgICAgICBzdHlsZS5zZXREaXNwbGF5KElOTElORV9CTE9DSyk7CisgICAgICAgIGlm
IChzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OklubGluZSAmJiBzdHlsZS5zdHlsZVR5
cGUoKSA9PSBQc2V1ZG9JZDo6Tm9uZSAmJiBzdHlsZS53cml0aW5nTW9kZSgpICE9IHBhcmVudFN0
eWxlLndyaXRpbmdNb2RlKCkpCisgICAgICAgICAgICBzdHlsZS5zZXREaXNwbGF5KERpc3BsYXlU
eXBlOjpJbmxpbmVCbG9jayk7CiAKICAgICAgICAgLy8gQWZ0ZXIgcGVyZm9ybWluZyB0aGUgZGlz
cGxheSBtdXRhdGlvbiwgY2hlY2sgdGFibGUgcm93cy4gV2UgZG8gbm90IGhvbm9yIHBvc2l0aW9u
OnJlbGF0aXZlIG9yIHBvc2l0aW9uOnN0aWNreSBvbgogICAgICAgICAvLyB0YWJsZSByb3dzIG9y
IGNlbGxzLiBUaGlzIGhhcyBiZWVuIGVzdGFibGlzaGVkIGZvciBwb3NpdGlvbjpyZWxhdGl2ZSBp
biBDU1MyLjEgKGFuZCBjYXVzZWQgYSBjcmFzaCBpbiBjb250YWluaW5nQmxvY2soKQogICAgICAg
ICAvLyBvbiBzb21lIHNpdGVzKS4KLSAgICAgICAgaWYgKChzdHlsZS5kaXNwbGF5KCkgPT0gVEFC
TEVfSEVBREVSX0dST1VQIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBUQUJMRV9ST1dfR1JPVVAKLSAg
ICAgICAgICAgIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBUQUJMRV9GT09URVJfR1JPVVAgfHwgc3R5
bGUuZGlzcGxheSgpID09IFRBQkxFX1JPVykKKyAgICAgICAgaWYgKChzdHlsZS5kaXNwbGF5KCkg
PT0gRGlzcGxheVR5cGU6OlRhYmxlSGVhZGVyR3JvdXAgfHwgc3R5bGUuZGlzcGxheSgpID09IERp
c3BsYXlUeXBlOjpUYWJsZVJvd0dyb3VwCisgICAgICAgICAgICB8fCBzdHlsZS5kaXNwbGF5KCkg
PT0gRGlzcGxheVR5cGU6OlRhYmxlRm9vdGVyR3JvdXAgfHwgc3R5bGUuZGlzcGxheSgpID09IERp
c3BsYXlUeXBlOjpUYWJsZVJvdykKICAgICAgICAgICAgICYmIHN0eWxlLnBvc2l0aW9uKCkgPT0g
UG9zaXRpb25UeXBlOjpSZWxhdGl2ZSkKICAgICAgICAgICAgIHN0eWxlLnNldFBvc2l0aW9uKFBv
c2l0aW9uVHlwZTo6U3RhdGljKTsKIAogICAgICAgICAvLyB3cml0aW5nLW1vZGUgZG9lcyBub3Qg
YXBwbHkgdG8gdGFibGUgcm93IGdyb3VwcywgdGFibGUgY29sdW1uIGdyb3VwcywgdGFibGUgcm93
cywgYW5kIHRhYmxlIGNvbHVtbnMuCiAgICAgICAgIC8vIEZJWE1FOiBUYWJsZSBjZWxscyBzaG91
bGQgYmUgYWxsb3dlZCB0byBiZSBwZXJwZW5kaWN1bGFyIG9yIGZsaXBwZWQgd2l0aCByZXNwZWN0
IHRvIHRoZSB0YWJsZSwgdGhvdWdoLgotICAgICAgICBpZiAoc3R5bGUuZGlzcGxheSgpID09IFRB
QkxFX0NPTFVNTiB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gVEFCTEVfQ09MVU1OX0dST1VQIHx8IHN0
eWxlLmRpc3BsYXkoKSA9PSBUQUJMRV9GT09URVJfR1JPVVAKLSAgICAgICAgICAgIHx8IHN0eWxl
LmRpc3BsYXkoKSA9PSBUQUJMRV9IRUFERVJfR1JPVVAgfHwgc3R5bGUuZGlzcGxheSgpID09IFRB
QkxFX1JPVyB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gVEFCTEVfUk9XX0dST1VQCi0gICAgICAgICAg
ICB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gVEFCTEVfQ0VMTCkKKyAgICAgICAgaWYgKHN0eWxlLmRp
c3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1bW4gfHwgc3R5bGUuZGlzcGxheSgpID09
IERpc3BsYXlUeXBlOjpUYWJsZUNvbHVtbkdyb3VwIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNw
bGF5VHlwZTo6VGFibGVGb290ZXJHcm91cAorICAgICAgICAgICAgfHwgc3R5bGUuZGlzcGxheSgp
ID09IERpc3BsYXlUeXBlOjpUYWJsZUhlYWRlckdyb3VwIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBE
aXNwbGF5VHlwZTo6VGFibGVSb3cgfHwgc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpU
YWJsZVJvd0dyb3VwCisgICAgICAgICAgICB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5
cGU6OlRhYmxlQ2VsbCkKICAgICAgICAgICAgIHN0eWxlLnNldFdyaXRpbmdNb2RlKHBhcmVudFN0
eWxlLndyaXRpbmdNb2RlKCkpOwogCiAgICAgICAgIC8vIEZJWE1FOiBTaW5jZSB3ZSBkb24ndCBz
dXBwb3J0IGJsb2NrLWZsb3cgb24gZmxleGlibGUgYm94ZXMgeWV0LCBkaXNhbGxvdyBzZXR0aW5n
CiAgICAgICAgIC8vIG9mIGJsb2NrLWZsb3cgdG8gYW55dGhpbmcgb3RoZXIgdGhhbiBUb3BUb0Jv
dHRvbVdyaXRpbmdNb2RlLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDY0MTggLSBGbGV4aWJsZSBib3ggc3VwcG9ydC4KLSAgICAgICAgaWYgKHN0
eWxlLndyaXRpbmdNb2RlKCkgIT0gVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSAmJiAoc3R5bGUuZGlz
cGxheSgpID09IEJPWCB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gSU5MSU5FX0JPWCkpCisgICAgICAg
IGlmIChzdHlsZS53cml0aW5nTW9kZSgpICE9IFRvcFRvQm90dG9tV3JpdGluZ01vZGUgJiYgKHN0
eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Qm94IHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBE
aXNwbGF5VHlwZTo6SW5saW5lQm94KSkKICAgICAgICAgICAgIHN0eWxlLnNldFdyaXRpbmdNb2Rl
KFRvcFRvQm90dG9tV3JpdGluZ01vZGUpOwogCiAgICAgICAgIC8vIGh0dHBzOi8vd3d3LnczLm9y
Zy9UUi9jc3MtZGlzcGxheS8jdHJhbnNmb3JtYXRpb25zCkBAIC05NzksOCArOTc5LDggQEAgdm9p
ZCBTdHlsZVJlc29sdmVyOjphZGp1c3RSZW5kZXJTdHlsZShSZQogICAgICAgICAgICAgYm9vbCBp
c1ZlcnRpY2FsID0gc3R5bGUubWFycXVlZURpcmVjdGlvbigpID09IE1hcnF1ZWVEaXJlY3Rpb246
OlVwIHx8IHN0eWxlLm1hcnF1ZWVEaXJlY3Rpb24oKSA9PSBNYXJxdWVlRGlyZWN0aW9uOjpEb3du
OwogICAgICAgICAgICAgLy8gTWFrZSBob3Jpem9udGFsIG1hcnF1ZWVzIG5vdCB3cmFwLgogICAg
ICAgICAgICAgaWYgKCFpc1ZlcnRpY2FsKSB7Ci0gICAgICAgICAgICAgICAgc3R5bGUuc2V0V2hp
dGVTcGFjZShOT1dSQVApOwotICAgICAgICAgICAgICAgIHN0eWxlLnNldFRleHRBbGlnbihUQVNU
QVJUKTsKKyAgICAgICAgICAgICAgICBzdHlsZS5zZXRXaGl0ZVNwYWNlKFdoaXRlU3BhY2U6Ok5v
V3JhcCk7CisgICAgICAgICAgICAgICAgc3R5bGUuc2V0VGV4dEFsaWduKFRleHRBbGlnbk1vZGU6
OlN0YXJ0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIEFwcGFyZW50bHkgdGhpcyBp
cyB0aGUgZXhwZWN0ZWQgbGVnYWN5IGJlaGF2aW9yLgogICAgICAgICAgICAgaWYgKGlzVmVydGlj
YWwgJiYgc3R5bGUuaGVpZ2h0KCkuaXNBdXRvKCkpCkBAIC0xMDEwLDggKzEwMTAsOCBAQCB2b2lk
IFN0eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0eWxlKFJlCiAKICAgICAvLyBUYWJsZSByb3dz
LCBzZWN0aW9ucyBhbmQgdGhlIHRhYmxlIGl0c2VsZiB3aWxsIHN1cHBvcnQgb3ZlcmZsb3c6aGlk
ZGVuIGFuZCB3aWxsIGlnbm9yZSBzY3JvbGwvYXV0by4KICAgICAvLyBGSVhNRTogRXZlbnR1YWxs
eSB0YWJsZSBzZWN0aW9ucyB3aWxsIHN1cHBvcnQgYXV0byBhbmQgc2Nyb2xsLgotICAgIGlmIChz
dHlsZS5kaXNwbGF5KCkgPT0gVEFCTEUgfHwgc3R5bGUuZGlzcGxheSgpID09IElOTElORV9UQUJM
RQotICAgICAgICB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gVEFCTEVfUk9XX0dST1VQIHx8IHN0eWxl
LmRpc3BsYXkoKSA9PSBUQUJMRV9ST1cpIHsKKyAgICBpZiAoc3R5bGUuZGlzcGxheSgpID09IERp
c3BsYXlUeXBlOjpUYWJsZSB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OklubGlu
ZVRhYmxlCisgICAgICAgIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGVS
b3dHcm91cCB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxlUm93KSB7CiAg
ICAgICAgIGlmIChzdHlsZS5vdmVyZmxvd1goKSAhPSBPdmVyZmxvdzo6VmlzaWJsZSAmJiBzdHls
ZS5vdmVyZmxvd1goKSAhPSBPdmVyZmxvdzo6SGlkZGVuKQogICAgICAgICAgICAgc3R5bGUuc2V0
T3ZlcmZsb3dYKE92ZXJmbG93OjpWaXNpYmxlKTsKICAgICAgICAgaWYgKHN0eWxlLm92ZXJmbG93
WSgpICE9IE92ZXJmbG93OjpWaXNpYmxlICYmIHN0eWxlLm92ZXJmbG93WSgpICE9IE92ZXJmbG93
OjpIaWRkZW4pCkBAIC0xMDUyLDcgKzEwNTIsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkanVz
dFJlbmRlclN0eWxlKFJlCiAgICAgICAgIFJlbmRlclRoZW1lOjpzaW5nbGV0b24oKS5hZGp1c3RT
dHlsZSgqdGhpcywgc3R5bGUsIGVsZW1lbnQsIG1fc3RhdGUuaGFzVUFBcHBlYXJhbmNlKCksIG1f
c3RhdGUuYm9yZGVyRGF0YSgpLCBtX3N0YXRlLmJhY2tncm91bmREYXRhKCksIG1fc3RhdGUuYmFj
a2dyb3VuZENvbG9yKCkpOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBmaXJzdC1sZXR0ZXIgcHNldWRv
IHN0eWxlLCBkbyBub3Qgc2hhcmUgdGhpcyBzdHlsZS4KLSAgICBpZiAoc3R5bGUuaGFzUHNldWRv
U3R5bGUoRklSU1RfTEVUVEVSKSkKKyAgICBpZiAoc3R5bGUuaGFzUHNldWRvU3R5bGUoUHNldWRv
SWQ6OkZpcnN0TGV0dGVyKSkKICAgICAgICAgc3R5bGUuc2V0VW5pcXVlKCk7CiAKICAgICAvLyBG
SVhNRTogd2hlbiBkcm9wcGluZyB0aGUgLXdlYmtpdCBwcmVmaXggb24gdHJhbnNmb3JtLXN0eWxl
LCB3ZSBzaG91bGQgYWxzbyBoYXZlIG9wYWNpdHkgPCAxIGNhdXNlIGZsYXR0ZW5pbmcuCkBAIC0x
MTEyLDcgKzExMTIsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OnVwZGF0ZUZvbnQoKQogCiBWZWN0
b3I8UmVmUHRyPFN0eWxlUnVsZT4+IFN0eWxlUmVzb2x2ZXI6OnN0eWxlUnVsZXNGb3JFbGVtZW50
KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIHVuc2lnbmVkIHJ1bGVzVG9JbmNsdWRlKQogewotICAg
IHJldHVybiBwc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBOT1BTRVVETywgcnVs
ZXNUb0luY2x1ZGUpOworICAgIHJldHVybiBwc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChlbGVt
ZW50LCBQc2V1ZG9JZDo6Tm9uZSwgcnVsZXNUb0luY2x1ZGUpOwogfQogCiBWZWN0b3I8UmVmUHRy
PFN0eWxlUnVsZT4+IFN0eWxlUmVzb2x2ZXI6OnBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KGNv
bnN0IEVsZW1lbnQqIGVsZW1lbnQsIFBzZXVkb0lkIHBzZXVkb0lkLCB1bnNpZ25lZCBydWxlc1Rv
SW5jbHVkZSkKQEAgLTEyNzksNyArMTI3OSw3IEBAIHN0YXRpYyBib29sIGlzQ2FjaGVhYmxlSW5N
YXRjaGVkUHJvcGVydGkKICAgICBpZiAoJmVsZW1lbnQgPT0gZWxlbWVudC5kb2N1bWVudCgpLmRv
Y3VtZW50RWxlbWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgLy8gY29udGVudDph
dHRyKCkgdmFsdWUgZGVwZW5kcyBvbiB0aGUgZWxlbWVudCBpdCBpcyBiZWluZyBhcHBsaWVkIHRv
LgotICAgIGlmIChzdHlsZS0+aGFzQXR0ckNvbnRlbnQoKSB8fCAoc3R5bGUtPnN0eWxlVHlwZSgp
ICE9IE5PUFNFVURPICYmIHBhcmVudFN0eWxlLT5oYXNBdHRyQ29udGVudCgpKSkKKyAgICBpZiAo
c3R5bGUtPmhhc0F0dHJDb250ZW50KCkgfHwgKHN0eWxlLT5zdHlsZVR5cGUoKSAhPSBQc2V1ZG9J
ZDo6Tm9uZSAmJiBwYXJlbnRTdHlsZS0+aGFzQXR0ckNvbnRlbnQoKSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpZiAoc3R5bGUtPmhhc0FwcGVhcmFuY2UoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMTMzOSw3ICsxMzM5LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseU1h
dGNoZWRQcm9wZXJ0aQogICAgICAgICAvLyBlbGVtZW50IGNvbnRleHQuIFRoaXMgaXMgZmFzdCBh
bmQgc2F2ZXMgbWVtb3J5IGJ5IHJldXNpbmcgdGhlIHN0eWxlIGRhdGEgc3RydWN0dXJlcy4KICAg
ICAgICAgc3RhdGUuc3R5bGUoKS0+Y29weU5vbkluaGVyaXRlZEZyb20oKmNhY2hlSXRlbS0+cmVu
ZGVyU3R5bGUpOwogICAgICAgICBpZiAoc3RhdGUucGFyZW50U3R5bGUoKS0+aW5oZXJpdGVkRGF0
YVNoYXJlZChjYWNoZUl0ZW0tPnBhcmVudFJlbmRlclN0eWxlLmdldCgpKSAmJiAhaXNBdFNoYWRv
d0JvdW5kYXJ5KGVsZW1lbnQpKSB7Ci0gICAgICAgICAgICBFSW5zaWRlTGluayBsaW5rU3RhdHVz
ID0gc3RhdGUuc3R5bGUoKS0+aW5zaWRlTGluaygpOworICAgICAgICAgICAgSW5zaWRlTGluayBs
aW5rU3RhdHVzID0gc3RhdGUuc3R5bGUoKS0+aW5zaWRlTGluaygpOwogICAgICAgICAgICAgLy8g
SWYgdGhlIGNhY2hlIGl0ZW0gcGFyZW50IHN0eWxlIGhhcyBpZGVudGljYWwgaW5oZXJpdGVkIHBy
b3BlcnRpZXMgdG8gdGhlIGN1cnJlbnQgcGFyZW50IHN0eWxlIHRoZW4gdGhlCiAgICAgICAgICAg
ICAvLyByZXN1bHRpbmcgc3R5bGUgd2lsbCBiZSBpZGVudGljYWwgdG9vLiBXZSBjb3B5IHRoZSBp
bmhlcml0ZWQgcHJvcGVydGllcyBvdmVyIGZyb20gdGhlIGNhY2hlIGFuZCBhcmUgZG9uZS4KICAg
ICAgICAgICAgIHN0YXRlLnN0eWxlKCktPmluaGVyaXRGcm9tKCpjYWNoZUl0ZW0tPnJlbmRlclN0
eWxlKTsKQEAgLTIyMzcsNyArMjIzNyw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQ
cm9wZXJ0aWVzOjoKICAgICAgICAgcmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eShpZCwgY3NzVmFsdWVb
U2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHRdLCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoRGVm
YXVsdCwgbWF0Y2hSZXN1bHQpOwogICAgIH0KIAotICAgIGlmIChzdGF0ZS5zdHlsZSgpLT5pbnNp
ZGVMaW5rKCkgPT0gTm90SW5zaWRlTGluaykKKyAgICBpZiAoc3RhdGUuc3R5bGUoKS0+aW5zaWRl
TGluaygpID09IEluc2lkZUxpbms6Ok5vdEluc2lkZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKGNzc1ZhbHVlW1NlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hMaW5rXSkgewpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5oCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTcsNyArMzU3LDcgQEAg
cHVibGljOgogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUoKSBjb25zdCB7
IHJldHVybiBtX3BhcmVudFN0eWxlOyB9CiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlKiByb290
RWxlbWVudFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9yb290RWxlbWVudFN0eWxlOyB9CiAKLSAg
ICAgICAgRUluc2lkZUxpbmsgZWxlbWVudExpbmtTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxl
bWVudExpbmtTdGF0ZTsgfQorICAgICAgICBJbnNpZGVMaW5rIGVsZW1lbnRMaW5rU3RhdGUoKSBj
b25zdCB7IHJldHVybiBtX2VsZW1lbnRMaW5rU3RhdGU7IH0KIAogICAgICAgICB2b2lkIHNldEFw
cGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZShib29sIGlzQXBwbHkpIHsgbV9hcHBseVByb3BlcnR5
VG9SZWd1bGFyU3R5bGUgPSBpc0FwcGx5OyB9CiAgICAgICAgIHZvaWQgc2V0QXBwbHlQcm9wZXJ0
eVRvVmlzaXRlZExpbmtTdHlsZShib29sIGlzQXBwbHkpIHsgbV9hcHBseVByb3BlcnR5VG9WaXNp
dGVkTGlua1N0eWxlID0gaXNBcHBseTsgfQpAQCAtNDA5LDcgKzQwOSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBtX293bmVkUGFyZW50U3R5bGU7CiAg
ICAgICAgIGNvbnN0IFJlbmRlclN0eWxlKiBtX3Jvb3RFbGVtZW50U3R5bGUgeyBudWxscHRyIH07
CiAKLSAgICAgICAgRUluc2lkZUxpbmsgbV9lbGVtZW50TGlua1N0YXRlIHsgTm90SW5zaWRlTGlu
ayB9OworICAgICAgICBJbnNpZGVMaW5rIG1fZWxlbWVudExpbmtTdGF0ZSB7IEluc2lkZUxpbms6
Ok5vdEluc2lkZSB9OwogCiAgICAgICAgIGJvb2wgbV9hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5
bGUgeyB0cnVlIH07CiAgICAgICAgIGJvb2wgbV9hcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0
eWxlIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBp
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21w
aWxlci5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxl
Y3RvckNvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYwLDcgKzk2MCw3IEBAIHN0YXRp
YyBGdW5jdGlvblR5cGUgY29uc3RydWN0RnJhZ21lbnRzSW4KICAgICAgICAgICAgIGNhc2UgQ1NT
U2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRVbmtub3duOgogICAgICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAgIHJldHVybiBGdW5jdGlvblR5cGU6OkNhbm5v
dE1hdGNoQW55dGhpbmc7Ci0gICAgICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBSRVNJWkVSLCBT
RUxFQ1RJT04gZXRjLgorICAgICAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgUHNldWRvSWQ6OlJl
c2l6ZXIsIFBzZXVkb0lkOjpTZWxlY3Rpb24gZXRjLgogICAgICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgICAgICAvLyBUaGlzIGJyYW5jaCBpbmNsdWRlcyBjdXN0b20gcHNldWRvIGVsZW1l
bnRzLgogICAgICAgICAgICAgICAgIHJldHVybiBGdW5jdGlvblR5cGU6OkNhbm5vdENvbXBpbGU7
CkBAIC0zNzYyLDE0ICszNzYyLDE0IEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5l
cmF0ZVJlcXUKICAgICBBU1NFUlQobV9zZWxlY3RvckNvbnRleHQgIT0gU2VsZWN0b3JDb250ZXh0
OjpRdWVyeVNlbGVjdG9yKTsKIAogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSByZXF1ZXN0ZWQg
cHNldWRvSWQgZXF1YWxzIHRvIHRoZSBwc2V1ZG8gZWxlbWVudCBvZiB0aGUgcmlnaHRtb3N0IGZy
YWdtZW50LgotICAgIC8vIElmIHRoZSByaWdodG1vc3QgZnJhZ21lbnQgZG9lc24ndCBoYXZlIGEg
cHNldWRvIGVsZW1lbnQsIHRoZSByZXF1ZXN0ZWQgcHNldWRvSWQgbmVlZCB0byBiZSBOT1BTRVVE
TyB0byBzdWNjZWVkIHRoZSBtYXRjaGluZy4KLSAgICAvLyBPdGhlcndpc2UsIGlmIHRoZSByZXF1
ZXN0ZWQgcHNldWRvSWQgaXMgbm90IE5PUFNFVURPLCB0aGUgcmVxdWVzdGVkIHBzZXVkb0lkIG5l
ZWQgdG8gZXF1YWwgdG8gdGhlIHBzZXVkbyBlbGVtZW50IG9mIHRoZSByaWdodG1vc3QgZnJhZ21l
bnQuCisgICAgLy8gSWYgdGhlIHJpZ2h0bW9zdCBmcmFnbWVudCBkb2Vzbid0IGhhdmUgYSBwc2V1
ZG8gZWxlbWVudCwgdGhlIHJlcXVlc3RlZCBwc2V1ZG9JZCBuZWVkIHRvIGJlIFBzZXVkb0lkOjpO
b25lIHRvIHN1Y2NlZWQgdGhlIG1hdGNoaW5nLgorICAgIC8vIE90aGVyd2lzZSwgaWYgdGhlIHJl
cXVlc3RlZCBwc2V1ZG9JZCBpcyBub3QgUHNldWRvSWQ6Ok5vbmUsIHRoZSByZXF1ZXN0ZWQgcHNl
dWRvSWQgbmVlZCB0byBlcXVhbCB0byB0aGUgcHNldWRvIGVsZW1lbnQgb2YgdGhlIHJpZ2h0bW9z
dCBmcmFnbWVudC4KICAgICBpZiAoZnJhZ21lbnRNYXRjaGVzVGhlUmlnaHRtb3N0RWxlbWVudChm
cmFnbWVudCkpIHsKICAgICAgICAgaWYgKCFmcmFnbWVudC5wc2V1ZG9FbGVtZW50U2VsZWN0b3Ip
Ci0gICAgICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKG1fYXNzZW1ibGVyLmJyYW5jaDgoQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgQXNzZW1ibGVyOjpBZGRyZXNzKGNoZWNraW5nQ29udGV4dCwgT0JK
RUNUX09GRlNFVE9GKFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0LCBwc2V1ZG9JZCkp
LCBBc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihOT1BTRVVETykpKTsKKyAgICAgICAgICAgIGZhaWx1
cmVDYXNlcy5hcHBlbmQobV9hc3NlbWJsZXIuYnJhbmNoOChBc3NlbWJsZXI6Ok5vdEVxdWFsLCBB
c3NlbWJsZXI6OkFkZHJlc3MoY2hlY2tpbmdDb250ZXh0LCBPQkpFQ1RfT0ZGU0VUT0YoU2VsZWN0
b3JDaGVja2VyOjpDaGVja2luZ0NvbnRleHQsIHBzZXVkb0lkKSksIEFzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTMyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihQc2V1ZG9JZDo6Tm9uZSkpKSk7CiAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgQXNzZW1ibGVyOjpKdW1wIHNraXAgPSBtX2Fzc2VtYmxlci5i
cmFuY2g4KEFzc2VtYmxlcjo6RXF1YWwsIEFzc2VtYmxlcjo6QWRkcmVzcyhjaGVja2luZ0NvbnRl
eHQsIE9CSkVDVF9PRkZTRVRPRihTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5nQ29udGV4dCwgcHNl
dWRvSWQpKSwgQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTk9QU0VVRE8pKTsKLSAgICAgICAgICAg
IGZhaWx1cmVDYXNlcy5hcHBlbmQobV9hc3NlbWJsZXIuYnJhbmNoOChBc3NlbWJsZXI6Ok5vdEVx
dWFsLCBBc3NlbWJsZXI6OkFkZHJlc3MoY2hlY2tpbmdDb250ZXh0LCBPQkpFQ1RfT0ZGU0VUT0Yo
U2VsZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRleHQsIHBzZXVkb0lkKSksIEFzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyKENTU1NlbGVjdG9yOjpwc2V1ZG9JZChmcmFnbWVudC5wc2V1ZG9FbGVtZW50
U2VsZWN0b3ItPnBzZXVkb0VsZW1lbnRUeXBlKCkpKSkpOworICAgICAgICAgICAgQXNzZW1ibGVy
OjpKdW1wIHNraXAgPSBtX2Fzc2VtYmxlci5icmFuY2g4KEFzc2VtYmxlcjo6RXF1YWwsIEFzc2Vt
Ymxlcjo6QWRkcmVzcyhjaGVja2luZ0NvbnRleHQsIE9CSkVDVF9PRkZTRVRPRihTZWxlY3RvckNo
ZWNrZXI6OkNoZWNraW5nQ29udGV4dCwgcHNldWRvSWQpKSwgQXNzZW1ibGVyOjpUcnVzdGVkSW1t
MzIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBzZXVkb0lkOjpOb25lKSkpOworICAgICAgICAgICAg
ZmFpbHVyZUNhc2VzLmFwcGVuZChtX2Fzc2VtYmxlci5icmFuY2g4KEFzc2VtYmxlcjo6Tm90RXF1
YWwsIEFzc2VtYmxlcjo6QWRkcmVzcyhjaGVja2luZ0NvbnRleHQsIE9CSkVDVF9PRkZTRVRPRihT
ZWxlY3RvckNoZWNrZXI6OkNoZWNraW5nQ29udGV4dCwgcHNldWRvSWQpKSwgQXNzZW1ibGVyOjpU
cnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1NlbGVjdG9yOjpwc2V1ZG9JZChm
cmFnbWVudC5wc2V1ZG9FbGVtZW50U2VsZWN0b3ItPnBzZXVkb0VsZW1lbnRUeXBlKCkpKSkpKTsK
ICAgICAgICAgICAgIHNraXAubGluaygmbV9hc3NlbWJsZXIpOwogICAgICAgICB9CiAgICAgfQpA
QCAtMzg1MiwxNSArMzg1MiwxNSBAQCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJh
dGVNYXJrCiAKICAgICBBc3NlbWJsZXI6Okp1bXBMaXN0IHN1Y2Nlc3NDYXNlczsKIAotICAgIC8v
IFdoZW4gdGhlIHJlcXVlc3RlZCBwc2V1ZG9JZCBpc24ndCBOT1BTRVVETywgdGhlcmUncyBubyBu
ZWVkIHRvIG1hcmsgdGhlIHBzZXVkbyBlbGVtZW50IHN0eWxlLgotICAgIHN1Y2Nlc3NDYXNlcy5h
cHBlbmQobV9hc3NlbWJsZXIuYnJhbmNoOChBc3NlbWJsZXI6Ok5vdEVxdWFsLCBBc3NlbWJsZXI6
OkFkZHJlc3MoY2hlY2tpbmdDb250ZXh0LCBPQkpFQ1RfT0ZGU0VUT0YoU2VsZWN0b3JDaGVja2Vy
OjpDaGVja2luZ0NvbnRleHQsIHBzZXVkb0lkKSksIEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE5P
UFNFVURPKSkpOworICAgIC8vIFdoZW4gdGhlIHJlcXVlc3RlZCBwc2V1ZG9JZCBpc24ndCBQc2V1
ZG9JZDo6Tm9uZSwgdGhlcmUncyBubyBuZWVkIHRvIG1hcmsgdGhlIHBzZXVkbyBlbGVtZW50IHN0
eWxlLgorICAgIHN1Y2Nlc3NDYXNlcy5hcHBlbmQobV9hc3NlbWJsZXIuYnJhbmNoOChBc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBBc3NlbWJsZXI6OkFkZHJlc3MoY2hlY2tpbmdDb250ZXh0LCBPQkpFQ1Rf
T0ZGU0VUT0YoU2VsZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRleHQsIHBzZXVkb0lkKSksIEFz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihQc2V1ZG9JZDo6Tm9u
ZSkpKSk7CiAKICAgICAvLyBXaGVuIHJlc29sdmluZyBtb2RlIGlzIENvbGxlY3RpbmdSdWxlc0ln
bm9yaW5nVmlydHVhbFBzZXVkb0VsZW1lbnRzLCB0aGVyZSdzIG5vIG5lZWQgdG8gbWFyayB0aGUg
cHNldWRvIGVsZW1lbnQgc3R5bGUuCiAgICAgc3VjY2Vzc0Nhc2VzLmFwcGVuZChicmFuY2hPblJl
c29sdmluZ01vZGVXaXRoQ2hlY2tpbmdDb250ZXh0KEFzc2VtYmxlcjo6RXF1YWwsIFNlbGVjdG9y
Q2hlY2tlcjo6TW9kZTo6Q29sbGVjdGluZ1J1bGVzSWdub3JpbmdWaXJ0dWFsUHNldWRvRWxlbWVu
dHMsIGNoZWNraW5nQ29udGV4dCkpOwogCiAgICAgLy8gV2hlbiByZXNvbHZpbmcgbW9kZSBpcyBS
ZXNvbHZpbmdTdHlsZSwgbWFyayB0aGUgcHNldWRvIHN0eWxlIGZvciBwc2V1ZG8gZWxlbWVudC4K
ICAgICBQc2V1ZG9JZCBkeW5hbWljUHNldWRvID0gQ1NTU2VsZWN0b3I6OnBzZXVkb0lkKGZyYWdt
ZW50LnBzZXVkb0VsZW1lbnRTZWxlY3Rvci0+cHNldWRvRWxlbWVudFR5cGUoKSk7Ci0gICAgaWYg
KGR5bmFtaWNQc2V1ZG8gPCBGSVJTVF9JTlRFUk5BTF9QU0VVRE9JRCkgeworICAgIGlmIChkeW5h
bWljUHNldWRvIDwgUHNldWRvSWQ6OkZpcnN0SW50ZXJuYWxQc2V1ZG9JZCkgewogICAgICAgICBm
YWlsdXJlQ2FzZXMuYXBwZW5kKGJyYW5jaE9uUmVzb2x2aW5nTW9kZVdpdGhDaGVja2luZ0NvbnRl
eHQoQXNzZW1ibGVyOjpOb3RFcXVhbCwgU2VsZWN0b3JDaGVja2VyOjpNb2RlOjpSZXNvbHZpbmdT
dHlsZSwgY2hlY2tpbmdDb250ZXh0KSk7CiAKICAgICAgICAgQXNzZW1ibGVyOjpBZGRyZXNzIHBz
ZXVkb0lEU2V0QWRkcmVzcyhjaGVja2luZ0NvbnRleHQsIE9CSkVDVF9PRkZTRVRPRihTZWxlY3Rv
ckNoZWNrZXI6OkNoZWNraW5nQ29udGV4dCwgcHNldWRvSURTZXQpKTsKQEAgLTM4NzAsNyArMzg3
MCw3IEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZU1hcmsKICAgICB9CiAK
ICAgICAvLyBXZSBoYXZlIGEgcHNldWRvRWxlbWVudFNlbGVjdG9yLCB3ZSBhcmUgbm90IGluIENv
bGxlY3RpbmdSdWxlc0lnbm9yaW5nVmlydHVhbFBzZXVkb0VsZW1lbnRzIHNvCi0gICAgLy8gd2Ug
bXVzdCBtYXRjaCB0aGF0IHBzZXVkbyBlbGVtZW50LiBTaW5jZSB0aGUgY29udGV4dCdzIHBzZXVk
byBzZWxlY3RvciBpcyBOT1BTRVVETywgd2UgZmFpbCBtYXRjaGluZworICAgIC8vIHdlIG11c3Qg
bWF0Y2ggdGhhdCBwc2V1ZG8gZWxlbWVudC4gU2luY2UgdGhlIGNvbnRleHQncyBwc2V1ZG8gc2Vs
ZWN0b3IgaXMgUHNldWRvSWQ6Ok5vbmUsIHdlIGZhaWwgbWF0Y2hpbmcKICAgICAvLyBhZnRlciB0
aGUgbWFya2luZy4KICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKG1fYXNzZW1ibGVyLmp1bXAoKSk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAwNiw4ICsy
MDA2LDggQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZwogc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBEb2N1bWVudDo6c3R5bGVGb3JFbGVtZW50SWdub3JpbmdQ
ZW5kaW5nU3R5bGVzaGVldHMoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUqIHBh
cmVudFN0eWxlLCBQc2V1ZG9JZCBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKQogewogICAgIEFTU0VS
VCgmZWxlbWVudC5kb2N1bWVudCgpID09IHRoaXMpOwotICAgIEFTU0VSVCghZWxlbWVudC5pc1Bz
ZXVkb0VsZW1lbnQoKSB8fCAhcHNldWRvRWxlbWVudFNwZWNpZmllcik7Ci0gICAgQVNTRVJUKCFw
c2V1ZG9FbGVtZW50U3BlY2lmaWVyIHx8IHBhcmVudFN0eWxlKTsKKyAgICBBU1NFUlQoIWVsZW1l
bnQuaXNQc2V1ZG9FbGVtZW50KCkgfHwgcHNldWRvRWxlbWVudFNwZWNpZmllciA9PSBQc2V1ZG9J
ZDo6Tm9uZSk7CisgICAgQVNTRVJUKHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIgPT0gUHNldWRvSWQ6
Ok5vbmUgfHwgcGFyZW50U3R5bGUpOwogCiAgICAgLy8gT24gaU9TIHJlcXVlc3QgZGVsZWdhdGVz
IGNhbGxlZCBkdXJpbmcgc3R5bGVGb3JFbGVtZW50IG1heSByZXN1bHQgaW4gcmUtZW50ZXJpbmcg
V2ViS2l0IGFuZCBraWxsaW5nIHRoZSBzdHlsZSByZXNvbHZlci4KICAgICBTdHlsZTo6UG9zdFJl
c29sdXRpb25DYWxsYmFja0Rpc2FibGVyIGRpc2FibGVyKCp0aGlzKTsKQEAgLTIwMTUsNyArMjAx
NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gRG9jdW1lbnQ6OnMKICAgICBTZXRG
b3JTY29wZTxib29sPiBjaGFuZ2UobV9pZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMsIHRydWUpOwog
ICAgIGF1dG8mIHJlc29sdmVyID0gZWxlbWVudC5zdHlsZVJlc29sdmVyKCk7CiAKLSAgICBpZiAo
cHNldWRvRWxlbWVudFNwZWNpZmllcikKKyAgICBpZiAocHNldWRvRWxlbWVudFNwZWNpZmllciAh
PSBQc2V1ZG9JZDo6Tm9uZSkKICAgICAgICAgcmV0dXJuIHJlc29sdmVyLnBzZXVkb1N0eWxlRm9y
RWxlbWVudChlbGVtZW50LCBQc2V1ZG9TdHlsZVJlcXVlc3QocHNldWRvRWxlbWVudFNwZWNpZmll
ciksICpwYXJlbnRTdHlsZSk7CiAKICAgICBhdXRvIGVsZW1lbnRTdHlsZSA9IHJlc29sdmVyLnN0
eWxlRm9yRWxlbWVudChlbGVtZW50LCBwYXJlbnRTdHlsZSk7CkBAIC0yMTMzLDcgKzIxMzMsNyBA
QCBib29sIERvY3VtZW50Ojppc1BhZ2VCb3hWaXNpYmxlKGludCBwYWdlCiB7CiAgICAgdXBkYXRl
U3R5bGVJZk5lZWRlZCgpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gcGFnZVN0
eWxlKHN0eWxlU2NvcGUoKS5yZXNvbHZlcigpLnN0eWxlRm9yUGFnZShwYWdlSW5kZXgpKTsKLSAg
ICByZXR1cm4gcGFnZVN0eWxlLT52aXNpYmlsaXR5KCkgIT0gSElEREVOOyAvLyBkaXNwbGF5IHBy
b3BlcnR5IGRvZXNuJ3QgYXBwbHkgdG8gQHBhZ2UuCisgICAgcmV0dXJuIHBhZ2VTdHlsZS0+dmlz
aWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OkhpZGRlbjsgLy8gZGlzcGxheSBwcm9wZXJ0eSBkb2Vz
bid0IGFwcGx5IHRvIEBwYWdlLgogfQogCiB2b2lkIERvY3VtZW50OjpwYWdlU2l6ZUFuZE1hcmdp
bnNJblBpeGVscyhpbnQgcGFnZUluZGV4LCBJbnRTaXplJiBwYWdlU2l6ZSwgaW50JiBtYXJnaW5U
b3AsIGludCYgbWFyZ2luUmlnaHQsIGludCYgbWFyZ2luQm90dG9tLCBpbnQmIG1hcmdpbkxlZnQp
CkBAIC0yNTY2LDcgKzI1NjYsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRWaXN1YWxseU9yZGVyZWQo
KQogewogICAgIG1fdmlzdWFsbHlPcmRlcmVkID0gdHJ1ZTsKICAgICBpZiAocmVuZGVyVmlldygp
KQotICAgICAgICByZW5kZXJWaWV3KCktPm11dGFibGVTdHlsZSgpLnNldFJUTE9yZGVyaW5nKFZp
c3VhbE9yZGVyKTsKKyAgICAgICAgcmVuZGVyVmlldygpLT5tdXRhYmxlU3R5bGUoKS5zZXRSVExP
cmRlcmluZyhPcmRlcjo6VmlzdWFsKTsKIH0KIAogUmVmPERvY3VtZW50UGFyc2VyPiBEb2N1bWVu
dDo6Y3JlYXRlUGFyc2VyKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAyMzIx
NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NTc5LDcgKzU3OSw3IEBAIHB1YmxpYzoKICAgICB9OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKFJ1blBvc3RMYXlvdXRUYXNrcyA9
IFJ1blBvc3RMYXlvdXRUYXNrczo6QXN5bmNocm9ub3VzbHkpOwogCi0gICAgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBzdHlsZUZvckVsZW1lbnRJZ25vcmluZ1BlbmRpbmdTdHlsZXNoZWV0
cyhFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBQc2V1ZG9JZCA9IE5P
UFNFVURPKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9yRWxlbWVu
dElnbm9yaW5nUGVuZGluZ1N0eWxlc2hlZXRzKEVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSog
cGFyZW50U3R5bGUsIFBzZXVkb0lkID0gUHNldWRvSWQ6Ok5vbmUpOwogCiAgICAgLy8gUmV0dXJu
cyB0cnVlIGlmIHBhZ2UgYm94IChtYXJnaW4gYm94ZXMgYW5kIHBhZ2UgYm9yZGVycykgaXMgdmlz
aWJsZS4KICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzUGFnZUJveFZpc2libGUoaW50IHBhZ2VJ
bmRleCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyMiwxMiAr
NTIyLDEyIEBAIGJvb2wgRWxlbWVudDo6aXNGb2N1c2FibGUoKSBjb25zdAogICAgICAgICAvLyBF
bGVtZW50cyBpbiBjYW52YXMgZmFsbGJhY2sgY29udGVudCBhcmUgbm90IHJlbmRlcmVkLCBidXQg
dGhleSBhcmUgYWxsb3dlZCB0byBiZQogICAgICAgICAvLyBmb2N1c2FibGUgYXMgbG9uZyBhcyB0
aGVpciBjYW52YXMgaXMgZGlzcGxheWVkIGFuZCB2aXNpYmxlLgogICAgICAgICBpZiAoYXV0byog
Y2FudmFzID0gYW5jZXN0b3JzT2ZUeXBlPEhUTUxDYW52YXNFbGVtZW50PigqdGhpcykuZmlyc3Qo
KSkKLSAgICAgICAgICAgIHJldHVybiBjYW52YXMtPnJlbmRlcmVyKCkgJiYgY2FudmFzLT5yZW5k
ZXJlcigpLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFOworICAgICAgICAgICAgcmV0
dXJuIGNhbnZhcy0+cmVuZGVyZXIoKSAmJiBjYW52YXMtPnJlbmRlcmVyKCktPnN0eWxlKCkudmlz
aWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGU7CiAgICAgfQogCiAgICAgLy8gRklYTUU6
IEV2ZW4gaWYgd2UgYXJlIG5vdCB2aXNpYmxlLCB3ZSBtaWdodCBoYXZlIGEgY2hpbGQgdGhhdCBp
cyB2aXNpYmxlLgogICAgIC8vIEh5YXR0IHdhbnRzIHRvIGZpeCB0aGF0IHNvbWUgZGF5IHdpdGgg
YSAiaGFzIHZpc2libGUgY29udGVudCIgZmxhZyBvciB0aGUgbGlrZS4KLSAgICBpZiAoIXJlbmRl
cmVyKCkgfHwgcmVuZGVyZXIoKS0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAg
ICBpZiAoIXJlbmRlcmVyKCkgfHwgcmVuZGVyZXIoKS0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0g
VmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJu
IHRydWU7CkBAIC0xNTQ4LDEyICsxNTQ4LDEyIEBAIGJvb2wgRWxlbWVudDo6aGFzRGlzcGxheUNv
bnRlbnRzKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY29uc3QgUmVuZGVy
U3R5bGUqIHN0eWxlID0gZWxlbWVudFJhcmVEYXRhKCktPmNvbXB1dGVkU3R5bGUoKTsKLSAgICBy
ZXR1cm4gc3R5bGUgJiYgc3R5bGUtPmRpc3BsYXkoKSA9PSBDT05URU5UUzsKKyAgICByZXR1cm4g
c3R5bGUgJiYgc3R5bGUtPmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Q29udGVudHM7CiB9CiAK
IHZvaWQgRWxlbWVudDo6c3RvcmVEaXNwbGF5Q29udGVudHNTdHlsZShzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IHN0eWxlKQogewotICAgIEFTU0VSVChzdHlsZSAmJiBzdHlsZS0+ZGlzcGxh
eSgpID09IENPTlRFTlRTKTsKKyAgICBBU1NFUlQoc3R5bGUgJiYgc3R5bGUtPmRpc3BsYXkoKSA9
PSBEaXNwbGF5VHlwZTo6Q29udGVudHMpOwogICAgIEFTU0VSVCghcmVuZGVyZXIoKSB8fCBpc1Bz
ZXVkb0VsZW1lbnQoKSk7CiAgICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkuc2V0Q29tcHV0ZWRT
dHlsZShXVEZNb3ZlKHN0eWxlKSk7CiB9CkBAIC0xNjY5LDcgKzE2NjksNyBAQCBjb25zdCBBdG9t
aWNTdHJpbmcmIEVsZW1lbnQ6OmltYWdlU291cmNlCiAKIGJvb2wgRWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgcmV0dXJuIHN0eWxlLmRp
c3BsYXkoKSAhPSBOT05FICYmIHN0eWxlLmRpc3BsYXkoKSAhPSBDT05URU5UUzsKKyAgICByZXR1
cm4gc3R5bGUuZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpOb25lICYmIHN0eWxlLmRpc3BsYXko
KSAhPSBEaXNwbGF5VHlwZTo6Q29udGVudHM7CiB9CiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKQEAgLTI3MjIsOSArMjcyMiw5IEBAIHZvaWQgRWxlbWVu
dDo6d2lsbEJlY29tZUZ1bGxzY3JlZW5FbGVtZW4KIHN0YXRpYyBQc2V1ZG9FbGVtZW50KiBiZWZv
cmVPckFmdGVyUHNldWRvRWxlbWVudChFbGVtZW50JiBob3N0LCBQc2V1ZG9JZCBwc2V1ZG9FbGVt
ZW50U3BlY2lmaWVyKQogewogICAgIHN3aXRjaCAocHNldWRvRWxlbWVudFNwZWNpZmllcikgewot
ICAgIGNhc2UgQkVGT1JFOgorICAgIGNhc2UgUHNldWRvSWQ6OkJlZm9yZToKICAgICAgICAgcmV0
dXJuIGhvc3QuYmVmb3JlUHNldWRvRWxlbWVudCgpOwotICAgIGNhc2UgQUZURVI6CisgICAgY2Fz
ZSBQc2V1ZG9JZDo6QWZ0ZXI6CiAgICAgICAgIHJldHVybiBob3N0LmFmdGVyUHNldWRvRWxlbWVu
dCgpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjgwMiw3ICsy
ODAyLDcgQEAgY29uc3QgUmVuZGVyU3R5bGUqIEVsZW1lbnQ6OmNvbXB1dGVkU3R5bAogICAgIGlm
ICghc3R5bGUpCiAgICAgICAgIHN0eWxlID0gJnJlc29sdmVDb21wdXRlZFN0eWxlKCk7CiAKLSAg
ICBpZiAocHNldWRvRWxlbWVudFNwZWNpZmllcikgeworICAgIGlmIChwc2V1ZG9FbGVtZW50U3Bl
Y2lmaWVyICE9IFBzZXVkb0lkOjpOb25lKSB7CiAgICAgICAgIGlmIChhdXRvKiBjYWNoZWRQc2V1
ZG9TdHlsZSA9IHN0eWxlLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShwc2V1ZG9FbGVtZW50U3BlY2lm
aWVyKSkKICAgICAgICAgICAgIHJldHVybiBjYWNoZWRQc2V1ZG9TdHlsZTsKICAgICAgICAgcmV0
dXJuICZyZXNvbHZlUHNldWRvRWxlbWVudFN0eWxlKHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5oCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjAsNyArMzIwLDcgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IGluc2VydEFkamFjZW50SFRN
TChjb25zdCBTdHJpbmcmIHdoZXJlLCBjb25zdCBTdHJpbmcmIGh0bWwpOwogICAgIFdFQkNPUkVf
RVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IGluc2VydEFkamFjZW50VGV4dChjb25zdCBTdHJpbmcm
IHdoZXJlLCBjb25zdCBTdHJpbmcmIHRleHQpOwogCi0gICAgY29uc3QgUmVuZGVyU3R5bGUqIGNv
bXB1dGVkU3R5bGUoUHNldWRvSWQgPSBOT1BTRVVETykgb3ZlcnJpZGU7CisgICAgY29uc3QgUmVu
ZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUoUHNldWRvSWQgPSBQc2V1ZG9JZDo6Tm9uZSkgb3ZlcnJp
ZGU7CiAKICAgICBib29sIG5lZWRzU3R5bGVJbnZhbGlkYXRpb24oKSBjb25zdDsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODAsNyArNjgwLDcgQEAgc3RhdGljIE5vZGU6OkVk
aXRhYmlsaXR5IGNvbXB1dGVFZGl0YWJpbAogICAgICAgICBhdXRvKiBzdHlsZSA9IG5vZGUtPmlz
RG9jdW1lbnROb2RlKCkgPyBub2RlLT5yZW5kZXJTdHlsZSgpIDogY29uc3RfY2FzdDxOb2RlKj4o
bm9kZSktPmNvbXB1dGVkU3R5bGUoKTsKICAgICAgICAgaWYgKCFzdHlsZSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICBpZiAoc3R5bGUtPmRpc3BsYXkoKSA9PSBOT05FKQorICAgICAg
ICBpZiAoc3R5bGUtPmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogI2lmIEVOQUJMRShVU0VSU0VMRUNUX0FMTCkKICAgICAgICAgLy8gRWxlbWVu
dHMgd2l0aCB1c2VyLXNlbGVjdDogYWxsIHN0eWxlIGFyZSBjb25zaWRlcmVkIGF0b21pYwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDIsMTAgKzIwMiwxMCBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc1NWR0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElzU1ZHRmxhZyk7IH0KICAg
ICBib29sIGlzTWF0aE1MRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNNYXRoTUxG
bGFnKTsgfQogCi0gICAgYm9vbCBpc1BzZXVkb0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBwc2V1
ZG9JZCgpICE9IE5PUFNFVURPOyB9Ci0gICAgYm9vbCBpc0JlZm9yZVBzZXVkb0VsZW1lbnQoKSBj
b25zdCB7IHJldHVybiBwc2V1ZG9JZCgpID09IEJFRk9SRTsgfQotICAgIGJvb2wgaXNBZnRlclBz
ZXVkb0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBwc2V1ZG9JZCgpID09IEFGVEVSOyB9Ci0gICAg
UHNldWRvSWQgcHNldWRvSWQoKSBjb25zdCB7IHJldHVybiAoaXNFbGVtZW50Tm9kZSgpICYmIGhh
c0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpKSA/IGN1c3RvbVBzZXVkb0lkKCkgOiBOT1BT
RVVETzsgfQorICAgIGJvb2wgaXNQc2V1ZG9FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gcHNldWRv
SWQoKSAhPSBQc2V1ZG9JZDo6Tm9uZTsgfQorICAgIGJvb2wgaXNCZWZvcmVQc2V1ZG9FbGVtZW50
KCkgY29uc3QgeyByZXR1cm4gcHNldWRvSWQoKSA9PSBQc2V1ZG9JZDo6QmVmb3JlOyB9CisgICAg
Ym9vbCBpc0FmdGVyUHNldWRvRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHBzZXVkb0lkKCkgPT0g
UHNldWRvSWQ6OkFmdGVyOyB9CisgICAgUHNldWRvSWQgcHNldWRvSWQoKSBjb25zdCB7IHJldHVy
biAoaXNFbGVtZW50Tm9kZSgpICYmIGhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpKSA/
IGN1c3RvbVBzZXVkb0lkKCkgOiBQc2V1ZG9JZDo6Tm9uZTsgfQogCiAgICAgdmlydHVhbCBib29s
IGlzTWVkaWFDb250cm9sRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCBib29sIGlzTWVkaWFDb250cm9scygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC00
MzIsNyArNDMyLDcgQEAgcHVibGljOgogICAgIC8vIFdyYXBwZXIgZm9yIG5vZGVzIHRoYXQgZG9u
J3QgaGF2ZSBhIHJlbmRlcmVyLCBidXQgc3RpbGwgY2FjaGUgdGhlIHN0eWxlIChsaWtlIEhUTUxP
cHRpb25FbGVtZW50KS4KICAgICBjb25zdCBSZW5kZXJTdHlsZSogcmVuZGVyU3R5bGUoKSBjb25z
dDsKIAotICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUoUHNldWRv
SWQgcHNldWRvRWxlbWVudFNwZWNpZmllciA9IE5PUFNFVURPKTsKKyAgICB2aXJ0dWFsIGNvbnN0
IFJlbmRlclN0eWxlKiBjb21wdXRlZFN0eWxlKFBzZXVkb0lkIHBzZXVkb0VsZW1lbnRTcGVjaWZp
ZXIgPSBQc2V1ZG9JZDo6Tm9uZSk7CiAKICAgICBlbnVtIGNsYXNzIEluc2VydGVkSW50b0FuY2Vz
dG9yUmVzdWx0IHsKICAgICAgICAgRG9uZSwKQEAgLTY0Myw3ICs2NDMsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgUHNldWRvSWQgY3VzdG9tUHNldWRvSWQoKSBjb25zdAogICAgIHsKICAgICAg
ICAgQVNTRVJUKGhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpKTsKLSAgICAgICAgcmV0
dXJuIE5PUFNFVURPOworICAgICAgICByZXR1cm4gUHNldWRvSWQ6Ok5vbmU7CiAgICAgfQogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVkTGFzdFJlZigpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
UG9zaXRpb24uY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUG9z
aXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODUsNyArNjg1LDcgQEAgUG9zaXRpb24gUG9z
aXRpb246OnVwc3RyZWFtKEVkaXRpbmdCb3VuZAogCiAgICAgICAgIC8vIHNraXAgcG9zaXRpb24g
aW4gdW5yZW5kZXJlZCBvciBpbnZpc2libGUgbm9kZQogICAgICAgICBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gY3VycmVudE5vZGUucmVuZGVyZXIoKTsKLSAgICAgICAgaWYgKCFyZW5kZXJlciB8
fCByZW5kZXJlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICAgICAgaWYg
KCFyZW5kZXJlciB8fCByZW5kZXJlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0
eTo6VmlzaWJsZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBlbnN1cmVMaW5lQm94
ZXNJZk5lZWRlZCgqcmVuZGVyZXIpOwogICAgICAgICBpZiAocnVsZSA9PSBDYW5Dcm9zc0VkaXRp
bmdCb3VuZGFyeSAmJiBib3VuZGFyeUNyb3NzZWQpIHsKQEAgLTgyMCw3ICs4MjAsNyBAQCBQb3Np
dGlvbiBQb3NpdGlvbjo6ZG93bnN0cmVhbShFZGl0aW5nQm91CiAKICAgICAgICAgLy8gc2tpcCBw
b3NpdGlvbiBpbiB1bnJlbmRlcmVkIG9yIGludmlzaWJsZSBub2RlCiAgICAgICAgIGF1dG8qIHJl
bmRlcmVyID0gY3VycmVudE5vZGUucmVuZGVyZXIoKTsKLSAgICAgICAgaWYgKCFyZW5kZXJlciB8
fCByZW5kZXJlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICAgICAgaWYg
KCFyZW5kZXJlciB8fCByZW5kZXJlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0
eTo6VmlzaWJsZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBlbnN1cmVMaW5lQm94
ZXNJZk5lZWRlZCgqcmVuZGVyZXIpOwogICAgICAgICBpZiAocnVsZSA9PSBDYW5Dcm9zc0VkaXRp
bmdCb3VuZGFyeSAmJiBib3VuZGFyeUNyb3NzZWQpIHsKQEAgLTk5NSw3ICs5OTUsNyBAQCBib29s
IFBvc2l0aW9uOjppc0NhbmRpZGF0ZSgpIGNvbnN0CiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHko
KSAhPSBWSVNJQkxFKQorICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0g
VmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKHJl
bmRlcmVyLT5pc0JSKCkpIHsKQEAgLTEwNTgsNyArMTA1OCw3IEBAIGJvb2wgUG9zaXRpb246OnJl
bmRlcnNJbkRpZmZlcmVudFBvc2l0aW8KICAgICBpZiAoIXBvc2l0aW9uUmVuZGVyZXIpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS52aXNpYmlsaXR5
KCkgIT0gVklTSUJMRSB8fCBwb3NpdGlvblJlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAh
PSBWSVNJQkxFKQorICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlz
aWJpbGl0eTo6VmlzaWJsZSB8fCBwb3NpdGlvblJlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHko
KSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAg
ICAgaWYgKGRlcHJlY2F0ZWROb2RlKCkgPT0gcG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKSkgewpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbkl0ZXJhdG9yLmNwcAkocmV2aXNpb24gMjMy
MTQzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTIsNyArMTUyLDcgQEAgYm9vbCBQb3NpdGlvbkl0ZXJhdG9yOjppc0NhbmRp
ZGF0ZSgpIGNvbgogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAKLSAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisg
ICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNp
YmxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAocmVuZGVyZXItPmlzQlIoKSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzMjE0MykK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTQsOSArNTQsOSBAQCBTdHJpbmcgUHNldWRvRWxlbWVudDo6cHNldWRvRWxlbWVudE5hbWVG
CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gYWZ0ZXIoTUFLRV9TVEFU
SUNfU1RSSU5HX0lNUEwoIjo6YWZ0ZXIiKSk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNv
bnN0IFN0cmluZz4gYmVmb3JlKE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCI6OmJlZm9yZSIpKTsK
ICAgICBzd2l0Y2ggKHBzZXVkb0lkKSB7Ci0gICAgY2FzZSBBRlRFUjoKKyAgICBjYXNlIFBzZXVk
b0lkOjpBZnRlcjoKICAgICAgICAgcmV0dXJuIGFmdGVyOwotICAgIGNhc2UgQkVGT1JFOgorICAg
IGNhc2UgUHNldWRvSWQ6OkJlZm9yZToKICAgICAgICAgcmV0dXJuIGJlZm9yZTsKICAgICBkZWZh
dWx0OgogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKQEAgLTY4LDcgKzY4LDcgQEAgUHNl
dWRvRWxlbWVudDo6UHNldWRvRWxlbWVudChFbGVtZW50JiBobwogICAgICwgbV9ob3N0RWxlbWVu
dCgmaG9zdCkKICAgICAsIG1fcHNldWRvSWQocHNldWRvSWQpCiB7Ci0gICAgQVNTRVJUKHBzZXVk
b0lkID09IEJFRk9SRSB8fCBwc2V1ZG9JZCA9PSBBRlRFUik7CisgICAgQVNTRVJUKHBzZXVkb0lk
ID09IFBzZXVkb0lkOjpCZWZvcmUgfHwgcHNldWRvSWQgPT0gUHNldWRvSWQ6OkFmdGVyKTsKICAg
ICBzZXRIYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKTsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL1Zpc2l0ZWRMaW5rU3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9WaXNpdGVkTGlua1N0YXRlLmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291
cmNlL1dlYkNvcmUvZG9tL1Zpc2l0ZWRMaW5rU3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
NSwxOCArODUsMTggQEAgdm9pZCBWaXNpdGVkTGlua1N0YXRlOjppbnZhbGlkYXRlU3R5bGVGbwog
ICAgIH0KIH0KIAotRUluc2lkZUxpbmsgVmlzaXRlZExpbmtTdGF0ZTo6ZGV0ZXJtaW5lTGlua1N0
YXRlU2xvd0Nhc2UoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKK0luc2lkZUxpbmsgVmlzaXRlZExp
bmtTdGF0ZTo6ZGV0ZXJtaW5lTGlua1N0YXRlU2xvd0Nhc2UoY29uc3QgRWxlbWVudCYgZWxlbWVu
dCkKIHsKICAgICBBU1NFUlQoZWxlbWVudC5pc0xpbmsoKSk7CiAKICAgICBjb25zdCBBdG9taWNT
dHJpbmcqIGF0dHJpYnV0ZSA9IGxpbmtBdHRyaWJ1dGUoZWxlbWVudCk7CiAgICAgaWYgKCFhdHRy
aWJ1dGUgfHwgYXR0cmlidXRlLT5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIE5vdEluc2lkZUxp
bms7CisgICAgICAgIHJldHVybiBJbnNpZGVMaW5rOjpOb3RJbnNpZGU7CiAKICAgICAvLyBBbiBl
bXB0eSBocmVmIHJlZmVycyB0byB0aGUgZG9jdW1lbnQgaXRzZWxmIHdoaWNoIGlzIGFsd2F5cyB2
aXNpdGVkLiBJdCBpcyB1c2VmdWwgdG8gY2hlY2sgdGhpcyBleHBsaWNpdGx5IHNvCiAgICAgLy8g
dGhhdCB2aXNpdGVkIGxpbmtzIGNhbiBiZSB0ZXN0ZWQgaW4gcGxhdGZvcm0gaW5kZXBlbmRlbnQg
bWFubmVyLCB3aXRob3V0IGV4cGxpY2l0IHN1cHBvcnQgaW4gdGhlIHRlc3QgaGFybmVzcy4KICAg
ICBpZiAoYXR0cmlidXRlLT5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBJbnNpZGVWaXNpdGVk
TGluazsKKyAgICAgICAgcmV0dXJuIEluc2lkZUxpbms6Okluc2lkZVZpc2l0ZWQ7CiAKICAgICBT
aGFyZWRTdHJpbmdIYXNoIGhhc2g7CiAgICAgaWYgKGlzPEhUTUxBbmNob3JFbGVtZW50PihlbGVt
ZW50KSkKQEAgLTEwNSwyMiArMTA1LDIyIEBAIEVJbnNpZGVMaW5rIFZpc2l0ZWRMaW5rU3RhdGU6
OmRldGVybWluZUwKICAgICAgICAgaGFzaCA9IGNvbXB1dGVWaXNpdGVkTGlua0hhc2goZWxlbWVu
dC5kb2N1bWVudCgpLmJhc2VVUkwoKSwgKmF0dHJpYnV0ZSk7CiAKICAgICBpZiAoIWhhc2gpCi0g
ICAgICAgIHJldHVybiBJbnNpZGVVbnZpc2l0ZWRMaW5rOworICAgICAgICByZXR1cm4gSW5zaWRl
TGluazo6SW5zaWRlVW52aXNpdGVkOwogCiAgICAgRnJhbWUqIGZyYW1lID0gZWxlbWVudC5kb2N1
bWVudCgpLmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIEluc2lkZVVu
dmlzaXRlZExpbms7CisgICAgICAgIHJldHVybiBJbnNpZGVMaW5rOjpJbnNpZGVVbnZpc2l0ZWQ7
CiAKICAgICBQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCi0gICAg
ICAgIHJldHVybiBJbnNpZGVVbnZpc2l0ZWRMaW5rOworICAgICAgICByZXR1cm4gSW5zaWRlTGlu
azo6SW5zaWRlVW52aXNpdGVkOwogCiAgICAgbV9saW5rc0NoZWNrZWRGb3JWaXNpdGVkU3RhdGUu
YWRkKGhhc2gpOwogCiAgICAgaWYgKCFwYWdlLT52aXNpdGVkTGlua1N0b3JlKCkuaXNMaW5rVmlz
aXRlZCgqcGFnZSwgaGFzaCwgZWxlbWVudC5kb2N1bWVudCgpLmJhc2VVUkwoKSwgKmF0dHJpYnV0
ZSkpCi0gICAgICAgIHJldHVybiBJbnNpZGVVbnZpc2l0ZWRMaW5rOworICAgICAgICByZXR1cm4g
SW5zaWRlTGluazo6SW5zaWRlVW52aXNpdGVkOwogCi0gICAgcmV0dXJuIEluc2lkZVZpc2l0ZWRM
aW5rOworICAgIHJldHVybiBJbnNpZGVMaW5rOjpJbnNpZGVWaXNpdGVkOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVmlzaXRlZExpbmtTdGF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9WaXNpdGVkTGlua1N0YXRlLmgJ
KHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9WaXNpdGVkTGlua1N0YXRl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDE5ICs0NCwxOSBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGludmFsaWRhdGVTdHlsZUZvckFsbExpbmtzKCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlU3R5bGVG
b3JMaW5rKFNoYXJlZFN0cmluZ0hhc2gpOwotICAgIEVJbnNpZGVMaW5rIGRldGVybWluZUxpbmtT
dGF0ZShjb25zdCBFbGVtZW50Jik7CisgICAgSW5zaWRlTGluayBkZXRlcm1pbmVMaW5rU3RhdGUo
Y29uc3QgRWxlbWVudCYpOwogCiBwcml2YXRlOgotICAgIEVJbnNpZGVMaW5rIGRldGVybWluZUxp
bmtTdGF0ZVNsb3dDYXNlKGNvbnN0IEVsZW1lbnQmKTsKKyAgICBJbnNpZGVMaW5rIGRldGVybWlu
ZUxpbmtTdGF0ZVNsb3dDYXNlKGNvbnN0IEVsZW1lbnQmKTsKIAogICAgIERvY3VtZW50JiBtX2Rv
Y3VtZW50OwogICAgIEhhc2hTZXQ8U2hhcmVkU3RyaW5nSGFzaCwgU2hhcmVkU3RyaW5nSGFzaEhh
c2g+IG1fbGlua3NDaGVja2VkRm9yVmlzaXRlZFN0YXRlOwogfTsKIAotaW5saW5lIEVJbnNpZGVM
aW5rIFZpc2l0ZWRMaW5rU3RhdGU6OmRldGVybWluZUxpbmtTdGF0ZShjb25zdCBFbGVtZW50JiBl
bGVtZW50KQoraW5saW5lIEluc2lkZUxpbmsgVmlzaXRlZExpbmtTdGF0ZTo6ZGV0ZXJtaW5lTGlu
a1N0YXRlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKCFlbGVtZW50LmlzTGlu
aygpKQotICAgICAgICByZXR1cm4gTm90SW5zaWRlTGluazsKKyAgICAgICAgcmV0dXJuIEluc2lk
ZUxpbms6Ok5vdEluc2lkZTsKICAgICByZXR1cm4gZGV0ZXJtaW5lTGlua1N0YXRlU2xvd0Nhc2Uo
ZWxlbWVudCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAkocmV2aXNp
b24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDU2LDcgKzQ1Niw3IEBAIHN0YXRpYyBib29sIGlzU3BlY2lhbEhUTUxFbGVt
ZW50KGNvbnN0IE4KICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkuZGlzcGxheSgpID09IFRBQkxFIHx8IHJlbmRlcmVy
LT5zdHlsZSgpLmRpc3BsYXkoKSA9PSBJTkxJTkVfVEFCTEUpCisgICAgaWYgKHJlbmRlcmVyLT5z
dHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGUgfHwgcmVuZGVyZXItPnN0eWxl
KCkuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpJbmxpbmVUYWJsZSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkuaXNGbG9hdGluZygpKQpAQCAtOTMz
LDcgKzkzMyw3IEBAIFJlZjxFbGVtZW50PiBjcmVhdGVUYWJTcGFuRWxlbWVudChEb2N1bWUKIGJv
b2wgaXNOb2RlUmVuZGVyZWQoY29uc3QgTm9kZSYgbm9kZSkKIHsKICAgICBhdXRvKiByZW5kZXJl
ciA9IG5vZGUucmVuZGVyZXIoKTsKLSAgICByZXR1cm4gcmVuZGVyZXIgJiYgcmVuZGVyZXItPnN0
eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEU7CisgICAgcmV0dXJuIHJlbmRlcmVyICYmIHJl
bmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlOwogfQog
CiB1bnNpZ25lZCBudW1FbmNsb3NpbmdNYWlsQmxvY2txdW90ZXMoY29uc3QgUG9zaXRpb24mIHBv
c2l0aW9uKQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAkocmV2
aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NjAsMTEgKzU2MCwxMSBAQCB2b2lkIFRleHRJdGVyYXRvcjo6
YWR2YW5jZSgpCiAKIHN0YXRpYyBib29sIGhhc1Zpc2libGVUZXh0Tm9kZShSZW5kZXJUZXh0JiBy
ZW5kZXJlcikKIHsKLSAgICBpZiAocmVuZGVyZXIuc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklT
SUJMRSkKKyAgICBpZiAocmVuZGVyZXIuc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0
eTo6VmlzaWJsZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKGlzPFJlbmRlclRleHRG
cmFnbWVudD4ocmVuZGVyZXIpKSB7CiAgICAgICAgIGlmIChhdXRvIGZpcnN0TGV0dGVyID0gZG93
bmNhc3Q8UmVuZGVyVGV4dEZyYWdtZW50PihyZW5kZXJlcikuZmlyc3RMZXR0ZXIoKSkgewotICAg
ICAgICAgICAgaWYgKGZpcnN0TGV0dGVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxF
KQorICAgICAgICAgICAgaWYgKGZpcnN0TGV0dGVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBW
aXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CiAgICAgfQpAQCAtNjE4LDcgKzYxOCw3IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVU
ZXh0Tm9kZSgpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQog
ICAgICAgICB9Ci0gICAgICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBW
SVNJQkxFICYmICEobV9iZWhhdmlvciAmIFRleHRJdGVyYXRvcklnbm9yZXNTdHlsZVZpc2liaWxp
dHkpKQorICAgICAgICBpZiAocmVuZGVyZXIuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJp
bGl0eTo6VmlzaWJsZSAmJiAhKG1fYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JJZ25vcmVzU3R5bGVW
aXNpYmlsaXR5KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaW50IHJlbmRl
cmVyVGV4dExlbmd0aCA9IHJlbmRlcmVyVGV4dC5sZW5ndGgoKTsKICAgICAgICAgaW50IGVuZCA9
ICgmdGV4dE5vZGUgPT0gbV9lbmRDb250YWluZXIpID8gbV9lbmRPZmZzZXQgOiBJTlRfTUFYOwpA
QCAtNjMyLDcgKzYzMiw3IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiAg
ICAgfQogCiAgICAgaWYgKGNvbnN0IGF1dG8qIGxheW91dCA9IHJlbmRlcmVyLnNpbXBsZUxpbmVM
YXlvdXQoKSkgewotICAgICAgICBpZiAocmVuZGVyZXIuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0g
VklTSUJMRSAmJiAhKG1fYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JJZ25vcmVzU3R5bGVWaXNpYmls
aXR5KSkKKyAgICAgICAgaWYgKHJlbmRlcmVyLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2li
aWxpdHk6OlZpc2libGUgJiYgIShtX2JlaGF2aW9yICYgVGV4dEl0ZXJhdG9ySWdub3Jlc1N0eWxl
VmlzaWJpbGl0eSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgQVNTRVJUKHJl
bmRlcmVyLnBhcmVudCgpKTsKICAgICAgICAgQVNTRVJUKGlzPFJlbmRlckJsb2NrRmxvdz4oKnJl
bmRlcmVyLnBhcmVudCgpKSk7CkBAIC03MjcsNyArNzI3LDcgQEAgYm9vbCBUZXh0SXRlcmF0b3I6
OmhhbmRsZVRleHROb2RlKCkKICAgICAgICAgaGFuZGxlVGV4dE5vZGVGaXJzdExldHRlcihkb3du
Y2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQ+KHJlbmRlcmVyKSk7CiAKICAgICBpZiAoIXJlbmRlcmVy
LmZpcnN0VGV4dEJveCgpICYmIHJlbmRlcmVyVGV4dC5sZW5ndGgoKSAmJiAhc2hvdWxkSGFuZGxl
Rmlyc3RMZXR0ZXIpIHsKLSAgICAgICAgaWYgKHJlbmRlcmVyLnN0eWxlKCkudmlzaWJpbGl0eSgp
ICE9IFZJU0lCTEUgJiYgIShtX2JlaGF2aW9yICYgVGV4dEl0ZXJhdG9ySWdub3Jlc1N0eWxlVmlz
aWJpbGl0eSkpCisgICAgICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBW
aXNpYmlsaXR5OjpWaXNpYmxlICYmICEobV9iZWhhdmlvciAmIFRleHRJdGVyYXRvcklnbm9yZXNT
dHlsZVZpc2liaWxpdHkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBtX2xh
c3RUZXh0Tm9kZUVuZGVkV2l0aENvbGxhcHNlZFNwYWNlID0gdHJ1ZTsgLy8gZW50aXJlIGJsb2Nr
IGlzIGNvbGxhcHNlZCBzcGFjZQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTc1Myw3ICs3NTMs
NyBAQCB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dEJveCgpCiAgICAgVGV4dCYgdGV4dE5v
ZGUgPSBkb3duY2FzdDxUZXh0PigqbV9ub2RlKTsKIAogICAgIGF1dG8mIHJlbmRlcmVyID0gbV9m
aXJzdExldHRlclRleHQgPyAqbV9maXJzdExldHRlclRleHQgOiAqdGV4dE5vZGUucmVuZGVyZXIo
KTsKLSAgICBpZiAocmVuZGVyZXIuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSAmJiAh
KG1fYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JJZ25vcmVzU3R5bGVWaXNpYmlsaXR5KSkgeworICAg
IGlmIChyZW5kZXJlci5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxl
ICYmICEobV9iZWhhdmlvciAmIFRleHRJdGVyYXRvcklnbm9yZXNTdHlsZVZpc2liaWxpdHkpKSB7
CiAgICAgICAgIG1fdGV4dEJveCA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC04NDgsNyArODQ4LDcgQEAgc3RhdGljIGlubGluZSBSZW5kZXJUZXh0KiBmaXJzdFJlbmRlclRl
eAogdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlRmlyc3RMZXR0ZXIoUmVuZGVyVGV4
dEZyYWdtZW50JiByZW5kZXJlcikKIHsKICAgICBpZiAoYXV0byogZmlyc3RMZXR0ZXIgPSByZW5k
ZXJlci5maXJzdExldHRlcigpKSB7Ci0gICAgICAgIGlmIChmaXJzdExldHRlci0+c3R5bGUoKS52
aXNpYmlsaXR5KCkgIT0gVklTSUJMRSAmJiAhKG1fYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JJZ25v
cmVzU3R5bGVWaXNpYmlsaXR5KSkKKyAgICAgICAgaWYgKGZpcnN0TGV0dGVyLT5zdHlsZSgpLnZp
c2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICEobV9iZWhhdmlvciAmIFRleHRJ
dGVyYXRvcklnbm9yZXNTdHlsZVZpc2liaWxpdHkpKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBpZiAoYXV0byogZmlyc3RMZXR0ZXJUZXh0ID0gZmlyc3RSZW5kZXJUZXh0SW5GaXJzdExl
dHRlcihmaXJzdExldHRlcikpIHsKICAgICAgICAgICAgIG1faGFuZGxlZEZpcnN0TGV0dGVyID0g
dHJ1ZTsKQEAgLTg2Nyw3ICs4NjcsNyBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlUmVwbGFj
ZWRFbGVtZW50CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8mIHJlbmRlcmVyID0g
Km1fbm9kZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAocmVuZGVyZXIuc3R5bGUoKS52aXNpYmlsaXR5
KCkgIT0gVklTSUJMRSAmJiAhKG1fYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JJZ25vcmVzU3R5bGVW
aXNpYmlsaXR5KSkKKyAgICBpZiAocmVuZGVyZXIuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlz
aWJpbGl0eTo6VmlzaWJsZSAmJiAhKG1fYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JJZ25vcmVzU3R5
bGVWaXNpYmlsaXR5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKG1fbGFzdFRl
eHROb2RlRW5kZWRXaXRoQ29sbGFwc2VkU3BhY2UpIHsKQEAgLTExMTUsNyArMTExNSw3IEBAIGJv
b2wgVGV4dEl0ZXJhdG9yOjpzaG91bGRSZXByZXNlbnROb2RlT2YKICAgICAvLyBJZiB0aGlzIG5v
ZGUgaXMgdW5yZW5kZXJlZCBvciBpbnZpc2libGUgdGhlIFZpc2libGVQb3NpdGlvbiBjaGVja3Mg
YmVsb3cgd29uJ3QgaGF2ZSBtdWNoIG1lYW5pbmcuCiAgICAgLy8gQWRkaXRpb25hbGx5LCBpZiB0
aGUgcmFuZ2Ugd2UgYXJlIGl0ZXJhdGluZyBvdmVyIGNvbnRhaW5zIGh1Z2Ugc2VjdGlvbnMgb2Yg
dW5yZW5kZXJlZCBjb250ZW50LCAKICAgICAvLyB3ZSB3b3VsZCBjcmVhdGUgVmlzaWJsZVBvc2l0
aW9ucyBvbiBldmVyeSBjYWxsIHRvIHRoaXMgZnVuY3Rpb24gd2l0aG91dCB0aGlzIGNoZWNrLgot
ICAgIGlmICghbV9ub2RlLT5yZW5kZXJlcigpIHx8IG1fbm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUo
KS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRQorICAgIGlmICghbV9ub2RlLT5yZW5kZXJlcigpIHx8
IG1fbm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6
VmlzaWJsZQogICAgICAgICB8fCAoaXM8UmVuZGVyQmxvY2tGbG93PigqbV9ub2RlLT5yZW5kZXJl
cigpKSAmJiAhZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqbV9ub2RlLT5yZW5kZXJlcigpKS5o
ZWlnaHQoKSAmJiAhaXM8SFRNTEJvZHlFbGVtZW50PigqbV9ub2RlKSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApAQCAtMTMzMSwxMCArMTMzMSwxMCBAQCB2b2lkIFNpbXBsaWZpZWRCYWNrd2Fy
ZHNUZXh0SXRlcmF0b3I6OmFkCiAgICAgICAgIGlmICghbV9oYW5kbGVkTm9kZSAmJiAhKG1fbm9k
ZSA9PSBtX2VuZENvbnRhaW5lciAmJiAhbV9lbmRPZmZzZXQpKSB7CiAgICAgICAgICAgICBhdXRv
KiByZW5kZXJlciA9IG1fbm9kZS0+cmVuZGVyZXIoKTsKICAgICAgICAgICAgIGlmIChyZW5kZXJl
ciAmJiByZW5kZXJlci0+aXNUZXh0KCkgJiYgbV9ub2RlLT5pc1RleHROb2RlKCkpIHsKLSAgICAg
ICAgICAgICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUg
JiYgbV9vZmZzZXQgPiAwKQorICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS52
aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiBtX29mZnNldCA+IDApCiAgICAg
ICAgICAgICAgICAgICAgIG1faGFuZGxlZE5vZGUgPSBoYW5kbGVUZXh0Tm9kZSgpOwogICAgICAg
ICAgICAgfSBlbHNlIGlmIChyZW5kZXJlciAmJiAocmVuZGVyZXItPmlzSW1hZ2UoKSB8fCByZW5k
ZXJlci0+aXNXaWRnZXQoKSkpIHsKLSAgICAgICAgICAgICAgICBpZiAocmVuZGVyZXItPnN0eWxl
KCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUgJiYgbV9vZmZzZXQgPiAwKQorICAgICAgICAgICAg
ICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6Vmlz
aWJsZSAmJiBtX29mZnNldCA+IDApCiAgICAgICAgICAgICAgICAgICAgIG1faGFuZGxlZE5vZGUg
PSBoYW5kbGVSZXBsYWNlZEVsZW1lbnQoKTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgICAgIG1faGFuZGxlZE5vZGUgPSBoYW5kbGVOb25UZXh0Tm9kZSgpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTgxLDcgKzExODEsNyBAQCBOb2RlKiBmaW5kU3RhcnRPZlBhcmFncmFwaChOb2RlKiBzdGFydE5v
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUgPSByLT5zdHlsZSgpOwotICAgICAgICBpZiAoc3R5bGUudmlzaWJpbGl0eSgp
ICE9IFZJU0lCTEUpIHsKKyAgICAgICAgaWYgKHN0eWxlLnZpc2liaWxpdHkoKSAhPSBWaXNpYmls
aXR5OjpWaXNpYmxlKSB7CiAgICAgICAgICAgICBuID0gTm9kZVRyYXZlcnNhbDo6cHJldmlvdXNQ
b3N0T3JkZXIoKm4sIHN0YXJ0QmxvY2spOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KQEAgLTEyNDMsNyArMTI0Myw3IEBAIE5vZGUqIGZpbmRFbmRPZlBhcmFncmFwaChOb2RlKiBz
dGFydE5vZGUKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSA9IHItPnN0eWxlKCk7Ci0gICAgICAgIGlmIChzdHlsZS52aXNp
YmlsaXR5KCkgIT0gVklTSUJMRSkgeworICAgICAgICBpZiAoc3R5bGUudmlzaWJpbGl0eSgpICE9
IFZpc2liaWxpdHk6OlZpc2libGUpIHsKICAgICAgICAgICAgIG4gPSBOb2RlVHJhdmVyc2FsOjpu
ZXh0KCpuLCBzdGF5SW5zaWRlQmxvY2spOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0JKHJldmlzaW9u
IDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQkod29y
a2luZyBjb3B5KQpAQCAtOTIsMzcgKzkyLDM2IEBAIHZvaWQgRWRpdG9yOjpzZXRUZXh0QWxpZ25t
ZW50Rm9yQ2hhbmdlZEIKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjb25zdCBjaGFy
ICpuZXdWYWx1ZSA9IG51bGxwdHI7Ci0gICAgRVRleHRBbGlnbiB0ZXh0QWxpZ24gPSAqdmFsdWU7
CisgICAgVGV4dEFsaWduTW9kZSB0ZXh0QWxpZ24gPSAqdmFsdWU7CiAgICAgc3dpdGNoICh0ZXh0
QWxpZ24pIHsKLSAgICAgICAgY2FzZSBUQVNUQVJUOgotICAgICAgICBjYXNlIFRBRU5EOgotICAg
ICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgICAgICAgICAgICAg
IGNhc2UgTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb246Ci0gICAgICAgICAgICAgICAgICAgIC8vIG5v
LW9wCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgTGVm
dFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uOgotICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9
ICJsZWZ0IjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb246Ci0gICAgICAgICAgICAgICAgICAgIG5ld1Zh
bHVlID0gInJpZ2h0IjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIExFRlQ6Ci0gICAg
ICAgIGNhc2UgV0VCS0lUX0xFRlQ6Ci0gICAgICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7Cisg
ICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpTdGFydDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkVu
ZDogeworICAgICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgeworICAgICAgICBjYXNlIE5hdHVyYWxX
cml0aW5nRGlyZWN0aW9uOgorICAgICAgICAgICAgLy8gbm8tb3AKICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIFJJR0hUOgotICAgICAgICBjYXNlIFdFQktJVF9SSUdIVDoKKyAgICAg
ICAgY2FzZSBMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb246CiAgICAgICAgICAgICBuZXdWYWx1
ZSA9ICJsZWZ0IjsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENFTlRFUjoKLSAg
ICAgICAgY2FzZSBXRUJLSVRfQ0VOVEVSOgotICAgICAgICBjYXNlIEpVU1RJRlk6Ci0gICAgICAg
ICAgICAvLyBuby1vcAorICAgICAgICBjYXNlIFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbjoK
KyAgICAgICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0IjsKICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6Okxl
ZnQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgorICAgICAgICBuZXdWYWx1
ZSA9ICJyaWdodCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6Umln
aHQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRSaWdodDoKKyAgICAgICAgbmV3VmFs
dWUgPSAibGVmdCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6Q2Vu
dGVyOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0Q2VudGVyOgorICAgIGNhc2UgVGV4
dEFsaWduTW9kZTo6SnVzdGlmeToKKyAgICAgICAgLy8gbm8tb3AKKyAgICAgICAgYnJlYWs7CiAg
ICAgfQogCiAgICAgaWYgKCFuZXdWYWx1ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEFyZWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
cmVhRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFyZWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEwLDcgKzIxMCw3IEBAIGJv
b2wgSFRNTEFyZWFFbGVtZW50Ojppc01vdXNlRm9jdXNhYmxlKCkKIGJvb2wgSFRNTEFyZWFFbGVt
ZW50Ojppc0ZvY3VzYWJsZSgpIGNvbnN0CiB7CiAgICAgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+
IGltYWdlID0gaW1hZ2VFbGVtZW50KCk7Ci0gICAgaWYgKCFpbWFnZSB8fCAhaW1hZ2UtPnJlbmRl
cmVyKCkgfHwgaW1hZ2UtPnJlbmRlcmVyKCktPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lC
TEUpCisgICAgaWYgKCFpbWFnZSB8fCAhaW1hZ2UtPnJlbmRlcmVyKCkgfHwgaW1hZ2UtPnJlbmRl
cmVyKCktPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBzdXBwb3J0c0ZvY3VzKCkgJiYgRWxlbWVu
dDo6dGFiSW5kZXgoKSA+PSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsMTEgKzExNiwxMSBAQCBib29sIEhU
TUxGb3JtRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjCiAgICAgaWYgKCFwYXJlbnRJc1RhYmxl
RWxlbWVudFBhcnQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgRURpc3BsYXkgZGlzcGxh
eSA9IHN0eWxlLmRpc3BsYXkoKTsKLSAgICBib29sIGZvcm1Jc1RhYmxlUGFydCA9IGRpc3BsYXkg
PT0gVEFCTEUgfHwgZGlzcGxheSA9PSBJTkxJTkVfVEFCTEUgfHwgZGlzcGxheSA9PSBUQUJMRV9S
T1dfR1JPVVAKLSAgICAgICAgfHwgZGlzcGxheSA9PSBUQUJMRV9IRUFERVJfR1JPVVAgfHwgZGlz
cGxheSA9PSBUQUJMRV9GT09URVJfR1JPVVAgfHwgZGlzcGxheSA9PSBUQUJMRV9ST1cKLSAgICAg
ICAgfHwgZGlzcGxheSA9PSBUQUJMRV9DT0xVTU5fR1JPVVAgfHwgZGlzcGxheSA9PSBUQUJMRV9D
T0xVTU4gfHwgZGlzcGxheSA9PSBUQUJMRV9DRUxMCi0gICAgICAgIHx8IGRpc3BsYXkgPT0gVEFC
TEVfQ0FQVElPTjsKKyAgICBEaXNwbGF5VHlwZSBkaXNwbGF5ID0gc3R5bGUuZGlzcGxheSgpOwor
ICAgIGJvb2wgZm9ybUlzVGFibGVQYXJ0ID0gZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6VGFibGUg
fHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lVGFibGUgfHwgZGlzcGxheSA9PSBEaXNw
bGF5VHlwZTo6VGFibGVSb3dHcm91cAorICAgICAgICB8fCBkaXNwbGF5ID09IERpc3BsYXlUeXBl
OjpUYWJsZUhlYWRlckdyb3VwIHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OlRhYmxlRm9vdGVy
R3JvdXAgfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6VGFibGVSb3cKKyAgICAgICAgfHwgZGlz
cGxheSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1bW5Hcm91cCB8fCBkaXNwbGF5ID09IERpc3Bs
YXlUeXBlOjpUYWJsZUNvbHVtbiB8fCBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpUYWJsZUNlbGwK
KyAgICAgICAgfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDYXB0aW9uOwogCiAgICAg
cmV0dXJuIGZvcm1Jc1RhYmxlUGFydDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElGcmFtZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElGcmFtZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3
IEBAIHZvaWQgSFRNTElGcmFtZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGMKIAogYm9vbCBIVE1M
SUZyYW1lRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUp
CiB7Ci0gICAgcmV0dXJuIGlzVVJMQWxsb3dlZCgpICYmIHN0eWxlLmRpc3BsYXkoKSAhPSBOT05F
OworICAgIHJldHVybiBpc1VSTEFsbG93ZWQoKSAmJiBzdHlsZS5kaXNwbGF5KCkgIT0gRGlzcGxh
eVR5cGU6Ok5vbmU7CiB9CiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MSUZyYW1lRWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNjAsMTMgKzIwNjAsMTMgQEAgUmVu
ZGVyU3R5bGUgSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlSW5uZQogICAgIHRleHRCbG9ja1N0eWxl
LmluaGVyaXRGcm9tKHN0eWxlKTsKICAgICBhZGp1c3RJbm5lclRleHRTdHlsZShzdHlsZSwgdGV4
dEJsb2NrU3R5bGUpOwogCi0gICAgdGV4dEJsb2NrU3R5bGUuc2V0V2hpdGVTcGFjZShQUkUpOwor
ICAgIHRleHRCbG9ja1N0eWxlLnNldFdoaXRlU3BhY2UoV2hpdGVTcGFjZTo6UHJlKTsKICAgICB0
ZXh0QmxvY2tTdHlsZS5zZXRPdmVyZmxvd1dyYXAoT3ZlcmZsb3dXcmFwOjpOb3JtYWwpOwogICAg
IHRleHRCbG9ja1N0eWxlLnNldE92ZXJmbG93WChPdmVyZmxvdzo6SGlkZGVuKTsKICAgICB0ZXh0
QmxvY2tTdHlsZS5zZXRPdmVyZmxvd1koT3ZlcmZsb3c6OkhpZGRlbik7CiAgICAgdGV4dEJsb2Nr
U3R5bGUuc2V0VGV4dE92ZXJmbG93KHNob3VsZFRydW5jYXRlVGV4dChzdHlsZSkgPyBUZXh0T3Zl
cmZsb3c6OkVsbGlwc2lzIDogVGV4dE92ZXJmbG93OjpDbGlwKTsKIAotICAgIHRleHRCbG9ja1N0
eWxlLnNldERpc3BsYXkoQkxPQ0spOworICAgIHRleHRCbG9ja1N0eWxlLnNldERpc3BsYXkoRGlz
cGxheVR5cGU6OkJsb2NrKTsKIAogICAgIGlmIChoYXNBdXRvRmlsbFN0cm9uZ1Bhc3N3b3JkQnV0
dG9uKCkpIHsKICAgICAgICAgdGV4dEJsb2NrU3R5bGUuc2V0Q29sb3IoeyAwLjBmLCAwLjBmLCAw
LjBmLCAwLjZmIH0pOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
cHRHcm91cEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIGJvb2wg
SFRNTE9wdEdyb3VwRWxlbWVudDo6aXNGb2N1c2FibGUoKSAKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIC8vIE9wdGdyb3VwIGVsZW1lbnRzIGRvIG5vdCBoYXZlIGEgcmVuZGVyZXIuCiAgICAg
YXV0byogc3R5bGUgPSBjb25zdF9jYXN0PEhUTUxPcHRHcm91cEVsZW1lbnQmPigqdGhpcykuY29t
cHV0ZWRTdHlsZSgpOwotICAgIHJldHVybiBzdHlsZSAmJiBzdHlsZS0+ZGlzcGxheSgpICE9IE5P
TkU7CisgICAgcmV0dXJuIHN0eWxlICYmIHN0eWxlLT5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6
Ok5vbmU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTE9wdEdyb3VwRWxlbWVudDo6Zm9y
bUNvbnRyb2xUeXBlKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlv
bkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlv
bkVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPcHRpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsNyArOTMsNyBAQCBib29s
IEhUTUxPcHRpb25FbGVtZW50Ojppc0ZvY3VzYWJsZSgpIGNvCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAvLyBPcHRpb24gZWxlbWVudHMgZG8gbm90IGhhdmUgYSByZW5kZXJlci4KICAgICBh
dXRvKiBzdHlsZSA9IGNvbnN0X2Nhc3Q8SFRNTE9wdGlvbkVsZW1lbnQmPigqdGhpcykuY29tcHV0
ZWRTdHlsZSgpOwotICAgIHJldHVybiBzdHlsZSAmJiBzdHlsZS0+ZGlzcGxheSgpICE9IE5PTkU7
CisgICAgcmV0dXJuIHN0eWxlICYmIHN0eWxlLT5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6Ok5v
bmU7CiB9CiAKIGJvb2wgSFRNTE9wdGlvbkVsZW1lbnQ6Om1hdGNoZXNEZWZhdWx0UHNldWRvQ2xh
c3MoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1l
bnQuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
QXJlYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTEsNyArNTUxLDcgQEAgUmVuZGVy
U3R5bGUgSFRNTFRleHRBcmVhRWxlbWVudDo6Y3JlYXRlSQogICAgIGF1dG8gdGV4dEJsb2NrU3R5
bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CiAgICAgdGV4dEJsb2NrU3R5bGUuaW5oZXJpdEZy
b20oc3R5bGUpOwogICAgIGFkanVzdElubmVyVGV4dFN0eWxlKHN0eWxlLCB0ZXh0QmxvY2tTdHls
ZSk7Ci0gICAgdGV4dEJsb2NrU3R5bGUuc2V0RGlzcGxheShCTE9DSyk7CisgICAgdGV4dEJsb2Nr
U3R5bGUuc2V0RGlzcGxheShEaXNwbGF5VHlwZTo6QmxvY2spOwogCiAjaWYgUExBVEZPUk0oSU9T
KQogICAgIC8vIFdlJ3JlIGFkZGluZyB0aHJlZSBleHRyYSBwaXhlbHMgb2YgcGFkZGluZyB0byBs
aW5lIHRleHRhcmVhcyB1cCB3aXRoIHRleHQgZmllbGRzLiAgCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAkocmV2aXNpb24g
MjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNCw3ICszMDQsNyBAQCB2b2lkIEhUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50OjpzZXRTZWxlCiAgICAgICAgIGF1dG8qIHJlbmRlcmVyVGV4dENvbnRy
b2wgPSByZW5kZXJlcigpOwogCiAgICAgICAgIGlmIChpbm5lclRleHQgJiYgcmVuZGVyZXJUZXh0
Q29udHJvbCkgewotICAgICAgICAgICAgaWYgKHJlbmRlcmVyVGV4dENvbnRyb2wtPnN0eWxlKCku
dmlzaWJpbGl0eSgpID09IEhJRERFTiB8fCAhaW5uZXJUZXh0LT5yZW5kZXJCb3goKSB8fCAhaW5u
ZXJUZXh0LT5yZW5kZXJCb3goKS0+aGVpZ2h0KCkpIHsKKyAgICAgICAgICAgIGlmIChyZW5kZXJl
clRleHRDb250cm9sLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4g
fHwgIWlubmVyVGV4dC0+cmVuZGVyQm94KCkgfHwgIWlubmVyVGV4dC0+cmVuZGVyQm94KCktPmhl
aWdodCgpKSB7CiAgICAgICAgICAgICAgICAgY2FjaGVTZWxlY3Rpb24oc3RhcnQsIGVuZCwgZGly
ZWN0aW9uKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC04MjEs
MTkgKzgyMSwxOSBAQCB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjphZGp1c3RJCiAg
ICAgICAgIC8vICh3aGljaCBjYW5ub3QgaGF2ZSBSVEwgZGlyZWN0aW9uYWxpdHkpIHdpbGwgYXBw
ZWFyIHRvIHRoZSByaWdodCBvZiB0aGUgbWFza2VkIGNoYXJhY3RlcnMuIFNlZSA8cmRhcjovL3By
b2JsZW0vNzAyNDM3NT4uCiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKHRleHRCbG9ja1N0eWxl
LnRleHRBbGlnbigpKSB7Ci0gICAgICAgIGNhc2UgVEFTVEFSVDoKLSAgICAgICAgY2FzZSBKVVNU
SUZZOgotICAgICAgICAgICAgdGV4dEJsb2NrU3R5bGUuc2V0VGV4dEFsaWduKFJJR0hUKTsKKyAg
ICAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpTdGFydDoKKyAgICAgICAgY2FzZSBUZXh0QWxpZ25N
b2RlOjpKdXN0aWZ5OgorICAgICAgICAgICAgdGV4dEJsb2NrU3R5bGUuc2V0VGV4dEFsaWduKFRl
eHRBbGlnbk1vZGU6OlJpZ2h0KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFRB
RU5EOgotICAgICAgICAgICAgdGV4dEJsb2NrU3R5bGUuc2V0VGV4dEFsaWduKExFRlQpOworICAg
ICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkVuZDoKKyAgICAgICAgICAgIHRleHRCbG9ja1N0eWxl
LnNldFRleHRBbGlnbihUZXh0QWxpZ25Nb2RlOjpMZWZ0KTsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIExFRlQ6Ci0gICAgICAgIGNhc2UgUklHSFQ6Ci0gICAgICAgIGNhc2UgQ0VO
VEVSOgotICAgICAgICBjYXNlIFdFQktJVF9MRUZUOgotICAgICAgICBjYXNlIFdFQktJVF9SSUdI
VDoKLSAgICAgICAgY2FzZSBXRUJLSVRfQ0VOVEVSOgorICAgICAgICBjYXNlIFRleHRBbGlnbk1v
ZGU6OkxlZnQ6CisgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CisgICAgICAgIGNh
c2UgVGV4dEFsaWduTW9kZTo6Q2VudGVyOgorICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6Oldl
YktpdExlZnQ6CisgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQ6CisgICAg
ICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0Q2VudGVyOgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNz
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNl
c3Npb24uY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlh
RWxlbWVudFNlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjksNyArMzI5LDcgQEAgYm9v
bCBNZWRpYUVsZW1lbnRTZXNzaW9uOjphdXRvcGxheVBlcm1pdAogICAgICAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIsICJSZXR1cm5pbmcgRkFMU0UgYmVjYXVzZSBlbGVtZW50IGhhcyBubyBy
ZW5kZXJlciIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGlmIChyZW5kZXJl
ci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkgeworICAgIGlmIChyZW5kZXJlci0+
c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkgewogICAgICAgICBB
TFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJSZXR1cm5pbmcgRkFMU0UgYmVjYXVzZSBlbGVtZW50
IGlzIG5vdCB2aXNpYmxlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC04MTEs
NyArODExLDcgQEAgc3RhdGljIGJvb2wgaXNNYWluQ29udGVudEZvclB1cnBvc2VzT2ZBdQogICAg
IC8vIEVsZW1lbnRzIHdoaWNoIGFyZSBoaWRkZW4gYnkgc3R5bGUsIG9yIGhhdmUgYmVlbiBzY3Jv
bGxlZCBvdXQgb2YgdmlldywgY2Fubm90IGJlIG1haW4gY29udGVudC4KICAgICAvLyBCdXQgZWxl
bWVudHMgd2hpY2ggaGF2ZSBhdWRpbyAmIHZpZGVvIGFuZCBhcmUgYWxyZWFkeSBwbGF5aW5nIHNo
b3VsZCBub3Qgc3RvcCBwbGF5aW5nIGJlY2F1c2UKICAgICAvLyB0aGV5IGFyZSBzY3JvbGxlZCBv
ZmYgdGhlIHBhZ2UuCi0gICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBW
SVNJQkxFKQorICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJp
bGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChyZW5kZXJlci0+
dmlzaWJsZUluVmlld3BvcnRTdGF0ZSgpICE9IFZpc2libGVJblZpZXdwb3J0U3RhdGU6OlllcyAm
JiAhZWxlbWVudC5pc1BsYXlpbmcoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9SdWJ5RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9SdWJ5RWxlbWVudC5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvUnVieUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw5ICs1Myw5
IEBAIFJlZjxSdWJ5RWxlbWVudD4gUnVieUVsZW1lbnQ6OmNyZWF0ZShEb2MKIAogUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IFJ1YnlFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlv
bikKIHsKLSAgICBpZiAoc3R5bGUuZGlzcGxheSgpID09IElOTElORSkKKyAgICBpZiAoc3R5bGUu
ZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpJbmxpbmUpCiAgICAgICAgIHJldHVybiBjcmVhdGVS
ZW5kZXJlcjxSZW5kZXJSdWJ5QXNJbmxpbmU+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7Ci0gICAg
aWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBCTE9DSyB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gSU5MSU5F
X0JMT0NLKQorICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OkJsb2NrIHx8
IHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lQmxvY2spCiAgICAgICAgIHJl
dHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJSdWJ5QXNCbG9jaz4oKnRoaXMsIFdURk1vdmUoc3R5
bGUpKTsKICAgICByZXR1cm4gSFRNTEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihXVEZN
b3ZlKHN0eWxlKSwgaW5zZXJ0aW9uUG9zaXRpb24pOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9SdWJ5VGV4dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvUnVieVRleHRFbGVtZW50LmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9SdWJ5VGV4dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3
IEBAIFJlZjxSdWJ5VGV4dEVsZW1lbnQ+IFJ1YnlUZXh0RWxlbWVudDo6Y3IKIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBSdWJ5VGV4dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5k
ZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mIGluc2VydGlvblBvc2l0
aW9uKQogewogICAgIC8vIFJlbmRlclJ1YnlUZXh0IHJlcXVpcmVzIGl0cyBwYXJlbnQgdG8gYmUg
UmVuZGVyUnVieVJ1bi4KLSAgICBpZiAoaXNSdWJ5KGluc2VydGlvblBvc2l0aW9uLnBhcmVudCgp
KSAmJiBzdHlsZS5kaXNwbGF5KCkgPT0gQkxPQ0spCisgICAgaWYgKGlzUnVieShpbnNlcnRpb25Q
b3NpdGlvbi5wYXJlbnQoKSkgJiYgc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpCbG9j
aykKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclJ1YnlUZXh0PigqdGhpcywg
V1RGTW92ZShzdHlsZSkpOwogICAgIHJldHVybiBIVE1MRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKFdURk1vdmUoc3R5bGUpLCBpbnNlcnRpb25Qb3NpdGlvbik7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw3ICsx
MDgsNyBAQCBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJCiAgICAgbmV3
U3R5bGUtPmluaGVyaXRGcm9tKCpzaGFkb3dIb3N0U3R5bGUpOwogICAgIG5ld1N0eWxlLT5zZXRG
bGV4R3JvdygxKTsKICAgICBuZXdTdHlsZS0+c2V0TWluV2lkdGgoTGVuZ3RoIHsgMCwgRml4ZWQg
fSk7IC8vIE5lZWRlZCBmb3IgY29ycmVjdCBzaHJpbmtpbmcuCi0gICAgbmV3U3R5bGUtPnNldERp
c3BsYXkoQkxPQ0spOworICAgIG5ld1N0eWxlLT5zZXREaXNwbGF5KERpc3BsYXlUeXBlOjpCbG9j
ayk7CiAgICAgbmV3U3R5bGUtPnNldERpcmVjdGlvbihMVFIpOwogICAgIC8vIFdlIGRvbid0IHdh
bnQgdGhlIHNoYWRvdyBET00gdG8gYmUgZWRpdGFibGUsIHNvIHdlIHNldCB0aGlzIGJsb2NrIHRv
IHJlYWQtb25seSBpbiBjYXNlIHRoZSBpbnB1dCBpdHNlbGYgaXMgZWRpdGFibGUuCiAgICAgbmV3
U3R5bGUtPnNldFVzZXJNb2RpZnkoVXNlck1vZGlmeTo6UmVhZE9ubHkpOwpAQCAtMTk3LDcgKzE5
Nyw3IEBAIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbFAKICAgICBhdXRv
IHN0eWxlID0gcmVzb2x2ZVN0eWxlKCZwYXJlbnRTdHlsZSk7CiAKICAgICBhdXRvJiBjb250cm9s
RWxlbWVudCA9IGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50PigqY29udGFpbmlu
Z1NoYWRvd1Jvb3QoKS0+aG9zdCgpKTsKLSAgICBzdHlsZS5yZW5kZXJTdHlsZS0+c2V0RGlzcGxh
eShjb250cm9sRWxlbWVudC5pc1BsYWNlaG9sZGVyVmlzaWJsZSgpID8gQkxPQ0sgOiBOT05FKTsK
KyAgICBzdHlsZS5yZW5kZXJTdHlsZS0+c2V0RGlzcGxheShjb250cm9sRWxlbWVudC5pc1BsYWNl
aG9sZGVyVmlzaWJsZSgpID8gRGlzcGxheVR5cGU6OkJsb2NrIDogRGlzcGxheVR5cGU6Ok5vbmUp
OwogCiAgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KGNvbnRyb2xFbGVtZW50KSkgewogICAg
ICAgICBhdXRvJiBpbnB1dEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pihjb250
cm9sRWxlbWVudCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zl
cmxheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck92ZXJsYXkuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4Niw5ICs1ODYsOSBA
QCBzdGF0aWMgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsCiAgICAgfQogCiAgICAg
aWYgKG5vZGUtPmlzUHNldWRvRWxlbWVudCgpKSB7Ci0gICAgICAgIGlmIChub2RlLT5wc2V1ZG9J
ZCgpID09IEJFRk9SRSkKKyAgICAgICAgaWYgKG5vZGUtPnBzZXVkb0lkKCkgPT0gUHNldWRvSWQ6
OkJlZm9yZSkKICAgICAgICAgICAgIGVsZW1lbnREYXRhLT5zZXRQc2V1ZG9FbGVtZW50KCJiZWZv
cmUiKTsKLSAgICAgICAgZWxzZSBpZiAobm9kZS0+cHNldWRvSWQoKSA9PSBBRlRFUikKKyAgICAg
ICAgZWxzZSBpZiAobm9kZS0+cHNldWRvSWQoKSA9PSBQc2V1ZG9JZDo6QWZ0ZXIpCiAgICAgICAg
ICAgICBlbGVtZW50RGF0YS0+c2V0UHNldWRvRWxlbWVudCgiYWZ0ZXIiKTsKICAgICB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM4LDcg
KzQzOCw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXMKIAogICAg
IEVsZW1lbnQqIG9yaWdpbmFsRWxlbWVudCA9IGVsZW1lbnQ7CiAgICAgUHNldWRvSWQgZWxlbWVu
dFBzZXVkb0lkID0gZWxlbWVudC0+cHNldWRvSWQoKTsKLSAgICBpZiAoZWxlbWVudFBzZXVkb0lk
KSB7CisgICAgaWYgKGVsZW1lbnRQc2V1ZG9JZCAhPSBQc2V1ZG9JZDo6Tm9uZSkgewogICAgICAg
ICBlbGVtZW50ID0gZG93bmNhc3Q8UHNldWRvRWxlbWVudD4oKmVsZW1lbnQpLmhvc3RFbGVtZW50
KCk7CiAgICAgICAgIGlmICghZWxlbWVudCkgewogICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSBB
U0NJSUxpdGVyYWwoIlBzZXVkbyBlbGVtZW50IGhhcyBubyBwYXJlbnQiKTsKQEAgLTQ1NSw3ICs0
NTUsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzCiAgICAgICAg
IC8vIFBzZXVkbyBlbGVtZW50cy4KICAgICAgICAgaWYgKCFpbmNsdWRlUHNldWRvIHx8ICppbmNs
dWRlUHNldWRvKSB7CiAgICAgICAgICAgICBhdXRvIHBzZXVkb0VsZW1lbnRzID0gSlNPTjo6QXJy
YXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz46OmNyZWF0ZSgp
OwotICAgICAgICAgICAgZm9yIChQc2V1ZG9JZCBwc2V1ZG9JZCA9IEZJUlNUX1BVQkxJQ19QU0VV
RE9JRDsgcHNldWRvSWQgPCBBRlRFUl9MQVNUX0lOVEVSTkFMX1BTRVVET0lEOyBwc2V1ZG9JZCA9
IHN0YXRpY19jYXN0PFBzZXVkb0lkPihwc2V1ZG9JZCArIDEpKSB7CisgICAgICAgICAgICBmb3Ig
KFBzZXVkb0lkIHBzZXVkb0lkID0gUHNldWRvSWQ6OkZpcnN0UHVibGljUHNldWRvSWQ7IHBzZXVk
b0lkIDwgUHNldWRvSWQ6OkFmdGVyTGFzdEludGVybmFsUHNldWRvSWQ7IHBzZXVkb0lkID0gc3Rh
dGljX2Nhc3Q8UHNldWRvSWQ+KHN0YXRpY19jYXN0PHVuc2lnbmVkPihwc2V1ZG9JZCkgKyAxKSkg
ewogICAgICAgICAgICAgICAgIGF1dG8gbWF0Y2hlZFJ1bGVzID0gc3R5bGVSZXNvbHZlci5wc2V1
ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBwc2V1ZG9JZCwgU3R5bGVSZXNvbHZlcjo6
QWxsQ1NTUnVsZXMpOwogICAgICAgICAgICAgICAgIGlmICghbWF0Y2hlZFJ1bGVzLmlzRW1wdHko
KSkgewogICAgICAgICAgICAgICAgICAgICBhdXRvIG1hdGNoZXMgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OlBzZXVkb0lkTWF0Y2hlczo6Y3JlYXRlKCkKQEAgLTQ3Nyw3ICs0NzcsNyBAQCB2
b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzCiAgICAgICAgICAgICAgICAg
U3R5bGVSZXNvbHZlciYgcGFyZW50U3R5bGVSZXNvbHZlciA9IHBhcmVudEVsZW1lbnQtPnN0eWxl
UmVzb2x2ZXIoKTsKICAgICAgICAgICAgICAgICBhdXRvIHBhcmVudE1hdGNoZWRSdWxlcyA9IHBh
cmVudFN0eWxlUmVzb2x2ZXIuc3R5bGVSdWxlc0ZvckVsZW1lbnQocGFyZW50RWxlbWVudCwgU3R5
bGVSZXNvbHZlcjo6QWxsQ1NTUnVsZXMpOwogICAgICAgICAgICAgICAgIGF1dG8gZW50cnkgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk6OmNyZWF0ZSgpCi0g
ICAgICAgICAgICAgICAgICAgIC5zZXRNYXRjaGVkQ1NTUnVsZXMoYnVpbGRBcnJheUZvck1hdGNo
ZWRSdWxlTGlzdChwYXJlbnRNYXRjaGVkUnVsZXMsIHN0eWxlUmVzb2x2ZXIsICpwYXJlbnRFbGVt
ZW50LCBOT1BTRVVETykpCisgICAgICAgICAgICAgICAgICAgIC5zZXRNYXRjaGVkQ1NTUnVsZXMo
YnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChwYXJlbnRNYXRjaGVkUnVsZXMsIHN0eWxlUmVz
b2x2ZXIsICpwYXJlbnRFbGVtZW50LCBQc2V1ZG9JZDo6Tm9uZSkpCiAgICAgICAgICAgICAgICAg
ICAgIC5yZWxlYXNlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGlzPFN0eWxlZEVsZW1lbnQ+KCpw
YXJlbnRFbGVtZW50KSAmJiBkb3duY2FzdDxTdHlsZWRFbGVtZW50PigqcGFyZW50RWxlbWVudCku
Y3Nzb21TdHlsZSgpLmxlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIHN0eWxl
U2hlZXQgPSBhc0luc3BlY3RvclN0eWxlU2hlZXQoZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oKnBh
cmVudEVsZW1lbnQpKTsKQEAgLTg5Myw3ICs4OTMsNyBAQCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJ
bnNwZWN0b3I6OlByb3RvY29sCiAgICAgYXV0byByZXN1bHQgPSBKU09OOjpBcnJheU9mPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPjo6Y3JlYXRlKCk7CiAKICAgICBTZWxlY3Rv
ckNoZWNrZXI6OkNoZWNraW5nQ29udGV4dCBjb250ZXh0KFNlbGVjdG9yQ2hlY2tlcjo6TW9kZTo6
Q29sbGVjdGluZ1J1bGVzKTsKLSAgICBjb250ZXh0LnBzZXVkb0lkID0gcHNldWRvSWQgPyBwc2V1
ZG9JZCA6IGVsZW1lbnQucHNldWRvSWQoKTsKKyAgICBjb250ZXh0LnBzZXVkb0lkID0gcHNldWRv
SWQgIT0gUHNldWRvSWQ6Ok5vbmUgPyBwc2V1ZG9JZCA6IGVsZW1lbnQucHNldWRvSWQoKTsKICAg
ICBTZWxlY3RvckNoZWNrZXIgc2VsZWN0b3JDaGVja2VyKGVsZW1lbnQuZG9jdW1lbnQoKSk7CiAK
ICAgICBmb3IgKGF1dG8mIG1hdGNoZWRSdWxlIDogbWF0Y2hlZFJ1bGVzKSB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50
LmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JET01BZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNzIsMTAgKzEzNzIs
MTAgQEAgc3RhdGljIFN0cmluZyBkb2N1bWVudEJhc2VVUkxTdHJpbmcoRG9jdQogc3RhdGljIGJv
b2wgcHNldWRvRWxlbWVudFR5cGUoUHNldWRvSWQgcHNldWRvSWQsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRPTTo6UHNldWRvVHlwZSogdHlwZSkKIHsKICAgICBzd2l0Y2ggKHBzZXVkb0lkKSB7Ci0g
ICAgY2FzZSBCRUZPUkU6CisgICAgY2FzZSBQc2V1ZG9JZDo6QmVmb3JlOgogICAgICAgICAqdHlw
ZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6UHNldWRvVHlwZTo6QmVmb3JlOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIEFGVEVSOgorICAgIGNhc2UgUHNldWRvSWQ6OkFmdGVy
OgogICAgICAgICAqdHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6UHNldWRvVHlwZTo6
QWZ0ZXI7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CkBAIC0xNTAwLDcgKzE1
MDAsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPiBJbnNwCiAgICAgICAg
IGlmIChzdGF0ZSAhPSBJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkN1c3RvbUVsZW1lbnRTdGF0
ZTo6QnVpbHRpbikKICAgICAgICAgICAgIHZhbHVlLT5zZXRDdXN0b21FbGVtZW50U3RhdGUoc3Rh
dGUpOwogCi0gICAgICAgIGlmIChlbGVtZW50LnBzZXVkb0lkKCkpIHsKKyAgICAgICAgaWYgKGVs
ZW1lbnQucHNldWRvSWQoKSAhPSBQc2V1ZG9JZDo6Tm9uZSkgewogICAgICAgICAgICAgSW5zcGVj
dG9yOjpQcm90b2NvbDo6RE9NOjpQc2V1ZG9UeXBlIHBzZXVkb1R5cGU7CiAgICAgICAgICAgICBp
ZiAocHNldWRvRWxlbWVudFR5cGUoZWxlbWVudC5wc2V1ZG9JZCgpLCAmcHNldWRvVHlwZSkpCiAg
ICAgICAgICAgICAgICAgdmFsdWUtPnNldFBzZXVkb1R5cGUocHNldWRvVHlwZSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckxheWVyVHJlZUFnZW50LmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE5MSw5ICsxOTEsOSBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVl
OjpMYXllCiAgICAgaWYgKGlzQW5vbnltb3VzICYmICFyZW5kZXJlci0+aXNSZW5kZXJWaWV3KCkp
IHsKICAgICAgICAgbGF5ZXJPYmplY3QtPnNldElzQW5vbnltb3VzKHRydWUpOwogICAgICAgICBj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSByZW5kZXJlci0+c3R5bGUoKTsKLSAgICAgICAgaWYg
KHN0eWxlLnN0eWxlVHlwZSgpID09IEZJUlNUX0xFVFRFUikKKyAgICAgICAgaWYgKHN0eWxlLnN0
eWxlVHlwZSgpID09IFBzZXVkb0lkOjpGaXJzdExldHRlcikKICAgICAgICAgICAgIGxheWVyT2Jq
ZWN0LT5zZXRQc2V1ZG9FbGVtZW50KCJmaXJzdC1sZXR0ZXIiKTsKLSAgICAgICAgZWxzZSBpZiAo
c3R5bGUuc3R5bGVUeXBlKCkgPT0gRklSU1RfTElORSkKKyAgICAgICAgZWxzZSBpZiAoc3R5bGUu
c3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6OkZpcnN0TGluZSkKICAgICAgICAgICAgIGxheWVyT2Jq
ZWN0LT5zZXRQc2V1ZG9FbGVtZW50KCJmaXJzdC1saW5lIik7CiAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAJKHJldmlzaW9u
IDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MiwyOCArMTUyLDI4IEBAIGJvb2wgQm94Ojppc0Rlc2Nl
bmRhbnRPZihDb250YWluZXImIGNvbnQKIAogYm9vbCBCb3g6OmlzSW5saW5lQmxvY2tCb3goKSBj
b25zdAogewotICAgIHJldHVybiBtX3N0eWxlLmRpc3BsYXkoKSA9PSBJTkxJTkVfQkxPQ0s7Cisg
ICAgcmV0dXJuIG1fc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpJbmxpbmVCbG9jazsK
IH0KIAogYm9vbCBCb3g6OmlzQmxvY2tMZXZlbEJveCgpIGNvbnN0CiB7CiAgICAgLy8gQmxvY2sg
bGV2ZWwgZWxlbWVudHMgZ2VuZXJhdGUgYmxvY2sgbGV2ZWwgYm94ZXMuCiAgICAgYXV0byBkaXNw
bGF5ID0gbV9zdHlsZS5kaXNwbGF5KCk7Ci0gICAgcmV0dXJuIGRpc3BsYXkgPT0gQkxPQ0sgfHwg
ZGlzcGxheSA9PSBMSVNUX0lURU0gfHwgZGlzcGxheSA9PSBUQUJMRTsKKyAgICByZXR1cm4gZGlz
cGxheSA9PSBEaXNwbGF5VHlwZTo6QmxvY2sgfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6TGlz
dEl0ZW0gfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6VGFibGU7CiB9CiAKIGJvb2wgQm94Ojpp
c0lubGluZUxldmVsQm94KCkgY29uc3QKIHsKICAgICAvLyBJbmxpbmUgbGV2ZWwgZWxlbWVudHMg
Z2VuZXJhdGUgaW5saW5lIGxldmVsIGJveGVzLgogICAgIGF1dG8gZGlzcGxheSA9IG1fc3R5bGUu
ZGlzcGxheSgpOwotICAgIHJldHVybiBkaXNwbGF5ID09IElOTElORSB8fCBkaXNwbGF5ID09IElO
TElORV9CTE9DSyB8fCBkaXNwbGF5ID09IElOTElORV9UQUJMRTsKKyAgICByZXR1cm4gZGlzcGxh
eSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lIHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OklubGlu
ZUJsb2NrIHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OklubGluZVRhYmxlOwogfQogCiBib29s
IEJveDo6aXNCbG9ja0NvbnRhaW5lckJveCgpIGNvbnN0CiB7CiAgICAgLy8gSW5saW5lIGxldmVs
IGVsZW1lbnRzIGdlbmVyYXRlIGlubGluZSBsZXZlbCBib3hlcy4KICAgICBhdXRvIGRpc3BsYXkg
PSBtX3N0eWxlLmRpc3BsYXkoKTsKLSAgICByZXR1cm4gZGlzcGxheSA9PSBCTE9DSyB8fCBkaXNw
bGF5ID09IExJU1RfSVRFTSB8fCBkaXNwbGF5ID09IElOTElORV9CTE9DSyB8fCBkaXNwbGF5ID09
IFRBQkxFX0NFTEwgfHwgZGlzcGxheSA9PSBUQUJMRV9DQVBUSU9OOyAvLyBUT0RPICYmICFyZXBs
YWNlZCBlbGVtZW50CisgICAgcmV0dXJuIGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OkJsb2NrIHx8
IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6Okxpc3RJdGVtIHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5
cGU6OklubGluZUJsb2NrIHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OlRhYmxlQ2VsbCB8fCBk
aXNwbGF5ID09IERpc3BsYXlUeXBlOjpUYWJsZUNhcHRpb247IC8vIFRPRE8gJiYgIXJlcGxhY2Vk
IGVsZW1lbnQKIH0KIAogYm9vbCBCb3g6OmlzSW5pdGlhbENvbnRhaW5pbmdCbG9jaygpIGNvbnN0
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAyMzIxNDMp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0MTAsNyArMTQxMCw3IEBAIHN0ZDo6b3B0aW9uYWw8Q3Vyc29yPiBFdmVudEhhbmRsZXI6
OnNlbGUKICAgICBjb25zdCBDdXJzb3ImIGlCZWFtID0gaG9yaXpvbnRhbFRleHQgPyBpQmVhbUN1
cnNvcigpIDogdmVydGljYWxUZXh0Q3Vyc29yKCk7CiAKICNpZiBFTkFCTEUoQ1VSU09SX1ZJU0lC
SUxJVFkpCi0gICAgaWYgKHN0eWxlICYmIHN0eWxlLT5jdXJzb3JWaXNpYmlsaXR5KCkgPT0gQ3Vy
c29yVmlzaWJpbGl0eUF1dG9IaWRlKQorICAgIGlmIChzdHlsZSAmJiBzdHlsZS0+Y3Vyc29yVmlz
aWJpbGl0eSgpID09IEN1cnNvclZpc2liaWxpdHk6OkF1dG9IaWRlKQogICAgICAgICBzdGFydEF1
dG9IaWRlQ3Vyc29yVGltZXIoKTsKICAgICBlbHNlCiAgICAgICAgIGNhbmNlbEF1dG9IaWRlQ3Vy
c29yVGltZXIoKTsKQEAgLTE0NzMsOCArMTQ3Myw4IEBAIHN0ZDo6b3B0aW9uYWw8Q3Vyc29yPiBF
dmVudEhhbmRsZXI6OnNlbGUKICAgICAgICAgJiYgIW1fY2FwdHVyaW5nTW91c2VFdmVudHNFbGVt
ZW50KQogICAgICAgICByZXR1cm4gaUJlYW07CiAKLSAgICBzd2l0Y2ggKHN0eWxlID8gc3R5bGUt
PmN1cnNvcigpIDogQ3Vyc29yQXV0bykgewotICAgIGNhc2UgQ3Vyc29yQXV0bzogeworICAgIHN3
aXRjaCAoc3R5bGUgPyBzdHlsZS0+Y3Vyc29yKCkgOiBDdXJzb3JUeXBlOjpBdXRvKSB7CisgICAg
Y2FzZSBDdXJzb3JUeXBlOjpBdXRvOiB7CiAgICAgICAgIGJvb2wgZWRpdGFibGUgPSBub2RlLT5o
YXNFZGl0YWJsZVN0eWxlKCk7CiAKICAgICAgICAgaWYgKHVzZUhhbmRDdXJzb3Iobm9kZSwgcmVz
dWx0LmlzT3ZlckxpbmsoKSwgc2hpZnRLZXkpKQpAQCAtMTQ5Miw3NSArMTQ5Miw3NSBAQCBzdGQ6
Om9wdGlvbmFsPEN1cnNvcj4gRXZlbnRIYW5kbGVyOjpzZWxlCiAgICAgICAgICAgICByZXR1cm4g
aUJlYW07CiAgICAgICAgIHJldHVybiBwb2ludGVyQ3Vyc29yKCk7CiAgICAgfQotICAgIGNhc2Ug
Q3Vyc29yRGVmYXVsdDoKKyAgICBjYXNlIEN1cnNvclR5cGU6OkRlZmF1bHQ6CiAgICAgICAgIHJl
dHVybiBwb2ludGVyQ3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JOb25lOgorICAgIGNhc2UgQ3Vy
c29yVHlwZTo6Tm9uZToKICAgICAgICAgcmV0dXJuIG5vbmVDdXJzb3IoKTsKLSAgICBjYXNlIEN1
cnNvckNvbnRleHRNZW51OgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6Q29udGV4dE1lbnU6CiAgICAg
ICAgIHJldHVybiBjb250ZXh0TWVudUN1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29ySGVscDoKKyAg
ICBjYXNlIEN1cnNvclR5cGU6OkhlbHA6CiAgICAgICAgIHJldHVybiBoZWxwQ3Vyc29yKCk7Ci0g
ICAgY2FzZSBDdXJzb3JQb2ludGVyOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6UG9pbnRlcjoKICAg
ICAgICAgcmV0dXJuIGhhbmRDdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNvclByb2dyZXNzOgorICAg
IGNhc2UgQ3Vyc29yVHlwZTo6UHJvZ3Jlc3M6CiAgICAgICAgIHJldHVybiBwcm9ncmVzc0N1cnNv
cigpOwotICAgIGNhc2UgQ3Vyc29yV2FpdDoKKyAgICBjYXNlIEN1cnNvclR5cGU6OldhaXQ6CiAg
ICAgICAgIHJldHVybiB3YWl0Q3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JDZWxsOgorICAgIGNh
c2UgQ3Vyc29yVHlwZTo6Q2VsbDoKICAgICAgICAgcmV0dXJuIGNlbGxDdXJzb3IoKTsKLSAgICBj
YXNlIEN1cnNvckNyb3NzaGFpcjoKKyAgICBjYXNlIEN1cnNvclR5cGU6OkNyb3NzaGFpcjoKICAg
ICAgICAgcmV0dXJuIGNyb3NzQ3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JUZXh0OgorICAgIGNh
c2UgQ3Vyc29yVHlwZTo6VGV4dDoKICAgICAgICAgcmV0dXJuIGlCZWFtQ3Vyc29yKCk7Ci0gICAg
Y2FzZSBDdXJzb3JWZXJ0aWNhbFRleHQ6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpWZXJ0aWNhbFRl
eHQ6CiAgICAgICAgIHJldHVybiB2ZXJ0aWNhbFRleHRDdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNv
ckFsaWFzOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6QWxpYXM6CiAgICAgICAgIHJldHVybiBhbGlh
c0N1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29yQ29weToKKyAgICBjYXNlIEN1cnNvclR5cGU6OkNv
cHk6CiAgICAgICAgIHJldHVybiBjb3B5Q3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JNb3ZlOgor
ICAgIGNhc2UgQ3Vyc29yVHlwZTo6TW92ZToKICAgICAgICAgcmV0dXJuIG1vdmVDdXJzb3IoKTsK
LSAgICBjYXNlIEN1cnNvck5vRHJvcDoKKyAgICBjYXNlIEN1cnNvclR5cGU6Ok5vRHJvcDoKICAg
ICAgICAgcmV0dXJuIG5vRHJvcEN1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29yTm90QWxsb3dlZDoK
KyAgICBjYXNlIEN1cnNvclR5cGU6Ok5vdEFsbG93ZWQ6CiAgICAgICAgIHJldHVybiBub3RBbGxv
d2VkQ3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JHcmFiOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6
R3JhYjoKICAgICAgICAgcmV0dXJuIGdyYWJDdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNvckdyYWJi
aW5nOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6R3JhYmJpbmc6CiAgICAgICAgIHJldHVybiBncmFi
YmluZ0N1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29yRVJlc2l6ZToKKyAgICBjYXNlIEN1cnNvclR5
cGU6OkVSZXNpemU6CiAgICAgICAgIHJldHVybiBlYXN0UmVzaXplQ3Vyc29yKCk7Ci0gICAgY2Fz
ZSBDdXJzb3JOUmVzaXplOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6TlJlc2l6ZToKICAgICAgICAg
cmV0dXJuIG5vcnRoUmVzaXplQ3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JOZVJlc2l6ZToKKyAg
ICBjYXNlIEN1cnNvclR5cGU6Ok5FUmVzaXplOgogICAgICAgICByZXR1cm4gbm9ydGhFYXN0UmVz
aXplQ3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JOd1Jlc2l6ZToKKyAgICBjYXNlIEN1cnNvclR5
cGU6Ok5XUmVzaXplOgogICAgICAgICByZXR1cm4gbm9ydGhXZXN0UmVzaXplQ3Vyc29yKCk7Ci0g
ICAgY2FzZSBDdXJzb3JTUmVzaXplOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6U1Jlc2l6ZToKICAg
ICAgICAgcmV0dXJuIHNvdXRoUmVzaXplQ3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JTZVJlc2l6
ZToKKyAgICBjYXNlIEN1cnNvclR5cGU6OlNFUmVzaXplOgogICAgICAgICByZXR1cm4gc291dGhF
YXN0UmVzaXplQ3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JTd1Jlc2l6ZToKKyAgICBjYXNlIEN1
cnNvclR5cGU6OlNXUmVzaXplOgogICAgICAgICByZXR1cm4gc291dGhXZXN0UmVzaXplQ3Vyc29y
KCk7Ci0gICAgY2FzZSBDdXJzb3JXUmVzaXplOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6V1Jlc2l6
ZToKICAgICAgICAgcmV0dXJuIHdlc3RSZXNpemVDdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNvckV3
UmVzaXplOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6RVdSZXNpemU6CiAgICAgICAgIHJldHVybiBl
YXN0V2VzdFJlc2l6ZUN1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29yTnNSZXNpemU6CisgICAgY2Fz
ZSBDdXJzb3JUeXBlOjpOU1Jlc2l6ZToKICAgICAgICAgcmV0dXJuIG5vcnRoU291dGhSZXNpemVD
dXJzb3IoKTsKLSAgICBjYXNlIEN1cnNvck5lc3dSZXNpemU6CisgICAgY2FzZSBDdXJzb3JUeXBl
OjpORVNXUmVzaXplOgogICAgICAgICByZXR1cm4gbm9ydGhFYXN0U291dGhXZXN0UmVzaXplQ3Vy
c29yKCk7Ci0gICAgY2FzZSBDdXJzb3JOd3NlUmVzaXplOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6
TldTRVJlc2l6ZToKICAgICAgICAgcmV0dXJuIG5vcnRoV2VzdFNvdXRoRWFzdFJlc2l6ZUN1cnNv
cigpOwotICAgIGNhc2UgQ3Vyc29yQ29sUmVzaXplOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6Q29s
dW1uUmVzaXplOgogICAgICAgICByZXR1cm4gY29sdW1uUmVzaXplQ3Vyc29yKCk7Ci0gICAgY2Fz
ZSBDdXJzb3JSb3dSZXNpemU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpSb3dSZXNpemU6CiAgICAg
ICAgIHJldHVybiByb3dSZXNpemVDdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNvckFsbFNjcm9sbDoK
KyAgICBjYXNlIEN1cnNvclR5cGU6OkFsbFNjcm9sbDoKICAgICAgICAgcmV0dXJuIG1vdmVDdXJz
b3IoKTsKLSAgICBjYXNlIEN1cnNvclpvb21JbjoKKyAgICBjYXNlIEN1cnNvclR5cGU6Olpvb21J
bjoKICAgICAgICAgcmV0dXJuIHpvb21JbkN1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29yWm9vbU91
dDoKKyAgICBjYXNlIEN1cnNvclR5cGU6Olpvb21PdXQ6CiAgICAgICAgIHJldHVybiB6b29tT3V0
Q3Vyc29yKCk7CiAgICAgfQogICAgIHJldHVybiBwb2ludGVyQ3Vyc29yKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4NCw3ICszODQsNyBAQCBTdHJpbmcgRnJhbWU6
OnNlYXJjaEZvckxhYmVsc0Fib3ZlQ2VsbChjCiAgICAgICAgIC8vIHNlYXJjaCB3aXRoaW4gdGhl
IGFib3ZlIGNlbGwgd2UgZm91bmQgZm9yIGEgbWF0Y2gKICAgICAgICAgc2l6ZV90IGxlbmd0aFNl
YXJjaGVkID0gMDsgICAgCiAgICAgICAgIGZvciAoVGV4dCogdGV4dE5vZGUgPSBUZXh0Tm9kZVRy
YXZlcnNhbDo6Zmlyc3RXaXRoaW4oKmFib3ZlQ2VsbCk7IHRleHROb2RlOyB0ZXh0Tm9kZSA9IFRl
eHROb2RlVHJhdmVyc2FsOjpuZXh0KCp0ZXh0Tm9kZSwgYWJvdmVDZWxsKSkgewotICAgICAgICAg
ICAgaWYgKCF0ZXh0Tm9kZS0+cmVuZGVyZXIoKSB8fCB0ZXh0Tm9kZS0+cmVuZGVyZXIoKS0+c3R5
bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICAgICAgICAgIGlmICghdGV4dE5vZGUt
PnJlbmRlcmVyKCkgfHwgdGV4dE5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCkudmlzaWJpbGl0eSgp
ICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICAvLyBGb3IgZWFjaCB0ZXh0IGNodW5rLCBydW4gdGhlIHJlZ2V4cAogICAgICAgICAg
ICAgU3RyaW5nIG5vZGVTdHJpbmcgPSB0ZXh0Tm9kZS0+ZGF0YSgpOwpAQCAtNDQxLDcgKzQ0MSw3
IEBAIFN0cmluZyBGcmFtZTo6c2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWUKICAgICAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc2VhcmNoZWRD
ZWxsQWJvdmUgPSB0cnVlOwotICAgICAgICB9IGVsc2UgaWYgKG4tPmlzVGV4dE5vZGUoKSAmJiBu
LT5yZW5kZXJlcigpICYmIG4tPnJlbmRlcmVyKCktPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJ
U0lCTEUpIHsKKyAgICAgICAgfSBlbHNlIGlmIChuLT5pc1RleHROb2RlKCkgJiYgbi0+cmVuZGVy
ZXIoKSAmJiBuLT5yZW5kZXJlcigpLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5
OjpWaXNpYmxlKSB7CiAgICAgICAgICAgICAvLyBGb3IgZWFjaCB0ZXh0IGNodW5rLCBydW4gdGhl
IHJlZ2V4cAogICAgICAgICAgICAgU3RyaW5nIG5vZGVTdHJpbmcgPSBuLT5ub2RlVmFsdWUoKTsK
ICAgICAgICAgICAgIC8vIGFkZCAxMDAgZm9yIHNsb3AsIHRvIG1ha2UgaXQgbW9yZSBsaWtlbHkg
dGhhdCB3ZSdsbCBzZWFyY2ggd2hvbGUgbm9kZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ3LDE3ICs1NDcsMTcgQEAgUmVmPFNjcm9sbGJhcj4g
RnJhbWVWaWV3OjpjcmVhdGVTY3JvbGxiYQogCiAgICAgLy8gVHJ5IHRoZSA8Ym9keT4gZWxlbWVu
dCBmaXJzdCBhcyBhIHNjcm9sbGJhciBzb3VyY2UuCiAgICAgSFRNTEVsZW1lbnQqIGJvZHkgPSBk
b2MgPyBkb2MtPmJvZHlPckZyYW1lc2V0KCkgOiBudWxscHRyOwotICAgIGlmIChib2R5ICYmIGJv
ZHktPnJlbmRlcmVyKCkgJiYgYm9keS0+cmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNQc2V1ZG9TdHls
ZShTQ1JPTExCQVIpKQorICAgIGlmIChib2R5ICYmIGJvZHktPnJlbmRlcmVyKCkgJiYgYm9keS0+
cmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6U2Nyb2xsYmFyKSkK
ICAgICAgICAgcmV0dXJuIFJlbmRlclNjcm9sbGJhcjo6Y3JlYXRlQ3VzdG9tU2Nyb2xsYmFyKCp0
aGlzLCBvcmllbnRhdGlvbiwgYm9keSk7CiAgICAgCiAgICAgLy8gSWYgdGhlIDxib2R5PiBkaWRu
J3QgaGF2ZSBhIGN1c3RvbSBzdHlsZSwgdGhlbiB0aGUgcm9vdCBlbGVtZW50IG1pZ2h0LgogICAg
IEVsZW1lbnQqIGRvY0VsZW1lbnQgPSBkb2MgPyBkb2MtPmRvY3VtZW50RWxlbWVudCgpIDogbnVs
bHB0cjsKLSAgICBpZiAoZG9jRWxlbWVudCAmJiBkb2NFbGVtZW50LT5yZW5kZXJlcigpICYmIGRv
Y0VsZW1lbnQtPnJlbmRlcmVyKCktPnN0eWxlKCkuaGFzUHNldWRvU3R5bGUoU0NST0xMQkFSKSkK
KyAgICBpZiAoZG9jRWxlbWVudCAmJiBkb2NFbGVtZW50LT5yZW5kZXJlcigpICYmIGRvY0VsZW1l
bnQtPnJlbmRlcmVyKCktPnN0eWxlKCkuaGFzUHNldWRvU3R5bGUoUHNldWRvSWQ6OlNjcm9sbGJh
cikpCiAgICAgICAgIHJldHVybiBSZW5kZXJTY3JvbGxiYXI6OmNyZWF0ZUN1c3RvbVNjcm9sbGJh
cigqdGhpcywgb3JpZW50YXRpb24sIGRvY0VsZW1lbnQpOwotICAgICAgICAKKwogICAgIC8vIElm
IHdlIGhhdmUgYW4gb3duaW5nIGlmcmFtZS9mcmFtZSBlbGVtZW50LCB0aGVuIGl0IGNhbiBzZXQg
dGhlIGN1c3RvbSBzY3JvbGxiYXIgYWxzby4KICAgICBSZW5kZXJXaWRnZXQqIGZyYW1lUmVuZGVy
ZXIgPSBmcmFtZSgpLm93bmVyUmVuZGVyZXIoKTsKLSAgICBpZiAoZnJhbWVSZW5kZXJlciAmJiBm
cmFtZVJlbmRlcmVyLT5zdHlsZSgpLmhhc1BzZXVkb1N0eWxlKFNDUk9MTEJBUikpCisgICAgaWYg
KGZyYW1lUmVuZGVyZXIgJiYgZnJhbWVSZW5kZXJlci0+c3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShQ
c2V1ZG9JZDo6U2Nyb2xsYmFyKSkKICAgICAgICAgcmV0dXJuIFJlbmRlclNjcm9sbGJhcjo6Y3Jl
YXRlQ3VzdG9tU2Nyb2xsYmFyKCp0aGlzLCBvcmllbnRhdGlvbiwgbnVsbHB0ciwgJmZyYW1lKCkp
OwogICAgIAogICAgIC8vIE5vYm9keSBzZXQgYSBjdXN0b20gc3R5bGUsIHNvIHdlIGp1c3QgdXNl
IGEgbmF0aXZlIHNjcm9sbGJhci4KQEAgLTM2MTksNyArMzYxOSw3IEBAIGZsb2F0IEZyYW1lVmll
dzo6YWRqdXN0U2Nyb2xsU3RlcEZvckZpeGUKICAgICBmbG9hdCBib3R0b21PYnNjdXJlZEFyZWEg
PSAwOwogICAgIGZvciAoY29uc3QgYXV0byYgcG9zaXRpb25lZE9iamVjdCA6ICpwb3NpdGlvbmVk
T2JqZWN0cykgewogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSBwb3NpdGlvbmVk
T2JqZWN0LT5zdHlsZSgpOwotICAgICAgICBpZiAoc3R5bGUucG9zaXRpb24oKSAhPSBQb3NpdGlv
blR5cGU6OkZpeGVkIHx8IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBISURERU4gfHwgIXN0eWxlLm9w
YWNpdHkoKSkKKyAgICAgICAgaWYgKHN0eWxlLnBvc2l0aW9uKCkgIT0gUG9zaXRpb25UeXBlOjpG
aXhlZCB8fCBzdHlsZS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6SGlkZGVuIHx8ICFzdHls
ZS5vcGFjaXR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBGbG9hdFF1YWQg
Y29udGVudFF1YWQgPSBwb3NpdGlvbmVkT2JqZWN0LT5hYnNvbHV0ZUNvbnRlbnRRdWFkKCk7CkBA
IC0zODI4LDcgKzM4MjgsNyBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlU2Nyb2xsQ29ybmVyKCkK
ICAgICAgICAgRWxlbWVudCogYm9keSA9IGRvYyA/IGRvYy0+Ym9keU9yRnJhbWVzZXQoKSA6IG51
bGxwdHI7CiAgICAgICAgIGlmIChib2R5ICYmIGJvZHktPnJlbmRlcmVyKCkpIHsKICAgICAgICAg
ICAgIHJlbmRlcmVyID0gYm9keS0+cmVuZGVyZXIoKTsKLSAgICAgICAgICAgIGNvcm5lclN0eWxl
ID0gcmVuZGVyZXItPmdldFVuY2FjaGVkUHNldWRvU3R5bGUoUHNldWRvU3R5bGVSZXF1ZXN0KFND
Uk9MTEJBUl9DT1JORVIpLCAmcmVuZGVyZXItPnN0eWxlKCkpOworICAgICAgICAgICAgY29ybmVy
U3R5bGUgPSByZW5kZXJlci0+Z2V0VW5jYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9TdHlsZVJlcXVl
c3QoUHNldWRvSWQ6OlNjcm9sbGJhckNvcm5lciksICZyZW5kZXJlci0+c3R5bGUoKSk7CiAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmICghY29ybmVyU3R5bGUpIHsKQEAgLTM4MzYsMTQg
KzM4MzYsMTQgQEAgdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZVNjcm9sbENvcm5lcigpCiAgICAgICAg
ICAgICBFbGVtZW50KiBkb2NFbGVtZW50ID0gZG9jID8gZG9jLT5kb2N1bWVudEVsZW1lbnQoKSA6
IG51bGxwdHI7CiAgICAgICAgICAgICBpZiAoZG9jRWxlbWVudCAmJiBkb2NFbGVtZW50LT5yZW5k
ZXJlcigpKSB7CiAgICAgICAgICAgICAgICAgcmVuZGVyZXIgPSBkb2NFbGVtZW50LT5yZW5kZXJl
cigpOwotICAgICAgICAgICAgICAgIGNvcm5lclN0eWxlID0gcmVuZGVyZXItPmdldFVuY2FjaGVk
UHNldWRvU3R5bGUoUHNldWRvU3R5bGVSZXF1ZXN0KFNDUk9MTEJBUl9DT1JORVIpLCAmcmVuZGVy
ZXItPnN0eWxlKCkpOworICAgICAgICAgICAgICAgIGNvcm5lclN0eWxlID0gcmVuZGVyZXItPmdl
dFVuY2FjaGVkUHNldWRvU3R5bGUoUHNldWRvU3R5bGVSZXF1ZXN0KFBzZXVkb0lkOjpTY3JvbGxi
YXJDb3JuZXIpLCAmcmVuZGVyZXItPnN0eWxlKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBpZiAoIWNvcm5lclN0eWxlKSB7CiAgICAgICAgICAgICAvLyBJ
ZiB3ZSBoYXZlIGFuIG93bmluZyBpZnJhbWUvZnJhbWUgZWxlbWVudCwgdGhlbiBpdCBjYW4gc2V0
IHRoZSBjdXN0b20gc2Nyb2xsYmFyIGFsc28uCiAgICAgICAgICAgICBpZiAoUmVuZGVyV2lkZ2V0
KiByZW5kZXJlciA9IGZyYW1lKCkub3duZXJSZW5kZXJlcigpKQotICAgICAgICAgICAgICAgIGNv
cm5lclN0eWxlID0gcmVuZGVyZXItPmdldFVuY2FjaGVkUHNldWRvU3R5bGUoUHNldWRvU3R5bGVS
ZXF1ZXN0KFNDUk9MTEJBUl9DT1JORVIpLCAmcmVuZGVyZXItPnN0eWxlKCkpOworICAgICAgICAg
ICAgICAgIGNvcm5lclN0eWxlID0gcmVuZGVyZXItPmdldFVuY2FjaGVkUHNldWRvU3R5bGUoUHNl
dWRvU3R5bGVSZXF1ZXN0KFBzZXVkb0lkOjpTY3JvbGxiYXJDb3JuZXIpLCAmcmVuZGVyZXItPnN0
eWxlKCkpOwogICAgICAgICB9CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMCw3ICsxMDAsNyBAQCBkb3VibGUgQW5pbWF0aW9uQmFzZTo6ZHVyYXRpb24oKSBj
b25zdAogCiBib29sIEFuaW1hdGlvbkJhc2U6OnBsYXlTdGF0ZVBsYXlpbmcoKSBjb25zdAogewot
ICAgIHJldHVybiBtX2FuaW1hdGlvbi0+cGxheVN0YXRlKCkgPT0gQW5pbVBsYXlTdGF0ZVBsYXlp
bmc7CisgICAgcmV0dXJuIG1fYW5pbWF0aW9uLT5wbGF5U3RhdGUoKSA9PSBBbmltYXRpb25QbGF5
U3RhdGU6OlBsYXlpbmc7CiB9CiAKIGJvb2wgQW5pbWF0aW9uQmFzZTo6YW5pbWF0aW9uc01hdGNo
KGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uKSBjb25zdApAQCAtNTUyLDcgKzU1Miw3IEBAIHZv
aWQgQW5pbWF0aW9uQmFzZTo6ZmlyZUFuaW1hdGlvbkV2ZW50c0kKICAgICB9CiB9CiAKLXZvaWQg
QW5pbWF0aW9uQmFzZTo6dXBkYXRlUGxheVN0YXRlKEVBbmltUGxheVN0YXRlIHBsYXlTdGF0ZSkK
K3ZvaWQgQW5pbWF0aW9uQmFzZTo6dXBkYXRlUGxheVN0YXRlKEFuaW1hdGlvblBsYXlTdGF0ZSBw
bGF5U3RhdGUpCiB7CiAgICAgaWYgKCFtX2NvbXBvc2l0ZUFuaW1hdGlvbikKICAgICAgICAgcmV0
dXJuOwpAQCAtNTYwLDcgKzU2MCw3IEBAIHZvaWQgQW5pbWF0aW9uQmFzZTo6dXBkYXRlUGxheVN0
YXRlKEVBbmkKICAgICAvLyBXaGVuIHdlIGdldCBoZXJlLCB3ZSBjYW4gaGF2ZSBvbmUgb2YgNCBk
ZXNpcmVkIHN0YXRlczogcnVubmluZywgcGF1c2VkLCBzdXNwZW5kZWQsIHBhdXNlZCAmIHN1c3Bl
bmRlZC4KICAgICAvLyBUaGUgc3RhdGUgbWFjaGluZSBjYW4gYmUgaW4gb25lIG9mIHR3byBzdGF0
ZXM6IHJ1bm5pbmcsIHBhdXNlZC4KICAgICAvLyBTZXQgdGhlIHN0YXRlIG1hY2hpbmUgdG8gdGhl
IGRlc2lyZWQgc3RhdGUuCi0gICAgYm9vbCBwYXVzZSA9IHBsYXlTdGF0ZSA9PSBBbmltUGxheVN0
YXRlUGF1c2VkIHx8IG1fY29tcG9zaXRlQW5pbWF0aW9uLT5pc1N1c3BlbmRlZCgpOworICAgIGJv
b2wgcGF1c2UgPSBwbGF5U3RhdGUgPT0gQW5pbWF0aW9uUGxheVN0YXRlOjpQYXVzZWQgfHwgbV9j
b21wb3NpdGVBbmltYXRpb24tPmlzU3VzcGVuZGVkKCk7CiAKICAgICBpZiAocGF1c2UgPT0gcGF1
c2VkKCkgJiYgIWlzTmV3KCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmgJKHJldmlzaW9uIDIzMjE0MykKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBDYWxsZWQg
dG8gY2hhbmdlIHRvIG9yIGZyb20gcGF1c2VkIHN0YXRlCi0gICAgdm9pZCB1cGRhdGVQbGF5U3Rh
dGUoRUFuaW1QbGF5U3RhdGUpOworICAgIHZvaWQgdXBkYXRlUGxheVN0YXRlKEFuaW1hdGlvblBs
YXlTdGF0ZSk7CiAgICAgYm9vbCBwbGF5U3RhdGVQbGF5aW5nKCkgY29uc3Q7CiAKICAgICBib29s
IHdhaXRpbmdUb1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9hbmltYXRpb25TdGF0ZSA9PSBBbmlt
YXRpb25TdGF0ZTo6TmV3IHx8IG1fYW5pbWF0aW9uU3RhdGUgPT0gQW5pbWF0aW9uU3RhdGU6OlN0
YXJ0V2FpdFRpbWVyIHx8IG1fYW5pbWF0aW9uU3RhdGUgPT0gQW5pbWF0aW9uU3RhdGU6OlBhdXNl
ZE5ldzsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlB
bmltYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDcsMTYgKzI0NywxNiBAQCBzdGF0aWMgaW5saW5lIFJlZlB0cjxTdHlsZUltYWdl
PiBibGVuZEZpCiAgICAgcmV0dXJuIFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNyZWF0ZShXVEZNb3Zl
KHJlc3VsdCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEVWaXNpYmlsaXR5IGJsZW5kRnVuYyhjb25z
dCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ2xpZW50KiBhbmltLCBFVmlzaWJpbGl0eSBmcm9tLCBFVmlz
aWJpbGl0eSB0bywgZG91YmxlIHByb2dyZXNzKQorc3RhdGljIGlubGluZSBWaXNpYmlsaXR5IGJs
ZW5kRnVuYyhjb25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ2xpZW50KiBhbmltLCBWaXNpYmlsaXR5
IGZyb20sIFZpc2liaWxpdHkgdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsKICAgICAvLyBBbnkgbm9u
LXplcm8gcmVzdWx0IG1lYW5zIHdlIGNvbnNpZGVyIHRoZSBvYmplY3QgdG8gYmUgdmlzaWJsZS4g
T25seSBhdCAwIGRvIHdlIGNvbnNpZGVyIHRoZSBvYmplY3QgdG8gYmUKLSAgICAvLyBpbnZpc2li
bGUuIFRoZSBpbnZpc2libGUgdmFsdWUgd2UgdXNlIChISURERU4gdnMuIENPTExBUFNFKSBkZXBl
bmRzIG9uIHRoZSBzcGVjaWZpZWQgZnJvbS90byB2YWx1ZXMuCi0gICAgZG91YmxlIGZyb21WYWwg
PSBmcm9tID09IFZJU0lCTEUgPyAxLiA6IDAuOwotICAgIGRvdWJsZSB0b1ZhbCA9IHRvID09IFZJ
U0lCTEUgPyAxLiA6IDAuOworICAgIC8vIGludmlzaWJsZS4gVGhlIGludmlzaWJsZSB2YWx1ZSB3
ZSB1c2UgKFZpc2liaWxpdHk6OkhpZGRlbiB2cy4gVmlzaWJpbGl0eTo6Q29sbGFwc2UpIGRlcGVu
ZHMgb24gdGhlIHNwZWNpZmllZCBmcm9tL3RvIHZhbHVlcy4KKyAgICBkb3VibGUgZnJvbVZhbCA9
IGZyb20gPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSA/IDEuIDogMC47CisgICAgZG91YmxlIHRvVmFs
ID0gdG8gPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSA/IDEuIDogMC47CiAgICAgaWYgKGZyb21WYWwg
PT0gdG9WYWwpCiAgICAgICAgIHJldHVybiB0bzsKICAgICBkb3VibGUgcmVzdWx0ID0gYmxlbmRG
dW5jKGFuaW0sIGZyb21WYWwsIHRvVmFsLCBwcm9ncmVzcyk7Ci0gICAgcmV0dXJuIHJlc3VsdCA+
IDAuID8gVklTSUJMRSA6ICh0byAhPSBWSVNJQkxFID8gdG8gOiBmcm9tKTsKKyAgICByZXR1cm4g
cmVzdWx0ID4gMC4gPyBWaXNpYmlsaXR5OjpWaXNpYmxlIDogKHRvICE9IFZpc2liaWxpdHk6OlZp
c2libGUgPyB0byA6IGZyb20pOwogfQogCiBzdGF0aWMgaW5saW5lIExlbmd0aEJveCBibGVuZEZ1
bmMoY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsaWVudCogYW5pbSwgY29uc3QgTGVuZ3RoQm94
JiBmcm9tLCBjb25zdCBMZW5ndGhCb3gmIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCkBAIC0xNTUyLDcg
KzE1NTIsNyBAQCBDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXA6OkNTU1Byb3BlCiAgICAg
ICAgIG5ldyBMZW5ndGhQcm9wZXJ0eVdyYXBwZXI8TGVuZ3RoU2l6ZT4oQ1NTUHJvcGVydHlCb3Jk
ZXJUb3BSaWdodFJhZGl1cywgJlJlbmRlclN0eWxlOjpib3JkZXJUb3BSaWdodFJhZGl1cywgJlJl
bmRlclN0eWxlOjpzZXRCb3JkZXJUb3BSaWdodFJhZGl1cyksCiAgICAgICAgIG5ldyBMZW5ndGhQ
cm9wZXJ0eVdyYXBwZXI8TGVuZ3RoU2l6ZT4oQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFk
aXVzLCAmUmVuZGVyU3R5bGU6OmJvcmRlckJvdHRvbUxlZnRSYWRpdXMsICZSZW5kZXJTdHlsZTo6
c2V0Qm9yZGVyQm90dG9tTGVmdFJhZGl1cyksCiAgICAgICAgIG5ldyBMZW5ndGhQcm9wZXJ0eVdy
YXBwZXI8TGVuZ3RoU2l6ZT4oQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1cywgJlJl
bmRlclN0eWxlOjpib3JkZXJCb3R0b21SaWdodFJhZGl1cywgJlJlbmRlclN0eWxlOjpzZXRCb3Jk
ZXJCb3R0b21SaWdodFJhZGl1cyksCi0gICAgICAgIG5ldyBQcm9wZXJ0eVdyYXBwZXI8RVZpc2li
aWxpdHk+KENTU1Byb3BlcnR5VmlzaWJpbGl0eSwgJlJlbmRlclN0eWxlOjp2aXNpYmlsaXR5LCAm
UmVuZGVyU3R5bGU6OnNldFZpc2liaWxpdHkpLAorICAgICAgICBuZXcgUHJvcGVydHlXcmFwcGVy
PFZpc2liaWxpdHk+KENTU1Byb3BlcnR5VmlzaWJpbGl0eSwgJlJlbmRlclN0eWxlOjp2aXNpYmls
aXR5LCAmUmVuZGVyU3R5bGU6OnNldFZpc2liaWxpdHkpLAogICAgICAgICBuZXcgUHJvcGVydHlX
cmFwcGVyPGZsb2F0PihDU1NQcm9wZXJ0eVpvb20sICZSZW5kZXJTdHlsZTo6em9vbSwgJlJlbmRl
clN0eWxlOjpzZXRab29tV2l0aG91dFJldHVyblZhbHVlKSwKIAogICAgICAgICBuZXcgTGVuZ3Ro
UHJvcGVydHlXcmFwcGVyPExlbmd0aEJveD4oQ1NTUHJvcGVydHlDbGlwLCAmUmVuZGVyU3R5bGU6
OmNsaXAsICZSZW5kZXJTdHlsZTo6c2V0Q2xpcCksCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAJKHJldmlzaW9uIDIz
MjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIENvbXBvc2l0ZUFu
aW1hdGlvbjo6dXBkYXRlVHJhbnNpdGlvCiAgICAgICAgICAgICAgICAgICAgIC8vIEFkZCB0aGUg
bmV3IHRyYW5zaXRpb24KICAgICAgICAgICAgICAgICAgICAgYXV0byBpbXBsaWNpdEFuaW1hdGlv
biA9IEltcGxpY2l0QW5pbWF0aW9uOjpjcmVhdGUoYW5pbWF0aW9uLCBwcm9wLCBlbGVtZW50LCAq
dGhpcywgbW9kaWZpZWRDdXJyZW50U3R5bGUgPyAqbW9kaWZpZWRDdXJyZW50U3R5bGUgOiAqZnJv
bVN0eWxlKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fc3VzcGVuZGVkICYmIGltcGxpY2l0
QW5pbWF0aW9uLT5oYXNTdHlsZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgaW1wbGljaXRB
bmltYXRpb24tPnVwZGF0ZVBsYXlTdGF0ZShBbmltUGxheVN0YXRlUGF1c2VkKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGltcGxpY2l0QW5pbWF0aW9uLT51cGRhdGVQbGF5U3RhdGUoQW5pbWF0
aW9uUGxheVN0YXRlOjpQYXVzZWQpOwogCiAgICAgICAgICAgICAgICAgICAgIExPRyhBbmltYXRp
b25zLCAiQ3JlYXRlZCBJbXBsaWNpdEFuaW1hdGlvbiAlcCBvbiBlbGVtZW50ICVwIGZvciBwcm9w
ZXJ0eSAlcyBkdXJhdGlvbiAlLjJmIGRlbGF5ICUuMmYiLCBpbXBsaWNpdEFuaW1hdGlvbi5wdHIo
KSwgJmVsZW1lbnQsIGdldFByb3BlcnR5TmFtZShwcm9wKSwgYW5pbWF0aW9uLmR1cmF0aW9uKCks
IGFuaW1hdGlvbi5kZWxheSgpKTsKICAgICAgICAgICAgICAgICAgICAgbV90cmFuc2l0aW9ucy5z
ZXQocHJvcCwgV1RGTW92ZShpbXBsaWNpdEFuaW1hdGlvbikpOwpAQCAtMjUzLDcgKzI1Myw3IEBA
IHZvaWQgQ29tcG9zaXRlQW5pbWF0aW9uOjp1cGRhdGVLZXlmcmFtZUEKICAgICAgICAgICAgICAg
ICBMT0coQW5pbWF0aW9ucywgIkNyZWF0aW5nIEtleWZyYW1lQW5pbWF0aW9uICVwIG9uIGVsZW1l
bnQgJXAgd2l0aCBrZXlmcmFtZXMgJXMsIGR1cmF0aW9uICUuMmYsIGRlbGF5ICUuMmYsIGl0ZXJh
dGlvbnMgJS4yZiIsIGtleWZyYW1lQW5pbS5nZXQoKSwgJmVsZW1lbnQsIGFuaW1hdGlvbi5uYW1l
KCkudXRmOCgpLmRhdGEoKSwgYW5pbWF0aW9uLmR1cmF0aW9uKCksIGFuaW1hdGlvbi5kZWxheSgp
LCBhbmltYXRpb24uaXRlcmF0aW9uQ291bnQoKSk7CiAKICAgICAgICAgICAgICAgICBpZiAobV9z
dXNwZW5kZWQpIHsKLSAgICAgICAgICAgICAgICAgICAga2V5ZnJhbWVBbmltLT51cGRhdGVQbGF5
U3RhdGUoQW5pbVBsYXlTdGF0ZVBhdXNlZCk7CisgICAgICAgICAgICAgICAgICAgIGtleWZyYW1l
QW5pbS0+dXBkYXRlUGxheVN0YXRlKEFuaW1hdGlvblBsYXlTdGF0ZTo6UGF1c2VkKTsKICAgICAg
ICAgICAgICAgICAgICAgTE9HKEFuaW1hdGlvbnMsICIgIChjcmVhdGVkIGluIHN1c3BlbmRlZC9w
YXVzZWQgc3RhdGUpIik7CiAgICAgICAgICAgICAgICAgfQogI2lmICFMT0dfRElTQUJMRUQKQEAg
LTQ2NCwxMyArNDY0LDEzIEBAIHZvaWQgQ29tcG9zaXRlQW5pbWF0aW9uOjpzdXNwZW5kQW5pbWF0
aW8KICAgICBpZiAoIW1fa2V5ZnJhbWVBbmltYXRpb25zLmlzRW1wdHkoKSkgewogICAgICAgICBt
X2tleWZyYW1lQW5pbWF0aW9ucy5jaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgICAgIGZvciAoYXV0
byYgYW5pbWF0aW9uIDogbV9rZXlmcmFtZUFuaW1hdGlvbnMudmFsdWVzKCkpCi0gICAgICAgICAg
ICBhbmltYXRpb24tPnVwZGF0ZVBsYXlTdGF0ZShBbmltUGxheVN0YXRlUGF1c2VkKTsKKyAgICAg
ICAgICAgIGFuaW1hdGlvbi0+dXBkYXRlUGxheVN0YXRlKEFuaW1hdGlvblBsYXlTdGF0ZTo6UGF1
c2VkKTsKICAgICB9CiAKICAgICBpZiAoIW1fdHJhbnNpdGlvbnMuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIGZvciAoYXV0byYgdHJhbnNpdGlvbiA6IG1fdHJhbnNpdGlvbnMudmFsdWVzKCkpIHsKICAg
ICAgICAgICAgIGlmICh0cmFuc2l0aW9uLT5oYXNTdHlsZSgpKQotICAgICAgICAgICAgICAgIHRy
YW5zaXRpb24tPnVwZGF0ZVBsYXlTdGF0ZShBbmltUGxheVN0YXRlUGF1c2VkKTsKKyAgICAgICAg
ICAgICAgICB0cmFuc2l0aW9uLT51cGRhdGVQbGF5U3RhdGUoQW5pbWF0aW9uUGxheVN0YXRlOjpQ
YXVzZWQpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNDg2LDE0ICs0ODYsMTQgQEAgdm9pZCBD
b21wb3NpdGVBbmltYXRpb246OnJlc3VtZUFuaW1hdGlvbgogICAgICAgICBtX2tleWZyYW1lQW5p
bWF0aW9ucy5jaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgICAgIGZvciAoYXV0byYgYW5pbWF0aW9u
IDogbV9rZXlmcmFtZUFuaW1hdGlvbnMudmFsdWVzKCkpIHsKICAgICAgICAgICAgIGlmIChhbmlt
YXRpb24tPnBsYXlTdGF0ZVBsYXlpbmcoKSkKLSAgICAgICAgICAgICAgICBhbmltYXRpb24tPnVw
ZGF0ZVBsYXlTdGF0ZShBbmltUGxheVN0YXRlUGxheWluZyk7CisgICAgICAgICAgICAgICAgYW5p
bWF0aW9uLT51cGRhdGVQbGF5U3RhdGUoQW5pbWF0aW9uUGxheVN0YXRlOjpQbGF5aW5nKTsKICAg
ICAgICAgfQogICAgIH0KIAogICAgIGlmICghbV90cmFuc2l0aW9ucy5pc0VtcHR5KCkpIHsKICAg
ICAgICAgZm9yIChhdXRvJiB0cmFuc2l0aW9uIDogbV90cmFuc2l0aW9ucy52YWx1ZXMoKSkgewog
ICAgICAgICAgICAgaWYgKHRyYW5zaXRpb24tPmhhc1N0eWxlKCkpCi0gICAgICAgICAgICAgICAg
dHJhbnNpdGlvbi0+dXBkYXRlUGxheVN0YXRlKEFuaW1QbGF5U3RhdGVQbGF5aW5nKTsKKyAgICAg
ICAgICAgICAgICB0cmFuc2l0aW9uLT51cGRhdGVQbGF5U3RhdGUoQW5pbWF0aW9uUGxheVN0YXRl
OjpQbGF5aW5nKTsKICAgICAgICAgfQogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAJKHJldmlzaW9uIDIz
MjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDkgKzE2Myw5IEBAIGJvb2wgS2V5ZnJhbWVBbmlt
YXRpb246OmFuaW1hdGUoQ29tcG9zaXQKICAgICAKICAgICAvLyBJZiB3ZSBoYXZlIG5vdCB5ZXQg
c3RhcnRlZCwgd2Ugd2lsbCBub3QgaGF2ZSBhIHZhbGlkIHN0YXJ0IHRpbWUsIHNvIGp1c3Qgc3Rh
cnQgdGhlIGFuaW1hdGlvbiBpZiBuZWVkZWQuCiAgICAgaWYgKGlzTmV3KCkpIHsKLSAgICAgICAg
aWYgKG1fYW5pbWF0aW9uLT5wbGF5U3RhdGUoKSA9PSBBbmltUGxheVN0YXRlUGxheWluZyAmJiAh
Y29tcG9zaXRlQW5pbWF0aW9uLmlzU3VzcGVuZGVkKCkpCisgICAgICAgIGlmIChtX2FuaW1hdGlv
bi0+cGxheVN0YXRlKCkgPT0gQW5pbWF0aW9uUGxheVN0YXRlOjpQbGF5aW5nICYmICFjb21wb3Np
dGVBbmltYXRpb24uaXNTdXNwZW5kZWQoKSkKICAgICAgICAgICAgIHVwZGF0ZVN0YXRlTWFjaGlu
ZShBbmltYXRpb25TdGF0ZUlucHV0OjpTdGFydEFuaW1hdGlvbiwgLTEpOwotICAgICAgICBlbHNl
IGlmIChtX2FuaW1hdGlvbi0+cGxheVN0YXRlKCkgPT0gQW5pbVBsYXlTdGF0ZVBhdXNlZCkKKyAg
ICAgICAgZWxzZSBpZiAobV9hbmltYXRpb24tPnBsYXlTdGF0ZSgpID09IEFuaW1hdGlvblBsYXlT
dGF0ZTo6UGF1c2VkKQogICAgICAgICAgICAgdXBkYXRlU3RhdGVNYWNoaW5lKEFuaW1hdGlvblN0
YXRlSW5wdXQ6OlBsYXlTdGF0ZVBhdXNlZCwgLTEpOwogICAgIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9pb3MvRnJhbWVJT1MubW0JKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MTgsNyArNDE4LDcgQEAg
Tm9kZSogRnJhbWU6Om5vZGVSZXNwb25kaW5nVG9DbGlja0V2ZW50cwogICAgICAgICAgICAgICAg
IHBvaW50ZXJDdXJzb3JTdGlsbFZhbGlkID0gZmFsc2U7CiAKICAgICAgICAgICAgIC8vIElmIHdl
IGhhdmVuJ3QgcmVhY2hlZCB0aGUgYm9keSwgYW5kIHdlIGFyZSBzdGlsbCBwYXlpbmcgYXR0ZW50
aW9uIHRvIHBvaW50ZXIgY3Vyc29ycywgYW5kIHRoZSBub2RlIGhhcyBhIHBvaW50ZXIgY3Vyc29y
Li4uCi0gICAgICAgICAgICBpZiAocG9pbnRlckN1cnNvclN0aWxsVmFsaWQgJiYgbm9kZS0+cmVu
ZGVyU3R5bGUoKSAmJiBub2RlLT5yZW5kZXJTdHlsZSgpLT5jdXJzb3IoKSA9PSBDdXJzb3JQb2lu
dGVyKQorICAgICAgICAgICAgaWYgKHBvaW50ZXJDdXJzb3JTdGlsbFZhbGlkICYmIG5vZGUtPnJl
bmRlclN0eWxlKCkgJiYgbm9kZS0+cmVuZGVyU3R5bGUoKS0+Y3Vyc29yKCkgPT0gQ3Vyc29yVHlw
ZTo6UG9pbnRlcikKICAgICAgICAgICAgICAgICBwb2ludGVyQ3Vyc29yTm9kZSA9IG5vZGU7CiAg
ICAgICAgICAgICAvLyBXZSB3YW50IHRoZSBsb3dlc3QgdW5icm9rZW4gY2hhaW4gb2YgcG9pbnRl
ciBjdXJzb3JzLgogICAgICAgICAgICAgZWxzZSBpZiAocG9pbnRlckN1cnNvck5vZGUpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmNwcAko
cmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0Fu
aW1hdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDggKzM4LDggQEAgQW5pbWF0aW9uOjpB
bmltYXRpb24oKQogICAgICwgbV90cmlnZ2VyKGluaXRpYWxUcmlnZ2VyKCkpCiAjZW5kaWYKICAg
ICAsIG1fZGlyZWN0aW9uKGluaXRpYWxEaXJlY3Rpb24oKSkKLSAgICAsIG1fZmlsbE1vZGUoaW5p
dGlhbEZpbGxNb2RlKCkpCi0gICAgLCBtX3BsYXlTdGF0ZShpbml0aWFsUGxheVN0YXRlKCkpCisg
ICAgLCBtX2ZpbGxNb2RlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsRmlsbE1vZGUoKSkp
CisgICAgLCBtX3BsYXlTdGF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbFBsYXlTdGF0
ZSgpKSkKICAgICAsIG1fZGVsYXlTZXQoZmFsc2UpCiAgICAgLCBtX2RpcmVjdGlvblNldChmYWxz
ZSkKICAgICAsIG1fZHVyYXRpb25TZXQoZmFsc2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5oCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJGaWxsTW9kZSgpIHsgbV9m
aWxsTW9kZVNldCA9IGZhbHNlOyB9CiAgICAgdm9pZCBjbGVhckl0ZXJhdGlvbkNvdW50KCkgeyBt
X2l0ZXJhdGlvbkNvdW50U2V0ID0gZmFsc2U7IH0KICAgICB2b2lkIGNsZWFyTmFtZSgpIHsgbV9u
YW1lU2V0ID0gZmFsc2U7IH0KLSAgICB2b2lkIGNsZWFyUGxheVN0YXRlKCkgeyBtX3BsYXlTdGF0
ZVNldCA9IEFuaW1QbGF5U3RhdGVQbGF5aW5nOyB9CisgICAgdm9pZCBjbGVhclBsYXlTdGF0ZSgp
IHsgbV9wbGF5U3RhdGVTZXQgPSBmYWxzZTsgfQogICAgIHZvaWQgY2xlYXJQcm9wZXJ0eSgpIHsg
bV9wcm9wZXJ0eVNldCA9IGZhbHNlOyB9CiAgICAgdm9pZCBjbGVhclRpbWluZ0Z1bmN0aW9uKCkg
eyBtX3RpbWluZ0Z1bmN0aW9uU2V0ID0gZmFsc2U7IH0KICNpZiBFTkFCTEUoQ1NTX0FOSU1BVElP
TlNfTEVWRUxfMikKQEAgLTEwOSw3ICsxMDksMTIgQEAgcHVibGljOgogCiAgICAgZG91YmxlIGRl
bGF5KCkgY29uc3QgeyByZXR1cm4gbV9kZWxheTsgfQogCi0gICAgZW51bSBBbmltYXRpb25Nb2Rl
IHsgQW5pbWF0ZUFsbCwgQW5pbWF0ZU5vbmUsIEFuaW1hdGVTaW5nbGVQcm9wZXJ0eSwgQW5pbWF0
ZVVua25vd25Qcm9wZXJ0eSB9OworICAgIGVudW0gQW5pbWF0aW9uTW9kZSB7CisgICAgICAgIEFu
aW1hdGVBbGwsCisgICAgICAgIEFuaW1hdGVOb25lLAorICAgICAgICBBbmltYXRlU2luZ2xlUHJv
cGVydHksCisgICAgICAgIEFuaW1hdGVVbmtub3duUHJvcGVydHkKKyAgICB9OwogCiAgICAgZW51
bSBBbmltYXRpb25EaXJlY3Rpb24gewogICAgICAgICBBbmltYXRpb25EaXJlY3Rpb25Ob3JtYWws
CkBAIC0xMTcsMTAgKzEyMiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIEFuaW1hdGlvbkRpcmVjdGlv
blJldmVyc2UsCiAgICAgICAgIEFuaW1hdGlvbkRpcmVjdGlvbkFsdGVybmF0ZVJldmVyc2UKICAg
ICB9OworCiAgICAgQW5pbWF0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEFuaW1hdGlvbkRpcmVjdGlvbj4obV9kaXJlY3Rpb24pOyB9CiAgICAgYm9v
bCBkaXJlY3Rpb25Jc0ZvcndhcmRzKCkgY29uc3QgeyByZXR1cm4gbV9kaXJlY3Rpb24gPT0gQW5p
bWF0aW9uRGlyZWN0aW9uTm9ybWFsIHx8IG1fZGlyZWN0aW9uID09IEFuaW1hdGlvbkRpcmVjdGlv
bkFsdGVybmF0ZTsgfQogCi0gICAgdW5zaWduZWQgZmlsbE1vZGUoKSBjb25zdCB7IHJldHVybiBt
X2ZpbGxNb2RlOyB9CisgICAgQW5pbWF0aW9uRmlsbE1vZGUgZmlsbE1vZGUoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxBbmltYXRpb25GaWxsTW9kZT4obV9maWxsTW9kZSk7IH0KIAogICAg
IGRvdWJsZSBkdXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KIApAQCAtMTI4
LDcgKzEzNCw3IEBAIHB1YmxpYzoKICAgICBkb3VibGUgaXRlcmF0aW9uQ291bnQoKSBjb25zdCB7
IHJldHVybiBtX2l0ZXJhdGlvbkNvdW50OyB9CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgU3R5bGU6OlNjb3BlT3JkaW5hbCBuYW1lU3R5bGVT
Y29wZU9yZGluYWwoKSBjb25zdCB7IHJldHVybiBtX25hbWVTdHlsZVNjb3BlT3JkaW5hbDsgfQot
ICAgIEVBbmltUGxheVN0YXRlIHBsYXlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEVBbmltUGxheVN0YXRlPihtX3BsYXlTdGF0ZSk7IH0KKyAgICBBbmltYXRpb25QbGF5U3RhdGUg
cGxheVN0YXRlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QW5pbWF0aW9uUGxheVN0YXRl
PihtX3BsYXlTdGF0ZSk7IH0KICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KCkgY29uc3QgeyBy
ZXR1cm4gbV9wcm9wZXJ0eTsgfQogICAgIGNvbnN0IFN0cmluZyYgdW5rbm93blByb3BlcnR5KCkg
Y29uc3QgeyByZXR1cm4gbV91bmtub3duUHJvcGVydHk7IH0KICAgICBUaW1pbmdGdW5jdGlvbiog
dGltaW5nRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3RpbWluZ0Z1bmN0aW9uLmdldCgpOyB9
CkBAIC0xNDAsNyArMTQ2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RGVsYXkoZG91YmxlIGMp
IHsgbV9kZWxheSA9IGM7IG1fZGVsYXlTZXQgPSB0cnVlOyB9CiAgICAgdm9pZCBzZXREaXJlY3Rp
b24oQW5pbWF0aW9uRGlyZWN0aW9uIGQpIHsgbV9kaXJlY3Rpb24gPSBkOyBtX2RpcmVjdGlvblNl
dCA9IHRydWU7IH0KICAgICB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSBkKSB7IEFTU0VSVChkID49
IDApOyBtX2R1cmF0aW9uID0gZDsgbV9kdXJhdGlvblNldCA9IHRydWU7IH0KLSAgICB2b2lkIHNl
dEZpbGxNb2RlKHVuc2lnbmVkIGYpIHsgbV9maWxsTW9kZSA9IGY7IG1fZmlsbE1vZGVTZXQgPSB0
cnVlOyB9CisgICAgdm9pZCBzZXRGaWxsTW9kZShBbmltYXRpb25GaWxsTW9kZSBmKSB7IG1fZmls
bE1vZGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZik7IG1fZmlsbE1vZGVTZXQgPSB0cnVlOyB9
CiAgICAgdm9pZCBzZXRJdGVyYXRpb25Db3VudChkb3VibGUgYykgeyBtX2l0ZXJhdGlvbkNvdW50
ID0gYzsgbV9pdGVyYXRpb25Db3VudFNldCA9IHRydWU7IH0KICAgICB2b2lkIHNldE5hbWUoY29u
c3QgU3RyaW5nJiBuYW1lLCBTdHlsZTo6U2NvcGVPcmRpbmFsIHNjb3BlID0gU3R5bGU6OlNjb3Bl
T3JkaW5hbDo6RWxlbWVudCkKICAgICB7CkBAIC0xNDgsNyArMTU0LDcgQEAgcHVibGljOgogICAg
ICAgICBtX25hbWVTdHlsZVNjb3BlT3JkaW5hbCA9IHNjb3BlOwogICAgICAgICBtX25hbWVTZXQg
PSB0cnVlOwogICAgIH0KLSAgICB2b2lkIHNldFBsYXlTdGF0ZShFQW5pbVBsYXlTdGF0ZSBkKSB7
IG1fcGxheVN0YXRlID0gZDsgbV9wbGF5U3RhdGVTZXQgPSB0cnVlOyB9CisgICAgdm9pZCBzZXRQ
bGF5U3RhdGUoQW5pbWF0aW9uUGxheVN0YXRlIGQpIHsgbV9wbGF5U3RhdGUgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oZCk7IG1fcGxheVN0YXRlU2V0ID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0UHJv
cGVydHkoQ1NTUHJvcGVydHlJRCB0KSB7IG1fcHJvcGVydHkgPSB0OyBtX3Byb3BlcnR5U2V0ID0g
dHJ1ZTsgfQogICAgIHZvaWQgc2V0VW5rbm93blByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVy
dHkpIHsgbV91bmtub3duUHJvcGVydHkgPSBwcm9wZXJ0eTsgfQogICAgIHZvaWQgc2V0VGltaW5n
RnVuY3Rpb24oUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiYmIGZ1bmN0aW9uKSB7IG1fdGltaW5nRnVu
Y3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKTsgbV90aW1pbmdGdW5jdGlvblNldCA9IHRydWU7IH0K
QEAgLTE2OCw4ICsxNzQsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFu
aW1hdGlvbiYgbykgY29uc3QgeyByZXR1cm4gYW5pbWF0aW9uc01hdGNoKG8pOyB9CiAgICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IEFuaW1hdGlvbiYgbykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9
PSBvKTsgfQogCi0gICAgYm9vbCBmaWxsc0JhY2t3YXJkcygpIGNvbnN0IHsgcmV0dXJuIG1fZmls
bE1vZGVTZXQgJiYgKG1fZmlsbE1vZGUgPT0gQW5pbWF0aW9uRmlsbE1vZGVCYWNrd2FyZHMgfHwg
bV9maWxsTW9kZSA9PSBBbmltYXRpb25GaWxsTW9kZUJvdGgpOyB9Ci0gICAgYm9vbCBmaWxsc0Zv
cndhcmRzKCkgY29uc3QgeyByZXR1cm4gbV9maWxsTW9kZVNldCAmJiAobV9maWxsTW9kZSA9PSBB
bmltYXRpb25GaWxsTW9kZUZvcndhcmRzIHx8IG1fZmlsbE1vZGUgPT0gQW5pbWF0aW9uRmlsbE1v
ZGVCb3RoKTsgfQorICAgIGJvb2wgZmlsbHNCYWNrd2FyZHMoKSBjb25zdCB7IHJldHVybiBtX2Zp
bGxNb2RlU2V0ICYmIChmaWxsTW9kZSgpID09IEFuaW1hdGlvbkZpbGxNb2RlOjpCYWNrd2FyZHMg
fHwgZmlsbE1vZGUoKSA9PSBBbmltYXRpb25GaWxsTW9kZTo6Qm90aCk7IH0KKyAgICBib29sIGZp
bGxzRm9yd2FyZHMoKSBjb25zdCB7IHJldHVybiBtX2ZpbGxNb2RlU2V0ICYmIChmaWxsTW9kZSgp
ID09IEFuaW1hdGlvbkZpbGxNb2RlOjpGb3J3YXJkcyB8fCBmaWxsTW9kZSgpID09IEFuaW1hdGlv
bkZpbGxNb2RlOjpCb3RoKTsgfQogCiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIEFuaW1h
dGlvbigpOwpAQCAtMjEyLDEwICsyMTgsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBkb3VibGUg
aW5pdGlhbERlbGF5KCkgeyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBBbmltYXRpb25EaXJlY3Rp
b24gaW5pdGlhbERpcmVjdGlvbigpIHsgcmV0dXJuIEFuaW1hdGlvbkRpcmVjdGlvbk5vcm1hbDsg
fQogICAgIHN0YXRpYyBkb3VibGUgaW5pdGlhbER1cmF0aW9uKCkgeyByZXR1cm4gMDsgfQotICAg
IHN0YXRpYyB1bnNpZ25lZCBpbml0aWFsRmlsbE1vZGUoKSB7IHJldHVybiBBbmltYXRpb25GaWxs
TW9kZU5vbmU7IH0KKyAgICBzdGF0aWMgQW5pbWF0aW9uRmlsbE1vZGUgaW5pdGlhbEZpbGxNb2Rl
KCkgeyByZXR1cm4gQW5pbWF0aW9uRmlsbE1vZGU6Ok5vbmU7IH0KICAgICBzdGF0aWMgZG91Ymxl
IGluaXRpYWxJdGVyYXRpb25Db3VudCgpIHsgcmV0dXJuIDEuMDsgfQogICAgIHN0YXRpYyBjb25z
dCBTdHJpbmcmIGluaXRpYWxOYW1lKCk7Ci0gICAgc3RhdGljIEVBbmltUGxheVN0YXRlIGluaXRp
YWxQbGF5U3RhdGUoKSB7IHJldHVybiBBbmltUGxheVN0YXRlUGxheWluZzsgfQorICAgIHN0YXRp
YyBBbmltYXRpb25QbGF5U3RhdGUgaW5pdGlhbFBsYXlTdGF0ZSgpIHsgcmV0dXJuIEFuaW1hdGlv
blBsYXlTdGF0ZTo6UGxheWluZzsgfQogICAgIHN0YXRpYyBDU1NQcm9wZXJ0eUlEIGluaXRpYWxQ
cm9wZXJ0eSgpIHsgcmV0dXJuIENTU1Byb3BlcnR5SW52YWxpZDsgfQogICAgIHN0YXRpYyBSZWY8
VGltaW5nRnVuY3Rpb24+IGluaXRpYWxUaW1pbmdGdW5jdGlvbigpIHsgcmV0dXJuIEN1YmljQmV6
aWVyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgpOyB9CiAjaWYgRU5BQkxFKENTU19BTklNQVRJT05T
X0xFVkVMXzIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c1R5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NUeXBlcy5oCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDE1ICs4
Niw0MCBAQCBlbnVtIEludGVycG9sYXRpb25RdWFsaXR5IHsKICAgICBJbnRlcnBvbGF0aW9uSGln
aAogfTsKIAotZW51bSBMaW5lQ2FwIHsgQnV0dENhcCwgUm91bmRDYXAsIFNxdWFyZUNhcCB9Owor
ZW51bSBMaW5lQ2FwIHsKKyAgICBCdXR0Q2FwLAorICAgIFJvdW5kQ2FwLAorICAgIFNxdWFyZUNh
cAorfTsKIAotZW51bSBMaW5lSm9pbiB7IE1pdGVySm9pbiwgUm91bmRKb2luLCBCZXZlbEpvaW4g
fTsKK2VudW0gTGluZUpvaW4geworICAgIE1pdGVySm9pbiwKKyAgICBSb3VuZEpvaW4sCisgICAg
QmV2ZWxKb2luCit9OwogCi1lbnVtIEhvcml6b250YWxBbGlnbm1lbnQgeyBBbGlnbkxlZnQsIEFs
aWduUmlnaHQsIEFsaWduSENlbnRlciB9OworZW51bSBIb3Jpem9udGFsQWxpZ25tZW50IHsKKyAg
ICBBbGlnbkxlZnQsCisgICAgQWxpZ25SaWdodCwKKyAgICBBbGlnbkhDZW50ZXIKK307CiAKLWVu
dW0gVGV4dEJhc2VsaW5lIHsgQWxwaGFiZXRpY1RleHRCYXNlbGluZSwgVG9wVGV4dEJhc2VsaW5l
LCBNaWRkbGVUZXh0QmFzZWxpbmUsIEJvdHRvbVRleHRCYXNlbGluZSwgSWRlb2dyYXBoaWNUZXh0
QmFzZWxpbmUsIEhhbmdpbmdUZXh0QmFzZWxpbmUgfTsKK2VudW0gVGV4dEJhc2VsaW5lIHsKKyAg
ICBBbHBoYWJldGljVGV4dEJhc2VsaW5lLAorICAgIFRvcFRleHRCYXNlbGluZSwKKyAgICBNaWRk
bGVUZXh0QmFzZWxpbmUsCisgICAgQm90dG9tVGV4dEJhc2VsaW5lLAorICAgIElkZW9ncmFwaGlj
VGV4dEJhc2VsaW5lLAorICAgIEhhbmdpbmdUZXh0QmFzZWxpbmUKK307CiAKLWVudW0gVGV4dEFs
aWduIHsgU3RhcnRUZXh0QWxpZ24sIEVuZFRleHRBbGlnbiwgTGVmdFRleHRBbGlnbiwgQ2VudGVy
VGV4dEFsaWduLCBSaWdodFRleHRBbGlnbiB9OworZW51bSBUZXh0QWxpZ24geworICAgIFN0YXJ0
VGV4dEFsaWduLAorICAgIEVuZFRleHRBbGlnbiwKKyAgICBMZWZ0VGV4dEFsaWduLAorICAgIENl
bnRlclRleHRBbGlnbiwKKyAgICBSaWdodFRleHRBbGlnbgorfTsKIAogZW51bSBSZW5kZXJpbmdN
b2RlIHsKICAgICBVbmFjY2VsZXJhdGVkLApAQCAtMTEyLDEyICsxMzcsNiBAQCBTdHJpbmcgYmxl
bmRNb2RlTmFtZShCbGVuZE1vZGUpOwogYm9vbCBwYXJzZUJsZW5kTW9kZShjb25zdCBTdHJpbmcm
LCBCbGVuZE1vZGUmKTsKIGJvb2wgcGFyc2VDb21wb3NpdGVBbmRCbGVuZE9wZXJhdG9yKGNvbnN0
IFN0cmluZyYsIENvbXBvc2l0ZU9wZXJhdG9yJiwgQmxlbmRNb2RlJik7CiAKLVN0cmluZyB0ZXh0
QWxpZ25OYW1lKFRleHRBbGlnbik7Ci1ib29sIHBhcnNlVGV4dEFsaWduKGNvbnN0IFN0cmluZyYs
IFRleHRBbGlnbiYpOwotCi1TdHJpbmcgdGV4dEJhc2VsaW5lTmFtZShUZXh0QmFzZWxpbmUpOwot
Ym9vbCBwYXJzZVRleHRCYXNlbGluZShjb25zdCBTdHJpbmcmLCBUZXh0QmFzZWxpbmUmKTsKLQog
V0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVh
bSYsIEJsZW5kTW9kZSk7CiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoV1RGOjpUZXh0U3RyZWFtJiwgQ29tcG9zaXRlT3BlcmF0b3IpOwogV0VCQ09SRV9FWFBPUlQg
V1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFdpbmRSdWxlKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzE4NywxNiArMzE4NywxNiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0dXBBbmltYXRp
b24oUGxhCiAKICAgICBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpGaWxsTW9kZVR5cGUgZmlsbE1vZGUg
PSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpOb0ZpbGxNb2RlOwogICAgIHN3aXRjaCAoYW5pbS0+Zmls
bE1vZGUoKSkgewotICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGVOb25lOgorICAgIGNhc2UgQW5p
bWF0aW9uRmlsbE1vZGU6Ok5vbmU6CiAgICAgICAgIGZpbGxNb2RlID0gUGxhdGZvcm1DQUFuaW1h
dGlvbjo6Rm9yd2FyZHM7IC8vIFVzZSAiZm9yd2FyZHMiIHJhdGhlciB0aGFuICJyZW1vdmVkIiBi
ZWNhdXNlIHRoZSBzdHlsZSBzeXN0ZW0gd2lsbCByZW1vdmUgdGhlIGFuaW1hdGlvbiB3aGVuIGl0
IGlzIGZpbmlzaGVkLiBUaGlzIGF2b2lkcyBhIGZsYXNoLgogICAgICAgICBicmVhazsKLSAgICBj
YXNlIEFuaW1hdGlvbkZpbGxNb2RlQmFja3dhcmRzOgorICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1v
ZGU6OkJhY2t3YXJkczoKICAgICAgICAgZmlsbE1vZGUgPSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpC
b3RoOyAvLyBVc2UgImJvdGgiIHJhdGhlciB0aGFuICJiYWNrd2FyZHMiIGJlY2F1c2UgdGhlIHN0
eWxlIHN5c3RlbSB3aWxsIHJlbW92ZSB0aGUgYW5pbWF0aW9uIHdoZW4gaXQgaXMgZmluaXNoZWQu
IFRoaXMgYXZvaWRzIGEgZmxhc2guCiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQW5pbWF0aW9u
RmlsbE1vZGVGb3J3YXJkczoKKyAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlOjpGb3J3YXJkczoK
ICAgICAgICAgZmlsbE1vZGUgPSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpGb3J3YXJkczsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBBbmltYXRpb25GaWxsTW9kZUJvdGg6CisgICAgY2FzZSBBbmlt
YXRpb25GaWxsTW9kZTo6Qm90aDoKICAgICAgICAgZmlsbE1vZGUgPSBQbGF0Zm9ybUNBQW5pbWF0
aW9uOjpCb3RoOwogICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3Mvd2FrL1dBS1dpbmRvdy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1dpbmRvdy5tbQkocmV2aXNpb24gMjMyMTQzKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5kb3cubW0JKHdvcmtpbmcgY29weSkK
QEAgLTY4Miw3ICs2ODIsNyBAQCAtICh2b2lkKWR1bXBUaWxlcwogICAgIENHUmVjdCBzYXZlZEZy
b3plblZpc2libGVSZWN0ID0gX2Zyb3plblZpc2libGVSZWN0OwogICAgIE5TTG9nKEAiPT09PT09
PT09PT09PT09PT0iKTsKICAgICBpZiAoIUNHUmVjdElzTnVsbChfZnJvemVuVmlzaWJsZVJlY3Qp
KSB7Ci0gICAgICAgIE5TTG9nKEAiVklTSUJMRSBSRUNUIElTIENBQ0hFRDogWyU2LjFmICU2LjFm
ICU2LjFmICU2LjFmXSIsIF9mcm96ZW5WaXNpYmxlUmVjdC5vcmlnaW4ueCwgX2Zyb3plblZpc2li
bGVSZWN0Lm9yaWdpbi55LCBfZnJvemVuVmlzaWJsZVJlY3Quc2l6ZS53aWR0aCwgX2Zyb3plblZp
c2libGVSZWN0LnNpemUuaGVpZ2h0KTsKKyAgICAgICAgTlNMb2coQCJWaXNpYmlsaXR5OjpWaXNp
YmxlIFJFQ1QgSVMgQ0FDSEVEOiBbJTYuMWYgJTYuMWYgJTYuMWYgJTYuMWZdIiwgX2Zyb3plblZp
c2libGVSZWN0Lm9yaWdpbi54LCBfZnJvemVuVmlzaWJsZVJlY3Qub3JpZ2luLnksIF9mcm96ZW5W
aXNpYmxlUmVjdC5zaXplLndpZHRoLCBfZnJvemVuVmlzaWJsZVJlY3Quc2l6ZS5oZWlnaHQpOwog
ICAgICAgICBfZnJvemVuVmlzaWJsZVJlY3QgPSBDR1JlY3ROdWxsOwogICAgIH0KICAgICBDR1Jl
Y3QgdmlzaWJsZVJlY3QgPSBbc2VsZiB2aXNpYmxlUmVjdF07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0JKHJldmlzaW9uIDIz
MjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTE3Nyw4ICsxNzcsOCBAQCBzdGF0aWMgQk9PTCBpc0xvb2th
bGlrZUNoYXJhY3RlcihzdGQ6Om9wCiAgICAgICAgIGNhc2UgMHgyMzNGOiAvKiBBUEwgRlVOQ1RJ
T05BTCBTWU1CT0wgU0xBU0ggQkFSICovCiAgICAgICAgIGNhc2UgMHgyM0FFOiAvKiBJTlRFR1JB
TCBFWFRFTlNJT04gKi8KICAgICAgICAgY2FzZSAweDI0NEE6IC8qIE9DUiBET1VCTEUgQkFDS1NM
QVNIICovCi0gICAgICAgIGNhc2UgMHgyNTcxOiAvKiBCT1ggRFJBV0lOR1MgTElHSFQgRElBR09O
QUwgVVBQRVIgUklHSFQgVE8gTE9XRVIgTEVGVCAqLwotICAgICAgICBjYXNlIDB4MjU3MjogLyog
Qk9YIERSQVdJTkdTIExJR0hUIERJQUdPTkFMIFVQUEVSIExFRlQgVE8gTE9XRVIgUklHSFQgKi8K
KyAgICAgICAgY2FzZSAweDI1NzE6IC8qIERpc3BsYXlUeXBlOjpCb3ggRFJBV0lOR1MgTElHSFQg
RElBR09OQUwgVVBQRVIgUklHSFQgVE8gTE9XRVIgTEVGVCAqLworICAgICAgICBjYXNlIDB4MjU3
MjogLyogRGlzcGxheVR5cGU6OkJveCBEUkFXSU5HUyBMSUdIVCBESUFHT05BTCBVUFBFUiBMRUZU
IFRPIExPV0VSIFJJR0hUICovCiAgICAgICAgIGNhc2UgMHgyOUY2OiAvKiBTT0xJRFVTIFdJVEgg
T1ZFUkJBUiAqLwogICAgICAgICBjYXNlIDB4MjlGODogLyogQklHIFNPTElEVVMgKi8KICAgICAg
ICAgY2FzZSAweDJBRkI6IC8qIFRSSVBMRSBTT0xJRFVTIEJJTkFSWSBSRUxBVElPTiAqLwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NsaXBQYXRoT3BlcmF0aW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NsaXBQYXRoT3BlcmF0aW9uLmgJKHJldmlz
aW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DbGlwUGF0aE9wZXJhdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICBleHBs
aWNpdCBTaGFwZUNsaXBQYXRoT3BlcmF0aW9uKFJlZjxCYXNpY1NoYXBlPiYmIHNoYXBlKQogICAg
ICAgICA6IENsaXBQYXRoT3BlcmF0aW9uKFNoYXBlKQogICAgICAgICAsIG1fc2hhcGUoV1RGTW92
ZShzaGFwZSkpCi0gICAgICAgICwgbV9yZWZlcmVuY2VCb3goQm94TWlzc2luZykKKyAgICAgICAg
LCBtX3JlZmVyZW5jZUJveChDU1NCb3hUeXBlOjpCb3hNaXNzaW5nKQogICAgIHsKICAgICB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmgJKHJldmlzaW9uIDIzMjE0MykK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guaAkod29ya2luZyBjb3B5KQpA
QCAtMjQxLDcgKzI0MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGludmFsaWRhdGVQYXJlbnRDaGls
ZExpc3QoKTsKICNlbmRpZgogCi0gICAgYm9vbCB2aXNpYmxlVG9IaXRUZXN0aW5nKCkgY29uc3Qg
eyByZXR1cm4gcmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFICYmIHJl
bmRlcmVyKCkuc3R5bGUoKS5wb2ludGVyRXZlbnRzKCkgIT0gUEVfTk9ORTsgfQorICAgIGJvb2wg
dmlzaWJsZVRvSGl0VGVzdGluZygpIGNvbnN0IHsgcmV0dXJuIHJlbmRlcmVyKCkuc3R5bGUoKS52
aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiByZW5kZXJlcigpLnN0eWxlKCku
cG9pbnRlckV2ZW50cygpICE9IFBvaW50ZXJFdmVudHM6Ok5vbmU7IH0KIAogICAgIGNvbnN0IFJl
bmRlclN0eWxlJiBsaW5lU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5maXJzdExp
bmUoKSA/IHJlbmRlcmVyKCkuZmlyc3RMaW5lU3R5bGUoKSA6IHJlbmRlcmVyKCkuc3R5bGUoKTsg
fQogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNw
cAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZs
b3dCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBJbmxpbmVG
bG93Qm94OjphZGRUb0xpbmUoSW5saW5lQm94KgogICAgICAgICAgICAgICAgICAgICB8fCAocGFy
ZW50U3R5bGUudmVydGljYWxBbGlnbigpICE9IFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lICYmICFp
c1Jvb3RJbmxpbmVCb3goKSkgfHwgY2hpbGRTdHlsZS52ZXJ0aWNhbEFsaWduKCkgIT0gVmVydGlj
YWxBbGlnbjo6QmFzZWxpbmUpCiAgICAgICAgICAgICAgICAgICAgIHNob3VsZENsZWFyRGVzY2Vu
ZGFudHNIYXZlU2FtZUxpbmVIZWlnaHRBbmRCYXNlbGluZSA9IHRydWU7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAoY2hpbGRTdHlsZS5oYXNUZXh0Q29tYmluZSgpIHx8IGNoaWxkU3R5
bGUudGV4dEVtcGhhc2lzTWFyaygpICE9IFRleHRFbXBoYXNpc01hcmtOb25lKQorICAgICAgICAg
ICAgaWYgKGNoaWxkU3R5bGUuaGFzVGV4dENvbWJpbmUoKSB8fCBjaGlsZFN0eWxlLnRleHRFbXBo
YXNpc01hcmsoKSAhPSBUZXh0RW1waGFzaXNNYXJrOjpOb25lKQogICAgICAgICAgICAgICAgIHNo
b3VsZENsZWFyRGVzY2VuZGFudHNIYXZlU2FtZUxpbmVIZWlnaHRBbmRCYXNlbGluZSA9IHRydWU7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoY2hpbGQtPnJlbmRlcmVyKCkuaXNM
aW5lQnJlYWsoKSkgewpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6YWRk
VG9MaW5lKElubGluZUJveCoKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGNoaWxkU3R5bGUg
PSBjaGlsZC0+bGluZVN0eWxlKCk7CiAgICAgICAgIGlmIChjaGlsZC0+YmVoYXZlc0xpa2VUZXh0
KCkpIHsKICAgICAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0gJmNoaWxk
LT5saW5lU3R5bGUoKTsKLSAgICAgICAgICAgIGlmIChjaGlsZFN0eWxlLT5sZXR0ZXJTcGFjaW5n
KCkgPCAwIHx8IGNoaWxkU3R5bGUtPnRleHRTaGFkb3coKSB8fCBjaGlsZFN0eWxlLT50ZXh0RW1w
aGFzaXNNYXJrKCkgIT0gVGV4dEVtcGhhc2lzTWFya05vbmUgfHwgY2hpbGRTdHlsZS0+aGFzUG9z
aXRpdmVTdHJva2VXaWR0aCgpKQorICAgICAgICAgICAgaWYgKGNoaWxkU3R5bGUtPmxldHRlclNw
YWNpbmcoKSA8IDAgfHwgY2hpbGRTdHlsZS0+dGV4dFNoYWRvdygpIHx8IGNoaWxkU3R5bGUtPnRl
eHRFbXBoYXNpc01hcmsoKSAhPSBUZXh0RW1waGFzaXNNYXJrOjpOb25lIHx8IGNoaWxkU3R5bGUt
Pmhhc1Bvc2l0aXZlU3Ryb2tlV2lkdGgoKSkKICAgICAgICAgICAgICAgICBjaGlsZC0+Y2xlYXJL
bm93blRvSGF2ZU5vT3ZlcmZsb3coKTsKICAgICAgICAgfSBlbHNlIGlmIChjaGlsZC0+cmVuZGVy
ZXIoKS5pc1JlcGxhY2VkKCkpIHsKICAgICAgICAgICAgIGNvbnN0IFJlbmRlckJveCYgYm94ID0g
ZG93bmNhc3Q8UmVuZGVyQm94PihjaGlsZC0+cmVuZGVyZXIoKSk7CkBAIC02ODQsNyArNjg0LDcg
QEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwbGFjZUJveGVzSW5CbG9ja0RpcgogICAgICAgICAgICAg
ICAgIC8vIFRyZWF0IHRoZSBsZWFkaW5nIG9uIHRoZSBmaXJzdCBhbmQgbGFzdCBsaW5lcyBvZiBy
dWJ5IHJ1bnMgYXMgbm90IGJlaW5nIHBhcnQgb2YgdGhlIG92ZXJhbGwgbGluZVRvcC9saW5lQm90
dG9tLgogICAgICAgICAgICAgICAgIC8vIFJlYWxseSB0aGlzIGlzIGEgd29ya2Fyb3VuZCBoYWNr
IGZvciB0aGUgZmFjdCB0aGF0IHJ1Ynkgc2hvdWxkIGhhdmUgYmVlbiBkb25lIGFzIGxpbmUgbGF5
b3V0IGFuZCBub3QgZG9uZSB1c2luZwogICAgICAgICAgICAgICAgIC8vIGlubGluZS1ibG9jay4K
LSAgICAgICAgICAgICAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLmlzRmxpcHBlZExpbmVzV3Jp
dGluZ01vZGUoKSA9PSAoY2hpbGQtPnJlbmRlcmVyKCkuc3R5bGUoKS5ydWJ5UG9zaXRpb24oKSA9
PSBSdWJ5UG9zaXRpb25BZnRlcikpCisgICAgICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkuc3R5
bGUoKS5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkgPT0gKGNoaWxkLT5yZW5kZXJlcigpLnN0
eWxlKCkucnVieVBvc2l0aW9uKCkgPT0gUnVieVBvc2l0aW9uOjpBZnRlcikpCiAgICAgICAgICAg
ICAgICAgICAgIGhhc0Fubm90YXRpb25zQmVmb3JlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgICAgIGhhc0Fubm90YXRpb25zQWZ0ZXIgPSB0cnVlOwpAQCAt
ODk1LDcgKzg5NSw3IEBAIGlubGluZSB2b2lkIElubGluZUZsb3dCb3g6OmFkZFRleHRCb3hWaXMK
ICAgICBpbnQgcmlnaHRHbHlwaE92ZXJmbG93ID0gc3Ryb2tlT3ZlcmZsb3cgKyByaWdodEdseXBo
RWRnZTsKIAogICAgIGJvb2wgZW1waGFzaXNNYXJrSXNBYm92ZTsKLSAgICBpZiAobGluZVN0eWxl
LnRleHRFbXBoYXNpc01hcmsoKSAhPSBUZXh0RW1waGFzaXNNYXJrTm9uZSAmJiB0ZXh0Qm94LmVt
cGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUobGluZVN0eWxlLCBlbXBoYXNpc01hcmtJc0Fib3Zl
KSkgeworICAgIGlmIChsaW5lU3R5bGUudGV4dEVtcGhhc2lzTWFyaygpICE9IFRleHRFbXBoYXNp
c01hcms6Ok5vbmUgJiYgdGV4dEJveC5lbXBoYXNpc01hcmtFeGlzdHNBbmRJc0Fib3ZlKGxpbmVT
dHlsZSwgZW1waGFzaXNNYXJrSXNBYm92ZSkpIHsKICAgICAgICAgaW50IGVtcGhhc2lzTWFya0hl
aWdodCA9IGxpbmVTdHlsZS5mb250Q2FzY2FkZSgpLmVtcGhhc2lzTWFya0hlaWdodChsaW5lU3R5
bGUudGV4dEVtcGhhc2lzTWFya1N0cmluZygpKTsKICAgICAgICAgaWYgKGVtcGhhc2lzTWFya0lz
QWJvdmUgPT0gIWxpbmVTdHlsZS5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkpCiAgICAgICAg
ICAgICB0b3BHbHlwaE92ZXJmbG93ID0gc3RkOjptaW4odG9wR2x5cGhPdmVyZmxvdywgLWVtcGhh
c2lzTWFya0hlaWdodCk7CkBAIC0xMTU1LDcgKzExNTUsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6
OnBhaW50KFBhaW50SW5mbyYgcGFpCiAgICAgICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFp
bnRQaGFzZU91dGxpbmUgfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VTZWxmT3V0bGlu
ZSkgewogICAgICAgICAgICAgLy8gQWRkIG91cnNlbHZlcyB0byB0aGUgcGFpbnQgaW5mbyBzdHJ1
Y3QncyBsaXN0IG9mIGlubGluZXMgdGhhdCBuZWVkIHRvIHBhaW50IHRoZWlyCiAgICAgICAgICAg
ICAvLyBvdXRsaW5lcy4KLSAgICAgICAgICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCkudmlzaWJp
bGl0eSgpID09IFZJU0lCTEUgJiYgcmVuZGVyZXIoKS5oYXNPdXRsaW5lKCkgJiYgIWlzUm9vdElu
bGluZUJveCgpKSB7CisgICAgICAgICAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxp
dHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmIHJlbmRlcmVyKCkuaGFzT3V0bGluZSgpICYm
ICFpc1Jvb3RJbmxpbmVCb3goKSkgewogICAgICAgICAgICAgICAgIFJlbmRlcklubGluZSYgaW5s
aW5lRmxvdyA9IGRvd25jYXN0PFJlbmRlcklubGluZT4ocmVuZGVyZXIoKSk7CiAKICAgICAgICAg
ICAgICAgICBSZW5kZXJCbG9jayogY29udGFpbmluZ0Jsb2NrID0gbnVsbHB0cjsKQEAgLTEzMzUs
NyArMTMzNSw3IEBAIHN0YXRpYyBMYXlvdXRSZWN0IGNsaXBSZWN0Rm9yTmluZVBpZWNlSW0KIAog
dm9pZCBJbmxpbmVGbG93Qm94OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7Ci0gICAgaWYgKCFwYWludElu
Zm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KHJlbmRlcmVyKCkpIHx8IHJlbmRlcmVyKCkuc3R5bGUo
KS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFz
ZUZvcmVncm91bmQpCisgICAgaWYgKCFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KHJl
bmRlcmVyKCkpIHx8IHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0
eTo6VmlzaWJsZSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIExheW91dFJlY3QgZnJhbWVSZWN0KHRoaXMtPmZyYW1lUmVj
dCgpKTsKQEAgLTE0MDcsNyArMTQwNyw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRCb3hE
ZWNvcmF0aW9ucygKIAogdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludE1hc2soUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKLSAgICBpZiAoIXBh
aW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QocmVuZGVyZXIoKSkgfHwgcmVuZGVyZXIoKS5z
dHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWlu
dFBoYXNlTWFzaykKKyAgICBpZiAoIXBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QocmVu
ZGVyZXIoKSkgfHwgcmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5
OjpWaXNpYmxlIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlTWFzaykKICAgICAgICAg
cmV0dXJuOwogCiAgICAgTGF5b3V0UmVjdCBmcmFtZVJlY3QodGhpcy0+ZnJhbWVSZWN0KCkpOwpA
QCAtMTU1Miw3ICsxNTUyLDcgQEAgTGF5b3V0VW5pdCBJbmxpbmVGbG93Qm94Ojpjb21wdXRlT3Zl
ckFubgogICAgICAgICBpZiAoaXM8SW5saW5lRmxvd0JveD4oKmNoaWxkKSkKICAgICAgICAgICAg
IHJlc3VsdCA9IHN0ZDo6bWF4KHJlc3VsdCwgZG93bmNhc3Q8SW5saW5lRmxvd0JveD4oKmNoaWxk
KS5jb21wdXRlT3ZlckFubm90YXRpb25BZGp1c3RtZW50KGFsbG93ZWRQb3NpdGlvbikpOwogICAg
ICAgICAKLSAgICAgICAgaWYgKGNoaWxkLT5yZW5kZXJlcigpLmlzUmVwbGFjZWQoKSAmJiBpczxS
ZW5kZXJSdWJ5UnVuPihjaGlsZC0+cmVuZGVyZXIoKSkgJiYgY2hpbGQtPnJlbmRlcmVyKCkuc3R5
bGUoKS5ydWJ5UG9zaXRpb24oKSA9PSBSdWJ5UG9zaXRpb25CZWZvcmUpIHsKKyAgICAgICAgaWYg
KGNoaWxkLT5yZW5kZXJlcigpLmlzUmVwbGFjZWQoKSAmJiBpczxSZW5kZXJSdWJ5UnVuPihjaGls
ZC0+cmVuZGVyZXIoKSkgJiYgY2hpbGQtPnJlbmRlcmVyKCkuc3R5bGUoKS5ydWJ5UG9zaXRpb24o
KSA9PSBSdWJ5UG9zaXRpb246OkJlZm9yZSkgewogICAgICAgICAgICAgYXV0byYgcnVieVJ1biA9
IGRvd25jYXN0PFJlbmRlclJ1YnlSdW4+KGNoaWxkLT5yZW5kZXJlcigpKTsKICAgICAgICAgICAg
IFJlbmRlclJ1YnlUZXh0KiBydWJ5VGV4dCA9IHJ1YnlSdW4ucnVieVRleHQoKTsKICAgICAgICAg
ICAgIGlmICghcnVieVRleHQpCkBAIC0xNTc2LDcgKzE1NzYsNyBAQCBMYXlvdXRVbml0IElubGlu
ZUZsb3dCb3g6OmNvbXB1dGVPdmVyQW5uCiAgICAgICAgIGlmIChpczxJbmxpbmVUZXh0Qm94Pigq
Y2hpbGQpKSB7CiAgICAgICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgY2hpbGRMaW5lU3R5bGUg
PSBjaGlsZC0+bGluZVN0eWxlKCk7CiAgICAgICAgICAgICBib29sIGVtcGhhc2lzTWFya0lzQWJv
dmU7Ci0gICAgICAgICAgICBpZiAoY2hpbGRMaW5lU3R5bGUudGV4dEVtcGhhc2lzTWFyaygpICE9
IFRleHRFbXBoYXNpc01hcmtOb25lICYmIGRvd25jYXN0PElubGluZVRleHRCb3g+KCpjaGlsZCku
ZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92ZShjaGlsZExpbmVTdHlsZSwgZW1waGFzaXNNYXJr
SXNBYm92ZSkgJiYgZW1waGFzaXNNYXJrSXNBYm92ZSkgeworICAgICAgICAgICAgaWYgKGNoaWxk
TGluZVN0eWxlLnRleHRFbXBoYXNpc01hcmsoKSAhPSBUZXh0RW1waGFzaXNNYXJrOjpOb25lICYm
IGRvd25jYXN0PElubGluZVRleHRCb3g+KCpjaGlsZCkuZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNB
Ym92ZShjaGlsZExpbmVTdHlsZSwgZW1waGFzaXNNYXJrSXNBYm92ZSkgJiYgZW1waGFzaXNNYXJr
SXNBYm92ZSkgewogICAgICAgICAgICAgICAgIGlmICghY2hpbGRMaW5lU3R5bGUuaXNGbGlwcGVk
TGluZXNXcml0aW5nTW9kZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGludCB0b3BPZkVtcGhh
c2lzTWFyayA9IGNoaWxkLT5sb2dpY2FsVG9wKCkgLSBjaGlsZExpbmVTdHlsZS5mb250Q2FzY2Fk
ZSgpLmVtcGhhc2lzTWFya0hlaWdodChjaGlsZExpbmVTdHlsZS50ZXh0RW1waGFzaXNNYXJrU3Ry
aW5nKCkpOwogICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1heChyZXN1bHQsIGFs
bG93ZWRQb3NpdGlvbiAtIHRvcE9mRW1waGFzaXNNYXJrKTsKQEAgLTE2MDAsNyArMTYwMCw3IEBA
IExheW91dFVuaXQgSW5saW5lRmxvd0JveDo6Y29tcHV0ZVVuZGVyQW4KICAgICAgICAgaWYgKGlz
PElubGluZUZsb3dCb3g+KCpjaGlsZCkpCiAgICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1heChy
ZXN1bHQsIGRvd25jYXN0PElubGluZUZsb3dCb3g+KCpjaGlsZCkuY29tcHV0ZVVuZGVyQW5ub3Rh
dGlvbkFkanVzdG1lbnQoYWxsb3dlZFBvc2l0aW9uKSk7CiAKLSAgICAgICAgaWYgKGNoaWxkLT5y
ZW5kZXJlcigpLmlzUmVwbGFjZWQoKSAmJiBpczxSZW5kZXJSdWJ5UnVuPihjaGlsZC0+cmVuZGVy
ZXIoKSkgJiYgY2hpbGQtPnJlbmRlcmVyKCkuc3R5bGUoKS5ydWJ5UG9zaXRpb24oKSA9PSBSdWJ5
UG9zaXRpb25BZnRlcikgeworICAgICAgICBpZiAoY2hpbGQtPnJlbmRlcmVyKCkuaXNSZXBsYWNl
ZCgpICYmIGlzPFJlbmRlclJ1YnlSdW4+KGNoaWxkLT5yZW5kZXJlcigpKSAmJiBjaGlsZC0+cmVu
ZGVyZXIoKS5zdHlsZSgpLnJ1YnlQb3NpdGlvbigpID09IFJ1YnlQb3NpdGlvbjo6QWZ0ZXIpIHsK
ICAgICAgICAgICAgIGF1dG8mIHJ1YnlSdW4gPSBkb3duY2FzdDxSZW5kZXJSdWJ5UnVuPihjaGls
ZC0+cmVuZGVyZXIoKSk7CiAgICAgICAgICAgICBSZW5kZXJSdWJ5VGV4dCogcnVieVRleHQgPSBy
dWJ5UnVuLnJ1YnlUZXh0KCk7CiAgICAgICAgICAgICBpZiAoIXJ1YnlUZXh0KQpAQCAtMTYyNSw3
ICsxNjI1LDcgQEAgTGF5b3V0VW5pdCBJbmxpbmVGbG93Qm94Ojpjb21wdXRlVW5kZXJBbgogICAg
ICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGNoaWxkTGluZVN0eWxlID0gY2hpbGQtPmxpbmVT
dHlsZSgpOwogICAgICAgICAgICAgYm9vbCBlbXBoYXNpc01hcmtJc0Fib3ZlOwogICAgICAgICAg
ICAgZG93bmNhc3Q8SW5saW5lVGV4dEJveD4oKmNoaWxkKS5lbXBoYXNpc01hcmtFeGlzdHNBbmRJ
c0Fib3ZlKGNoaWxkTGluZVN0eWxlLCBlbXBoYXNpc01hcmtJc0Fib3ZlKTsKLSAgICAgICAgICAg
IGlmIChjaGlsZExpbmVTdHlsZS50ZXh0RW1waGFzaXNNYXJrKCkgIT0gVGV4dEVtcGhhc2lzTWFy
a05vbmUgJiYgIWVtcGhhc2lzTWFya0lzQWJvdmUpIHsKKyAgICAgICAgICAgIGlmIChjaGlsZExp
bmVTdHlsZS50ZXh0RW1waGFzaXNNYXJrKCkgIT0gVGV4dEVtcGhhc2lzTWFyazo6Tm9uZSAmJiAh
ZW1waGFzaXNNYXJrSXNBYm92ZSkgewogICAgICAgICAgICAgICAgIGlmICghY2hpbGRMaW5lU3R5
bGUuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIExh
eW91dFVuaXQgYm90dG9tT2ZFbXBoYXNpc01hcmsgPSBjaGlsZC0+bG9naWNhbEJvdHRvbSgpICsg
Y2hpbGRMaW5lU3R5bGUuZm9udENhc2NhZGUoKS5lbXBoYXNpc01hcmtIZWlnaHQoY2hpbGRMaW5l
U3R5bGUudGV4dEVtcGhhc2lzTWFya1N0cmluZygpKTsKICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0ID0gc3RkOjptYXgocmVzdWx0LCBib3R0b21PZkVtcGhhc2lzTWFyayAtIGFsbG93ZWRQb3Np
dGlvbik7CkBAIC0xNjU1LDcgKzE2NTUsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OmNvbGxlY3RM
ZWFmQm94ZXNJbkxvCiAgICAgICAgIGxlYWZCb3hlc0luTG9naWNhbE9yZGVyLmFwcGVuZChsZWFm
KTsKICAgICB9CiAKLSAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLnJ0bE9yZGVyaW5nKCkgPT0g
VmlzdWFsT3JkZXIpCisgICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS5ydGxPcmRlcmluZygpID09
IE9yZGVyOjpWaXN1YWwpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFJldmVyc2Ugb2YgcmVv
cmRlcmluZyBvZiB0aGUgbGluZSAoTDIgYWNjb3JkaW5nIHRvIEJpZGkgc3BlYyk6CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgJKHJldmlzaW9uIDIzMjE0MykK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgICAgICAvLyBhbiBpbnZpc2libGUgbWFy
a2VyIGV4aXN0cy4gIFRoZSBzaWRlIGVmZmVjdCBvZiBoYXZpbmcgYW4gaW52aXNpYmxlIG1hcmtl
ciBpcyB0aGF0IHRoZSBxdWlya3MgbW9kZSBiZWhhdmlvciBvZiBzaHJpbmtpbmcgbGluZXMgd2l0
aCBubwogICAgICAgICAvLyB0ZXh0IGNoaWxkcmVuIG11c3Qgbm90IGFwcGx5LiAgVGhpcyBjaGFu
Z2UgYWxzbyBtZWFucyB0aGF0IGdhcHMgd2lsbCBleGlzdCBiZXR3ZWVuIGltYWdlIGJ1bGxldCBs
aXN0IGl0ZW1zLiAgRXZlbiB3aGVuIHRoZSBsaXN0IGJ1bGxldAogICAgICAgICAvLyBpcyBhbiBp
bWFnZSwgdGhlIGxpbmUgaXMgc3RpbGwgY29uc2lkZXJlZCB0byBiZSBpbW11bmUgZnJvbSB0aGUg
cXVpcmsuCi0gICAgICAgIG1faGFzVGV4dENoaWxkcmVuID0gcmVuZGVyZXIuc3R5bGUoKS5kaXNw
bGF5KCkgPT0gTElTVF9JVEVNOworICAgICAgICBtX2hhc1RleHRDaGlsZHJlbiA9IHJlbmRlcmVy
LnN0eWxlKCkuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpMaXN0SXRlbTsKICAgICAgICAgbV9o
YXNUZXh0RGVzY2VuZGFudHMgPSBtX2hhc1RleHRDaGlsZHJlbjsKICAgICB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAJKHJldmlzaW9uIDIzMjE0
MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzYxLDcgKzM2MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBlbXBoYXNpc1Bv
c2l0aW9uSGFzTmUKIGJvb2wgSW5saW5lVGV4dEJveDo6ZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNB
Ym92ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGJvb2wmIGFib3ZlKSBjb25zdAogewogICAg
IC8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0cnVlIGlmIHRoZXJlIGFyZSB0ZXh0IGVtcGhhc2lz
IG1hcmtzIGFuZCB0aGV5IGFyZSBzdXBwcmVzc2VkIGJ5IHJ1YnkgdGV4dC4KLSAgICBpZiAoc3R5
bGUudGV4dEVtcGhhc2lzTWFyaygpID09IFRleHRFbXBoYXNpc01hcmtOb25lKQorICAgIGlmIChz
dHlsZS50ZXh0RW1waGFzaXNNYXJrKCkgPT0gVGV4dEVtcGhhc2lzTWFyazo6Tm9uZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgVGV4dEVtcGhhc2lzUG9zaXRpb24gZW1waGFzaXNQb3Np
dGlvbiA9IHN0eWxlLnRleHRFbXBoYXNpc1Bvc2l0aW9uKCk7CkBAIC00MzQsNyArNDM0LDcgQEAg
c3RhdGljIE1hcmtlZFRleHQgY3JlYXRlTWFya2VkVGV4dEZyb21TZQogCiB2b2lkIElubGluZVRl
eHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFp
bnRPZmZzZXQsIExheW91dFVuaXQgLypsaW5lVG9wKi8sIExheW91dFVuaXQgLypsaW5lQm90dG9t
Ki8pCiB7Ci0gICAgaWYgKGlzTGluZUJyZWFrKCkgfHwgIXBhaW50SW5mby5zaG91bGRQYWludFdp
dGhpblJvb3QocmVuZGVyZXIoKSkgfHwgcmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHkoKSAh
PSBWSVNJQkxFCisgICAgaWYgKGlzTGluZUJyZWFrKCkgfHwgIXBhaW50SW5mby5zaG91bGRQYWlu
dFdpdGhpblJvb3QocmVuZGVyZXIoKSkgfHwgcmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHko
KSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlCiAgICAgICAgIHx8IG1fdHJ1bmNhdGlvbiA9PSBjRnVs
bFRydW5jYXRpb24gfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8ICFt
X2xlbikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMjM1LDcgKzEyMzUsNyBAQCBmbG9hdCBJbmxp
bmVUZXh0Qm94Ojpwb3NpdGlvbkZvck9mZnNldCh1CiBUZXh0UnVuIElubGluZVRleHRCb3g6OmNy
ZWF0ZVRleHRSdW4oYm9vbCBpZ25vcmVDb21iaW5lZFRleHQsIGJvb2wgaWdub3JlSHlwaGVuKSBj
b25zdAogewogICAgIGNvbnN0IGF1dG8mIHN0eWxlID0gbGluZVN0eWxlKCk7Ci0gICAgVGV4dFJ1
biB0ZXh0UnVuIHsgdGV4dChpZ25vcmVDb21iaW5lZFRleHQsIGlnbm9yZUh5cGhlbiksIHRleHRQ
b3MoKSwgZXhwYW5zaW9uKCksIGV4cGFuc2lvbkJlaGF2aW9yKCksIGRpcmVjdGlvbigpLCBkaXJP
dmVycmlkZSgpIHx8IHN0eWxlLnJ0bE9yZGVyaW5nKCkgPT0gVmlzdWFsT3JkZXIsICFyZW5kZXJl
cigpLmNhblVzZVNpbXBsZUZvbnRDb2RlUGF0aCgpIH07CisgICAgVGV4dFJ1biB0ZXh0UnVuIHsg
dGV4dChpZ25vcmVDb21iaW5lZFRleHQsIGlnbm9yZUh5cGhlbiksIHRleHRQb3MoKSwgZXhwYW5z
aW9uKCksIGV4cGFuc2lvbkJlaGF2aW9yKCksIGRpcmVjdGlvbigpLCBkaXJPdmVycmlkZSgpIHx8
IHN0eWxlLnJ0bE9yZGVyaW5nKCkgPT0gT3JkZXI6OlZpc3VhbCwgIXJlbmRlcmVyKCkuY2FuVXNl
U2ltcGxlRm9udENvZGVQYXRoKCkgfTsKICAgICB0ZXh0UnVuLnNldFRhYlNpemUoIXN0eWxlLmNv
bGxhcHNlV2hpdGVTcGFjZSgpLCBzdHlsZS50YWJTaXplKCkpOwogICAgIHJldHVybiB0ZXh0UnVu
OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BvaW50ZXJFdmVudHNIaXRSdWxl
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BvaW50ZXJFdmVu
dHNIaXRSdWxlcy5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9Qb2ludGVyRXZlbnRzSGl0UnVsZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsy
Miw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUG9pbnRlckV2ZW50c0hpdFJ1bGVzOjpQ
b2ludGVyRXZlbnRzSGl0UnVsZXMoRUhpdFRlc3RpbmcgaGl0VGVzdGluZywgY29uc3QgSGl0VGVz
dFJlcXVlc3QmIHJlcXVlc3QsIEVQb2ludGVyRXZlbnRzIHBvaW50ZXJFdmVudHMpCitQb2ludGVy
RXZlbnRzSGl0UnVsZXM6OlBvaW50ZXJFdmVudHNIaXRSdWxlcyhFSGl0VGVzdGluZyBoaXRUZXN0
aW5nLCBjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgUG9pbnRlckV2ZW50cyBwb2ludGVy
RXZlbnRzKQogICAgIDogcmVxdWlyZVZpc2libGUoZmFsc2UpCiAgICAgLCByZXF1aXJlRmlsbChm
YWxzZSkKICAgICAsIHJlcXVpcmVTdHJva2UoZmFsc2UpCkBAIC0zMCw3OCArMzAsNzggQEAgUG9p
bnRlckV2ZW50c0hpdFJ1bGVzOjpQb2ludGVyRXZlbnRzSGl0UgogICAgICwgY2FuSGl0RmlsbChm
YWxzZSkKIHsKICAgICBpZiAocmVxdWVzdC5zdmdDbGlwQ29udGVudCgpKQotICAgICAgICBwb2lu
dGVyRXZlbnRzID0gUEVfRklMTDsKKyAgICAgICAgcG9pbnRlckV2ZW50cyA9IFBvaW50ZXJFdmVu
dHM6OkZpbGw7CiAKICAgICBpZiAoaGl0VGVzdGluZyA9PSBTVkdfUEFUSF9ISVRURVNUSU5HKSB7
CiAgICAgICAgIHN3aXRjaCAocG9pbnRlckV2ZW50cykKICAgICAgICAgewotICAgICAgICAgICAg
Y2FzZSBQRV9WSVNJQkxFX1BBSU5URUQ6Ci0gICAgICAgICAgICBjYXNlIFBFX0FVVE86IC8vICJh
dXRvIiBpcyBsaWtlICJ2aXNpYmxlUGFpbnRlZCIgd2hlbiBpbiBTVkcgY29udGVudAorICAgICAg
ICAgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpWaXNpYmxlUGFpbnRlZDoKKyAgICAgICAgICAgIGNh
c2UgUG9pbnRlckV2ZW50czo6QXV0bzogLy8gImF1dG8iIGlzIGxpa2UgInZpc2libGVQYWludGVk
IiB3aGVuIGluIFNWRyBjb250ZW50CiAgICAgICAgICAgICAgICAgcmVxdWlyZUZpbGwgPSB0cnVl
OwogICAgICAgICAgICAgICAgIHJlcXVpcmVTdHJva2UgPSB0cnVlOwogICAgICAgICAgICAgICAg
IEZBTExUSFJPVUdIOwotICAgICAgICAgICAgY2FzZSBQRV9WSVNJQkxFOgorICAgICAgICAgICAg
Y2FzZSBQb2ludGVyRXZlbnRzOjpWaXNpYmxlOgogICAgICAgICAgICAgICAgIHJlcXVpcmVWaXNp
YmxlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBjYW5IaXRGaWxsID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICBjYW5IaXRTdHJva2UgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgY2FzZSBQRV9WSVNJQkxFX0ZJTEw6CisgICAgICAgICAgICBjYXNlIFBvaW50ZXJF
dmVudHM6OlZpc2libGVGaWxsOgogICAgICAgICAgICAgICAgIHJlcXVpcmVWaXNpYmxlID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICBjYW5IaXRGaWxsID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIGNhc2UgUEVfVklTSUJMRV9TVFJPS0U6CisgICAgICAgICAgICBj
YXNlIFBvaW50ZXJFdmVudHM6OlZpc2libGVTdHJva2U6CiAgICAgICAgICAgICAgICAgcmVxdWly
ZVZpc2libGUgPSB0cnVlOwogICAgICAgICAgICAgICAgIGNhbkhpdFN0cm9rZSA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFBFX1BBSU5URUQ6CisgICAg
ICAgICAgICBjYXNlIFBvaW50ZXJFdmVudHM6OlBhaW50ZWQ6CiAgICAgICAgICAgICAgICAgcmVx
dWlyZUZpbGwgPSB0cnVlOwogICAgICAgICAgICAgICAgIHJlcXVpcmVTdHJva2UgPSB0cnVlOwog
ICAgICAgICAgICAgICAgIEZBTExUSFJPVUdIOwotICAgICAgICAgICAgY2FzZSBQRV9BTEw6Cisg
ICAgICAgICAgICBjYXNlIFBvaW50ZXJFdmVudHM6OkFsbDoKICAgICAgICAgICAgICAgICBjYW5I
aXRGaWxsID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBjYW5IaXRTdHJva2UgPSB0cnVlOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBQRV9GSUxMOgorICAgICAgICAg
ICAgY2FzZSBQb2ludGVyRXZlbnRzOjpGaWxsOgogICAgICAgICAgICAgICAgIGNhbkhpdEZpbGwg
PSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBQRV9TVFJP
S0U6CisgICAgICAgICAgICBjYXNlIFBvaW50ZXJFdmVudHM6OlN0cm9rZToKICAgICAgICAgICAg
ICAgICBjYW5IaXRTdHJva2UgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSBQRV9OT05FOgorICAgICAgICAgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpOb25l
OgogICAgICAgICAgICAgICAgIC8vIG5vdGhpbmcgdG8gZG8gaGVyZSwgZGVmYXVsdHMgYXJlIGFs
bCBmYWxzZS4KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0gZWxzZSB7
CiAgICAgICAgIHN3aXRjaCAocG9pbnRlckV2ZW50cykKICAgICAgICAgewotICAgICAgICAgICAg
Y2FzZSBQRV9WSVNJQkxFX1BBSU5URUQ6Ci0gICAgICAgICAgICBjYXNlIFBFX0FVVE86IC8vICJh
dXRvIiBpcyBsaWtlICJ2aXNpYmxlUGFpbnRlZCIgd2hlbiBpbiBTVkcgY29udGVudAorICAgICAg
ICAgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpWaXNpYmxlUGFpbnRlZDoKKyAgICAgICAgICAgIGNh
c2UgUG9pbnRlckV2ZW50czo6QXV0bzogLy8gImF1dG8iIGlzIGxpa2UgInZpc2libGVQYWludGVk
IiB3aGVuIGluIFNWRyBjb250ZW50CiAgICAgICAgICAgICAgICAgcmVxdWlyZVZpc2libGUgPSB0
cnVlOwogICAgICAgICAgICAgICAgIHJlcXVpcmVGaWxsID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICByZXF1aXJlU3Ryb2tlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBjYW5IaXRGaWxsID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICBjYW5IaXRTdHJva2UgPSB0cnVlOwogICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBQRV9WSVNJQkxFX0ZJTEw6Ci0gICAgICAgICAgICBj
YXNlIFBFX1ZJU0lCTEVfU1RST0tFOgotICAgICAgICAgICAgY2FzZSBQRV9WSVNJQkxFOgorICAg
ICAgICAgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpWaXNpYmxlRmlsbDoKKyAgICAgICAgICAgIGNh
c2UgUG9pbnRlckV2ZW50czo6VmlzaWJsZVN0cm9rZToKKyAgICAgICAgICAgIGNhc2UgUG9pbnRl
ckV2ZW50czo6VmlzaWJsZToKICAgICAgICAgICAgICAgICByZXF1aXJlVmlzaWJsZSA9IHRydWU7
CiAgICAgICAgICAgICAgICAgY2FuSGl0RmlsbCA9IHRydWU7CiAgICAgICAgICAgICAgICAgY2Fu
SGl0U3Ryb2tlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgUEVfUEFJTlRFRDoKKyAgICAgICAgICAgIGNhc2UgUG9pbnRlckV2ZW50czo6UGFpbnRlZDoK
ICAgICAgICAgICAgICAgICByZXF1aXJlRmlsbCA9IHRydWU7CiAgICAgICAgICAgICAgICAgcmVx
dWlyZVN0cm9rZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgY2FuSGl0RmlsbCA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgY2FuSGl0U3Ryb2tlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGNhc2UgUEVfRklMTDoKLSAgICAgICAgICAgIGNhc2UgUEVfU1RST0tF
OgotICAgICAgICAgICAgY2FzZSBQRV9BTEw6CisgICAgICAgICAgICBjYXNlIFBvaW50ZXJFdmVu
dHM6OkZpbGw6CisgICAgICAgICAgICBjYXNlIFBvaW50ZXJFdmVudHM6OlN0cm9rZToKKyAgICAg
ICAgICAgIGNhc2UgUG9pbnRlckV2ZW50czo6QWxsOgogICAgICAgICAgICAgICAgIGNhbkhpdEZp
bGwgPSB0cnVlOwogICAgICAgICAgICAgICAgIGNhbkhpdFN0cm9rZSA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFBFX05PTkU6CisgICAgICAgICAgICBj
YXNlIFBvaW50ZXJFdmVudHM6Ok5vbmU6CiAgICAgICAgICAgICAgICAgLy8gbm90aGluZyB0byBk
byBoZXJlLCBkZWZhdWx0cyBhcmUgYWxsIGZhbHNlLgogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUG9pbnRlckV2ZW50c0hp
dFJ1bGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BvaW50ZXJF
dmVudHNIaXRSdWxlcy5oCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUG9pbnRlckV2ZW50c0hpdFJ1bGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMy
LDcgQEAgcHVibGljOgogICAgICAgICBTVkdfVEVYVF9ISVRURVNUSU5HCiAgICAgfTsKIAotICAg
IFBvaW50ZXJFdmVudHNIaXRSdWxlcyhFSGl0VGVzdGluZywgY29uc3QgSGl0VGVzdFJlcXVlc3Qm
LCBFUG9pbnRlckV2ZW50cyk7CisgICAgUG9pbnRlckV2ZW50c0hpdFJ1bGVzKEVIaXRUZXN0aW5n
LCBjb25zdCBIaXRUZXN0UmVxdWVzdCYsIFBvaW50ZXJFdmVudHMpOwogCiAgICAgYm9vbCByZXF1
aXJlVmlzaWJsZTsKICAgICBib29sIHJlcXVpcmVGaWxsOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjAsNyAr
NzYwLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6Y29tcHV0ZVN0YXJ0UG9zaQogCiAgICAg
TGF5b3V0VW5pdCBzdGFydE9mZiA9IHN0YXJ0T2Zmc2V0Rm9yTGluZUluRnJhZ21lbnQoYmxvY2tP
ZmZzZXQsIERvTm90SW5kZW50VGV4dCwgZnJhZ21lbnQsIGxvZ2ljYWxIZWlnaHRGb3JDaGlsZChj
aGlsZCkpOwogCi0gICAgaWYgKHN0eWxlKCkudGV4dEFsaWduKCkgIT0gV0VCS0lUX0NFTlRFUiAm
JiAhY2hpbGQuc3R5bGUoKS5tYXJnaW5TdGFydFVzaW5nKCZzdHlsZSgpKS5pc0F1dG8oKSkgewor
ICAgIGlmIChzdHlsZSgpLnRleHRBbGlnbigpICE9IFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRl
ciAmJiAhY2hpbGQuc3R5bGUoKS5tYXJnaW5TdGFydFVzaW5nKCZzdHlsZSgpKS5pc0F1dG8oKSkg
ewogICAgICAgICBpZiAoY2hpbGRNYXJnaW5TdGFydCA8IDApCiAgICAgICAgICAgICBzdGFydE9m
ZiArPSBjaGlsZE1hcmdpblN0YXJ0OwogICAgICAgICBuZXdQb3NpdGlvbiA9IHN0ZDo6bWF4KG5l
d1Bvc2l0aW9uLCBzdGFydE9mZik7IC8vIExldCB0aGUgZmxvYXQgc2l0IGluIHRoZSBjaGlsZCdz
IG1hcmdpbiBpZiBpdCBjYW4gZml0LgpAQCAtMTEwOSw3ICsxMTA5LDcgQEAgdm9pZCBSZW5kZXJC
bG9jazo6cGFpbnQoUGFpbnRJbmZvJiBwYWludAogICAgIC8vIHotaW5kZXguIFdlIHBhaW50IGFm
dGVyIHdlIHBhaW50ZWQgdGhlIGJhY2tncm91bmQvYm9yZGVyLCBzbyB0aGF0IHRoZSBzY3JvbGxi
YXJzIHdpbGwKICAgICAvLyBzaXQgYWJvdmUgdGhlIGJhY2tncm91bmQvYm9yZGVyLgogICAgIGlm
ICgocGhhc2UgPT0gUGFpbnRQaGFzZUJsb2NrQmFja2dyb3VuZCB8fCBwaGFzZSA9PSBQYWludFBo
YXNlQ2hpbGRCbG9ja0JhY2tncm91bmQpICYmIGhhc092ZXJmbG93Q2xpcCgpICYmIGxheWVyKCkK
LSAgICAgICAgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSAmJiBwYWludEluZm8u
c2hvdWxkUGFpbnRXaXRoaW5Sb290KCp0aGlzKSAmJiAhcGFpbnRJbmZvLnBhaW50Um9vdEJhY2tn
cm91bmRPbmx5KCkpCisgICAgICAgICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxp
dHk6OlZpc2libGUgJiYgcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdCgqdGhpcykgJiYg
IXBhaW50SW5mby5wYWludFJvb3RCYWNrZ3JvdW5kT25seSgpKQogICAgICAgICBsYXllcigpLT5w
YWludE92ZXJmbG93Q29udHJvbHMocGFpbnRJbmZvLmNvbnRleHQoKSwgcm91bmRlZEludFBvaW50
KGFkanVzdGVkUGFpbnRPZmZzZXQpLCBzbmFwcGVkSW50UmVjdChwYWludEluZm8ucmVjdCkpOwog
fQogCkBAIC0xMjE5LDcgKzEyMTksNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludE9iamVjdChQ
YWludEluZm8mCiAgICAgUGFpbnRQaGFzZSBwYWludFBoYXNlID0gcGFpbnRJbmZvLnBoYXNlOwog
CiAgICAgLy8gMS4gcGFpbnQgYmFja2dyb3VuZCwgYm9yZGVycyBldGMKLSAgICBpZiAoKHBhaW50
UGhhc2UgPT0gUGFpbnRQaGFzZUJsb2NrQmFja2dyb3VuZCB8fCBwYWludFBoYXNlID09IFBhaW50
UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZCkgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklT
SUJMRSkgeworICAgIGlmICgocGFpbnRQaGFzZSA9PSBQYWludFBoYXNlQmxvY2tCYWNrZ3JvdW5k
IHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZUNoaWxkQmxvY2tCYWNrZ3JvdW5kKSAmJiBzdHls
ZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlKSB7CiAgICAgICAgIGlmICho
YXNWaXNpYmxlQm94RGVjb3JhdGlvbnMoKSkKICAgICAgICAgICAgIHBhaW50Qm94RGVjb3JhdGlv
bnMocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiAgICAgfQpAQCAtMTIyOCwxMiArMTIyOCwxMiBA
QCB2b2lkIFJlbmRlckJsb2NrOjpwYWludE9iamVjdChQYWludEluZm8mCiAgICAgaWYgKHBhaW50
UGhhc2UgPT0gUGFpbnRQaGFzZUJsb2NrQmFja2dyb3VuZCB8fCBwYWludFBoYXNlID09IFBhaW50
UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZCB8fCBwYWludFBoYXNlID09IFBhaW50UGhhc2VTZWxl
Y3Rpb24pCiAgICAgICAgIHBhaW50RXhjbHVkZWRDaGlsZHJlbkluQm9yZGVyKHBhaW50SW5mbywg
cGFpbnRPZmZzZXQpOwogICAgIAotICAgIGlmIChwYWludFBoYXNlID09IFBhaW50UGhhc2VNYXNr
ICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUpIHsKKyAgICBpZiAocGFpbnRQaGFz
ZSA9PSBQYWludFBoYXNlTWFzayAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5
OjpWaXNpYmxlKSB7CiAgICAgICAgIHBhaW50TWFzayhwYWludEluZm8sIHBhaW50T2Zmc2V0KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChwYWludFBoYXNlID09IFBhaW50UGhh
c2VDbGlwcGluZ01hc2sgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkgeworICAg
IGlmIChwYWludFBoYXNlID09IFBhaW50UGhhc2VDbGlwcGluZ01hc2sgJiYgc3R5bGUoKS52aXNp
YmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkgewogICAgICAgICBwYWludENsaXBwaW5n
TWFzayhwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTEyNDksNyArMTI0OSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50T2JqZWN0KFBhaW50SW5m
byYKICAgICAvLyBDb2x1bW4gcnVsZXMgbmVlZCB0byBhY2NvdW50IGZvciBzY3JvbGxpbmcgYW5k
IGNsaXBwaW5nLgogICAgIC8vIEZJWE1FOiBDbGlwcGluZyBvZiBjb2x1bW4gcnVsZXMgZG9lcyBu
b3Qgd29yay4gV2Ugd2lsbCBuZWVkIGEgc2VwYXJhdGUgcGFpbnQgcGhhc2UgZm9yIGNvbHVtbiBy
dWxlcyBJIHN1c3BlY3QgaW4gb3JkZXIgdG8gZ2V0CiAgICAgLy8gY2xpcHBpbmcgY29ycmVjdCAo
c2luY2UgaXQgaGFzIHRvIHBhaW50IGFzIGJhY2tncm91bmQgYnV0IGlzIHN0aWxsIGNvbnNpZGVy
ZWQgImNvbnRlbnRzIikuCi0gICAgaWYgKChwYWludFBoYXNlID09IFBhaW50UGhhc2VCbG9ja0Jh
Y2tncm91bmQgfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlQ2hpbGRCbG9ja0JhY2tncm91bmQp
ICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUpCisgICAgaWYgKChwYWludFBoYXNl
ID09IFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQgfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNl
Q2hpbGRCbG9ja0JhY2tncm91bmQpICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxp
dHk6OlZpc2libGUpCiAgICAgICAgIHBhaW50Q29sdW1uUnVsZXMocGFpbnRJbmZvLCBzY3JvbGxl
ZE9mZnNldCk7CiAKICAgICAvLyBEb25lIHdpdGggYmFja2dyb3VuZHMsIGJvcmRlcnMgYW5kIGNv
bHVtbiBydWxlcy4KQEAgLTEyNzEsMTMgKzEyNzEsMTMgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFp
bnRPYmplY3QoUGFpbnRJbmZvJgogICAgICAgICBwYWludEZsb2F0cyhwYWludEluZm8sIHNjcm9s
bGVkT2Zmc2V0LCBwYWludFBoYXNlID09IFBhaW50UGhhc2VTZWxlY3Rpb24gfHwgcGFpbnRQaGFz
ZSA9PSBQYWludFBoYXNlVGV4dENsaXApOwogCiAgICAgLy8gNS4gcGFpbnQgb3V0bGluZS4KLSAg
ICBpZiAoKHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZU91dGxpbmUgfHwgcGFpbnRQaGFzZSA9PSBQ
YWludFBoYXNlU2VsZk91dGxpbmUpICYmIGhhc091dGxpbmUoKSAmJiBzdHlsZSgpLnZpc2liaWxp
dHkoKSA9PSBWSVNJQkxFKQorICAgIGlmICgocGFpbnRQaGFzZSA9PSBQYWludFBoYXNlT3V0bGlu
ZSB8fCBwYWludFBoYXNlID09IFBhaW50UGhhc2VTZWxmT3V0bGluZSkgJiYgaGFzT3V0bGluZSgp
ICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAg
IHBhaW50T3V0bGluZShwYWludEluZm8sIExheW91dFJlY3QocGFpbnRPZmZzZXQsIHNpemUoKSkp
OwogCiAgICAgLy8gNi4gcGFpbnQgY29udGludWF0aW9uIG91dGxpbmVzLgogICAgIGlmICgocGFp
bnRQaGFzZSA9PSBQYWludFBoYXNlT3V0bGluZSB8fCBwYWludFBoYXNlID09IFBhaW50UGhhc2VD
aGlsZE91dGxpbmVzKSkgewogICAgICAgICBSZW5kZXJJbmxpbmUqIGlubGluZUNvbnQgPSBpbmxp
bmVDb250aW51YXRpb24oKTsKLSAgICAgICAgaWYgKGlubGluZUNvbnQgJiYgaW5saW5lQ29udC0+
aGFzT3V0bGluZSgpICYmIGlubGluZUNvbnQtPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lC
TEUpIHsKKyAgICAgICAgaWYgKGlubGluZUNvbnQgJiYgaW5saW5lQ29udC0+aGFzT3V0bGluZSgp
ICYmIGlubGluZUNvbnQtPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2li
bGUpIHsKICAgICAgICAgICAgIFJlbmRlcklubGluZSogaW5saW5lUmVuZGVyZXIgPSBkb3duY2Fz
dDxSZW5kZXJJbmxpbmU+KGlubGluZUNvbnQtPmVsZW1lbnQoKS0+cmVuZGVyZXIoKSk7CiAgICAg
ICAgICAgICBSZW5kZXJCbG9jayogY29udGFpbmluZ0Jsb2NrID0gdGhpcy0+Y29udGFpbmluZ0Js
b2NrKCk7CiAKQEAgLTEzNzMsNyArMTM3Myw3IEBAIGJvb2wgUmVuZGVyQmxvY2s6OnNob3VsZFBh
aW50U2VsZWN0aW9uR2EKICAgICBpZiAoc2V0dGluZ3MoKS5zZWxlY3Rpb25QYWludGluZ1dpdGhv
dXRTZWxlY3Rpb25HYXBzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBy
ZXR1cm4gc2VsZWN0aW9uU3RhdGUoKSAhPSBTZWxlY3Rpb25Ob25lICYmIHN0eWxlKCkudmlzaWJp
bGl0eSgpID09IFZJU0lCTEUgJiYgaXNTZWxlY3Rpb25Sb290KCk7CisgICAgcmV0dXJuIHNlbGVj
dGlvblN0YXRlKCkgIT0gU2VsZWN0aW9uTm9uZSAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBW
aXNpYmlsaXR5OjpWaXNpYmxlICYmIGlzU2VsZWN0aW9uUm9vdCgpOwogfQogCiBib29sIFJlbmRl
ckJsb2NrOjppc1NlbGVjdGlvblJvb3QoKSBjb25zdApAQCAtMTg2Niw3ICsxODY2LDcgQEAgTGF5
b3V0VW5pdCBSZW5kZXJCbG9jazo6YWRqdXN0TG9naWNhbExlZgogICAgIGlmIChhcHBseVRleHRJ
bmRlbnQgJiYgc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCiAgICAgICAgIGxlZnQg
Kz0gdGV4dEluZGVudE9mZnNldCgpOwogCi0gICAgaWYgKHN0eWxlKCkubGluZUFsaWduKCkgPT0g
TGluZUFsaWduTm9uZSkKKyAgICBpZiAoc3R5bGUoKS5saW5lQWxpZ24oKSA9PSBMaW5lQWxpZ246
Ok5vbmUpCiAgICAgICAgIHJldHVybiBsZWZ0OwogICAgIAogICAgIC8vIFB1c2ggaW4gb3VyIGxl
ZnQgb2Zmc2V0IHNvIHRoYXQgaXQgaXMgYWxpZ25lZCB3aXRoIHRoZSBjaGFyYWN0ZXIgZ3JpZC4K
QEAgLTE5MDYsNyArMTkwNiw3IEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2s6OmFkanVzdExvZ2lj
YWxSaWcKICAgICBpZiAoYXBwbHlUZXh0SW5kZW50ICYmICFzdHlsZSgpLmlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24oKSkKICAgICAgICAgcmlnaHQgLT0gdGV4dEluZGVudE9mZnNldCgpOwogICAgIAot
ICAgIGlmIChzdHlsZSgpLmxpbmVBbGlnbigpID09IExpbmVBbGlnbk5vbmUpCisgICAgaWYgKHN0
eWxlKCkubGluZUFsaWduKCkgPT0gTGluZUFsaWduOjpOb25lKQogICAgICAgICByZXR1cm4gcmln
aHQ7CiAgICAgCiAgICAgLy8gUHVzaCBpbiBvdXIgcmlnaHQgb2Zmc2V0IHNvIHRoYXQgaXQgaXMg
YWxpZ25lZCB3aXRoIHRoZSBjaGFyYWN0ZXIgZ3JpZC4KQEAgLTIxMzQsNyArMjEzNCw3IEBAIFZp
c2libGVQb3NpdGlvbiBSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3IKIAogc3RhdGljIGlubGluZSBi
b29sIGlzQ2hpbGRIaXRUZXN0Q2FuZGlkYXRlKGNvbnN0IFJlbmRlckJveCYgYm94KQogewotICAg
IHJldHVybiBib3guaGVpZ2h0KCkgJiYgYm94LnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lC
TEUgJiYgIWJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAhYm94LmlzSW5GbG93UmVuZGVy
RnJhZ21lbnRlZEZsb3coKTsKKyAgICByZXR1cm4gYm94LmhlaWdodCgpICYmIGJveC5zdHlsZSgp
LnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICFib3guaXNPdXRPZkZsb3dQ
b3NpdGlvbmVkKCkgJiYgIWJveC5pc0luRmxvd1JlbmRlckZyYWdtZW50ZWRGbG93KCk7CiB9CiAK
IC8vIFZhbGlkIGNhbmRpZGF0ZXMgaW4gYSBGcmFnbWVudGVkRmxvdyBtdXN0IGJlIHJlbmRlcmVk
IGJ5IHRoZSBmcmFnbWVudC4KQEAgLTIyNTgsNyArMjI1OCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6
OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2EKIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVCbG9ja1By
ZWZlcnJlZExvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRV
bml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0CiB7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlVG9Vc2UgPSBzdHlsZSgpOwotICAgIGJvb2wgbm93cmFwID0gc3R5bGVUb1VzZS53aGl0ZVNw
YWNlKCkgPT0gTk9XUkFQOworICAgIGJvb2wgbm93cmFwID0gc3R5bGVUb1VzZS53aGl0ZVNwYWNl
KCkgPT0gV2hpdGVTcGFjZTo6Tm9XcmFwOwogCiAgICAgUmVuZGVyT2JqZWN0KiBjaGlsZCA9IGZp
cnN0Q2hpbGQoKTsKICAgICBSZW5kZXJCbG9jayogY29udGFpbmluZ0Jsb2NrID0gdGhpcy0+Y29u
dGFpbmluZ0Jsb2NrKCk7CkBAIC0yNTUwLDcgKzI1NTAsNyBAQCBSZW5kZXJCbG9jayogUmVuZGVy
QmxvY2s6OmZpcnN0TGluZUJsb2NrCiAgICAgUmVuZGVyQmxvY2sqIGZpcnN0TGluZUJsb2NrID0g
Y29uc3RfY2FzdDxSZW5kZXJCbG9jayo+KHRoaXMpOwogICAgIGJvb2wgaGFzUHNldWRvID0gZmFs
c2U7CiAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgaGFzUHNldWRvID0gZmlyc3RMaW5lQmxv
Y2stPnN0eWxlKCkuaGFzUHNldWRvU3R5bGUoRklSU1RfTElORSk7CisgICAgICAgIGhhc1BzZXVk
byA9IGZpcnN0TGluZUJsb2NrLT5zdHlsZSgpLmhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkOjpGaXJz
dExpbmUpOwogICAgICAgICBpZiAoaGFzUHNldWRvKQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIFJlbmRlckVsZW1lbnQqIHBhcmVudEJsb2NrID0gZmlyc3RMaW5lQmxvY2stPnBhcmVudCgp
OwpAQCAtMjU3MCw3ICsyNTcwLDcgQEAgc3RhdGljIGlubGluZSBSZW5kZXJCbG9jayogZmluZEZp
cnN0TGV0dAogewogICAgIFJlbmRlckJsb2NrKiBmaXJzdExldHRlckJsb2NrID0gc3RhcnQ7CiAg
ICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgYm9vbCBjYW5IYXZlRmlyc3RMZXR0ZXJSZW5kZXJl
ciA9IGZpcnN0TGV0dGVyQmxvY2stPnN0eWxlKCkuaGFzUHNldWRvU3R5bGUoRklSU1RfTEVUVEVS
KQorICAgICAgICBib29sIGNhbkhhdmVGaXJzdExldHRlclJlbmRlcmVyID0gZmlyc3RMZXR0ZXJC
bG9jay0+c3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RMZXR0ZXIpCiAgICAg
ICAgICAgICAmJiBmaXJzdExldHRlckJsb2NrLT5jYW5IYXZlR2VuZXJhdGVkQ2hpbGRyZW4oKQog
ICAgICAgICAgICAgJiYgaXNSZW5kZXJCbG9ja0Zsb3dPclJlbmRlckJ1dHRvbigqZmlyc3RMZXR0
ZXJCbG9jayk7CiAgICAgICAgIGlmIChjYW5IYXZlRmlyc3RMZXR0ZXJSZW5kZXJlcikKQEAgLTI1
OTUsNyArMjU5NSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmdldEZpcnN0TGV0dGVyKFJlbmRlck8K
ICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRG9uJ3QgcmVjdXIKLSAgICBpZiAoc3R5bGUoKS5z
dHlsZVR5cGUoKSA9PSBGSVJTVF9MRVRURVIpCisgICAgaWYgKHN0eWxlKCkuc3R5bGVUeXBlKCkg
PT0gUHNldWRvSWQ6OkZpcnN0TGV0dGVyKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8g
RklYTUU6IFdlIG5lZWQgdG8gZGVzdHJveSB0aGUgZmlyc3QtbGV0dGVyIG9iamVjdCBpZiBpdCBp
cyBubyBsb25nZXIgdGhlIGZpcnN0IGNoaWxkLiBOZWVkIHRvIGZpbmQKQEAgLTI2MjAsNyArMjYy
MCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmdldEZpcnN0TGV0dGVyKFJlbmRlck8KICAgICAgICAg
aWYgKGlzPFJlbmRlckxpc3RNYXJrZXI+KGN1cnJlbnQpKQogICAgICAgICAgICAgZmlyc3RMZXR0
ZXIgPSBjdXJyZW50Lm5leHRTaWJsaW5nKCk7CiAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnQuaXNG
bG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgpKSB7Ci0gICAgICAgICAgICBpZiAoY3VycmVu
dC5zdHlsZSgpLnN0eWxlVHlwZSgpID09IEZJUlNUX0xFVFRFUikgeworICAgICAgICAgICAgaWYg
KGN1cnJlbnQuc3R5bGUoKS5zdHlsZVR5cGUoKSA9PSBQc2V1ZG9JZDo6Rmlyc3RMZXR0ZXIpIHsK
ICAgICAgICAgICAgICAgICBmaXJzdExldHRlciA9IGN1cnJlbnQuZmlyc3RDaGlsZCgpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMjYyOSw3ICsyNjI5LDcgQEAg
dm9pZCBSZW5kZXJCbG9jazo6Z2V0Rmlyc3RMZXR0ZXIoUmVuZGVyTwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnQuaXNGbGV4aWJsZUJveEluY2x1ZGluZ0RlcHJl
Y2F0ZWQoKSB8fCBjdXJyZW50LmlzUmVuZGVyR3JpZCgpKQogICAgICAgICAgICAgZmlyc3RMZXR0
ZXIgPSBjdXJyZW50Lm5leHRTaWJsaW5nKCk7Ci0gICAgICAgIGVsc2UgaWYgKGN1cnJlbnQuc3R5
bGUoKS5oYXNQc2V1ZG9TdHlsZShGSVJTVF9MRVRURVIpICYmIGN1cnJlbnQuY2FuSGF2ZUdlbmVy
YXRlZENoaWxkcmVuKCkpICB7CisgICAgICAgIGVsc2UgaWYgKGN1cnJlbnQuc3R5bGUoKS5oYXNQ
c2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RMZXR0ZXIpICYmIGN1cnJlbnQuY2FuSGF2ZUdlbmVy
YXRlZENoaWxkcmVuKCkpICB7CiAgICAgICAgICAgICAvLyBXZSBmb3VuZCBhIGxvd2VyLWxldmVs
IG5vZGUgd2l0aCBmaXJzdC1sZXR0ZXIsIHdoaWNoIHN1cGVyc2VkZXMgdGhlIGhpZ2hlci1sZXZl
bCBzdHlsZQogICAgICAgICAgICAgZmlyc3RMZXR0ZXJDb250YWluZXIgPSAmY3VycmVudDsKICAg
ICAgICAgICAgIGZpcnN0TGV0dGVyID0gY3VycmVudC5maXJzdENoaWxkKCk7CkBAIC0yODY4LDE0
ICsyODY4LDE0IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFkZEZvY3VzUmluZ1JlY3RzKFZlY3QKICAg
ICAgICAgaW5saW5lQ29udGludWF0aW9uLT5hZGRGb2N1c1JpbmdSZWN0cyhyZWN0cywgZmxvb3Jl
ZExheW91dFBvaW50KExheW91dFBvaW50KGFkZGl0aW9uYWxPZmZzZXQgKyBpbmxpbmVDb250aW51
YXRpb24tPmNvbnRhaW5pbmdCbG9jaygpLT5sb2NhdGlvbigpIC0gbG9jYXRpb24oKSkpLCBwYWlu
dENvbnRhaW5lcik7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJCbG9jaz4gUmVuZGVyQmxvY2s6OmNy
ZWF0ZUFub255bW91c0Jsb2NrV2l0aFN0eWxlQW5kRGlzcGxheShEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRURpc3BsYXkgZGlzcGxheSkKK1JlbmRlclB0cjxS
ZW5kZXJCbG9jaz4gUmVuZGVyQmxvY2s6OmNyZWF0ZUFub255bW91c0Jsb2NrV2l0aFN0eWxlQW5k
RGlzcGxheShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRGlz
cGxheVR5cGUgZGlzcGxheSkKIHsKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBjb252ZXJ0
IGFsbCBvdXIgaW5saW5lIGRpc3BsYXlzIHRvIGJsb2NrLXR5cGUgaW4gdGhlIGFub255bW91cyBs
b2dpYyA/CiAgICAgUmVuZGVyUHRyPFJlbmRlckJsb2NrPiBuZXdCb3g7Ci0gICAgaWYgKGRpc3Bs
YXkgPT0gRkxFWCB8fCBkaXNwbGF5ID09IElOTElORV9GTEVYKQotICAgICAgICBuZXdCb3ggPSBj
cmVhdGVSZW5kZXJlcjxSZW5kZXJGbGV4aWJsZUJveD4oZG9jdW1lbnQsIFJlbmRlclN0eWxlOjpj
cmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlLCBGTEVYKSk7CisgICAgaWYgKGRp
c3BsYXkgPT0gRGlzcGxheVR5cGU6OkZsZXggfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6SW5s
aW5lRmxleCkKKyAgICAgICAgbmV3Qm94ID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyRmxleGlibGVC
b3g+KGRvY3VtZW50LCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxh
eShzdHlsZSwgRGlzcGxheVR5cGU6OkZsZXgpKTsKICAgICBlbHNlCi0gICAgICAgIG5ld0JveCA9
IGNyZWF0ZVJlbmRlcmVyPFJlbmRlckJsb2NrRmxvdz4oZG9jdW1lbnQsIFJlbmRlclN0eWxlOjpj
cmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlLCBCTE9DSykpOworICAgICAgICBu
ZXdCb3ggPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJCbG9ja0Zsb3c+KGRvY3VtZW50LCBSZW5kZXJT
dHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSwgRGlzcGxheVR5cGU6
OkJsb2NrKSk7CiAgICAgCiAgICAgbmV3Qm94LT5pbml0aWFsaXplU3R5bGUoKTsKICAgICByZXR1
cm4gbmV3Qm94OwpAQCAtMjkzMCw5ICsyOTMwLDkgQEAgYm9vbCBSZW5kZXJCbG9jazo6Y2hpbGRC
b3hJc1Vuc3BsaXR0YWJsZQogICAgIFJlbmRlckZyYWdtZW50ZWRGbG93KiBmcmFnbWVudGVkRmxv
dyA9IGVuY2xvc2luZ0ZyYWdtZW50ZWRGbG93KCk7CiAgICAgYm9vbCBjaGVja0NvbHVtbkJyZWFr
cyA9IGZyYWdtZW50ZWRGbG93ICYmIGZyYWdtZW50ZWRGbG93LT5zaG91bGRDaGVja0NvbHVtbkJy
ZWFrcygpOwogICAgIGJvb2wgY2hlY2tQYWdlQnJlYWtzID0gIWNoZWNrQ29sdW1uQnJlYWtzICYm
IHZpZXcoKS5mcmFtZVZpZXcoKS5sYXlvdXRDb250ZXh0KCkubGF5b3V0U3RhdGUoKS0+cGFnZUxv
Z2ljYWxIZWlnaHQoKTsKLSAgICByZXR1cm4gY2hpbGQuaXNVbnNwbGl0dGFibGVGb3JQYWdpbmF0
aW9uKCkgfHwgY2hpbGQuc3R5bGUoKS5icmVha0luc2lkZSgpID09IEF2b2lkQnJlYWtJbnNpZGUK
LSAgICAgICAgfHwgKGNoZWNrQ29sdW1uQnJlYWtzICYmIGNoaWxkLnN0eWxlKCkuYnJlYWtJbnNp
ZGUoKSA9PSBBdm9pZENvbHVtbkJyZWFrSW5zaWRlKQotICAgICAgICB8fCAoY2hlY2tQYWdlQnJl
YWtzICYmIGNoaWxkLnN0eWxlKCkuYnJlYWtJbnNpZGUoKSA9PSBBdm9pZFBhZ2VCcmVha0luc2lk
ZSk7CisgICAgcmV0dXJuIGNoaWxkLmlzVW5zcGxpdHRhYmxlRm9yUGFnaW5hdGlvbigpIHx8IGNo
aWxkLnN0eWxlKCkuYnJlYWtJbnNpZGUoKSA9PSBCcmVha0luc2lkZTo6QXZvaWQKKyAgICAgICAg
fHwgKGNoZWNrQ29sdW1uQnJlYWtzICYmIGNoaWxkLnN0eWxlKCkuYnJlYWtJbnNpZGUoKSA9PSBC
cmVha0luc2lkZTo6QXZvaWRDb2x1bW4pCisgICAgICAgIHx8IChjaGVja1BhZ2VCcmVha3MgJiYg
Y2hpbGQuc3R5bGUoKS5icmVha0luc2lkZSgpID09IEJyZWFrSW5zaWRlOjpBdm9pZFBhZ2UpOwog
fQogCiB2b2lkIFJlbmRlckJsb2NrOjpjb21wdXRlRnJhZ21lbnRSYW5nZUZvckJveENoaWxkKGNv
bnN0IFJlbmRlckJveCYgYm94KSBjb25zdApAQCAtMzA5Niw3ICszMDk2LDcgQEAgY29uc3QgY2hh
ciogUmVuZGVyQmxvY2s6OnJlbmRlck5hbWUoKSBjbwogVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29u
c3RydWN0VGV4dFJ1bihTdHJpbmdWaWV3IHN0cmluZ1ZpZXcsIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uLCBUZXh0UnVuRmxhZ3MgZmxhZ3MpCiB7
CiAgICAgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uID0gTFRSOwotICAgIGJvb2wgZGlyZWN0
aW9uYWxPdmVycmlkZSA9IHN0eWxlLnJ0bE9yZGVyaW5nKCkgPT0gVmlzdWFsT3JkZXI7CisgICAg
Ym9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlID0gc3R5bGUucnRsT3JkZXJpbmcoKSA9PSBPcmRlcjo6
VmlzdWFsOwogICAgIGlmIChmbGFncyAhPSBEZWZhdWx0VGV4dFJ1bkZsYWdzKSB7CiAgICAgICAg
IGlmIChmbGFncyAmIFJlc3BlY3REaXJlY3Rpb24pCiAgICAgICAgICAgICB0ZXh0RGlyZWN0aW9u
ID0gc3R5bGUuZGlyZWN0aW9uKCk7CkBAIC0zMjMxLDEwICszMjMxLDEwIEBAIHZvaWQgUmVuZGVy
QmxvY2s6OmxheW91dEV4Y2x1ZGVkQ2hpbGRyZW4KICAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0
OwogICAgIGlmIChzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkgewogICAgICAgICBz
d2l0Y2ggKGxlZ2VuZC5zdHlsZSgpLnRleHRBbGlnbigpKSB7Ci0gICAgICAgIGNhc2UgQ0VOVEVS
OgorICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgICAgIGxvZ2lj
YWxMZWZ0ID0gKGxvZ2ljYWxXaWR0aCgpIC0gbG9naWNhbFdpZHRoRm9yQ2hpbGQobGVnZW5kKSkg
LyAyOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUklHSFQ6CisgICAgICAgIGNh
c2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgICAgICBsb2dpY2FsTGVmdCA9IGxvZ2lj
YWxXaWR0aCgpIC0gYm9yZGVyRW5kKCkgLSBwYWRkaW5nRW5kKCkgLSBsb2dpY2FsV2lkdGhGb3JD
aGlsZChsZWdlbmQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0z
MjQzLDEwICszMjQzLDEwIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dEV4Y2x1ZGVkQ2hpbGRy
ZW4KICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIHN3aXRjaCAobGVnZW5kLnN0eWxl
KCkudGV4dEFsaWduKCkpIHsKLSAgICAgICAgY2FzZSBMRUZUOgorICAgICAgICBjYXNlIFRleHRB
bGlnbk1vZGU6OkxlZnQ6CiAgICAgICAgICAgICBsb2dpY2FsTGVmdCA9IGJvcmRlclN0YXJ0KCkg
KyBwYWRkaW5nU3RhcnQoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENFTlRF
UjogeworICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjogewogICAgICAgICAgICAg
Ly8gTWFrZSBzdXJlIHRoYXQgdGhlIGV4dHJhIHBpeGVsIGdvZXMgdG8gdGhlIGVuZCBzaWRlIGlu
IFJUTCAoc2luY2UgaXQgd2VudCB0byB0aGUgZW5kIHNpZGUKICAgICAgICAgICAgIC8vIGluIExU
UikuCiAgICAgICAgICAgICBMYXlvdXRVbml0IGNlbnRlcmVkV2lkdGggPSBsb2dpY2FsV2lkdGgo
KSAtIGxvZ2ljYWxXaWR0aEZvckNoaWxkKGxlZ2VuZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suaAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4Niw4ICsxODYsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBhZGRDb250aW51YXRpb25XaXRoT3V0bGluZShSZW5kZXJJbmxp
bmUqKTsKICAgICBib29sIHBhaW50c0NvbnRpbnVhdGlvbk91dGxpbmUoUmVuZGVySW5saW5lKik7
CiAKLSAgICBzdGF0aWMgUmVuZGVyUHRyPFJlbmRlckJsb2NrPiBjcmVhdGVBbm9ueW1vdXNXaXRo
UGFyZW50UmVuZGVyZXJBbmREaXNwbGF5KGNvbnN0IFJlbmRlckJveCYgcGFyZW50LCBFRGlzcGxh
eSA9IEJMT0NLKTsKLSAgICBSZW5kZXJQdHI8UmVuZGVyQmxvY2s+IGNyZWF0ZUFub255bW91c0Js
b2NrKEVEaXNwbGF5ID0gQkxPQ0spIGNvbnN0OworICAgIHN0YXRpYyBSZW5kZXJQdHI8UmVuZGVy
QmxvY2s+IGNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlckFuZERpc3BsYXkoY29uc3Qg
UmVuZGVyQm94JiBwYXJlbnQsIERpc3BsYXlUeXBlID0gRGlzcGxheVR5cGU6OkJsb2NrKTsKKyAg
ICBSZW5kZXJQdHI8UmVuZGVyQmxvY2s+IGNyZWF0ZUFub255bW91c0Jsb2NrKERpc3BsYXlUeXBl
ID0gRGlzcGxheVR5cGU6OkJsb2NrKSBjb25zdDsKIAogICAgIFJlbmRlclB0cjxSZW5kZXJCb3g+
IGNyZWF0ZUFub255bW91c0JveFdpdGhTYW1lVHlwZUFzKGNvbnN0IFJlbmRlckJveCYpIGNvbnN0
IG92ZXJyaWRlOwogCkBAIC00MTgsNyArNDE4LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgYmxv
Y2tXaWxsQmVEZXN0cm95ZWQoKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgUmVuZGVyUHRyPFJl
bmRlckJsb2NrPiBjcmVhdGVBbm9ueW1vdXNCbG9ja1dpdGhTdHlsZUFuZERpc3BsYXkoRG9jdW1l
bnQmLCBjb25zdCBSZW5kZXJTdHlsZSYsIEVEaXNwbGF5KTsKKyAgICBzdGF0aWMgUmVuZGVyUHRy
PFJlbmRlckJsb2NrPiBjcmVhdGVBbm9ueW1vdXNCbG9ja1dpdGhTdHlsZUFuZERpc3BsYXkoRG9j
dW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYsIERpc3BsYXlUeXBlKTsKIAogICAgIC8vIEZJWE1F
LUJMT0NLRkxPVzogUmVtb3ZlIHZpcnR1YWxpemFpb24gd2hlbiBhbGwgY2FsbGVycyBoYXZlIG1v
dmVkIHRvIFJlbmRlckJsb2NrRmxvdwogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBsb2dpY2FsUmln
aHRGbG9hdE9mZnNldEZvckxpbmUoTGF5b3V0VW5pdCwgTGF5b3V0VW5pdCBmaXhlZE9mZnNldCwg
TGF5b3V0VW5pdCkgY29uc3QgeyByZXR1cm4gZml4ZWRPZmZzZXQ7IH07CkBAIC01MjUsNyArNTI1
LDcgQEAgTGF5b3V0VW5pdCBibG9ja0RpcmVjdGlvbk9mZnNldChSZW5kZXJCbAogTGF5b3V0VW5p
dCBpbmxpbmVEaXJlY3Rpb25PZmZzZXQoUmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29uc3QgTGF5
b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3RCbG9jayk7CiBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25G
b3JQb2ludFJlc3BlY3RpbmdFZGl0aW5nQm91bmRhcmllcyhSZW5kZXJCbG9jayYsIFJlbmRlckJv
eCYsIGNvbnN0IExheW91dFBvaW50Jik7CiAKLWlubGluZSBSZW5kZXJQdHI8UmVuZGVyQmxvY2s+
IFJlbmRlckJsb2NrOjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXJBbmREaXNwbGF5
KGNvbnN0IFJlbmRlckJveCYgcGFyZW50LCBFRGlzcGxheSBkaXNwbGF5KQoraW5saW5lIFJlbmRl
clB0cjxSZW5kZXJCbG9jaz4gUmVuZGVyQmxvY2s6OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRS
ZW5kZXJlckFuZERpc3BsYXkoY29uc3QgUmVuZGVyQm94JiBwYXJlbnQsIERpc3BsYXlUeXBlIGRp
c3BsYXkpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUFub255bW91c0Jsb2NrV2l0aFN0eWxlQW5kRGlz
cGxheShwYXJlbnQuZG9jdW1lbnQoKSwgcGFyZW50LnN0eWxlKCksIGRpc3BsYXkpOwogfQpAQCAt
NTM1LDcgKzUzNSw3IEBAIGlubGluZSBSZW5kZXJQdHI8UmVuZGVyQm94PiBSZW5kZXJCbG9jazoK
ICAgICByZXR1cm4gY3JlYXRlQW5vbnltb3VzQmxvY2tXaXRoU3R5bGVBbmREaXNwbGF5KGRvY3Vt
ZW50KCksIHJlbmRlcmVyLnN0eWxlKCksIHN0eWxlKCkuZGlzcGxheSgpKTsKIH0KIAotaW5saW5l
IFJlbmRlclB0cjxSZW5kZXJCbG9jaz4gUmVuZGVyQmxvY2s6OmNyZWF0ZUFub255bW91c0Jsb2Nr
KEVEaXNwbGF5IGRpc3BsYXkpIGNvbnN0CitpbmxpbmUgUmVuZGVyUHRyPFJlbmRlckJsb2NrPiBS
ZW5kZXJCbG9jazo6Y3JlYXRlQW5vbnltb3VzQmxvY2soRGlzcGxheVR5cGUgZGlzcGxheSkgY29u
c3QKIHsKICAgICByZXR1cm4gY3JlYXRlQW5vbnltb3VzQmxvY2tXaXRoU3R5bGVBbmREaXNwbGF5
KGRvY3VtZW50KCksIHN0eWxlKCksIGRpc3BsYXkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MTgsNyArNDE4LDcgQEAgYm9vbCBSZW5kZXJCbG9ja0Zsb3c6OndpbGxDcmVhdGVDb2x1
bW5zKAogICAgIGlmICghZmlyc3RDaGlsZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBpZiAoc3R5bGUoKS5zdHlsZVR5cGUoKSAhPSBOT1BTRVVETykKKyAgICBpZiAoc3R5bGUoKS5z
dHlsZVR5cGUoKSAhPSBQc2V1ZG9JZDo6Tm9uZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgLy8gSWYgb3ZlcmZsb3cteSBpcyBzZXQgdG8gcGFnZWQteCBvciBwYWdlZC15IG9uIHRoZSBi
b2R5IG9yIGh0bWwgZWxlbWVudCwgd2UnbGwgaGFuZGxlIHRoZSBwYWdpbmF0aW5nIGluIHRoZSBS
ZW5kZXJWaWV3IGluc3RlYWQuCkBAIC01NjgsNyArNTY4LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zs
b3c6OmxheW91dEJsb2NrKGJvb2wgcgogICAgIC8vIEZJWE1FOiBUaGlzIHJlcGFpbnQgbG9naWMg
c2hvdWxkIGJlIG1vdmVkIGludG8gYSBzZXBhcmF0ZSBoZWxwZXIgZnVuY3Rpb24hCiAgICAgLy8g
UmVwYWludCB3aXRoIG91ciBuZXcgYm91bmRzIGlmIHRoZXkgYXJlIGRpZmZlcmVudCBmcm9tIG91
ciBvbGQgYm91bmRzLgogICAgIGJvb2wgZGlkRnVsbFJlcGFpbnQgPSByZXBhaW50ZXIucmVwYWlu
dEFmdGVyTGF5b3V0KCk7Ci0gICAgaWYgKCFkaWRGdWxsUmVwYWludCAmJiByZXBhaW50TG9naWNh
bFRvcCAhPSByZXBhaW50TG9naWNhbEJvdHRvbSAmJiAoc3R5bGVUb1VzZS52aXNpYmlsaXR5KCkg
PT0gVklTSUJMRSB8fCBlbmNsb3NpbmdMYXllcigpLT5oYXNWaXNpYmxlQ29udGVudCgpKSkgewor
ICAgIGlmICghZGlkRnVsbFJlcGFpbnQgJiYgcmVwYWludExvZ2ljYWxUb3AgIT0gcmVwYWludExv
Z2ljYWxCb3R0b20gJiYgKHN0eWxlVG9Vc2UudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZp
c2libGUgfHwgZW5jbG9zaW5nTGF5ZXIoKS0+aGFzVmlzaWJsZUNvbnRlbnQoKSkpIHsKICAgICAg
ICAgLy8gRklYTUU6IFdlIGNvdWxkIHRpZ2h0ZW4gdXAgdGhlIGxlZnQgYW5kIHJpZ2h0IGludmFs
aWRhdGlvbiBwb2ludHMgaWYgd2UgbGV0IGxheW91dElubGluZUNoaWxkcmVuIGZpbGwgdGhlbSBp
biBiYXNlZCBvZmYgdGhlIHBhcnRpY3VsYXIgbGluZXMKICAgICAgICAgLy8gaXQgaGFkIHRvIGxh
eSBvdXQuIFdlIHdvdWxkbid0IG5lZWQgdGhlIGhhc092ZXJmbG93Q2xpcCgpIGhhY2sgaW4gdGhh
dCBjYXNlIGVpdGhlci4KICAgICAgICAgTGF5b3V0VW5pdCByZXBhaW50TG9naWNhbExlZnQgPSBs
b2dpY2FsTGVmdFZpc3VhbE92ZXJmbG93KCk7CkBAIC0xNTAxLDcgKzE1MDEsNyBAQCBMYXlvdXRV
bml0IFJlbmRlckJsb2NrRmxvdzo6YXBwbHlCZWZvcmVCCiAgICAgYm9vbCBjaGVja0NvbHVtbkJy
ZWFrcyA9IGZyYWdtZW50ZWRGbG93ICYmIGZyYWdtZW50ZWRGbG93LT5zaG91bGRDaGVja0NvbHVt
bkJyZWFrcygpOwogICAgIGJvb2wgY2hlY2tQYWdlQnJlYWtzID0gIWNoZWNrQ29sdW1uQnJlYWtz
ICYmIHZpZXcoKS5mcmFtZVZpZXcoKS5sYXlvdXRDb250ZXh0KCkubGF5b3V0U3RhdGUoKS0+cGFn
ZUxvZ2ljYWxIZWlnaHQoKTsgLy8gRklYTUU6IE9uY2UgY29sdW1ucyBjYW4gcHJpbnQgd2UgaGF2
ZSB0byBjaGVjayB0aGlzLgogICAgIGJvb2wgY2hlY2tGcmFnbWVudEJyZWFrcyA9IGZhbHNlOwot
ICAgIGJvb2wgY2hlY2tCZWZvcmVBbHdheXMgPSAoY2hlY2tDb2x1bW5CcmVha3MgJiYgY2hpbGQu
c3R5bGUoKS5icmVha0JlZm9yZSgpID09IENvbHVtbkJyZWFrQmV0d2VlbikKKyAgICBib29sIGNo
ZWNrQmVmb3JlQWx3YXlzID0gKGNoZWNrQ29sdW1uQnJlYWtzICYmIGNoaWxkLnN0eWxlKCkuYnJl
YWtCZWZvcmUoKSA9PSBCcmVha0JldHdlZW46OkNvbHVtbikKICAgICAgICAgfHwgKGNoZWNrUGFn
ZUJyZWFrcyAmJiBhbHdheXNQYWdlQnJlYWsoY2hpbGQuc3R5bGUoKS5icmVha0JlZm9yZSgpKSk7
CiAgICAgaWYgKGNoZWNrQmVmb3JlQWx3YXlzICYmIGluTm9ybWFsRmxvdyhjaGlsZCkgJiYgaGFz
TmV4dFBhZ2UobG9naWNhbE9mZnNldCwgSW5jbHVkZVBhZ2VCb3VuZGFyeSkpIHsKICAgICAgICAg
aWYgKGNoZWNrQ29sdW1uQnJlYWtzKSB7CkBAIC0xNTI2LDcgKzE1MjYsNyBAQCBMYXlvdXRVbml0
IFJlbmRlckJsb2NrRmxvdzo6YXBwbHlBZnRlckJyCiAgICAgYm9vbCBjaGVja0NvbHVtbkJyZWFr
cyA9IGZyYWdtZW50ZWRGbG93ICYmIGZyYWdtZW50ZWRGbG93LT5zaG91bGRDaGVja0NvbHVtbkJy
ZWFrcygpOwogICAgIGJvb2wgY2hlY2tQYWdlQnJlYWtzID0gIWNoZWNrQ29sdW1uQnJlYWtzICYm
IHZpZXcoKS5mcmFtZVZpZXcoKS5sYXlvdXRDb250ZXh0KCkubGF5b3V0U3RhdGUoKS0+cGFnZUxv
Z2ljYWxIZWlnaHQoKTsgLy8gRklYTUU6IE9uY2UgY29sdW1ucyBjYW4gcHJpbnQgd2UgaGF2ZSB0
byBjaGVjayB0aGlzLgogICAgIGJvb2wgY2hlY2tGcmFnbWVudEJyZWFrcyA9IGZhbHNlOwotICAg
IGJvb2wgY2hlY2tBZnRlckFsd2F5cyA9IChjaGVja0NvbHVtbkJyZWFrcyAmJiBjaGlsZC5zdHls
ZSgpLmJyZWFrQWZ0ZXIoKSA9PSBDb2x1bW5CcmVha0JldHdlZW4pCisgICAgYm9vbCBjaGVja0Fm
dGVyQWx3YXlzID0gKGNoZWNrQ29sdW1uQnJlYWtzICYmIGNoaWxkLnN0eWxlKCkuYnJlYWtBZnRl
cigpID09IEJyZWFrQmV0d2Vlbjo6Q29sdW1uKQogICAgICAgICB8fCAoY2hlY2tQYWdlQnJlYWtz
ICYmIGFsd2F5c1BhZ2VCcmVhayhjaGlsZC5zdHlsZSgpLmJyZWFrQWZ0ZXIoKSkpOwogICAgIGlm
IChjaGVja0FmdGVyQWx3YXlzICYmIGluTm9ybWFsRmxvdyhjaGlsZCkgJiYgaGFzTmV4dFBhZ2Uo
bG9naWNhbE9mZnNldCwgSW5jbHVkZVBhZ2VCb3VuZGFyeSkpIHsKICAgICAgICAgTGF5b3V0VW5p
dCBtYXJnaW5PZmZzZXQgPSBtYXJnaW5JbmZvLmNhbkNvbGxhcHNlV2l0aE1hcmdpbkJlZm9yZSgp
ID8gTGF5b3V0VW5pdCgpIDogbWFyZ2luSW5mby5tYXJnaW4oKTsKQEAgLTE4NTQsNyArMTg1NCw3
IEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2tGbG93OjphZGp1c3RGb3JVbnMKICAgICAgICAgaWYg
KCFoYXNVbmlmb3JtUGFnZUxvZ2ljYWxIZWlnaHQgJiYgIXB1c2hUb05leHRQYWdlV2l0aE1pbmlt
dW1Mb2dpY2FsSGVpZ2h0KHJlbWFpbmluZ0xvZ2ljYWxIZWlnaHQsIGxvZ2ljYWxPZmZzZXQsIGNo
aWxkTG9naWNhbEhlaWdodCkpCiAgICAgICAgICAgICByZXR1cm4gbG9naWNhbE9mZnNldDsKICAg
ICAgICAgYXV0byByZXN1bHQgPSBsb2dpY2FsT2Zmc2V0ICsgcmVtYWluaW5nTG9naWNhbEhlaWdo
dDsKLSAgICAgICAgYm9vbCBpc0luaXRpYWxMZXR0ZXIgPSBjaGlsZC5pc0Zsb2F0aW5nKCkgJiYg
Y2hpbGQuc3R5bGUoKS5zdHlsZVR5cGUoKSA9PSBGSVJTVF9MRVRURVIgJiYgY2hpbGQuc3R5bGUo
KS5pbml0aWFsTGV0dGVyRHJvcCgpID4gMDsKKyAgICAgICAgYm9vbCBpc0luaXRpYWxMZXR0ZXIg
PSBjaGlsZC5pc0Zsb2F0aW5nKCkgJiYgY2hpbGQuc3R5bGUoKS5zdHlsZVR5cGUoKSA9PSBQc2V1
ZG9JZDo6Rmlyc3RMZXR0ZXIgJiYgY2hpbGQuc3R5bGUoKS5pbml0aWFsTGV0dGVyRHJvcCgpID4g
MDsKICAgICAgICAgaWYgKGlzSW5pdGlhbExldHRlcikgewogICAgICAgICAgICAgLy8gSW5jcmVh
c2Ugb3VyIGxvZ2ljYWwgaGVpZ2h0IHRvIGVuc3VyZSB0aGF0IGxpbmVzIGFsbCBnZXQgcHVzaGVk
IGFsb25nIHdpdGggdGhlIGxldHRlci4KICAgICAgICAgICAgIHNldExvZ2ljYWxIZWlnaHQobG9n
aWNhbE9mZnNldCArIHJlbWFpbmluZ0xvZ2ljYWxIZWlnaHQpOwpAQCAtMjAzNSw3ICsyMDM1LDcg
QEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnN0eWxlRGlkQ2hhbmdlKFN0eQogdm9pZCBSZW5kZXJC
bG9ja0Zsb3c6OnVwZGF0ZVN0eWxlc0ZvckNvbHVtbkNoaWxkcmVuKCkKIHsKICAgICBmb3IgKGF1
dG8qIGNoaWxkID0gZmlyc3RDaGlsZEJveCgpOyBjaGlsZCAmJiAoY2hpbGQtPmlzSW5GbG93UmVu
ZGVyRnJhZ21lbnRlZEZsb3coKSB8fCBjaGlsZC0+aXNSZW5kZXJNdWx0aUNvbHVtblNldCgpKTsg
Y2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmdCb3goKSkKLSAgICAgICAgY2hpbGQtPnNldFN0eWxl
KFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlKCksIEJM
T0NLKSk7CisgICAgICAgIGNoaWxkLT5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnlt
b3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSgpLCBEaXNwbGF5VHlwZTo6QmxvY2spKTsKIH0KIAog
dm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlm
ZiwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKQpAQCAtMjM0NSw3ICsyMzQ1LDcgQEAgdm9p
ZCBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVMb2dpY2FsTG9jYQogICAgIExheW91dFVuaXQgZmxv
YXRMb2dpY2FsTGVmdDsKIAogICAgIGJvb2wgaW5zaWRlRnJhZ21lbnRlZEZsb3cgPSBlbmNsb3Np
bmdGcmFnbWVudGVkRmxvdygpOwotICAgIGJvb2wgaXNJbml0aWFsTGV0dGVyID0gY2hpbGRCb3gu
c3R5bGUoKS5zdHlsZVR5cGUoKSA9PSBGSVJTVF9MRVRURVIgJiYgY2hpbGRCb3guc3R5bGUoKS5p
bml0aWFsTGV0dGVyRHJvcCgpID4gMDsKKyAgICBib29sIGlzSW5pdGlhbExldHRlciA9IGNoaWxk
Qm94LnN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6OkZpcnN0TGV0dGVyICYmIGNoaWxk
Qm94LnN0eWxlKCkuaW5pdGlhbExldHRlckRyb3AoKSA+IDA7CiAgICAgCiAgICAgaWYgKGlzSW5p
dGlhbExldHRlcikgewogICAgICAgICBpbnQgbGV0dGVyQ2xlYXJhbmNlID0gbG93ZXN0SW5pdGlh
bExldHRlckxvZ2ljYWxCb3R0b20oKSAtIGxvZ2ljYWxUb3BPZmZzZXQ7CkBAIC0yNjE1LDcgKzI2
MTUsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrRmxvdzo6bG93ZXN0SW5pdGlhCiAgICAgYXV0
byBlbmQgPSBmbG9hdGluZ09iamVjdFNldC5lbmQoKTsKICAgICBmb3IgKGF1dG8gaXQgPSBmbG9h
dGluZ09iamVjdFNldC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgY29uc3Qg
YXV0byYgZmxvYXRpbmdPYmplY3QgPSAqaXQtPmdldCgpOwotICAgICAgICBpZiAoZmxvYXRpbmdP
YmplY3QuaXNQbGFjZWQoKSAmJiBmbG9hdGluZ09iamVjdC5yZW5kZXJlcigpLnN0eWxlKCkuc3R5
bGVUeXBlKCkgPT0gRklSU1RfTEVUVEVSICYmIGZsb2F0aW5nT2JqZWN0LnJlbmRlcmVyKCkuc3R5
bGUoKS5pbml0aWFsTGV0dGVyRHJvcCgpID4gMCkKKyAgICAgICAgaWYgKGZsb2F0aW5nT2JqZWN0
LmlzUGxhY2VkKCkgJiYgZmxvYXRpbmdPYmplY3QucmVuZGVyZXIoKS5zdHlsZSgpLnN0eWxlVHlw
ZSgpID09IFBzZXVkb0lkOjpGaXJzdExldHRlciAmJiBmbG9hdGluZ09iamVjdC5yZW5kZXJlcigp
LnN0eWxlKCkuaW5pdGlhbExldHRlckRyb3AoKSA+IDApCiAgICAgICAgICAgICBsb3dlc3RGbG9h
dEJvdHRvbSA9IHN0ZDo6bWF4KGxvd2VzdEZsb2F0Qm90dG9tLCBsb2dpY2FsQm90dG9tRm9yRmxv
YXQoZmxvYXRpbmdPYmplY3QpKTsKICAgICB9CiAgICAgcmV0dXJuIGxvd2VzdEZsb2F0Qm90dG9t
OwpAQCAtMjkwNyw3ICsyOTA3LDcgQEAgYm9vbCBSZW5kZXJCbG9ja0Zsb3c6OmhpdFRlc3RJbmxp
bmVDaGlsZAogCiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6YWRqdXN0Rm9yQm9yZGVyRml0KExheW91
dFVuaXQgeCwgTGF5b3V0VW5pdCYgbGVmdCwgTGF5b3V0VW5pdCYgcmlnaHQpIGNvbnN0CiB7Ci0g
ICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKHN0eWxlKCku
dmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIC8vIFdlIGRvbid0IGRlYWwgd2l0aCByZWxhdGl2ZSBwb3NpdGlvbmluZy4gIE91ciBhc3N1
bXB0aW9uIGlzIHRoYXQgeW91IHNocmluayB0byBmaXQgdGhlIGxpbmVzIHdpdGhvdXQgYWNjb3Vu
dGluZwpAQCAtMjkyNiw3ICsyOTI2LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmFkanVzdEZv
ckJvcmRlckZpdAogICAgICAgICAgICAgaWYgKCFvYmotPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bv
c2l0aW9uZWQoKSkgewogICAgICAgICAgICAgICAgIGlmIChpczxSZW5kZXJCbG9ja0Zsb3c+KCpv
YmopICYmICFvYmotPmhhc092ZXJmbG93Q2xpcCgpKQogICAgICAgICAgICAgICAgICAgICBkb3du
Y2FzdDxSZW5kZXJCbG9ja0Zsb3c+KCpvYmopLmFkanVzdEZvckJvcmRlckZpdCh4ICsgb2JqLT54
KCksIGxlZnQsIHJpZ2h0KTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChvYmotPnN0eWxlKCku
dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpIHsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChvYmot
PnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUpIHsKICAgICAgICAg
ICAgICAgICAgICAgLy8gV2UgYXJlIGEgcmVwbGFjZWQgZWxlbWVudCBvciBzb21lIGtpbmQgb2Yg
bm9uLWJsb2NrLWZsb3cgb2JqZWN0LgogICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gc3RkOjpt
aW4obGVmdCwgeCArIG9iai0+eCgpKTsKICAgICAgICAgICAgICAgICAgICAgcmlnaHQgPSBzdGQ6
Om1heChyaWdodCwgeCArIG9iai0+eCgpICsgb2JqLT53aWR0aCgpKTsKQEAgLTI5NTMsNyArMjk1
Myw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjphZGp1c3RGb3JCb3JkZXJGaXQKIAogdm9pZCBS
ZW5kZXJCbG9ja0Zsb3c6OmZpdEJvcmRlclRvTGluZXNJZk5lZWRlZCgpCiB7Ci0gICAgaWYgKHN0
eWxlKCkuYm9yZGVyRml0KCkgPT0gQm9yZGVyRml0Qm9yZGVyIHx8IGhhc092ZXJyaWRlQ29udGVu
dExvZ2ljYWxXaWR0aCgpKQorICAgIGlmIChzdHlsZSgpLmJvcmRlckZpdCgpID09IEJvcmRlckZp
dDo6Qm9yZGVyIHx8IGhhc092ZXJyaWRlQ29udGVudExvZ2ljYWxXaWR0aCgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICAvLyBXYWxrIGFueSBub3JtYWwgZmxvdyBsaW5lcyB0byBzbnVnbHkgZml0
LgpAQCAtMzE1Myw3ICszMTUzLDcgQEAgUm9vdElubGluZUJveCogUmVuZGVyQmxvY2tGbG93Ojps
aW5lQXRJbgogewogICAgIEFTU0VSVChpID49IDApOwogCi0gICAgaWYgKHN0eWxlKCkudmlzaWJp
bGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2li
aWxpdHk6OlZpc2libGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKGNoaWxk
cmVuSW5saW5lKCkpIHsKQEAgLTMxNzYsNyArMzE3Niw3IEBAIFJvb3RJbmxpbmVCb3gqIFJlbmRl
ckJsb2NrRmxvdzo6bGluZUF0SW4KIAogaW50IFJlbmRlckJsb2NrRmxvdzo6bGluZUNvdW50KGNv
bnN0IFJvb3RJbmxpbmVCb3gqIHN0b3BSb290SW5saW5lQm94LCBib29sKiBmb3VuZCkgY29uc3QK
IHsKLSAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAoc3R5
bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICBpbnQgY291bnQgPSAwOwpAQCAtMzIxNCw3ICszMjE0LDcgQEAgaW50IFJlbmRl
ckJsb2NrRmxvdzo6bGluZUNvdW50KGNvbnN0IFJvbwogCiBzdGF0aWMgaW50IGdldEhlaWdodEZv
ckxpbmVDb3VudChjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrLCBpbnQgbGluZUNvdW50LCBi
b29sIGluY2x1ZGVFZGdlQm9yZGVyUGFkZGluZywgYm9vbCBmb3J3YXJkLCBpbnQmIGNvdW50KQog
ewotICAgIGlmIChibG9jay5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlm
IChibG9jay5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAg
ICAgICByZXR1cm4gLTE7CiAKICAgICAvLyBGSVhNRTogT3J0aG9nb25hbCB3cml0aW5nIG1vZGVz
IGRvbid0IHdvcmsgaGVyZSwgYnV0IGl0J3Mgbm90IGV2ZW4gY2xlYXIgaG93IHRoZXkgc2hvdWxk
IGJlaGF2ZSBhbnl3YXkuCkBAIC0zMjY0LDcgKzMyNjQsNyBAQCBpbnQgUmVuZGVyQmxvY2tGbG93
Ojpsb2dpY2FsSGVpZ2h0RXhjbHVkCiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpjbGVhclRydW5j
YXRpb24oKQogewotICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAg
IGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAoY2hpbGRyZW5JbmxpbmUoKSAmJiBoYXNNYXJrdXBUcnVuY2F0
aW9uKCkpIHsKQEAgLTMzMjMsNyArMzMyMyw3IEBAIFJlbmRlclRleHQqIFJlbmRlckJsb2NrRmxv
dzo6ZmluZENsb3Nlc3QKICAgICBpZiAoIWJsb2NrLT5jaGlsZHJlbklubGluZSgpKSB7CiAgICAg
ICAgIC8vIExvb2sgYW1vbmcgb3VyIGltbWVkaWF0ZSBjaGlsZHJlbiBmb3IgYW4gYWx0ZXJuYXRl
IGJveCB0aGF0IGNvbnRhaW5zIHRoZSBwb2ludC4KICAgICAgICAgZm9yIChSZW5kZXJCb3gqIGNo
aWxkID0gYmxvY2stPmZpcnN0Q2hpbGRCb3goKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRT
aWJsaW5nQm94KCkpIHsKLSAgICAgICAgICAgIGlmICghY2hpbGQtPmhlaWdodCgpIHx8IGNoaWxk
LT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBXZWJDb3JlOjpWSVNJQkxFIHx8IGNoaWxkLT5pc0Zs
b2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCisgICAgICAgICAgICBpZiAoIWNoaWxkLT5o
ZWlnaHQoKSB8fCBjaGlsZC0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gV2ViQ29yZTo6VmlzaWJp
bGl0eTo6VmlzaWJsZSB8fCBjaGlsZC0+aXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgp
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgZmxvYXQgdG9wID0gY2hp
bGQtPnkoKTsKICAgICAgICAgICAgIApAQCAtMzcwNyw3ICszNzA3LDcgQEAgc3RhdGljIGlubGlu
ZSBib29sIHJlc2l6ZVRleHRQZXJtaXR0ZWQoYwogCiBpbnQgUmVuZGVyQmxvY2tGbG93OjpsaW5l
Q291bnRGb3JUZXh0QXV0b3NpemluZygpCiB7Ci0gICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgp
ICE9IFZJU0lCTEUpCisgICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6
OlZpc2libGUpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChjaGlsZHJlbklubGluZSgpKQog
ICAgICAgICByZXR1cm4gbGluZUNvdW50KCk7CkBAIC0zODg4LDcgKzM4ODgsNyBAQCB2b2lkIFJl
bmRlckJsb2NrRmxvdzo6c2V0Q29tcHV0ZWRDb2x1bW5DCiAgICAgICAgIHJldHVybjsKICAgICBt
dWx0aUNvbHVtbkZsb3coKS0+c2V0Q29sdW1uQ291bnRBbmRXaWR0aChjb3VudCwgd2lkdGgpOwog
ICAgIG11bHRpQ29sdW1uRmxvdygpLT5zZXRQcm9ncmVzc2lvbklzSW5saW5lKHN0eWxlKCkuaGFz
SW5saW5lQ29sdW1uQXhpcygpKTsKLSAgICBtdWx0aUNvbHVtbkZsb3coKS0+c2V0UHJvZ3Jlc3Np
b25Jc1JldmVyc2VkKHN0eWxlKCkuY29sdW1uUHJvZ3Jlc3Npb24oKSA9PSBSZXZlcnNlQ29sdW1u
UHJvZ3Jlc3Npb24pOworICAgIG11bHRpQ29sdW1uRmxvdygpLT5zZXRQcm9ncmVzc2lvbklzUmV2
ZXJzZWQoc3R5bGUoKS5jb2x1bW5Qcm9ncmVzc2lvbigpID09IENvbHVtblByb2dyZXNzaW9uOjpS
ZXZlcnNlKTsKIH0KIAogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnVwZGF0ZUNvbHVtblByb2dyZXNz
aW9uRnJvbVN0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSkKQEAgLTM5MDUsNyArMzkwNSw3IEBAIHZv
aWQgUmVuZGVyQmxvY2tGbG93Ojp1cGRhdGVDb2x1bW5Qcm9ncmUKICAgICB9CiAKICAgICBib29s
IG9sZFByb2dyZXNzaW9uSXNSZXZlcnNlZCA9IG11bHRpQ29sdW1uRmxvdygpLT5wcm9ncmVzc2lv
bklzUmV2ZXJzZWQoKTsKLSAgICBib29sIG5ld1Byb2dyZXNzaW9uSXNSZXZlcnNlZCA9IHN0eWxl
LmNvbHVtblByb2dyZXNzaW9uKCkgPT0gUmV2ZXJzZUNvbHVtblByb2dyZXNzaW9uOworICAgIGJv
b2wgbmV3UHJvZ3Jlc3Npb25Jc1JldmVyc2VkID0gc3R5bGUuY29sdW1uUHJvZ3Jlc3Npb24oKSA9
PSBDb2x1bW5Qcm9ncmVzc2lvbjo6UmV2ZXJzZTsKICAgICBpZiAob2xkUHJvZ3Jlc3Npb25Jc1Jl
dmVyc2VkICE9IG5ld1Byb2dyZXNzaW9uSXNSZXZlcnNlZCkgewogICAgICAgICBtdWx0aUNvbHVt
bkZsb3coKS0+c2V0UHJvZ3Jlc3Npb25Jc1JldmVyc2VkKG5ld1Byb2dyZXNzaW9uSXNSZXZlcnNl
ZCk7CiAgICAgICAgIG5lZWRzTGF5b3V0ID0gdHJ1ZTsKQEAgLTM5MzMsNyArMzkzMyw3IEBAIHVu
c2lnbmVkIFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZWRDb2x1bW4KIGJvb2wgUmVuZGVyQmxvY2tG
bG93Ojppc1RvcExheW91dE92ZXJmbG93QWxsb3dlZCgpIGNvbnN0CiB7CiAgICAgYm9vbCBoYXNU
b3BPdmVyZmxvdyA9IFJlbmRlckJsb2NrOjppc1RvcExheW91dE92ZXJmbG93QWxsb3dlZCgpOwot
ICAgIGlmICghbXVsdGlDb2x1bW5GbG93KCkgfHwgc3R5bGUoKS5jb2x1bW5Qcm9ncmVzc2lvbigp
ID09IE5vcm1hbENvbHVtblByb2dyZXNzaW9uKQorICAgIGlmICghbXVsdGlDb2x1bW5GbG93KCkg
fHwgc3R5bGUoKS5jb2x1bW5Qcm9ncmVzc2lvbigpID09IENvbHVtblByb2dyZXNzaW9uOjpOb3Jt
YWwpCiAgICAgICAgIHJldHVybiBoYXNUb3BPdmVyZmxvdzsKICAgICAKICAgICBpZiAoIShpc0hv
cml6b250YWxXcml0aW5nTW9kZSgpIF4gIXN0eWxlKCkuaGFzSW5saW5lQ29sdW1uQXhpcygpKSkK
QEAgLTM5NDUsNyArMzk0NSw3IEBAIGJvb2wgUmVuZGVyQmxvY2tGbG93Ojppc1RvcExheW91dE92
ZXJmbG8KIGJvb2wgUmVuZGVyQmxvY2tGbG93Ojppc0xlZnRMYXlvdXRPdmVyZmxvd0FsbG93ZWQo
KSBjb25zdAogewogICAgIGJvb2wgaGFzTGVmdE92ZXJmbG93ID0gUmVuZGVyQmxvY2s6OmlzTGVm
dExheW91dE92ZXJmbG93QWxsb3dlZCgpOwotICAgIGlmICghbXVsdGlDb2x1bW5GbG93KCkgfHwg
c3R5bGUoKS5jb2x1bW5Qcm9ncmVzc2lvbigpID09IE5vcm1hbENvbHVtblByb2dyZXNzaW9uKQor
ICAgIGlmICghbXVsdGlDb2x1bW5GbG93KCkgfHwgc3R5bGUoKS5jb2x1bW5Qcm9ncmVzc2lvbigp
ID09IENvbHVtblByb2dyZXNzaW9uOjpOb3JtYWwpCiAgICAgICAgIHJldHVybiBoYXNMZWZ0T3Zl
cmZsb3c7CiAgICAgCiAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgXiAhc3R5bGUo
KS5oYXNJbmxpbmVDb2x1bW5BeGlzKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrRmxvdy5oCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzMiw3ICs1MzIs
NyBAQCBwdWJsaWM6CiAgICAgUm9vdElubGluZUJveCogY3JlYXRlQW5kQXBwZW5kUm9vdElubGlu
ZUJveCgpOwogCiAgICAgTGF5b3V0VW5pdCBzdGFydEFsaWduZWRPZmZzZXRGb3JMaW5lKExheW91
dFVuaXQgcG9zaXRpb24sIEluZGVudFRleHRPck5vdCBzaG91bGRJbmRlbnRUZXh0KTsKLSAgICB2
aXJ0dWFsIEVUZXh0QWxpZ24gdGV4dEFsaWdubWVudEZvckxpbmUoYm9vbCBlbmRzV2l0aFNvZnRC
cmVhaykgY29uc3Q7CisgICAgdmlydHVhbCBUZXh0QWxpZ25Nb2RlIHRleHRBbGlnbm1lbnRGb3JM
aW5lKGJvb2wgZW5kc1dpdGhTb2Z0QnJlYWspIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBhZGp1
c3RJbmxpbmVEaXJlY3Rpb25MaW5lQm91bmRzKGludCAvKiBleHBhbnNpb25PcHBvcnR1bml0eUNv
dW50ICovLCBmbG9hdCYgLyogbG9naWNhbExlZnQgKi8sIGZsb2F0JiAvKiBsb2dpY2FsV2lkdGgg
Ki8pIGNvbnN0IHsgfQogICAgIFJvb3RJbmxpbmVCb3gqIGNvbnN0cnVjdExpbmUoQmlkaVJ1bkxp
c3Q8QmlkaVJ1bj4mLCBjb25zdCBMaW5lSW5mbyYpOwogCkBAIC01NDgsNyArNTQ4LDcgQEAgcHJp
dmF0ZTogICAgICAgIAogICAgIHZvaWQgY29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0Zv
ckxpbmUoUm9vdElubGluZUJveCosIGNvbnN0IExpbmVJbmZvJiwgQmlkaVJ1biogZmlyc3RSdW4s
IEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4sIGJvb2wgcmVhY2hlZEVuZCwgR2x5cGhPdmVyZmxv
d0FuZEZhbGxiYWNrRm9udHNNYXAmLCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmLCBXb3JkTWVhc3Vy
ZW1lbnRzJik7CiAgICAgdm9pZCB1cGRhdGVSdWJ5Rm9ySnVzdGlmaWVkVGV4dChSZW5kZXJSdWJ5
UnVuJiwgQmlkaVJ1biYsIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZCwgMTY+JiBleHBhbnNpb25PcHBv
cnR1bml0aWVzLCB1bnNpZ25lZCYgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCwgZmxvYXQmIHRv
dGFsTG9naWNhbFdpZHRoLCBmbG9hdCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIHNpemVfdCYgZXhw
YW5zaW9uSW5kZXgpOwogICAgIHZvaWQgY29tcHV0ZUV4cGFuc2lvbkZvckp1c3RpZmllZFRleHQo
QmlkaVJ1biogZmlyc3RSdW4sIEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4sIGNvbnN0IFZlY3Rv
cjx1bnNpZ25lZCwgMTY+JiBleHBhbnNpb25PcHBvcnR1bml0aWVzLCB1bnNpZ25lZCBleHBhbnNp
b25PcHBvcnR1bml0eUNvdW50LCBmbG9hdCB0b3RhbExvZ2ljYWxXaWR0aCwgZmxvYXQgYXZhaWxh
YmxlTG9naWNhbFdpZHRoKTsKLSAgICBCaWRpUnVuKiBjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9z
aXRpb25zRm9yU2VnbWVudChSb290SW5saW5lQm94KiwgY29uc3QgTGluZUluZm8mLCBFVGV4dEFs
aWduLCBmbG9hdCYgbG9naWNhbExlZnQsCisgICAgQmlkaVJ1biogY29tcHV0ZUlubGluZURpcmVj
dGlvblBvc2l0aW9uc0ZvclNlZ21lbnQoUm9vdElubGluZUJveCosIGNvbnN0IExpbmVJbmZvJiwg
VGV4dEFsaWduTW9kZSwgZmxvYXQmIGxvZ2ljYWxMZWZ0LAogICAgICAgICBmbG9hdCYgYXZhaWxh
YmxlTG9naWNhbFdpZHRoLCBCaWRpUnVuKiBmaXJzdFJ1biwgQmlkaVJ1biogdHJhaWxpbmdTcGFj
ZVJ1biwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmIHRleHRCb3hEYXRhTWFwLCBW
ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmLCBXb3JkTWVhc3VyZW1lbnRzJik7CiAgICAgdm9pZCBjb21w
dXRlQmxvY2tEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKFJvb3RJbmxpbmVCb3gqLCBCaWRpUnVu
KiwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmLCBWZXJ0aWNhbFBvc2l0aW9uQ2Fj
aGUmKTsKICAgICBCaWRpUnVuKiBoYW5kbGVUcmFpbGluZ1NwYWNlcyhCaWRpUnVuTGlzdDxCaWRp
UnVuPiYsIEJpZGlDb250ZXh0Kik7CkBAIC01NzUsNyArNTc1LDcgQEAgcHJpdmF0ZTogICAgICAg
IAogICAgIC8vIHBhZ2UvY29sdW1uIHRoYXQgaGFzIGEgZGlmZmVyZW50IGF2YWlsYWJsZSBsaW5l
IHdpZHRoIHRoYW4gdGhlIG9sZCBvbmUuIFVzZWQgdG8ga25vdyB3aGVuIHlvdSBoYXZlIHRvIGRp
cnR5IGEKICAgICAvLyBsaW5lLCBpLmUuLCB0aGF0IGl0IGNhbid0IGJlIHJlLXVzZWQuCiAgICAg
Ym9vbCBsaW5lV2lkdGhGb3JQYWdpbmF0ZWRMaW5lQ2hhbmdlZChSb290SW5saW5lQm94KiwgTGF5
b3V0VW5pdCBsaW5lRGVsdGEsIFJlbmRlckZyYWdtZW50ZWRGbG93KikgY29uc3Q7Ci0gICAgdm9p
ZCB1cGRhdGVMb2dpY2FsV2lkdGhGb3JBbGlnbm1lbnQoY29uc3QgRVRleHRBbGlnbiYsIGNvbnN0
IFJvb3RJbmxpbmVCb3gqLCBCaWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVuLCBmbG9hdCYgbG9naWNh
bExlZnQsIGZsb2F0JiB0b3RhbExvZ2ljYWxXaWR0aCwgZmxvYXQmIGF2YWlsYWJsZUxvZ2ljYWxX
aWR0aCwgaW50IGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQpOworICAgIHZvaWQgdXBkYXRlTG9n
aWNhbFdpZHRoRm9yQWxpZ25tZW50KGNvbnN0IFRleHRBbGlnbk1vZGUmLCBjb25zdCBSb290SW5s
aW5lQm94KiwgQmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1biwgZmxvYXQmIGxvZ2ljYWxMZWZ0LCBm
bG9hdCYgdG90YWxMb2dpY2FsV2lkdGgsIGZsb2F0JiBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIGlu
dCBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KTsKIC8vIEVORCBNRVRIT0RTIERFRklORUQgSU4g
UmVuZGVyQmxvY2tMaW5lTGF5b3V0CiAKICAgICB2b2lkIGNvbXB1dGVJbmxpbmVQcmVmZXJyZWRM
b2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4
TG9naWNhbFdpZHRoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0xpbmVMYXlvdXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzA2LDcgKzMwNiw3IEBAIFJvb3RJbmxpbmVCb3gqIFJlbmRlckJsb2NrRmxvdzo6
Y29uc3RydWMKICAgICAgICAgICAgIHBhcmVudEJveC0+YWRkVG9MaW5lKGJveCk7CiAgICAgICAg
IH0KIAotICAgICAgICBib29sIHZpc3VhbGx5T3JkZXJlZCA9IHItPnJlbmRlcmVyKCkuc3R5bGUo
KS5ydGxPcmRlcmluZygpID09IFZpc3VhbE9yZGVyOworICAgICAgICBib29sIHZpc3VhbGx5T3Jk
ZXJlZCA9IHItPnJlbmRlcmVyKCkuc3R5bGUoKS5ydGxPcmRlcmluZygpID09IE9yZGVyOjpWaXN1
YWw7CiAgICAgICAgIGJveC0+c2V0QmlkaUxldmVsKHItPmxldmVsKCkpOwogCiAgICAgICAgIGlm
IChpczxJbmxpbmVUZXh0Qm94PigqYm94KSkgewpAQCAtMzQyLDQyICszNDIsNDIgQEAgUm9vdElu
bGluZUJveCogUmVuZGVyQmxvY2tGbG93Ojpjb25zdHJ1YwogICAgIHJldHVybiBsYXN0Um9vdEJv
eCgpOwogfQogCi1FVGV4dEFsaWduIFJlbmRlckJsb2NrRmxvdzo6dGV4dEFsaWdubWVudEZvckxp
bmUoYm9vbCBlbmRzV2l0aFNvZnRCcmVhaykgY29uc3QKK1RleHRBbGlnbk1vZGUgUmVuZGVyQmxv
Y2tGbG93Ojp0ZXh0QWxpZ25tZW50Rm9yTGluZShib29sIGVuZHNXaXRoU29mdEJyZWFrKSBjb25z
dAogewotICAgIEVUZXh0QWxpZ24gYWxpZ25tZW50ID0gc3R5bGUoKS50ZXh0QWxpZ24oKTsKKyAg
ICBUZXh0QWxpZ25Nb2RlIGFsaWdubWVudCA9IHN0eWxlKCkudGV4dEFsaWduKCk7CiAjaWYgRU5B
QkxFKENTUzNfVEVYVCkKICAgICBUZXh0SnVzdGlmeSB0ZXh0SnVzdGlmeSA9IHN0eWxlKCkudGV4
dEp1c3RpZnkoKTsKLSAgICBpZiAoYWxpZ25tZW50ID09IEpVU1RJRlkgJiYgdGV4dEp1c3RpZnkg
PT0gVGV4dEp1c3RpZnlOb25lKQotICAgICAgICByZXR1cm4gc3R5bGUoKS5kaXJlY3Rpb24oKSA9
PSBMVFIgPyBMRUZUIDogUklHSFQ7CisgICAgaWYgKGFsaWdubWVudCA9PSBUZXh0QWxpZ25Nb2Rl
OjpKdXN0aWZ5ICYmIHRleHRKdXN0aWZ5ID09IFRleHRKdXN0aWZ5OjpOb25lKQorICAgICAgICBy
ZXR1cm4gc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBMVFIgPyBUZXh0QWxpZ25Nb2RlOjpMZWZ0IDog
VGV4dEFsaWduTW9kZTo6UmlnaHQ7CiAjZW5kaWYKIAogICAgIGlmIChlbmRzV2l0aFNvZnRCcmVh
aykKICAgICAgICAgcmV0dXJuIGFsaWdubWVudDsKIAogI2lmICFFTkFCTEUoQ1NTM19URVhUKQot
ICAgIHJldHVybiAoYWxpZ25tZW50ID09IEpVU1RJRlkpID8gVEFTVEFSVCA6IGFsaWdubWVudDsK
KyAgICByZXR1cm4gKGFsaWdubWVudCA9PSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5KSA/IFRleHRB
bGlnbk1vZGU6OlN0YXJ0IDogYWxpZ25tZW50OwogI2Vsc2UKLSAgICBpZiAoYWxpZ25tZW50ICE9
IEpVU1RJRlkpCisgICAgaWYgKGFsaWdubWVudCAhPSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5KQog
ICAgICAgICByZXR1cm4gYWxpZ25tZW50OwogCiAgICAgVGV4dEFsaWduTGFzdCBhbGlnbm1lbnRM
YXN0ID0gc3R5bGUoKS50ZXh0QWxpZ25MYXN0KCk7CiAgICAgc3dpdGNoIChhbGlnbm1lbnRMYXN0
KSB7Ci0gICAgY2FzZSBUZXh0QWxpZ25MYXN0U3RhcnQ6Ci0gICAgICAgIHJldHVybiBUQVNUQVJU
OwotICAgIGNhc2UgVGV4dEFsaWduTGFzdEVuZDoKLSAgICAgICAgcmV0dXJuIFRBRU5EOwotICAg
IGNhc2UgVGV4dEFsaWduTGFzdExlZnQ6Ci0gICAgICAgIHJldHVybiBMRUZUOwotICAgIGNhc2Ug
VGV4dEFsaWduTGFzdFJpZ2h0OgotICAgICAgICByZXR1cm4gUklHSFQ7Ci0gICAgY2FzZSBUZXh0
QWxpZ25MYXN0Q2VudGVyOgotICAgICAgICByZXR1cm4gQ0VOVEVSOwotICAgIGNhc2UgVGV4dEFs
aWduTGFzdEp1c3RpZnk6Ci0gICAgICAgIHJldHVybiBKVVNUSUZZOwotICAgIGNhc2UgVGV4dEFs
aWduTGFzdEF1dG86Ci0gICAgICAgIGlmICh0ZXh0SnVzdGlmeSA9PSBUZXh0SnVzdGlmeURpc3Ry
aWJ1dGUpCi0gICAgICAgICAgICByZXR1cm4gSlVTVElGWTsKLSAgICAgICAgcmV0dXJuIFRBU1RB
UlQ7CisgICAgY2FzZSBUZXh0QWxpZ25MYXN0OjpTdGFydDoKKyAgICAgICAgcmV0dXJuIFRleHRB
bGlnbk1vZGU6OlN0YXJ0OworICAgIGNhc2UgVGV4dEFsaWduTGFzdDo6RW5kOgorICAgICAgICBy
ZXR1cm4gVGV4dEFsaWduTW9kZTo6RW5kOworICAgIGNhc2UgVGV4dEFsaWduTGFzdDo6TGVmdDoK
KyAgICAgICAgcmV0dXJuIFRleHRBbGlnbk1vZGU6OkxlZnQ7CisgICAgY2FzZSBUZXh0QWxpZ25M
YXN0OjpSaWdodDoKKyAgICAgICAgcmV0dXJuIFRleHRBbGlnbk1vZGU6OlJpZ2h0OworICAgIGNh
c2UgVGV4dEFsaWduTGFzdDo6Q2VudGVyOgorICAgICAgICByZXR1cm4gVGV4dEFsaWduTW9kZTo6
Q2VudGVyOworICAgIGNhc2UgVGV4dEFsaWduTGFzdDo6SnVzdGlmeToKKyAgICAgICAgcmV0dXJu
IFRleHRBbGlnbk1vZGU6Okp1c3RpZnk7CisgICAgY2FzZSBUZXh0QWxpZ25MYXN0OjpBdXRvOgor
ICAgICAgICBpZiAodGV4dEp1c3RpZnkgPT0gVGV4dEp1c3RpZnk6OkRpc3RyaWJ1dGUpCisgICAg
ICAgICAgICByZXR1cm4gVGV4dEFsaWduTW9kZTo6SnVzdGlmeTsKKyAgICAgICAgcmV0dXJuIFRl
eHRBbGlnbk1vZGU6OlN0YXJ0OwogICAgIH0KICAgICByZXR1cm4gYWxpZ25tZW50OwogI2VuZGlm
CkBAIC02MTQsNyArNjE0LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVFeHBhbnNp
b25GbwogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnVwZGF0ZUxvZ2ljYWxXaWR0
aEZvckFsaWdubWVudChjb25zdCBFVGV4dEFsaWduJiB0ZXh0QWxpZ24sIGNvbnN0IFJvb3RJbmxp
bmVCb3gqIHJvb3RJbmxpbmVCb3gsIEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4sIGZsb2F0JiBs
b2dpY2FsTGVmdCwgZmxvYXQmIHRvdGFsTG9naWNhbFdpZHRoLCBmbG9hdCYgYXZhaWxhYmxlTG9n
aWNhbFdpZHRoLCBpbnQgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCkKK3ZvaWQgUmVuZGVyQmxv
Y2tGbG93Ojp1cGRhdGVMb2dpY2FsV2lkdGhGb3JBbGlnbm1lbnQoY29uc3QgVGV4dEFsaWduTW9k
ZSYgdGV4dEFsaWduLCBjb25zdCBSb290SW5saW5lQm94KiByb290SW5saW5lQm94LCBCaWRpUnVu
KiB0cmFpbGluZ1NwYWNlUnVuLCBmbG9hdCYgbG9naWNhbExlZnQsIGZsb2F0JiB0b3RhbExvZ2lj
YWxXaWR0aCwgZmxvYXQmIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgaW50IGV4cGFuc2lvbk9wcG9y
dHVuaXR5Q291bnQpCiB7CiAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb247CiAgICAgaWYgKHJv
b3RJbmxpbmVCb3ggJiYgc3R5bGUoKS51bmljb2RlQmlkaSgpID09IFBsYWludGV4dCkKQEAgLTYy
NywxOSArNjI3LDE5IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojp1cGRhdGVMb2dpY2FsV2lkdGgK
ICAgICAvLyBvYmplY3RzIGhvcml6b250YWxseS4gVGhlIHRvdGFsIHdpZHRoIG9mIHRoZSBsaW5l
IGNhbiBiZSBpbmNyZWFzZWQgaWYgd2UgZW5kIHVwCiAgICAgLy8ganVzdGlmeWluZyB0ZXh0Lgog
ICAgIHN3aXRjaCAodGV4dEFsaWduKSB7Ci0gICAgY2FzZSBMRUZUOgotICAgIGNhc2UgV0VCS0lU
X0xFRlQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgorICAgIGNhc2UgVGV4dEFsaWdu
TW9kZTo6V2ViS2l0TGVmdDoKICAgICAgICAgdXBkYXRlTG9naWNhbFdpZHRoRm9yTGVmdEFsaWdu
ZWRCbG9jayhzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSwgdHJhaWxpbmdTcGFjZVJ1
biwgbG9naWNhbExlZnQsIHRvdGFsTG9naWNhbFdpZHRoLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgp
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFJJR0hUOgotICAgIGNhc2UgV0VCS0lUX1JJR0hU
OgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2Rl
OjpXZWJLaXRSaWdodDoKICAgICAgICAgdXBkYXRlTG9naWNhbFdpZHRoRm9yUmlnaHRBbGlnbmVk
QmxvY2soc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCksIHRyYWlsaW5nU3BhY2VSdW4s
IGxvZ2ljYWxMZWZ0LCB0b3RhbExvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDRU5URVI6Ci0gICAgY2FzZSBXRUJLSVRfQ0VOVEVS
OgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6Q2VudGVyOgorICAgIGNhc2UgVGV4dEFsaWduTW9k
ZTo6V2ViS2l0Q2VudGVyOgogICAgICAgICB1cGRhdGVMb2dpY2FsV2lkdGhGb3JDZW50ZXJBbGln
bmVkQmxvY2soc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCksIHRyYWlsaW5nU3BhY2VS
dW4sIGxvZ2ljYWxMZWZ0LCB0b3RhbExvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlTG9naWNhbFdpZHRo
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBKVVNUSUZZOgorICAgIGNhc2UgVGV4dEFsaWdu
TW9kZTo6SnVzdGlmeToKICAgICAgICAgYWRqdXN0SW5saW5lRGlyZWN0aW9uTGluZUJvdW5kcyhl
eHBhbnNpb25PcHBvcnR1bml0eUNvdW50LCBsb2dpY2FsTGVmdCwgYXZhaWxhYmxlTG9naWNhbFdp
ZHRoKTsKICAgICAgICAgaWYgKGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQpIHsKICAgICAgICAg
ICAgIGlmICh0cmFpbGluZ1NwYWNlUnVuKSB7CkBAIC02NDksMTMgKzY0OSwxMyBAQCB2b2lkIFJl
bmRlckJsb2NrRmxvdzo6dXBkYXRlTG9naWNhbFdpZHRoCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBGQUxMVEhST1VHSDsKLSAgICBjYXNlIFRBU1RBUlQ6CisgICAgY2Fz
ZSBUZXh0QWxpZ25Nb2RlOjpTdGFydDoKICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBMVFIpCiAg
ICAgICAgICAgICB1cGRhdGVMb2dpY2FsV2lkdGhGb3JMZWZ0QWxpZ25lZEJsb2NrKHN0eWxlKCku
aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpLCB0cmFpbGluZ1NwYWNlUnVuLCBsb2dpY2FsTGVmdCwg
dG90YWxMb2dpY2FsV2lkdGgsIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHVwZGF0ZUxvZ2ljYWxXaWR0aEZvclJpZ2h0QWxpZ25lZEJsb2NrKHN0eWxl
KCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpLCB0cmFpbGluZ1NwYWNlUnVuLCBsb2dpY2FsTGVm
dCwgdG90YWxMb2dpY2FsV2lkdGgsIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgVEFFTkQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpFbmQ6CiAgICAg
ICAgIGlmIChkaXJlY3Rpb24gPT0gTFRSKQogICAgICAgICAgICAgdXBkYXRlTG9naWNhbFdpZHRo
Rm9yUmlnaHRBbGlnbmVkQmxvY2soc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCksIHRy
YWlsaW5nU3BhY2VSdW4sIGxvZ2ljYWxMZWZ0LCB0b3RhbExvZ2ljYWxXaWR0aCwgYXZhaWxhYmxl
TG9naWNhbFdpZHRoKTsKICAgICAgICAgZWxzZQpAQCAtNjc1LDcgKzY3NSw3IEBAIHN0YXRpYyB2
b2lkIHVwZGF0ZUxvZ2ljYWxJbmxpbmVQb3NpdGlvbnMKIAogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6
OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKFJvb3RJbmxpbmVCb3gqIGxp
bmVCb3gsIGNvbnN0IExpbmVJbmZvJiBsaW5lSW5mbywgQmlkaVJ1biogZmlyc3RSdW4sIEJpZGlS
dW4qIHRyYWlsaW5nU3BhY2VSdW4sIGJvb2wgcmVhY2hlZEVuZCwgR2x5cGhPdmVyZmxvd0FuZEZh
bGxiYWNrRm9udHNNYXAmIHRleHRCb3hEYXRhTWFwLCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmIHZl
cnRpY2FsUG9zaXRpb25DYWNoZSwgV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cykK
IHsKLSAgICBFVGV4dEFsaWduIHRleHRBbGlnbiA9IHRleHRBbGlnbm1lbnRGb3JMaW5lKCFyZWFj
aGVkRW5kICYmICFsaW5lQm94LT5lbmRzV2l0aEJyZWFrKCkpOworICAgIFRleHRBbGlnbk1vZGUg
dGV4dEFsaWduID0gdGV4dEFsaWdubWVudEZvckxpbmUoIXJlYWNoZWRFbmQgJiYgIWxpbmVCb3gt
PmVuZHNXaXRoQnJlYWsoKSk7CiAgICAgCiAgICAgLy8gQ1NTIDIuMTogIidUZXh0LWluZGVudCcg
b25seSBhZmZlY3RzIGEgbGluZSBpZiBpdCBpcyB0aGUgZmlyc3QgZm9ybWF0dGVkIGxpbmUgb2Yg
YW4gZWxlbWVudC4gRm9yIGV4YW1wbGUsIHRoZSBmaXJzdCBsaW5lIG9mIGFuIGFub255bW91cyBi
bG9jayAKICAgICAvLyBib3ggaXMgb25seSBhZmZlY3RlZCBpZiBpdCBpcyB0aGUgZmlyc3QgY2hp
bGQgb2YgaXRzIHBhcmVudCBlbGVtZW50LiIKQEAgLTcwMiw3ICs3MDIsNyBAQCB2b2lkIFJlbmRl
ckJsb2NrRmxvdzo6Y29tcHV0ZUlubGluZURpcmVjCiAgICAgbGluZUJveC0+cGxhY2VCb3hlc0lu
SW5saW5lRGlyZWN0aW9uKGxpbmVMb2dpY2FsTGVmdCwgbmVlZHNXb3JkU3BhY2luZyk7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3JGb3JJbmxp
bmVUZXh0Qm94KFJlbmRlckJsb2NrRmxvdyYgYmxvY2ssIElubGluZVRleHRCb3gmIHRleHRCb3gs
IEJpZGlSdW4qIHByZXZpb3VzUnVuLCBCaWRpUnVuKiBuZXh0UnVuLCBFVGV4dEFsaWduIHRleHRB
bGlnbiwgYm9vbCBpc0FmdGVyRXhwYW5zaW9uKQorc3RhdGljIGlubGluZSBFeHBhbnNpb25CZWhh
dmlvciBleHBhbnNpb25CZWhhdmlvckZvcklubGluZVRleHRCb3goUmVuZGVyQmxvY2tGbG93JiBi
bG9jaywgSW5saW5lVGV4dEJveCYgdGV4dEJveCwgQmlkaVJ1biogcHJldmlvdXNSdW4sIEJpZGlS
dW4qIG5leHRSdW4sIFRleHRBbGlnbk1vZGUgdGV4dEFsaWduLCBib29sIGlzQWZ0ZXJFeHBhbnNp
b24pCiB7CiAgICAgLy8gVGF0ZWNodXlva28gaXMgbW9kZWxlZCBhcyB0aGUgT2JqZWN0IFJlcGxh
Y2VtZW50IENoYXJhY3RlciAoVStGRkZDKSwgd2hpY2ggY2FuIG5ldmVyIGhhdmUgZXhwYW5zaW9u
IG9wcG9ydHVuaXRpZXMgaW5zaWRlIG5vciBpbnRyaW5zaWNhbGx5IGFkamFjZW50IHRvIGl0Lgog
ICAgIGlmICh0ZXh0Qm94LnJlbmRlcmVyKCkuc3R5bGUoKS50ZXh0Q29tYmluZSgpID09IFRleHRD
b21iaW5lOjpIb3Jpem9udGFsKQpAQCAtNzExLDcgKzcxMSw3IEBAIHN0YXRpYyBpbmxpbmUgRXhw
YW5zaW9uQmVoYXZpb3IgZXhwYW5zaW8KICAgICBFeHBhbnNpb25CZWhhdmlvciByZXN1bHQgPSAw
OwogICAgIGJvb2wgc2V0TGVhZGluZ0V4cGFuc2lvbiA9IGZhbHNlOwogICAgIGJvb2wgc2V0VHJh
aWxpbmdFeHBhbnNpb24gPSBmYWxzZTsKLSAgICBpZiAodGV4dEFsaWduID09IEpVU1RJRlkpIHsK
KyAgICBpZiAodGV4dEFsaWduID09IFRleHRBbGlnbk1vZGU6Okp1c3RpZnkpIHsKICAgICAgICAg
Ly8gSWYgdGhlIG5leHQgYm94IGlzIHJ1YnksIGFuZCB3ZSdyZSBqdXN0aWZ5aW5nLCBhbmQgdGhl
IGZpcnN0IGJveCBpbiB0aGUgcnVieSBiYXNlIGhhcyBhIGxlYWRpbmcgZXhwYW5zaW9uLCBhbmQg
d2UgYXJlIGEgdGV4dCBib3gsIHRoZW4gZm9yY2UgYSB0cmFpbGluZyBleHBhbnNpb24uCiAgICAg
ICAgIGlmIChuZXh0UnVuICYmIGlzPFJlbmRlclJ1YnlSdW4+KG5leHRSdW4tPnJlbmRlcmVyKCkp
ICYmIGRvd25jYXN0PFJlbmRlclJ1YnlSdW4+KG5leHRSdW4tPnJlbmRlcmVyKCkpLnJ1YnlCYXNl
KCkgJiYgbmV4dFJ1bi0+cmVuZGVyZXIoKS5zdHlsZSgpLmNvbGxhcHNlV2hpdGVTcGFjZSgpKSB7
CiAgICAgICAgICAgICBhdXRvJiBydWJ5QmFzZSA9ICpkb3duY2FzdDxSZW5kZXJSdWJ5UnVuPihu
ZXh0UnVuLT5yZW5kZXJlcigpKS5ydWJ5QmFzZSgpOwpAQCAtODI1LDcgKzgyNSw3IEBAIHN0YXRp
YyBib29sIGlzTGFzdEluRmxvd1J1bihCaWRpUnVuJiBydW4KICAgICByZXR1cm4gdHJ1ZTsKIH0K
ICAgICAKLUJpZGlSdW4qIFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBv
c2l0aW9uc0ZvclNlZ21lbnQoUm9vdElubGluZUJveCogbGluZUJveCwgY29uc3QgTGluZUluZm8m
IGxpbmVJbmZvLCBFVGV4dEFsaWduIHRleHRBbGlnbiwgZmxvYXQmIGxvZ2ljYWxMZWZ0LCAKK0Jp
ZGlSdW4qIFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0Zv
clNlZ21lbnQoUm9vdElubGluZUJveCogbGluZUJveCwgY29uc3QgTGluZUluZm8mIGxpbmVJbmZv
LCBUZXh0QWxpZ25Nb2RlIHRleHRBbGlnbiwgZmxvYXQmIGxvZ2ljYWxMZWZ0LCAKICAgICBmbG9h
dCYgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBCaWRpUnVuKiBmaXJzdFJ1biwgQmlkaVJ1biogdHJh
aWxpbmdTcGFjZVJ1biwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmIHRleHRCb3hE
YXRhTWFwLCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmIHZlcnRpY2FsUG9zaXRpb25DYWNoZSwKICAg
ICBXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRzKQogewpAQCAtODgyLDcgKzg4Miw3
IEBAIEJpZGlSdW4qIFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlubGluZUQKICAgICAgICAgICAg
ICAgICBjYW5IYW5nUHVuY3R1YXRpb25BdEVuZCA9IGZhbHNlOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgCi0gICAgICAgICAgICBpZiAodGV4dEFsaWduID09IEpVU1RJRlkgJiYgcnVuICE9
IHRyYWlsaW5nU3BhY2VSdW4pCisgICAgICAgICAgICBpZiAodGV4dEFsaWduID09IFRleHRBbGln
bk1vZGU6Okp1c3RpZnkgJiYgcnVuICE9IHRyYWlsaW5nU3BhY2VSdW4pCiAgICAgICAgICAgICAg
ICAgY29tcHV0ZUV4cGFuc2lvbk9wcG9ydHVuaXRpZXMoKnRoaXMsIHRleHRCb3gsIHByZXZpb3Vz
UnVuLCBydW4tPm5leHQoKSwgcmVuZGVyVGV4dC5zdHJpbmdWaWV3KHJ1bi0+bV9zdGFydCwgcnVu
LT5tX3N0b3ApLCBydW4tPmJveCgpLT5kaXJlY3Rpb24oKSk7CiAKICAgICAgICAgICAgIGlmICh1
bnNpZ25lZCBsZW5ndGggPSByZW5kZXJUZXh0LnRleHQoKS5sZW5ndGgoKSkgewpAQCAtODk3LDcg
Kzg5Nyw3IEBAIEJpZGlSdW4qIFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlubGluZUQKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIGNhbkhhbmdQdW5jdHVhdGlvbkF0U3RhcnQgPSBmYWxz
ZTsKICAgICAgICAgICAgIGJvb2wgZW5jb3VudGVyZWRKdXN0aWZpZWRSdWJ5ID0gZmFsc2U7Ci0g
ICAgICAgICAgICBpZiAoaXM8UmVuZGVyUnVieVJ1bj4ocnVuLT5yZW5kZXJlcigpKSAmJiB0ZXh0
QWxpZ24gPT0gSlVTVElGWSAmJiBydW4gIT0gdHJhaWxpbmdTcGFjZVJ1biAmJiBkb3duY2FzdDxS
ZW5kZXJSdWJ5UnVuPihydW4tPnJlbmRlcmVyKCkpLnJ1YnlCYXNlKCkpIHsKKyAgICAgICAgICAg
IGlmIChpczxSZW5kZXJSdWJ5UnVuPihydW4tPnJlbmRlcmVyKCkpICYmIHRleHRBbGlnbiA9PSBU
ZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5ICYmIHJ1biAhPSB0cmFpbGluZ1NwYWNlUnVuICYmIGRvd25j
YXN0PFJlbmRlclJ1YnlSdW4+KHJ1bi0+cmVuZGVyZXIoKSkucnVieUJhc2UoKSkgewogICAgICAg
ICAgICAgICAgIGF1dG8qIHJ1YnlCYXNlID0gZG93bmNhc3Q8UmVuZGVyUnVieVJ1bj4ocnVuLT5y
ZW5kZXJlcigpKS5ydWJ5QmFzZSgpOwogICAgICAgICAgICAgICAgIGlmIChydWJ5QmFzZS0+Zmly
c3RSb290Qm94KCkgJiYgIXJ1YnlCYXNlLT5maXJzdFJvb3RCb3goKS0+bmV4dFJvb3RCb3goKSAm
JiBydW4tPnJlbmRlcmVyKCkuc3R5bGUoKS5jb2xsYXBzZVdoaXRlU3BhY2UoKSkgewogICAgICAg
ICAgICAgICAgICAgICBydWJ5QmFzZS0+c2V0SXNBZnRlckV4cGFuc2lvbihpc0FmdGVyRXhwYW5z
aW9uKTsKQEAgLTk0MCw3ICs5NDAsNyBAQCBCaWRpUnVuKiBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1
dGVJbmxpbmVECiAgICAgfQogCiAgICAgaWYgKGlzPFJlbmRlclJ1YnlCYXNlPigqdGhpcykgJiYg
IWV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQpCi0gICAgICAgIHRleHRBbGlnbiA9IENFTlRFUjsK
KyAgICAgICAgdGV4dEFsaWduID0gVGV4dEFsaWduTW9kZTo6Q2VudGVyOwogCiAgICAgdXBkYXRl
TG9naWNhbFdpZHRoRm9yQWxpZ25tZW50KHRleHRBbGlnbiwgbGluZUJveCwgdHJhaWxpbmdTcGFj
ZVJ1biwgbG9naWNhbExlZnQsIHRvdGFsTG9naWNhbFdpZHRoLCBhdmFpbGFibGVMb2dpY2FsV2lk
dGgsIGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQpOwogCkBAIC0xMzc4LDcgKzEzNzgsNyBAQCB2
b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0UnVuc0FuZEZsb2F0CiAgICAgICAgICAgICBpZiAo
bGFzdFJvb3RCb3goKSkKICAgICAgICAgICAgICAgICBsYXN0Um9vdEJveCgpLT5zZXRMaW5lQnJl
YWtJbmZvKGVuZC5yZW5kZXJlcigpLCBlbmQub2Zmc2V0KCksIHJlc29sdmVyLnN0YXR1cygpKTsK
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFZpc3VhbERpcmVjdGlvbk92ZXJyaWRlIG92
ZXJyaWRlID0gKHN0eWxlVG9Vc2UucnRsT3JkZXJpbmcoKSA9PSBWaXN1YWxPcmRlciA/IChzdHls
ZVRvVXNlLmRpcmVjdGlvbigpID09IExUUiA/IFZpc3VhbExlZnRUb1JpZ2h0T3ZlcnJpZGUgOiBW
aXN1YWxSaWdodFRvTGVmdE92ZXJyaWRlKSA6IE5vVmlzdWFsT3ZlcnJpZGUpOworICAgICAgICAg
ICAgVmlzdWFsRGlyZWN0aW9uT3ZlcnJpZGUgb3ZlcnJpZGUgPSAoc3R5bGVUb1VzZS5ydGxPcmRl
cmluZygpID09IE9yZGVyOjpWaXN1YWwgPyAoc3R5bGVUb1VzZS5kaXJlY3Rpb24oKSA9PSBMVFIg
PyBWaXN1YWxMZWZ0VG9SaWdodE92ZXJyaWRlIDogVmlzdWFsUmlnaHRUb0xlZnRPdmVycmlkZSkg
OiBOb1Zpc3VhbE92ZXJyaWRlKTsKIAogICAgICAgICAgICAgaWYgKGlzTmV3VUJBUGFyYWdyYXBo
ICYmIHN0eWxlVG9Vc2UudW5pY29kZUJpZGkoKSA9PSBQbGFpbnRleHQgJiYgIXJlc29sdmVyLmNv
bnRleHQoKS0+cGFyZW50KCkpIHsKICAgICAgICAgICAgICAgICBUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbiA9IHN0eWxlVG9Vc2UuZGlyZWN0aW9uKCk7CkBAIC0xNzYzLDcgKzE3NjMsNyBAQCB2b2lk
IFJlbmRlckJsb2NrRmxvdzo6Y2hlY2tGbG9hdEluQ2xlYW5MCiAgICAgICAgIGZsb2F0Qm94T25D
bGVhbkxpbmUuaGVpZ2h0KCkgKyBmbG9hdEJveE9uQ2xlYW5MaW5lLnZlcnRpY2FsTWFyZ2luRXh0
ZW50KCkpOwogICAgIAogICAgIC8vIFdlIGhhdmUgdG8gcmVzZXQgdGhlIGNhcC1oZWlnaHQgYWxp
Z25tZW50IGRvbmUgYnkgdGhlIGZpcnN0LWxldHRlciBmbG9hdHMgd2hlbiBpbml0aWFsLWxldHRl
ciBpcyBzZXQsIHNvIGp1c3QgYWx3YXlzIHRyZWF0IGZpcnN0LWxldHRlciBmbG9hdHMgYXMgZGly
dHkuCi0gICAgaWYgKG9yaWdpbmFsRmxvYXRSZWN0LnNpemUoKSA9PSBuZXdTaXplICYmIChmbG9h
dEJveE9uQ2xlYW5MaW5lLnN0eWxlKCkuc3R5bGVUeXBlKCkgIT0gRklSU1RfTEVUVEVSIHx8ICFm
bG9hdEJveE9uQ2xlYW5MaW5lLnN0eWxlKCkuaW5pdGlhbExldHRlckRyb3AoKSkpCisgICAgaWYg
KG9yaWdpbmFsRmxvYXRSZWN0LnNpemUoKSA9PSBuZXdTaXplICYmIChmbG9hdEJveE9uQ2xlYW5M
aW5lLnN0eWxlKCkuc3R5bGVUeXBlKCkgIT0gUHNldWRvSWQ6OkZpcnN0TGV0dGVyIHx8ICFmbG9h
dEJveE9uQ2xlYW5MaW5lLnN0eWxlKCkuaW5pdGlhbExldHRlckRyb3AoKSkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIExheW91dFVuaXQgZmxvYXRUb3AgPSBpc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpID8gb3JpZ2luYWxGbG9hdFJlY3QueSgpIDogb3JpZ2luYWxGbG9hdFJlY3QueCgpOwpAQCAt
MjA4OSw3ICsyMDg5LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmFkZE92ZXJmbG93RnJvbUlu
bAogCiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6ZGVsZXRlRWxsaXBzaXNMaW5lQm94ZXMoKQogewot
ICAgIEVUZXh0QWxpZ24gdGV4dEFsaWduID0gc3R5bGUoKS50ZXh0QWxpZ24oKTsKKyAgICBUZXh0
QWxpZ25Nb2RlIHRleHRBbGlnbiA9IHN0eWxlKCkudGV4dEFsaWduKCk7CiAgICAgYm9vbCBsdHIg
PSBzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKICAgICBJbmRlbnRUZXh0T3JOb3Qg
c2hvdWxkSW5kZW50VGV4dCA9IEluZGVudFRleHQ7CiAgICAgZm9yIChSb290SW5saW5lQm94KiBj
dXJyID0gZmlyc3RSb290Qm94KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0Um9vdEJveCgpKSB7
CkBAIC0yMTI2LDcgKzIxMjYsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y2hlY2tMaW5lc0Zv
clRleHRPCiAgICAgLy8gY2hlY2sgdGhlIGxlZnQgZWRnZSBvZiB0aGUgbGluZSBib3ggdG8gc2Vl
IGlmIGl0IGlzIGxlc3MKICAgICAvLyBJbmNsdWRlIHRoZSBzY3JvbGxiYXIgZm9yIG92ZXJmbG93
IGJsb2Nrcywgd2hpY2ggbWVhbnMgd2Ugd2FudCB0byB1c2UgImNvbnRlbnRXaWR0aCgpIgogICAg
IGJvb2wgbHRyID0gc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7Ci0gICAgRVRleHRB
bGlnbiB0ZXh0QWxpZ24gPSBzdHlsZSgpLnRleHRBbGlnbigpOworICAgIFRleHRBbGlnbk1vZGUg
dGV4dEFsaWduID0gc3R5bGUoKS50ZXh0QWxpZ24oKTsKICAgICBib29sIGZpcnN0TGluZSA9IHRy
dWU7CiAgICAgZm9yIChSb290SW5saW5lQm94KiBjdXJyID0gZmlyc3RSb290Qm94KCk7IGN1cnI7
IGN1cnIgPSBjdXJyLT5uZXh0Um9vdEJveCgpKSB7CiAgICAgICAgIEluZGVudFRleHRPck5vdCBz
aG91bGRJbmRlbnRUZXh0ID0gZmlyc3RMaW5lID8gSW5kZW50VGV4dCA6IERvTm90SW5kZW50VGV4
dDsKQEAgLTIyMTQsMTggKzIyMTQsMTggQEAgYm9vbCBSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9u
TmV3RmxvYXRPbgogCiBMYXlvdXRVbml0IFJlbmRlckJsb2NrRmxvdzo6c3RhcnRBbGlnbmVkT2Zm
c2V0Rm9yTGluZShMYXlvdXRVbml0IHBvc2l0aW9uLCBJbmRlbnRUZXh0T3JOb3Qgc2hvdWxkSW5k
ZW50VGV4dCkKIHsKLSAgICBFVGV4dEFsaWduIHRleHRBbGlnbiA9IHN0eWxlKCkudGV4dEFsaWdu
KCk7CisgICAgVGV4dEFsaWduTW9kZSB0ZXh0QWxpZ24gPSBzdHlsZSgpLnRleHRBbGlnbigpOwog
ICAgIGJvb2wgc2hvdWxkQXBwbHlJbmRlbnRUZXh0ID0gZmFsc2U7CiAgICAgc3dpdGNoICh0ZXh0
QWxpZ24pIHsKLSAgICBjYXNlIExFRlQ6Ci0gICAgY2FzZSBXRUJLSVRfTEVGVDoKKyAgICBjYXNl
IFRleHRBbGlnbk1vZGU6OkxlZnQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0
OgogICAgICAgICBzaG91bGRBcHBseUluZGVudFRleHQgPSBzdHlsZSgpLmlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24oKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSSUdIVDoKLSAgICBjYXNlIFdF
QktJVF9SSUdIVDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlJpZ2h0OgorICAgIGNhc2UgVGV4
dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQ6CiAgICAgICAgIHNob3VsZEFwcGx5SW5kZW50VGV4dCA9
ICFzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBUQVNUQVJUOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CiAgICAgICAgIHNo
b3VsZEFwcGx5SW5kZW50VGV4dCA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
CkBAIC0yMjM1LDcgKzIyMzUsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrRmxvdzo6c3RhcnRB
bGlnbmVkCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NDUyMgogICAgIC8vIFRoaXMgcXVpcmsgaXMgZm9yIGxlZ2FjeSBjb250ZW50IHRoYXQgZG9lc24n
dCB3b3JrIHByb3Blcmx5IHdpdGggdGhlIGNlbnRlciBwb3NpdGlvbmluZyBzY2hlbWUKICAgICAv
LyBiZWluZyBob25vcmVkIChlLmcuLCBlcHVicykuCi0gICAgaWYgKHNob3VsZEFwcGx5SW5kZW50
VGV4dCB8fCBzZXR0aW5ncygpLnVzZUxlZ2FjeVRleHRBbGlnblBvc2l0aW9uZWRFbGVtZW50QmVo
YXZpb3IoKSkgLy8gRklYTUU6IEhhbmRsZSBUQUVORCBoZXJlCisgICAgaWYgKHNob3VsZEFwcGx5
SW5kZW50VGV4dCB8fCBzZXR0aW5ncygpLnVzZUxlZ2FjeVRleHRBbGlnblBvc2l0aW9uZWRFbGVt
ZW50QmVoYXZpb3IoKSkgLy8gRklYTUU6IEhhbmRsZSBUZXh0QWxpZ25Nb2RlOjpFbmQgaGVyZQog
ICAgICAgICByZXR1cm4gc3RhcnRPZmZzZXRGb3JMaW5lKHBvc2l0aW9uLCBzaG91bGRJbmRlbnRU
ZXh0KTsKIAogICAgIC8vIHVwZGF0ZUxvZ2ljYWxXaWR0aEZvckFsaWdubWVudCgpIGhhbmRsZXMg
dGhlIGRpcmVjdGlvbiBvZiB0aGUgYmxvY2sgc28gbm8gbmVlZCB0byBjb25zaWRlciBpdCBoZXJl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkocmV2aXNpb24gMjMy
MTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTk0MCwxMyArOTQwLDEzIEBAIHZvaWQgUmVuZGVyQm94OjpwYW5TY3JvbGwoY29u
c3QgSW50UG9pbnQKIAogYm9vbCBSZW5kZXJCb3g6Omhhc1ZlcnRpY2FsU2Nyb2xsYmFyV2l0aEF1
dG9CZWhhdmlvcigpIGNvbnN0CiB7Ci0gICAgYm9vbCBvdmVyZmxvd1Njcm9sbEFjdHNMaWtlQXV0
byA9IHN0eWxlKCkub3ZlcmZsb3dZKCkgPT0gT3ZlcmZsb3c6OlNjcm9sbCAmJiAhc3R5bGUoKS5o
YXNQc2V1ZG9TdHlsZShTQ1JPTExCQVIpICYmIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLnVzZXNP
dmVybGF5U2Nyb2xsYmFycygpOworICAgIGJvb2wgb3ZlcmZsb3dTY3JvbGxBY3RzTGlrZUF1dG8g
PSBzdHlsZSgpLm92ZXJmbG93WSgpID09IE92ZXJmbG93OjpTY3JvbGwgJiYgIXN0eWxlKCkuaGFz
UHNldWRvU3R5bGUoUHNldWRvSWQ6OlNjcm9sbGJhcikgJiYgU2Nyb2xsYmFyVGhlbWU6OnRoZW1l
KCkudXNlc092ZXJsYXlTY3JvbGxiYXJzKCk7CiAgICAgcmV0dXJuIGhhc092ZXJmbG93Q2xpcCgp
ICYmIChzdHlsZSgpLm92ZXJmbG93WSgpID09IE92ZXJmbG93OjpBdXRvIHx8IHN0eWxlKCkub3Zl
cmZsb3dZKCkgPT0gT3ZlcmZsb3c6Ok92ZXJsYXkgfHwgb3ZlcmZsb3dTY3JvbGxBY3RzTGlrZUF1
dG8pOwogfQogCiBib29sIFJlbmRlckJveDo6aGFzSG9yaXpvbnRhbFNjcm9sbGJhcldpdGhBdXRv
QmVoYXZpb3IoKSBjb25zdAogewotICAgIGJvb2wgb3ZlcmZsb3dTY3JvbGxBY3RzTGlrZUF1dG8g
PSBzdHlsZSgpLm92ZXJmbG93WCgpID09IE92ZXJmbG93OjpTY3JvbGwgJiYgIXN0eWxlKCkuaGFz
UHNldWRvU3R5bGUoU0NST0xMQkFSKSAmJiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS51c2VzT3Zl
cmxheVNjcm9sbGJhcnMoKTsKKyAgICBib29sIG92ZXJmbG93U2Nyb2xsQWN0c0xpa2VBdXRvID0g
c3R5bGUoKS5vdmVyZmxvd1goKSA9PSBPdmVyZmxvdzo6U2Nyb2xsICYmICFzdHlsZSgpLmhhc1Bz
ZXVkb1N0eWxlKFBzZXVkb0lkOjpTY3JvbGxiYXIpICYmIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgp
LnVzZXNPdmVybGF5U2Nyb2xsYmFycygpOwogICAgIHJldHVybiBoYXNPdmVyZmxvd0NsaXAoKSAm
JiAoc3R5bGUoKS5vdmVyZmxvd1goKSA9PSBPdmVyZmxvdzo6QXV0byB8fCBzdHlsZSgpLm92ZXJm
bG93WCgpID09IE92ZXJmbG93OjpPdmVybGF5IHx8IG92ZXJmbG93U2Nyb2xsQWN0c0xpa2VBdXRv
KTsKIH0KIApAQCAtMTM5OCw3ICsxMzk4LDcgQEAgc3RhdGljIGJvb2wgaXNDYW5kaWRhdGVGb3JP
cGFxdWVuZXNzVGVzdAogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBjaGlsZFN0eWxlID0gY2hpbGRC
b3guc3R5bGUoKTsKICAgICBpZiAoY2hpbGRTdHlsZS5wb3NpdGlvbigpICE9IFBvc2l0aW9uVHlw
ZTo6U3RhdGljICYmIGNoaWxkQm94LmNvbnRhaW5pbmdCbG9jaygpICE9IGNoaWxkQm94LnBhcmVu
dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGNoaWxkU3R5bGUudmlzaWJpbGl0
eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKGNoaWxkU3R5bGUudmlzaWJpbGl0eSgpICE9IFZpc2li
aWxpdHk6OlZpc2libGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoY2hpbGRTdHls
ZS5zaGFwZU91dHNpZGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQ5Miw3ICsxNDky
LDcgQEAgYm9vbCBSZW5kZXJCb3g6OmJhY2tncm91bmRIYXNPcGFxdWVUb3BMYQogCiB2b2lkIFJl
bmRlckJveDo6cGFpbnRNYXNrKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpbnRPZmZzZXQpCiB7Ci0gICAgaWYgKCFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5S
b290KCp0aGlzKSB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8IHBhaW50SW5m
by5waGFzZSAhPSBQYWludFBoYXNlTWFzayB8fCBwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5n
RGlzYWJsZWQoKSkKKyAgICBpZiAoIXBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QoKnRo
aXMpIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgfHwgcGFp
bnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VNYXNrIHx8IHBhaW50SW5mby5jb250ZXh0KCkucGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBMYXlvdXRSZWN0IHBhaW50
UmVjdCA9IExheW91dFJlY3QocGFpbnRPZmZzZXQsIHNpemUoKSk7CkBAIC0xNTAyLDcgKzE1MDIs
NyBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRNYXNrKFBhaW50SW5mbyYgcGFpCiAKIHZvaWQgUmVu
ZGVyQm94OjpwYWludENsaXBwaW5nTWFzayhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewotICAgIGlmICghcGFpbnRJbmZvLnNob3VsZFBhaW50
V2l0aGluUm9vdCgqdGhpcykgfHwgc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBw
YWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUNsaXBwaW5nTWFzayB8fCBwYWludEluZm8uY29u
dGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAoIXBhaW50SW5mby5zaG91bGRQYWlu
dFdpdGhpblJvb3QoKnRoaXMpIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6
OlZpc2libGUgfHwgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VDbGlwcGluZ01hc2sgfHwg
cGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIExheW91dFJlY3QgcGFpbnRSZWN0ID0gTGF5b3V0UmVjdChwYWludE9mZnNldCwgc2l6
ZSgpKTsKQEAgLTIwNjUsNyArMjA2NSw3IEBAIHZvaWQgUmVuZGVyQm94OjpkaXJ0eUxpbmVCb3hl
cyhib29sIGZ1bGwKIHZvaWQgUmVuZGVyQm94Ojpwb3NpdGlvbkxpbmVCb3goSW5saW5lRWxlbWVu
dEJveCYgYm94KQogewogICAgIGlmIChpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewotICAgICAg
ICAvLyBDYWNoZSB0aGUgeCBwb3NpdGlvbiBvbmx5IGlmIHdlIHdlcmUgYW4gSU5MSU5FIHR5cGUg
b3JpZ2luYWxseS4KKyAgICAgICAgLy8gQ2FjaGUgdGhlIHggcG9zaXRpb24gb25seSBpZiB3ZSB3
ZXJlIGFuIERpc3BsYXlUeXBlOjpJbmxpbmUgdHlwZSBvcmlnaW5hbGx5LgogICAgICAgICBib29s
IHdhc0lubGluZSA9IHN0eWxlKCkuaXNPcmlnaW5hbERpc3BsYXlJbmxpbmVUeXBlKCk7CiAgICAg
ICAgIGlmICh3YXNJbmxpbmUpIHsKICAgICAgICAgICAgIC8vIFRoZSB2YWx1ZSBpcyBjYWNoZWQg
aW4gdGhlIHhQb3Mgb2YgdGhlIGJveC4gIFdlIG9ubHkgbmVlZCB0aGlzIHZhbHVlIGlmCkBAIC0y
MTA2LDcgKzIxMDYsNyBAQCB2b2lkIFJlbmRlckJveDo6ZGVsZXRlTGluZUJveFdyYXBwZXIoKQog
CiBMYXlvdXRSZWN0IFJlbmRlckJveDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoY29u
c3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKIHsKLSAg
ICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSAmJiAhZW5jbG9zaW5nTGF5ZXIo
KS0+aGFzVmlzaWJsZUNvbnRlbnQoKSkKKyAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0g
VmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhZW5jbG9zaW5nTGF5ZXIoKS0+aGFzVmlzaWJsZUNvbnRl
bnQoKSkKICAgICAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKICAgICBMYXlvdXRSZWN0IHIgPSB2
aXN1YWxPdmVyZmxvd1JlY3QoKTsKICAgICAvLyBGSVhNRTogbGF5b3V0RGVsdGEgbmVlZHMgdG8g
YmUgYXBwbGllZCBpbiBwYXJ0cyBiZWZvcmUvYWZ0ZXIgdHJhbnNmb3JtcyBhbmQKQEAgLTIzMTIs
NyArMjMxMiw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHRoSW5GcmEKICAg
ICAvLyB3aWR0aC4gIFVzZSB0aGUgd2lkdGggZnJvbSB0aGUgc3R5bGUgY29udGV4dC4KICAgICAv
LyBGSVhNRTogQWNjb3VudCBmb3IgYmxvY2stZmxvdyBpbiBmbGV4aWJsZSBib3hlcy4KICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY0MTgKLSAgICBpZiAo
aGFzT3ZlcnJpZGVDb250ZW50TG9naWNhbFdpZHRoKCkgJiYgKGlzUnVieVJ1bigpIHx8IHN0eWxl
KCkuYm9yZGVyRml0KCkgPT0gQm9yZGVyRml0TGluZXMgfHwgKHBhcmVudCgpLT5pc0ZsZXhpYmxl
Qm94SW5jbHVkaW5nRGVwcmVjYXRlZCgpKSkpIHsKKyAgICBpZiAoaGFzT3ZlcnJpZGVDb250ZW50
TG9naWNhbFdpZHRoKCkgJiYgKGlzUnVieVJ1bigpIHx8IHN0eWxlKCkuYm9yZGVyRml0KCkgPT0g
Qm9yZGVyRml0OjpMaW5lcyB8fCAocGFyZW50KCktPmlzRmxleGlibGVCb3hJbmNsdWRpbmdEZXBy
ZWNhdGVkKCkpKSkgewogICAgICAgICBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCA9IG92ZXJyaWRl
Q29udGVudExvZ2ljYWxXaWR0aCgpICsgYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjU4MCw3ICsyNTgwLDcgQEAgdm9pZCBSZW5kZXJC
b3g6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25NYQogCiAgICAgLy8gQ2FzZSBPbmU6IFRoZSBvYmpl
Y3QgaXMgYmVpbmcgY2VudGVyZWQgaW4gdGhlIGNvbnRhaW5pbmcgYmxvY2sncyBhdmFpbGFibGUg
bG9naWNhbCB3aWR0aC4KICAgICBpZiAoKG1hcmdpblN0YXJ0TGVuZ3RoLmlzQXV0bygpICYmIG1h
cmdpbkVuZExlbmd0aC5pc0F1dG8oKSAmJiBjaGlsZFdpZHRoIDwgY29udGFpbmVyV2lkdGgpCi0g
ICAgICAgIHx8ICghbWFyZ2luU3RhcnRMZW5ndGguaXNBdXRvKCkgJiYgIW1hcmdpbkVuZExlbmd0
aC5pc0F1dG8oKSAmJiBjb250YWluaW5nQmxvY2suc3R5bGUoKS50ZXh0QWxpZ24oKSA9PSBXRUJL
SVRfQ0VOVEVSKSkgeworICAgICAgICB8fCAoIW1hcmdpblN0YXJ0TGVuZ3RoLmlzQXV0bygpICYm
ICFtYXJnaW5FbmRMZW5ndGguaXNBdXRvKCkgJiYgY29udGFpbmluZ0Jsb2NrLnN0eWxlKCkudGV4
dEFsaWduKCkgPT0gVGV4dEFsaWduTW9kZTo6V2ViS2l0Q2VudGVyKSkgewogICAgICAgICAvLyBP
dGhlciBicm93c2VycyBjZW50ZXIgdGhlIG1hcmdpbiBib3ggZm9yIGFsaWduPWNlbnRlciBlbGVt
ZW50cyBzbyB3ZSBtYXRjaCB0aGVtIGhlcmUuCiAgICAgICAgIExheW91dFVuaXQgbWFyZ2luU3Rh
cnRXaWR0aCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChtYXJnaW5TdGFydExlbmd0aCwgY29udGFp
bmVyV2lkdGgpOwogICAgICAgICBMYXlvdXRVbml0IG1hcmdpbkVuZFdpZHRoID0gbWluaW11bVZh
bHVlRm9yTGVuZ3RoKG1hcmdpbkVuZExlbmd0aCwgY29udGFpbmVyV2lkdGgpOwpAQCAtMjU5OCw4
ICsyNTk4LDggQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25NYQogICAg
IH0gCiAgICAgCiAgICAgLy8gQ2FzZSBUaHJlZTogVGhlIG9iamVjdCBpcyBiZWluZyBwdXNoZWQg
dG8gdGhlIGVuZCBvZiB0aGUgY29udGFpbmluZyBibG9jaydzIGF2YWlsYWJsZSBsb2dpY2FsIHdp
ZHRoLgotICAgIGJvb2wgcHVzaFRvRW5kRnJvbVRleHRBbGlnbiA9ICFtYXJnaW5FbmRMZW5ndGgu
aXNBdXRvKCkgJiYgKCghY29udGFpbmluZ0Jsb2NrU3R5bGUuaXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpICYmIGNvbnRhaW5pbmdCbG9ja1N0eWxlLnRleHRBbGlnbigpID09IFdFQktJVF9MRUZUKQot
ICAgICAgICB8fCAoY29udGFpbmluZ0Jsb2NrU3R5bGUuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
ICYmIGNvbnRhaW5pbmdCbG9ja1N0eWxlLnRleHRBbGlnbigpID09IFdFQktJVF9SSUdIVCkpOwor
ICAgIGJvb2wgcHVzaFRvRW5kRnJvbVRleHRBbGlnbiA9ICFtYXJnaW5FbmRMZW5ndGguaXNBdXRv
KCkgJiYgKCghY29udGFpbmluZ0Jsb2NrU3R5bGUuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpICYm
IGNvbnRhaW5pbmdCbG9ja1N0eWxlLnRleHRBbGlnbigpID09IFRleHRBbGlnbk1vZGU6OldlYktp
dExlZnQpCisgICAgICAgIHx8IChjb250YWluaW5nQmxvY2tTdHlsZS5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkgJiYgY29udGFpbmluZ0Jsb2NrU3R5bGUudGV4dEFsaWduKCkgPT0gVGV4dEFsaWdu
TW9kZTo6V2ViS2l0UmlnaHQpKTsKICAgICBpZiAoKG1hcmdpblN0YXJ0TGVuZ3RoLmlzQXV0bygp
IHx8IHB1c2hUb0VuZEZyb21UZXh0QWxpZ24pICYmIGNoaWxkV2lkdGggPCBjb250YWluZXJXaWR0
aCkgewogICAgICAgICBtYXJnaW5FbmQgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5FbmRMZW5ndGgs
IGNvbnRhaW5lcldpZHRoKTsKICAgICAgICAgbWFyZ2luU3RhcnQgPSBjb250YWluZXJXaWR0aCAt
IGNoaWxkV2lkdGggLSBtYXJnaW5FbmQ7CkBAIC0yODU3LDcgKzI4NTcsNyBAQCBib29sIFJlbmRl
ckJveDo6c2tpcENvbnRhaW5pbmdCbG9ja0ZvclBlCiAgICAgLy8gb2JqZWN0cywgc3VjaCBhcyB0
YWJsZS1jZWxscyBhbmQgZmxleGJveGVzLCB3aWxsIGJlIHRyZWF0ZWQgYXMgaWYgdGhleSB3ZXJl
CiAgICAgLy8gbm9uLWFub255bW91cy4KICAgICBpZiAoY29udGFpbmluZ0Jsb2NrLmlzQW5vbnlt
b3VzKCkpCi0gICAgICAgIHJldHVybiBjb250YWluaW5nQmxvY2suc3R5bGUoKS5kaXNwbGF5KCkg
PT0gQkxPQ0sgfHwgY29udGFpbmluZ0Jsb2NrLnN0eWxlKCkuZGlzcGxheSgpID09IElOTElORV9C
TE9DSzsKKyAgICAgICAgcmV0dXJuIGNvbnRhaW5pbmdCbG9jay5zdHlsZSgpLmRpc3BsYXkoKSA9
PSBEaXNwbGF5VHlwZTo6QmxvY2sgfHwgY29udGFpbmluZ0Jsb2NrLnN0eWxlKCkuZGlzcGxheSgp
ID09IERpc3BsYXlUeXBlOjpJbmxpbmVCbG9jazsKICAgICAKICAgICAvLyBGb3IgcXVpcmtzIG1v
ZGUsIHdlIHNraXAgbW9zdCBhdXRvLWhlaWdodCBjb250YWluaW5nIGJsb2NrcyB3aGVuIGNvbXB1
dGluZwogICAgIC8vIHBlcmNlbnRhZ2VzLgpAQCAtNDM4Niw3ICs0Mzg2LDcgQEAgVmlzaWJsZVBv
c2l0aW9uIFJlbmRlckJveDo6cG9zaXRpb25Gb3JQbwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KCghcmVuZGVyZXIuZmlyc3RDaGlsZCgpICYmICFyZW5kZXJlci5pc0lubGluZSgpICYmICFpczxS
ZW5kZXJCbG9ja0Zsb3c+KHJlbmRlcmVyKSkKLSAgICAgICAgICAgIHx8IHJlbmRlcmVyLnN0eWxl
KCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgICAgICAgICB8fCByZW5kZXJlci5zdHls
ZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICAgICAgY29u
dGludWU7CiAKICAgICAgICAgTGF5b3V0VW5pdCB0b3AgPSByZW5kZXJlci5ib3JkZXJUb3AoKSAr
IHJlbmRlcmVyLnBhZGRpbmdUb3AoKSArIChpczxSZW5kZXJUYWJsZVJvdz4oKnRoaXMpID8gTGF5
b3V0VW5pdCgpIDogcmVuZGVyZXIueSgpKTsKQEAgLTQ2MzQsNyArNDYzNCw3IEBAIGJvb2wgUmVu
ZGVyQm94Ojppc1Vuc3BsaXR0YWJsZUZvclBhZ2luYXQKICAgICByZXR1cm4gaXNSZXBsYWNlZCgp
CiAgICAgICAgIHx8IGhhc1Vuc3BsaXR0YWJsZVNjcm9sbGluZ092ZXJmbG93KCkKICAgICAgICAg
fHwgKHBhcmVudCgpICYmIGlzV3JpdGluZ01vZGVSb290KCkpCi0gICAgICAgIHx8IChpc0Zsb2F0
aW5nKCkgJiYgc3R5bGUoKS5zdHlsZVR5cGUoKSA9PSBGSVJTVF9MRVRURVIgJiYgc3R5bGUoKS5p
bml0aWFsTGV0dGVyRHJvcCgpID4gMCk7CisgICAgICAgIHx8IChpc0Zsb2F0aW5nKCkgJiYgc3R5
bGUoKS5zdHlsZVR5cGUoKSA9PSBQc2V1ZG9JZDo6Rmlyc3RMZXR0ZXIgJiYgc3R5bGUoKS5pbml0
aWFsTGV0dGVyRHJvcCgpID4gMCk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyQm94OjpsaW5lSGVp
Z2h0KGJvb2wgLypmaXJzdExpbmUqLywgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5l
UG9zaXRpb25Nb2RlIC8qbGluZVBvc2l0aW9uTW9kZSovKSBjb25zdApJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCShyZXZpc2lv
biAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTgwLDIzICsyNTgwLDIzIEBAIExheW91dFJlY3Qg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OmxvY2FsQ2EKICAgICBDYXJldEFsaWdubWVudCBhbGlnbm1l
bnQgPSBhbGlnbkxlZnQ7CiAKICAgICBzd2l0Y2ggKGN1cnJlbnRTdHlsZS50ZXh0QWxpZ24oKSkg
ewotICAgIGNhc2UgTEVGVDoKLSAgICBjYXNlIFdFQktJVF9MRUZUOgorICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6TGVmdDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdExlZnQ6CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ0VOVEVSOgotICAgIGNhc2UgV0VCS0lUX0NFTlRFUjoKKyAg
ICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6Oldl
YktpdENlbnRlcjoKICAgICAgICAgYWxpZ25tZW50ID0gYWxpZ25DZW50ZXI7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgUklHSFQ6Ci0gICAgY2FzZSBXRUJLSVRfUklHSFQ6CisgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpSaWdodDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0
OgogICAgICAgICBhbGlnbm1lbnQgPSBhbGlnblJpZ2h0OwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIEpVU1RJRlk6Ci0gICAgY2FzZSBUQVNUQVJUOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6
SnVzdGlmeToKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlN0YXJ0OgogICAgICAgICBpZiAoIWN1
cnJlbnRTdHlsZS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCiAgICAgICAgICAgICBhbGlnbm1l
bnQgPSBhbGlnblJpZ2h0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRBRU5EOgorICAgIGNh
c2UgVGV4dEFsaWduTW9kZTo6RW5kOgogICAgICAgICBpZiAoY3VycmVudFN0eWxlLmlzTGVmdFRv
UmlnaHREaXJlY3Rpb24oKSkKICAgICAgICAgICAgIGFsaWdubWVudCA9IGFsaWduUmlnaHQ7CiAg
ICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveE1vZGVsT2JqZWN0LmgJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzEsNyAr
MjcxLDcgQEAgcHJvdGVjdGVkOgogICAgIERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGVGb3JJbWFn
ZURyYXcoY29uc3QgSW1hZ2UmLCBjb25zdCBQYWludEluZm8mKSBjb25zdDsKIAogcHVibGljOgot
ICAgIC8vIEZvciBSZW5kZXJCbG9ja3MgYW5kIFJlbmRlcklubGluZXMgd2l0aCBtX3N0eWxlLT5z
dHlsZVR5cGUoKSA9PSBGSVJTVF9MRVRURVIsIHRoaXMgdHJhY2tzIHRoZWlyIHJlbWFpbmluZyB0
ZXh0IGZyYWdtZW50cworICAgIC8vIEZvciBSZW5kZXJCbG9ja3MgYW5kIFJlbmRlcklubGluZXMg
d2l0aCBtX3N0eWxlLT5zdHlsZVR5cGUoKSA9PSBQc2V1ZG9JZDo6Rmlyc3RMZXR0ZXIsIHRoaXMg
dHJhY2tzIHRoZWlyIHJlbWFpbmluZyB0ZXh0IGZyYWdtZW50cwogICAgIFJlbmRlclRleHRGcmFn
bWVudCogZmlyc3RMZXR0ZXJSZW1haW5pbmdUZXh0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRGaXJz
dExldHRlclJlbWFpbmluZ1RleHQoUmVuZGVyVGV4dEZyYWdtZW50Jik7CiAgICAgdm9pZCBjbGVh
ckZpcnN0TGV0dGVyUmVtYWluaW5nVGV4dCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckNvdW50ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJDb3VudGVyLmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsMTQg
KzE0MCwxNCBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxDb3VudGVyUGxhbj4gcGxhbkNvCiAgICAg
YXV0byYgc3R5bGUgPSByZW5kZXJlci5zdHlsZSgpOwogCiAgICAgc3dpdGNoIChzdHlsZS5zdHls
ZVR5cGUoKSkgewotICAgIGNhc2UgTk9QU0VVRE86CisgICAgY2FzZSBQc2V1ZG9JZDo6Tm9uZToK
ICAgICAgICAgLy8gU29tZXRpbWVzIGVsZW1lbnRzIGhhdmUgbW9yZSB0aGVuIG9uZSByZW5kZXJl
ci4gT25seSB0aGUgZmlyc3Qgb25lIGdldHMgdGhlIGNvdW50ZXIKICAgICAgICAgLy8gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9jc3MvY291bnRlci1jcmFzaC5odG1sCiAgICAgICAgIGlmIChnZW5l
cmF0aW5nRWxlbWVudC0+cmVuZGVyZXIoKSAhPSAmcmVuZGVyZXIpCiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJFRk9SRToKLSAgICBj
YXNlIEFGVEVSOgorICAgIGNhc2UgUHNldWRvSWQ6OkJlZm9yZToKKyAgICBjYXNlIFBzZXVkb0lk
OjpBZnRlcjoKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsgLy8gQ291bnRlcnMgYXJlIGZvcmJpZGRlbiBmcm9tIGFsbCBvdGhlciBwc2V1
ZG8gZWxlbWVudHMuCkBAIC0zODQsNyArMzg0LDcgQEAgU3RyaW5nIFJlbmRlckNvdW50ZXI6Om9y
aWdpbmFsVGV4dCgpIGNvbgogICAgICAgICAgICAgaWYgKCFiZWZvcmVBZnRlckNvbnRhaW5lci0+
aXNBbm9ueW1vdXMoKSAmJiAhYmVmb3JlQWZ0ZXJDb250YWluZXItPmlzUHNldWRvRWxlbWVudCgp
KQogICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsgLy8gUmVuZGVyQ291bnRlcnMgYXJl
IHJlc3RyaWN0ZWQgdG8gYmVmb3JlIGFuZCBhZnRlciBwc2V1ZG8gZWxlbWVudHMKICAgICAgICAg
ICAgIFBzZXVkb0lkIGNvbnRhaW5lclN0eWxlID0gYmVmb3JlQWZ0ZXJDb250YWluZXItPnN0eWxl
KCkuc3R5bGVUeXBlKCk7Ci0gICAgICAgICAgICBpZiAoKGNvbnRhaW5lclN0eWxlID09IEJFRk9S
RSkgfHwgKGNvbnRhaW5lclN0eWxlID09IEFGVEVSKSkKKyAgICAgICAgICAgIGlmICgoY29udGFp
bmVyU3R5bGUgPT0gUHNldWRvSWQ6OkJlZm9yZSkgfHwgKGNvbnRhaW5lclN0eWxlID09IFBzZXVk
b0lkOjpBZnRlcikpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBiZWZvcmVB
ZnRlckNvbnRhaW5lciA9IGJlZm9yZUFmdGVyQ29udGFpbmVyLT5wYXJlbnQoKTsKICAgICAgICAg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJs
ZUJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRl
cHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDcsNyArMTQ3LDcgQEAgc3RhdGljIExheW91dFVuaXQgbWFyZ2luV2lkdGhGb3JD
aGlsZChSZQogc3RhdGljIGJvb2wgY2hpbGREb2VzTm90QWZmZWN0V2lkdGhPckZsZXhpbmcoUmVu
ZGVyT2JqZWN0KiBjaGlsZCkKIHsKICAgICAvLyBQb3NpdGlvbmVkIGNoaWxkcmVuIGFuZCBjb2xs
YXBzZWQgY2hpbGRyZW4gZG9uJ3QgYWZmZWN0IHRoZSBtaW4vbWF4IHdpZHRoLgotICAgIHJldHVy
biBjaGlsZC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgfHwgY2hpbGQtPnN0eWxlKCkudmlzaWJp
bGl0eSgpID09IENPTExBUFNFOworICAgIHJldHVybiBjaGlsZC0+aXNPdXRPZkZsb3dQb3NpdGlv
bmVkKCkgfHwgY2hpbGQtPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OkNvbGxh
cHNlOwogfQogCiBzdGF0aWMgTGF5b3V0VW5pdCBjb250ZW50V2lkdGhGb3JDaGlsZChSZW5kZXJC
b3gqIGNoaWxkKQpAQCAtNDgzLDcgKzQ4Myw3IEBAIHZvaWQgUmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94OjpsYXlvdXQKICAgICAgICAgICAgIAogICAgICAgICAgICAgTGF5b3V0U2l6ZSYgY2hp
bGRMYXlvdXREZWx0YSA9IGNoaWxkTGF5b3V0RGVsdGFzW2NoaWxkSW5kZXgrK107CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIGlmIChjaGlsZC0+c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gQ09M
TEFQU0UpIHsKKyAgICAgICAgICAgIGlmIChjaGlsZC0+c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0g
VmlzaWJpbGl0eTo6Q29sbGFwc2UpIHsKICAgICAgICAgICAgICAgICAvLyB2aXNpYmlsaXR5OiBj
b2xsYXBzZWQgY2hpbGRyZW4gZG8gbm90IHBhcnRpY2lwYXRlIGluIG91ciBwb3NpdGlvbmluZy4K
ICAgICAgICAgICAgICAgICAvLyBCdXQgd2UgbmVlZCB0byBsYXkgdGhlbSBvdXQuCiAgICAgICAg
ICAgICAgICAgbGF5b3V0Q2hpbGRJZk5lZWRlZEFwcGx5aW5nRGVsdGEoY2hpbGQsIGNoaWxkTGF5
b3V0RGVsdGEpOwpAQCAtNTc3LDcgKzU3Nyw3IEBAIHZvaWQgUmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94OjpsYXlvdXQKIAogICAgICAgICAgICAgICAgICAgICAvLyBOb3cgZGlzdHJpYnV0ZSB0
aGUgc3BhY2UgdG8gb2JqZWN0cy4KICAgICAgICAgICAgICAgICAgICAgZm9yIChSZW5kZXJCb3gq
IGNoaWxkID0gaXRlcmF0b3IuZmlyc3QoKTsgY2hpbGQgJiYgc3BhY2VBdmFpbGFibGVUaGlzUGFz
cyAmJiB0b3RhbEZsZXg7IGNoaWxkID0gaXRlcmF0b3IubmV4dCgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoY2hpbGQtPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IENPTExBUFNFKQor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9
PSBWaXNpYmlsaXR5OjpDb2xsYXBzZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFsbG93ZWRDaGlsZEZsZXgoY2hp
bGQsIGV4cGFuZGluZywgaSkpIHsKQEAgLTcyNyw3ICs3MjcsNyBAQCB2b2lkIFJlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveDo6bGF5b3V0CiAgICAgICAgICAgICAKICAgICAgICAgICAgIExheW91
dFNpemUmIGNoaWxkTGF5b3V0RGVsdGEgPSBjaGlsZExheW91dERlbHRhc1tjaGlsZEluZGV4Kytd
OwogCi0gICAgICAgICAgICBpZiAoY2hpbGQtPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IENPTExB
UFNFKSB7CisgICAgICAgICAgICBpZiAoY2hpbGQtPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZp
c2liaWxpdHk6OkNvbGxhcHNlKSB7CiAgICAgICAgICAgICAgICAgLy8gdmlzaWJpbGl0eTogY29s
bGFwc2VkIGNoaWxkcmVuIGRvIG5vdCBwYXJ0aWNpcGF0ZSBpbiBvdXIgcG9zaXRpb25pbmcuCiAg
ICAgICAgICAgICAgICAgLy8gQnV0IHdlIG5lZWQgdG8gbGF5IHRoZW0gZG93bi4KICAgICAgICAg
ICAgICAgICBsYXlvdXRDaGlsZElmTmVlZGVkQXBwbHlpbmdEZWx0YShjaGlsZCwgY2hpbGRMYXlv
dXREZWx0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01h
cmtlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRl
dGFpbHNNYXJrZXIuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsx
MTgsNyBAQCBQYXRoIFJlbmRlckRldGFpbHNNYXJrZXI6OmdldFBhdGgoY29uc3QgCiAKIHZvaWQg
UmVuZGVyRGV0YWlsc01hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKLSAgICBpZiAocGFpbnRJbmZvLnBoYXNlICE9IFBh
aW50UGhhc2VGb3JlZ3JvdW5kIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpIHsK
KyAgICBpZiAocGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHN0eWxl
KCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpIHsKICAgICAgICAgUmVuZGVy
QmxvY2tGbG93OjpwYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5j
cHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDQ5ICsxNTEsNDkgQEAgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IFJlbmRlckVsZW1lbnQ6OgogICAgIH0KIAogICAgIHN3aXRjaCAoc3R5
bGUuZGlzcGxheSgpKSB7Ci0gICAgY2FzZSBOT05FOgotICAgIGNhc2UgQ09OVEVOVFM6CisgICAg
Y2FzZSBEaXNwbGF5VHlwZTo6Tm9uZToKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpDb250ZW50czoK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgY2FzZSBJTkxJTkU6CisgICAgY2FzZSBEaXNw
bGF5VHlwZTo6SW5saW5lOgogICAgICAgICBpZiAoY3JlYXRpb25UeXBlID09IENyZWF0ZUFsbFJl
bmRlcmVycykKICAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJJbmxpbmU+
KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKTsKICAgICAgICAgRkFMTFRIUk9VR0g7IC8vIEZpZWxk
c2V0cyBzaG91bGQgbWFrZSBhIGJsb2NrIGZsb3cgaWYgZGlzcGxheTppbmxpbmUgaXMgc2V0Lgot
ICAgIGNhc2UgQkxPQ0s6Ci0gICAgY2FzZSBJTkxJTkVfQkxPQ0s6Ci0gICAgY2FzZSBDT01QQUNU
OgorICAgIGNhc2UgRGlzcGxheVR5cGU6OkJsb2NrOgorICAgIGNhc2UgRGlzcGxheVR5cGU6Oklu
bGluZUJsb2NrOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OkNvbXBhY3Q6CiAgICAgICAgIHJldHVy
biBjcmVhdGVSZW5kZXJlcjxSZW5kZXJCbG9ja0Zsb3c+KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUp
KTsKLSAgICBjYXNlIExJU1RfSVRFTToKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpMaXN0SXRlbToK
ICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckxpc3RJdGVtPihlbGVtZW50LCBX
VEZNb3ZlKHN0eWxlKSk7Ci0gICAgY2FzZSBGTEVYOgotICAgIGNhc2UgSU5MSU5FX0ZMRVg6Ci0g
ICAgY2FzZSBXRUJLSVRfRkxFWDoKLSAgICBjYXNlIFdFQktJVF9JTkxJTkVfRkxFWDoKKyAgICBj
YXNlIERpc3BsYXlUeXBlOjpGbGV4OgorICAgIGNhc2UgRGlzcGxheVR5cGU6OklubGluZUZsZXg6
CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6V2ViS2l0RmxleDoKKyAgICBjYXNlIERpc3BsYXlUeXBl
OjpXZWJLaXRJbmxpbmVGbGV4OgogICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVy
RmxleGlibGVCb3g+KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKTsKLSAgICBjYXNlIEdSSUQ6Ci0g
ICAgY2FzZSBJTkxJTkVfR1JJRDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpHcmlkOgorICAgIGNh
c2UgRGlzcGxheVR5cGU6OklubGluZUdyaWQ6CiAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJl
cjxSZW5kZXJHcmlkPihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSk7Ci0gICAgY2FzZSBCT1g6Ci0g
ICAgY2FzZSBJTkxJTkVfQk9YOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OkJveDoKKyAgICBjYXNl
IERpc3BsYXlUeXBlOjpJbmxpbmVCb3g6CiAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxS
ZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g+KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKTsKICAg
ICBkZWZhdWx0OiB7CiAgICAgICAgIGlmIChjcmVhdGlvblR5cGUgPT0gT25seUNyZWF0ZUJsb2Nr
QW5kRmxleGJveFJlbmRlcmVycykKICAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxS
ZW5kZXJCbG9ja0Zsb3c+KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKTsKICAgICAgICAgc3dpdGNo
IChzdHlsZS5kaXNwbGF5KCkpIHsKLSAgICAgICAgY2FzZSBUQUJMRToKLSAgICAgICAgY2FzZSBJ
TkxJTkVfVEFCTEU6CisgICAgICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlOgorICAgICAgICBj
YXNlIERpc3BsYXlUeXBlOjpJbmxpbmVUYWJsZToKICAgICAgICAgICAgIHJldHVybiBjcmVhdGVS
ZW5kZXJlcjxSZW5kZXJUYWJsZT4oZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpOwotICAgICAgICBj
YXNlIFRBQkxFX0NFTEw6CisgICAgICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlQ2VsbDoKICAg
ICAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJUYWJsZUNlbGw+KGVsZW1lbnQs
IFdURk1vdmUoc3R5bGUpKTsKLSAgICAgICAgY2FzZSBUQUJMRV9DQVBUSU9OOgorICAgICAgICBj
YXNlIERpc3BsYXlUeXBlOjpUYWJsZUNhcHRpb246CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRl
UmVuZGVyZXI8UmVuZGVyVGFibGVDYXB0aW9uPihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSk7Ci0g
ICAgICAgIGNhc2UgVEFCTEVfUk9XX0dST1VQOgotICAgICAgICBjYXNlIFRBQkxFX0hFQURFUl9H
Uk9VUDoKLSAgICAgICAgY2FzZSBUQUJMRV9GT09URVJfR1JPVVA6CisgICAgICAgIGNhc2UgRGlz
cGxheVR5cGU6OlRhYmxlUm93R3JvdXA6CisgICAgICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxl
SGVhZGVyR3JvdXA6CisgICAgICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlRm9vdGVyR3JvdXA6
CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyVGFibGVTZWN0aW9uPihl
bGVtZW50LCBXVEZNb3ZlKHN0eWxlKSk7Ci0gICAgICAgIGNhc2UgVEFCTEVfUk9XOgorICAgICAg
ICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZVJvdzoKICAgICAgICAgICAgIHJldHVybiBjcmVhdGVS
ZW5kZXJlcjxSZW5kZXJUYWJsZVJvdz4oZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpOwotICAgICAg
ICBjYXNlIFRBQkxFX0NPTFVNTl9HUk9VUDoKLSAgICAgICAgY2FzZSBUQUJMRV9DT0xVTU46Cisg
ICAgICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlQ29sdW1uR3JvdXA6CisgICAgICAgIGNhc2Ug
RGlzcGxheVR5cGU6OlRhYmxlQ29sdW1uOgogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRl
cmVyPFJlbmRlclRhYmxlQ29sPihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSk7CiAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKQEAgLTIxNSw3ICsyMTUsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRlckVsZW1lCiAgICAgICAgIFJlbmRlckJsb2NrKiBmaXJz
dExpbmVCbG9jayA9IHJlbmRlcmVyRm9yRmlyc3RMaW5lU3R5bGUuZmlyc3RMaW5lQmxvY2soKTsK
ICAgICAgICAgaWYgKCFmaXJzdExpbmVCbG9jaykKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgICAgICBhdXRvKiBmaXJzdExpbmVTdHlsZSA9IGZpcnN0TGluZUJsb2NrLT5nZXRDYWNo
ZWRQc2V1ZG9TdHlsZShGSVJTVF9MSU5FLCAmc3R5bGUoKSk7CisgICAgICAgIGF1dG8qIGZpcnN0
TGluZVN0eWxlID0gZmlyc3RMaW5lQmxvY2stPmdldENhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb0lk
OjpGaXJzdExpbmUsICZzdHlsZSgpKTsKICAgICAgICAgaWYgKCFmaXJzdExpbmVTdHlsZSkKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4gUmVuZGVyU3R5bGU6OmNs
b25lUHRyKCpmaXJzdExpbmVTdHlsZSk7CkBAIC0yMzcsNyArMjM3LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBSZW5kZXJFbGVtZQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICAgICAgYXV0byBzdHlsZSA9IGNvbXBvc2VkVHJlZVBhcmVudEVsZW1lbnQtPnN0eWxl
UmVzb2x2ZXIoKS5zdHlsZUZvckVsZW1lbnQoKmNvbXBvc2VkVHJlZVBhcmVudEVsZW1lbnQsICZw
YXJlbnRTdHlsZSkucmVuZGVyU3R5bGU7Ci0gICAgICAgIEFTU0VSVChzdHlsZS0+ZGlzcGxheSgp
ID09IENPTlRFTlRTKTsKKyAgICAgICAgQVNTRVJUKHN0eWxlLT5kaXNwbGF5KCkgPT0gRGlzcGxh
eVR5cGU6OkNvbnRlbnRzKTsKIAogICAgICAgICAvLyBXZSBhY3QgYXMgaWYgdGhlcmUgd2FzIGFu
IHVuc3R5bGVkIDxzcGFuPiBhcm91bmQgdGhlIHRleHQgbm9kZS4gT25seSBzdHlsaW5nIGhhcHBl
bnMgdmlhIGluaGVyaXRhbmNlLgogICAgICAgICBhdXRvIGZpcnN0TGluZVN0eWxlID0gUmVuZGVy
U3R5bGU6OmNyZWF0ZVB0cigpOwpAQCAtNjUwLDcgKzY1MCw3IEBAIHZvaWQgUmVuZGVyRWxlbWVu
dDo6cHJvcGFnYXRlU3R5bGVUb0Fub24KIHsKICAgICAvLyBGSVhNRTogV2UgY291bGQgc2F2ZSB0
aGlzIGNhbGwgd2hlbiB0aGUgY2hhbmdlIG9ubHkgYWZmZWN0ZWQgbm9uLWluaGVyaXRlZCBwcm9w
ZXJ0aWVzLgogICAgIGZvciAoYXV0byYgZWxlbWVudENoaWxkIDogY2hpbGRyZW5PZlR5cGU8UmVu
ZGVyRWxlbWVudD4oKnRoaXMpKSB7Ci0gICAgICAgIGlmICghZWxlbWVudENoaWxkLmlzQW5vbnlt
b3VzKCkgfHwgZWxlbWVudENoaWxkLnN0eWxlKCkuc3R5bGVUeXBlKCkgIT0gTk9QU0VVRE8pCisg
ICAgICAgIGlmICghZWxlbWVudENoaWxkLmlzQW5vbnltb3VzKCkgfHwgZWxlbWVudENoaWxkLnN0
eWxlKCkuc3R5bGVUeXBlKCkgIT0gUHNldWRvSWQ6Ok5vbmUpCiAgICAgICAgICAgICBjb250aW51
ZTsKIAogICAgICAgICBpZiAocHJvcGFnYXRpb25UeXBlID09IFByb3BhZ2F0ZVRvQmxvY2tDaGls
ZHJlbk9ubHkgJiYgIWlzPFJlbmRlckJsb2NrPihlbGVtZW50Q2hpbGQpKQpAQCAtNzI0LDkgKzcy
NCw5IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWwKICAgICAgICAg
Ly8gS2VlcCBsYXllciBoaWVyYXJjaHkgdmlzaWJpbGl0eSBiaXRzIHVwIHRvIGRhdGUgaWYgdmlz
aWJpbGl0eSBjaGFuZ2VzLgogICAgICAgICBpZiAobV9zdHlsZS52aXNpYmlsaXR5KCkgIT0gbmV3
U3R5bGUudmlzaWJpbGl0eSgpKSB7CiAgICAgICAgICAgICBpZiAoUmVuZGVyTGF5ZXIqIGxheWVy
ID0gZW5jbG9zaW5nTGF5ZXIoKSkgewotICAgICAgICAgICAgICAgIGlmIChuZXdTdHlsZS52aXNp
YmlsaXR5KCkgPT0gVklTSUJMRSkKKyAgICAgICAgICAgICAgICBpZiAobmV3U3R5bGUudmlzaWJp
bGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgICAgICAgICAgICAgIGxheWVy
LT5zZXRIYXNWaXNpYmxlQ29udGVudCgpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGxheWVy
LT5oYXNWaXNpYmxlQ29udGVudCgpICYmICh0aGlzID09ICZsYXllci0+cmVuZGVyZXIoKSB8fCBs
YXllci0+cmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKSkgeworICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKGxheWVyLT5oYXNWaXNpYmxlQ29udGVudCgpICYmICh0aGlz
ID09ICZsYXllci0+cmVuZGVyZXIoKSB8fCBsYXllci0+cmVuZGVyZXIoKS5zdHlsZSgpLnZpc2li
aWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKSkgewogICAgICAgICAgICAgICAgICAgICBs
YXllci0+ZGlydHlWaXNpYmxlQ29udGVudFN0YXR1cygpOwogICAgICAgICAgICAgICAgICAgICBp
ZiAoZGlmZiA+IFN0eWxlRGlmZmVyZW5jZTo6UmVwYWludExheWVyKQogICAgICAgICAgICAgICAg
ICAgICAgICAgcmVwYWludCgpOwpAQCAtNzUxLDcgKzc1MSw3IEBAIHZvaWQgUmVuZGVyRWxlbWVu
dDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWwKICAgICAgICAgICAgIHNldEZsb2F0aW5nKGZhbHNlKTsK
ICAgICAgICAgICAgIGNsZWFyUG9zaXRpb25lZFN0YXRlKCk7CiAgICAgICAgIH0KLSAgICAgICAg
aWYgKG5ld1N0eWxlLmhhc1BzZXVkb1N0eWxlKEZJUlNUX0xJTkUpIHx8IG9sZFN0eWxlLT5oYXNQ
c2V1ZG9TdHlsZShGSVJTVF9MSU5FKSkKKyAgICAgICAgaWYgKG5ld1N0eWxlLmhhc1BzZXVkb1N0
eWxlKFBzZXVkb0lkOjpGaXJzdExpbmUpIHx8IG9sZFN0eWxlLT5oYXNQc2V1ZG9TdHlsZShQc2V1
ZG9JZDo6Rmlyc3RMaW5lKSkKICAgICAgICAgICAgIGludmFsaWRhdGVDYWNoZWRGaXJzdExpbmVT
dHlsZSgpOwogCiAgICAgICAgIHNldEhvcml6b250YWxXcml0aW5nTW9kZSh0cnVlKTsKQEAgLTg1
Myw3ICs4NTMsNyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6Omluc2VydGVkSW50b1RyZWUoKQogCiAg
ICAgLy8gSWYgfHRoaXN8IGlzIHZpc2libGUgYnV0IHRoaXMgb2JqZWN0IHdhcyBub3QsIHRlbGwg
dGhlIGxheWVyIGl0IGhhcyBzb21lIHZpc2libGUgY29udGVudAogICAgIC8vIHRoYXQgbmVlZHMg
dG8gYmUgZHJhd24gYW5kIGxheWVyIHZpc2liaWxpdHkgb3B0aW1pemF0aW9uIGNhbid0IGJlIHVz
ZWQKLSAgICBpZiAocGFyZW50KCktPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgJiYg
c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSAmJiAhaGFzTGF5ZXIoKSkgeworICAgIGlm
IChwYXJlbnQoKS0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAm
JiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICFoYXNMYXll
cigpKSB7CiAgICAgICAgIGlmICghbGF5ZXIpCiAgICAgICAgICAgICBsYXllciA9IHBhcmVudCgp
LT5lbmNsb3NpbmdMYXllcigpOwogICAgICAgICBpZiAobGF5ZXIpCkBAIC04NjcsNyArODY3LDcg
QEAgdm9pZCBSZW5kZXJFbGVtZW50Ojp3aWxsQmVSZW1vdmVkRnJvbVRyZQogewogICAgIC8vIElm
IHdlIHJlbW92ZSBhIHZpc2libGUgY2hpbGQgZnJvbSBhbiBpbnZpc2libGUgcGFyZW50LCB3ZSBk
b24ndCBrbm93IHRoZSBsYXllciB2aXNpYmlsaXR5IGFueSBtb3JlLgogICAgIFJlbmRlckxheWVy
KiBsYXllciA9IG51bGxwdHI7Ci0gICAgaWYgKHBhcmVudCgpLT5zdHlsZSgpLnZpc2liaWxpdHko
KSAhPSBWSVNJQkxFICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUgJiYgIWhhc0xh
eWVyKCkpIHsKKyAgICBpZiAocGFyZW50KCktPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2li
aWxpdHk6OlZpc2libGUgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6Vmlz
aWJsZSAmJiAhaGFzTGF5ZXIoKSkgewogICAgICAgICBpZiAoKGxheWVyID0gcGFyZW50KCktPmVu
Y2xvc2luZ0xheWVyKCkpKQogICAgICAgICAgICAgbGF5ZXItPmRpcnR5VmlzaWJsZUNvbnRlbnRT
dGF0dXMoKTsKICAgICB9CkBAIC0xMDc5LDcgKzEwNzksNyBAQCBib29sIFJlbmRlckVsZW1lbnQ6
OnJlcGFpbnRBZnRlckxheW91dElmCiAKICAgICBib29sIGZ1bGxSZXBhaW50ID0gc2VsZk5lZWRz
TGF5b3V0KCk7CiAgICAgLy8gUHJlc3VtYWJseSBhIGJhY2tncm91bmQgb3IgYSBib3JkZXIgZXhp
c3RzIGlmIGJvcmRlci1maXQ6bGluZXMgd2FzIHNwZWNpZmllZC4KLSAgICBpZiAoIWZ1bGxSZXBh
aW50ICYmIHN0eWxlKCkuYm9yZGVyRml0KCkgPT0gQm9yZGVyRml0TGluZXMpCisgICAgaWYgKCFm
dWxsUmVwYWludCAmJiBzdHlsZSgpLmJvcmRlckZpdCgpID09IEJvcmRlckZpdDo6TGluZXMpCiAg
ICAgICAgIGZ1bGxSZXBhaW50ID0gdHJ1ZTsKICAgICBpZiAoIWZ1bGxSZXBhaW50KSB7CiAgICAg
ICAgIC8vIFRoaXMgQVNTRVJUIGZhaWxzIGR1ZSB0byBhbmltYXRpb25zLiBTZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3MDQ4CkBAIC0xMjA4LDcgKzEyMDgsNyBA
QCBib29sIFJlbmRlckVsZW1lbnQ6OmlzVmlzaWJsZUluRG9jdW1lbnRSCiB7CiAgICAgaWYgKGRv
Y3VtZW50KCkuYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYg
KHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAodmlldygpLmZyYW1lVmlldygpLmlzT2Zmc2NyZWVuKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzMjAsNyArMTMyMCw3IEBAIGJvb2wgUmVuZGVyRWxl
bWVudDo6cmVwYWludEZvclBhdXNlZEltYWcKIAogY29uc3QgUmVuZGVyU3R5bGUqIFJlbmRlckVs
ZW1lbnQ6OmdldENhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb0lkIHBzZXVkbywgY29uc3QgUmVuZGVy
U3R5bGUqIHBhcmVudFN0eWxlKSBjb25zdAogewotICAgIGlmIChwc2V1ZG8gPCBGSVJTVF9JTlRF
Uk5BTF9QU0VVRE9JRCAmJiAhc3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShwc2V1ZG8pKQorICAgIGlm
IChwc2V1ZG8gPCBQc2V1ZG9JZDo6Rmlyc3RJbnRlcm5hbFBzZXVkb0lkICYmICFzdHlsZSgpLmhh
c1BzZXVkb1N0eWxlKHBzZXVkbykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVu
ZGVyU3R5bGUqIGNhY2hlZFN0eWxlID0gc3R5bGUoKS5nZXRDYWNoZWRQc2V1ZG9TdHlsZShwc2V1
ZG8pOwpAQCAtMTMzNSw3ICsxMzM1LDcgQEAgY29uc3QgUmVuZGVyU3R5bGUqIFJlbmRlckVsZW1l
bnQ6OmdldENhYwogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRlckVsZW1lbnQ6
OmdldFVuY2FjaGVkUHNldWRvU3R5bGUoY29uc3QgUHNldWRvU3R5bGVSZXF1ZXN0JiBwc2V1ZG9T
dHlsZVJlcXVlc3QsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVy
U3R5bGUqIG93blN0eWxlKSBjb25zdAogewotICAgIGlmIChwc2V1ZG9TdHlsZVJlcXVlc3QucHNl
dWRvSWQgPCBGSVJTVF9JTlRFUk5BTF9QU0VVRE9JRCAmJiAhb3duU3R5bGUgJiYgIXN0eWxlKCku
aGFzUHNldWRvU3R5bGUocHNldWRvU3R5bGVSZXF1ZXN0LnBzZXVkb0lkKSkKKyAgICBpZiAocHNl
dWRvU3R5bGVSZXF1ZXN0LnBzZXVkb0lkIDwgUHNldWRvSWQ6OkZpcnN0SW50ZXJuYWxQc2V1ZG9J
ZCAmJiAhb3duU3R5bGUgJiYgIXN0eWxlKCkuaGFzUHNldWRvU3R5bGUocHNldWRvU3R5bGVSZXF1
ZXN0LnBzZXVkb0lkKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIXBhcmVu
dFN0eWxlKSB7CkBAIC0xMzg0LDExICsxMzg0LDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4gUmVuZGVyRWxlbWUKICAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IGVsZW1lbnQoKS0+
Y29udGFpbmluZ1NoYWRvd1Jvb3QoKSkgewogICAgICAgICBpZiAocm9vdC0+bW9kZSgpID09IFNo
YWRvd1Jvb3RNb2RlOjpVc2VyQWdlbnQpIHsKICAgICAgICAgICAgIGlmIChFbGVtZW50KiBzaGFk
b3dIb3N0ID0gZWxlbWVudCgpLT5zaGFkb3dIb3N0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IHNoYWRvd0hvc3QtPnJlbmRlcmVyKCktPmdldFVuY2FjaGVkUHNldWRvU3R5bGUoUHNldWRvU3R5
bGVSZXF1ZXN0KFNFTEVDVElPTikpOworICAgICAgICAgICAgICAgIHJldHVybiBzaGFkb3dIb3N0
LT5yZW5kZXJlcigpLT5nZXRVbmNhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb1N0eWxlUmVxdWVzdChQ
c2V1ZG9JZDo6U2VsZWN0aW9uKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gZ2V0
VW5jYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9TdHlsZVJlcXVlc3QoU0VMRUNUSU9OKSk7CisgICAg
cmV0dXJuIGdldFVuY2FjaGVkUHNldWRvU3R5bGUoUHNldWRvU3R5bGVSZXF1ZXN0KFBzZXVkb0lk
OjpTZWxlY3Rpb24pKTsKIH0KIAogQ29sb3IgUmVuZGVyRWxlbWVudDo6c2VsZWN0aW9uRm9yZWdy
b3VuZENvbG9yKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuaAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDcgKzE0MCw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGlzVHJhbnNwYXJlbnQoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLm9wYWNpdHko
KSA8IDEuMGY7IH0KICAgICBmbG9hdCBvcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS5v
cGFjaXR5KCk7IH0KIAotICAgIGJvb2wgdmlzaWJsZVRvSGl0VGVzdGluZygpIGNvbnN0IHsgcmV0
dXJuIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUgJiYgc3R5bGUoKS5wb2ludGVyRXZl
bnRzKCkgIT0gUEVfTk9ORTsgfQorICAgIGJvb2wgdmlzaWJsZVRvSGl0VGVzdGluZygpIGNvbnN0
IHsgcmV0dXJuIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUgJiYg
c3R5bGUoKS5wb2ludGVyRXZlbnRzKCkgIT0gUG9pbnRlckV2ZW50czo6Tm9uZTsgfQogCiAgICAg
Ym9vbCBoYXNCYWNrZ3JvdW5kKCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS5oYXNCYWNrZ3JvdW5k
KCk7IH0KICAgICBib29sIGhhc01hc2soKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLmhhc01hc2so
KTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250
cm9sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmls
ZVVwbG9hZENvbnRyb2wuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTQsNyArMTE0LDcgQEAgaW50IFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjptYXhGaWxlbmFtZQog
CiB2b2lkIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9iamVjdChQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewotICAgIGlmIChzdHls
ZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHko
KSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8g
UHVzaCBhIGNsaXAuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNj
cmVlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1
bGxTY3JlZW4uY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRnVsbFNjcmVlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAg
c3RhdGljIFJlbmRlclN0eWxlIGNyZWF0ZUZ1bGxTY3JlZW5TdHlsZQogICAgIGZ1bGxzY3JlZW5T
dHlsZS5zZXRGb250RGVzY3JpcHRpb24oeyB9KTsKICAgICBmdWxsc2NyZWVuU3R5bGUuZm9udENh
c2NhZGUoKS51cGRhdGUobnVsbHB0cik7CiAKLSAgICBmdWxsc2NyZWVuU3R5bGUuc2V0RGlzcGxh
eShGTEVYKTsKKyAgICBmdWxsc2NyZWVuU3R5bGUuc2V0RGlzcGxheShEaXNwbGF5VHlwZTo6Rmxl
eCk7CiAgICAgZnVsbHNjcmVlblN0eWxlLnNldEp1c3RpZnlDb250ZW50UG9zaXRpb24oQ29udGVu
dFBvc2l0aW9uOjpDZW50ZXIpOwogICAgIGZ1bGxzY3JlZW5TdHlsZS5zZXRBbGlnbkl0ZW1zUG9z
aXRpb24oSXRlbVBvc2l0aW9uOjpDZW50ZXIpOwogICAgIGZ1bGxzY3JlZW5TdHlsZS5zZXRGbGV4
RGlyZWN0aW9uKEZsZXhEaXJlY3Rpb246OkNvbHVtbik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckdyaWQuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyNCw4ICs1MjQs
OCBAQCB1bnNpZ25lZCBSZW5kZXJHcmlkOjpjb21wdXRlQXV0b1JlcGVhdFRyCiBzdGQ6OnVuaXF1
ZV9wdHI8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+IFJlbmRlckdyaWQ6OmNvbXB1dGVFbXB0eVRyYWNr
c0ZvckF1dG9SZXBlYXQoR3JpZCYgZ3JpZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVj
dGlvbikgY29uc3QKIHsKICAgICBib29sIGlzUm93QXhpcyA9IGRpcmVjdGlvbiA9PSBGb3JDb2x1
bW5zOwotICAgIGlmICgoaXNSb3dBeGlzICYmIHN0eWxlKCkuZ3JpZEF1dG9SZXBlYXRDb2x1bW5z
VHlwZSgpICE9IEF1dG9GaXQpCi0gICAgICAgIHx8ICghaXNSb3dBeGlzICYmIHN0eWxlKCkuZ3Jp
ZEF1dG9SZXBlYXRSb3dzVHlwZSgpICE9IEF1dG9GaXQpKQorICAgIGlmICgoaXNSb3dBeGlzICYm
IHN0eWxlKCkuZ3JpZEF1dG9SZXBlYXRDb2x1bW5zVHlwZSgpICE9IEF1dG9SZXBlYXRUeXBlOjpG
aXQpCisgICAgICAgIHx8ICghaXNSb3dBeGlzICYmIHN0eWxlKCkuZ3JpZEF1dG9SZXBlYXRSb3dz
VHlwZSgpICE9IEF1dG9SZXBlYXRUeXBlOjpGaXQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxPcmRlcmVkVHJhY2tJbmRleFNldD4gZW1wdHlUcmFja0lu
ZGV4ZXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAJKHJl
dmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpy
ZXBhaW50T3JNYXJrRm9yTGF5b3V0CiB7CiAjaWYgRU5BQkxFKENTU19JTUFHRV9SRVNPTFVUSU9O
KQogICAgIGRvdWJsZSBzY2FsZSA9IHN0eWxlKCkuaW1hZ2VSZXNvbHV0aW9uKCk7Ci0gICAgaWYg
KHN0eWxlKCkuaW1hZ2VSZXNvbHV0aW9uU25hcCgpID09IEltYWdlUmVzb2x1dGlvblNuYXBQaXhl
bHMpCisgICAgaWYgKHN0eWxlKCkuaW1hZ2VSZXNvbHV0aW9uU25hcCgpID09IEltYWdlUmVzb2x1
dGlvblNuYXA6OlBpeGVscykKICAgICAgICAgc2NhbGUgPSByb3VuZEZvckltcHJlY2lzZUNvbnZl
cnNpb248aW50PihzY2FsZSk7CiAgICAgaWYgKHNjYWxlIDw9IDApCiAgICAgICAgIHNjYWxlID0g
MTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCShyZXZp
c2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6d2ls
bEJlRGVzdHJveWVkKCkKIHsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgLy8gTWFrZSBzdXJl
IHdlIGRvIG5vdCByZXRhaW4gInRoaXMiIGluIHRoZSBjb250aW51YXRpb24gb3V0bGluZSB0YWJs
ZSBtYXAgb2Ygb3VyIGNvbnRhaW5pbmcgYmxvY2tzLgotICAgIGlmIChwYXJlbnQoKSAmJiBzdHls
ZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFICYmIGhhc091dGxpbmUoKSkgeworICAgIGlmIChw
YXJlbnQoKSAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlICYm
IGhhc091dGxpbmUoKSkgewogICAgICAgICBib29sIGNvbnRhaW5pbmdCbG9ja1BhaW50c0NvbnRp
bnVhdGlvbk91dGxpbmUgPSBjb250aW51YXRpb24oKSB8fCBpc0NvbnRpbnVhdGlvbigpOwogICAg
ICAgICBpZiAoY29udGFpbmluZ0Jsb2NrUGFpbnRzQ29udGludWF0aW9uT3V0bGluZSkgewogICAg
ICAgICAgICAgaWYgKFJlbmRlckJsb2NrKiBjYiA9IGNvbnRhaW5pbmdCbG9jaygpKSB7CkBAIC0x
NDgsNyArMTQ4LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlU3R5bGVPZkFub255bW91c0Jsb2NrQwog
ICAgICAgICBSZW5kZXJJbmxpbmUqIGNvbnRpbnVhdGlvbiA9IGJsb2NrLmlubGluZUNvbnRpbnVh
dGlvbigpOwogICAgICAgICBpZiAob2xkU3R5bGUtPmhhc0luRmxvd1Bvc2l0aW9uKCkgJiYgaW5G
bG93UG9zaXRpb25lZElubGluZUFuY2VzdG9yKGNvbnRpbnVhdGlvbikpCiAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgYXV0byBibG9ja1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFu
b255bW91c1N0eWxlV2l0aERpc3BsYXkoYmxvY2suc3R5bGUoKSwgQkxPQ0spOworICAgICAgICBh
dXRvIGJsb2NrU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlz
cGxheShibG9jay5zdHlsZSgpLCBEaXNwbGF5VHlwZTo6QmxvY2spOwogICAgICAgICBibG9ja1N0
eWxlLnNldFBvc2l0aW9uKG5ld1N0eWxlLT5wb3NpdGlvbigpKTsKICAgICAgICAgYmxvY2suc2V0
U3R5bGUoV1RGTW92ZShibG9ja1N0eWxlKSk7CiAgICAgfQpAQCAtMjExLDcgKzIxMSw3IEBAIHZv
aWQgUmVuZGVySW5saW5lOjp1cGRhdGVBbHdheXNDcmVhdGVMaW4KICAgICBib29sIGFsd2F5c0Ny
ZWF0ZUxpbmVCb3hlcyA9IChwYXJlbnRSZW5kZXJJbmxpbmUgJiYgcGFyZW50UmVuZGVySW5saW5l
LT5hbHdheXNDcmVhdGVMaW5lQm94ZXMoKSkKICAgICAgICAgfHwgKHBhcmVudFJlbmRlcklubGlu
ZSAmJiBwYXJlbnRTdHlsZS0+dmVydGljYWxBbGlnbigpICE9IFZlcnRpY2FsQWxpZ246OkJhc2Vs
aW5lKQogICAgICAgICB8fCBzdHlsZSgpLnZlcnRpY2FsQWxpZ24oKSAhPSBWZXJ0aWNhbEFsaWdu
OjpCYXNlbGluZQotICAgICAgICB8fCBzdHlsZSgpLnRleHRFbXBoYXNpc01hcmsoKSAhPSBUZXh0
RW1waGFzaXNNYXJrTm9uZQorICAgICAgICB8fCBzdHlsZSgpLnRleHRFbXBoYXNpc01hcmsoKSAh
PSBUZXh0RW1waGFzaXNNYXJrOjpOb25lCiAgICAgICAgIHx8IChjaGVja0ZvbnRzICYmICghcGFy
ZW50U3R5bGUtPmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKS5oYXNJZGVudGljYWxBc2NlbnRE
ZXNjZW50QW5kTGluZUdhcChzdHlsZSgpLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKSkKICAg
ICAgICAgfHwgcGFyZW50U3R5bGUtPmxpbmVIZWlnaHQoKSAhPSBzdHlsZSgpLmxpbmVIZWlnaHQo
KSkpOwogCkBAIC04MTgsNyArODE4LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6OmxpbmVz
VmlzdWFsT3ZlcgogTGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6OmNsaXBwZWRPdmVyZmxvd1JlY3RG
b3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIp
IGNvbnN0CiB7CiAgICAgLy8gT25seSBmaXJzdC1sZXR0ZXIgcmVuZGVyZXJzIGFyZSBhbGxvd2Vk
IGluIGhlcmUgZHVyaW5nIGxheW91dC4gVGhleSBtdXRhdGUgdGhlIHRyZWUgdHJpZ2dlcmluZyBy
ZXBhaW50cy4KLSAgICBBU1NFUlQoIXZpZXcoKS5mcmFtZVZpZXcoKS5sYXlvdXRDb250ZXh0KCku
aXNQYWludE9mZnNldENhY2hlRW5hYmxlZCgpIHx8IHN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gRklS
U1RfTEVUVEVSIHx8IGhhc1NlbGZQYWludGluZ0xheWVyKCkpOworICAgIEFTU0VSVCghdmlldygp
LmZyYW1lVmlldygpLmxheW91dENvbnRleHQoKS5pc1BhaW50T2Zmc2V0Q2FjaGVFbmFibGVkKCkg
fHwgc3R5bGUoKS5zdHlsZVR5cGUoKSA9PSBQc2V1ZG9JZDo6Rmlyc3RMZXR0ZXIgfHwgaGFzU2Vs
ZlBhaW50aW5nTGF5ZXIoKSk7CiAKICAgICBpZiAoIWZpcnN0TGluZUJveEluY2x1ZGluZ0N1bGxp
bmcoKSAmJiAhY29udGludWF0aW9uKCkpCiAgICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CkBA
IC0xMzg3LDcgKzEzODcsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lRm9yTGlu
ZShHCiB2b2lkIFJlbmRlcklubGluZTo6YWRkQW5ub3RhdGVkUmVnaW9ucyhWZWN0b3I8QW5ub3Rh
dGVkUmVnaW9uVmFsdWU+JiByZWdpb25zKQogewogICAgIC8vIENvbnZlcnQgdGhlIHN0eWxlIHJl
Z2lvbnMgdG8gYWJzb2x1dGUgY29vcmRpbmF0ZXMuCi0gICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0
eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxp
dHk6OlZpc2libGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IFZlY3RvcjxTdHlsZURh
c2hib2FyZFJlZ2lvbj4mIHN0eWxlUmVnaW9ucyA9IHN0eWxlKCkuZGFzaGJvYXJkUmVnaW9ucygp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lv
biAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMzUsNyArMzM1LDcgQEAgUmVuZGVyTGF5ZXI6OlJlbmRlckxheWVy
KFJlbmRlckxheWVyTW9kZQogCiAgICAgaWYgKCFyZW5kZXJlcigpLmZpcnN0Q2hpbGQoKSkgewog
ICAgICAgICBtX3Zpc2libGVDb250ZW50U3RhdHVzRGlydHkgPSBmYWxzZTsKLSAgICAgICAgbV9o
YXNWaXNpYmxlQ29udGVudCA9IHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklT
SUJMRTsKKyAgICAgICAgbV9oYXNWaXNpYmxlQ29udGVudCA9IHJlbmRlcmVyKCkuc3R5bGUoKS52
aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZTsKICAgICB9CiAKICAgICBpZiAoRWxl
bWVudCogZWxlbWVudCA9IHJlbmRlcmVyKCkuZWxlbWVudCgpKSB7CkBAIC0xMjY0LDE0ICsxMjY0
LDE0IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZURlc2NlbmRhbnREZXBlbmQKICAgICB9CiAK
ICAgICBpZiAobV92aXNpYmxlQ29udGVudFN0YXR1c0RpcnR5KSB7Ci0gICAgICAgIGlmIChyZW5k
ZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUpCisgICAgICAgIGlmIChyZW5k
ZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAg
ICAgICAgICBtX2hhc1Zpc2libGVDb250ZW50ID0gdHJ1ZTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICAvLyBsYXllciBtYXkgYmUgaGlkZGVuIGJ1dCBzdGlsbCBoYXZlIHNvbWUgdmlzaWJs
ZSBjb250ZW50LCBjaGVjayBmb3IgdGhpcwogICAgICAgICAgICAgbV9oYXNWaXNpYmxlQ29udGVu
dCA9IGZhbHNlOwogICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiByID0gcmVuZGVyZXIoKS5maXJz
dENoaWxkKCk7CiAgICAgICAgICAgICB3aGlsZSAocikgewotICAgICAgICAgICAgICAgIGlmIChy
LT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFICYmICFyLT5oYXNMYXllcigpKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKHItPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6
OlZpc2libGUgJiYgIXItPmhhc0xheWVyKCkpIHsKICAgICAgICAgICAgICAgICAgICAgbV9oYXNW
aXNpYmxlQ29udGVudCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIH0KQEAgLTMxNDgsNyArMzE0OCw3IEBAIFJlZjxTY3JvbGxiYXI+IFJlbmRlckxh
eWVyOjpjcmVhdGVTY3JvbGwKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiB3aWRnZXQ7CiAgICAgQVNT
RVJUKHJlbmRlcmVyRm9yU2Nyb2xsYmFyKHJlbmRlcmVyKCkpKTsKICAgICBhdXRvJiBhY3R1YWxS
ZW5kZXJlciA9ICpyZW5kZXJlckZvclNjcm9sbGJhcihyZW5kZXJlcigpKTsKLSAgICBib29sIGhh
c0N1c3RvbVNjcm9sbGJhclN0eWxlID0gaXM8UmVuZGVyQm94PihhY3R1YWxSZW5kZXJlcikgJiYg
ZG93bmNhc3Q8UmVuZGVyQm94PihhY3R1YWxSZW5kZXJlcikuc3R5bGUoKS5oYXNQc2V1ZG9TdHls
ZShTQ1JPTExCQVIpOworICAgIGJvb2wgaGFzQ3VzdG9tU2Nyb2xsYmFyU3R5bGUgPSBpczxSZW5k
ZXJCb3g+KGFjdHVhbFJlbmRlcmVyKSAmJiBkb3duY2FzdDxSZW5kZXJCb3g+KGFjdHVhbFJlbmRl
cmVyKS5zdHlsZSgpLmhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkOjpTY3JvbGxiYXIpOwogICAgIGlm
IChoYXNDdXN0b21TY3JvbGxiYXJTdHlsZSkKICAgICAgICAgd2lkZ2V0ID0gUmVuZGVyU2Nyb2xs
YmFyOjpjcmVhdGVDdXN0b21TY3JvbGxiYXIoKnRoaXMsIG9yaWVudGF0aW9uLCBkb3duY2FzdDxS
ZW5kZXJCb3g+KGFjdHVhbFJlbmRlcmVyKS5lbGVtZW50KCkpOwogICAgIGVsc2UgewpAQCAtMzQ2
NiwxNCArMzQ2NiwxNCBAQCBib29sIFJlbmRlckxheWVyOjpoYXNWZXJ0aWNhbE92ZXJmbG93KCkg
CiBzdGF0aWMgYm9vbCBzdHlsZVJlcXVpcmVzU2Nyb2xsYmFyKGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSwgU2Nyb2xsYmFyT3JpZW50YXRpb24gYXhpcykKIHsKICAgICBPdmVyZmxvdyBvdmVyZmxv
dyA9IGF4aXMgPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWxTY3JvbGxiYXIgPyBz
dHlsZS5vdmVyZmxvd1goKSA6IHN0eWxlLm92ZXJmbG93WSgpOwotICAgIGJvb2wgb3ZlcmZsb3dT
Y3JvbGxBY3RzTGlrZUF1dG8gPSBvdmVyZmxvdyA9PSBPdmVyZmxvdzo6U2Nyb2xsICYmICFzdHls
ZS5oYXNQc2V1ZG9TdHlsZShTQ1JPTExCQVIpICYmIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLnVz
ZXNPdmVybGF5U2Nyb2xsYmFycygpOworICAgIGJvb2wgb3ZlcmZsb3dTY3JvbGxBY3RzTGlrZUF1
dG8gPSBvdmVyZmxvdyA9PSBPdmVyZmxvdzo6U2Nyb2xsICYmICFzdHlsZS5oYXNQc2V1ZG9TdHls
ZShQc2V1ZG9JZDo6U2Nyb2xsYmFyKSAmJiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS51c2VzT3Zl
cmxheVNjcm9sbGJhcnMoKTsKICAgICByZXR1cm4gb3ZlcmZsb3cgPT0gT3ZlcmZsb3c6OlNjcm9s
bCAmJiAhb3ZlcmZsb3dTY3JvbGxBY3RzTGlrZUF1dG87CiB9CiAKIHN0YXRpYyBib29sIHN0eWxl
RGVmaW5lc0F1dG9tYXRpY1Njcm9sbGJhcihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIFNjcm9s
bGJhck9yaWVudGF0aW9uIGF4aXMpCiB7CiAgICAgT3ZlcmZsb3cgb3ZlcmZsb3cgPSBheGlzID09
IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsU2Nyb2xsYmFyID8gc3R5bGUub3ZlcmZs
b3dYKCkgOiBzdHlsZS5vdmVyZmxvd1koKTsKLSAgICBib29sIG92ZXJmbG93U2Nyb2xsQWN0c0xp
a2VBdXRvID0gb3ZlcmZsb3cgPT0gT3ZlcmZsb3c6OlNjcm9sbCAmJiAhc3R5bGUuaGFzUHNldWRv
U3R5bGUoU0NST0xMQkFSKSAmJiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS51c2VzT3ZlcmxheVNj
cm9sbGJhcnMoKTsKKyAgICBib29sIG92ZXJmbG93U2Nyb2xsQWN0c0xpa2VBdXRvID0gb3ZlcmZs
b3cgPT0gT3ZlcmZsb3c6OlNjcm9sbCAmJiAhc3R5bGUuaGFzUHNldWRvU3R5bGUoUHNldWRvSWQ6
OlNjcm9sbGJhcikgJiYgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkudXNlc092ZXJsYXlTY3JvbGxi
YXJzKCk7CiAgICAgcmV0dXJuIG92ZXJmbG93ID09IE92ZXJmbG93OjpBdXRvIHx8IG92ZXJmbG93
ID09IE92ZXJmbG93OjpPdmVybGF5IHx8IG92ZXJmbG93U2Nyb2xsQWN0c0xpa2VBdXRvOwogfQog
CkBAIC00MDk0LDIzICs0MDk0LDIzIEBAIHN0YXRpYyBpbmxpbmUgTGF5b3V0UmVjdCBjb21wdXRl
UmVmZXJlbmMKICAgICBMYXlvdXRSZWN0IHJlZmVyZW5jZUJveDsKICAgICBjb25zdCBhdXRvJiBi
b3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKTsKICAgICBzd2l0Y2ggKGNsaXBwaW5n
UGF0aC5yZWZlcmVuY2VCb3goKSkgewotICAgIGNhc2UgQ29udGVudEJveDoKKyAgICBjYXNlIENT
U0JveFR5cGU6OkNvbnRlbnRCb3g6CiAgICAgICAgIHJlZmVyZW5jZUJveCA9IGJveC5jb250ZW50
Qm94UmVjdCgpOwogICAgICAgICByZWZlcmVuY2VCb3gubW92ZShvZmZzZXRGcm9tUm9vdCk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGFkZGluZ0JveDoKKyAgICBjYXNlIENTU0JveFR5cGU6
OlBhZGRpbmdCb3g6CiAgICAgICAgIHJlZmVyZW5jZUJveCA9IGJveC5wYWRkaW5nQm94UmVjdCgp
OwogICAgICAgICByZWZlcmVuY2VCb3gubW92ZShvZmZzZXRGcm9tUm9vdCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIC8vIEZJWE1FOiBTdXBwb3J0IG1hcmdpbi1ib3guIFVzZSBib3VuZGluZyBjbGll
bnQgcmVjdCBmb3Igbm93LgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjc5ODQKLSAgICBjYXNlIE1hcmdpbkJveDoKKyAgICBjYXNlIENTU0JveFR5cGU6
Ok1hcmdpbkJveDoKICAgICAvLyBmaWxsLCBzdHJva2UsIHZpZXctYm94IGNvbXB1dGUgdG8gYm9y
ZGVyLWJveCBmb3IgSFRNTCBlbGVtZW50cy4KLSAgICBjYXNlIEZpbGw6Ci0gICAgY2FzZSBTdHJv
a2U6Ci0gICAgY2FzZSBWaWV3Qm94OgotICAgIGNhc2UgQm9yZGVyQm94OgotICAgIGNhc2UgQm94
TWlzc2luZzoKKyAgICBjYXNlIENTU0JveFR5cGU6OkZpbGw6CisgICAgY2FzZSBDU1NCb3hUeXBl
OjpTdHJva2U6CisgICAgY2FzZSBDU1NCb3hUeXBlOjpWaWV3Qm94OgorICAgIGNhc2UgQ1NTQm94
VHlwZTo6Qm9yZGVyQm94OgorICAgIGNhc2UgQ1NTQm94VHlwZTo6Qm94TWlzc2luZzoKICAgICAg
ICAgcmVmZXJlbmNlQm94ID0gYm94LmJvcmRlckJveFJlY3QoKTsKICAgICAgICAgcmVmZXJlbmNl
Qm94Lm1vdmUob2Zmc2V0RnJvbVJvb3QpOwogICAgICAgICBicmVhazsKQEAgLTYwNDEsNyArNjA0
MSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmJhY2tncm91bmRJc0tub3duVG9CZU8KIAogICAgIC8v
IFdlIGNhbid0IHVzZSBoYXNWaXNpYmxlQ29udGVudCgpLCBiZWNhdXNlIHRoYXQgd2lsbCBiZSB0
cnVlIGlmIG91ciByZW5kZXJlciBpcyBoaWRkZW4sIGJ1dCBzb21lIGNoaWxkCiAgICAgLy8gaXMg
dmlzaWJsZSBhbmQgdGhhdCBjaGlsZCBkb2Vzbid0IGNvdmVyIHRoZSBlbnRpcmUgcmVjdC4KLSAg
ICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlm
IChyZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChwYWludHNXaXRoRmlsdGVycygpICYm
IHJlbmRlcmVyKCkuc3R5bGUoKS5maWx0ZXIoKS5oYXNGaWx0ZXJUaGF0QWZmZWN0c09wYWNpdHko
KSkKQEAgLTY3MzAsNyArNjczMCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVNjcm9sbGFi
bGVBcmVhU2UKIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVNjcm9sbENvcm5lclN0eWxlKCkKIHsK
ICAgICBSZW5kZXJFbGVtZW50KiBhY3R1YWxSZW5kZXJlciA9IHJlbmRlcmVyRm9yU2Nyb2xsYmFy
KHJlbmRlcmVyKCkpOwotICAgIGF1dG8gY29ybmVyID0gcmVuZGVyZXIoKS5oYXNPdmVyZmxvd0Ns
aXAoKSA/IGFjdHVhbFJlbmRlcmVyLT5nZXRVbmNhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb1N0eWxl
UmVxdWVzdChTQ1JPTExCQVJfQ09STkVSKSwgJmFjdHVhbFJlbmRlcmVyLT5zdHlsZSgpKSA6IG51
bGxwdHI7CisgICAgYXV0byBjb3JuZXIgPSByZW5kZXJlcigpLmhhc092ZXJmbG93Q2xpcCgpID8g
YWN0dWFsUmVuZGVyZXItPmdldFVuY2FjaGVkUHNldWRvU3R5bGUoUHNldWRvU3R5bGVSZXF1ZXN0
KFBzZXVkb0lkOjpTY3JvbGxiYXJDb3JuZXIpLCAmYWN0dWFsUmVuZGVyZXItPnN0eWxlKCkpIDog
bnVsbHB0cjsKIAogICAgIGlmICghY29ybmVyKSB7CiAgICAgICAgIGNsZWFyU2Nyb2xsQ29ybmVy
KCk7CkBAIC02NzU3LDcgKzY3NTcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpjbGVhclNjcm9sbENv
cm5lcigpCiB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVSZXNpemVyU3R5bGUoKQogewogICAgIFJl
bmRlckVsZW1lbnQqIGFjdHVhbFJlbmRlcmVyID0gcmVuZGVyZXJGb3JTY3JvbGxiYXIocmVuZGVy
ZXIoKSk7Ci0gICAgYXV0byByZXNpemVyID0gcmVuZGVyZXIoKS5oYXNPdmVyZmxvd0NsaXAoKSA/
IGFjdHVhbFJlbmRlcmVyLT5nZXRVbmNhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb1N0eWxlUmVxdWVz
dChSRVNJWkVSKSwgJmFjdHVhbFJlbmRlcmVyLT5zdHlsZSgpKSA6IG51bGxwdHI7CisgICAgYXV0
byByZXNpemVyID0gcmVuZGVyZXIoKS5oYXNPdmVyZmxvd0NsaXAoKSA/IGFjdHVhbFJlbmRlcmVy
LT5nZXRVbmNhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb1N0eWxlUmVxdWVzdChQc2V1ZG9JZDo6UmVz
aXplciksICZhY3R1YWxSZW5kZXJlci0+c3R5bGUoKSkgOiBudWxscHRyOwogCiAgICAgaWYgKCFy
ZXNpemVyKSB7CiAgICAgICAgIGNsZWFyUmVzaXplcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHJldmlzaW9uIDIzMjE0MykK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjM5LDggKzEyMzksOCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6
dXBkYXRlQWZ0ZXJEZXNjCiAKICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVmlzaWJs
ZShtX293bmluZ0xheWVyLmhhc1Zpc2libGVDb250ZW50KCkgfHwgaGFzVmlzaWJsZU5vbkNvbXBv
c2l0ZWREZXNjZW5kYW50cygpKTsKICAgICBpZiAobV9zY3JvbGxpbmdMYXllcikgewotICAgICAg
ICBtX3Njcm9sbGluZ0xheWVyLT5zZXRDb250ZW50c1Zpc2libGUocmVuZGVyZXIoKS5zdHlsZSgp
LnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKTsKLSAgICAgICAgbV9zY3JvbGxpbmdMYXllci0+c2V0
VXNlckludGVyYWN0aW9uRW5hYmxlZChyZW5kZXJlcigpLnN0eWxlKCkucG9pbnRlckV2ZW50cygp
ICE9IFBFX05PTkUpOworICAgICAgICBtX3Njcm9sbGluZ0xheWVyLT5zZXRDb250ZW50c1Zpc2li
bGUocmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxl
KTsKKyAgICAgICAgbV9zY3JvbGxpbmdMYXllci0+c2V0VXNlckludGVyYWN0aW9uRW5hYmxlZChy
ZW5kZXJlcigpLnN0eWxlKCkucG9pbnRlckV2ZW50cygpICE9IFBvaW50ZXJFdmVudHM6Ok5vbmUp
OwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MTIsOCArNTEyLDggQEAgc3RhdGljIGJvb2wgc2Nyb2xsYmFySGFzRGlzcGxheU5vbmUoU2Ny
bwogICAgIGlmICghc2Nyb2xsYmFyIHx8ICFzY3JvbGxiYXItPmlzQ3VzdG9tU2Nyb2xsYmFyKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gc2Nyb2xsYmFyU3R5bGUgPSBzdGF0aWNfY2FzdDxSZW5kZXJTY3JvbGxiYXIqPihzY3JvbGxi
YXIpLT5nZXRTY3JvbGxiYXJQc2V1ZG9TdHlsZShTY3JvbGxiYXJCR1BhcnQsIFNDUk9MTEJBUik7
Ci0gICAgcmV0dXJuIHNjcm9sbGJhclN0eWxlICYmIHNjcm9sbGJhclN0eWxlLT5kaXNwbGF5KCkg
PT0gTk9ORTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHNjcm9sbGJhclN0eWxl
ID0gc3RhdGljX2Nhc3Q8UmVuZGVyU2Nyb2xsYmFyKj4oc2Nyb2xsYmFyKS0+Z2V0U2Nyb2xsYmFy
UHNldWRvU3R5bGUoU2Nyb2xsYmFyQkdQYXJ0LCBQc2V1ZG9JZDo6U2Nyb2xsYmFyKTsKKyAgICBy
ZXR1cm4gc2Nyb2xsYmFyU3R5bGUgJiYgc2Nyb2xsYmFyU3R5bGUtPmRpc3BsYXkoKSA9PSBEaXNw
bGF5VHlwZTo6Tm9uZTsKIH0KIAogLy8gRklYTUU6IENhbiB3ZSBtYWtlIHxsYXllcnwgY29uc3Qg
UmVuZGVyTGF5ZXImPwpAQCAtMjQzMiw3ICsyNDMyLDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBv
c2l0b3I6OnJlcXVpcmVzQ29tcAogICAgIG1fcmVldmFsdWF0ZUNvbXBvc2l0aW5nQWZ0ZXJMYXlv
dXQgPSB0cnVlOwogICAgIAogICAgIGF1dG8mIHBsdWdpblJlbmRlcmVyID0gZG93bmNhc3Q8UmVu
ZGVyV2lkZ2V0PihyZW5kZXJlcik7Ci0gICAgaWYgKHBsdWdpblJlbmRlcmVyLnN0eWxlKCkudmlz
aWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKHBsdWdpblJlbmRlcmVyLnN0eWxlKCkudmlz
aWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIC8vIElmIHdlIGNhbid0IHJlbGlhYmx5IGtub3cgdGhlIHNpemUgb2YgdGhlIHBsdWdp
biB5ZXQsIGRvbid0IGNoYW5nZSBjb21wb3NpdGluZyBzdGF0ZS4KQEAgLTI0NTAsNyArMjQ1MCw3
IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXAKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgYXV0byYgZnJhbWVSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlcldp
ZGdldD4ocmVuZGVyZXIpOwotICAgIGlmIChmcmFtZVJlbmRlcmVyLnN0eWxlKCkudmlzaWJpbGl0
eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKGZyYW1lUmVuZGVyZXIuc3R5bGUoKS52aXNpYmlsaXR5
KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
aWYgKCFmcmFtZVJlbmRlcmVyLnJlcXVpcmVzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAkocmV2aXNpb24g
MjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMTAsNyArMzEwLDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWlu
dEl0ZW0oUGFpbnRJbmZvJgogCiB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50T2JqZWN0KFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7Ci0gICAg
aWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKHN0eWxlKCkudmlz
aWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgIHJldHVybjsKICAgICAK
ICAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKSB7CkBAIC0z
ODYsMTcgKzM4NiwxNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50U2Nyb2xsYmFyKFBhaW50
CiAKIHN0YXRpYyBMYXlvdXRTaXplIGl0ZW1PZmZzZXRGb3JBbGlnbm1lbnQoVGV4dFJ1biB0ZXh0
UnVuLCBjb25zdCBSZW5kZXJTdHlsZSogaXRlbVN0eWxlLCBGb250Q2FzY2FkZSBpdGVtRm9udCwg
TGF5b3V0UmVjdCBpdGVtQm91ZGluZ0JveCkKIHsKLSAgICBFVGV4dEFsaWduIGFjdHVhbEFsaWdu
bWVudCA9IGl0ZW1TdHlsZS0+dGV4dEFsaWduKCk7Ci0gICAgLy8gRklYTUU6IEZpcmVmb3ggZG9l
c24ndCByZXNwZWN0IEpVU1RJRlkuIFNob3VsZCB3ZT8KLSAgICAvLyBGSVhNRTogSGFuZGxlIFRB
RU5EIGhlcmUKLSAgICBpZiAoYWN0dWFsQWxpZ25tZW50ID09IFRBU1RBUlQgfHwgYWN0dWFsQWxp
Z25tZW50ID09IEpVU1RJRlkpCi0gICAgICBhY3R1YWxBbGlnbm1lbnQgPSBpdGVtU3R5bGUtPmlz
TGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IExFRlQgOiBSSUdIVDsKKyAgICBUZXh0QWxpZ25Nb2Rl
IGFjdHVhbEFsaWdubWVudCA9IGl0ZW1TdHlsZS0+dGV4dEFsaWduKCk7CisgICAgLy8gRklYTUU6
IEZpcmVmb3ggZG9lc24ndCByZXNwZWN0IFRleHRBbGlnbk1vZGU6Okp1c3RpZnkuIFNob3VsZCB3
ZT8KKyAgICAvLyBGSVhNRTogSGFuZGxlIFRleHRBbGlnbk1vZGU6OkVuZCBoZXJlCisgICAgaWYg
KGFjdHVhbEFsaWdubWVudCA9PSBUZXh0QWxpZ25Nb2RlOjpTdGFydCB8fCBhY3R1YWxBbGlnbm1l
bnQgPT0gVGV4dEFsaWduTW9kZTo6SnVzdGlmeSkKKyAgICAgICAgYWN0dWFsQWxpZ25tZW50ID0g
aXRlbVN0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBUZXh0QWxpZ25Nb2RlOjpMZWZ0
IDogVGV4dEFsaWduTW9kZTo6UmlnaHQ7CiAKICAgICBMYXlvdXRTaXplIG9mZnNldCA9IExheW91
dFNpemUoMCwgaXRlbUZvbnQuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSk7Ci0gICAgaWYgKGFjdHVh
bEFsaWdubWVudCA9PSBSSUdIVCB8fCBhY3R1YWxBbGlnbm1lbnQgPT0gV0VCS0lUX1JJR0hUKSB7
CisgICAgaWYgKGFjdHVhbEFsaWdubWVudCA9PSBUZXh0QWxpZ25Nb2RlOjpSaWdodCB8fCBhY3R1
YWxBbGlnbm1lbnQgPT0gVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQpIHsKICAgICAgICAgZmxv
YXQgdGV4dFdpZHRoID0gaXRlbUZvbnQud2lkdGgodGV4dFJ1bik7CiAgICAgICAgIG9mZnNldC5z
ZXRXaWR0aChpdGVtQm91ZGluZ0JveC53aWR0aCgpIC0gdGV4dFdpZHRoIC0gb3B0aW9uc1NwYWNp
bmdIb3Jpem9udGFsKTsKLSAgICB9IGVsc2UgaWYgKGFjdHVhbEFsaWdubWVudCA9PSBDRU5URVIg
fHwgYWN0dWFsQWxpZ25tZW50ID09IFdFQktJVF9DRU5URVIpIHsKKyAgICB9IGVsc2UgaWYgKGFj
dHVhbEFsaWdubWVudCA9PSBUZXh0QWxpZ25Nb2RlOjpDZW50ZXIgfHwgYWN0dWFsQWxpZ25tZW50
ID09IFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcikgewogICAgICAgICBmbG9hdCB0ZXh0V2lk
dGggPSBpdGVtRm9udC53aWR0aCh0ZXh0UnVuKTsKICAgICAgICAgb2Zmc2V0LnNldFdpZHRoKChp
dGVtQm91ZGluZ0JveC53aWR0aCgpIC0gdGV4dFdpZHRoKSAvIDIpOwogICAgIH0gZWxzZQpAQCAt
NDExLDcgKzQxMSw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtRm9yZWdyb3VuZCgK
IAogICAgIGF1dG8mIGl0ZW1TdHlsZSA9ICpsaXN0SXRlbUVsZW1lbnQtPmNvbXB1dGVkU3R5bGUo
KTsKIAotICAgIGlmIChpdGVtU3R5bGUudmlzaWJpbGl0eSgpID09IEhJRERFTikKKyAgICBpZiAo
aXRlbVN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4pCiAgICAgICAgIHJl
dHVybjsKIAogICAgIFN0cmluZyBpdGVtVGV4dDsKQEAgLTQ2NSw3ICs0NjUsNyBAQCB2b2lkIFJl
bmRlckxpc3RCb3g6OnBhaW50SXRlbUJhY2tncm91bmQoCiAgICAgICAgIGJhY2tDb2xvciA9IGl0
ZW1TdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kQ29sb3IpOwogCiAgICAgLy8gRHJhdyB0aGUgYmFja2dyb3VuZCBmb3IgdGhpcyBs
aXN0IGJveCBpdGVtCi0gICAgaWYgKGl0ZW1TdHlsZS52aXNpYmlsaXR5KCkgPT0gSElEREVOKQor
ICAgIGlmIChpdGVtU3R5bGUudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OkhpZGRlbikKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgTGF5b3V0UmVjdCBpdGVtUmVjdCA9IGl0ZW1Cb3VuZGluZ0Jv
eFJlY3QocGFpbnRPZmZzZXQsIGxpc3RJbmRleCk7CkBAIC05MTQsNyArOTE0LDcgQEAgdm9pZCBS
ZW5kZXJMaXN0Qm94Ojpsb2dNb2NrU2Nyb2xsQW5pbWF0bwogUmVmPFNjcm9sbGJhcj4gUmVuZGVy
TGlzdEJveDo6Y3JlYXRlU2Nyb2xsYmFyKCkKIHsKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiB3aWRn
ZXQ7Ci0gICAgYm9vbCBoYXNDdXN0b21TY3JvbGxiYXJTdHlsZSA9IHN0eWxlKCkuaGFzUHNldWRv
U3R5bGUoU0NST0xMQkFSKTsKKyAgICBib29sIGhhc0N1c3RvbVNjcm9sbGJhclN0eWxlID0gc3R5
bGUoKS5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6U2Nyb2xsYmFyKTsKICAgICBpZiAoaGFzQ3Vz
dG9tU2Nyb2xsYmFyU3R5bGUpCiAgICAgICAgIHdpZGdldCA9IFJlbmRlclNjcm9sbGJhcjo6Y3Jl
YXRlQ3VzdG9tU2Nyb2xsYmFyKCp0aGlzLCBWZXJ0aWNhbFNjcm9sbGJhciwgJnNlbGVjdEVsZW1l
bnQoKSk7CiAgICAgZWxzZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGlzdEl0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0SXRlbS5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0SXRlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAg
UmVuZGVyU3R5bGUgUmVuZGVyTGlzdEl0ZW06OmNvbXB1dGVNYXJrZQogICAgIGZvbnREZXNjcmlw
dGlvbi5zZXRWYXJpYW50TnVtZXJpY1NwYWNpbmcoRm9udFZhcmlhbnROdW1lcmljU3BhY2luZzo6
VGFidWxhck51bWJlcnMpOwogICAgIHBhcmVudFN0eWxlLnNldEZvbnREZXNjcmlwdGlvbihmb250
RGVzY3JpcHRpb24pOwogICAgIHBhcmVudFN0eWxlLmZvbnRDYXNjYWRlKCkudXBkYXRlKCZkb2N1
bWVudCgpLmZvbnRTZWxlY3RvcigpKTsKLSAgICBpZiAoYXV0byBtYXJrZXJTdHlsZSA9IGdldENh
Y2hlZFBzZXVkb1N0eWxlKE1BUktFUiwgJnBhcmVudFN0eWxlKSkKKyAgICBpZiAoYXV0byBtYXJr
ZXJTdHlsZSA9IGdldENhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb0lkOjpNYXJrZXIsICZwYXJlbnRT
dHlsZSkpCiAgICAgICAgIHJldHVybiBSZW5kZXJTdHlsZTo6Y2xvbmUoKm1hcmtlclN0eWxlKTsK
ICAgICBhdXRvIG1hcmtlclN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwogICAgIG1hcmtl
clN0eWxlLmluaGVyaXRGcm9tKHBhcmVudFN0eWxlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDA1LDE5NyArNDA1LDE5NyBAQCBzdGF0aWMgTkVWRVJfSU5MSU5FIHZvaWQgdG9DSktJ
ZGVvZ3JhcGhpCiAgICAgYnVpbGRlci5hcHBlbmQoY2hhcmFjdGVycywgbGVuZ3RoKTsKIH0KIAot
c3RhdGljIEVMaXN0U3R5bGVUeXBlIGVmZmVjdGl2ZUxpc3RNYXJrZXJUeXBlKEVMaXN0U3R5bGVU
eXBlIHR5cGUsIGludCB2YWx1ZSkKK3N0YXRpYyBMaXN0U3R5bGVUeXBlIGVmZmVjdGl2ZUxpc3RN
YXJrZXJUeXBlKExpc3RTdHlsZVR5cGUgdHlwZSwgaW50IHZhbHVlKQogewogICAgIC8vIE5vdGUs
IHRoZSBmb2xsb3dpbmcgc3dpdGNoIHN0YXRlbWVudCBoYXMgYmVlbiBleHBsaWNpdGx5IGdyb3Vw
ZWQKICAgICAvLyBieSBsaXN0LXN0eWxlLXR5cGUgb3JkaW5hbCByYW5nZS4KICAgICBzd2l0Y2gg
KHR5cGUpIHsKLSAgICBjYXNlIEFyYWJpY0luZGljOgotICAgIGNhc2UgQmVuZ2FsaToKLSAgICBj
YXNlIEJpbmFyeUxpc3RTdHlsZToKLSAgICBjYXNlIENhbWJvZGlhbjoKLSAgICBjYXNlIENpcmNs
ZToKLSAgICBjYXNlIERlY2ltYWxMZWFkaW5nWmVybzoKLSAgICBjYXNlIERlY2ltYWxMaXN0U3R5
bGU6Ci0gICAgY2FzZSBEZXZhbmFnYXJpOgotICAgIGNhc2UgRGlzYzoKLSAgICBjYXNlIEd1amFy
YXRpOgotICAgIGNhc2UgR3VybXVraGk6Ci0gICAgY2FzZSBLYW5uYWRhOgotICAgIGNhc2UgS2ht
ZXI6Ci0gICAgY2FzZSBMYW86Ci0gICAgY2FzZSBMb3dlckhleGFkZWNpbWFsOgotICAgIGNhc2Ug
TWFsYXlhbGFtOgotICAgIGNhc2UgTW9uZ29saWFuOgotICAgIGNhc2UgTXlhbm1hcjoKLSAgICBj
YXNlIE5vbmVMaXN0U3R5bGU6Ci0gICAgY2FzZSBPY3RhbDoKLSAgICBjYXNlIE9yaXlhOgotICAg
IGNhc2UgUGVyc2lhbjoKLSAgICBjYXNlIFNxdWFyZToKLSAgICBjYXNlIFRlbHVndToKLSAgICBj
YXNlIFRoYWk6Ci0gICAgY2FzZSBUaWJldGFuOgotICAgIGNhc2UgVXBwZXJIZXhhZGVjaW1hbDoK
LSAgICBjYXNlIFVyZHU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBcmFiaWNJbmRpYzoKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OkJlbmdhbGk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpC
aW5hcnk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDYW1ib2RpYW46CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpDaXJjbGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEZWNpbWFsTGVhZGlu
Z1plcm86CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEZWNpbWFsOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6RGV2YW5hZ2FyaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRpc2M6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpHdWphcmF0aToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okd1
cm11a2hpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6S2FubmFkYToKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OktobWVyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TGFvOgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6TG93ZXJIZXhhZGVjaW1hbDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
Ok1hbGF5YWxhbToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok1vbmdvbGlhbjoKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6Ok15YW5tYXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpOb25lOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6T2N0YWw6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpP
cml5YToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlBlcnNpYW46CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpTcXVhcmU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUZWx1Z3U6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpUaGFpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGliZXRhbjoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVySGV4YWRlY2ltYWw6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpVcmR1OgogICAgICAgICByZXR1cm4gdHlwZTsgLy8gQ2FuIHJlcHJlc2VudCBh
bGwgb3JkaW5hbHMuCi0gICAgY2FzZSBBcm1lbmlhbjoKLSAgICAgICAgcmV0dXJuICh2YWx1ZSA8
IDEgfHwgdmFsdWUgPiA5OTk5OTk5OSkgPyBEZWNpbWFsTGlzdFN0eWxlIDogdHlwZTsKLSAgICBj
YXNlIENKS0lkZW9ncmFwaGljOgotICAgICAgICByZXR1cm4gKHZhbHVlIDwgMCkgPyBEZWNpbWFs
TGlzdFN0eWxlIDogdHlwZTsKLSAgICBjYXNlIEdlb3JnaWFuOgotICAgICAgICByZXR1cm4gKHZh
bHVlIDwgMSB8fCB2YWx1ZSA+IDE5OTk5KSA/IERlY2ltYWxMaXN0U3R5bGUgOiB0eXBlOwotICAg
IGNhc2UgSGVicmV3OgotICAgICAgICByZXR1cm4gKHZhbHVlIDwgMCB8fCB2YWx1ZSA+IDk5OTk5
OSkgPyBEZWNpbWFsTGlzdFN0eWxlIDogdHlwZTsKLSAgICBjYXNlIExvd2VyUm9tYW46Ci0gICAg
Y2FzZSBVcHBlclJvbWFuOgotICAgICAgICByZXR1cm4gKHZhbHVlIDwgMSB8fCB2YWx1ZSA+IDM5
OTkpID8gRGVjaW1hbExpc3RTdHlsZSA6IHR5cGU7Ci0gICAgY2FzZSBBZmFyOgotICAgIGNhc2Ug
QW1oYXJpYzoKLSAgICBjYXNlIEFtaGFyaWNBYmVnZWRlOgotICAgIGNhc2UgQXN0ZXJpc2tzOgot
ICAgIGNhc2UgQ2prRWFydGhseUJyYW5jaDoKLSAgICBjYXNlIENqa0hlYXZlbmx5U3RlbToKLSAg
ICBjYXNlIEV0aGlvcGljOgotICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlOgotICAgIGNhc2UgRXRo
aW9waWNBYmVnZWRlQW1FdDoKLSAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZUdlejoKLSAgICBjYXNl
IEV0aGlvcGljQWJlZ2VkZVRpRXI6Ci0gICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVUaUV0OgotICAg
IGNhc2UgRXRoaW9waWNIYWxlaGFtZUFhRXI6Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lQWFF
dDoKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVBbUV0OgotICAgIGNhc2UgRXRoaW9waWNIYWxl
aGFtZUdlejoKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVPbUV0OgotICAgIGNhc2UgRXRoaW9w
aWNIYWxlaGFtZVNpZEV0OgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVNvRXQ6Ci0gICAgY2Fz
ZSBFdGhpb3BpY0hhbGVoYW1lVGlFcjoKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVUaUV0Ogot
ICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVRpZzoKLSAgICBjYXNlIEZvb3Rub3RlczoKLSAgICBj
YXNlIEhhbmd1bDoKLSAgICBjYXNlIEhhbmd1bENvbnNvbmFudDoKLSAgICBjYXNlIEhpcmFnYW5h
OgotICAgIGNhc2UgSGlyYWdhbmFJcm9oYToKLSAgICBjYXNlIEthdGFrYW5hOgotICAgIGNhc2Ug
S2F0YWthbmFJcm9oYToKLSAgICBjYXNlIExvd2VyQWxwaGE6Ci0gICAgY2FzZSBMb3dlckFybWVu
aWFuOgotICAgIGNhc2UgTG93ZXJHcmVlazoKLSAgICBjYXNlIExvd2VyTGF0aW46Ci0gICAgY2Fz
ZSBMb3dlck5vcndlZ2lhbjoKLSAgICBjYXNlIE9yb21vOgotICAgIGNhc2UgU2lkYW1hOgotICAg
IGNhc2UgU29tYWxpOgotICAgIGNhc2UgVGlncmU6Ci0gICAgY2FzZSBUaWdyaW55YUVyOgotICAg
IGNhc2UgVGlncmlueWFFckFiZWdlZGU6Ci0gICAgY2FzZSBUaWdyaW55YUV0OgotICAgIGNhc2Ug
VGlncmlueWFFdEFiZWdlZGU6Ci0gICAgY2FzZSBVcHBlckFscGhhOgotICAgIGNhc2UgVXBwZXJB
cm1lbmlhbjoKLSAgICBjYXNlIFVwcGVyR3JlZWs6Ci0gICAgY2FzZSBVcHBlckxhdGluOgotICAg
IGNhc2UgVXBwZXJOb3J3ZWdpYW46Ci0gICAgICAgIHJldHVybiAodmFsdWUgPCAxKSA/IERlY2lt
YWxMaXN0U3R5bGUgOiB0eXBlOworICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QXJtZW5pYW46Cisg
ICAgICAgIHJldHVybiAodmFsdWUgPCAxIHx8IHZhbHVlID4gOTk5OTk5OTkpID8gTGlzdFN0eWxl
VHlwZTo6RGVjaW1hbCA6IHR5cGU7CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDSktJZGVvZ3Jh
cGhpYzoKKyAgICAgICAgcmV0dXJuICh2YWx1ZSA8IDApID8gTGlzdFN0eWxlVHlwZTo6RGVjaW1h
bCA6IHR5cGU7CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpHZW9yZ2lhbjoKKyAgICAgICAgcmV0
dXJuICh2YWx1ZSA8IDEgfHwgdmFsdWUgPiAxOTk5OSkgPyBMaXN0U3R5bGVUeXBlOjpEZWNpbWFs
IDogdHlwZTsKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkhlYnJldzoKKyAgICAgICAgcmV0dXJu
ICh2YWx1ZSA8IDAgfHwgdmFsdWUgPiA5OTk5OTkpID8gTGlzdFN0eWxlVHlwZTo6RGVjaW1hbCA6
IHR5cGU7CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlclJvbWFuOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6VXBwZXJSb21hbjoKKyAgICAgICAgcmV0dXJuICh2YWx1ZSA8IDEgfHwgdmFs
dWUgPiAzOTk5KSA/IExpc3RTdHlsZVR5cGU6OkRlY2ltYWwgOiB0eXBlOworICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6QWZhcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFtaGFyaWM6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpBbWhhcmljQWJlZ2VkZToKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkFzdGVyaXNrczoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNqa0VhcnRobHlCcmFuY2g6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDamtIZWF2ZW5seVN0ZW06CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpFdGhpb3BpYzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJl
Z2VkZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZUFtRXQ6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGVHZXo6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGVUaUVyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRo
aW9waWNBYmVnZWRlVGlFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhh
bWVBYUVyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUFhRXQ6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lQW1FdDoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVHZXo6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpFdGhpb3BpY0hhbGVoYW1lT21FdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGlj
SGFsZWhhbWVTaWRFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVT
b0V0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVRpRXI6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lVGlFdDoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVUaWc6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpG
b290bm90ZXM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIYW5ndWw6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpIYW5ndWxDb25zb25hbnQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIaXJh
Z2FuYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkhpcmFnYW5hSXJvaGE6CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpLYXRha2FuYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkthdGFrYW5h
SXJvaGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckFscGhhOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6TG93ZXJBcm1lbmlhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2Vy
R3JlZWs6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckxhdGluOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6TG93ZXJOb3J3ZWdpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpPcm9t
bzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlNpZGFtYToKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OlNvbWFsaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JlOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6VGlncmlueWFFcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3Jpbnlh
RXJBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmlueWFFdDoKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXRBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6VXBwZXJBbHBoYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyQXJtZW5pYW46Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckdyZWVrOgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6VXBwZXJMYXRpbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyTm9yd2VnaWFuOgor
ICAgICAgICByZXR1cm4gKHZhbHVlIDwgMSkgPyBMaXN0U3R5bGVUeXBlOjpEZWNpbWFsIDogdHlw
ZTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gdHlwZTsK
IH0KIAotc3RhdGljIFVDaGFyIGxpc3RNYXJrZXJTdWZmaXgoRUxpc3RTdHlsZVR5cGUgdHlwZSwg
aW50IHZhbHVlKQorc3RhdGljIFVDaGFyIGxpc3RNYXJrZXJTdWZmaXgoTGlzdFN0eWxlVHlwZSB0
eXBlLCBpbnQgdmFsdWUpCiB7CiAgICAgLy8gSWYgdGhlIGxpc3Qtc3R5bGUtdHlwZSBjYW5ub3Qg
cmVwcmVzZW50IHx2YWx1ZXwgYmVjYXVzZSBpdCdzIG91dHNpZGUgaXRzCiAgICAgLy8gb3JkaW5h
bCByYW5nZSB0aGVuIHdlIGZhbGwgYmFjayB0byBzb21lIGxpc3Qgc3R5bGUgdGhhdCBjYW4gcmVw
cmVzZW50IHx2YWx1ZXwuCi0gICAgRUxpc3RTdHlsZVR5cGUgZWZmZWN0aXZlVHlwZSA9IGVmZmVj
dGl2ZUxpc3RNYXJrZXJUeXBlKHR5cGUsIHZhbHVlKTsKKyAgICBMaXN0U3R5bGVUeXBlIGVmZmVj
dGl2ZVR5cGUgPSBlZmZlY3RpdmVMaXN0TWFya2VyVHlwZSh0eXBlLCB2YWx1ZSk7CiAKICAgICAv
LyBOb3RlLCB0aGUgZm9sbG93aW5nIHN3aXRjaCBzdGF0ZW1lbnQgaGFzIGJlZW4gZXhwbGljaXRs
eQogICAgIC8vIGdyb3VwZWQgYnkgbGlzdC1zdHlsZS10eXBlIHN1ZmZpeC4KICAgICBzd2l0Y2gg
KGVmZmVjdGl2ZVR5cGUpIHsKLSAgICBjYXNlIEFzdGVyaXNrczoKLSAgICBjYXNlIENpcmNsZToK
LSAgICBjYXNlIERpc2M6Ci0gICAgY2FzZSBGb290bm90ZXM6Ci0gICAgY2FzZSBOb25lTGlzdFN0
eWxlOgotICAgIGNhc2UgU3F1YXJlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QXN0ZXJpc2tz
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2lyY2xlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6RGlzYzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkZvb3Rub3RlczoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6Ok5vbmU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpTcXVhcmU6CiAgICAg
ICAgIHJldHVybiAnICc7Ci0gICAgY2FzZSBBZmFyOgotICAgIGNhc2UgQW1oYXJpYzoKLSAgICBj
YXNlIEFtaGFyaWNBYmVnZWRlOgotICAgIGNhc2UgRXRoaW9waWM6Ci0gICAgY2FzZSBFdGhpb3Bp
Y0FiZWdlZGU6Ci0gICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVBbUV0OgotICAgIGNhc2UgRXRoaW9w
aWNBYmVnZWRlR2V6OgotICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlVGlFcjoKLSAgICBjYXNlIEV0
aGlvcGljQWJlZ2VkZVRpRXQ6Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lQWFFcjoKLSAgICBj
YXNlIEV0aGlvcGljSGFsZWhhbWVBYUV0OgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUFtRXQ6
Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lR2V6OgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFt
ZU9tRXQ6Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lU2lkRXQ6Ci0gICAgY2FzZSBFdGhpb3Bp
Y0hhbGVoYW1lU29FdDoKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVUaUVyOgotICAgIGNhc2Ug
RXRoaW9waWNIYWxlaGFtZVRpRXQ6Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lVGlnOgotICAg
IGNhc2UgT3JvbW86Ci0gICAgY2FzZSBTaWRhbWE6Ci0gICAgY2FzZSBTb21hbGk6Ci0gICAgY2Fz
ZSBUaWdyZToKLSAgICBjYXNlIFRpZ3JpbnlhRXI6Ci0gICAgY2FzZSBUaWdyaW55YUVyQWJlZ2Vk
ZToKLSAgICBjYXNlIFRpZ3JpbnlhRXQ6Ci0gICAgY2FzZSBUaWdyaW55YUV0QWJlZ2VkZToKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OkFmYXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBbWhh
cmljOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QW1oYXJpY0FiZWdlZGU6CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpFdGhpb3BpYzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGlj
QWJlZ2VkZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZUFtRXQ6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGVHZXo6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGVUaUVyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
RXRoaW9waWNBYmVnZWRlVGlFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFs
ZWhhbWVBYUVyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUFhRXQ6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lQW1FdDoKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVHZXo6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpFdGhpb3BpY0hhbGVoYW1lT21FdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlv
cGljSGFsZWhhbWVTaWRFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhh
bWVTb0V0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVRpRXI6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lVGlFdDoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVUaWc6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpPcm9tbzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlNpZGFtYToKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OlNvbWFsaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JlOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6VGlncmlueWFFcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRp
Z3JpbnlhRXJBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmlueWFFdDoKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXRBYmVnZWRlOgogICAgICAgICByZXR1cm4g
ZXRoaW9waWNQcmVmYWNlQ29sb247Ci0gICAgY2FzZSBBcm1lbmlhbjoKLSAgICBjYXNlIEFyYWJp
Y0luZGljOgotICAgIGNhc2UgQmVuZ2FsaToKLSAgICBjYXNlIEJpbmFyeUxpc3RTdHlsZToKLSAg
ICBjYXNlIENhbWJvZGlhbjoKLSAgICBjYXNlIENKS0lkZW9ncmFwaGljOgotICAgIGNhc2UgQ2pr
RWFydGhseUJyYW5jaDoKLSAgICBjYXNlIENqa0hlYXZlbmx5U3RlbToKLSAgICBjYXNlIERlY2lt
YWxMZWFkaW5nWmVybzoKLSAgICBjYXNlIERlY2ltYWxMaXN0U3R5bGU6Ci0gICAgY2FzZSBEZXZh
bmFnYXJpOgotICAgIGNhc2UgR2VvcmdpYW46Ci0gICAgY2FzZSBHdWphcmF0aToKLSAgICBjYXNl
IEd1cm11a2hpOgotICAgIGNhc2UgSGFuZ3VsOgotICAgIGNhc2UgSGFuZ3VsQ29uc29uYW50Ogot
ICAgIGNhc2UgSGVicmV3OgotICAgIGNhc2UgSGlyYWdhbmE6Ci0gICAgY2FzZSBIaXJhZ2FuYUly
b2hhOgotICAgIGNhc2UgS2FubmFkYToKLSAgICBjYXNlIEthdGFrYW5hOgotICAgIGNhc2UgS2F0
YWthbmFJcm9oYToKLSAgICBjYXNlIEtobWVyOgotICAgIGNhc2UgTGFvOgotICAgIGNhc2UgTG93
ZXJBbHBoYToKLSAgICBjYXNlIExvd2VyQXJtZW5pYW46Ci0gICAgY2FzZSBMb3dlckdyZWVrOgot
ICAgIGNhc2UgTG93ZXJIZXhhZGVjaW1hbDoKLSAgICBjYXNlIExvd2VyTGF0aW46Ci0gICAgY2Fz
ZSBMb3dlck5vcndlZ2lhbjoKLSAgICBjYXNlIExvd2VyUm9tYW46Ci0gICAgY2FzZSBNYWxheWFs
YW06Ci0gICAgY2FzZSBNb25nb2xpYW46Ci0gICAgY2FzZSBNeWFubWFyOgotICAgIGNhc2UgT2N0
YWw6Ci0gICAgY2FzZSBPcml5YToKLSAgICBjYXNlIFBlcnNpYW46Ci0gICAgY2FzZSBUZWx1Z3U6
Ci0gICAgY2FzZSBUaGFpOgotICAgIGNhc2UgVGliZXRhbjoKLSAgICBjYXNlIFVwcGVyQWxwaGE6
Ci0gICAgY2FzZSBVcHBlckFybWVuaWFuOgotICAgIGNhc2UgVXBwZXJHcmVlazoKLSAgICBjYXNl
IFVwcGVySGV4YWRlY2ltYWw6Ci0gICAgY2FzZSBVcHBlckxhdGluOgotICAgIGNhc2UgVXBwZXJO
b3J3ZWdpYW46Ci0gICAgY2FzZSBVcHBlclJvbWFuOgotICAgIGNhc2UgVXJkdToKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OkFybWVuaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QXJhYmlj
SW5kaWM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpCZW5nYWxpOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6QmluYXJ5OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2FtYm9kaWFuOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6Q0pLSWRlb2dyYXBoaWM6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpDamtFYXJ0aGx5QnJhbmNoOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2prSGVhdmVu
bHlTdGVtOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGVjaW1hbExlYWRpbmdaZXJvOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6RGVjaW1hbDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRl
dmFuYWdhcmk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpHZW9yZ2lhbjoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6Okd1amFyYXRpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6R3VybXVraGk6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIYW5ndWw6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpIYW5ndWxDb25zb25hbnQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIZWJyZXc6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpIaXJhZ2FuYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okhp
cmFnYW5hSXJvaGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLYW5uYWRhOgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6S2F0YWthbmE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLYXRha2Fu
YUlyb2hhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6S2htZXI6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpMYW86CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckFscGhhOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJBcm1lbmlhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
Okxvd2VyR3JlZWs6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckhleGFkZWNpbWFsOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJMYXRpbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6Okxvd2VyTm9yd2VnaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJSb21hbjoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok1hbGF5YWxhbToKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6Ok1vbmdvbGlhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok15YW5tYXI6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpPY3RhbDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok9yaXlhOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6UGVyc2lhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
OlRlbHVndToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRoYWk6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpUaWJldGFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJBbHBoYToKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyQXJtZW5pYW46CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpVcHBlckdyZWVrOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJIZXhhZGVjaW1h
bDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyTGF0aW46CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpVcHBlck5vcndlZ2lhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyUm9t
YW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcmR1OgogICAgICAgICByZXR1cm4gJy4nOwog
ICAgIH0KIApAQCAtNjAzLDUxOCArNjAzLDUxOCBAQCBzdGF0aWMgVUNoYXIgbGlzdE1hcmtlclN1
ZmZpeChFTGlzdFN0eWxlCiAgICAgcmV0dXJuICcuJzsKIH0KIAotU3RyaW5nIGxpc3RNYXJrZXJU
ZXh0KEVMaXN0U3R5bGVUeXBlIHR5cGUsIGludCB2YWx1ZSkKK1N0cmluZyBsaXN0TWFya2VyVGV4
dChMaXN0U3R5bGVUeXBlIHR5cGUsIGludCB2YWx1ZSkKIHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7CiAKICAgICAvLyBJZiB0aGUgbGlzdC1zdHlsZS10eXBlLCBzYXkgaGVicmV3LCBjYW5u
b3QgcmVwcmVzZW50IHx2YWx1ZXwgYmVjYXVzZSBpdCdzIG91dHNpZGUKICAgICAvLyBpdHMgb3Jk
aW5hbCByYW5nZSB0aGVuIHdlIGZhbGxiYWNrIHRvIHNvbWUgbGlzdCBzdHlsZSB0aGF0IGNhbiBy
ZXByZXNlbnQgfHZhbHVlfC4KICAgICBzd2l0Y2ggKGVmZmVjdGl2ZUxpc3RNYXJrZXJUeXBlKHR5
cGUsIHZhbHVlKSkgewotICAgICAgICBjYXNlIE5vbmVMaXN0U3R5bGU6Ci0gICAgICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok5vbmU6CisgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgICAgIGNhc2UgQXN0ZXJpc2tzOiB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgTENoYXIgYXN0ZXJpc2tzU3ltYm9sc1sxXSA9IHsgMHgy
QSB9OwotICAgICAgICAgICAgdG9TeW1ib2xpYyhidWlsZGVyLCB2YWx1ZSwgYXN0ZXJpc2tzU3lt
Ym9scyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICAvLyBXZSB1c2Ug
dGhlIHNhbWUgY2hhcmFjdGVycyBmb3IgdGV4dCBzZWN1cml0eS4KLSAgICAgICAgLy8gU2VlIFJl
bmRlclRleHQ6OnNldEludGVybmFsU3RyaW5nLgotICAgICAgICBjYXNlIENpcmNsZToKLSAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKHdoaXRlQnVsbGV0KTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIERpc2M6Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZChidWxsZXQpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRm9vdG5vdGVzOiB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgVUNoYXIgZm9vdG5vdGVzU3ltYm9sc1s0XSA9IHsgMHgwMDJBLCAweDIw
NTEsIDB4MjAyMCwgMHgyMDIxIH07Ci0gICAgICAgICAgICB0b1N5bWJvbGljKGJ1aWxkZXIsIHZh
bHVlLCBmb290bm90ZXNTeW1ib2xzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgU3F1YXJlOgotICAgICAgICAgICAgLy8gVGhlIENTUyAyLjEgdGVzdCBzdWl0
ZSB1c2VzIFUrMjVFRSBCTEFDSyBNRURJVU0gU01BTEwgU1FVQVJFCi0gICAgICAgICAgICAvLyBp
bnN0ZWFkLCBidXQgSSB0aGluayB0aGlzIGxvb2tzIGJldHRlci4KLSAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKGJsYWNrU3F1YXJlKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNh
c2UgRGVjaW1hbExpc3RTdHlsZToKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKHZh
bHVlKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QXN0ZXJp
c2tzOiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBMQ2hhciBhc3Rlcmlza3NTeW1ib2xzWzFdID0g
eyAweDJBIH07CisgICAgICAgIHRvU3ltYm9saWMoYnVpbGRlciwgdmFsdWUsIGFzdGVyaXNrc1N5
bWJvbHMpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgLy8gV2UgdXNlIHRoZSBzYW1lIGNo
YXJhY3RlcnMgZm9yIHRleHQgc2VjdXJpdHkuCisgICAgLy8gU2VlIFJlbmRlclRleHQ6OnNldElu
dGVybmFsU3RyaW5nLgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2lyY2xlOgorICAgICAgICBi
dWlsZGVyLmFwcGVuZCh3aGl0ZUJ1bGxldCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6RGlzYzoKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoYnVsbGV0KTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpGb290bm90ZXM6IHsKKyAgICAgICAg
c3RhdGljIGNvbnN0IFVDaGFyIGZvb3Rub3Rlc1N5bWJvbHNbNF0gPSB7IDB4MDAyQSwgMHgyMDUx
LCAweDIwMjAsIDB4MjAyMSB9OworICAgICAgICB0b1N5bWJvbGljKGJ1aWxkZXIsIHZhbHVlLCBm
b290bm90ZXNTeW1ib2xzKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6U3F1YXJlOgorICAgICAgICAvLyBUaGUgQ1NTIDIuMSB0ZXN0IHN1aXRlIHVzZXMg
VSsyNUVFIEJMQUNLIE1FRElVTSBTTUFMTCBTUVVBUkUKKyAgICAgICAgLy8gaW5zdGVhZCwgYnV0
IEkgdGhpbmsgdGhpcyBsb29rcyBiZXR0ZXIuCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGJsYWNr
U3F1YXJlKTsKKyAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2FzZSBEZWNpbWFsTGVhZGluZ1pl
cm86Ci0gICAgICAgICAgICBpZiAodmFsdWUgPCAtOSB8fCB2YWx1ZSA+IDkpIHsKLSAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodmFsdWUgPCAwKSB7Ci0gICAgICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCItMCIpOwotICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTnVtYmVyKC12YWx1ZSk7IC8vIC0wMSB0byAtMDkKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcwJyk7
Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcih2YWx1ZSk7IC8vIDAwIHRvIDA5Ci0g
ICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRlY2ltYWw6CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CiAKLSAgICAg
ICAgY2FzZSBBcmFiaWNJbmRpYzogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGFy
YWJpY0luZGljTnVtZXJhbHNbMTBdID0gewotICAgICAgICAgICAgICAgIDB4MDY2MCwgMHgwNjYx
LCAweDA2NjIsIDB4MDY2MywgMHgwNjY0LCAweDA2NjUsIDB4MDY2NiwgMHgwNjY3LCAweDA2Njgs
IDB4MDY2OQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2
YWx1ZSwgYXJhYmljSW5kaWNOdW1lcmFscyk7CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEZWNp
bWFsTGVhZGluZ1plcm86CisgICAgICAgIGlmICh2YWx1ZSA8IC05IHx8IHZhbHVlID4gOSkgewor
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIodmFsdWUpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KLQotICAgICAgICBjYXNlIEJpbmFyeUxpc3RTdHlsZTogewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IExDaGFyIGJpbmFyeU51bWVyYWxzWzJdID0geyAnMCcsICcxJyB9
OwotICAgICAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBiaW5hcnlOdW1lcmFscyk7
CisgICAgICAgIGlmICh2YWx1ZSA8IDApIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiLTAiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKC12YWx1ZSk7IC8v
IC0wMSB0byAtMDkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCcwJyk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKHZhbHVlKTsgLy8g
MDAgdG8gMDkKKyAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2FzZSBCZW5nYWxpOiB7Ci0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgYmVuZ2FsaU51bWVyYWxzWzEwXSA9IHsKLSAgICAg
ICAgICAgICAgICAweDA5RTYsIDB4MDlFNywgMHgwOUU4LCAweDA5RTksIDB4MDlFQSwgMHgwOUVC
LCAweDA5RUMsIDB4MDlFRCwgMHgwOUVFLCAweDA5RUYKLSAgICAgICAgICAgIH07Ci0gICAgICAg
ICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIGJlbmdhbGlOdW1lcmFscyk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QXJhYmljSW5k
aWM6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGFyYWJpY0luZGljTnVtZXJhbHNbMTBd
ID0geworICAgICAgICAgICAgMHgwNjYwLCAweDA2NjEsIDB4MDY2MiwgMHgwNjYzLCAweDA2NjQs
IDB4MDY2NSwgMHgwNjY2LCAweDA2NjcsIDB4MDY2OCwgMHgwNjY5CisgICAgICAgIH07CisgICAg
ICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgYXJhYmljSW5kaWNOdW1lcmFscyk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KIAotICAgICAgICBjYXNlIENhbWJvZGlhbjoKLSAgICAgICAgY2Fz
ZSBLaG1lcjogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGtobWVyTnVtZXJhbHNb
MTBdID0gewotICAgICAgICAgICAgICAgIDB4MTdFMCwgMHgxN0UxLCAweDE3RTIsIDB4MTdFMywg
MHgxN0U0LCAweDE3RTUsIDB4MTdFNiwgMHgxN0U3LCAweDE3RTgsIDB4MTdFOQotICAgICAgICAg
ICAgfTsKLSAgICAgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwga2htZXJOdW1lcmFs
cyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIERldmFuYWdh
cmk6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBkZXZhbmFnYXJpTnVtZXJhbHNb
MTBdID0gewotICAgICAgICAgICAgICAgIDB4MDk2NiwgMHgwOTY3LCAweDA5NjgsIDB4MDk2OSwg
MHgwOTZBLCAweDA5NkIsIDB4MDk2QywgMHgwOTZELCAweDA5NkUsIDB4MDk2RgotICAgICAgICAg
ICAgfTsKLSAgICAgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgZGV2YW5hZ2FyaU51
bWVyYWxzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR3Vq
YXJhdGk6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBndWphcmF0aU51bWVyYWxz
WzEwXSA9IHsKLSAgICAgICAgICAgICAgICAweDBBRTYsIDB4MEFFNywgMHgwQUU4LCAweDBBRTks
IDB4MEFFQSwgMHgwQUVCLCAweDBBRUMsIDB4MEFFRCwgMHgwQUVFLCAweDBBRUYKLSAgICAgICAg
ICAgIH07Ci0gICAgICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIGd1amFyYXRpTnVt
ZXJhbHMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHdXJt
dWtoaTogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGd1cm11a2hpTnVtZXJhbHNb
MTBdID0gewotICAgICAgICAgICAgICAgIDB4MEE2NiwgMHgwQTY3LCAweDBBNjgsIDB4MEE2OSwg
MHgwQTZBLCAweDBBNkIsIDB4MEE2QywgMHgwQTZELCAweDBBNkUsIDB4MEE2RgotICAgICAgICAg
ICAgfTsKLSAgICAgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgZ3VybXVraGlOdW1l
cmFscyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEthbm5h
ZGE6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBrYW5uYWRhTnVtZXJhbHNbMTBd
ID0gewotICAgICAgICAgICAgICAgIDB4MENFNiwgMHgwQ0U3LCAweDBDRTgsIDB4MENFOSwgMHgw
Q0VBLCAweDBDRUIsIDB4MENFQywgMHgwQ0VELCAweDBDRUUsIDB4MENFRgotICAgICAgICAgICAg
fTsKLSAgICAgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwga2FubmFkYU51bWVyYWxz
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgTG93ZXJIZXhh
ZGVjaW1hbDogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IExDaGFyIGxvd2VySGV4YWRlY2lt
YWxOdW1lcmFsc1sxNl0gPSB7Ci0gICAgICAgICAgICAgICAgJzAnLCAnMScsICcyJywgJzMnLCAn
NCcsICc1JywgJzYnLCAnNycsICc4JywgJzknLCAnYScsICdiJywgJ2MnLCAnZCcsICdlJywgJ2Yn
Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBs
b3dlckhleGFkZWNpbWFsTnVtZXJhbHMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBMYW86IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBsYW9O
dW1lcmFsc1sxMF0gPSB7Ci0gICAgICAgICAgICAgICAgMHgwRUQwLCAweDBFRDEsIDB4MEVEMiwg
MHgwRUQzLCAweDBFRDQsIDB4MEVENSwgMHgwRUQ2LCAweDBFRDcsIDB4MEVEOCwgMHgwRUQ5Ci0g
ICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBsYW9O
dW1lcmFscyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIE1h
bGF5YWxhbTogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIG1hbGF5YWxhbU51bWVy
YWxzWzEwXSA9IHsKLSAgICAgICAgICAgICAgICAweDBENjYsIDB4MEQ2NywgMHgwRDY4LCAweDBE
NjksIDB4MEQ2QSwgMHgwRDZCLCAweDBENkMsIDB4MEQ2RCwgMHgwRDZFLCAweDBENkYKLSAgICAg
ICAgICAgIH07Ci0gICAgICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIG1hbGF5YWxh
bU51bWVyYWxzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
TW9uZ29saWFuOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgbW9uZ29saWFuTnVt
ZXJhbHNbMTBdID0gewotICAgICAgICAgICAgICAgIDB4MTgxMCwgMHgxODExLCAweDE4MTIsIDB4
MTgxMywgMHgxODE0LCAweDE4MTUsIDB4MTgxNiwgMHgxODE3LCAweDE4MTgsIDB4MTgxOQotICAg
ICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgbW9uZ29s
aWFuTnVtZXJhbHMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2Fz
ZSBNeWFubWFyOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgbXlhbm1hck51bWVy
YWxzWzEwXSA9IHsKLSAgICAgICAgICAgICAgICAweDEwNDAsIDB4MTA0MSwgMHgxMDQyLCAweDEw
NDMsIDB4MTA0NCwgMHgxMDQ1LCAweDEwNDYsIDB4MTA0NywgMHgxMDQ4LCAweDEwNDkKLSAgICAg
ICAgICAgIH07Ci0gICAgICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIG15YW5tYXJO
dW1lcmFscyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIE9j
dGFsOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgTENoYXIgb2N0YWxOdW1lcmFsc1s4XSA9
IHsKLSAgICAgICAgICAgICAgICAnMCcsICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3
JwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwg
b2N0YWxOdW1lcmFscyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIE9yaXlhOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgb3JpeWFOdW1lcmFs
c1sxMF0gPSB7Ci0gICAgICAgICAgICAgICAgMHgwQjY2LCAweDBCNjcsIDB4MEI2OCwgMHgwQjY5
LCAweDBCNkEsIDB4MEI2QiwgMHgwQjZDLCAweDBCNkQsIDB4MEI2RSwgMHgwQjZGCi0gICAgICAg
ICAgICB9OwotICAgICAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBvcml5YU51bWVy
YWxzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgUGVyc2lh
bjoKLSAgICAgICAgY2FzZSBVcmR1OiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIg
dXJkdU51bWVyYWxzWzEwXSA9IHsKLSAgICAgICAgICAgICAgICAweDA2RjAsIDB4MDZGMSwgMHgw
NkYyLCAweDA2RjMsIDB4MDZGNCwgMHgwNkY1LCAweDA2RjYsIDB4MDZGNywgMHgwNkY4LCAweDA2
RjkKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUs
IHVyZHVOdW1lcmFscyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIFRlbHVndTogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIHRlbHVndU51bWVy
YWxzWzEwXSA9IHsKLSAgICAgICAgICAgICAgICAweDBDNjYsIDB4MEM2NywgMHgwQzY4LCAweDBD
NjksIDB4MEM2QSwgMHgwQzZCLCAweDBDNkMsIDB4MEM2RCwgMHgwQzZFLCAweDBDNkYKLSAgICAg
ICAgICAgIH07Ci0gICAgICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIHRlbHVndU51
bWVyYWxzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVGli
ZXRhbjogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIHRpYmV0YW5OdW1lcmFsc1sx
MF0gPSB7Ci0gICAgICAgICAgICAgICAgMHgwRjIwLCAweDBGMjEsIDB4MEYyMiwgMHgwRjIzLCAw
eDBGMjQsIDB4MEYyNSwgMHgwRjI2LCAweDBGMjcsIDB4MEYyOCwgMHgwRjI5Ci0gICAgICAgICAg
ICB9OwotICAgICAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCB0aWJldGFuTnVtZXJh
bHMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUaGFpOiB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgdGhhaU51bWVyYWxzWzEwXSA9IHsKLSAg
ICAgICAgICAgICAgICAweDBFNTAsIDB4MEU1MSwgMHgwRTUyLCAweDBFNTMsIDB4MEU1NCwgMHgw
RTU1LCAweDBFNTYsIDB4MEU1NywgMHgwRTU4LCAweDBFNTkKLSAgICAgICAgICAgIH07Ci0gICAg
ICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIHRoYWlOdW1lcmFscyk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFVwcGVySGV4YWRlY2ltYWw6IHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBMQ2hhciB1cHBlckhleGFkZWNpbWFsTnVtZXJhbHNb
MTZdID0gewotICAgICAgICAgICAgICAgICcwJywgJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2
JywgJzcnLCAnOCcsICc5JywgJ0EnLCAnQicsICdDJywgJ0QnLCAnRScsICdGJwotICAgICAgICAg
ICAgfTsKLSAgICAgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgdXBwZXJIZXhhZGVj
aW1hbE51bWVyYWxzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpCaW5hcnk6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IExDaGFyIGJpbmFy
eU51bWVyYWxzWzJdID0geyAnMCcsICcxJyB9OworICAgICAgICB0b051bWVyaWMoYnVpbGRlciwg
dmFsdWUsIGJpbmFyeU51bWVyYWxzKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCi0gICAgICAg
IGNhc2UgTG93ZXJBbHBoYToKLSAgICAgICAgY2FzZSBMb3dlckxhdGluOiB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgTENoYXIgbG93ZXJMYXRpbkFscGhhYmV0WzI2XSA9IHsKLSAgICAgICAg
ICAgICAgICAnYScsICdiJywgJ2MnLCAnZCcsICdlJywgJ2YnLCAnZycsICdoJywgJ2knLCAnaics
ICdrJywgJ2wnLCAnbScsCi0gICAgICAgICAgICAgICAgJ24nLCAnbycsICdwJywgJ3EnLCAncics
ICdzJywgJ3QnLCAndScsICd2JywgJ3cnLCAneCcsICd5JywgJ3onCi0gICAgICAgICAgICB9Owot
ICAgICAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBsb3dlckxhdGluQWxwaGFi
ZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBVcHBlckFs
cGhhOgotICAgICAgICBjYXNlIFVwcGVyTGF0aW46IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBMQ2hhciB1cHBlckxhdGluQWxwaGFiZXRbMjZdID0gewotICAgICAgICAgICAgICAgICdBJywg
J0InLCAnQycsICdEJywgJ0UnLCAnRicsICdHJywgJ0gnLCAnSScsICdKJywgJ0snLCAnTCcsICdN
JywKLSAgICAgICAgICAgICAgICAnTicsICdPJywgJ1AnLCAnUScsICdSJywgJ1MnLCAnVCcsICdV
JywgJ1YnLCAnVycsICdYJywgJ1knLCAnWicKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0
b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIHVwcGVyTGF0aW5BbHBoYWJldCk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIExvd2VyR3JlZWs6IHsKLSAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBsb3dlckdyZWVrQWxwaGFiZXRbMjRdID0gewotICAg
ICAgICAgICAgICAgIDB4MDNCMSwgMHgwM0IyLCAweDAzQjMsIDB4MDNCNCwgMHgwM0I1LCAweDAz
QjYsIDB4MDNCNywgMHgwM0I4LAotICAgICAgICAgICAgICAgIDB4MDNCOSwgMHgwM0JBLCAweDAz
QkIsIDB4MDNCQywgMHgwM0JELCAweDAzQkUsIDB4MDNCRiwgMHgwM0MwLAotICAgICAgICAgICAg
ICAgIDB4MDNDMSwgMHgwM0MzLCAweDAzQzQsIDB4MDNDNSwgMHgwM0M2LCAweDAzQzcsIDB4MDND
OCwgMHgwM0M5Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxk
ZXIsIHZhbHVlLCBsb3dlckdyZWVrQWxwaGFiZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkJlbmdhbGk6IHsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IFVDaGFyIGJlbmdhbGlOdW1lcmFsc1sxMF0gPSB7CisgICAgICAgICAgICAweDA5RTYs
IDB4MDlFNywgMHgwOUU4LCAweDA5RTksIDB4MDlFQSwgMHgwOUVCLCAweDA5RUMsIDB4MDlFRCwg
MHgwOUVFLCAweDA5RUYKKyAgICAgICAgfTsKKyAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZh
bHVlLCBiZW5nYWxpTnVtZXJhbHMpOworICAgICAgICBicmVhazsKKyAgICB9CiAKLSAgICAgICAg
Y2FzZSBIaXJhZ2FuYTogewotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgdGFibGUgY29tZXMg
ZnJvbSB0aGUgQ1NTMyBkcmFmdCwgYW5kIGlzIHByb2JhYmx5Ci0gICAgICAgICAgICAvLyBpbmNv
cnJlY3QsIGdpdmVuIHRoZSBjb21tZW50cyBpbiB0aGF0IGRyYWZ0LgotICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IFVDaGFyIGhpcmFnYW5hQWxwaGFiZXRbNDhdID0gewotICAgICAgICAgICAgICAg
IDB4MzA0MiwgMHgzMDQ0LCAweDMwNDYsIDB4MzA0OCwgMHgzMDRBLCAweDMwNEIsIDB4MzA0RCwg
MHgzMDRGLAotICAgICAgICAgICAgICAgIDB4MzA1MSwgMHgzMDUzLCAweDMwNTUsIDB4MzA1Nywg
MHgzMDU5LCAweDMwNUIsIDB4MzA1RCwgMHgzMDVGLAotICAgICAgICAgICAgICAgIDB4MzA2MSwg
MHgzMDY0LCAweDMwNjYsIDB4MzA2OCwgMHgzMDZBLCAweDMwNkIsIDB4MzA2QywgMHgzMDZELAot
ICAgICAgICAgICAgICAgIDB4MzA2RSwgMHgzMDZGLCAweDMwNzIsIDB4MzA3NSwgMHgzMDc4LCAw
eDMwN0IsIDB4MzA3RSwgMHgzMDdGLAotICAgICAgICAgICAgICAgIDB4MzA4MCwgMHgzMDgxLCAw
eDMwODIsIDB4MzA4NCwgMHgzMDg2LCAweDMwODgsIDB4MzA4OSwgMHgzMDhBLAotICAgICAgICAg
ICAgICAgIDB4MzA4QiwgMHgzMDhDLCAweDMwOEQsIDB4MzA4RiwgMHgzMDkwLCAweDMwOTEsIDB4
MzA5MiwgMHgzMDkzCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9BbHBoYWJldGljKGJ1
aWxkZXIsIHZhbHVlLCBoaXJhZ2FuYUFscGhhYmV0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgSGlyYWdhbmFJcm9oYTogewotICAgICAgICAgICAgLy8gRklY
TUU6IFRoaXMgdGFibGUgY29tZXMgZnJvbSB0aGUgQ1NTMyBkcmFmdCwgYW5kIGlzIHByb2JhYmx5
Ci0gICAgICAgICAgICAvLyBpbmNvcnJlY3QsIGdpdmVuIHRoZSBjb21tZW50cyBpbiB0aGF0IGRy
YWZ0LgotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGhpcmFnYW5hSXJvaGFBbHBoYWJl
dFs0N10gPSB7Ci0gICAgICAgICAgICAgICAgMHgzMDQ0LCAweDMwOEQsIDB4MzA2RiwgMHgzMDZC
LCAweDMwN0IsIDB4MzA3OCwgMHgzMDY4LCAweDMwNjEsCi0gICAgICAgICAgICAgICAgMHgzMDhB
LCAweDMwNkMsIDB4MzA4QiwgMHgzMDkyLCAweDMwOEYsIDB4MzA0QiwgMHgzMDg4LCAweDMwNUYs
Ci0gICAgICAgICAgICAgICAgMHgzMDhDLCAweDMwNUQsIDB4MzA2NCwgMHgzMDZELCAweDMwNkEs
IDB4MzA4OSwgMHgzMDgwLCAweDMwNDYsCi0gICAgICAgICAgICAgICAgMHgzMDkwLCAweDMwNkUs
IDB4MzA0QSwgMHgzMDRGLCAweDMwODQsIDB4MzA3RSwgMHgzMDUxLCAweDMwNzUsCi0gICAgICAg
ICAgICAgICAgMHgzMDUzLCAweDMwNDgsIDB4MzA2NiwgMHgzMDQyLCAweDMwNTUsIDB4MzA0RCwg
MHgzMDg2LCAweDMwODEsCi0gICAgICAgICAgICAgICAgMHgzMDdGLCAweDMwNTcsIDB4MzA5MSwg
MHgzMDcyLCAweDMwODIsIDB4MzA1QiwgMHgzMDU5Ci0gICAgICAgICAgICB9OwotICAgICAgICAg
ICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBoaXJhZ2FuYUlyb2hhQWxwaGFiZXQpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBLYXRha2FuYTogewot
ICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgdGFibGUgY29tZXMgZnJvbSB0aGUgQ1NTMyBkcmFm
dCwgYW5kIGlzIHByb2JhYmx5Ci0gICAgICAgICAgICAvLyBpbmNvcnJlY3QsIGdpdmVuIHRoZSBj
b21tZW50cyBpbiB0aGF0IGRyYWZ0LgotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGth
dGFrYW5hQWxwaGFiZXRbNDhdID0gewotICAgICAgICAgICAgICAgIDB4MzBBMiwgMHgzMEE0LCAw
eDMwQTYsIDB4MzBBOCwgMHgzMEFBLCAweDMwQUIsIDB4MzBBRCwgMHgzMEFGLAotICAgICAgICAg
ICAgICAgIDB4MzBCMSwgMHgzMEIzLCAweDMwQjUsIDB4MzBCNywgMHgzMEI5LCAweDMwQkIsIDB4
MzBCRCwgMHgzMEJGLAotICAgICAgICAgICAgICAgIDB4MzBDMSwgMHgzMEM0LCAweDMwQzYsIDB4
MzBDOCwgMHgzMENBLCAweDMwQ0IsIDB4MzBDQywgMHgzMENELAotICAgICAgICAgICAgICAgIDB4
MzBDRSwgMHgzMENGLCAweDMwRDIsIDB4MzBENSwgMHgzMEQ4LCAweDMwREIsIDB4MzBERSwgMHgz
MERGLAotICAgICAgICAgICAgICAgIDB4MzBFMCwgMHgzMEUxLCAweDMwRTIsIDB4MzBFNCwgMHgz
MEU2LCAweDMwRTgsIDB4MzBFOSwgMHgzMEVBLAotICAgICAgICAgICAgICAgIDB4MzBFQiwgMHgz
MEVDLCAweDMwRUQsIDB4MzBFRiwgMHgzMEYwLCAweDMwRjEsIDB4MzBGMiwgMHgzMEYzCi0gICAg
ICAgICAgICB9OwotICAgICAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBrYXRh
a2FuYUFscGhhYmV0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgS2F0YWthbmFJcm9oYTogewotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgdGFibGUgY29t
ZXMgZnJvbSB0aGUgQ1NTMyBkcmFmdCwgYW5kIGlzIHByb2JhYmx5Ci0gICAgICAgICAgICAvLyBp
bmNvcnJlY3QsIGdpdmVuIHRoZSBjb21tZW50cyBpbiB0aGF0IGRyYWZ0LgotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IFVDaGFyIGthdGFrYW5hSXJvaGFBbHBoYWJldFs0N10gPSB7Ci0gICAgICAg
ICAgICAgICAgMHgzMEE0LCAweDMwRUQsIDB4MzBDRiwgMHgzMENCLCAweDMwREIsIDB4MzBEOCwg
MHgzMEM4LCAweDMwQzEsCi0gICAgICAgICAgICAgICAgMHgzMEVBLCAweDMwQ0MsIDB4MzBFQiwg
MHgzMEYyLCAweDMwRUYsIDB4MzBBQiwgMHgzMEU4LCAweDMwQkYsCi0gICAgICAgICAgICAgICAg
MHgzMEVDLCAweDMwQkQsIDB4MzBDNCwgMHgzMENELCAweDMwQ0EsIDB4MzBFOSwgMHgzMEUwLCAw
eDMwQTYsCi0gICAgICAgICAgICAgICAgMHgzMEYwLCAweDMwQ0UsIDB4MzBBQSwgMHgzMEFGLCAw
eDMwRTQsIDB4MzBERSwgMHgzMEIxLCAweDMwRDUsCi0gICAgICAgICAgICAgICAgMHgzMEIzLCAw
eDMwQTgsIDB4MzBDNiwgMHgzMEEyLCAweDMwQjUsIDB4MzBBRCwgMHgzMEU2LCAweDMwRTEsCi0g
ICAgICAgICAgICAgICAgMHgzMERGLCAweDMwQjcsIDB4MzBGMSwgMHgzMEQyLCAweDMwRTIsIDB4
MzBCQiwgMHgzMEI5Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9BbHBoYWJldGljKGJ1
aWxkZXIsIHZhbHVlLCBrYXRha2FuYUlyb2hhQWxwaGFiZXQpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNhbWJvZGlhbjoKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OktobWVyOiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBraG1l
ck51bWVyYWxzWzEwXSA9IHsKKyAgICAgICAgICAgIDB4MTdFMCwgMHgxN0UxLCAweDE3RTIsIDB4
MTdFMywgMHgxN0U0LCAweDE3RTUsIDB4MTdFNiwgMHgxN0U3LCAweDE3RTgsIDB4MTdFOQorICAg
ICAgICB9OworICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIGtobWVyTnVtZXJhbHMp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEZXZhbmFn
YXJpOiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBkZXZhbmFnYXJpTnVtZXJhbHNbMTBd
ID0geworICAgICAgICAgICAgMHgwOTY2LCAweDA5NjcsIDB4MDk2OCwgMHgwOTY5LCAweDA5NkEs
IDB4MDk2QiwgMHgwOTZDLCAweDA5NkQsIDB4MDk2RSwgMHgwOTZGCisgICAgICAgIH07CisgICAg
ICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgZGV2YW5hZ2FyaU51bWVyYWxzKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6R3VqYXJhdGk6IHsKKyAg
ICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGd1amFyYXRpTnVtZXJhbHNbMTBdID0geworICAgICAg
ICAgICAgMHgwQUU2LCAweDBBRTcsIDB4MEFFOCwgMHgwQUU5LCAweDBBRUEsIDB4MEFFQiwgMHgw
QUVDLCAweDBBRUQsIDB4MEFFRSwgMHgwQUVGCisgICAgICAgIH07CisgICAgICAgIHRvTnVtZXJp
YyhidWlsZGVyLCB2YWx1ZSwgZ3VqYXJhdGlOdW1lcmFscyk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okd1cm11a2hpOiB7CisgICAgICAgIHN0YXRpYyBj
b25zdCBVQ2hhciBndXJtdWtoaU51bWVyYWxzWzEwXSA9IHsKKyAgICAgICAgICAgIDB4MEE2Niwg
MHgwQTY3LCAweDBBNjgsIDB4MEE2OSwgMHgwQTZBLCAweDBBNkIsIDB4MEE2QywgMHgwQTZELCAw
eDBBNkUsIDB4MEE2RgorICAgICAgICB9OworICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFs
dWUsIGd1cm11a2hpTnVtZXJhbHMpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpLYW5uYWRhOiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBrYW5u
YWRhTnVtZXJhbHNbMTBdID0geworICAgICAgICAgICAgMHgwQ0U2LCAweDBDRTcsIDB4MENFOCwg
MHgwQ0U5LCAweDBDRUEsIDB4MENFQiwgMHgwQ0VDLCAweDBDRUQsIDB4MENFRSwgMHgwQ0VGCisg
ICAgICAgIH07CisgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwga2FubmFkYU51bWVy
YWxzKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93
ZXJIZXhhZGVjaW1hbDogeworICAgICAgICBzdGF0aWMgY29uc3QgTENoYXIgbG93ZXJIZXhhZGVj
aW1hbE51bWVyYWxzWzE2XSA9IHsKKyAgICAgICAgICAgICcwJywgJzEnLCAnMicsICczJywgJzQn
LCAnNScsICc2JywgJzcnLCAnOCcsICc5JywgJ2EnLCAnYicsICdjJywgJ2QnLCAnZScsICdmJwor
ICAgICAgICB9OworICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIGxvd2VySGV4YWRl
Y2ltYWxOdW1lcmFscyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OkxhbzogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgbGFvTnVtZXJhbHNbMTBd
ID0geworICAgICAgICAgICAgMHgwRUQwLCAweDBFRDEsIDB4MEVEMiwgMHgwRUQzLCAweDBFRDQs
IDB4MEVENSwgMHgwRUQ2LCAweDBFRDcsIDB4MEVEOCwgMHgwRUQ5CisgICAgICAgIH07CisgICAg
ICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgbGFvTnVtZXJhbHMpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpNYWxheWFsYW06IHsKKyAgICAgICAg
c3RhdGljIGNvbnN0IFVDaGFyIG1hbGF5YWxhbU51bWVyYWxzWzEwXSA9IHsKKyAgICAgICAgICAg
IDB4MEQ2NiwgMHgwRDY3LCAweDBENjgsIDB4MEQ2OSwgMHgwRDZBLCAweDBENkIsIDB4MEQ2Qywg
MHgwRDZELCAweDBENkUsIDB4MEQ2RgorICAgICAgICB9OworICAgICAgICB0b051bWVyaWMoYnVp
bGRlciwgdmFsdWUsIG1hbGF5YWxhbU51bWVyYWxzKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TW9uZ29saWFuOiB7CisgICAgICAgIHN0YXRpYyBjb25z
dCBVQ2hhciBtb25nb2xpYW5OdW1lcmFsc1sxMF0gPSB7CisgICAgICAgICAgICAweDE4MTAsIDB4
MTgxMSwgMHgxODEyLCAweDE4MTMsIDB4MTgxNCwgMHgxODE1LCAweDE4MTYsIDB4MTgxNywgMHgx
ODE4LCAweDE4MTkKKyAgICAgICAgfTsKKyAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVl
LCBtb25nb2xpYW5OdW1lcmFscyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6Ok15YW5tYXI6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIG15YW5t
YXJOdW1lcmFsc1sxMF0gPSB7CisgICAgICAgICAgICAweDEwNDAsIDB4MTA0MSwgMHgxMDQyLCAw
eDEwNDMsIDB4MTA0NCwgMHgxMDQ1LCAweDEwNDYsIDB4MTA0NywgMHgxMDQ4LCAweDEwNDkKKyAg
ICAgICAgfTsKKyAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBteWFubWFyTnVtZXJh
bHMpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpPY3Rh
bDogeworICAgICAgICBzdGF0aWMgY29uc3QgTENoYXIgb2N0YWxOdW1lcmFsc1s4XSA9IHsKKyAg
ICAgICAgICAgICcwJywgJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2JywgJzcnCisgICAgICAg
IH07CisgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgb2N0YWxOdW1lcmFscyk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok9yaXlhOiB7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBvcml5YU51bWVyYWxzWzEwXSA9IHsKKyAgICAgICAg
ICAgIDB4MEI2NiwgMHgwQjY3LCAweDBCNjgsIDB4MEI2OSwgMHgwQjZBLCAweDBCNkIsIDB4MEI2
QywgMHgwQjZELCAweDBCNkUsIDB4MEI2RgorICAgICAgICB9OworICAgICAgICB0b051bWVyaWMo
YnVpbGRlciwgdmFsdWUsIG9yaXlhTnVtZXJhbHMpOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpQZXJzaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
VXJkdTogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgdXJkdU51bWVyYWxzWzEwXSA9IHsK
KyAgICAgICAgICAgIDB4MDZGMCwgMHgwNkYxLCAweDA2RjIsIDB4MDZGMywgMHgwNkY0LCAweDA2
RjUsIDB4MDZGNiwgMHgwNkY3LCAweDA2RjgsIDB4MDZGOQorICAgICAgICB9OworICAgICAgICB0
b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIHVyZHVOdW1lcmFscyk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRlbHVndTogeworICAgICAgICBzdGF0aWMg
Y29uc3QgVUNoYXIgdGVsdWd1TnVtZXJhbHNbMTBdID0geworICAgICAgICAgICAgMHgwQzY2LCAw
eDBDNjcsIDB4MEM2OCwgMHgwQzY5LCAweDBDNkEsIDB4MEM2QiwgMHgwQzZDLCAweDBDNkQsIDB4
MEM2RSwgMHgwQzZGCisgICAgICAgIH07CisgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1
ZSwgdGVsdWd1TnVtZXJhbHMpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpUaWJldGFuOiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciB0aWJldGFu
TnVtZXJhbHNbMTBdID0geworICAgICAgICAgICAgMHgwRjIwLCAweDBGMjEsIDB4MEYyMiwgMHgw
RjIzLCAweDBGMjQsIDB4MEYyNSwgMHgwRjI2LCAweDBGMjcsIDB4MEYyOCwgMHgwRjI5CisgICAg
ICAgIH07CisgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgdGliZXRhbk51bWVyYWxz
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGhhaTog
eworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgdGhhaU51bWVyYWxzWzEwXSA9IHsKKyAgICAg
ICAgICAgIDB4MEU1MCwgMHgwRTUxLCAweDBFNTIsIDB4MEU1MywgMHgwRTU0LCAweDBFNTUsIDB4
MEU1NiwgMHgwRTU3LCAweDBFNTgsIDB4MEU1OQorICAgICAgICB9OworICAgICAgICB0b051bWVy
aWMoYnVpbGRlciwgdmFsdWUsIHRoYWlOdW1lcmFscyk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVySGV4YWRlY2ltYWw6IHsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IExDaGFyIHVwcGVySGV4YWRlY2ltYWxOdW1lcmFsc1sxNl0gPSB7CisgICAgICAg
ICAgICAnMCcsICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JywgJzgnLCAnOScsICdB
JywgJ0InLCAnQycsICdEJywgJ0UnLCAnRicKKyAgICAgICAgfTsKKyAgICAgICAgdG9OdW1lcmlj
KGJ1aWxkZXIsIHZhbHVlLCB1cHBlckhleGFkZWNpbWFsTnVtZXJhbHMpOworICAgICAgICBicmVh
azsKKyAgICB9CiAKLSAgICAgICAgY2FzZSBBZmFyOgotICAgICAgICBjYXNlIEV0aGlvcGljSGFs
ZWhhbWVBYUV0OgotICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVBYUVyOiB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZXRoaW9waWNIYWxlaGFtZUFhRXJBbHBoYWJldFsxOF0g
PSB7Ci0gICAgICAgICAgICAgICAgMHgxMjAwLCAweDEyMDgsIDB4MTIxMCwgMHgxMjE4LCAweDEy
MjgsIDB4MTIzMCwgMHgxMjYwLCAweDEyNzAsIDB4MTI5MCwKLSAgICAgICAgICAgICAgICAweDEy
QTAsIDB4MTJBOCwgMHgxMkM4LCAweDEyRDAsIDB4MTJFOCwgMHgxMkYwLCAweDEzMDgsIDB4MTMz
OCwgMHgxMzQ4Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxk
ZXIsIHZhbHVlLCBldGhpb3BpY0hhbGVoYW1lQWFFckFscGhhYmV0KTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQW1oYXJpYzoKLSAgICAgICAgY2FzZSBFdGhp
b3BpY0hhbGVoYW1lQW1FdDogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGV0aGlv
cGljSGFsZWhhbWVBbUV0QWxwaGFiZXRbMzNdID0gewotICAgICAgICAgICAgICAgIDB4MTIwMCwg
MHgxMjA4LCAweDEyMTAsIDB4MTIxOCwgMHgxMjIwLCAweDEyMjgsIDB4MTIzMCwgMHgxMjM4LCAw
eDEyNDAsCi0gICAgICAgICAgICAgICAgMHgxMjYwLCAweDEyNzAsIDB4MTI3OCwgMHgxMjgwLCAw
eDEyOTAsIDB4MTI5OCwgMHgxMkEwLCAweDEyQTgsIDB4MTJCOCwKLSAgICAgICAgICAgICAgICAw
eDEyQzgsIDB4MTJEMCwgMHgxMkQ4LCAweDEyRTAsIDB4MTJFOCwgMHgxMkYwLCAweDEzMDAsIDB4
MTMwOCwgMHgxMzIwLAotICAgICAgICAgICAgICAgIDB4MTMyOCwgMHgxMzMwLCAweDEzMzgsIDB4
MTM0MCwgMHgxMzQ4LCAweDEzNTAKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b0FscGhh
YmV0aWMoYnVpbGRlciwgdmFsdWUsIGV0aGlvcGljSGFsZWhhbWVBbUV0QWxwaGFiZXQpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBBbWhhcmljQWJlZ2VkZToK
LSAgICAgICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVBbUV0OiB7Ci0gICAgICAgICAgICBzdGF0aWMg
Y29uc3QgVUNoYXIgZXRoaW9waWNBYmVnZWRlQW1FdEFscGhhYmV0WzMzXSA9IHsKLSAgICAgICAg
ICAgICAgICAweDEyQTAsIDB4MTI2MCwgMHgxMzA4LCAweDEyRjAsIDB4MTMwMCwgMHgxMjAwLCAw
eDEyQzgsIDB4MTJEOCwgMHgxMkUwLAotICAgICAgICAgICAgICAgIDB4MTIxMCwgMHgxMzIwLCAw
eDEzMjgsIDB4MTJFOCwgMHgxMkE4LCAweDEyQjgsIDB4MTIwOCwgMHgxMjE4LCAweDEyOTAsCi0g
ICAgICAgICAgICAgICAgMHgxMjk4LCAweDEyMjAsIDB4MTJEMCwgMHgxMzQ4LCAweDEzMzgsIDB4
MTI0MCwgMHgxMjI4LCAweDEyMzAsIDB4MTIzOCwKLSAgICAgICAgICAgICAgICAweDEyNzAsIDB4
MTI3OCwgMHgxMjgwLCAweDEzNDAsIDB4MTMzMCwgMHgxMzUwCi0gICAgICAgICAgICB9OwotICAg
ICAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBldGhpb3BpY0FiZWdlZGVBbUV0
QWxwaGFiZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBD
amtFYXJ0aGx5QnJhbmNoOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgY2prRWFy
dGhseUJyYW5jaEFscGhhYmV0WzEyXSA9IHsKLSAgICAgICAgICAgICAgICAweDVCNTAsIDB4NEUx
MSwgMHg1QkM1LCAweDUzNkYsIDB4OEZCMCwgMHg1REYzLCAweDUzNDgsIDB4NjcyQSwgMHg3NTMz
LAotICAgICAgICAgICAgICAgIDB4OTE0OSwgMHg2MjBDLCAweDRFQTUKLSAgICAgICAgICAgIH07
Ci0gICAgICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGNqa0VhcnRobHlCcmFu
Y2hBbHBoYWJldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNl
IENqa0hlYXZlbmx5U3RlbTogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGNqa0hl
YXZlbmx5U3RlbUFscGhhYmV0WzEwXSA9IHsKLSAgICAgICAgICAgICAgICAweDc1MzIsIDB4NEU1
OSwgMHg0RTE5LCAweDRFMDEsIDB4NjIwQSwgMHg1REYxLCAweDVFOUEsIDB4OEY5QiwgMHg1OEVD
LAotICAgICAgICAgICAgICAgIDB4NzY3OAotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRv
QWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgY2prSGVhdmVubHlTdGVtQWxwaGFiZXQpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBFdGhpb3BpYzoKLSAgICAg
ICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lR2V6OiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3Qg
VUNoYXIgZXRoaW9waWNIYWxlaGFtZUdlekFscGhhYmV0WzI2XSA9IHsKLSAgICAgICAgICAgICAg
ICAweDEyMDAsIDB4MTIwOCwgMHgxMjEwLCAweDEyMTgsIDB4MTIyMCwgMHgxMjI4LCAweDEyMzAs
IDB4MTI0MCwgMHgxMjYwLAotICAgICAgICAgICAgICAgIDB4MTI3MCwgMHgxMjgwLCAweDEyOTAs
IDB4MTJBMCwgMHgxMkE4LCAweDEyQzgsIDB4MTJEMCwgMHgxMkQ4LCAweDEyRTgsCi0gICAgICAg
ICAgICAgICAgMHgxMkYwLCAweDEzMDgsIDB4MTMyMCwgMHgxMzMwLCAweDEzMzgsIDB4MTM0MCwg
MHgxMzQ4LCAweDEzNTAKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b0FscGhhYmV0aWMo
YnVpbGRlciwgdmFsdWUsIGV0aGlvcGljSGFsZWhhbWVHZXpBbHBoYWJldCk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZToKLSAgICAg
ICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVHZXo6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBV
Q2hhciBldGhpb3BpY0FiZWdlZGVHZXpBbHBoYWJldFsyNl0gPSB7Ci0gICAgICAgICAgICAgICAg
MHgxMkEwLCAweDEyNjAsIDB4MTMwOCwgMHgxMkYwLCAweDEyMDAsIDB4MTJDOCwgMHgxMkQ4LCAw
eDEyMTAsIDB4MTMyMCwKLSAgICAgICAgICAgICAgICAweDEyRTgsIDB4MTJBOCwgMHgxMjA4LCAw
eDEyMTgsIDB4MTI5MCwgMHgxMjIwLCAweDEyRDAsIDB4MTM0OCwgMHgxMzM4LAotICAgICAgICAg
ICAgICAgIDB4MTI0MCwgMHgxMjI4LCAweDEyMzAsIDB4MTI3MCwgMHgxMjgwLCAweDEzNDAsIDB4
MTMzMCwgMHgxMzUwCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9BbHBoYWJldGljKGJ1
aWxkZXIsIHZhbHVlLCBldGhpb3BpY0FiZWdlZGVHZXpBbHBoYWJldCk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEhhbmd1bENvbnNvbmFudDogewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGhhbmd1bENvbnNvbmFudEFscGhhYmV0WzE0XSA9IHsK
LSAgICAgICAgICAgICAgICAweDMxMzEsIDB4MzEzNCwgMHgzMTM3LCAweDMxMzksIDB4MzE0MSwg
MHgzMTQyLCAweDMxNDUsIDB4MzE0NywgMHgzMTQ4LAotICAgICAgICAgICAgICAgIDB4MzE0QSwg
MHgzMTRCLCAweDMxNEMsIDB4MzE0RCwgMHgzMTRFCi0gICAgICAgICAgICB9OwotICAgICAgICAg
ICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBoYW5ndWxDb25zb25hbnRBbHBoYWJldCk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEhhbmd1bDogewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGhhbmd1bEFscGhhYmV0WzE0XSA9IHsKLSAg
ICAgICAgICAgICAgICAweEFDMDAsIDB4QjA5OCwgMHhCMkU0LCAweEI3N0MsIDB4QjlDOCwgMHhC
QzE0LCAweEMwQUMsIDB4QzU0NCwgMHhDNzkwLAotICAgICAgICAgICAgICAgIDB4Q0MyOCwgMHhD
RTc0LCAweEQwQzAsIDB4RDMwQywgMHhENTU4Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAg
dG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBoYW5ndWxBbHBoYWJldCk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIE9yb21vOgotICAgICAgICBjYXNlIEV0
aGlvcGljSGFsZWhhbWVPbUV0OiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZXRo
aW9waWNIYWxlaGFtZU9tRXRBbHBoYWJldFsyNV0gPSB7Ci0gICAgICAgICAgICAgICAgMHgxMjAw
LCAweDEyMDgsIDB4MTIxOCwgMHgxMjI4LCAweDEyMzAsIDB4MTIzOCwgMHgxMjQwLCAweDEyNjAs
IDB4MTI3MCwKLSAgICAgICAgICAgICAgICAweDEyNzgsIDB4MTI5MCwgMHgxMjk4LCAweDEyQTAs
IDB4MTJBOCwgMHgxMkM4LCAweDEyRTgsIDB4MTJGMCwgMHgxMkY4LAotICAgICAgICAgICAgICAg
IDB4MTMwMCwgMHgxMzA4LCAweDEzMjAsIDB4MTMyOCwgMHgxMzM4LCAweDEzMzAsIDB4MTM0OAot
ICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwg
ZXRoaW9waWNIYWxlaGFtZU9tRXRBbHBoYWJldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgICAgICBjYXNlIFNpZGFtYToKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1l
U2lkRXQ6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBldGhpb3BpY0hhbGVoYW1l
U2lkRXRBbHBoYWJldFsyNl0gPSB7Ci0gICAgICAgICAgICAgICAgMHgxMjAwLCAweDEyMDgsIDB4
MTIxMCwgMHgxMjE4LCAweDEyMjgsIDB4MTIzMCwgMHgxMjM4LCAweDEyNDAsIDB4MTI2MCwKLSAg
ICAgICAgICAgICAgICAweDEyNzAsIDB4MTI3OCwgMHgxMjkwLCAweDEyOTgsIDB4MTJBMCwgMHgx
MkE4LCAweDEyQzgsIDB4MTJFOCwgMHgxMkYwLAotICAgICAgICAgICAgICAgIDB4MTJGOCwgMHgx
MzAwLCAweDEzMDgsIDB4MTMyMCwgMHgxMzI4LCAweDEzMzgsIDB4MTMzMCwgMHgxMzQ4Ci0gICAg
ICAgICAgICB9OwotICAgICAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBldGhp
b3BpY0hhbGVoYW1lU2lkRXRBbHBoYWJldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIFNvbWFsaToKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lU29F
dDogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGV0aGlvcGljSGFsZWhhbWVTb0V0
QWxwaGFiZXRbMjJdID0gewotICAgICAgICAgICAgICAgIDB4MTIwMCwgMHgxMjA4LCAweDEyMTAs
IDB4MTIxOCwgMHgxMjI4LCAweDEyMzAsIDB4MTIzOCwgMHgxMjQwLCAweDEyNjAsCi0gICAgICAg
ICAgICAgICAgMHgxMjcwLCAweDEyOTAsIDB4MTJBMCwgMHgxMkE4LCAweDEyQjgsIDB4MTJDOCwg
MHgxMkQwLCAweDEyRTgsIDB4MTJGMCwKLSAgICAgICAgICAgICAgICAweDEzMDAsIDB4MTMwOCwg
MHgxMzM4LCAweDEzNDgKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b0FscGhhYmV0aWMo
YnVpbGRlciwgdmFsdWUsIGV0aGlvcGljSGFsZWhhbWVTb0V0QWxwaGFiZXQpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUaWdyZToKLSAgICAgICAgY2FzZSBF
dGhpb3BpY0hhbGVoYW1lVGlnOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZXRo
aW9waWNIYWxlaGFtZVRpZ0FscGhhYmV0WzI3XSA9IHsKLSAgICAgICAgICAgICAgICAweDEyMDAs
IDB4MTIwOCwgMHgxMjEwLCAweDEyMTgsIDB4MTIyOCwgMHgxMjMwLCAweDEyMzgsIDB4MTI0MCwg
MHgxMjYwLAotICAgICAgICAgICAgICAgIDB4MTI3MCwgMHgxMjc4LCAweDEyOTAsIDB4MTJBMCwg
MHgxMkE4LCAweDEyQzgsIDB4MTJEMCwgMHgxMkQ4LCAweDEyRTgsCi0gICAgICAgICAgICAgICAg
MHgxMkYwLCAweDEzMDAsIDB4MTMwOCwgMHgxMzIwLCAweDEzMjgsIDB4MTMzOCwgMHgxMzMwLCAw
eDEzNDgsIDB4MTM1MAotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvQWxwaGFiZXRpYyhi
dWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNIYWxlaGFtZVRpZ0FscGhhYmV0KTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVGlncmlueWFFcjoKLSAgICAgICAgY2Fz
ZSBFdGhpb3BpY0hhbGVoYW1lVGlFcjogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFy
IGV0aGlvcGljSGFsZWhhbWVUaUVyQWxwaGFiZXRbMzFdID0gewotICAgICAgICAgICAgICAgIDB4
MTIwMCwgMHgxMjA4LCAweDEyMTAsIDB4MTIxOCwgMHgxMjI4LCAweDEyMzAsIDB4MTIzOCwgMHgx
MjQwLCAweDEyNTAsCi0gICAgICAgICAgICAgICAgMHgxMjYwLCAweDEyNzAsIDB4MTI3OCwgMHgx
MjkwLCAweDEyOTgsIDB4MTJBMCwgMHgxMkE4LCAweDEyQjgsIDB4MTJDOCwKLSAgICAgICAgICAg
ICAgICAweDEyRDAsIDB4MTJEOCwgMHgxMkUwLCAweDEyRTgsIDB4MTJGMCwgMHgxMzAwLCAweDEz
MDgsIDB4MTMyMCwgMHgxMzI4LAotICAgICAgICAgICAgICAgIDB4MTMzMCwgMHgxMzM4LCAweDEz
NDgsIDB4MTM1MAotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvQWxwaGFiZXRpYyhidWls
ZGVyLCB2YWx1ZSwgZXRoaW9waWNIYWxlaGFtZVRpRXJBbHBoYWJldCk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFRpZ3JpbnlhRXJBYmVnZWRlOgotICAgICAg
ICBjYXNlIEV0aGlvcGljQWJlZ2VkZVRpRXI6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBV
Q2hhciBldGhpb3BpY0FiZWdlZGVUaUVyQWxwaGFiZXRbMzFdID0gewotICAgICAgICAgICAgICAg
IDB4MTJBMCwgMHgxMjYwLCAweDEzMDgsIDB4MTJGMCwgMHgxMzAwLCAweDEyMDAsIDB4MTJDOCwg
MHgxMkQ4LCAweDEyRTAsCi0gICAgICAgICAgICAgICAgMHgxMjEwLCAweDEzMjAsIDB4MTMyOCwg
MHgxMkU4LCAweDEyQTgsIDB4MTJCOCwgMHgxMjA4LCAweDEyMTgsIDB4MTI5MCwKLSAgICAgICAg
ICAgICAgICAweDEyOTgsIDB4MTJEMCwgMHgxMzQ4LCAweDEzMzgsIDB4MTI0MCwgMHgxMjUwLCAw
eDEyMjgsIDB4MTIzMCwgMHgxMjM4LAotICAgICAgICAgICAgICAgIDB4MTI3MCwgMHgxMjc4LCAw
eDEzMzAsIDB4MTM1MAotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvQWxwaGFiZXRpYyhi
dWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNBYmVnZWRlVGlFckFscGhhYmV0KTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVGlncmlueWFFdDoKLSAgICAgICAgY2Fz
ZSBFdGhpb3BpY0hhbGVoYW1lVGlFdDogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFy
IGV0aGlvcGljSGFsZWhhbWVUaUV0QWxwaGFiZXRbMzRdID0gewotICAgICAgICAgICAgICAgIDB4
MTIwMCwgMHgxMjA4LCAweDEyMTAsIDB4MTIxOCwgMHgxMjIwLCAweDEyMjgsIDB4MTIzMCwgMHgx
MjM4LCAweDEyNDAsCi0gICAgICAgICAgICAgICAgMHgxMjUwLCAweDEyNjAsIDB4MTI3MCwgMHgx
Mjc4LCAweDEyODAsIDB4MTI5MCwgMHgxMjk4LCAweDEyQTAsIDB4MTJBOCwKLSAgICAgICAgICAg
ICAgICAweDEyQjgsIDB4MTJDOCwgMHgxMkQwLCAweDEyRDgsIDB4MTJFMCwgMHgxMkU4LCAweDEy
RjAsIDB4MTMwMCwgMHgxMzA4LAotICAgICAgICAgICAgICAgIDB4MTMyMCwgMHgxMzI4LCAweDEz
MzAsIDB4MTMzOCwgMHgxMzQwLCAweDEzNDgsIDB4MTM1MAotICAgICAgICAgICAgfTsKLSAgICAg
ICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNIYWxlaGFtZVRpRXRB
bHBoYWJldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFRp
Z3JpbnlhRXRBYmVnZWRlOgotICAgICAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZVRpRXQ6IHsKLSAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBldGhpb3BpY0FiZWdlZGVUaUV0QWxwaGFiZXRb
MzRdID0gewotICAgICAgICAgICAgICAgIDB4MTJBMCwgMHgxMjYwLCAweDEzMDgsIDB4MTJGMCwg
MHgxMzAwLCAweDEyMDAsIDB4MTJDOCwgMHgxMkQ4LCAweDEyRTAsCi0gICAgICAgICAgICAgICAg
MHgxMjEwLCAweDEzMjAsIDB4MTMyOCwgMHgxMkU4LCAweDEyQTgsIDB4MTJCOCwgMHgxMjA4LCAw
eDEyMTgsIDB4MTI5MCwKLSAgICAgICAgICAgICAgICAweDEyOTgsIDB4MTIyMCwgMHgxMkQwLCAw
eDEzNDgsIDB4MTMzOCwgMHgxMjQwLCAweDEyNTAsIDB4MTIyOCwgMHgxMjMwLAotICAgICAgICAg
ICAgICAgIDB4MTIzOCwgMHgxMjcwLCAweDEyNzgsIDB4MTI4MCwgMHgxMzQwLCAweDEzMzAsIDB4
MTM1MAotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2
YWx1ZSwgZXRoaW9waWNBYmVnZWRlVGlFdEFscGhhYmV0KTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgICAgIGNhc2UgVXBwZXJHcmVlazogewotICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IFVDaGFyIHVwcGVyR3JlZWtBbHBoYWJldFsyNF0gPSB7Ci0gICAgICAgICAgICAgICAg
MHgwMzkxLCAweDAzOTIsIDB4MDM5MywgMHgwMzk0LCAweDAzOTUsIDB4MDM5NiwgMHgwMzk3LCAw
eDAzOTgsIDB4MDM5OSwKLSAgICAgICAgICAgICAgICAweDAzOUEsIDB4MDM5QiwgMHgwMzlDLCAw
eDAzOUQsIDB4MDM5RSwgMHgwMzlGLCAweDAzQTAsIDB4MDNBMSwgMHgwM0EzLAotICAgICAgICAg
ICAgICAgIDB4MDNBNCwgMHgwM0E1LCAweDAzQTYsIDB4MDNBNywgMHgwM0E4LCAweDAzQTkKLSAg
ICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIHVw
cGVyR3JlZWtBbHBoYWJldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICBjYXNlIExvd2VyTm9yd2VnaWFuOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgTENoYXIg
bG93ZXJOb3J3ZWdpYW5BbHBoYWJldFsyOV0gPSB7Ci0gICAgICAgICAgICAgICAgMHg2MSwgMHg2
MiwgMHg2MywgMHg2NCwgMHg2NSwgMHg2NiwgMHg2NywgMHg2OCwgMHg2OSwKLSAgICAgICAgICAg
ICAgICAweDZBLCAweDZCLCAweDZDLCAweDZELCAweDZFLCAweDZGLCAweDcwLCAweDcxLCAweDcy
LAotICAgICAgICAgICAgICAgIDB4NzMsIDB4NzQsIDB4NzUsIDB4NzYsIDB4NzcsIDB4NzgsIDB4
NzksIDB4N0EsIDB4RTYsCi0gICAgICAgICAgICAgICAgMHhGOCwgMHhFNQotICAgICAgICAgICAg
fTsKLSAgICAgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgbG93ZXJOb3J3ZWdp
YW5BbHBoYWJldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNl
IFVwcGVyTm9yd2VnaWFuOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgTENoYXIgdXBwZXJO
b3J3ZWdpYW5BbHBoYWJldFsyOV0gPSB7Ci0gICAgICAgICAgICAgICAgMHg0MSwgMHg0MiwgMHg0
MywgMHg0NCwgMHg0NSwgMHg0NiwgMHg0NywgMHg0OCwgMHg0OSwKLSAgICAgICAgICAgICAgICAw
eDRBLCAweDRCLCAweDRDLCAweDRELCAweDRFLCAweDRGLCAweDUwLCAweDUxLCAweDUyLAotICAg
ICAgICAgICAgICAgIDB4NTMsIDB4NTQsIDB4NTUsIDB4NTYsIDB4NTcsIDB4NTgsIDB4NTksIDB4
NUEsIDB4QzYsCi0gICAgICAgICAgICAgICAgMHhEOCwgMHhDNQotICAgICAgICAgICAgfTsKLSAg
ICAgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgdXBwZXJOb3J3ZWdpYW5BbHBo
YWJldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENKS0lk
ZW9ncmFwaGljOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgdHJhZGl0aW9uYWxD
aGluZXNlSW5mb3JtYWxUYWJsZVsxNl0gPSB7Ci0gICAgICAgICAgICAgICAgMHg4NDJDLCAweDUx
MDQsIDB4NTE0NiwKLSAgICAgICAgICAgICAgICAweDUzNDEsIDB4NzY3RSwgMHg1MzQzLAotICAg
ICAgICAgICAgICAgIDB4OTZGNiwgMHg0RTAwLCAweDRFOEMsIDB4NEUwOSwgMHg1NkRCLAotICAg
ICAgICAgICAgICAgIDB4NEU5NCwgMHg1MTZELCAweDRFMDMsIDB4NTE2QiwgMHg0RTVECi0gICAg
ICAgICAgICB9OwotICAgICAgICAgICAgdG9DSktJZGVvZ3JhcGhpYyhidWlsZGVyLCB2YWx1ZSwg
dHJhZGl0aW9uYWxDaGluZXNlSW5mb3JtYWxUYWJsZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJBbHBoYToKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6Okxvd2VyTGF0aW46IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IExDaGFyIGxv
d2VyTGF0aW5BbHBoYWJldFsyNl0gPSB7CisgICAgICAgICAgICAnYScsICdiJywgJ2MnLCAnZCcs
ICdlJywgJ2YnLCAnZycsICdoJywgJ2knLCAnaicsICdrJywgJ2wnLCAnbScsCisgICAgICAgICAg
ICAnbicsICdvJywgJ3AnLCAncScsICdyJywgJ3MnLCAndCcsICd1JywgJ3YnLCAndycsICd4Jywg
J3knLCAneicKKyAgICAgICAgfTsKKyAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVl
LCBsb3dlckxhdGluQWxwaGFiZXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpVcHBlckFscGhhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJM
YXRpbjogeworICAgICAgICBzdGF0aWMgY29uc3QgTENoYXIgdXBwZXJMYXRpbkFscGhhYmV0WzI2
XSA9IHsKKyAgICAgICAgICAgICdBJywgJ0InLCAnQycsICdEJywgJ0UnLCAnRicsICdHJywgJ0gn
LCAnSScsICdKJywgJ0snLCAnTCcsICdNJywKKyAgICAgICAgICAgICdOJywgJ08nLCAnUCcsICdR
JywgJ1InLCAnUycsICdUJywgJ1UnLCAnVicsICdXJywgJ1gnLCAnWScsICdaJworICAgICAgICB9
OworICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIHVwcGVyTGF0aW5BbHBoYWJl
dCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2Vy
R3JlZWs6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGxvd2VyR3JlZWtBbHBoYWJldFsy
NF0gPSB7CisgICAgICAgICAgICAweDAzQjEsIDB4MDNCMiwgMHgwM0IzLCAweDAzQjQsIDB4MDNC
NSwgMHgwM0I2LCAweDAzQjcsIDB4MDNCOCwKKyAgICAgICAgICAgIDB4MDNCOSwgMHgwM0JBLCAw
eDAzQkIsIDB4MDNCQywgMHgwM0JELCAweDAzQkUsIDB4MDNCRiwgMHgwM0MwLAorICAgICAgICAg
ICAgMHgwM0MxLCAweDAzQzMsIDB4MDNDNCwgMHgwM0M1LCAweDAzQzYsIDB4MDNDNywgMHgwM0M4
LCAweDAzQzkKKyAgICAgICAgfTsKKyAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVl
LCBsb3dlckdyZWVrQWxwaGFiZXQpOworICAgICAgICBicmVhazsKKyAgICB9CiAKLSAgICAgICAg
Y2FzZSBMb3dlclJvbWFuOgotICAgICAgICAgICAgdG9Sb21hbihidWlsZGVyLCB2YWx1ZSwgZmFs
c2UpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVXBwZXJSb21hbjoKLSAgICAg
ICAgICAgIHRvUm9tYW4oYnVpbGRlciwgdmFsdWUsIHRydWUpOwotICAgICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIaXJhZ2FuYTogeworICAgICAgICAvLyBGSVhNRTog
VGhpcyB0YWJsZSBjb21lcyBmcm9tIHRoZSBDU1MzIGRyYWZ0LCBhbmQgaXMgcHJvYmFibHkKKyAg
ICAgICAgLy8gaW5jb3JyZWN0LCBnaXZlbiB0aGUgY29tbWVudHMgaW4gdGhhdCBkcmFmdC4KKyAg
ICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGhpcmFnYW5hQWxwaGFiZXRbNDhdID0geworICAgICAg
ICAgICAgMHgzMDQyLCAweDMwNDQsIDB4MzA0NiwgMHgzMDQ4LCAweDMwNEEsIDB4MzA0QiwgMHgz
MDRELCAweDMwNEYsCisgICAgICAgICAgICAweDMwNTEsIDB4MzA1MywgMHgzMDU1LCAweDMwNTcs
IDB4MzA1OSwgMHgzMDVCLCAweDMwNUQsIDB4MzA1RiwKKyAgICAgICAgICAgIDB4MzA2MSwgMHgz
MDY0LCAweDMwNjYsIDB4MzA2OCwgMHgzMDZBLCAweDMwNkIsIDB4MzA2QywgMHgzMDZELAorICAg
ICAgICAgICAgMHgzMDZFLCAweDMwNkYsIDB4MzA3MiwgMHgzMDc1LCAweDMwNzgsIDB4MzA3Qiwg
MHgzMDdFLCAweDMwN0YsCisgICAgICAgICAgICAweDMwODAsIDB4MzA4MSwgMHgzMDgyLCAweDMw
ODQsIDB4MzA4NiwgMHgzMDg4LCAweDMwODksIDB4MzA4QSwKKyAgICAgICAgICAgIDB4MzA4Qiwg
MHgzMDhDLCAweDMwOEQsIDB4MzA4RiwgMHgzMDkwLCAweDMwOTEsIDB4MzA5MiwgMHgzMDkzCisg
ICAgICAgIH07CisgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgaGlyYWdhbmFB
bHBoYWJldCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
OkhpcmFnYW5hSXJvaGE6IHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgdGFibGUgY29tZXMgZnJv
bSB0aGUgQ1NTMyBkcmFmdCwgYW5kIGlzIHByb2JhYmx5CisgICAgICAgIC8vIGluY29ycmVjdCwg
Z2l2ZW4gdGhlIGNvbW1lbnRzIGluIHRoYXQgZHJhZnQuCisgICAgICAgIHN0YXRpYyBjb25zdCBV
Q2hhciBoaXJhZ2FuYUlyb2hhQWxwaGFiZXRbNDddID0geworICAgICAgICAgICAgMHgzMDQ0LCAw
eDMwOEQsIDB4MzA2RiwgMHgzMDZCLCAweDMwN0IsIDB4MzA3OCwgMHgzMDY4LCAweDMwNjEsCisg
ICAgICAgICAgICAweDMwOEEsIDB4MzA2QywgMHgzMDhCLCAweDMwOTIsIDB4MzA4RiwgMHgzMDRC
LCAweDMwODgsIDB4MzA1RiwKKyAgICAgICAgICAgIDB4MzA4QywgMHgzMDVELCAweDMwNjQsIDB4
MzA2RCwgMHgzMDZBLCAweDMwODksIDB4MzA4MCwgMHgzMDQ2LAorICAgICAgICAgICAgMHgzMDkw
LCAweDMwNkUsIDB4MzA0QSwgMHgzMDRGLCAweDMwODQsIDB4MzA3RSwgMHgzMDUxLCAweDMwNzUs
CisgICAgICAgICAgICAweDMwNTMsIDB4MzA0OCwgMHgzMDY2LCAweDMwNDIsIDB4MzA1NSwgMHgz
MDRELCAweDMwODYsIDB4MzA4MSwKKyAgICAgICAgICAgIDB4MzA3RiwgMHgzMDU3LCAweDMwOTEs
IDB4MzA3MiwgMHgzMDgyLCAweDMwNUIsIDB4MzA1OQorICAgICAgICB9OworICAgICAgICB0b0Fs
cGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGhpcmFnYW5hSXJvaGFBbHBoYWJldCk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkthdGFrYW5hOiB7CisgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIHRhYmxlIGNvbWVzIGZyb20gdGhlIENTUzMgZHJhZnQsIGFuZCBp
cyBwcm9iYWJseQorICAgICAgICAvLyBpbmNvcnJlY3QsIGdpdmVuIHRoZSBjb21tZW50cyBpbiB0
aGF0IGRyYWZ0LgorICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIga2F0YWthbmFBbHBoYWJldFs0
OF0gPSB7CisgICAgICAgICAgICAweDMwQTIsIDB4MzBBNCwgMHgzMEE2LCAweDMwQTgsIDB4MzBB
QSwgMHgzMEFCLCAweDMwQUQsIDB4MzBBRiwKKyAgICAgICAgICAgIDB4MzBCMSwgMHgzMEIzLCAw
eDMwQjUsIDB4MzBCNywgMHgzMEI5LCAweDMwQkIsIDB4MzBCRCwgMHgzMEJGLAorICAgICAgICAg
ICAgMHgzMEMxLCAweDMwQzQsIDB4MzBDNiwgMHgzMEM4LCAweDMwQ0EsIDB4MzBDQiwgMHgzMEND
LCAweDMwQ0QsCisgICAgICAgICAgICAweDMwQ0UsIDB4MzBDRiwgMHgzMEQyLCAweDMwRDUsIDB4
MzBEOCwgMHgzMERCLCAweDMwREUsIDB4MzBERiwKKyAgICAgICAgICAgIDB4MzBFMCwgMHgzMEUx
LCAweDMwRTIsIDB4MzBFNCwgMHgzMEU2LCAweDMwRTgsIDB4MzBFOSwgMHgzMEVBLAorICAgICAg
ICAgICAgMHgzMEVCLCAweDMwRUMsIDB4MzBFRCwgMHgzMEVGLCAweDMwRjAsIDB4MzBGMSwgMHgz
MEYyLCAweDMwRjMKKyAgICAgICAgfTsKKyAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZh
bHVlLCBrYXRha2FuYUFscGhhYmV0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6S2F0YWthbmFJcm9oYTogeworICAgICAgICAvLyBGSVhNRTogVGhpcyB0
YWJsZSBjb21lcyBmcm9tIHRoZSBDU1MzIGRyYWZ0LCBhbmQgaXMgcHJvYmFibHkKKyAgICAgICAg
Ly8gaW5jb3JyZWN0LCBnaXZlbiB0aGUgY29tbWVudHMgaW4gdGhhdCBkcmFmdC4KKyAgICAgICAg
c3RhdGljIGNvbnN0IFVDaGFyIGthdGFrYW5hSXJvaGFBbHBoYWJldFs0N10gPSB7CisgICAgICAg
ICAgICAweDMwQTQsIDB4MzBFRCwgMHgzMENGLCAweDMwQ0IsIDB4MzBEQiwgMHgzMEQ4LCAweDMw
QzgsIDB4MzBDMSwKKyAgICAgICAgICAgIDB4MzBFQSwgMHgzMENDLCAweDMwRUIsIDB4MzBGMiwg
MHgzMEVGLCAweDMwQUIsIDB4MzBFOCwgMHgzMEJGLAorICAgICAgICAgICAgMHgzMEVDLCAweDMw
QkQsIDB4MzBDNCwgMHgzMENELCAweDMwQ0EsIDB4MzBFOSwgMHgzMEUwLCAweDMwQTYsCisgICAg
ICAgICAgICAweDMwRjAsIDB4MzBDRSwgMHgzMEFBLCAweDMwQUYsIDB4MzBFNCwgMHgzMERFLCAw
eDMwQjEsIDB4MzBENSwKKyAgICAgICAgICAgIDB4MzBCMywgMHgzMEE4LCAweDMwQzYsIDB4MzBB
MiwgMHgzMEI1LCAweDMwQUQsIDB4MzBFNiwgMHgzMEUxLAorICAgICAgICAgICAgMHgzMERGLCAw
eDMwQjcsIDB4MzBGMSwgMHgzMEQyLCAweDMwRTIsIDB4MzBCQiwgMHgzMEI5CisgICAgICAgIH07
CisgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwga2F0YWthbmFJcm9oYUFscGhh
YmV0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCi0gICAgICAgIGNhc2UgQXJtZW5pYW46Ci0g
ICAgICAgIGNhc2UgVXBwZXJBcm1lbmlhbjoKLSAgICAgICAgICAgIC8vIENTUzMgc2F5cyAiYXJt
ZW5pYW4iIG1lYW5zICJsb3dlci1hcm1lbmlhbiIuCi0gICAgICAgICAgICAvLyBCdXQgdGhlIENT
UzIuMSB0ZXN0IHN1aXRlIGNvbnRhaW5zIHVwcGVyY2FzZSB0ZXN0IHJlc3VsdHMgZm9yICJhcm1l
bmlhbiIsCi0gICAgICAgICAgICAvLyBzbyB3ZSdsbCBtYXRjaCB0aGUgdGVzdCBzdWl0ZS4KLSAg
ICAgICAgICAgIHRvQXJtZW5pYW4oYnVpbGRlciwgdmFsdWUsIHRydWUpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgTG93ZXJBcm1lbmlhbjoKLSAgICAgICAgICAgIHRvQXJtZW5p
YW4oYnVpbGRlciwgdmFsdWUsIGZhbHNlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIEdlb3JnaWFuOgotICAgICAgICAgICAgdG9HZW9yZ2lhbihidWlsZGVyLCB2YWx1ZSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBIZWJyZXc6Ci0gICAgICAgICAgICB0b0hl
YnJldyhidWlsZGVyLCB2YWx1ZSk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OkFmYXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1l
QWFFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVBYUVyOiB7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBldGhpb3BpY0hhbGVoYW1lQWFFckFscGhhYmV0WzE4
XSA9IHsKKyAgICAgICAgICAgIDB4MTIwMCwgMHgxMjA4LCAweDEyMTAsIDB4MTIxOCwgMHgxMjI4
LCAweDEyMzAsIDB4MTI2MCwgMHgxMjcwLCAweDEyOTAsCisgICAgICAgICAgICAweDEyQTAsIDB4
MTJBOCwgMHgxMkM4LCAweDEyRDAsIDB4MTJFOCwgMHgxMkYwLCAweDEzMDgsIDB4MTMzOCwgMHgx
MzQ4CisgICAgICAgIH07CisgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRo
aW9waWNIYWxlaGFtZUFhRXJBbHBoYWJldCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OkFtaGFyaWM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhp
b3BpY0hhbGVoYW1lQW1FdDogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZXRoaW9waWNI
YWxlaGFtZUFtRXRBbHBoYWJldFszM10gPSB7CisgICAgICAgICAgICAweDEyMDAsIDB4MTIwOCwg
MHgxMjEwLCAweDEyMTgsIDB4MTIyMCwgMHgxMjI4LCAweDEyMzAsIDB4MTIzOCwgMHgxMjQwLAor
ICAgICAgICAgICAgMHgxMjYwLCAweDEyNzAsIDB4MTI3OCwgMHgxMjgwLCAweDEyOTAsIDB4MTI5
OCwgMHgxMkEwLCAweDEyQTgsIDB4MTJCOCwKKyAgICAgICAgICAgIDB4MTJDOCwgMHgxMkQwLCAw
eDEyRDgsIDB4MTJFMCwgMHgxMkU4LCAweDEyRjAsIDB4MTMwMCwgMHgxMzA4LCAweDEzMjAsCisg
ICAgICAgICAgICAweDEzMjgsIDB4MTMzMCwgMHgxMzM4LCAweDEzNDAsIDB4MTM0OCwgMHgxMzUw
CisgICAgICAgIH07CisgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9w
aWNIYWxlaGFtZUFtRXRBbHBoYWJldCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OkFtaGFyaWNBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
RXRoaW9waWNBYmVnZWRlQW1FdDogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZXRoaW9w
aWNBYmVnZWRlQW1FdEFscGhhYmV0WzMzXSA9IHsKKyAgICAgICAgICAgIDB4MTJBMCwgMHgxMjYw
LCAweDEzMDgsIDB4MTJGMCwgMHgxMzAwLCAweDEyMDAsIDB4MTJDOCwgMHgxMkQ4LCAweDEyRTAs
CisgICAgICAgICAgICAweDEyMTAsIDB4MTMyMCwgMHgxMzI4LCAweDEyRTgsIDB4MTJBOCwgMHgx
MkI4LCAweDEyMDgsIDB4MTIxOCwgMHgxMjkwLAorICAgICAgICAgICAgMHgxMjk4LCAweDEyMjAs
IDB4MTJEMCwgMHgxMzQ4LCAweDEzMzgsIDB4MTI0MCwgMHgxMjI4LCAweDEyMzAsIDB4MTIzOCwK
KyAgICAgICAgICAgIDB4MTI3MCwgMHgxMjc4LCAweDEyODAsIDB4MTM0MCwgMHgxMzMwLCAweDEz
NTAKKyAgICAgICAgfTsKKyAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBldGhp
b3BpY0FiZWdlZGVBbUV0QWxwaGFiZXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpDamtFYXJ0aGx5QnJhbmNoOiB7CisgICAgICAgIHN0YXRpYyBjb25z
dCBVQ2hhciBjamtFYXJ0aGx5QnJhbmNoQWxwaGFiZXRbMTJdID0geworICAgICAgICAgICAgMHg1
QjUwLCAweDRFMTEsIDB4NUJDNSwgMHg1MzZGLCAweDhGQjAsIDB4NURGMywgMHg1MzQ4LCAweDY3
MkEsIDB4NzUzMywKKyAgICAgICAgICAgIDB4OTE0OSwgMHg2MjBDLCAweDRFQTUKKyAgICAgICAg
fTsKKyAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBjamtFYXJ0aGx5QnJhbmNo
QWxwaGFiZXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpDamtIZWF2ZW5seVN0ZW06IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGNqa0hlYXZl
bmx5U3RlbUFscGhhYmV0WzEwXSA9IHsKKyAgICAgICAgICAgIDB4NzUzMiwgMHg0RTU5LCAweDRF
MTksIDB4NEUwMSwgMHg2MjBBLCAweDVERjEsIDB4NUU5QSwgMHg4RjlCLCAweDU4RUMsCisgICAg
ICAgICAgICAweDc2NzgKKyAgICAgICAgfTsKKyAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIs
IHZhbHVlLCBjamtIZWF2ZW5seVN0ZW1BbHBoYWJldCk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljOgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6RXRoaW9waWNIYWxlaGFtZUdlejogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZXRo
aW9waWNIYWxlaGFtZUdlekFscGhhYmV0WzI2XSA9IHsKKyAgICAgICAgICAgIDB4MTIwMCwgMHgx
MjA4LCAweDEyMTAsIDB4MTIxOCwgMHgxMjIwLCAweDEyMjgsIDB4MTIzMCwgMHgxMjQwLCAweDEy
NjAsCisgICAgICAgICAgICAweDEyNzAsIDB4MTI4MCwgMHgxMjkwLCAweDEyQTAsIDB4MTJBOCwg
MHgxMkM4LCAweDEyRDAsIDB4MTJEOCwgMHgxMkU4LAorICAgICAgICAgICAgMHgxMkYwLCAweDEz
MDgsIDB4MTMyMCwgMHgxMzMwLCAweDEzMzgsIDB4MTM0MCwgMHgxMzQ4LCAweDEzNTAKKyAgICAg
ICAgfTsKKyAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBldGhpb3BpY0hhbGVo
YW1lR2V6QWxwaGFiZXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3Bp
Y0FiZWdlZGVHZXo6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGV0aGlvcGljQWJlZ2Vk
ZUdlekFscGhhYmV0WzI2XSA9IHsKKyAgICAgICAgICAgIDB4MTJBMCwgMHgxMjYwLCAweDEzMDgs
IDB4MTJGMCwgMHgxMjAwLCAweDEyQzgsIDB4MTJEOCwgMHgxMjEwLCAweDEzMjAsCisgICAgICAg
ICAgICAweDEyRTgsIDB4MTJBOCwgMHgxMjA4LCAweDEyMTgsIDB4MTI5MCwgMHgxMjIwLCAweDEy
RDAsIDB4MTM0OCwgMHgxMzM4LAorICAgICAgICAgICAgMHgxMjQwLCAweDEyMjgsIDB4MTIzMCwg
MHgxMjcwLCAweDEyODAsIDB4MTM0MCwgMHgxMzMwLCAweDEzNTAKKyAgICAgICAgfTsKKyAgICAg
ICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBldGhpb3BpY0FiZWdlZGVHZXpBbHBoYWJl
dCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okhhbmd1
bENvbnNvbmFudDogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgaGFuZ3VsQ29uc29uYW50
QWxwaGFiZXRbMTRdID0geworICAgICAgICAgICAgMHgzMTMxLCAweDMxMzQsIDB4MzEzNywgMHgz
MTM5LCAweDMxNDEsIDB4MzE0MiwgMHgzMTQ1LCAweDMxNDcsIDB4MzE0OCwKKyAgICAgICAgICAg
IDB4MzE0QSwgMHgzMTRCLCAweDMxNEMsIDB4MzE0RCwgMHgzMTRFCisgICAgICAgIH07CisgICAg
ICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgaGFuZ3VsQ29uc29uYW50QWxwaGFiZXQp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIYW5ndWw6
IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGhhbmd1bEFscGhhYmV0WzE0XSA9IHsKKyAg
ICAgICAgICAgIDB4QUMwMCwgMHhCMDk4LCAweEIyRTQsIDB4Qjc3QywgMHhCOUM4LCAweEJDMTQs
IDB4QzBBQywgMHhDNTQ0LCAweEM3OTAsCisgICAgICAgICAgICAweENDMjgsIDB4Q0U3NCwgMHhE
MEMwLCAweEQzMEMsIDB4RDU1OAorICAgICAgICB9OworICAgICAgICB0b0FscGhhYmV0aWMoYnVp
bGRlciwgdmFsdWUsIGhhbmd1bEFscGhhYmV0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6T3JvbW86CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhp
b3BpY0hhbGVoYW1lT21FdDogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZXRoaW9waWNI
YWxlaGFtZU9tRXRBbHBoYWJldFsyNV0gPSB7CisgICAgICAgICAgICAweDEyMDAsIDB4MTIwOCwg
MHgxMjE4LCAweDEyMjgsIDB4MTIzMCwgMHgxMjM4LCAweDEyNDAsIDB4MTI2MCwgMHgxMjcwLAor
ICAgICAgICAgICAgMHgxMjc4LCAweDEyOTAsIDB4MTI5OCwgMHgxMkEwLCAweDEyQTgsIDB4MTJD
OCwgMHgxMkU4LCAweDEyRjAsIDB4MTJGOCwKKyAgICAgICAgICAgIDB4MTMwMCwgMHgxMzA4LCAw
eDEzMjAsIDB4MTMyOCwgMHgxMzM4LCAweDEzMzAsIDB4MTM0OAorICAgICAgICB9OworICAgICAg
ICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGV0aGlvcGljSGFsZWhhbWVPbUV0QWxwaGFi
ZXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpTaWRh
bWE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lU2lkRXQ6IHsKKyAg
ICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGV0aGlvcGljSGFsZWhhbWVTaWRFdEFscGhhYmV0WzI2
XSA9IHsKKyAgICAgICAgICAgIDB4MTIwMCwgMHgxMjA4LCAweDEyMTAsIDB4MTIxOCwgMHgxMjI4
LCAweDEyMzAsIDB4MTIzOCwgMHgxMjQwLCAweDEyNjAsCisgICAgICAgICAgICAweDEyNzAsIDB4
MTI3OCwgMHgxMjkwLCAweDEyOTgsIDB4MTJBMCwgMHgxMkE4LCAweDEyQzgsIDB4MTJFOCwgMHgx
MkYwLAorICAgICAgICAgICAgMHgxMkY4LCAweDEzMDAsIDB4MTMwOCwgMHgxMzIwLCAweDEzMjgs
IDB4MTMzOCwgMHgxMzMwLCAweDEzNDgKKyAgICAgICAgfTsKKyAgICAgICAgdG9BbHBoYWJldGlj
KGJ1aWxkZXIsIHZhbHVlLCBldGhpb3BpY0hhbGVoYW1lU2lkRXRBbHBoYWJldCk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlNvbWFsaToKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVTb0V0OiB7CisgICAgICAgIHN0YXRpYyBj
b25zdCBVQ2hhciBldGhpb3BpY0hhbGVoYW1lU29FdEFscGhhYmV0WzIyXSA9IHsKKyAgICAgICAg
ICAgIDB4MTIwMCwgMHgxMjA4LCAweDEyMTAsIDB4MTIxOCwgMHgxMjI4LCAweDEyMzAsIDB4MTIz
OCwgMHgxMjQwLCAweDEyNjAsCisgICAgICAgICAgICAweDEyNzAsIDB4MTI5MCwgMHgxMkEwLCAw
eDEyQTgsIDB4MTJCOCwgMHgxMkM4LCAweDEyRDAsIDB4MTJFOCwgMHgxMkYwLAorICAgICAgICAg
ICAgMHgxMzAwLCAweDEzMDgsIDB4MTMzOCwgMHgxMzQ4CisgICAgICAgIH07CisgICAgICAgIHRv
QWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNIYWxlaGFtZVNvRXRBbHBoYWJldCk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JlOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVRpZzogeworICAgICAgICBz
dGF0aWMgY29uc3QgVUNoYXIgZXRoaW9waWNIYWxlaGFtZVRpZ0FscGhhYmV0WzI3XSA9IHsKKyAg
ICAgICAgICAgIDB4MTIwMCwgMHgxMjA4LCAweDEyMTAsIDB4MTIxOCwgMHgxMjI4LCAweDEyMzAs
IDB4MTIzOCwgMHgxMjQwLCAweDEyNjAsCisgICAgICAgICAgICAweDEyNzAsIDB4MTI3OCwgMHgx
MjkwLCAweDEyQTAsIDB4MTJBOCwgMHgxMkM4LCAweDEyRDAsIDB4MTJEOCwgMHgxMkU4LAorICAg
ICAgICAgICAgMHgxMkYwLCAweDEzMDAsIDB4MTMwOCwgMHgxMzIwLCAweDEzMjgsIDB4MTMzOCwg
MHgxMzMwLCAweDEzNDgsIDB4MTM1MAorICAgICAgICB9OworICAgICAgICB0b0FscGhhYmV0aWMo
YnVpbGRlciwgdmFsdWUsIGV0aGlvcGljSGFsZWhhbWVUaWdBbHBoYWJldCk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXI6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lVGlFcjogeworICAgICAgICBzdGF0aWMg
Y29uc3QgVUNoYXIgZXRoaW9waWNIYWxlaGFtZVRpRXJBbHBoYWJldFszMV0gPSB7CisgICAgICAg
ICAgICAweDEyMDAsIDB4MTIwOCwgMHgxMjEwLCAweDEyMTgsIDB4MTIyOCwgMHgxMjMwLCAweDEy
MzgsIDB4MTI0MCwgMHgxMjUwLAorICAgICAgICAgICAgMHgxMjYwLCAweDEyNzAsIDB4MTI3OCwg
MHgxMjkwLCAweDEyOTgsIDB4MTJBMCwgMHgxMkE4LCAweDEyQjgsIDB4MTJDOCwKKyAgICAgICAg
ICAgIDB4MTJEMCwgMHgxMkQ4LCAweDEyRTAsIDB4MTJFOCwgMHgxMkYwLCAweDEzMDAsIDB4MTMw
OCwgMHgxMzIwLCAweDEzMjgsCisgICAgICAgICAgICAweDEzMzAsIDB4MTMzOCwgMHgxMzQ4LCAw
eDEzNTAKKyAgICAgICAgfTsKKyAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBl
dGhpb3BpY0hhbGVoYW1lVGlFckFscGhhYmV0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmlueWFFckFiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGVUaUVyOiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hh
ciBldGhpb3BpY0FiZWdlZGVUaUVyQWxwaGFiZXRbMzFdID0geworICAgICAgICAgICAgMHgxMkEw
LCAweDEyNjAsIDB4MTMwOCwgMHgxMkYwLCAweDEzMDAsIDB4MTIwMCwgMHgxMkM4LCAweDEyRDgs
IDB4MTJFMCwKKyAgICAgICAgICAgIDB4MTIxMCwgMHgxMzIwLCAweDEzMjgsIDB4MTJFOCwgMHgx
MkE4LCAweDEyQjgsIDB4MTIwOCwgMHgxMjE4LCAweDEyOTAsCisgICAgICAgICAgICAweDEyOTgs
IDB4MTJEMCwgMHgxMzQ4LCAweDEzMzgsIDB4MTI0MCwgMHgxMjUwLCAweDEyMjgsIDB4MTIzMCwg
MHgxMjM4LAorICAgICAgICAgICAgMHgxMjcwLCAweDEyNzgsIDB4MTMzMCwgMHgxMzUwCisgICAg
ICAgIH07CisgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNBYmVn
ZWRlVGlFckFscGhhYmV0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6VGlncmlueWFFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFs
ZWhhbWVUaUV0OiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBldGhpb3BpY0hhbGVoYW1l
VGlFdEFscGhhYmV0WzM0XSA9IHsKKyAgICAgICAgICAgIDB4MTIwMCwgMHgxMjA4LCAweDEyMTAs
IDB4MTIxOCwgMHgxMjIwLCAweDEyMjgsIDB4MTIzMCwgMHgxMjM4LCAweDEyNDAsCisgICAgICAg
ICAgICAweDEyNTAsIDB4MTI2MCwgMHgxMjcwLCAweDEyNzgsIDB4MTI4MCwgMHgxMjkwLCAweDEy
OTgsIDB4MTJBMCwgMHgxMkE4LAorICAgICAgICAgICAgMHgxMkI4LCAweDEyQzgsIDB4MTJEMCwg
MHgxMkQ4LCAweDEyRTAsIDB4MTJFOCwgMHgxMkYwLCAweDEzMDAsIDB4MTMwOCwKKyAgICAgICAg
ICAgIDB4MTMyMCwgMHgxMzI4LCAweDEzMzAsIDB4MTMzOCwgMHgxMzQwLCAweDEzNDgsIDB4MTM1
MAorICAgICAgICB9OworICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGV0aGlv
cGljSGFsZWhhbWVUaUV0QWxwaGFiZXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55YUV0QWJlZ2VkZToKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkV0aGlvcGljQWJlZ2VkZVRpRXQ6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGV0
aGlvcGljQWJlZ2VkZVRpRXRBbHBoYWJldFszNF0gPSB7CisgICAgICAgICAgICAweDEyQTAsIDB4
MTI2MCwgMHgxMzA4LCAweDEyRjAsIDB4MTMwMCwgMHgxMjAwLCAweDEyQzgsIDB4MTJEOCwgMHgx
MkUwLAorICAgICAgICAgICAgMHgxMjEwLCAweDEzMjAsIDB4MTMyOCwgMHgxMkU4LCAweDEyQTgs
IDB4MTJCOCwgMHgxMjA4LCAweDEyMTgsIDB4MTI5MCwKKyAgICAgICAgICAgIDB4MTI5OCwgMHgx
MjIwLCAweDEyRDAsIDB4MTM0OCwgMHgxMzM4LCAweDEyNDAsIDB4MTI1MCwgMHgxMjI4LCAweDEy
MzAsCisgICAgICAgICAgICAweDEyMzgsIDB4MTI3MCwgMHgxMjc4LCAweDEyODAsIDB4MTM0MCwg
MHgxMzMwLCAweDEzNTAKKyAgICAgICAgfTsKKyAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIs
IHZhbHVlLCBldGhpb3BpY0FiZWdlZGVUaUV0QWxwaGFiZXQpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckdyZWVrOiB7CisgICAgICAgIHN0YXRp
YyBjb25zdCBVQ2hhciB1cHBlckdyZWVrQWxwaGFiZXRbMjRdID0geworICAgICAgICAgICAgMHgw
MzkxLCAweDAzOTIsIDB4MDM5MywgMHgwMzk0LCAweDAzOTUsIDB4MDM5NiwgMHgwMzk3LCAweDAz
OTgsIDB4MDM5OSwKKyAgICAgICAgICAgIDB4MDM5QSwgMHgwMzlCLCAweDAzOUMsIDB4MDM5RCwg
MHgwMzlFLCAweDAzOUYsIDB4MDNBMCwgMHgwM0ExLCAweDAzQTMsCisgICAgICAgICAgICAweDAz
QTQsIDB4MDNBNSwgMHgwM0E2LCAweDAzQTcsIDB4MDNBOCwgMHgwM0E5CisgICAgICAgIH07Cisg
ICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgdXBwZXJHcmVla0FscGhhYmV0KTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJOb3J3
ZWdpYW46IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IExDaGFyIGxvd2VyTm9yd2VnaWFuQWxwaGFi
ZXRbMjldID0geworICAgICAgICAgICAgMHg2MSwgMHg2MiwgMHg2MywgMHg2NCwgMHg2NSwgMHg2
NiwgMHg2NywgMHg2OCwgMHg2OSwKKyAgICAgICAgICAgIDB4NkEsIDB4NkIsIDB4NkMsIDB4NkQs
IDB4NkUsIDB4NkYsIDB4NzAsIDB4NzEsIDB4NzIsCisgICAgICAgICAgICAweDczLCAweDc0LCAw
eDc1LCAweDc2LCAweDc3LCAweDc4LCAweDc5LCAweDdBLCAweEU2LAorICAgICAgICAgICAgMHhG
OCwgMHhFNQorICAgICAgICB9OworICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUs
IGxvd2VyTm9yd2VnaWFuQWxwaGFiZXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpVcHBlck5vcndlZ2lhbjogeworICAgICAgICBzdGF0aWMgY29uc3Qg
TENoYXIgdXBwZXJOb3J3ZWdpYW5BbHBoYWJldFsyOV0gPSB7CisgICAgICAgICAgICAweDQxLCAw
eDQyLCAweDQzLCAweDQ0LCAweDQ1LCAweDQ2LCAweDQ3LCAweDQ4LCAweDQ5LAorICAgICAgICAg
ICAgMHg0QSwgMHg0QiwgMHg0QywgMHg0RCwgMHg0RSwgMHg0RiwgMHg1MCwgMHg1MSwgMHg1MiwK
KyAgICAgICAgICAgIDB4NTMsIDB4NTQsIDB4NTUsIDB4NTYsIDB4NTcsIDB4NTgsIDB4NTksIDB4
NUEsIDB4QzYsCisgICAgICAgICAgICAweEQ4LCAweEM1CisgICAgICAgIH07CisgICAgICAgIHRv
QWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgdXBwZXJOb3J3ZWdpYW5BbHBoYWJldCk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNKS0lkZW9ncmFwaGlj
OiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciB0cmFkaXRpb25hbENoaW5lc2VJbmZvcm1h
bFRhYmxlWzE2XSA9IHsKKyAgICAgICAgICAgIDB4ODQyQywgMHg1MTA0LCAweDUxNDYsCisgICAg
ICAgICAgICAweDUzNDEsIDB4NzY3RSwgMHg1MzQzLAorICAgICAgICAgICAgMHg5NkY2LCAweDRF
MDAsIDB4NEU4QywgMHg0RTA5LCAweDU2REIsCisgICAgICAgICAgICAweDRFOTQsIDB4NTE2RCwg
MHg0RTAzLCAweDUxNkIsIDB4NEU1RAorICAgICAgICB9OworICAgICAgICB0b0NKS0lkZW9ncmFw
aGljKGJ1aWxkZXIsIHZhbHVlLCB0cmFkaXRpb25hbENoaW5lc2VJbmZvcm1hbFRhYmxlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlclJvbWFu
OgorICAgICAgICB0b1JvbWFuKGJ1aWxkZXIsIHZhbHVlLCBmYWxzZSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJSb21hbjoKKyAgICAgICAgdG9Sb21hbihi
dWlsZGVyLCB2YWx1ZSwgdHJ1ZSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpBcm1lbmlhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyQXJtZW5pYW46
CisgICAgICAgIC8vIENTUzMgc2F5cyAiYXJtZW5pYW4iIG1lYW5zICJsb3dlci1hcm1lbmlhbiIu
CisgICAgICAgIC8vIEJ1dCB0aGUgQ1NTMi4xIHRlc3Qgc3VpdGUgY29udGFpbnMgdXBwZXJjYXNl
IHRlc3QgcmVzdWx0cyBmb3IgImFybWVuaWFuIiwKKyAgICAgICAgLy8gc28gd2UnbGwgbWF0Y2gg
dGhlIHRlc3Qgc3VpdGUuCisgICAgICAgIHRvQXJtZW5pYW4oYnVpbGRlciwgdmFsdWUsIHRydWUp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyQXJtZW5pYW46
CisgICAgICAgIHRvQXJtZW5pYW4oYnVpbGRlciwgdmFsdWUsIGZhbHNlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpHZW9yZ2lhbjoKKyAgICAgICAgdG9HZW9yZ2lh
bihidWlsZGVyLCB2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6SGVicmV3OgorICAgICAgICB0b0hlYnJldyhidWlsZGVyLCB2YWx1ZSk7CisgICAgICAgIGJy
ZWFrOwogICAgIH0KIAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkBAIC0xMTg2LDcg
KzExODYsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYgCiAgICAg
aWYgKHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCkKICAgICAgICAgcmV0
dXJuOwogICAgIAotICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAg
IGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAg
ICByZXR1cm47CiAKICAgICBMYXlvdXRQb2ludCBib3hPcmlnaW4ocGFpbnRPZmZzZXQgKyBsb2Nh
dGlvbigpKTsKQEAgLTEyMjcsOTggKzEyMjcsOTggQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpw
YWludChQYWludEluZm8mIAogICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDEuMGYpOwog
ICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGNvbG9yKTsKIAotICAgIEVMaXN0U3R5bGVUeXBlIHR5
cGUgPSBzdHlsZSgpLmxpc3RTdHlsZVR5cGUoKTsKKyAgICBMaXN0U3R5bGVUeXBlIHR5cGUgPSBz
dHlsZSgpLmxpc3RTdHlsZVR5cGUoKTsKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2Fz
ZSBEaXNjOgotICAgICAgICAgICAgY29udGV4dC5kcmF3RWxsaXBzZShtYXJrZXJSZWN0KTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBDaXJjbGU6Ci0gICAgICAgICAgICBjb250
ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOwotICAgICAgICAgICAgY29udGV4
dC5kcmF3RWxsaXBzZShtYXJrZXJSZWN0KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
Y2FzZSBTcXVhcmU6Ci0gICAgICAgICAgICBjb250ZXh0LmRyYXdSZWN0KG1hcmtlclJlY3QpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIE5vbmVMaXN0U3R5bGU6Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgQWZhcjoKLSAgICAgICAgY2FzZSBBbWhhcmljOgot
ICAgICAgICBjYXNlIEFtaGFyaWNBYmVnZWRlOgotICAgICAgICBjYXNlIEFyYWJpY0luZGljOgot
ICAgICAgICBjYXNlIEFybWVuaWFuOgotICAgICAgICBjYXNlIEJpbmFyeUxpc3RTdHlsZToKLSAg
ICAgICAgY2FzZSBCZW5nYWxpOgotICAgICAgICBjYXNlIENhbWJvZGlhbjoKLSAgICAgICAgY2Fz
ZSBDSktJZGVvZ3JhcGhpYzoKLSAgICAgICAgY2FzZSBDamtFYXJ0aGx5QnJhbmNoOgotICAgICAg
ICBjYXNlIENqa0hlYXZlbmx5U3RlbToKLSAgICAgICAgY2FzZSBEZWNpbWFsTGVhZGluZ1plcm86
Ci0gICAgICAgIGNhc2UgRGVjaW1hbExpc3RTdHlsZToKLSAgICAgICAgY2FzZSBEZXZhbmFnYXJp
OgotICAgICAgICBjYXNlIEV0aGlvcGljOgotICAgICAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZToK
LSAgICAgICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVBbUV0OgotICAgICAgICBjYXNlIEV0aGlvcGlj
QWJlZ2VkZUdlejoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVUaUVyOgotICAgICAgICBj
YXNlIEV0aGlvcGljQWJlZ2VkZVRpRXQ6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUFh
RXI6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUFhRXQ6Ci0gICAgICAgIGNhc2UgRXRo
aW9waWNIYWxlaGFtZUFtRXQ6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUdlejoKLSAg
ICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lT21FdDoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hh
bGVoYW1lU2lkRXQ6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVNvRXQ6Ci0gICAgICAg
IGNhc2UgRXRoaW9waWNIYWxlaGFtZVRpRXI6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFt
ZVRpRXQ6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVRpZzoKLSAgICAgICAgY2FzZSBH
ZW9yZ2lhbjoKLSAgICAgICAgY2FzZSBHdWphcmF0aToKLSAgICAgICAgY2FzZSBHdXJtdWtoaToK
LSAgICAgICAgY2FzZSBIYW5ndWw6Ci0gICAgICAgIGNhc2UgSGFuZ3VsQ29uc29uYW50OgotICAg
ICAgICBjYXNlIEhlYnJldzoKLSAgICAgICAgY2FzZSBIaXJhZ2FuYToKLSAgICAgICAgY2FzZSBI
aXJhZ2FuYUlyb2hhOgotICAgICAgICBjYXNlIEthbm5hZGE6Ci0gICAgICAgIGNhc2UgS2F0YWth
bmE6Ci0gICAgICAgIGNhc2UgS2F0YWthbmFJcm9oYToKLSAgICAgICAgY2FzZSBLaG1lcjoKLSAg
ICAgICAgY2FzZSBMYW86Ci0gICAgICAgIGNhc2UgTG93ZXJBbHBoYToKLSAgICAgICAgY2FzZSBM
b3dlckFybWVuaWFuOgotICAgICAgICBjYXNlIExvd2VyR3JlZWs6Ci0gICAgICAgIGNhc2UgTG93
ZXJIZXhhZGVjaW1hbDoKLSAgICAgICAgY2FzZSBMb3dlckxhdGluOgotICAgICAgICBjYXNlIExv
d2VyTm9yd2VnaWFuOgotICAgICAgICBjYXNlIExvd2VyUm9tYW46Ci0gICAgICAgIGNhc2UgTWFs
YXlhbGFtOgotICAgICAgICBjYXNlIE1vbmdvbGlhbjoKLSAgICAgICAgY2FzZSBNeWFubWFyOgot
ICAgICAgICBjYXNlIE9jdGFsOgotICAgICAgICBjYXNlIE9yaXlhOgotICAgICAgICBjYXNlIE9y
b21vOgotICAgICAgICBjYXNlIFBlcnNpYW46Ci0gICAgICAgIGNhc2UgU2lkYW1hOgotICAgICAg
ICBjYXNlIFNvbWFsaToKLSAgICAgICAgY2FzZSBUZWx1Z3U6Ci0gICAgICAgIGNhc2UgVGhhaToK
LSAgICAgICAgY2FzZSBUaWJldGFuOgotICAgICAgICBjYXNlIFRpZ3JlOgotICAgICAgICBjYXNl
IFRpZ3JpbnlhRXI6Ci0gICAgICAgIGNhc2UgVGlncmlueWFFckFiZWdlZGU6Ci0gICAgICAgIGNh
c2UgVGlncmlueWFFdDoKLSAgICAgICAgY2FzZSBUaWdyaW55YUV0QWJlZ2VkZToKLSAgICAgICAg
Y2FzZSBVcHBlckFscGhhOgotICAgICAgICBjYXNlIFVwcGVyQXJtZW5pYW46Ci0gICAgICAgIGNh
c2UgVXBwZXJHcmVlazoKLSAgICAgICAgY2FzZSBVcHBlckhleGFkZWNpbWFsOgotICAgICAgICBj
YXNlIFVwcGVyTGF0aW46Ci0gICAgICAgIGNhc2UgVXBwZXJOb3J3ZWdpYW46Ci0gICAgICAgIGNh
c2UgVXBwZXJSb21hbjoKLSAgICAgICAgY2FzZSBVcmR1OgotICAgICAgICBjYXNlIEFzdGVyaXNr
czoKLSAgICAgICAgY2FzZSBGb290bm90ZXM6Ci0gICAgICAgICAgICBicmVhazsKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OkRpc2M6CisgICAgICAgIGNvbnRleHQuZHJhd0VsbGlwc2UobWFya2Vy
UmVjdCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNpcmNsZToK
KyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICAg
ICAgY29udGV4dC5kcmF3RWxsaXBzZShtYXJrZXJSZWN0KTsKKyAgICAgICAgcmV0dXJuOworICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6U3F1YXJlOgorICAgICAgICBjb250ZXh0LmRyYXdSZWN0KG1h
cmtlclJlY3QpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpOb25l
OgorICAgICAgICByZXR1cm47CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBZmFyOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6QW1oYXJpYzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFtaGFy
aWNBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QXJhYmljSW5kaWM6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpBcm1lbmlhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkJpbmFy
eToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkJlbmdhbGk6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpDYW1ib2RpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDSktJZGVvZ3JhcGhpYzoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNqa0VhcnRobHlCcmFuY2g6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpDamtIZWF2ZW5seVN0ZW06CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEZWNp
bWFsTGVhZGluZ1plcm86CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEZWNpbWFsOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6RGV2YW5hZ2FyaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0
aGlvcGljOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlQW1FdDoKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OkV0aGlvcGljQWJlZ2VkZUdlejoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlv
cGljQWJlZ2VkZVRpRXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGVU
aUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUFhRXI6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lQWFFdDoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVBbUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
RXRoaW9waWNIYWxlaGFtZUdlejoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFs
ZWhhbWVPbUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVNpZEV0
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVNvRXQ6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lVGlFcjoKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVUaUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRo
aW9waWNIYWxlaGFtZVRpZzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okdlb3JnaWFuOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6R3VqYXJhdGk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpH
dXJtdWtoaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okhhbmd1bDoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6Okhhbmd1bENvbnNvbmFudDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkhlYnJl
dzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkhpcmFnYW5hOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6SGlyYWdhbmFJcm9oYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okthbm5hZGE6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLYXRha2FuYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
OkthdGFrYW5hSXJvaGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLaG1lcjoKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OkxhbzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyQWxwaGE6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckFybWVuaWFuOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6TG93ZXJHcmVlazoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VySGV4YWRl
Y2ltYWw6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckxhdGluOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6TG93ZXJOb3J3ZWdpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dl
clJvbWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TWFsYXlhbGFtOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6TW9uZ29saWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TXlhbm1hcjoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok9jdGFsOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
T3JpeWE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpPcm9tbzoKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OlBlcnNpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpTaWRhbWE6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpTb21hbGk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUZWx1Z3U6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaGFpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
VGliZXRhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JlOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6VGlncmlueWFFcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXJB
YmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmlueWFFdDoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXRBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
VXBwZXJBbHBoYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyQXJtZW5pYW46CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckdyZWVrOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
VXBwZXJIZXhhZGVjaW1hbDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyTGF0aW46Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlck5vcndlZ2lhbjoKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OlVwcGVyUm9tYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcmR1OgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6QXN0ZXJpc2tzOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Rm9v
dG5vdGVzOgorICAgICAgICBicmVhazsKICAgICB9CiAgICAgaWYgKG1fdGV4dC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTEzNDAsNyArMTM0MCw3IEBAIHZvaWQgUmVuZGVyTGlzdE1h
cmtlcjo6cGFpbnQoUGFpbnRJbmZvJiAKICAgICBGbG9hdFBvaW50IHRleHRPcmlnaW4gPSBGbG9h
dFBvaW50KG1hcmtlclJlY3QueCgpLCBtYXJrZXJSZWN0LnkoKSArIHN0eWxlKCkuZm9udE1ldHJp
Y3MoKS5hc2NlbnQoKSk7CiAgICAgdGV4dE9yaWdpbiA9IHJvdW5kUG9pbnRUb0RldmljZVBpeGVs
cyhMYXlvdXRQb2ludCh0ZXh0T3JpZ2luKSwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3Rvcigp
LCBzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSk7CiAKLSAgICBpZiAodHlwZSA9PSBB
c3Rlcmlza3MgfHwgdHlwZSA9PSBGb290bm90ZXMpCisgICAgaWYgKHR5cGUgPT0gTGlzdFN0eWxl
VHlwZTo6QXN0ZXJpc2tzIHx8IHR5cGUgPT0gTGlzdFN0eWxlVHlwZTo6Rm9vdG5vdGVzKQogICAg
ICAgICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIHRleHRSdW4sIHRleHRPcmlnaW4pOwogICAgIGVs
c2UgewogICAgICAgICBjb25zdCBVQ2hhciBzdWZmaXggPSBsaXN0TWFya2VyU3VmZml4KHR5cGUs
IG1fbGlzdEl0ZW0udmFsdWUoKSk7CkBAIC0xNDQ4LDkyICsxNDQ4LDkyIEBAIHZvaWQgUmVuZGVy
TGlzdE1hcmtlcjo6dXBkYXRlQ29udGVudCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBFTGlzdFN0eWxlVHlwZSB0eXBlID0gc3R5bGUoKS5saXN0U3R5bGVUeXBlKCk7CisgICAgTGlz
dFN0eWxlVHlwZSB0eXBlID0gc3R5bGUoKS5saXN0U3R5bGVUeXBlKCk7CiAgICAgc3dpdGNoICh0
eXBlKSB7Ci0gICAgY2FzZSBOb25lTGlzdFN0eWxlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
Tm9uZToKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDaXJjbGU6Ci0gICAgY2FzZSBEaXNjOgot
ICAgIGNhc2UgU3F1YXJlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2lyY2xlOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6RGlzYzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlNxdWFyZToK
ICAgICAgICAgbV90ZXh0ID0gbGlzdE1hcmtlclRleHQodHlwZSwgMCk7IC8vIHZhbHVlIGlzIGln
bm9yZWQgZm9yIHRoZXNlIHR5cGVzCiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQXN0ZXJpc2tz
OgotICAgIGNhc2UgRm9vdG5vdGVzOgotICAgIGNhc2UgQWZhcjoKLSAgICBjYXNlIEFtaGFyaWM6
Ci0gICAgY2FzZSBBbWhhcmljQWJlZ2VkZToKLSAgICBjYXNlIEFyYWJpY0luZGljOgotICAgIGNh
c2UgQXJtZW5pYW46Ci0gICAgY2FzZSBCaW5hcnlMaXN0U3R5bGU6Ci0gICAgY2FzZSBCZW5nYWxp
OgotICAgIGNhc2UgQ2FtYm9kaWFuOgotICAgIGNhc2UgQ0pLSWRlb2dyYXBoaWM6Ci0gICAgY2Fz
ZSBDamtFYXJ0aGx5QnJhbmNoOgotICAgIGNhc2UgQ2prSGVhdmVubHlTdGVtOgotICAgIGNhc2Ug
RGVjaW1hbExlYWRpbmdaZXJvOgotICAgIGNhc2UgRGVjaW1hbExpc3RTdHlsZToKLSAgICBjYXNl
IERldmFuYWdhcmk6Ci0gICAgY2FzZSBFdGhpb3BpYzoKLSAgICBjYXNlIEV0aGlvcGljQWJlZ2Vk
ZToKLSAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZUFtRXQ6Ci0gICAgY2FzZSBFdGhpb3BpY0FiZWdl
ZGVHZXo6Ci0gICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVUaUVyOgotICAgIGNhc2UgRXRoaW9waWNB
YmVnZWRlVGlFdDoKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVBYUVyOgotICAgIGNhc2UgRXRo
aW9waWNIYWxlaGFtZUFhRXQ6Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lQW1FdDoKLSAgICBj
YXNlIEV0aGlvcGljSGFsZWhhbWVHZXo6Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lT21FdDoK
LSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVTaWRFdDoKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhh
bWVTb0V0OgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVRpRXI6Ci0gICAgY2FzZSBFdGhpb3Bp
Y0hhbGVoYW1lVGlFdDoKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVUaWc6Ci0gICAgY2FzZSBH
ZW9yZ2lhbjoKLSAgICBjYXNlIEd1amFyYXRpOgotICAgIGNhc2UgR3VybXVraGk6Ci0gICAgY2Fz
ZSBIYW5ndWw6Ci0gICAgY2FzZSBIYW5ndWxDb25zb25hbnQ6Ci0gICAgY2FzZSBIZWJyZXc6Ci0g
ICAgY2FzZSBIaXJhZ2FuYToKLSAgICBjYXNlIEhpcmFnYW5hSXJvaGE6Ci0gICAgY2FzZSBLYW5u
YWRhOgotICAgIGNhc2UgS2F0YWthbmE6Ci0gICAgY2FzZSBLYXRha2FuYUlyb2hhOgotICAgIGNh
c2UgS2htZXI6Ci0gICAgY2FzZSBMYW86Ci0gICAgY2FzZSBMb3dlckFscGhhOgotICAgIGNhc2Ug
TG93ZXJBcm1lbmlhbjoKLSAgICBjYXNlIExvd2VyR3JlZWs6Ci0gICAgY2FzZSBMb3dlckhleGFk
ZWNpbWFsOgotICAgIGNhc2UgTG93ZXJMYXRpbjoKLSAgICBjYXNlIExvd2VyTm9yd2VnaWFuOgot
ICAgIGNhc2UgTG93ZXJSb21hbjoKLSAgICBjYXNlIE1hbGF5YWxhbToKLSAgICBjYXNlIE1vbmdv
bGlhbjoKLSAgICBjYXNlIE15YW5tYXI6Ci0gICAgY2FzZSBPY3RhbDoKLSAgICBjYXNlIE9yaXlh
OgotICAgIGNhc2UgT3JvbW86Ci0gICAgY2FzZSBQZXJzaWFuOgotICAgIGNhc2UgU2lkYW1hOgot
ICAgIGNhc2UgU29tYWxpOgotICAgIGNhc2UgVGVsdWd1OgotICAgIGNhc2UgVGhhaToKLSAgICBj
YXNlIFRpYmV0YW46Ci0gICAgY2FzZSBUaWdyZToKLSAgICBjYXNlIFRpZ3JpbnlhRXI6Ci0gICAg
Y2FzZSBUaWdyaW55YUVyQWJlZ2VkZToKLSAgICBjYXNlIFRpZ3JpbnlhRXQ6Ci0gICAgY2FzZSBU
aWdyaW55YUV0QWJlZ2VkZToKLSAgICBjYXNlIFVwcGVyQWxwaGE6Ci0gICAgY2FzZSBVcHBlckFy
bWVuaWFuOgotICAgIGNhc2UgVXBwZXJHcmVlazoKLSAgICBjYXNlIFVwcGVySGV4YWRlY2ltYWw6
Ci0gICAgY2FzZSBVcHBlckxhdGluOgotICAgIGNhc2UgVXBwZXJOb3J3ZWdpYW46Ci0gICAgY2Fz
ZSBVcHBlclJvbWFuOgotICAgIGNhc2UgVXJkdToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFz
dGVyaXNrczoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkZvb3Rub3RlczoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkFmYXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBbWhhcmljOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6QW1oYXJpY0FiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpBcmFiaWNJbmRpYzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFybWVuaWFuOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6QmluYXJ5OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QmVu
Z2FsaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNhbWJvZGlhbjoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OkNKS0lkZW9ncmFwaGljOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2prRWFy
dGhseUJyYW5jaDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNqa0hlYXZlbmx5U3RlbToKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OkRlY2ltYWxMZWFkaW5nWmVybzoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OkRlY2ltYWw6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEZXZhbmFnYXJpOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpFdGhpb3BpY0FiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdl
ZGVBbUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlR2V6OgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlVGlFcjoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZVRpRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpF
dGhpb3BpY0hhbGVoYW1lQWFFcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFs
ZWhhbWVBYUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUFtRXQ6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lR2V6OgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZU9tRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpFdGhpb3BpY0hhbGVoYW1lU2lkRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhp
b3BpY0hhbGVoYW1lU29FdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhh
bWVUaUVyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVRpRXQ6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lVGlnOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6R2VvcmdpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpHdWphcmF0aToK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okd1cm11a2hpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6SGFuZ3VsOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGFuZ3VsQ29uc29uYW50OgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6SGVicmV3OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGly
YWdhbmE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIaXJhZ2FuYUlyb2hhOgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6S2FubmFkYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkthdGFrYW5h
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6S2F0YWthbmFJcm9oYToKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OktobWVyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TGFvOgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6TG93ZXJBbHBoYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2Vy
QXJtZW5pYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckdyZWVrOgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6TG93ZXJIZXhhZGVjaW1hbDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
Okxvd2VyTGF0aW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlck5vcndlZ2lhbjoKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyUm9tYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpNYWxheWFsYW06CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpNb25nb2xpYW46CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpNeWFubWFyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6T2N0YWw6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpPcml5YToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
Ok9yb21vOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6UGVyc2lhbjoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OlNpZGFtYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlNvbWFsaToKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OlRlbHVndToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRoYWk6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWJldGFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6VGlncmU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55YUVyOgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6VGlncmlueWFFckFiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpUaWdyaW55YUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmlueWFFdEFiZWdlZGU6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckFscGhhOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6VXBwZXJBcm1lbmlhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyR3JlZWs6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckhleGFkZWNpbWFsOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6VXBwZXJMYXRpbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyTm9y
d2VnaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJSb21hbjoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OlVyZHU6CiAgICAgICAgIG1fdGV4dCA9IGxpc3RNYXJrZXJUZXh0KHR5cGUs
IG1fbGlzdEl0ZW0udmFsdWUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTE1NTUsMTA2
ICsxNTU1LDEwNiBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OmNvbXB1dGVQcmVmZXJyZWRMCiAg
ICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCk7CiAKICAg
ICBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCA9IDA7Ci0gICAgRUxpc3RTdHlsZVR5cGUgdHlwZSA9
IHN0eWxlKCkubGlzdFN0eWxlVHlwZSgpOworICAgIExpc3RTdHlsZVR5cGUgdHlwZSA9IHN0eWxl
KCkubGlzdFN0eWxlVHlwZSgpOwogICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICBjYXNlIE5v
bmVMaXN0U3R5bGU6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBc3Rlcmlza3M6
Ci0gICAgICAgIGNhc2UgRm9vdG5vdGVzOiB7CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpOb25l
OgorICAgICAgICBicmVhazsKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFzdGVyaXNrczoKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OkZvb3Rub3RlczogeworICAgICAgICBUZXh0UnVuIHJ1biA9
IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKG1fdGV4dCwgc3R5bGUoKSk7CisgICAgICAg
IGxvZ2ljYWxXaWR0aCA9IGZvbnQud2lkdGgocnVuKTsgLy8gbm8gc3VmZml4IGZvciB0aGVzZSB0
eXBlcworICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDaXJj
bGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEaXNjOgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6U3F1YXJlOgorICAgICAgICBsb2dpY2FsV2lkdGggPSAoZm9udC5mb250TWV0cmljcygpLmFz
Y2VudCgpICogMiAvIDMgKyAxKSAvIDIgKyAyOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkFmYXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBbWhhcmljOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6QW1oYXJpY0FiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpBcmFiaWNJbmRpYzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFybWVuaWFuOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6QmluYXJ5OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QmVu
Z2FsaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNhbWJvZGlhbjoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OkNKS0lkZW9ncmFwaGljOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2prRWFy
dGhseUJyYW5jaDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNqa0hlYXZlbmx5U3RlbToKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OkRlY2ltYWxMZWFkaW5nWmVybzoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OkRlY2ltYWw6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEZXZhbmFnYXJpOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpFdGhpb3BpY0FiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdl
ZGVBbUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlR2V6OgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlVGlFcjoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZVRpRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpF
dGhpb3BpY0hhbGVoYW1lQWFFcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFs
ZWhhbWVBYUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUFtRXQ6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lR2V6OgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZU9tRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpFdGhpb3BpY0hhbGVoYW1lU2lkRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhp
b3BpY0hhbGVoYW1lU29FdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhh
bWVUaUVyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVRpRXQ6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lVGlnOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6R2VvcmdpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpHdWphcmF0aToK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okd1cm11a2hpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6SGFuZ3VsOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGFuZ3VsQ29uc29uYW50OgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6SGVicmV3OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGly
YWdhbmE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIaXJhZ2FuYUlyb2hhOgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6S2FubmFkYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkthdGFrYW5h
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6S2F0YWthbmFJcm9oYToKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OktobWVyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TGFvOgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6TG93ZXJBbHBoYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2Vy
QXJtZW5pYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckdyZWVrOgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6TG93ZXJIZXhhZGVjaW1hbDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
Okxvd2VyTGF0aW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlck5vcndlZ2lhbjoKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyUm9tYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpNYWxheWFsYW06CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpNb25nb2xpYW46CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpNeWFubWFyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6T2N0YWw6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpPcml5YToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
Ok9yb21vOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6UGVyc2lhbjoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OlNpZGFtYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlNvbWFsaToKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OlRlbHVndToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRoYWk6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWJldGFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6VGlncmU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55YUVyOgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6VGlncmlueWFFckFiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpUaWdyaW55YUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmlueWFFdEFiZWdlZGU6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckFscGhhOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6VXBwZXJBcm1lbmlhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyR3JlZWs6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckhleGFkZWNpbWFsOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6VXBwZXJMYXRpbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyTm9y
d2VnaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJSb21hbjoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OlVyZHU6CisgICAgICAgIGlmIChtX3RleHQuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgbG9naWNhbFdpZHRoID0gMDsKKyAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBUZXh0
UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKG1fdGV4dCwgc3R5bGUoKSk7
Ci0gICAgICAgICAgICBsb2dpY2FsV2lkdGggPSBmb250LndpZHRoKHJ1bik7IC8vIG5vIHN1ZmZp
eCBmb3IgdGhlc2UgdHlwZXMKKyAgICAgICAgICAgIExheW91dFVuaXQgaXRlbVdpZHRoID0gZm9u
dC53aWR0aChydW4pOworICAgICAgICAgICAgVUNoYXIgc3VmZml4U3BhY2VbMl0gPSB7IGxpc3RN
YXJrZXJTdWZmaXgodHlwZSwgbV9saXN0SXRlbS52YWx1ZSgpKSwgJyAnIH07CisgICAgICAgICAg
ICBMYXlvdXRVbml0IHN1ZmZpeFNwYWNlV2lkdGggPSBmb250LndpZHRoKFJlbmRlckJsb2NrOjpj
b25zdHJ1Y3RUZXh0UnVuKHN1ZmZpeFNwYWNlLCAyLCBzdHlsZSgpKSk7CisgICAgICAgICAgICBs
b2dpY2FsV2lkdGggPSBpdGVtV2lkdGggKyBzdWZmaXhTcGFjZVdpZHRoOwogICAgICAgICB9Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDaXJjbGU6Ci0gICAgICAgIGNhc2UgRGlz
YzoKLSAgICAgICAgY2FzZSBTcXVhcmU6Ci0gICAgICAgICAgICBsb2dpY2FsV2lkdGggPSAoZm9u
dC5mb250TWV0cmljcygpLmFzY2VudCgpICogMiAvIDMgKyAxKSAvIDIgKyAyOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQWZhcjoKLSAgICAgICAgY2FzZSBBbWhhcmljOgotICAg
ICAgICBjYXNlIEFtaGFyaWNBYmVnZWRlOgotICAgICAgICBjYXNlIEFyYWJpY0luZGljOgotICAg
ICAgICBjYXNlIEFybWVuaWFuOgotICAgICAgICBjYXNlIEJpbmFyeUxpc3RTdHlsZToKLSAgICAg
ICAgY2FzZSBCZW5nYWxpOgotICAgICAgICBjYXNlIENhbWJvZGlhbjoKLSAgICAgICAgY2FzZSBD
SktJZGVvZ3JhcGhpYzoKLSAgICAgICAgY2FzZSBDamtFYXJ0aGx5QnJhbmNoOgotICAgICAgICBj
YXNlIENqa0hlYXZlbmx5U3RlbToKLSAgICAgICAgY2FzZSBEZWNpbWFsTGVhZGluZ1plcm86Ci0g
ICAgICAgIGNhc2UgRGVjaW1hbExpc3RTdHlsZToKLSAgICAgICAgY2FzZSBEZXZhbmFnYXJpOgot
ICAgICAgICBjYXNlIEV0aGlvcGljOgotICAgICAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZToKLSAg
ICAgICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVBbUV0OgotICAgICAgICBjYXNlIEV0aGlvcGljQWJl
Z2VkZUdlejoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVUaUVyOgotICAgICAgICBjYXNl
IEV0aGlvcGljQWJlZ2VkZVRpRXQ6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUFhRXI6
Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUFhRXQ6Ci0gICAgICAgIGNhc2UgRXRoaW9w
aWNIYWxlaGFtZUFtRXQ6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUdlejoKLSAgICAg
ICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lT21FdDoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVo
YW1lU2lkRXQ6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVNvRXQ6Ci0gICAgICAgIGNh
c2UgRXRoaW9waWNIYWxlaGFtZVRpRXI6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVRp
RXQ6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVRpZzoKLSAgICAgICAgY2FzZSBHZW9y
Z2lhbjoKLSAgICAgICAgY2FzZSBHdWphcmF0aToKLSAgICAgICAgY2FzZSBHdXJtdWtoaToKLSAg
ICAgICAgY2FzZSBIYW5ndWw6Ci0gICAgICAgIGNhc2UgSGFuZ3VsQ29uc29uYW50OgotICAgICAg
ICBjYXNlIEhlYnJldzoKLSAgICAgICAgY2FzZSBIaXJhZ2FuYToKLSAgICAgICAgY2FzZSBIaXJh
Z2FuYUlyb2hhOgotICAgICAgICBjYXNlIEthbm5hZGE6Ci0gICAgICAgIGNhc2UgS2F0YWthbmE6
Ci0gICAgICAgIGNhc2UgS2F0YWthbmFJcm9oYToKLSAgICAgICAgY2FzZSBLaG1lcjoKLSAgICAg
ICAgY2FzZSBMYW86Ci0gICAgICAgIGNhc2UgTG93ZXJBbHBoYToKLSAgICAgICAgY2FzZSBMb3dl
ckFybWVuaWFuOgotICAgICAgICBjYXNlIExvd2VyR3JlZWs6Ci0gICAgICAgIGNhc2UgTG93ZXJI
ZXhhZGVjaW1hbDoKLSAgICAgICAgY2FzZSBMb3dlckxhdGluOgotICAgICAgICBjYXNlIExvd2Vy
Tm9yd2VnaWFuOgotICAgICAgICBjYXNlIExvd2VyUm9tYW46Ci0gICAgICAgIGNhc2UgTWFsYXlh
bGFtOgotICAgICAgICBjYXNlIE1vbmdvbGlhbjoKLSAgICAgICAgY2FzZSBNeWFubWFyOgotICAg
ICAgICBjYXNlIE9jdGFsOgotICAgICAgICBjYXNlIE9yaXlhOgotICAgICAgICBjYXNlIE9yb21v
OgotICAgICAgICBjYXNlIFBlcnNpYW46Ci0gICAgICAgIGNhc2UgU2lkYW1hOgotICAgICAgICBj
YXNlIFNvbWFsaToKLSAgICAgICAgY2FzZSBUZWx1Z3U6Ci0gICAgICAgIGNhc2UgVGhhaToKLSAg
ICAgICAgY2FzZSBUaWJldGFuOgotICAgICAgICBjYXNlIFRpZ3JlOgotICAgICAgICBjYXNlIFRp
Z3JpbnlhRXI6Ci0gICAgICAgIGNhc2UgVGlncmlueWFFckFiZWdlZGU6Ci0gICAgICAgIGNhc2Ug
VGlncmlueWFFdDoKLSAgICAgICAgY2FzZSBUaWdyaW55YUV0QWJlZ2VkZToKLSAgICAgICAgY2Fz
ZSBVcHBlckFscGhhOgotICAgICAgICBjYXNlIFVwcGVyQXJtZW5pYW46Ci0gICAgICAgIGNhc2Ug
VXBwZXJHcmVlazoKLSAgICAgICAgY2FzZSBVcHBlckhleGFkZWNpbWFsOgotICAgICAgICBjYXNl
IFVwcGVyTGF0aW46Ci0gICAgICAgIGNhc2UgVXBwZXJOb3J3ZWdpYW46Ci0gICAgICAgIGNhc2Ug
VXBwZXJSb21hbjoKLSAgICAgICAgY2FzZSBVcmR1OgotICAgICAgICAgICAgaWYgKG1fdGV4dC5p
c0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgbG9naWNhbFdpZHRoID0gMDsKLSAgICAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0
cnVjdFRleHRSdW4obV90ZXh0LCBzdHlsZSgpKTsKLSAgICAgICAgICAgICAgICBMYXlvdXRVbml0
IGl0ZW1XaWR0aCA9IGZvbnQud2lkdGgocnVuKTsKLSAgICAgICAgICAgICAgICBVQ2hhciBzdWZm
aXhTcGFjZVsyXSA9IHsgbGlzdE1hcmtlclN1ZmZpeCh0eXBlLCBtX2xpc3RJdGVtLnZhbHVlKCkp
LCAnICcgfTsKLSAgICAgICAgICAgICAgICBMYXlvdXRVbml0IHN1ZmZpeFNwYWNlV2lkdGggPSBm
b250LndpZHRoKFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHN1ZmZpeFNwYWNlLCAyLCBz
dHlsZSgpKSk7Ci0gICAgICAgICAgICAgICAgbG9naWNhbFdpZHRoID0gaXRlbVdpZHRoICsgc3Vm
Zml4U3BhY2VXaWR0aDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBicmVhazsKICAgICB9CiAKICAgICBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IGxvZ2lj
YWxXaWR0aDsKQEAgLTE2NzYsOSArMTY3Niw5IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6dXBk
YXRlTWFyZ2lucygpCiAgICAgICAgIGlmIChpc0ltYWdlKCkpCiAgICAgICAgICAgICBtYXJnaW5F
bmQgPSBjTWFya2VyUGFkZGluZzsKICAgICAgICAgZWxzZSBzd2l0Y2ggKHN0eWxlKCkubGlzdFN0
eWxlVHlwZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIERpc2M6Ci0gICAgICAgICAgICBjYXNlIENp
cmNsZToKLSAgICAgICAgICAgIGNhc2UgU3F1YXJlOgorICAgICAgICAgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpEaXNjOgorICAgICAgICAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDaXJjbGU6Cisg
ICAgICAgICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlNxdWFyZToKICAgICAgICAgICAgICAgICBt
YXJnaW5TdGFydCA9IC0xOwogICAgICAgICAgICAgICAgIG1hcmdpbkVuZCA9IGZvbnRNZXRyaWNz
LmFzY2VudCgpIC0gbWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCkgKyAxOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTY5MiwxNSArMTY5MiwxNSBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6
OnVwZGF0ZU1hcmdpbnMoKQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgaW50
IG9mZnNldCA9IGZvbnRNZXRyaWNzLmFzY2VudCgpICogMiAvIDM7CiAgICAgICAgICAgICAgICAg
c3dpdGNoIChzdHlsZSgpLmxpc3RTdHlsZVR5cGUoKSkgewotICAgICAgICAgICAgICAgICAgICBj
YXNlIERpc2M6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ2lyY2xlOgotICAgICAgICAgICAg
ICAgICAgICBjYXNlIFNxdWFyZToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblN0YXJ0
ID0gLW9mZnNldCAtIGNNYXJrZXJQYWRkaW5nIC0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIE5vbmVMaXN0U3R5bGU6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblN0YXJ0ID0gbV90ZXh0LmlzRW1wdHkoKSA/IExh
eW91dFVuaXQoKSA6IC1taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSAtIG9mZnNldCAvIDI7Cisg
ICAgICAgICAgICAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEaXNjOgorICAgICAgICAgICAgICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2lyY2xlOgorICAgICAgICAgICAgICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6U3F1YXJlOgorICAgICAgICAgICAgICAgICAgICBtYXJnaW5TdGFydCA9IC1vZmZz
ZXQgLSBjTWFya2VyUGFkZGluZyAtIDE7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Tm9uZToKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAg
bWFyZ2luU3RhcnQgPSBtX3RleHQuaXNFbXB0eSgpID8gTGF5b3V0VW5pdCgpIDogLW1pblByZWZl
cnJlZExvZ2ljYWxXaWR0aCgpIC0gb2Zmc2V0IC8gMjsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBtYXJnaW5FbmQgPSAtbWFyZ2luU3RhcnQgLSBtaW5QcmVm
ZXJyZWRMb2dpY2FsV2lkdGgoKTsKQEAgLTE3MTAsMTUgKzE3MTAsMTUgQEAgdm9pZCBSZW5kZXJM
aXN0TWFya2VyOjp1cGRhdGVNYXJnaW5zKCkKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgICAgIGludCBvZmZzZXQgPSBmb250TWV0cmljcy5hc2NlbnQoKSAqIDIgLyAzOwogICAgICAg
ICAgICAgICAgIHN3aXRjaCAoc3R5bGUoKS5saXN0U3R5bGVUeXBlKCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgY2FzZSBEaXNjOgotICAgICAgICAgICAgICAgICAgICBjYXNlIENpcmNsZToKLSAg
ICAgICAgICAgICAgICAgICAgY2FzZSBTcXVhcmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBt
YXJnaW5FbmQgPSBvZmZzZXQgKyBjTWFya2VyUGFkZGluZyArIDEgLSBtaW5QcmVmZXJyZWRMb2dp
Y2FsV2lkdGgoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBjYXNlIE5vbmVMaXN0U3R5bGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAg
IG1hcmdpbkVuZCA9IG1fdGV4dC5pc0VtcHR5KCkgPyAwIDogb2Zmc2V0IC8gMjsKKyAgICAgICAg
ICAgICAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRpc2M6CisgICAgICAgICAgICAgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpDaXJjbGU6CisgICAgICAgICAgICAgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpTcXVhcmU6CisgICAgICAgICAgICAgICAgICAgIG1hcmdpbkVuZCA9IG9mZnNldCArIGNNYXJr
ZXJQYWRkaW5nICsgMSAtIG1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok5vbmU6
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgICAgIG1hcmdpbkVuZCA9IG1fdGV4dC5pc0VtcHR5KCkgPyAwIDogb2Zm
c2V0IC8gMjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBt
YXJnaW5TdGFydCA9IC1tYXJnaW5FbmQgLSBtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKTsKQEAg
LTE3NDYsNyArMTc0Niw3IEBAIGludCBSZW5kZXJMaXN0TWFya2VyOjpiYXNlbGluZVBvc2l0aW9u
KEYKIAogU3RyaW5nIFJlbmRlckxpc3RNYXJrZXI6OnN1ZmZpeCgpIGNvbnN0CiB7Ci0gICAgRUxp
c3RTdHlsZVR5cGUgdHlwZSA9IHN0eWxlKCkubGlzdFN0eWxlVHlwZSgpOworICAgIExpc3RTdHls
ZVR5cGUgdHlwZSA9IHN0eWxlKCkubGlzdFN0eWxlVHlwZSgpOwogICAgIGNvbnN0IFVDaGFyIHN1
ZmZpeCA9IGxpc3RNYXJrZXJTdWZmaXgodHlwZSwgbV9saXN0SXRlbS52YWx1ZSgpKTsKIAogICAg
IGlmIChzdWZmaXggPT0gJyAnKQpAQCAtMTc2Nyw3ICsxNzY3LDcgQEAgU3RyaW5nIFJlbmRlckxp
c3RNYXJrZXI6OnN1ZmZpeCgpIGNvbnN0CiAKIGJvb2wgUmVuZGVyTGlzdE1hcmtlcjo6aXNJbnNp
ZGUoKSBjb25zdAogewotICAgIHJldHVybiBtX2xpc3RJdGVtLm5vdEluTGlzdCgpIHx8IHN0eWxl
KCkubGlzdFN0eWxlUG9zaXRpb24oKSA9PSBJTlNJREU7CisgICAgcmV0dXJuIG1fbGlzdEl0ZW0u
bm90SW5MaXN0KCkgfHwgc3R5bGUoKS5saXN0U3R5bGVQb3NpdGlvbigpID09IExpc3RTdHlsZVBv
c2l0aW9uOjpJbnNpZGU7CiB9CiAKIEZsb2F0UmVjdCBSZW5kZXJMaXN0TWFya2VyOjpnZXRSZWxh
dGl2ZU1hcmtlclJlY3QoKQpAQCAtMTc3NiwxMTAgKzE3NzYsMTEwIEBAIEZsb2F0UmVjdCBSZW5k
ZXJMaXN0TWFya2VyOjpnZXRSZWxhdGl2ZU0KICAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgwLCAw
LCBtX2ltYWdlLT5pbWFnZVNpemUodGhpcywgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpLndpZHRo
KCksIG1faW1hZ2UtPmltYWdlU2l6ZSh0aGlzLCBzdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSkuaGVp
Z2h0KCkpOwogICAgIAogICAgIEZsb2F0UmVjdCByZWxhdGl2ZVJlY3Q7Ci0gICAgRUxpc3RTdHls
ZVR5cGUgdHlwZSA9IHN0eWxlKCkubGlzdFN0eWxlVHlwZSgpOworICAgIExpc3RTdHlsZVR5cGUg
dHlwZSA9IHN0eWxlKCkubGlzdFN0eWxlVHlwZSgpOwogICAgIHN3aXRjaCAodHlwZSkgewotICAg
ICAgICBjYXNlIEFzdGVyaXNrczoKLSAgICAgICAgY2FzZSBGb290bm90ZXM6IHsKLSAgICAgICAg
ICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpOwotICAg
ICAgICAgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihtX3Rl
eHQsIHN0eWxlKCkpOwotICAgICAgICAgICAgcmVsYXRpdmVSZWN0ID0gRmxvYXRSZWN0KDAsIDAs
IGZvbnQud2lkdGgocnVuKSwgZm9udC5mb250TWV0cmljcygpLmhlaWdodCgpKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgRGlzYzoKLSAgICAgICAgY2FzZSBD
aXJjbGU6Ci0gICAgICAgIGNhc2UgU3F1YXJlOiB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQXJl
IHRoZXNlIHBhcnRpY3VsYXIgcm91bmRpbmcgcnVsZXMgbmVjZXNzYXJ5PwotICAgICAgICAgICAg
Y29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gc3R5bGUoKS5mb250TWV0cmljcygpOwot
ICAgICAgICAgICAgaW50IGFzY2VudCA9IGZvbnRNZXRyaWNzLmFzY2VudCgpOwotICAgICAgICAg
ICAgaW50IGJ1bGxldFdpZHRoID0gKGFzY2VudCAqIDIgLyAzICsgMSkgLyAyOwotICAgICAgICAg
ICAgcmVsYXRpdmVSZWN0ID0gRmxvYXRSZWN0KDEsIDMgKiAoYXNjZW50IC0gYXNjZW50ICogMiAv
IDMpIC8gMiwgYnVsbGV0V2lkdGgsIGJ1bGxldFdpZHRoKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgICAgIGNhc2UgTm9uZUxpc3RTdHlsZToKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OkFzdGVyaXNrczoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkZvb3Rub3Rlczogewor
ICAgICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKTsK
KyAgICAgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihtX3Rl
eHQsIHN0eWxlKCkpOworICAgICAgICByZWxhdGl2ZVJlY3QgPSBGbG9hdFJlY3QoMCwgMCwgZm9u
dC53aWR0aChydW4pLCBmb250LmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCkpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEaXNjOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6Q2lyY2xlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6U3F1YXJlOiB7CisgICAg
ICAgIC8vIEZJWE1FOiBBcmUgdGhlc2UgcGFydGljdWxhciByb3VuZGluZyBydWxlcyBuZWNlc3Nh
cnk/CisgICAgICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlKCkuZm9u
dE1ldHJpY3MoKTsKKyAgICAgICAgaW50IGFzY2VudCA9IGZvbnRNZXRyaWNzLmFzY2VudCgpOwor
ICAgICAgICBpbnQgYnVsbGV0V2lkdGggPSAoYXNjZW50ICogMiAvIDMgKyAxKSAvIDI7CisgICAg
ICAgIHJlbGF0aXZlUmVjdCA9IEZsb2F0UmVjdCgxLCAzICogKGFzY2VudCAtIGFzY2VudCAqIDIg
LyAzKSAvIDIsIGJ1bGxldFdpZHRoLCBidWxsZXRXaWR0aCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok5vbmU6CisgICAgICAgIHJldHVybiBGbG9hdFJl
Y3QoKTsKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFmYXI6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpBbWhhcmljOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QW1oYXJpY0FiZWdlZGU6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBcmFiaWNJbmRpYzoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkFybWVuaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QmluYXJ5OgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6QmVuZ2FsaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNhbWJvZGlh
bjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNKS0lkZW9ncmFwaGljOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6Q2prRWFydGhseUJyYW5jaDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNq
a0hlYXZlbmx5U3RlbToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRlY2ltYWxMZWFkaW5nWmVy
bzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRlY2ltYWw6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpEZXZhbmFnYXJpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWM6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpFdGhpb3BpY0FiZWdlZGVBbUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9w
aWNBYmVnZWRlR2V6OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlVGlF
cjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZVRpRXQ6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lQWFFcjoKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVBYUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRo
aW9waWNIYWxlaGFtZUFtRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVo
YW1lR2V6OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZU9tRXQ6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lU2lkRXQ6CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lU29FdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkV0aGlvcGljSGFsZWhhbWVUaUVyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9w
aWNIYWxlaGFtZVRpRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1l
VGlnOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6R2VvcmdpYW46CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpHdWphcmF0aToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okd1cm11a2hpOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6SGFuZ3VsOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGFu
Z3VsQ29uc29uYW50OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGVicmV3OgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6SGlyYWdhbmE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIaXJhZ2Fu
YUlyb2hhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6S2FubmFkYToKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OkthdGFrYW5hOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6S2F0YWthbmFJcm9o
YToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OktobWVyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6TGFvOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJBbHBoYToKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6Okxvd2VyQXJtZW5pYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dl
ckdyZWVrOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJIZXhhZGVjaW1hbDoKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyTGF0aW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpM
b3dlck5vcndlZ2lhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyUm9tYW46CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpNYWxheWFsYW06CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpN
b25nb2xpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpNeWFubWFyOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6T2N0YWw6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpPcml5YToKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6Ok9yb21vOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6UGVyc2lh
bjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlNpZGFtYToKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OlNvbWFsaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRlbHVndToKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OlRoYWk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWJldGFuOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdy
aW55YUVyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmlueWFFckFiZWdlZGU6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55YUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
VGlncmlueWFFdEFiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckFscGhhOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJBcm1lbmlhbjoKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OlVwcGVyR3JlZWs6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckhleGFkZWNp
bWFsOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJMYXRpbjoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OlVwcGVyTm9yd2VnaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJS
b21hbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVyZHU6CisgICAgICAgIGlmIChtX3RleHQu
aXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOwotICAgICAgICBjYXNl
IEFmYXI6Ci0gICAgICAgIGNhc2UgQW1oYXJpYzoKLSAgICAgICAgY2FzZSBBbWhhcmljQWJlZ2Vk
ZToKLSAgICAgICAgY2FzZSBBcmFiaWNJbmRpYzoKLSAgICAgICAgY2FzZSBBcm1lbmlhbjoKLSAg
ICAgICAgY2FzZSBCaW5hcnlMaXN0U3R5bGU6Ci0gICAgICAgIGNhc2UgQmVuZ2FsaToKLSAgICAg
ICAgY2FzZSBDYW1ib2RpYW46Ci0gICAgICAgIGNhc2UgQ0pLSWRlb2dyYXBoaWM6Ci0gICAgICAg
IGNhc2UgQ2prRWFydGhseUJyYW5jaDoKLSAgICAgICAgY2FzZSBDamtIZWF2ZW5seVN0ZW06Ci0g
ICAgICAgIGNhc2UgRGVjaW1hbExlYWRpbmdaZXJvOgotICAgICAgICBjYXNlIERlY2ltYWxMaXN0
U3R5bGU6Ci0gICAgICAgIGNhc2UgRGV2YW5hZ2FyaToKLSAgICAgICAgY2FzZSBFdGhpb3BpYzoK
LSAgICAgICAgY2FzZSBFdGhpb3BpY0FiZWdlZGU6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNBYmVn
ZWRlQW1FdDoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVHZXo6Ci0gICAgICAgIGNhc2Ug
RXRoaW9waWNBYmVnZWRlVGlFcjoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVUaUV0Ogot
ICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVBYUVyOgotICAgICAgICBjYXNlIEV0aGlvcGlj
SGFsZWhhbWVBYUV0OgotICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVBbUV0OgotICAgICAg
ICBjYXNlIEV0aGlvcGljSGFsZWhhbWVHZXo6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFt
ZU9tRXQ6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVNpZEV0OgotICAgICAgICBjYXNl
IEV0aGlvcGljSGFsZWhhbWVTb0V0OgotICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVUaUVy
OgotICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVUaUV0OgotICAgICAgICBjYXNlIEV0aGlv
cGljSGFsZWhhbWVUaWc6Ci0gICAgICAgIGNhc2UgR2VvcmdpYW46Ci0gICAgICAgIGNhc2UgR3Vq
YXJhdGk6Ci0gICAgICAgIGNhc2UgR3VybXVraGk6Ci0gICAgICAgIGNhc2UgSGFuZ3VsOgotICAg
ICAgICBjYXNlIEhhbmd1bENvbnNvbmFudDoKLSAgICAgICAgY2FzZSBIZWJyZXc6Ci0gICAgICAg
IGNhc2UgSGlyYWdhbmE6Ci0gICAgICAgIGNhc2UgSGlyYWdhbmFJcm9oYToKLSAgICAgICAgY2Fz
ZSBLYW5uYWRhOgotICAgICAgICBjYXNlIEthdGFrYW5hOgotICAgICAgICBjYXNlIEthdGFrYW5h
SXJvaGE6Ci0gICAgICAgIGNhc2UgS2htZXI6Ci0gICAgICAgIGNhc2UgTGFvOgotICAgICAgICBj
YXNlIExvd2VyQWxwaGE6Ci0gICAgICAgIGNhc2UgTG93ZXJBcm1lbmlhbjoKLSAgICAgICAgY2Fz
ZSBMb3dlckdyZWVrOgotICAgICAgICBjYXNlIExvd2VySGV4YWRlY2ltYWw6Ci0gICAgICAgIGNh
c2UgTG93ZXJMYXRpbjoKLSAgICAgICAgY2FzZSBMb3dlck5vcndlZ2lhbjoKLSAgICAgICAgY2Fz
ZSBMb3dlclJvbWFuOgotICAgICAgICBjYXNlIE1hbGF5YWxhbToKLSAgICAgICAgY2FzZSBNb25n
b2xpYW46Ci0gICAgICAgIGNhc2UgTXlhbm1hcjoKLSAgICAgICAgY2FzZSBPY3RhbDoKLSAgICAg
ICAgY2FzZSBPcml5YToKLSAgICAgICAgY2FzZSBPcm9tbzoKLSAgICAgICAgY2FzZSBQZXJzaWFu
OgotICAgICAgICBjYXNlIFNpZGFtYToKLSAgICAgICAgY2FzZSBTb21hbGk6Ci0gICAgICAgIGNh
c2UgVGVsdWd1OgotICAgICAgICBjYXNlIFRoYWk6Ci0gICAgICAgIGNhc2UgVGliZXRhbjoKLSAg
ICAgICAgY2FzZSBUaWdyZToKLSAgICAgICAgY2FzZSBUaWdyaW55YUVyOgotICAgICAgICBjYXNl
IFRpZ3JpbnlhRXJBYmVnZWRlOgotICAgICAgICBjYXNlIFRpZ3JpbnlhRXQ6Ci0gICAgICAgIGNh
c2UgVGlncmlueWFFdEFiZWdlZGU6Ci0gICAgICAgIGNhc2UgVXBwZXJBbHBoYToKLSAgICAgICAg
Y2FzZSBVcHBlckFybWVuaWFuOgotICAgICAgICBjYXNlIFVwcGVyR3JlZWs6Ci0gICAgICAgIGNh
c2UgVXBwZXJIZXhhZGVjaW1hbDoKLSAgICAgICAgY2FzZSBVcHBlckxhdGluOgotICAgICAgICBj
YXNlIFVwcGVyTm9yd2VnaWFuOgotICAgICAgICBjYXNlIFVwcGVyUm9tYW46Ci0gICAgICAgIGNh
c2UgVXJkdToKLSAgICAgICAgICAgIGlmIChtX3RleHQuaXNFbXB0eSgpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBGbG9hdFJlY3QoKTsKLSAgICAgICAgICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBm
b250ID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpOwotICAgICAgICAgICAgVGV4dFJ1biBydW4gPSBS
ZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihtX3RleHQsIHN0eWxlKCkpOwotICAgICAgICAg
ICAgZmxvYXQgaXRlbVdpZHRoID0gZm9udC53aWR0aChydW4pOwotICAgICAgICAgICAgVUNoYXIg
c3VmZml4U3BhY2VbMl0gPSB7IGxpc3RNYXJrZXJTdWZmaXgodHlwZSwgbV9saXN0SXRlbS52YWx1
ZSgpKSwgJyAnIH07Ci0gICAgICAgICAgICBmbG9hdCBzdWZmaXhTcGFjZVdpZHRoID0gZm9udC53
aWR0aChSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihzdWZmaXhTcGFjZSwgMiwgc3R5bGUo
KSkpOwotICAgICAgICAgICAgcmVsYXRpdmVSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIGl0ZW1XaWR0
aCArIHN1ZmZpeFNwYWNlV2lkdGgsIGZvbnQuZm9udE1ldHJpY3MoKS5oZWlnaHQoKSk7CisgICAg
ICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpOworICAg
ICAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKG1fdGV4dCwg
c3R5bGUoKSk7CisgICAgICAgIGZsb2F0IGl0ZW1XaWR0aCA9IGZvbnQud2lkdGgocnVuKTsKKyAg
ICAgICAgVUNoYXIgc3VmZml4U3BhY2VbMl0gPSB7IGxpc3RNYXJrZXJTdWZmaXgodHlwZSwgbV9s
aXN0SXRlbS52YWx1ZSgpKSwgJyAnIH07CisgICAgICAgIGZsb2F0IHN1ZmZpeFNwYWNlV2lkdGgg
PSBmb250LndpZHRoKFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHN1ZmZpeFNwYWNlLCAy
LCBzdHlsZSgpKSk7CisgICAgICAgIHJlbGF0aXZlUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCBpdGVt
V2lkdGggKyBzdWZmaXhTcGFjZVdpZHRoLCBmb250LmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCkpOwog
ICAgIH0KIAogICAgIGlmICghc3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgJKHJldmlz
aW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2Vy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBSZW5kZXJMaXN0SXRlbTsKIAotU3RyaW5nIGxpc3RNYXJrZXJUZXh0KEVMaXN0U3R5
bGVUeXBlLCBpbnQgdmFsdWUpOworU3RyaW5nIGxpc3RNYXJrZXJUZXh0KExpc3RTdHlsZVR5cGUs
IGludCB2YWx1ZSk7CiAKIC8vIFVzZWQgdG8gcmVuZGVyIHRoZSBsaXN0IGl0ZW0ncyBtYXJrZXIu
CiAvLyBUaGUgUmVuZGVyTGlzdE1hcmtlciBhbHdheXMgaGFzIHRvIGJlIGEgY2hpbGQgb2YgYSBS
ZW5kZXJMaXN0SXRlbS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRp
YUNvbnRyb2xFbGVtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCB2b2lkIFJlbmRlck1lZGlhVm9sdW1lU2xp
ZGVyQ29udGFpbmVyOjpsCiB7CiAgICAgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXQoKTsKIAotICAg
IGlmIChzdHlsZSgpLmRpc3BsYXkoKSA9PSBOT05FIHx8ICFpczxSZW5kZXJCb3g+KG5leHRTaWJs
aW5nKCkpKQorICAgIGlmIChzdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSB8
fCAhaXM8UmVuZGVyQm94PihuZXh0U2libGluZygpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
UmVuZGVyQm94JiBidXR0b25Cb3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KCpuZXh0U2libGluZygp
KTsKQEAgLTk4LDcgKzk4LDcgQEAgUmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6UmVu
ZGVyVAogdm9pZCBSZW5kZXJUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpsYXlvdXQoKQogewog
ICAgIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0KCk7Ci0gICAgaWYgKHN0eWxlKCkuZGlzcGxheSgp
ID09IE5PTkUpCisgICAgaWYgKHN0eWxlKCkuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpOb25l
KQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQobWVkaWFDb250cm9sRWxlbWVudFR5cGUo
ZWxlbWVudCgpKSA9PSBNZWRpYVRleHRUcmFja0Rpc3BsYXlDb250YWluZXIpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCShyZXZpc2lvbiAyMzIx
NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjcsMTIgKzEyNywxMiBAQCB2b2lkIFJlbmRlck1lbnVMaXN0OjphZGp1
c3RJbm5lclN0eWxlKCkKICAgICBpZiAoZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLnNlbGVj
dEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCkpIHsKICAgICAgICAgLy8gSXRlbXMgaW4g
dGhlIHBvcHVwIHdpbGwgbm90IHJlc3BlY3QgdGhlIENTUyB0ZXh0LWFsaWduIGFuZCBkaXJlY3Rp
b24gcHJvcGVydGllcywKICAgICAgICAgLy8gc28gd2UgbXVzdCBhZGp1c3Qgb3VyIG93biBzdHls
ZSB0byBtYXRjaC4KLSAgICAgICAgaW5uZXJTdHlsZS5zZXRUZXh0QWxpZ24oTEVGVCk7CisgICAg
ICAgIGlubmVyU3R5bGUuc2V0VGV4dEFsaWduKFRleHRBbGlnbk1vZGU6OkxlZnQpOwogICAgICAg
ICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IChtX2J1dHRvblRleHQgJiYgbV9idXR0b25UZXh0
LT50ZXh0KCkuZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oKSA9PSBVX1JJR0hUX1RPX0xFRlQpID8g
UlRMIDogTFRSOwogICAgICAgICBpbm5lclN0eWxlLnNldERpcmVjdGlvbihkaXJlY3Rpb24pOwog
I2lmIFBMQVRGT1JNKElPUykKICAgICB9IGVsc2UgaWYgKGRvY3VtZW50KCkucGFnZSgpLT5jaHJv
bWUoKS5zZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01lbnVXcml0aW5nRGlyZWN0aW9uKCkpIHsK
LSAgICAgICAgaW5uZXJTdHlsZS5zZXRUZXh0QWxpZ24oc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBM
VFIgPyBMRUZUIDogUklHSFQpOworICAgICAgICBpbm5lclN0eWxlLnNldFRleHRBbGlnbihzdHls
ZSgpLmRpcmVjdGlvbigpID09IExUUiA/IFRleHRBbGlnbk1vZGU6OkxlZnQgOiBUZXh0QWxpZ25N
b2RlOjpSaWdodCk7CiAgICAgICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uOwogICAgICAgICBF
VW5pY29kZUJpZGkgdW5pY29kZUJpZGk7CiAgICAgICAgIGlmIChtdWx0aXBsZSgpICYmIHNlbGVj
dGVkT3B0aW9uQ291bnQoKnRoaXMpICE9IDEpIHsKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIFJl
bmRlck1lbnVMaXN0OjphZGp1c3RJbm5lclN0eWxlKCkKICAgICB9IGVsc2UgaWYgKG1fb3B0aW9u
U3R5bGUgJiYgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLnNlbGVjdEl0ZW1BbGlnbm1lbnRG
b2xsb3dzTWVudVdyaXRpbmdEaXJlY3Rpb24oKSkgewogICAgICAgICBpZiAoKG1fb3B0aW9uU3R5
bGUtPmRpcmVjdGlvbigpICE9IGlubmVyU3R5bGUuZGlyZWN0aW9uKCkgfHwgbV9vcHRpb25TdHls
ZS0+dW5pY29kZUJpZGkoKSAhPSBpbm5lclN0eWxlLnVuaWNvZGVCaWRpKCkpKQogICAgICAgICAg
ICAgbV9pbm5lckJsb2NrLT5zZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKLSAg
ICAgICAgaW5uZXJTdHlsZS5zZXRUZXh0QWxpZ24oc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKCkgPyBMRUZUIDogUklHSFQpOworICAgICAgICBpbm5lclN0eWxlLnNldFRleHRBbGlnbihz
dHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IFRleHRBbGlnbk1vZGU6OkxlZnQgOiBU
ZXh0QWxpZ25Nb2RlOjpSaWdodCk7CiAgICAgICAgIGlubmVyU3R5bGUuc2V0RGlyZWN0aW9uKG1f
b3B0aW9uU3R5bGUtPmRpcmVjdGlvbigpKTsKICAgICAgICAgaW5uZXJTdHlsZS5zZXRVbmljb2Rl
QmlkaShtX29wdGlvblN0eWxlLT51bmljb2RlQmlkaSgpKTsKICAgICB9CkBAIC01MDcsOCArNTA3
LDggQEAgUG9wdXBNZW51U3R5bGUgUmVuZGVyTWVudUxpc3Q6Oml0ZW1TdHlsZQogICAgIGdldEl0
ZW1CYWNrZ3JvdW5kQ29sb3IobGlzdEluZGV4LCBpdGVtQmFja2dyb3VuZENvbG9yLCBpdGVtSGFz
Q3VzdG9tQmFja2dyb3VuZENvbG9yKTsKIAogICAgIGF1dG8mIHN0eWxlID0gKmVsZW1lbnQtPmNv
bXB1dGVkU3R5bGUoKTsKLSAgICByZXR1cm4gUG9wdXBNZW51U3R5bGUoc3R5bGUudmlzaXRlZERl
cGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5Q29sb3IpLCBpdGVtQmFja2dy
b3VuZENvbG9yLCBzdHlsZS5mb250Q2FzY2FkZSgpLCBzdHlsZS52aXNpYmlsaXR5KCkgPT0gVklT
SUJMRSwKLSAgICAgICAgc3R5bGUuZGlzcGxheSgpID09IE5PTkUsIHRydWUsIHN0eWxlLnRleHRJ
bmRlbnQoKSwgc3R5bGUuZGlyZWN0aW9uKCksIGlzT3ZlcnJpZGUoc3R5bGUudW5pY29kZUJpZGko
KSksCisgICAgcmV0dXJuIFBvcHVwTWVudVN0eWxlKHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xv
cldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eUNvbG9yKSwgaXRlbUJhY2tncm91bmRDb2xvciwg
c3R5bGUuZm9udENhc2NhZGUoKSwgc3R5bGUudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZp
c2libGUsCisgICAgICAgIHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSwgdHJ1
ZSwgc3R5bGUudGV4dEluZGVudCgpLCBzdHlsZS5kaXJlY3Rpb24oKSwgaXNPdmVycmlkZShzdHls
ZS51bmljb2RlQmlkaSgpKSwKICAgICAgICAgaXRlbUhhc0N1c3RvbUJhY2tncm91bmRDb2xvciA/
IFBvcHVwTWVudVN0eWxlOjpDdXN0b21CYWNrZ3JvdW5kQ29sb3IgOiBQb3B1cE1lbnVTdHlsZTo6
RGVmYXVsdEJhY2tncm91bmRDb2xvcik7CiB9CiAKQEAgLTU0Niw3ICs1NDYsNyBAQCBQb3B1cE1l
bnVTdHlsZSBSZW5kZXJNZW51TGlzdDo6bWVudVN0eWxlCiAgICAgY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlVG9Vc2UgPSBtX2lubmVyQmxvY2sgPyBtX2lubmVyQmxvY2stPnN0eWxlKCkgOiBzdHls
ZSgpOwogICAgIEludFJlY3QgYWJzQm91bmRzID0gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25v
cmluZ1RyYW5zZm9ybXMoKTsKICAgICByZXR1cm4gUG9wdXBNZW51U3R5bGUoc3R5bGVUb1VzZS52
aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlDb2xvciksIHN0
eWxlVG9Vc2UudmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5
QmFja2dyb3VuZENvbG9yKSwKLSAgICAgICAgc3R5bGVUb1VzZS5mb250Q2FzY2FkZSgpLCBzdHls
ZVRvVXNlLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFLCBzdHlsZVRvVXNlLmRpc3BsYXkoKSA9PSBO
T05FLAorICAgICAgICBzdHlsZVRvVXNlLmZvbnRDYXNjYWRlKCksIHN0eWxlVG9Vc2UudmlzaWJp
bGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUsIHN0eWxlVG9Vc2UuZGlzcGxheSgpID09IERp
c3BsYXlUeXBlOjpOb25lLAogICAgICAgICBzdHlsZSgpLmhhc0FwcGVhcmFuY2UoKSAmJiBzdHls
ZSgpLmFwcGVhcmFuY2UoKSA9PSBNZW51bGlzdFBhcnQsIHN0eWxlVG9Vc2UudGV4dEluZGVudCgp
LAogICAgICAgICBzdHlsZSgpLmRpcmVjdGlvbigpLCBpc092ZXJyaWRlKHN0eWxlKCkudW5pY29k
ZUJpZGkoKSksIFBvcHVwTWVudVN0eWxlOjpEZWZhdWx0QmFja2dyb3VuZENvbG9yLAogICAgICAg
ICBQb3B1cE1lbnVTdHlsZTo6U2VsZWN0UG9wdXAsIHRoZW1lKCkucG9wdXBNZW51U2l6ZShzdHls
ZVRvVXNlLCBhYnNCb3VuZHMpKTsKQEAgLTU1OSw3ICs1NTksNyBAQCBIb3N0V2luZG93KiBSZW5k
ZXJNZW51TGlzdDo6aG9zdFdpbmRvdygpCiAKIFJlZjxTY3JvbGxiYXI+IFJlbmRlck1lbnVMaXN0
OjpjcmVhdGVTY3JvbGxiYXIoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBTY3JvbGxi
YXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNp
emUpCiB7Ci0gICAgYm9vbCBoYXNDdXN0b21TY3JvbGxiYXJTdHlsZSA9IHN0eWxlKCkuaGFzUHNl
dWRvU3R5bGUoU0NST0xMQkFSKTsKKyAgICBib29sIGhhc0N1c3RvbVNjcm9sbGJhclN0eWxlID0g
c3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6U2Nyb2xsYmFyKTsKICAgICBpZiAoaGFz
Q3VzdG9tU2Nyb2xsYmFyU3R5bGUpCiAgICAgICAgIHJldHVybiBSZW5kZXJTY3JvbGxiYXI6OmNy
ZWF0ZUN1c3RvbVNjcm9sbGJhcihzY3JvbGxhYmxlQXJlYSwgb3JpZW50YXRpb24sICZzZWxlY3RF
bGVtZW50KCkpOwogICAgIHJldHVybiBTY3JvbGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcihz
Y3JvbGxhYmxlQXJlYSwgb3JpZW50YXRpb24sIGNvbnRyb2xTaXplKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1u
U3Bhbm5lclBsYWNlaG9sZGVyLmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwo
UmVuZGVyTXVsdGlDCiAKIFJlbmRlclB0cjxSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhv
bGRlcj4gUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXI6OmNyZWF0ZUFub255bW91
cyhSZW5kZXJNdWx0aUNvbHVtbkZsb3cmIGZyYWdtZW50ZWRGbG93LCBSZW5kZXJCb3gmIHNwYW5u
ZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSkKIHsKLSAgICBhdXRvIG5ld1N0eWxl
ID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50U3R5
bGUsIEJMT0NLKTsKKyAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255
bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50U3R5bGUsIERpc3BsYXlUeXBlOjpCbG9jayk7CiAg
ICAgbmV3U3R5bGUuc2V0Q2xlYXIoQ2xlYXI6OkJvdGgpOyAvLyBXZSBkb24ndCB3YW50IGZsb2F0
cyBpbiB0aGUgcm93IHByZWNlZGluZyB0aGUgc3Bhbm5lciB0byBjb250aW51ZSBvbiB0aGUgb3Ro
ZXIgc2lkZS4KICAgICBhdXRvIHBsYWNlaG9sZGVyID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTXVs
dGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXI+KGZyYWdtZW50ZWRGbG93LCBzcGFubmVyLCBXVEZN
b3ZlKG5ld1N0eWxlKSk7CiAgICAgcGxhY2Vob2xkZXItPmluaXRpYWxpemVTdHlsZSgpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDIz
MjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTc0LDcgKzE1NzQsNyBAQCBpbnQgUmVuZGVyT2JqZWN0Ojppbm5lckxp
bmVIZWlnaHQoKSBjb25zCiB2b2lkIFJlbmRlck9iamVjdDo6YWRkQW5ub3RhdGVkUmVnaW9ucyhW
ZWN0b3I8QW5ub3RhdGVkUmVnaW9uVmFsdWU+JiByZWdpb25zKQogewogICAgIC8vIENvbnZlcnQg
dGhlIHN0eWxlIHJlZ2lvbnMgdG8gYWJzb2x1dGUgY29vcmRpbmF0ZXMuCi0gICAgaWYgKHN0eWxl
KCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgIWlzPFJlbmRlckJveD4oKnRoaXMpKQorICAg
IGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlIHx8ICFpczxS
ZW5kZXJCb3g+KCp0aGlzKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGF1dG8mIGJveCA9
IGRvd25jYXN0PFJlbmRlckJveD4oKnRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MDcsOSArNDA3LDkgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBrZXB0IGluIHN5bmMg
d2l0aCBhbm9ueW1vdXMgYmxvY2sgY3JlYXRpb24gY29uZGl0aW9ucyBpbgogICAgICAgICAvLyBS
ZW5kZXJCbG9jazo6Y3JlYXRlQW5vbnltb3VzQmxvY2soKS4gVGhpcyBpbmNsdWRlcyBjcmVhdGlu
ZyBhbiBhbm9ueW1vdXMKLSAgICAgICAgLy8gUmVuZGVyQmxvY2sgaGF2aW5nIGEgQkxPQ0sgb3Ig
Qk9YIGRpc3BsYXkuIE90aGVyIGNsYXNzZXMgc3VjaCBhcyBSZW5kZXJUZXh0RnJhZ21lbnQKKyAg
ICAgICAgLy8gUmVuZGVyQmxvY2sgaGF2aW5nIGEgRGlzcGxheVR5cGU6OkJsb2NrIG9yIERpc3Bs
YXlUeXBlOjpCb3ggZGlzcGxheS4gT3RoZXIgY2xhc3NlcyBzdWNoIGFzIFJlbmRlclRleHRGcmFn
bWVudAogICAgICAgICAvLyBhcmUgbm90IFJlbmRlckJsb2NrcyBhbmQgd2lsbCByZXR1cm4gZmFs
c2UuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY3MDkuIAot
ICAgICAgICByZXR1cm4gaXNBbm9ueW1vdXMoKSAmJiAoc3R5bGUoKS5kaXNwbGF5KCkgPT0gQkxP
Q0sgfHwgc3R5bGUoKS5kaXNwbGF5KCkgPT0gQk9YKSAmJiBzdHlsZSgpLnN0eWxlVHlwZSgpID09
IE5PUFNFVURPICYmIGlzUmVuZGVyQmxvY2soKSAmJiAhaXNMaXN0TWFya2VyKCkgJiYgIWlzUmVu
ZGVyRnJhZ21lbnRlZEZsb3coKSAmJiAhaXNSZW5kZXJNdWx0aUNvbHVtblNldCgpICYmICFpc1Jl
bmRlclZpZXcoKQorICAgICAgICByZXR1cm4gaXNBbm9ueW1vdXMoKSAmJiAoc3R5bGUoKS5kaXNw
bGF5KCkgPT0gRGlzcGxheVR5cGU6OkJsb2NrIHx8IHN0eWxlKCkuZGlzcGxheSgpID09IERpc3Bs
YXlUeXBlOjpCb3gpICYmIHN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6Ok5vbmUgJiYg
aXNSZW5kZXJCbG9jaygpICYmICFpc0xpc3RNYXJrZXIoKSAmJiAhaXNSZW5kZXJGcmFnbWVudGVk
RmxvdygpICYmICFpc1JlbmRlck11bHRpQ29sdW1uU2V0KCkgJiYgIWlzUmVuZGVyVmlldygpCiAj
aWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgICAgICAgICAgJiYgIWlzUmVuZGVyRnVsbFNj
cmVlbigpCiAgICAgICAgICAgICAmJiAhaXNSZW5kZXJGdWxsU2NyZWVuUGxhY2Vob2xkZXIoKQpA
QCAtMTAyMyw3ICsxMDIzLDcgQEAgaW5saW5lIGJvb2wgUmVuZGVyT2JqZWN0Ojppc0JlZm9yZUNv
bnRlbgogICAgIC8vIFRleHQgbm9kZXMgZG9uJ3QgaGF2ZSB0aGVpciBvd24gc3R5bGVzLCBzbyBp
Z25vcmUgdGhlIHN0eWxlIG9uIGEgdGV4dCBub2RlLgogICAgIGlmIChpc1RleHQoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChzdHlsZSgpLnN0eWxlVHlwZSgpICE9IEJFRk9SRSkK
KyAgICBpZiAoc3R5bGUoKS5zdHlsZVR5cGUoKSAhPSBQc2V1ZG9JZDo6QmVmb3JlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMDMzLDcgKzEwMzMsNyBA
QCBpbmxpbmUgYm9vbCBSZW5kZXJPYmplY3Q6OmlzQWZ0ZXJDb250ZW50CiAgICAgLy8gVGV4dCBu
b2RlcyBkb24ndCBoYXZlIHRoZWlyIG93biBzdHlsZXMsIHNvIGlnbm9yZSB0aGUgc3R5bGUgb24g
YSB0ZXh0IG5vZGUuCiAgICAgaWYgKGlzVGV4dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgaWYgKHN0eWxlKCkuc3R5bGVUeXBlKCkgIT0gQUZURVIpCisgICAgaWYgKHN0eWxlKCkuc3R5
bGVUeXBlKCkgIT0gUHNldWRvSWQ6OkFmdGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
cmV0dXJuIHRydWU7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVw
bGFjZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
ZXBsYWNlZC5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSZXBsYWNlZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Miw3ICsyNDIsNyBAQCBi
b29sIFJlbmRlclJlcGxhY2VkOjpzaG91bGRQYWludChQYWludEluCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgCiAgICAgLy8gaWYgd2UncmUgaW52aXNpYmxlIG9yIGhhdmVuJ3QgcmVj
ZWl2ZWQgYSBsYXlvdXQgeWV0LCB0aGVuIGp1c3QgYmFpbC4KLSAgICBpZiAoc3R5bGUoKS52aXNp
YmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlz
aWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIExheW91
dFBvaW50IGFkanVzdGVkUGFpbnRPZmZzZXQgPSBwYWludE9mZnNldCArIGxvY2F0aW9uKCk7CkBA
IC02NjcsNyArNjY3LDcgQEAgYm9vbCBSZW5kZXJSZXBsYWNlZDo6aXNTZWxlY3RlZCgpIGNvbnN0
CiAKIExheW91dFJlY3QgUmVuZGVyUmVwbGFjZWQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBh
aW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0
CiB7Ci0gICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgJiYgIWVuY2xvc2lu
Z0xheWVyKCktPmhhc1Zpc2libGVDb250ZW50KCkpCisgICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0
eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgJiYgIWVuY2xvc2luZ0xheWVyKCktPmhhc1Zpc2li
bGVDb250ZW50KCkpCiAgICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CiAKICAgICAvLyBUaGUg
c2VsZWN0aW9uUmVjdCBjYW4gcHJvamVjdCBvdXRzaWRlIG9mIHRoZSBvdmVyZmxvd1JlY3QsIHNv
IHRha2UgdGhlaXIgdW5pb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
dWJ5QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJ1YnlCYXNlLmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJ1YnlCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsOSArNjAsOSBAQCBS
ZW5kZXJSdWJ5UnVuKiBSZW5kZXJSdWJ5QmFzZTo6cnVieVJ1bigpCiAgICAgcmV0dXJuIGRvd25j
YXN0PFJlbmRlclJ1YnlSdW4+KHBhcmVudCgpKTsKIH0KIAotRVRleHRBbGlnbiBSZW5kZXJSdWJ5
QmFzZTo6dGV4dEFsaWdubWVudEZvckxpbmUoYm9vbCAvKiBlbmRzV2l0aFNvZnRCcmVhayAqLykg
Y29uc3QKK1RleHRBbGlnbk1vZGUgUmVuZGVyUnVieUJhc2U6OnRleHRBbGlnbm1lbnRGb3JMaW5l
KGJvb2wgLyogZW5kc1dpdGhTb2Z0QnJlYWsgKi8pIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEpVU1RJ
Rlk7CisgICAgcmV0dXJuIFRleHRBbGlnbk1vZGU6Okp1c3RpZnk7CiB9CiAKIHZvaWQgUmVuZGVy
UnVieUJhc2U6OmFkanVzdElubGluZURpcmVjdGlvbkxpbmVCb3VuZHMoaW50IGV4cGFuc2lvbk9w
cG9ydHVuaXR5Q291bnQsIGZsb2F0JiBsb2dpY2FsTGVmdCwgZmxvYXQmIGxvZ2ljYWxXaWR0aCkg
Y29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5oCShy
ZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJh
c2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIGJvb2wgaXNSdWJ5QmFzZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAg
ICBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0
eWxlJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgRVRleHRBbGlnbiB0ZXh0QWxpZ25tZW50Rm9yTGlu
ZShib29sIGVuZHNXaXRoU29mdEJyZWFrKSBjb25zdCBvdmVycmlkZTsKKyAgICBUZXh0QWxpZ25N
b2RlIHRleHRBbGlnbm1lbnRGb3JMaW5lKGJvb2wgZW5kc1dpdGhTb2Z0QnJlYWspIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZvaWQgYWRqdXN0SW5saW5lRGlyZWN0aW9uTGluZUJvdW5kcyhpbnQgZXhw
YW5zaW9uT3Bwb3J0dW5pdHlDb3VudCwgZmxvYXQmIGxvZ2ljYWxMZWZ0LCBmbG9hdCYgbG9naWNh
bFdpZHRoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGZsb2F0IG1faW5pdGlhbE9mZnNldDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHAJKHJldmlzaW9u
IDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTksOCArOTksOCBAQCBib29sIFJlbmRlclJ1YnlSdW46OmlzQ2hp
bGRBbGxvd2VkKGNvbnN0CiAKIFJlbmRlclB0cjxSZW5kZXJSdWJ5QmFzZT4gUmVuZGVyUnVieVJ1
bjo6Y3JlYXRlUnVieUJhc2UoKSBjb25zdAogewotICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJT
dHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSgpLCBCTE9DSyk7Ci0g
ICAgbmV3U3R5bGUuc2V0VGV4dEFsaWduKENFTlRFUik7IC8vIEZJWE1FOiB1c2UgV0VCS0lUX0NF
TlRFUj8KKyAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0
eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwgRGlzcGxheVR5cGU6OkJsb2NrKTsKKyAgICBuZXdTdHls
ZS5zZXRUZXh0QWxpZ24oVGV4dEFsaWduTW9kZTo6Q2VudGVyKTsgLy8gRklYTUU6IHVzZSBUZXh0
QWxpZ25Nb2RlOjpXZWJLaXRDZW50ZXI/CiAgICAgYXV0byByZW5kZXJlciA9IGNyZWF0ZVJlbmRl
cmVyPFJlbmRlclJ1YnlCYXNlPihkb2N1bWVudCgpLCBXVEZNb3ZlKG5ld1N0eWxlKSk7CiAgICAg
cmVuZGVyZXItPmluaXRpYWxpemVTdHlsZSgpOwogICAgIHJldHVybiByZW5kZXJlcjsKQEAgLTEw
OSw3ICsxMDksNyBAQCBSZW5kZXJQdHI8UmVuZGVyUnVieUJhc2U+IFJlbmRlclJ1YnlSdW46CiBS
ZW5kZXJQdHI8UmVuZGVyUnVieVJ1bj4gUmVuZGVyUnVieVJ1bjo6c3RhdGljQ3JlYXRlUnVieVJ1
bihjb25zdCBSZW5kZXJPYmplY3QqIHBhcmVudFJ1YnkpCiB7CiAgICAgQVNTRVJUKGlzUnVieShw
YXJlbnRSdWJ5KSk7Ci0gICAgYXV0byByZW5kZXJlciA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclJ1
YnlSdW4+KHBhcmVudFJ1YnktPmRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1v
dXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudFJ1YnktPnN0eWxlKCksIElOTElORV9CTE9DSykpOwor
ICAgIGF1dG8gcmVuZGVyZXIgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJSdWJ5UnVuPihwYXJlbnRS
dWJ5LT5kb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlz
cGxheShwYXJlbnRSdWJ5LT5zdHlsZSgpLCBEaXNwbGF5VHlwZTo6SW5saW5lQmxvY2spKTsKICAg
ICByZW5kZXJlci0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAgcmV0dXJuIHJlbmRlcmVyOwogfQpA
QCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgUmVuZGVyUnVieVJ1bjo6bGF5b3V0QmxvY2soYm9vbCBy
ZWwKICAgICAgICAgLy8gU2luY2UgdGhlIGV4dHJhIHJlbGF5b3V0IGluIFJlbmRlckJsb2NrRmxv
dzo6dXBkYXRlUnVieUZvckp1c3RpZmllZFRleHQoKSBjYXVzZXMgdGhlIHNpemUgb2YgdGhlIFJl
bmRlclJ1YnlUZXh0L1JlbmRlclJ1YnlCYXNlCiAgICAgICAgIC8vIGRlcGVuZGVudCBvbiB0aGUg
bGluZSdzIGN1cnJlbnQgZXhwYW5zaW9uLCB3aGVuZXZlciB3ZSByZWxheW91dCB0aGUgUmVuZGVy
UnVieVJ1biwgd2UgbmVlZCB0byByZWxheW91dCB0aGUgUmVuZGVyUnVieUJhc2UvUmVuZGVyUnVi
eVRleHQgYXMgd2VsbC4KICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0YWtlIHRoZSBleHBh
bnNpb24gb3Bwb3J0dW5pdGllcyBpbnRvIGFjY291bnQgaWYgcG9zc2libGUuCi0gICAgICAgIHJl
bGF5b3V0Q2hpbGRyZW4gPSBzdHlsZSgpLnRleHRBbGlnbigpID09IEpVU1RJRlk7CisgICAgICAg
IHJlbGF5b3V0Q2hpbGRyZW4gPSBzdHlsZSgpLnRleHRBbGlnbigpID09IFRleHRBbGlnbk1vZGU6
Okp1c3RpZnk7CiAgICAgfQogCiAgICAgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRCbG9jayhyZWxh
eW91dENoaWxkcmVuLCBwYWdlSGVpZ2h0KTsKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFJlbmRl
clJ1YnlSdW46OmxheW91dEJsb2NrKGJvb2wgcmVsCiAgICAgICAgIGxhc3RMaW5lUnVieVRleHRC
b3R0b20gPSByb290Qm94LT5sb2dpY2FsQm90dG9tTGF5b3V0T3ZlcmZsb3coKTsKICAgICB9CiAg
ICAgCi0gICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgJiYgcnQtPnN0eWxlKCkucnVi
eVBvc2l0aW9uKCkgPT0gUnVieVBvc2l0aW9uSW50ZXJDaGFyYWN0ZXIpIHsKKyAgICBpZiAoaXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSAmJiBydC0+c3R5bGUoKS5ydWJ5UG9zaXRpb24oKSA9PSBS
dWJ5UG9zaXRpb246OkludGVyQ2hhcmFjdGVyKSB7CiAgICAgICAgIC8vIEJvcG9tb2ZvLiBXZSBu
ZWVkIHRvIG1vdmUgdGhlIFJlbmRlclJ1YnlUZXh0IG92ZXIgdG8gdGhlIHJpZ2h0IHNpZGUgYW5k
IGNlbnRlciBpdAogICAgICAgICAvLyB2ZXJ0aWNhbGx5IHJlbGF0aXZlIHRvIHRoZSBiYXNlLgog
ICAgICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKTsK
QEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIFJlbmRlclJ1YnlSdW46OmxheW91dEJsb2NrKGJvb2wg
cmVsCiAgICAgICAgICAgICBMYXlvdXRVbml0IGV4dGVudCA9IGxhc3RMaW5lQm90dG9tIC0gZmly
c3RMaW5lVG9wOwogICAgICAgICAgICAgcnQtPnNldFkoZmlyc3RMaW5lVG9wICsgKGV4dGVudCAt
IHJ0LT5oZWlnaHQoKSkgLyAyKTsKICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoc3R5bGUoKS5p
c0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkgPT0gKHN0eWxlKCkucnVieVBvc2l0aW9uKCkgPT0g
UnVieVBvc2l0aW9uQWZ0ZXIpKSB7CisgICAgfSBlbHNlIGlmIChzdHlsZSgpLmlzRmxpcHBlZExp
bmVzV3JpdGluZ01vZGUoKSA9PSAoc3R5bGUoKS5ydWJ5UG9zaXRpb24oKSA9PSBSdWJ5UG9zaXRp
b246OkFmdGVyKSkgewogICAgICAgICBMYXlvdXRVbml0IGZpcnN0TGluZVRvcCA9IDA7CiAgICAg
ICAgIGlmIChSZW5kZXJSdWJ5QmFzZSogcmIgPSBydWJ5QmFzZSgpKSB7CiAgICAgICAgICAgICBS
b290SW5saW5lQm94KiByb290Qm94ID0gcmItPmZpcnN0Um9vdEJveCgpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuY3BwCShyZXZpc2lvbiAyMzIxNDMp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NywyMCArNTcsMjAgQEAgYm9vbCBSZW5kZXJSdWJ5VGV4dDo6aXNDaGlsZEFs
bG93ZWQoY29ucwogICAgIHJldHVybiBjaGlsZC5pc0lubGluZSgpOwogfQogCi1FVGV4dEFsaWdu
IFJlbmRlclJ1YnlUZXh0Ojp0ZXh0QWxpZ25tZW50Rm9yTGluZShib29sIGVuZHNXaXRoU29mdEJy
ZWFrKSBjb25zdAorVGV4dEFsaWduTW9kZSBSZW5kZXJSdWJ5VGV4dDo6dGV4dEFsaWdubWVudEZv
ckxpbmUoYm9vbCBlbmRzV2l0aFNvZnRCcmVhaykgY29uc3QKIHsKLSAgICBFVGV4dEFsaWduIHRl
eHRBbGlnbiA9IHN0eWxlKCkudGV4dEFsaWduKCk7CisgICAgVGV4dEFsaWduTW9kZSB0ZXh0QWxp
Z24gPSBzdHlsZSgpLnRleHRBbGlnbigpOwogICAgIC8vIEZJWE1FOiBUaGlzIGNoZWNrIGlzIGJv
Z3VzIHNpbmNlIHVzZXIgY2FuIHNldCB0aGUgaW5pdGlhbCB2YWx1ZS4KICAgICBpZiAodGV4dEFs
aWduICE9IFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEFsaWduKCkpCiAgICAgICAgIHJldHVybiBS
ZW5kZXJCbG9ja0Zsb3c6OnRleHRBbGlnbm1lbnRGb3JMaW5lKGVuZHNXaXRoU29mdEJyZWFrKTsK
IAogICAgIC8vIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGlzIHRvIGFsbG93IHJ1YnkgdGV4dCB0byBl
eHBhbmQgaWYgaXQgaXMgc2hvcnRlciB0aGFuIHRoZSBydWJ5IGJhc2UuCi0gICAgcmV0dXJuIEpV
U1RJRlk7CisgICAgcmV0dXJuIFRleHRBbGlnbk1vZGU6Okp1c3RpZnk7CiB9CiAKIHZvaWQgUmVu
ZGVyUnVieVRleHQ6OmFkanVzdElubGluZURpcmVjdGlvbkxpbmVCb3VuZHMoaW50IGV4cGFuc2lv
bk9wcG9ydHVuaXR5Q291bnQsIGZsb2F0JiBsb2dpY2FsTGVmdCwgZmxvYXQmIGxvZ2ljYWxXaWR0
aCkgY29uc3QKIHsKLSAgICBFVGV4dEFsaWduIHRleHRBbGlnbiA9IHN0eWxlKCkudGV4dEFsaWdu
KCk7CisgICAgVGV4dEFsaWduTW9kZSB0ZXh0QWxpZ24gPSBzdHlsZSgpLnRleHRBbGlnbigpOwog
ICAgIC8vIEZJWE1FOiBUaGlzIGNoZWNrIGlzIGJvZ3VzIHNpbmNlIHVzZXIgY2FuIHNldCB0aGUg
aW5pdGlhbCB2YWx1ZS4KICAgICBpZiAodGV4dEFsaWduICE9IFJlbmRlclN0eWxlOjppbml0aWFs
VGV4dEFsaWduKCkpCiAgICAgICAgIHJldHVybiBSZW5kZXJCbG9ja0Zsb3c6OmFkanVzdElubGlu
ZURpcmVjdGlvbkxpbmVCb3VuZHMoZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCwgbG9naWNhbExl
ZnQsIGxvZ2ljYWxXaWR0aCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UnVieVRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UnVieVRleHQuaAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJ1YnlUZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0
ZToKIAogICAgIGJvb2wgYXZvaWRzRmxvYXRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBFVGV4
dEFsaWduIHRleHRBbGlnbm1lbnRGb3JMaW5lKGJvb2wgZW5kc1dpdGhTb2Z0QnJlYWspIGNvbnN0
IG92ZXJyaWRlOworICAgIFRleHRBbGlnbk1vZGUgdGV4dEFsaWdubWVudEZvckxpbmUoYm9vbCBl
bmRzV2l0aFNvZnRCcmVhaykgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGp1c3RJbmxpbmVE
aXJlY3Rpb25MaW5lQm91bmRzKGludCBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50LCBmbG9hdCYg
bG9naWNhbExlZnQsIGZsb2F0JiBsb2dpY2FsV2lkdGgpIGNvbnN0IG92ZXJyaWRlOwogfTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAJKHJl
dmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxi
YXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODgsMjIgKzE4OCwyMiBAQCBzdGF0aWMgUHNldWRv
SWQgcHNldWRvRm9yU2Nyb2xsYmFyUGFydChTCiAgICAgICAgIGNhc2UgRm9yd2FyZEJ1dHRvblN0
YXJ0UGFydDoKICAgICAgICAgY2FzZSBCYWNrQnV0dG9uRW5kUGFydDoKICAgICAgICAgY2FzZSBG
b3J3YXJkQnV0dG9uRW5kUGFydDoKLSAgICAgICAgICAgIHJldHVybiBTQ1JPTExCQVJfQlVUVE9O
OworICAgICAgICAgICAgcmV0dXJuIFBzZXVkb0lkOjpTY3JvbGxiYXJCdXR0b247CiAgICAgICAg
IGNhc2UgQmFja1RyYWNrUGFydDoKICAgICAgICAgY2FzZSBGb3J3YXJkVHJhY2tQYXJ0OgotICAg
ICAgICAgICAgcmV0dXJuIFNDUk9MTEJBUl9UUkFDS19QSUVDRTsKKyAgICAgICAgICAgIHJldHVy
biBQc2V1ZG9JZDo6U2Nyb2xsYmFyVHJhY2tQaWVjZTsKICAgICAgICAgY2FzZSBUaHVtYlBhcnQ6
Ci0gICAgICAgICAgICByZXR1cm4gU0NST0xMQkFSX1RIVU1COworICAgICAgICAgICAgcmV0dXJu
IFBzZXVkb0lkOjpTY3JvbGxiYXJUaHVtYjsKICAgICAgICAgY2FzZSBUcmFja0JHUGFydDoKLSAg
ICAgICAgICAgIHJldHVybiBTQ1JPTExCQVJfVFJBQ0s7CisgICAgICAgICAgICByZXR1cm4gUHNl
dWRvSWQ6OlNjcm9sbGJhclRyYWNrOwogICAgICAgICBjYXNlIFNjcm9sbGJhckJHUGFydDoKLSAg
ICAgICAgICAgIHJldHVybiBTQ1JPTExCQVI7CisgICAgICAgICAgICByZXR1cm4gUHNldWRvSWQ6
OlNjcm9sbGJhcjsKICAgICAgICAgY2FzZSBOb1BhcnQ6CiAgICAgICAgIGNhc2UgQWxsUGFydHM6
CiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIFNDUk9MTEJBUjsKKyAgICByZXR1cm4gUHNldWRvSWQ6OlNjcm9sbGJhcjsKIH0K
IAogdm9pZCBSZW5kZXJTY3JvbGxiYXI6OnVwZGF0ZVNjcm9sbGJhclBhcnQoU2Nyb2xsYmFyUGFy
dCBwYXJ0VHlwZSkKQEAgLTIxMiw5ICsyMTIsOSBAQCB2b2lkIFJlbmRlclNjcm9sbGJhcjo6dXBk
YXRlU2Nyb2xsYmFyUGFyCiAgICAgICAgIHJldHVybjsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gcGFydFN0eWxlID0gZ2V0U2Nyb2xsYmFyUHNldWRvU3R5bGUocGFydFR5cGUs
IHBzZXVkb0ZvclNjcm9sbGJhclBhcnQocGFydFR5cGUpKTsKLSAgICBib29sIG5lZWRSZW5kZXJl
ciA9IHBhcnRTdHlsZSAmJiBwYXJ0U3R5bGUtPmRpc3BsYXkoKSAhPSBOT05FOworICAgIGJvb2wg
bmVlZFJlbmRlcmVyID0gcGFydFN0eWxlICYmIHBhcnRTdHlsZS0+ZGlzcGxheSgpICE9IERpc3Bs
YXlUeXBlOjpOb25lOwogCi0gICAgaWYgKG5lZWRSZW5kZXJlciAmJiBwYXJ0U3R5bGUtPmRpc3Bs
YXkoKSAhPSBCTE9DSykgeworICAgIGlmIChuZWVkUmVuZGVyZXIgJiYgcGFydFN0eWxlLT5kaXNw
bGF5KCkgIT0gRGlzcGxheVR5cGU6OkJsb2NrKSB7CiAgICAgICAgIC8vIFNlZSBpZiB3ZSBhcmUg
YSBidXR0b24gdGhhdCBzaG91bGQgbm90IGJlIHZpc2libGUgYWNjb3JkaW5nIHRvIE9TIHNldHRp
bmdzLgogICAgICAgICBTY3JvbGxiYXJCdXR0b25zUGxhY2VtZW50IGJ1dHRvbnNQbGFjZW1lbnQg
PSB0aGVtZSgpLmJ1dHRvbnNQbGFjZW1lbnQoKTsKICAgICAgICAgc3dpdGNoIChwYXJ0VHlwZSkg
ewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQu
Y3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U2VhcmNoRmllbGQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBS
ZW5kZXJTZWFyY2hGaWVsZDo6dXBkYXRlQ2FuY2VsQnV0dAogICAgICAgICByZXR1cm47CiAKICAg
ICBjb25zdCBSZW5kZXJTdHlsZSYgY3VyU3R5bGUgPSBjYW5jZWxCdXR0b25SZW5kZXJlci0+c3R5
bGUoKTsKLSAgICBFVmlzaWJpbGl0eSBidXR0b25WaXNpYmlsaXR5ID0gdmlzaWJpbGl0eUZvckNh
bmNlbEJ1dHRvbigpOworICAgIFZpc2liaWxpdHkgYnV0dG9uVmlzaWJpbGl0eSA9IHZpc2liaWxp
dHlGb3JDYW5jZWxCdXR0b24oKTsKICAgICBpZiAoY3VyU3R5bGUudmlzaWJpbGl0eSgpID09IGJ1
dHRvblZpc2liaWxpdHkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTk0LDkgKzE5NCw5IEBAIHZv
aWQgUmVuZGVyU2VhcmNoRmllbGQ6OnVwZGF0ZUNhbmNlbEJ1dHQKICAgICBjYW5jZWxCdXR0b25S
ZW5kZXJlci0+c2V0U3R5bGUoV1RGTW92ZShjYW5jZWxCdXR0b25TdHlsZSkpOwogfQogCi1FVmlz
aWJpbGl0eSBSZW5kZXJTZWFyY2hGaWVsZDo6dmlzaWJpbGl0eUZvckNhbmNlbEJ1dHRvbigpIGNv
bnN0CitWaXNpYmlsaXR5IFJlbmRlclNlYXJjaEZpZWxkOjp2aXNpYmlsaXR5Rm9yQ2FuY2VsQnV0
dG9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gKHN0eWxlKCkudmlzaWJpbGl0eSgpID09IEhJRERF
TiB8fCBpbnB1dEVsZW1lbnQoKS52YWx1ZSgpLmlzRW1wdHkoKSkgPyBISURERU4gOiBWSVNJQkxF
OworICAgIHJldHVybiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6SGlkZGVu
IHx8IGlucHV0RWxlbWVudCgpLnZhbHVlKCkuaXNFbXB0eSgpKSA/IFZpc2liaWxpdHk6OkhpZGRl
biA6IFZpc2liaWxpdHk6OlZpc2libGU7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgUmVuZGVy
U2VhcmNoRmllbGQ6OmF1dG9zYXZlTmFtZSgpIGNvbnN0CkBAIC0yNzAsOCArMjcwLDggQEAgUG9w
dXBNZW51U3R5bGUgUmVuZGVyU2VhcmNoRmllbGQ6Oml0ZW1TdAogCiBQb3B1cE1lbnVTdHlsZSBS
ZW5kZXJTZWFyY2hGaWVsZDo6bWVudVN0eWxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gUG9wdXBN
ZW51U3R5bGUoc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NT
UHJvcGVydHlDb2xvciksIHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmls
dGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSwgc3R5bGUoKS5mb250Q2FzY2FkZSgpLCBz
dHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFLAotICAgICAgICBzdHlsZSgpLmRpc3BsYXko
KSA9PSBOT05FLCB0cnVlLCBzdHlsZSgpLnRleHRJbmRlbnQoKSwgc3R5bGUoKS5kaXJlY3Rpb24o
KSwgaXNPdmVycmlkZShzdHlsZSgpLnVuaWNvZGVCaWRpKCkpLCBQb3B1cE1lbnVTdHlsZTo6Q3Vz
dG9tQmFja2dyb3VuZENvbG9yKTsKKyAgICByZXR1cm4gUG9wdXBNZW51U3R5bGUoc3R5bGUoKS52
aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlDb2xvciksIHN0
eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yKSwgc3R5bGUoKS5mb250Q2FzY2FkZSgpLCBzdHlsZSgpLnZpc2liaWxpdHko
KSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlLAorICAgICAgICBzdHlsZSgpLmRpc3BsYXkoKSA9PSBE
aXNwbGF5VHlwZTo6Tm9uZSwgdHJ1ZSwgc3R5bGUoKS50ZXh0SW5kZW50KCksIHN0eWxlKCkuZGly
ZWN0aW9uKCksIGlzT3ZlcnJpZGUoc3R5bGUoKS51bmljb2RlQmlkaSgpKSwgUG9wdXBNZW51U3R5
bGU6OkN1c3RvbUJhY2tncm91bmRDb2xvcik7CiB9CiAKIGludCBSZW5kZXJTZWFyY2hGaWVsZDo6
Y2xpZW50SW5zZXRMZWZ0KCkgY29uc3QKQEAgLTM1OSw3ICszNTksNyBAQCBIb3N0V2luZG93KiBS
ZW5kZXJTZWFyY2hGaWVsZDo6aG9zdFdpbmRvCiAKIFJlZjxTY3JvbGxiYXI+IFJlbmRlclNlYXJj
aEZpZWxkOjpjcmVhdGVTY3JvbGxiYXIoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBT
Y3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsYmFyQ29udHJvbFNpemUgY29u
dHJvbFNpemUpCiB7Ci0gICAgYm9vbCBoYXNDdXN0b21TY3JvbGxiYXJTdHlsZSA9IHN0eWxlKCku
aGFzUHNldWRvU3R5bGUoU0NST0xMQkFSKTsKKyAgICBib29sIGhhc0N1c3RvbVNjcm9sbGJhclN0
eWxlID0gc3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6U2Nyb2xsYmFyKTsKICAgICBp
ZiAoaGFzQ3VzdG9tU2Nyb2xsYmFyU3R5bGUpCiAgICAgICAgIHJldHVybiBSZW5kZXJTY3JvbGxi
YXI6OmNyZWF0ZUN1c3RvbVNjcm9sbGJhcihzY3JvbGxhYmxlQXJlYSwgb3JpZW50YXRpb24sICZp
bnB1dEVsZW1lbnQoKSk7CiAgICAgcmV0dXJuIFNjcm9sbGJhcjo6Y3JlYXRlTmF0aXZlU2Nyb2xs
YmFyKHNjcm9sbGFibGVBcmVhLCBvcmllbnRhdGlvbiwgY29udHJvbFNpemUpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmgJKHJldmlzaW9uIDIz
MjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsQmVE
ZXN0cm95ZWQoKSBvdmVycmlkZTsKICAgICBMYXlvdXRVbml0IGNvbXB1dGVDb250cm9sTG9naWNh
bEhlaWdodChMYXlvdXRVbml0IGxpbmVIZWlnaHQsIExheW91dFVuaXQgbm9uQ29udGVudEhlaWdo
dCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpIG92ZXJyaWRl
OwotICAgIEVWaXNpYmlsaXR5IHZpc2liaWxpdHlGb3JDYW5jZWxCdXR0b24oKSBjb25zdDsKKyAg
ICBWaXNpYmlsaXR5IHZpc2liaWxpdHlGb3JDYW5jZWxCdXR0b24oKSBjb25zdDsKICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIGF1dG9zYXZlTmFtZSgpIGNvbnN0OwogCiAgICAgLy8gUG9wdXBNZW51
Q2xpZW50IG1ldGhvZHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
LmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgUmVuZGVy
VGFibGU6OndpbGxJbnNlcnRUYWJsZUNvbHVtbigKIHZvaWQgUmVuZGVyVGFibGU6OndpbGxJbnNl
cnRUYWJsZVNlY3Rpb24oUmVuZGVyVGFibGVTZWN0aW9uJiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBi
ZWZvcmVDaGlsZCkKIHsKICAgICBzd2l0Y2ggKGNoaWxkLnN0eWxlKCkuZGlzcGxheSgpKSB7Ci0g
ICAgY2FzZSBUQUJMRV9IRUFERVJfR1JPVVA6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFibGVI
ZWFkZXJHcm91cDoKICAgICAgICAgcmVzZXRTZWN0aW9uUG9pbnRlcklmTm90QmVmb3JlKG1faGVh
ZCwgYmVmb3JlQ2hpbGQpOwogICAgICAgICBpZiAoIW1faGVhZCkKICAgICAgICAgICAgIG1faGVh
ZCA9IG1ha2VXZWFrUHRyKGNoaWxkKTsKQEAgLTE1MSwxNCArMTUxLDE0IEBAIHZvaWQgUmVuZGVy
VGFibGU6OndpbGxJbnNlcnRUYWJsZVNlY3Rpb24KICAgICAgICAgICAgICAgICBtX2ZpcnN0Qm9k
eSA9IG1ha2VXZWFrUHRyKGNoaWxkKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFRBQkxFX0ZPT1RFUl9HUk9VUDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZUZvb3Rl
ckdyb3VwOgogICAgICAgICByZXNldFNlY3Rpb25Qb2ludGVySWZOb3RCZWZvcmUobV9mb290LCBi
ZWZvcmVDaGlsZCk7CiAgICAgICAgIGlmICghbV9mb290KSB7CiAgICAgICAgICAgICBtX2Zvb3Qg
PSBtYWtlV2Vha1B0cihjaGlsZCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBGQUxMVEhST1VHSDsKLSAgICBjYXNlIFRBQkxFX1JPV19HUk9VUDoKKyAgICBjYXNlIERp
c3BsYXlUeXBlOjpUYWJsZVJvd0dyb3VwOgogICAgICAgICByZXNldFNlY3Rpb25Qb2ludGVySWZO
b3RCZWZvcmUobV9maXJzdEJvZHksIGJlZm9yZUNoaWxkKTsKICAgICAgICAgaWYgKCFtX2ZpcnN0
Qm9keSkKICAgICAgICAgICAgIG1fZmlyc3RCb2R5ID0gbWFrZVdlYWtQdHIoY2hpbGQpOwpAQCAt
MzU2LDggKzM1Niw4IEBAIHZvaWQgUmVuZGVyVGFibGU6OmxheW91dENhcHRpb25zKEJvdHRvbUMK
ICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBDb2xsYXBzZSBjYXB0aW9uIG1hcmdpbi4K
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9jYXB0aW9ucy5zaXplKCk7ICsraSkgewot
ICAgICAgICBpZiAoKGJvdHRvbUNhcHRpb25MYXlvdXRQaGFzZSA9PSBCb3R0b21DYXB0aW9uTGF5
b3V0UGhhc2U6OlllcyAmJiBtX2NhcHRpb25zW2ldLT5zdHlsZSgpLmNhcHRpb25TaWRlKCkgIT0g
Q0FQQk9UVE9NKQotICAgICAgICAgICAgfHwgKGJvdHRvbUNhcHRpb25MYXlvdXRQaGFzZSA9PSBC
b3R0b21DYXB0aW9uTGF5b3V0UGhhc2U6Ok5vICYmIG1fY2FwdGlvbnNbaV0tPnN0eWxlKCkuY2Fw
dGlvblNpZGUoKSA9PSBDQVBCT1RUT00pKQorICAgICAgICBpZiAoKGJvdHRvbUNhcHRpb25MYXlv
dXRQaGFzZSA9PSBCb3R0b21DYXB0aW9uTGF5b3V0UGhhc2U6OlllcyAmJiBtX2NhcHRpb25zW2ld
LT5zdHlsZSgpLmNhcHRpb25TaWRlKCkgIT0gQ2FwdGlvblNpZGU6OkJvdHRvbSkKKyAgICAgICAg
ICAgIHx8IChib3R0b21DYXB0aW9uTGF5b3V0UGhhc2UgPT0gQm90dG9tQ2FwdGlvbkxheW91dFBo
YXNlOjpObyAmJiBtX2NhcHRpb25zW2ldLT5zdHlsZSgpLmNhcHRpb25TaWRlKCkgPT0gQ2FwdGlv
blNpZGU6OkJvdHRvbSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgbGF5b3V0Q2Fw
dGlvbigqbV9jYXB0aW9uc1tpXSk7CiAgICAgfQpAQCAtNDI1LDcgKzQyNSw3IEBAIHZvaWQgUmVu
ZGVyVGFibGU6OmxheW91dCgpCiAgICAgICAgIExheW91dFVuaXQgdG90YWxTZWN0aW9uTG9naWNh
bEhlaWdodCA9IDA7CiAgICAgICAgIExheW91dFVuaXQgb2xkVGFibGVMb2dpY2FsVG9wID0gMDsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fY2FwdGlvbnMuc2l6ZSgpOyBpKysp
IHsKLSAgICAgICAgICAgIGlmIChtX2NhcHRpb25zW2ldLT5zdHlsZSgpLmNhcHRpb25TaWRlKCkg
PT0gQ0FQQk9UVE9NKQorICAgICAgICAgICAgaWYgKG1fY2FwdGlvbnNbaV0tPnN0eWxlKCkuY2Fw
dGlvblNpZGUoKSA9PSBDYXB0aW9uU2lkZTo6Qm90dG9tKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgb2xkVGFibGVMb2dpY2FsVG9wICs9IG1fY2FwdGlvbnNbaV0tPmxv
Z2ljYWxIZWlnaHQoKSArIG1fY2FwdGlvbnNbaV0tPm1hcmdpbkJlZm9yZSgpICsgbV9jYXB0aW9u
c1tpXS0+bWFyZ2luQWZ0ZXIoKTsKICAgICAgICAgfQpAQCAtNjY4LDcgKzY2OCw3IEBAIHZvaWQg
UmVuZGVyVGFibGU6OnBhaW50KFBhaW50SW5mbyYgcGFpbnQKIHZvaWQgUmVuZGVyVGFibGU6OnBh
aW50T2JqZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQpCiB7CiAgICAgUGFpbnRQaGFzZSBwYWludFBoYXNlID0gcGFpbnRJbmZvLnBoYXNlOwot
ICAgIGlmICgocGFpbnRQaGFzZSA9PSBQYWludFBoYXNlQmxvY2tCYWNrZ3JvdW5kIHx8IHBhaW50
UGhhc2UgPT0gUGFpbnRQaGFzZUNoaWxkQmxvY2tCYWNrZ3JvdW5kKSAmJiBoYXNWaXNpYmxlQm94
RGVjb3JhdGlvbnMoKSAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKQorICAgIGlm
ICgocGFpbnRQaGFzZSA9PSBQYWludFBoYXNlQmxvY2tCYWNrZ3JvdW5kIHx8IHBhaW50UGhhc2Ug
PT0gUGFpbnRQaGFzZUNoaWxkQmxvY2tCYWNrZ3JvdW5kKSAmJiBoYXNWaXNpYmxlQm94RGVjb3Jh
dGlvbnMoKSAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlKQog
ICAgICAgICBwYWludEJveERlY29yYXRpb25zKHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogCiAg
ICAgaWYgKHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZU1hc2spIHsKQEAgLTY5NSw3ICs2OTUsNyBA
QCB2b2lkIFJlbmRlclRhYmxlOjpwYWludE9iamVjdChQYWludEluZm8mCiAgICAgICAgIH0KICAg
ICB9CiAgICAgCi0gICAgaWYgKGNvbGxhcHNlQm9yZGVycygpICYmIHBhaW50UGhhc2UgPT0gUGFp
bnRQaGFzZUNoaWxkQmxvY2tCYWNrZ3JvdW5kICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJ
U0lCTEUpIHsKKyAgICBpZiAoY29sbGFwc2VCb3JkZXJzKCkgJiYgcGFpbnRQaGFzZSA9PSBQYWlu
dFBoYXNlQ2hpbGRCbG9ja0JhY2tncm91bmQgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlz
aWJpbGl0eTo6VmlzaWJsZSkgewogICAgICAgICByZWNhbGNDb2xsYXBzZWRCb3JkZXJzKCk7CiAg
ICAgICAgIC8vIFVzaW5nIG91ciBjYWNoZWQgc29ydGVkIHN0eWxlcywgd2UgdGhlbiBkbyBpbmRp
dmlkdWFsIHBhc3NlcywKICAgICAgICAgLy8gcGFpbnRpbmcgZWFjaCBzdHlsZSBvZiBib3JkZXIg
ZnJvbSBsb3dlc3QgcHJlY2VkZW5jZSB0byBoaWdoZXN0IHByZWNlZGVuY2UuCkBAIC03MTIsNyAr
NzEyLDcgQEAgdm9pZCBSZW5kZXJUYWJsZTo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJgogICAgIH0K
IAogICAgIC8vIFBhaW50IG91dGxpbmUuCi0gICAgaWYgKChwYWludFBoYXNlID09IFBhaW50UGhh
c2VPdXRsaW5lIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKSAmJiBoYXNP
dXRsaW5lKCkgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkKKyAgICBpZiAoKHBh
aW50UGhhc2UgPT0gUGFpbnRQaGFzZU91dGxpbmUgfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNl
U2VsZk91dGxpbmUpICYmIGhhc091dGxpbmUoKSAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBW
aXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICBwYWludE91dGxpbmUocGFpbnRJbmZvLCBMYXlv
dXRSZWN0KHBhaW50T2Zmc2V0LCBzaXplKCkpKTsKIH0KIApAQCAtNzIwLDcgKzcyMCw3IEBAIHZv
aWQgUmVuZGVyVGFibGU6OmFkanVzdEJvcmRlckJveFJlY3RGb3IKIHsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9jYXB0aW9ucy5zaXplKCk7IGkrKykgewogICAgICAgICBMYXlvdXRV
bml0IGNhcHRpb25Mb2dpY2FsSGVpZ2h0ID0gbV9jYXB0aW9uc1tpXS0+bG9naWNhbEhlaWdodCgp
ICsgbV9jYXB0aW9uc1tpXS0+bWFyZ2luQmVmb3JlKCkgKyBtX2NhcHRpb25zW2ldLT5tYXJnaW5B
ZnRlcigpOwotICAgICAgICBib29sIGNhcHRpb25Jc0JlZm9yZSA9IChtX2NhcHRpb25zW2ldLT5z
dHlsZSgpLmNhcHRpb25TaWRlKCkgIT0gQ0FQQk9UVE9NKSBeIHN0eWxlKCkuaXNGbGlwcGVkQmxv
Y2tzV3JpdGluZ01vZGUoKTsKKyAgICAgICAgYm9vbCBjYXB0aW9uSXNCZWZvcmUgPSAobV9jYXB0
aW9uc1tpXS0+c3R5bGUoKS5jYXB0aW9uU2lkZSgpICE9IENhcHRpb25TaWRlOjpCb3R0b20pIF4g
c3R5bGUoKS5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpOwogICAgICAgICBpZiAoc3R5bGUo
KS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB7CiAgICAgICAgICAgICByZWN0LnNldEhlaWdo
dChyZWN0LmhlaWdodCgpIC0gY2FwdGlvbkxvZ2ljYWxIZWlnaHQpOwogICAgICAgICAgICAgaWYg
KGNhcHRpb25Jc0JlZm9yZSkKQEAgLTc1NSw3ICs3NTUsNyBAQCB2b2lkIFJlbmRlclRhYmxlOjpw
YWludEJveERlY29yYXRpb25zKFBhCiAKIHZvaWQgUmVuZGVyVGFibGU6OnBhaW50TWFzayhQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewotICAg
IGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8IHBhaW50SW5mby5waGFzZSAh
PSBQYWludFBoYXNlTWFzaykKKyAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJp
bGl0eTo6VmlzaWJsZSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZU1hc2spCiAgICAg
ICAgIHJldHVybjsKIAogICAgIExheW91dFJlY3QgcmVjdChwYWludE9mZnNldCwgc2l6ZSgpKTsK
QEAgLTEwMTMsMTEgKzEwMTMsMTEgQEAgdm9pZCBSZW5kZXJUYWJsZTo6cmVjYWxjU2VjdGlvbnMo
KSBjb25zdAogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hp
bGQ7IGNoaWxkID0gbmV4dFNpYmxpbmcpIHsKICAgICAgICAgbmV4dFNpYmxpbmcgPSBjaGlsZC0+
bmV4dFNpYmxpbmcoKTsKICAgICAgICAgc3dpdGNoIChjaGlsZC0+c3R5bGUoKS5kaXNwbGF5KCkp
IHsKLSAgICAgICAgY2FzZSBUQUJMRV9DT0xVTU46Ci0gICAgICAgIGNhc2UgVEFCTEVfQ09MVU1O
X0dST1VQOgorICAgICAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZUNvbHVtbjoKKyAgICAgICAg
Y2FzZSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1bW5Hcm91cDoKICAgICAgICAgICAgIG1faGFzQ29s
RWxlbWVudHMgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVEFCTEVf
SEVBREVSX0dST1VQOgorICAgICAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZUhlYWRlckdyb3Vw
OgogICAgICAgICAgICAgaWYgKGlzPFJlbmRlclRhYmxlU2VjdGlvbj4oKmNoaWxkKSkgewogICAg
ICAgICAgICAgICAgIFJlbmRlclRhYmxlU2VjdGlvbiYgc2VjdGlvbiA9IGRvd25jYXN0PFJlbmRl
clRhYmxlU2VjdGlvbj4oKmNoaWxkKTsKICAgICAgICAgICAgICAgICBpZiAoIW1faGVhZCkKQEAg
LTEwMjcsNyArMTAyNyw3IEBAIHZvaWQgUmVuZGVyVGFibGU6OnJlY2FsY1NlY3Rpb25zKCkgY29u
c3QKICAgICAgICAgICAgICAgICBzZWN0aW9uLnJlY2FsY0NlbGxzSWZOZWVkZWQoKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFRBQkxFX0ZPT1RFUl9H
Uk9VUDoKKyAgICAgICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFibGVGb290ZXJHcm91cDoKICAgICAg
ICAgICAgIGlmIChpczxSZW5kZXJUYWJsZVNlY3Rpb24+KCpjaGlsZCkpIHsKICAgICAgICAgICAg
ICAgICBSZW5kZXJUYWJsZVNlY3Rpb24mIHNlY3Rpb24gPSBkb3duY2FzdDxSZW5kZXJUYWJsZVNl
Y3Rpb24+KCpjaGlsZCk7CiAgICAgICAgICAgICAgICAgaWYgKCFtX2Zvb3QpCkBAIC0xMDM3LDcg
KzEwMzcsNyBAQCB2b2lkIFJlbmRlclRhYmxlOjpyZWNhbGNTZWN0aW9ucygpIGNvbnN0CiAgICAg
ICAgICAgICAgICAgc2VjdGlvbi5yZWNhbGNDZWxsc0lmTmVlZGVkKCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUQUJMRV9ST1dfR1JPVVA6CisgICAg
ICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlUm93R3JvdXA6CiAgICAgICAgICAgICBpZiAoaXM8
UmVuZGVyVGFibGVTZWN0aW9uPigqY2hpbGQpKSB7CiAgICAgICAgICAgICAgICAgUmVuZGVyVGFi
bGVTZWN0aW9uJiBzZWN0aW9uID0gZG93bmNhc3Q8UmVuZGVyVGFibGVTZWN0aW9uPigqY2hpbGQp
OwogICAgICAgICAgICAgICAgIGlmICghbV9maXJzdEJvZHkpCkBAIC0xNTI4LDcgKzE1MjgsNyBA
QCBib29sIFJlbmRlclRhYmxlOjpub2RlQXRQb2ludChjb25zdCBIaXRUCiAKIFJlbmRlclB0cjxS
ZW5kZXJUYWJsZT4gUmVuZGVyVGFibGU6OmNyZWF0ZVRhYmxlV2l0aFN0eWxlKERvY3VtZW50JiBk
b2N1bWVudCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewotICAgIGF1dG8gdGFibGUgPSBj
cmVhdGVSZW5kZXJlcjxSZW5kZXJUYWJsZT4oZG9jdW1lbnQsIFJlbmRlclN0eWxlOjpjcmVhdGVB
bm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlLCBzdHlsZS5kaXNwbGF5KCkgPT0gSU5MSU5F
ID8gSU5MSU5FX1RBQkxFIDogVEFCTEUpKTsKKyAgICBhdXRvIHRhYmxlID0gY3JlYXRlUmVuZGVy
ZXI8UmVuZGVyVGFibGU+KGRvY3VtZW50LCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5
bGVXaXRoRGlzcGxheShzdHlsZSwgc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpJbmxp
bmUgPyBEaXNwbGF5VHlwZTo6SW5saW5lVGFibGUgOiBEaXNwbGF5VHlwZTo6VGFibGUpKTsKICAg
ICB0YWJsZS0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAgcmV0dXJuIHRhYmxlOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAJKHJldmlzaW9u
IDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MjAsNyArNDIwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIG1h
cmtDZWxsRGlydHlXaGVuQ29sbAogCiB2b2lkIFJlbmRlclRhYmxlQ2VsbDo6c3R5bGVEaWRDaGFu
Z2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKIHsK
LSAgICBBU1NFUlQoc3R5bGUoKS5kaXNwbGF5KCkgPT0gVEFCTEVfQ0VMTCk7CisgICAgQVNTRVJU
KHN0eWxlKCkuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpUYWJsZUNlbGwpOwogICAgIEFTU0VS
VCghcm93KCkgfHwgcm93KCktPnJvd0luZGV4V2FzU2V0KCkpOwogCiAgICAgUmVuZGVyQmxvY2tG
bG93OjpzdHlsZURpZENoYW5nZShkaWZmLCBvbGRTdHlsZSk7CkBAIC0xMTk4LDcgKzExOTgsNyBA
QCB2b2lkIFJlbmRlclRhYmxlQ2VsbDo6cGFpbnRDb2xsYXBzZWRCb3JkCiB7CiAgICAgQVNTRVJU
KHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlQ29sbGFwc2VkVGFibGVCb3JkZXJzKTsKIAot
ICAgIGlmICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdCgqdGhpcykgfHwgc3R5bGUo
KS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAoIXBhaW50SW5mby5zaG91bGRQYWlu
dFdpdGhpblJvb3QoKnRoaXMpIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6
OlZpc2libGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIExheW91dFJlY3QgbG9jYWxSZXBhaW50
UmVjdCA9IHBhaW50SW5mby5yZWN0OwpAQCAtMTI3MSwxMSArMTI3MSwxMSBAQCB2b2lkIFJlbmRl
clRhYmxlQ2VsbDo6cGFpbnRCYWNrZ3JvdW5kc0JlCiAgICAgaWYgKCFiYWNrZ3JvdW5kT2JqZWN0
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklT
SUJMRSkKKyAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJs
ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVuZGVyVGFibGUqIHRhYmxlRWx0ID0gdGFibGUo
KTsKLSAgICBpZiAoIXRhYmxlRWx0LT5jb2xsYXBzZUJvcmRlcnMoKSAmJiBzdHlsZSgpLmVtcHR5
Q2VsbHMoKSA9PSBISURFICYmICFmaXJzdENoaWxkKCkpCisgICAgaWYgKCF0YWJsZUVsdC0+Y29s
bGFwc2VCb3JkZXJzKCkgJiYgc3R5bGUoKS5lbXB0eUNlbGxzKCkgPT0gRW1wdHlDZWxsOjpIaWRl
ICYmICFmaXJzdENoaWxkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIExheW91dFBvaW50IGFk
anVzdGVkUGFpbnRPZmZzZXQgPSBwYWludE9mZnNldDsKQEAgLTEzMDUsNyArMTMwNSw3IEBAIHZv
aWQgUmVuZGVyVGFibGVDZWxsOjpwYWludEJveERlY29yYXRpb24KICAgICAgICAgcmV0dXJuOwog
CiAgICAgUmVuZGVyVGFibGUqIHRhYmxlID0gdGhpcy0+dGFibGUoKTsKLSAgICBpZiAoIXRhYmxl
LT5jb2xsYXBzZUJvcmRlcnMoKSAmJiBzdHlsZSgpLmVtcHR5Q2VsbHMoKSA9PSBISURFICYmICFm
aXJzdENoaWxkKCkpCisgICAgaWYgKCF0YWJsZS0+Y29sbGFwc2VCb3JkZXJzKCkgJiYgc3R5bGUo
KS5lbXB0eUNlbGxzKCkgPT0gRW1wdHlDZWxsOjpIaWRlICYmICFmaXJzdENoaWxkKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIExheW91dFJlY3QgcGFpbnRSZWN0ID0gTGF5b3V0UmVjdChwYWlu
dE9mZnNldCwgZnJhbWVSZWN0KCkuc2l6ZSgpKTsKQEAgLTEzMjYsMTEgKzEzMjYsMTEgQEAgdm9p
ZCBSZW5kZXJUYWJsZUNlbGw6OnBhaW50Qm94RGVjb3JhdGlvbgogCiB2b2lkIFJlbmRlclRhYmxl
Q2VsbDo6cGFpbnRNYXNrKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYg
cGFpbnRPZmZzZXQpCiB7Ci0gICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUg
fHwgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VNYXNrKQorICAgIGlmIChzdHlsZSgpLnZp
c2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlIHx8IHBhaW50SW5mby5waGFzZSAhPSBQ
YWludFBoYXNlTWFzaykKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVuZGVyVGFibGUqIHRhYmxl
RWx0ID0gdGFibGUoKTsKLSAgICBpZiAoIXRhYmxlRWx0LT5jb2xsYXBzZUJvcmRlcnMoKSAmJiBz
dHlsZSgpLmVtcHR5Q2VsbHMoKSA9PSBISURFICYmICFmaXJzdENoaWxkKCkpCisgICAgaWYgKCF0
YWJsZUVsdC0+Y29sbGFwc2VCb3JkZXJzKCkgJiYgc3R5bGUoKS5lbXB0eUNlbGxzKCkgPT0gRW1w
dHlDZWxsOjpIaWRlICYmICFmaXJzdENoaWxkKCkpCiAgICAgICAgIHJldHVybjsKICAgIAogICAg
IExheW91dFJlY3QgcGFpbnRSZWN0ID0gTGF5b3V0UmVjdChwYWludE9mZnNldCwgZnJhbWVSZWN0
KCkuc2l6ZSgpKTsKQEAgLTEzNzAsNyArMTM3MCw3IEBAIHZvaWQgUmVuZGVyVGFibGVDZWxsOjpz
Y3JvbGxiYXJzQ2hhbmdlZCgKIAogUmVuZGVyUHRyPFJlbmRlclRhYmxlQ2VsbD4gUmVuZGVyVGFi
bGVDZWxsOjpjcmVhdGVUYWJsZUNlbGxXaXRoU3R5bGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgYXV0byBjZWxsID0gY3JlYXRlUmVuZGVyZXI8
UmVuZGVyVGFibGVDZWxsPihkb2N1bWVudCwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0
eWxlV2l0aERpc3BsYXkoc3R5bGUsIFRBQkxFX0NFTEwpKTsKKyAgICBhdXRvIGNlbGwgPSBjcmVh
dGVSZW5kZXJlcjxSZW5kZXJUYWJsZUNlbGw+KGRvY3VtZW50LCBSZW5kZXJTdHlsZTo6Y3JlYXRl
QW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSwgRGlzcGxheVR5cGU6OlRhYmxlQ2VsbCkp
OwogICAgIGNlbGwtPmluaXRpYWxpemVTdHlsZSgpOwogICAgIHJldHVybiBjZWxsOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwCShyZXZpc2lv
biAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgUmVuZGVyVGFibGVDb2w6OnVw
ZGF0ZUZyb21FbGVtZW50KCkKICAgICAgICAgSFRNTFRhYmxlQ29sRWxlbWVudCYgdGMgPSBzdGF0
aWNfY2FzdDxIVE1MVGFibGVDb2xFbGVtZW50Jj4oZWxlbWVudCgpKTsKICAgICAgICAgbV9zcGFu
ID0gdGMuc3BhbigpOwogICAgIH0gZWxzZQotICAgICAgICBtX3NwYW4gPSAhKGhhc0luaXRpYWxp
emVkU3R5bGUoKSAmJiBzdHlsZSgpLmRpc3BsYXkoKSA9PSBUQUJMRV9DT0xVTU5fR1JPVVApOwor
ICAgICAgICBtX3NwYW4gPSAhKGhhc0luaXRpYWxpemVkU3R5bGUoKSAmJiBzdHlsZSgpLmRpc3Bs
YXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1bW5Hcm91cCk7CiAgICAgaWYgKG1fc3BhbiAh
PSBvbGRTcGFuICYmIGhhc0luaXRpYWxpemVkU3R5bGUoKSAmJiBwYXJlbnQoKSkKICAgICAgICAg
c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CiB9CkBAIC0xMDIsNyArMTAyLDcg
QEAgdm9pZCBSZW5kZXJUYWJsZUNvbDo6d2lsbEJlUmVtb3ZlZEZyb21UcgogYm9vbCBSZW5kZXJU
YWJsZUNvbDo6aXNDaGlsZEFsbG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiBjaGlsZCwgY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAogewogICAgIC8vIFdlIGNhbm5vdCB1c2UgaXNUYWJs
ZUNvbHVtbiBoZXJlIGFzIHN0eWxlKCkgbWF5IHJldHVybiAwLgotICAgIHJldHVybiBzdHlsZS5k
aXNwbGF5KCkgPT0gVEFCTEVfQ09MVU1OICYmIGNoaWxkLmlzUmVuZGVyVGFibGVDb2woKTsKKyAg
ICByZXR1cm4gc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpUYWJsZUNvbHVtbiAmJiBj
aGlsZC5pc1JlbmRlclRhYmxlQ29sKCk7CiB9CiAKIGJvb2wgUmVuZGVyVGFibGVDb2w6OmNhbkhh
dmVDaGlsZHJlbigpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVDb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVDb2wuaAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlQ29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDggKzQ0LDggQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0U3Bhbih1bnNpZ25lZCBzcGFuKSB7IG1fc3BhbiA9IHNwYW47IH0KIAog
ICAgIGJvb2wgaXNUYWJsZUNvbHVtbkdyb3VwV2l0aENvbHVtbkNoaWxkcmVuKCkgY29uc3QgeyBy
ZXR1cm4gZmlyc3RDaGlsZCgpOyB9Ci0gICAgYm9vbCBpc1RhYmxlQ29sdW1uKCkgY29uc3QgeyBy
ZXR1cm4gc3R5bGUoKS5kaXNwbGF5KCkgPT0gVEFCTEVfQ09MVU1OOyB9Ci0gICAgYm9vbCBpc1Rh
YmxlQ29sdW1uR3JvdXAoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLmRpc3BsYXkoKSA9PSBUQUJM
RV9DT0xVTU5fR1JPVVA7IH0KKyAgICBib29sIGlzVGFibGVDb2x1bW4oKSBjb25zdCB7IHJldHVy
biBzdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1bW47IH0KKyAgICBi
b29sIGlzVGFibGVDb2x1bW5Hcm91cCgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCkuZGlzcGxheSgp
ID09IERpc3BsYXlUeXBlOjpUYWJsZUNvbHVtbkdyb3VwOyB9CiAKICAgICBSZW5kZXJUYWJsZUNv
bCogZW5jbG9zaW5nQ29sdW1uR3JvdXAoKSBjb25zdDsKICAgICBSZW5kZXJUYWJsZUNvbCogZW5j
bG9zaW5nQ29sdW1uR3JvdXBJZkFkamFjZW50QmVmb3JlKCkgY29uc3Q7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAJKHJldmlzaW9uIDIzMjE0MykK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc0LDcgKzc0LDcgQEAgc3RhdGljIGJvb2wgYm9yZGVyV2lkdGhDaGFuZ2VkKGNv
bnN0IFJlbgogCiB2b2lkIFJlbmRlclRhYmxlUm93OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZl
cmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKQogewotICAgIEFTU0VSVChz
dHlsZSgpLmRpc3BsYXkoKSA9PSBUQUJMRV9ST1cpOworICAgIEFTU0VSVChzdHlsZSgpLmRpc3Bs
YXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGVSb3cpOwogCiAgICAgUmVuZGVyQm94OjpzdHlsZURp
ZENoYW5nZShkaWZmLCBvbGRTdHlsZSk7CiAgICAgcHJvcGFnYXRlU3R5bGVUb0Fub255bW91c0No
aWxkcmVuKFByb3BhZ2F0ZVRvQWxsQ2hpbGRyZW4pOwpAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQg
UmVuZGVyVGFibGVSb3c6OnBhaW50T3V0bGluZUZvclJvd0kKIHsKICAgICBMYXlvdXRQb2ludCBh
ZGp1c3RlZFBhaW50T2Zmc2V0ID0gcGFpbnRPZmZzZXQgKyBsb2NhdGlvbigpOwogICAgIFBhaW50
UGhhc2UgcGFpbnRQaGFzZSA9IHBhaW50SW5mby5waGFzZTsKLSAgICBpZiAoKHBhaW50UGhhc2Ug
PT0gUGFpbnRQaGFzZU91dGxpbmUgfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlU2VsZk91dGxp
bmUpICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUpCisgICAgaWYgKChwYWludFBo
YXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZP
dXRsaW5lKSAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlKQog
ICAgICAgICBwYWludE91dGxpbmUocGFpbnRJbmZvLCBMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRP
ZmZzZXQsIHNpemUoKSkpOwogfQogCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBSZW5kZXJUYWJs
ZVJvdzo6aW1hZ2VDaGFuZ2VkKFdyYXBwZQogCiBSZW5kZXJQdHI8UmVuZGVyVGFibGVSb3c+IFJl
bmRlclRhYmxlUm93OjpjcmVhdGVUYWJsZVJvd1dpdGhTdHlsZShEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICBhdXRvIHJvdyA9IGNyZWF0ZVJlbmRl
cmVyPFJlbmRlclRhYmxlUm93Pihkb2N1bWVudCwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91
c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUsIFRBQkxFX1JPVykpOworICAgIGF1dG8gcm93ID0gY3Jl
YXRlUmVuZGVyZXI8UmVuZGVyVGFibGVSb3c+KGRvY3VtZW50LCBSZW5kZXJTdHlsZTo6Y3JlYXRl
QW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSwgRGlzcGxheVR5cGU6OlRhYmxlUm93KSk7
CiAgICAgcm93LT5pbml0aWFsaXplU3R5bGUoKTsKICAgICByZXR1cm4gcm93OwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAJKHJl
dmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNl
Y3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsMTAgKzE2OCwxMCBAQCB2b2lkIFJlbmRl
clRhYmxlU2VjdGlvbjo6YWRkQ2VsbChSZW5kZXJUCiAKICAgICAvLyAjIyMgbW96aWxsYSBzdGls
bCBzZWVtcyB0byBkbyB0aGUgb2xkIEhUTUwgd2F5LCBldmVuIGZvciBzdHJpY3QgRFRECiAgICAg
Ly8gKHNlZSB0aGUgYW5ub3RhdGlvbiBvbiB0YWJsZSBjZWxsIGxheW91dGluZyBpbiB0aGUgQ1NT
IHNwZWNzIGFuZCB0aGUgdGVzdGNhc2UgYmVsb3c6Ci0gICAgLy8gPFRBQkxFIGJvcmRlcj4KKyAg
ICAvLyA8RGlzcGxheVR5cGU6OlRhYmxlIGJvcmRlcj4KICAgICAvLyA8VFI+PFREPjEgPFREIHJv
d3NwYW49IjIiPjIgPFREPjMgPFREPjQKICAgICAvLyA8VFI+PFREIGNvbHNwYW49IjIiPjUKLSAg
ICAvLyA8L1RBQkxFPgorICAgIC8vIDwvRGlzcGxheVR5cGU6OlRhYmxlPgogICAgIHdoaWxlICht
X2NDb2wgPCBuQ29scyAmJiAoY2VsbEF0KGluc2VydGlvblJvdywgbV9jQ29sKS5oYXNDZWxscygp
IHx8IGNlbGxBdChpbnNlcnRpb25Sb3csIG1fY0NvbCkuaW5Db2xTcGFuKSkKICAgICAgICAgbV9j
Q29sKys7CiAKQEAgLTkxNiw3ICs5MTYsNyBAQCB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6cGFp
bnQoUGFpbnRJbmZvCiAgICAgaWYgKHB1c2hlZENsaXApCiAgICAgICAgIHBvcENvbnRlbnRzQ2xp
cChwYWludEluZm8sIHBoYXNlLCBhZGp1c3RlZFBhaW50T2Zmc2V0KTsKIAotICAgIGlmICgocGhh
c2UgPT0gUGFpbnRQaGFzZU91dGxpbmUgfHwgcGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5l
KSAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKQorICAgIGlmICgocGhhc2UgPT0g
UGFpbnRQaGFzZU91dGxpbmUgfHwgcGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKSAmJiBz
dHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICBwYWlu
dE91dGxpbmUocGFpbnRJbmZvLCBMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQsIHNpemUo
KSkpOwogfQogCkBAIC0xNTUxLDcgKzE1NTEsNyBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5k
ZXJUYWJsZVNlY3Rpb246CiAKIFJlbmRlclB0cjxSZW5kZXJUYWJsZVNlY3Rpb24+IFJlbmRlclRh
YmxlU2VjdGlvbjo6Y3JlYXRlVGFibGVTZWN0aW9uV2l0aFN0eWxlKERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewotICAgIGF1dG8gc2VjdGlvbiA9IGNyZWF0
ZVJlbmRlcmVyPFJlbmRlclRhYmxlU2VjdGlvbj4oZG9jdW1lbnQsIFJlbmRlclN0eWxlOjpjcmVh
dGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlLCBUQUJMRV9ST1dfR1JPVVApKTsKKyAg
ICBhdXRvIHNlY3Rpb24gPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJUYWJsZVNlY3Rpb24+KGRvY3Vt
ZW50LCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSwg
RGlzcGxheVR5cGU6OlRhYmxlUm93R3JvdXApKTsKICAgICBzZWN0aW9uLT5pbml0aWFsaXplU3R5
bGUoKTsKICAgICByZXR1cm4gc2VjdGlvbjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dC5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcxLDcgKzI3MSw3IEBA
IHZvaWQgUmVuZGVyVGV4dDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWYKICAgICBpZiAoIW9sZFN0
eWxlIHx8IG9sZFN0eWxlLT5mb250Q2FzY2FkZSgpICE9IG5ld1N0eWxlLmZvbnRDYXNjYWRlKCkp
CiAgICAgICAgIG1fY2FuVXNlU2ltcGxpZmllZFRleHRNZWFzdXJpbmcgPSBjb21wdXRlQ2FuVXNl
U2ltcGxpZmllZFRleHRNZWFzdXJpbmcoKTsKIAotICAgIEVUZXh0VHJhbnNmb3JtIG9sZFRyYW5z
Zm9ybSA9IG9sZFN0eWxlID8gb2xkU3R5bGUtPnRleHRUcmFuc2Zvcm0oKSA6IFRUTk9ORTsKKyAg
ICBUZXh0VHJhbnNmb3JtIG9sZFRyYW5zZm9ybSA9IG9sZFN0eWxlID8gb2xkU3R5bGUtPnRleHRU
cmFuc2Zvcm0oKSA6IFRleHRUcmFuc2Zvcm06Ok5vbmU7CiAgICAgVGV4dFNlY3VyaXR5IG9sZFNl
Y3VyaXR5ID0gb2xkU3R5bGUgPyBvbGRTdHlsZS0+dGV4dFNlY3VyaXR5KCkgOiBUZXh0U2VjdXJp
dHk6Ok5vbmU7CiAgICAgaWYgKG5lZWRzUmVzZXRUZXh0IHx8IG9sZFRyYW5zZm9ybSAhPSBuZXdT
dHlsZS50ZXh0VHJhbnNmb3JtKCkgfHwgb2xkU2VjdXJpdHkgIT0gbmV3U3R5bGUudGV4dFNlY3Vy
aXR5KCkpCiAgICAgICAgIFJlbmRlclRleHQ6OnNldFRleHQob3JpZ2luYWxUZXh0KCksIHRydWUp
OwpAQCAtODA4LDcgKzgwOCw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExv
Z2ljYWwKICAgICBmbG9hdCBtYXhXb3JkV2lkdGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0
Pjo6bWF4KCk7CiAgICAgdW5zaWduZWQgbWluaW11bVByZWZpeExlbmd0aCA9IDA7CiAgICAgdW5z
aWduZWQgbWluaW11bVN1ZmZpeExlbmd0aCA9IDA7Ci0gICAgaWYgKHN0eWxlLmh5cGhlbnMoKSA9
PSBIeXBoZW5zQXV0byAmJiBjYW5IeXBoZW5hdGUoc3R5bGUubG9jYWxlKCkpKSB7CisgICAgaWYg
KHN0eWxlLmh5cGhlbnMoKSA9PSBIeXBoZW5zOjpBdXRvICYmIGNhbkh5cGhlbmF0ZShzdHlsZS5s
b2NhbGUoKSkpIHsKICAgICAgICAgbWF4V29yZFdpZHRoID0gMDsKIAogICAgICAgICAvLyBNYXAg
J2h5cGhlbmF0ZS1saW1pdC17YmVmb3JlLGFmdGVyfTogYXV0bzsnIHRvIDIuCkBAIC04NjUsNyAr
ODY1LDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbAogICAgICAg
ICAgICAgQVNTRVJUKGxhc3RXb3JkQm91bmRhcnkgPT0gaSk7CiAgICAgICAgICAgICBsYXN0V29y
ZEJvdW5kYXJ5Kys7CiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfSBlbHNlIGlmIChj
ID09IHNvZnRIeXBoZW4gJiYgc3R5bGUuaHlwaGVucygpICE9IEh5cGhlbnNOb25lKSB7CisgICAg
ICAgIH0gZWxzZSBpZiAoYyA9PSBzb2Z0SHlwaGVuICYmIHN0eWxlLmh5cGhlbnMoKSAhPSBIeXBo
ZW5zOjpOb25lKSB7CiAgICAgICAgICAgICBBU1NFUlQoaSA+PSBsYXN0V29yZEJvdW5kYXJ5KTsK
ICAgICAgICAgICAgIGN1cnJNYXhXaWR0aCArPSB3aWR0aEZyb21DYWNoZShmb250LCBsYXN0V29y
ZEJvdW5kYXJ5LCBpIC0gbGFzdFdvcmRCb3VuZGFyeSwgbGVhZFdpZHRoICsgY3Vyck1heFdpZHRo
LCAmZmFsbGJhY2tGb250cywgJmdseXBoT3ZlcmZsb3csIHN0eWxlKTsKICAgICAgICAgICAgIGlm
ICghZmlyc3RHbHlwaExlZnRPdmVyZmxvdykKQEAgLTg3Nyw3ICs4NzcsNyBAQCB2b2lkIFJlbmRl
clRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsCiAgICAgICAgIGJvb2wgaGFzQnJlYWsgPSBi
cmVha0FsbCB8fCBpc0JyZWFrYWJsZShicmVha0l0ZXJhdG9yLCBpLCBuZXh0QnJlYWthYmxlLCBi
cmVha05CU1AsIGNhblVzZUxpbmVCcmVha1Nob3J0Y3V0LCBrZWVwQWxsV29yZHMpOwogICAgICAg
ICBib29sIGJldHdlZW5Xb3JkcyA9IHRydWU7CiAgICAgICAgIHVuc2lnbmVkIGogPSBpOwotICAg
ICAgICB3aGlsZSAoYyAhPSAnXG4nICYmICFpc1NwYWNlQWNjb3JkaW5nVG9TdHlsZShjLCBzdHls
ZSkgJiYgYyAhPSAnXHQnICYmIChjICE9IHNvZnRIeXBoZW4gfHwgc3R5bGUuaHlwaGVucygpID09
IEh5cGhlbnNOb25lKSkgeworICAgICAgICB3aGlsZSAoYyAhPSAnXG4nICYmICFpc1NwYWNlQWNj
b3JkaW5nVG9TdHlsZShjLCBzdHlsZSkgJiYgYyAhPSAnXHQnICYmIChjICE9IHNvZnRIeXBoZW4g
fHwgc3R5bGUuaHlwaGVucygpID09IEh5cGhlbnM6Ok5vbmUpKSB7CiAgICAgICAgICAgICBqKys7
CiAgICAgICAgICAgICBpZiAoaiA9PSBsZW5ndGgpCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC05MDIsNyArOTAyLDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNh
bAogICAgICAgICAgICAgICAgIHcgPSB3aWR0aEZyb21DYWNoZShmb250LCBpLCB3b3JkTGVuICsg
MSwgbGVhZFdpZHRoICsgY3Vyck1heFdpZHRoLCAmZmFsbGJhY2tGb250cywgJmdseXBoT3ZlcmZs
b3csIHN0eWxlKSAtIHdvcmRUcmFpbGluZ1NwYWNlV2lkdGgudmFsdWUoKTsKICAgICAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgICAgIHcgPSB3aWR0aEZyb21DYWNoZShmb250LCBpLCB3b3Jk
TGVuLCBsZWFkV2lkdGggKyBjdXJyTWF4V2lkdGgsICZmYWxsYmFja0ZvbnRzLCAmZ2x5cGhPdmVy
Zmxvdywgc3R5bGUpOwotICAgICAgICAgICAgICAgIGlmIChjID09IHNvZnRIeXBoZW4gJiYgc3R5
bGUuaHlwaGVucygpICE9IEh5cGhlbnNOb25lKQorICAgICAgICAgICAgICAgIGlmIChjID09IHNv
ZnRIeXBoZW4gJiYgc3R5bGUuaHlwaGVucygpICE9IEh5cGhlbnM6Ok5vbmUpCiAgICAgICAgICAg
ICAgICAgICAgIGN1cnJNaW5XaWR0aCA9IGh5cGhlbldpZHRoKCp0aGlzLCBmb250KTsKICAgICAg
ICAgICAgIH0KIApAQCAtMTAwNSw3ICsxMDA1LDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRl
UHJlZmVycmVkTG9naWNhbAogICAgIGlmICghc3R5bGUuYXV0b1dyYXAoKSkKICAgICAgICAgbV9t
aW5XaWR0aCA9IG1fbWF4V2lkdGg7CiAKLSAgICBpZiAoc3R5bGUud2hpdGVTcGFjZSgpID09IFBS
RSkgeworICAgIGlmIChzdHlsZS53aGl0ZVNwYWNlKCkgPT0gV2hpdGVTcGFjZTo6UHJlKSB7CiAg
ICAgICAgIGlmIChmaXJzdExpbmUpCiAgICAgICAgICAgICBtX2JlZ2luTWluV2lkdGggPSBtX21h
eFdpZHRoOwogICAgICAgICBtX2VuZE1pbldpZHRoID0gY3Vyck1heFdpZHRoOwpAQCAtMTEzNywx
MyArMTEzNywxMyBAQCBMYXlvdXRVbml0IFJlbmRlclRleHQ6OnRvcE9mRmlyc3RUZXh0KCkgCiBT
dHJpbmcgYXBwbHlUZXh0VHJhbnNmb3JtKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3Qg
U3RyaW5nJiB0ZXh0LCBVQ2hhciBwcmV2aW91c0NoYXJhY3RlcikKIHsKICAgICBzd2l0Y2ggKHN0
eWxlLnRleHRUcmFuc2Zvcm0oKSkgewotICAgIGNhc2UgVFROT05FOgorICAgIGNhc2UgVGV4dFRy
YW5zZm9ybTo6Tm9uZToKICAgICAgICAgcmV0dXJuIHRleHQ7Ci0gICAgY2FzZSBDQVBJVEFMSVpF
OgorICAgIGNhc2UgVGV4dFRyYW5zZm9ybTo6Q2FwaXRhbGl6ZToKICAgICAgICAgcmV0dXJuIGNh
cGl0YWxpemUodGV4dCwgcHJldmlvdXNDaGFyYWN0ZXIpOyAvLyBGSVhNRTogTmVlZCB0byB0YWtl
IGxvY2FsZSBpbnRvIGFjY291bnQuCi0gICAgY2FzZSBVUFBFUkNBU0U6CisgICAgY2FzZSBUZXh0
VHJhbnNmb3JtOjpVcHBlcmNhc2U6CiAgICAgICAgIHJldHVybiB0ZXh0LmNvbnZlcnRUb1VwcGVy
Y2FzZVdpdGhMb2NhbGUoc3R5bGUubG9jYWxlKCkpOwotICAgIGNhc2UgTE9XRVJDQVNFOgorICAg
IGNhc2UgVGV4dFRyYW5zZm9ybTo6TG93ZXJjYXNlOgogICAgICAgICByZXR1cm4gdGV4dC5jb252
ZXJ0VG9Mb3dlcmNhc2VXaXRoTG9jYWxlKHN0eWxlLmxvY2FsZSgpKTsKICAgICB9CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dEZyYWdtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dEZyYWdtZW50LmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0
LDcgKzc0LDcgQEAgdm9pZCBSZW5kZXJUZXh0RnJhZ21lbnQ6OnN0eWxlRGlkQ2hhbmdlKAogICAg
IFJlbmRlclRleHQ6OnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0eWxlKTsKIAogICAgIGlmIChS
ZW5kZXJCbG9jayogYmxvY2sgPSBibG9ja0ZvckFjY29tcGFueWluZ0ZpcnN0TGV0dGVyKCkpCi0g
ICAgICAgIGJsb2NrLT5tdXRhYmxlU3R5bGUoKS5yZW1vdmVDYWNoZWRQc2V1ZG9TdHlsZShGSVJT
VF9MRVRURVIpOworICAgICAgICBibG9jay0+bXV0YWJsZVN0eWxlKCkucmVtb3ZlQ2FjaGVkUHNl
dWRvU3R5bGUoUHNldWRvSWQ6OkZpcnN0TGV0dGVyKTsKIH0KIAogdm9pZCBSZW5kZXJUZXh0RnJh
Z21lbnQ6OnNldFRleHQoY29uc3QgU3RyaW5nJiBuZXdUZXh0LCBib29sIGZvcmNlKQpAQCAtMTEw
LDcgKzExMCw3IEBAIFJlbmRlckJsb2NrKiBSZW5kZXJUZXh0RnJhZ21lbnQ6OmJsb2NrRm8KICAg
ICBmb3IgKGF1dG8mIGJsb2NrIDogYW5jZXN0b3JzT2ZUeXBlPFJlbmRlckJsb2NrPigqbV9maXJz
dExldHRlcikpIHsKICAgICAgICAgaWYgKGlzPFJlbmRlck11bHRpQ29sdW1uRmxvdz4oYmxvY2sp
KQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGlmIChibG9jay5zdHlsZSgpLmhhc1BzZXVk
b1N0eWxlKEZJUlNUX0xFVFRFUikgJiYgYmxvY2suY2FuSGF2ZUNoaWxkcmVuKCkpCisgICAgICAg
IGlmIChibG9jay5zdHlsZSgpLmhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkOjpGaXJzdExldHRlcikg
JiYgYmxvY2suY2FuSGF2ZUNoaWxkcmVuKCkpCiAgICAgICAgICAgICByZXR1cm4gJmJsb2NrOwog
ICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lLmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksMTMgKzc5LDEzIEBA
IHZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdFN0eWxlKFN0eWxlUmVzb2wKIHsKICAgICAvLyBGb3Jj
ZSBpbmxpbmUgYW5kIHRhYmxlIGRpc3BsYXkgc3R5bGVzIHRvIGJlIGlubGluZS1ibG9jayAoZXhj
ZXB0IGZvciB0YWJsZS0gd2hpY2ggaXMgYmxvY2spCiAgICAgQ29udHJvbFBhcnQgcGFydCA9IHN0
eWxlLmFwcGVhcmFuY2UoKTsKLSAgICBpZiAoc3R5bGUuZGlzcGxheSgpID09IElOTElORSB8fCBz
dHlsZS5kaXNwbGF5KCkgPT0gSU5MSU5FX1RBQkxFIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBUQUJM
RV9ST1dfR1JPVVAKLSAgICAgICAgfHwgc3R5bGUuZGlzcGxheSgpID09IFRBQkxFX0hFQURFUl9H
Uk9VUCB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gVEFCTEVfRk9PVEVSX0dST1VQCi0gICAgICAgIHx8
IHN0eWxlLmRpc3BsYXkoKSA9PSBUQUJMRV9ST1cgfHwgc3R5bGUuZGlzcGxheSgpID09IFRBQkxF
X0NPTFVNTl9HUk9VUCB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gVEFCTEVfQ09MVU1OCi0gICAgICAg
IHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBUQUJMRV9DRUxMIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBU
QUJMRV9DQVBUSU9OKQotICAgICAgICBzdHlsZS5zZXREaXNwbGF5KElOTElORV9CTE9DSyk7Ci0g
ICAgZWxzZSBpZiAoc3R5bGUuZGlzcGxheSgpID09IENPTVBBQ1QgfHwgc3R5bGUuZGlzcGxheSgp
ID09IExJU1RfSVRFTSB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gVEFCTEUpCi0gICAgICAgIHN0eWxl
LnNldERpc3BsYXkoQkxPQ0spOworICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5
cGU6OklubGluZSB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OklubGluZVRhYmxl
IHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGVSb3dHcm91cAorICAgICAg
ICB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxlSGVhZGVyR3JvdXAgfHwg
c3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpUYWJsZUZvb3Rlckdyb3VwCisgICAgICAg
IHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGVSb3cgfHwgc3R5bGUuZGlz
cGxheSgpID09IERpc3BsYXlUeXBlOjpUYWJsZUNvbHVtbkdyb3VwIHx8IHN0eWxlLmRpc3BsYXko
KSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1bW4KKyAgICAgICAgfHwgc3R5bGUuZGlzcGxheSgp
ID09IERpc3BsYXlUeXBlOjpUYWJsZUNlbGwgfHwgc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlU
eXBlOjpUYWJsZUNhcHRpb24pCisgICAgICAgIHN0eWxlLnNldERpc3BsYXkoRGlzcGxheVR5cGU6
OklubGluZUJsb2NrKTsKKyAgICBlbHNlIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5
cGU6OkNvbXBhY3QgfHwgc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpMaXN0SXRlbSB8
fCBzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxlKQorICAgICAgICBzdHlsZS5z
ZXREaXNwbGF5KERpc3BsYXlUeXBlOjpCbG9jayk7CiAKICAgICBpZiAoVUFIYXNBcHBlYXJhbmNl
ICYmIGlzQ29udHJvbFN0eWxlZChzdHlsZSwgYm9yZGVyLCBiYWNrZ3JvdW5kLCBiYWNrZ3JvdW5k
Q29sb3IpKSB7CiAgICAgICAgIHN3aXRjaCAocGFydCkgewpAQCAtMTU0LDcgKzE1NCw3IEBAIHZv
aWQgUmVuZGVyVGhlbWU6OmFkanVzdFN0eWxlKFN0eWxlUmVzb2wKIAogICAgICAgICAvLyBXaGl0
ZXNwYWNlCiAgICAgICAgIGlmIChUaGVtZTo6c2luZ2xldG9uKCkuY29udHJvbFJlcXVpcmVzUHJl
V2hpdGVTcGFjZShwYXJ0KSkKLSAgICAgICAgICAgIHN0eWxlLnNldFdoaXRlU3BhY2UoUFJFKTsK
KyAgICAgICAgICAgIHN0eWxlLnNldFdoaXRlU3BhY2UoV2hpdGVTcGFjZTo6UHJlKTsKIAogICAg
ICAgICAvLyBXaWR0aCAvIEhlaWdodAogICAgICAgICAvLyBUaGUgd2lkdGggYW5kIGhlaWdodCBo
ZXJlIGFyZSBhZmZlY3RlZCBieSB0aGUgem9vbS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTMyNCw3
ICsxMzI0LDcgQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6YWRqdXN0TWVudUxpc3RTdHlsZQogICAg
IHN0eWxlLnNldEhlaWdodChMZW5ndGgoQXV0bykpOwogCiAgICAgLy8gV2hpdGUtc3BhY2UgaXMg
bG9ja2VkIHRvIHByZQotICAgIHN0eWxlLnNldFdoaXRlU3BhY2UoUFJFKTsKKyAgICBzdHlsZS5z
ZXRXaGl0ZVNwYWNlKFdoaXRlU3BhY2U6OlByZSk7CiAKICAgICAvLyBTZXQgdGhlIGZvcmVncm91
bmQgY29sb3IgdG8gYmxhY2sgb3IgZ3JheSB3aGVuIHdlIGhhdmUgdGhlIGFxdWEgbG9vay4KICAg
ICBDb2xvciBjID0gQ29sb3I6OmRhcmtHcmF5OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03ODIs
NyArNzgyLDcgQEAgdm9pZCBSZW5kZXJUaGVtZVdpbjo6YWRqdXN0TWVudUxpc3RCdXR0bwogICAg
IHN0eWxlLnNldExpbmVIZWlnaHQoUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0KCkpOwog
ICAgIAogICAgIC8vIFdoaXRlLXNwYWNlIGlzIGxvY2tlZCB0byBwcmUKLSAgICBzdHlsZS5zZXRX
aGl0ZVNwYWNlKFBSRSk7CisgICAgc3R5bGUuc2V0V2hpdGVTcGFjZShXaGl0ZVNwYWNlOjpQcmUp
OwogfQogCiBib29sIFJlbmRlclRoZW1lV2luOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlv
bnMoY29uc3QgUmVuZGVyQm94JiByZW5kZXJlciwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk0LDcgKzM5NCw3IEBAIFJlbmRl
ckVsZW1lbnQqIFJlbmRlclZpZXc6OnJlbmRlcmVyRm9yUm8KIHN0YXRpYyBpbmxpbmUgYm9vbCBy
ZW5kZXJlck9ic2N1cmVzQmFja2dyb3VuZChjb25zdCBSZW5kZXJFbGVtZW50JiByb290RWxlbWVu
dCkKIHsKICAgICBhdXRvJiBzdHlsZSA9IHJvb3RFbGVtZW50LnN0eWxlKCk7Ci0gICAgaWYgKHN0
eWxlLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8IHN0eWxlLm9wYWNpdHkoKSAhPSAxIHx8IHN0
eWxlLmhhc1RyYW5zZm9ybSgpKQorICAgIGlmIChzdHlsZS52aXNpYmlsaXR5KCkgIT0gVmlzaWJp
bGl0eTo6VmlzaWJsZSB8fCBzdHlsZS5vcGFjaXR5KCkgIT0gMSB8fCBzdHlsZS5oYXNUcmFuc2Zv
cm0oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKHN0eWxlLmhhc0JvcmRlclJh
ZGl1cygpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAJ
KHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRn
ZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBSZW5kZXJXaWRn
ZXQ6OnNldFdpZGdldChSZWZQdHI8V2lkZwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBW
SVNJQkxFKQorICAgICAgICAgICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxp
dHk6OlZpc2libGUpCiAgICAgICAgICAgICAgICAgbV93aWRnZXQtPmhpZGUoKTsKICAgICAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgICAgIG1fd2lkZ2V0LT5zaG93KCk7CkBAIC0yMTAsNyAr
MjEwLDcgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRAogewogICAg
IFJlbmRlclJlcGxhY2VkOjpzdHlsZURpZENoYW5nZShkaWZmLCBvbGRTdHlsZSk7CiAgICAgaWYg
KG1fd2lkZ2V0KSB7Ci0gICAgICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxF
KQorICAgICAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJs
ZSkKICAgICAgICAgICAgIG1fd2lkZ2V0LT5oaWRlKCk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIG1fd2lkZ2V0LT5zaG93KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9v
dElubGluZUJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jv
b3RJbmxpbmVCb3guY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUm9vdElubGluZUJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MCw3ICsxNjAsNyBA
QCBmbG9hdCBSb290SW5saW5lQm94OjpwbGFjZUVsbGlwc2lzQm94KGJvCiAKIHZvaWQgUm9vdElu
bGluZUJveDo6cGFpbnRFbGxpcHNpc0JveChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGlu
ZUJvdHRvbSkgY29uc3QKIHsKLSAgICBpZiAoaGFzRWxsaXBzaXNCb3goKSAmJiBwYWludEluZm8u
c2hvdWxkUGFpbnRXaXRoaW5Sb290KHJlbmRlcmVyKCkpICYmIHJlbmRlcmVyKCkuc3R5bGUoKS52
aXNpYmlsaXR5KCkgPT0gVklTSUJMRQorICAgIGlmIChoYXNFbGxpcHNpc0JveCgpICYmIHBhaW50
SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QocmVuZGVyZXIoKSkgJiYgcmVuZGVyZXIoKS5zdHls
ZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlCiAgICAgICAgICAgICAmJiBw
YWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91bmQpCiAgICAgICAgIGVsbGlwc2lz
Qm94KCktPnBhaW50KHBhaW50SW5mbywgcGFpbnRPZmZzZXQsIGxpbmVUb3AsIGxpbmVCb3R0b20p
OwogfQpAQCAtMzM1LDcgKzMzNSw3IEBAIExheW91dFVuaXQgUm9vdElubGluZUJveDo6bGluZVNu
YXBBZGp1c3QKIHsKICAgICAvLyBJZiBvdXIgYmxvY2sgZG9lc24ndCBoYXZlIHNuYXBwaW5nIHR1
cm5lZCBvbiwgZG8gbm90aGluZy4KICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGJvdW5kcyBzbmFw
cGluZy4KLSAgICBpZiAoYmxvY2tGbG93KCkuc3R5bGUoKS5saW5lU25hcCgpID09IExpbmVTbmFw
Tm9uZSkKKyAgICBpZiAoYmxvY2tGbG93KCkuc3R5bGUoKS5saW5lU25hcCgpID09IExpbmVTbmFw
OjpOb25lKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIEdldCB0aGUgY3VycmVudCBsaW5l
IGdyaWQgYW5kIG9mZnNldC4KQEAgLTM4Miw3ICszODIsNyBAQCBMYXlvdXRVbml0IFJvb3RJbmxp
bmVCb3g6OmxpbmVTbmFwQWRqdXN0CiAgICAgICAgICAgICBmaXJzdFRleHRUb3AgPSBwYWdlTG9n
aWNhbFRvcCArIGxpbmVHcmlkQm94LT5sb2dpY2FsVG9wKCkgLSBsaW5lR3JpZC0+Ym9yZGVyQW5k
UGFkZGluZ0JlZm9yZSgpICsgbGluZUdyaWRQYWdpbmF0aW9uT3JpZ2luOwogICAgIH0KIAotICAg
IGlmIChibG9ja0Zsb3coKS5zdHlsZSgpLmxpbmVTbmFwKCkgPT0gTGluZVNuYXBDb250YWluKSB7
CisgICAgaWYgKGJsb2NrRmxvdygpLnN0eWxlKCkubGluZVNuYXAoKSA9PSBMaW5lU25hcDo6Q29u
dGFpbikgewogICAgICAgICAvLyBDb21wdXRlIHRoZSBkZXNpcmVkIG9mZnNldCBmcm9tIHRoZSB0
ZXh0LXRvcCBvZiBhIGdyaWQgbGluZS4KICAgICAgICAgLy8gTG9vayBhdCBvdXIgaGVpZ2h0IChs
b2dpY2FsSGVpZ2h0KCkpLgogICAgICAgICAvLyBMb29rIGF0IHRoZSB0b3RhbCBhdmFpbGFibGUg
aGVpZ2h0LiBJdCdzIGdvaW5nIHRvIGJlICh0ZXh0Qm90dG9tIC0gdGV4dFRvcCkgKyAobi0xKSoo
bXVsdGlwbGUgd2l0aCBsZWFkaW5nKQpAQCAtNDYwLDcgKzQ2MCw3IEBAIEdhcFJlY3RzIFJvb3RJ
bmxpbmVCb3g6OmxpbmVTZWxlY3Rpb25HYXAKICAgICAgICAgICAgICAgICBsb2dpY2FsUmVjdC5t
b3ZlKHJlbmRlcmVyKCkuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG9mZnNldEZyb21Sb290
QmxvY2sgOiBMYXlvdXRTaXplKG9mZnNldEZyb21Sb290QmxvY2suaGVpZ2h0KCksIG9mZnNldEZy
b21Sb290QmxvY2sud2lkdGgoKSkpOwogICAgICAgICAgICAgICAgIExheW91dFJlY3QgZ2FwUmVj
dCA9IHJvb3RCbG9jay5sb2dpY2FsUmVjdFRvUGh5c2ljYWxSZWN0KHJvb3RCbG9ja1BoeXNpY2Fs
UG9zaXRpb24sIGxvZ2ljYWxSZWN0KTsKICAgICAgICAgICAgICAgICBpZiAoaXNQcmV2aW91c0Jv
eFNlbGVjdGVkICYmIGdhcFJlY3Qud2lkdGgoKSA+IDAgJiYgZ2FwUmVjdC5oZWlnaHQoKSA+IDAp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHBhaW50SW5mbyAmJiBib3gtPnBhcmVudCgpLT5y
ZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUpCisgICAgICAgICAgICAg
ICAgICAgIGlmIChwYWludEluZm8gJiYgYm94LT5wYXJlbnQoKS0+cmVuZGVyZXIoKS5zdHlsZSgp
LnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICAgICAgICAgICAg
ICAgICAgcGFpbnRJbmZvLT5jb250ZXh0KCkuZmlsbFJlY3QoZ2FwUmVjdCwgYm94LT5wYXJlbnQo
KS0+cmVuZGVyZXIoKS5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSk7CiAgICAgICAgICAgICAg
ICAgICAgIC8vIFZpc2libGVTZWxlY3Rpb24gbWF5IGJlIG5vbi1jb250aWd1b3VzLCBzZWUgY29t
bWVudCBhYm92ZS4KICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnVuaXRlQ2VudGVyKGdhcFJl
Y3QpOwpAQCAtNDk4LDIwICs0OTgsMjAgQEAgSW50UmVjdCBSb290SW5saW5lQm94Ojpjb21wdXRl
Q2FyZXRSZWN0KAogCiAgICAgYm9vbCByaWdodEFsaWduZWQgPSBmYWxzZTsKICAgICBzd2l0Y2gg
KGJsb2NrU3R5bGUudGV4dEFsaWduKCkpIHsKLSAgICBjYXNlIFJJR0hUOgotICAgIGNhc2UgV0VC
S0lUX1JJR0hUOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CisgICAgY2FzZSBUZXh0
QWxpZ25Nb2RlOjpXZWJLaXRSaWdodDoKICAgICAgICAgcmlnaHRBbGlnbmVkID0gdHJ1ZTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMRUZUOgotICAgIGNhc2UgV0VCS0lUX0xFRlQ6Ci0gICAg
Y2FzZSBDRU5URVI6Ci0gICAgY2FzZSBXRUJLSVRfQ0VOVEVSOgorICAgIGNhc2UgVGV4dEFsaWdu
TW9kZTo6TGVmdDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdExlZnQ6CisgICAgY2Fz
ZSBUZXh0QWxpZ25Nb2RlOjpDZW50ZXI6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRD
ZW50ZXI6CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSlVTVElGWToKLSAgICBjYXNlIFRBU1RB
UlQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5OgorICAgIGNhc2UgVGV4dEFsaWdu
TW9kZTo6U3RhcnQ6CiAgICAgICAgIHJpZ2h0QWxpZ25lZCA9ICFibG9ja1N0eWxlLmlzTGVmdFRv
UmlnaHREaXJlY3Rpb24oKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUQUVORDoKKyAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OkVuZDoKICAgICAgICAgcmlnaHRBbGlnbmVkID0gYmxvY2tTdHls
ZS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAJKHJldmlz
aW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDcgKzE2Myw3IEBAIHN0YXRpYyBBdm9pZGFuY2VS
ZWFzb25GbGFncyBjYW5Vc2VGb3JGb24KICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBsaW5lSGVp
Z2h0Q29uc3RyYWludDsKICAgICBpZiAoc3R5bGUubGluZUJveENvbnRhaW4oKSAmIExpbmVCb3hD
b250YWluR2x5cGhzKQogICAgICAgICBsaW5lSGVpZ2h0Q29uc3RyYWludCA9IGxpbmVIZWlnaHRG
cm9tRmxvdyhmbG93KS50b0Zsb2F0KCk7Ci0gICAgYm9vbCBmbG93SXNKdXN0aWZpZWQgPSBzdHls
ZS50ZXh0QWxpZ24oKSA9PSBKVVNUSUZZOworICAgIGJvb2wgZmxvd0lzSnVzdGlmaWVkID0gc3R5
bGUudGV4dEFsaWduKCkgPT0gVGV4dEFsaWduTW9kZTo6SnVzdGlmeTsKICAgICBmb3IgKGNvbnN0
IGF1dG8mIHRleHRSZW5kZXJlciA6IGNoaWxkcmVuT2ZUeXBlPFJlbmRlclRleHQ+KGZsb3cpKSB7
CiAgICAgICAgIC8vIEZJWE1FOiBEbyBub3QgcmV0dXJuIHVudGlsIGFmdGVyIGNoZWNraW5nIGFs
bCBjaGlsZHJlbi4KICAgICAgICAgaWYgKHRleHRSZW5kZXJlci50ZXh0KCkuaXNFbXB0eSgpKQpA
QCAtMjE1LDI1ICsyMTUsMjUgQEAgc3RhdGljIEF2b2lkYW5jZVJlYXNvbkZsYWdzIGNhblVzZUZv
clN0eQogICAgICAgICBTRVRfUkVBU09OX0FORF9SRVRVUk5fSUZfTkVFREVEKEZsb3dIYXNMaW5l
QnJlYWssIHJlYXNvbnMsIGluY2x1ZGVSZWFzb25zKTsKICAgICBpZiAoc3R5bGUudW5pY29kZUJp
ZGkoKSAhPSBVQk5vcm1hbCkKICAgICAgICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lGX05FRURF
RChGbG93SGFzTm9uTm9ybWFsVW5pY29kZUJpRGksIHJlYXNvbnMsIGluY2x1ZGVSZWFzb25zKTsK
LSAgICBpZiAoc3R5bGUucnRsT3JkZXJpbmcoKSAhPSBMb2dpY2FsT3JkZXIpCisgICAgaWYgKHN0
eWxlLnJ0bE9yZGVyaW5nKCkgIT0gT3JkZXI6OkxvZ2ljYWwpCiAgICAgICAgIFNFVF9SRUFTT05f
QU5EX1JFVFVSTl9JRl9ORUVERUQoRmxvd0hhc1JUTE9yZGVyaW5nLCByZWFzb25zLCBpbmNsdWRl
UmVhc29ucyk7Ci0gICAgaWYgKHN0eWxlLmxpbmVBbGlnbigpICE9IExpbmVBbGlnbk5vbmUpCisg
ICAgaWYgKHN0eWxlLmxpbmVBbGlnbigpICE9IExpbmVBbGlnbjo6Tm9uZSkKICAgICAgICAgU0VU
X1JFQVNPTl9BTkRfUkVUVVJOX0lGX05FRURFRChGbG93SGFzTGluZUFsaWduRWRnZXMsIHJlYXNv
bnMsIGluY2x1ZGVSZWFzb25zKTsKLSAgICBpZiAoc3R5bGUubGluZVNuYXAoKSAhPSBMaW5lU25h
cE5vbmUpCisgICAgaWYgKHN0eWxlLmxpbmVTbmFwKCkgIT0gTGluZVNuYXA6Ok5vbmUpCiAgICAg
ICAgIFNFVF9SRUFTT05fQU5EX1JFVFVSTl9JRl9ORUVERUQoRmxvd0hhc0xpbmVTbmFwLCByZWFz
b25zLCBpbmNsdWRlUmVhc29ucyk7Ci0gICAgaWYgKHN0eWxlLnRleHRFbXBoYXNpc0ZpbGwoKSAh
PSBUZXh0RW1waGFzaXNGaWxsRmlsbGVkIHx8IHN0eWxlLnRleHRFbXBoYXNpc01hcmsoKSAhPSBU
ZXh0RW1waGFzaXNNYXJrTm9uZSkKKyAgICBpZiAoc3R5bGUudGV4dEVtcGhhc2lzRmlsbCgpICE9
IFRleHRFbXBoYXNpc0ZpbGw6OkZpbGxlZCB8fCBzdHlsZS50ZXh0RW1waGFzaXNNYXJrKCkgIT0g
VGV4dEVtcGhhc2lzTWFyazo6Tm9uZSkKICAgICAgICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lG
X05FRURFRChGbG93SGFzVGV4dEVtcGhhc2lzRmlsbE9yTWFyaywgcmVhc29ucywgaW5jbHVkZVJl
YXNvbnMpOwogICAgIGlmIChzdHlsZS50ZXh0U2hhZG93KCkpCiAgICAgICAgIFNFVF9SRUFTT05f
QU5EX1JFVFVSTl9JRl9ORUVERUQoRmxvd0hhc1RleHRTaGFkb3csIHJlYXNvbnMsIGluY2x1ZGVS
ZWFzb25zKTsKLSAgICBpZiAoc3R5bGUuaGFzUHNldWRvU3R5bGUoRklSU1RfTElORSkpCisgICAg
aWYgKHN0eWxlLmhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkOjpGaXJzdExpbmUpKQogICAgICAgICBT
RVRfUkVBU09OX0FORF9SRVRVUk5fSUZfTkVFREVEKEZsb3dIYXNQc2V1ZG9GaXJzdExpbmUsIHJl
YXNvbnMsIGluY2x1ZGVSZWFzb25zKTsKLSAgICBpZiAoc3R5bGUuaGFzUHNldWRvU3R5bGUoRklS
U1RfTEVUVEVSKSkKKyAgICBpZiAoc3R5bGUuaGFzUHNldWRvU3R5bGUoUHNldWRvSWQ6OkZpcnN0
TGV0dGVyKSkKICAgICAgICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lGX05FRURFRChGbG93SGFz
UHNldWRvRmlyc3RMZXR0ZXIsIHJlYXNvbnMsIGluY2x1ZGVSZWFzb25zKTsKICAgICBpZiAoc3R5
bGUuaGFzVGV4dENvbWJpbmUoKSkKICAgICAgICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lGX05F
RURFRChGbG93SGFzVGV4dENvbWJpbmUsIHJlYXNvbnMsIGluY2x1ZGVSZWFzb25zKTsKICAgICBp
ZiAoc3R5bGUuYmFja2dyb3VuZENsaXAoKSA9PSBGaWxsQm94OjpUZXh0KQogICAgICAgICBTRVRf
UkVBU09OX0FORF9SRVRVUk5fSUZfTkVFREVEKEZsb3dIYXNUZXh0RmlsbEJveCwgcmVhc29ucywg
aW5jbHVkZVJlYXNvbnMpOwotICAgIGlmIChzdHlsZS5ib3JkZXJGaXQoKSA9PSBCb3JkZXJGaXRM
aW5lcykKKyAgICBpZiAoc3R5bGUuYm9yZGVyRml0KCkgPT0gQm9yZGVyRml0OjpMaW5lcykKICAg
ICAgICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lGX05FRURFRChGbG93SGFzQm9yZGVyRml0TGlu
ZXMsIHJlYXNvbnMsIGluY2x1ZGVSZWFzb25zKTsKICAgICBpZiAoc3R5bGUubGluZUJyZWFrKCkg
IT0gTGluZUJyZWFrOjpBdXRvKQogICAgICAgICBTRVRfUkVBU09OX0FORF9SRVRVUk5fSUZfTkVF
REVEKEZsb3dIYXNOb25BdXRvTGluZUJyZWFrLCByZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7CkBA
IC0yNDMsNyArMjQzLDcgQEAgc3RhdGljIEF2b2lkYW5jZVJlYXNvbkZsYWdzIGNhblVzZUZvclN0
eQogICAgIGlmIChzdHlsZS50cmFpbGluZ1dvcmQoKSAhPSBUcmFpbGluZ1dvcmQ6OkF1dG8pCiAg
ICAgICAgIFNFVF9SRUFTT05fQU5EX1JFVFVSTl9JRl9ORUVERUQoRmxvd0hhc05vbkF1dG9UcmFp
bGluZ1dvcmQsIHJlYXNvbnMsIGluY2x1ZGVSZWFzb25zKTsKICNlbmRpZgotICAgIGlmIChzdHls
ZS5oeXBoZW5zKCkgPT0gSHlwaGVuc0F1dG8pIHsKKyAgICBpZiAoc3R5bGUuaHlwaGVucygpID09
IEh5cGhlbnM6OkF1dG8pIHsKICAgICAgICAgYXV0byB0ZXh0UmVhc29ucyA9IGNhblVzZUZvclRl
eHQoc3R5bGUuaHlwaGVuU3RyaW5nKCksIHN0eWxlLmZvbnRDYXNjYWRlKCksIHN0ZDo6bnVsbG9w
dCwgZmFsc2UsIGluY2x1ZGVSZWFzb25zKTsKICAgICAgICAgaWYgKHRleHRSZWFzb25zICE9IE5v
UmVhc29uKQogICAgICAgICAgICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lGX05FRURFRCh0ZXh0
UmVhc29ucywgcmVhc29ucywgaW5jbHVkZVJlYXNvbnMpOwpAQCAtMzU1LDIzICszNTUsMjMgQEAg
Ym9vbCBjYW5Vc2VGb3IoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbAogICAgIHJldHVybiBjYW5V
c2VGb3JXaXRoUmVhc29uKGZsb3csIEluY2x1ZGVSZWFzb25zOjpGaXJzdCkgPT0gTm9SZWFzb247
CiB9CiAKLXN0YXRpYyBmbG9hdCBjb21wdXRlTGluZUxlZnQoRVRleHRBbGlnbiB0ZXh0QWxpZ24s
IGZsb2F0IGF2YWlsYWJsZVdpZHRoLCBmbG9hdCBjb21taXR0ZWRXaWR0aCwgZmxvYXQgbG9naWNh
bExlZnRPZmZzZXQpCitzdGF0aWMgZmxvYXQgY29tcHV0ZUxpbmVMZWZ0KFRleHRBbGlnbk1vZGUg
dGV4dEFsaWduLCBmbG9hdCBhdmFpbGFibGVXaWR0aCwgZmxvYXQgY29tbWl0dGVkV2lkdGgsIGZs
b2F0IGxvZ2ljYWxMZWZ0T2Zmc2V0KQogewogICAgIGZsb2F0IHJlbWFpbmluZ1dpZHRoID0gYXZh
aWxhYmxlV2lkdGggLSBjb21taXR0ZWRXaWR0aDsKICAgICBmbG9hdCBsZWZ0ID0gbG9naWNhbExl
ZnRPZmZzZXQ7CiAgICAgc3dpdGNoICh0ZXh0QWxpZ24pIHsKLSAgICBjYXNlIExFRlQ6Ci0gICAg
Y2FzZSBXRUJLSVRfTEVGVDoKLSAgICBjYXNlIFRBU1RBUlQ6CisgICAgY2FzZSBUZXh0QWxpZ25N
b2RlOjpMZWZ0OgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0TGVmdDoKKyAgICBjYXNl
IFRleHRBbGlnbk1vZGU6OlN0YXJ0OgogICAgICAgICByZXR1cm4gbGVmdDsKLSAgICBjYXNlIFJJ
R0hUOgotICAgIGNhc2UgV0VCS0lUX1JJR0hUOgotICAgIGNhc2UgVEFFTkQ6CisgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpSaWdodDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0
OgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6RW5kOgogICAgICAgICByZXR1cm4gbGVmdCArIHN0
ZDo6bWF4PGZsb2F0PihyZW1haW5pbmdXaWR0aCwgMCk7Ci0gICAgY2FzZSBDRU5URVI6Ci0gICAg
Y2FzZSBXRUJLSVRfQ0VOVEVSOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6Q2VudGVyOgorICAg
IGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0Q2VudGVyOgogICAgICAgICByZXR1cm4gbGVmdCAr
IHN0ZDo6bWF4PGZsb2F0PihyZW1haW5pbmdXaWR0aCAvIDIsIDApOwotICAgIGNhc2UgSlVTVElG
WToKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6Okp1c3RpZnk6CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC02MDYsNyArNjA2LDcgQEAgc3Rh
dGljIHZvaWQgdXBkYXRlTGluZUNvbnN0cmFpbnMoY29uc3QgUgogICAgIGxpbmUuc2V0TG9naWNh
bExlZnRPZmZzZXQoZmxvdy5sb2dpY2FsTGVmdE9mZnNldEZvckxpbmUoaGVpZ2h0LCBEb05vdElu
ZGVudFRleHQsIGxvZ2ljYWxIZWlnaHQpICsgKHNob3VsZEFwcGx5VGV4dEluZGVudCAmJiBpc0Zp
cnN0TGluZSA/IGZsb3cudGV4dEluZGVudE9mZnNldCgpIDogTGF5b3V0VW5pdCgwKSkpOwogICAg
IGZsb2F0IGxvZ2ljYWxSaWdodE9mZnNldCA9IGZsb3cubG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGlu
ZShoZWlnaHQsIERvTm90SW5kZW50VGV4dCwgbG9naWNhbEhlaWdodCk7CiAgICAgbGluZS5zZXRB
dmFpbGFibGVXaWR0aChzdGQ6Om1heDxmbG9hdD4oMCwgbG9naWNhbFJpZ2h0T2Zmc2V0IC0gbGlu
ZS5sb2dpY2FsTGVmdE9mZnNldCgpKSk7Ci0gICAgaWYgKHN0eWxlLnRleHRBbGlnbiA9PSBKVVNU
SUZZKQorICAgIGlmIChzdHlsZS50ZXh0QWxpZ24gPT0gVGV4dEFsaWduTW9kZTo6SnVzdGlmeSkK
ICAgICAgICAgbGluZS5zZXROZWVkc0FsbEZyYWdtZW50cygpOwogICAgIG51bWJlck9mUHJlY2Vk
aW5nTGluZXNXaXRoSHlwaGVuID0gKHByZXZpb3VzTGluZS5pc0VtcHR5KCkgfHwgIXByZXZpb3Vz
TGluZS5sYXN0RnJhZ21lbnQoKS5oYXNIeXBoZW4oKSkgPyAwIDogbnVtYmVyT2ZQcmVjZWRpbmdM
aW5lc1dpdGhIeXBoZW4gKyAxOwogICAgIGlmIChzdHlsZS5oeXBoZW5MaW1pdExpbmVzICYmIG51
bWJlck9mUHJlY2VkaW5nTGluZXNXaXRoSHlwaGVuID49ICpzdHlsZS5oeXBoZW5MaW1pdExpbmVz
KQpAQCAtNzkxLDcgKzc5MSw3IEBAIHN0YXRpYyBib29sIGNyZWF0ZUxpbmVSdW5zKExpbmVTdGF0
ZSYgbGkKICAgICAgICAgaWYgKGZyYWdtZW50LmlzTGluZUJyZWFrKCkpIHsKICAgICAgICAgICAg
IC8vIEFkZCB0aGUgbmV3IGxpbmUgZnJhZ21lbnQgb25seSBpZiB0aGVyZSdzIG5vdGhpbmcgb24g
dGhlIGxpbmUuIChvdGhlcndpc2UgdGhlIGV4dHJhIG5ldyBsaW5lIGNoYXJhY3RlciB3b3VsZCBz
aG93IHVwIGF0IHRoZSBlbmQgb2YgdGhlIGNvbnRlbnQuKQogICAgICAgICAgICAgaWYgKGxpbmUu
aXNFbXB0eSgpIHx8IGZyYWdtZW50LnR5cGUoKSA9PSBUZXh0RnJhZ21lbnRJdGVyYXRvcjo6VGV4
dEZyYWdtZW50OjpIYXJkTGluZUJyZWFrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHN0eWxlLnRl
eHRBbGlnbiA9PSBSSUdIVCB8fCBzdHlsZS50ZXh0QWxpZ24gPT0gV0VCS0lUX1JJR0hUKQorICAg
ICAgICAgICAgICAgIGlmIChzdHlsZS50ZXh0QWxpZ24gPT0gVGV4dEFsaWduTW9kZTo6UmlnaHQg
fHwgc3R5bGUudGV4dEFsaWduID09IFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0KQogICAgICAg
ICAgICAgICAgICAgICBsaW5lLnJlbW92ZVRyYWlsaW5nV2hpdGVzcGFjZShydW5zKTsKICAgICAg
ICAgICAgICAgICBsaW5lLmFwcGVuZEZyYWdtZW50QW5kQ3JlYXRlUnVuSWZOZWVkZWQoZnJhZ21l
bnQsIHJ1bnMpOwogICAgICAgICAgICAgfQpAQCAtOTAzLDEyICs5MDMsMTIgQEAgc3RhdGljIHZv
aWQganVzdGlmeVJ1bnMoY29uc3QgTGluZVN0YXRlJgogICAgIH0KIH0KIAotc3RhdGljIEVUZXh0
QWxpZ24gdGV4dEFsaWduRm9yTGluZShjb25zdCBUZXh0RnJhZ21lbnRJdGVyYXRvcjo6U3R5bGUm
IHN0eWxlLCBib29sIGxhc3RMaW5lKQorc3RhdGljIFRleHRBbGlnbk1vZGUgdGV4dEFsaWduRm9y
TGluZShjb25zdCBUZXh0RnJhZ21lbnRJdGVyYXRvcjo6U3R5bGUmIHN0eWxlLCBib29sIGxhc3RM
aW5lKQogewotICAgIC8vIEZhbGxiYWNrIHRvIExFRlQgKFNUQVJUKSBhbGlnbm1lbnQgZm9yIG5v
bi1jb2xsYXBzYWJsZSBjb250ZW50IGFuZCBmb3IgdGhlIGxhc3QgbGluZSBiZWZvcmUgYSBmb3Jj
ZWQgYnJlYWsgb3IgdGhlIGVuZCBvZiB0aGUgYmxvY2suCisgICAgLy8gRmFsbGJhY2sgdG8gVGV4
dEFsaWduTW9kZTo6TGVmdCAoU1RBUlQpIGFsaWdubWVudCBmb3Igbm9uLWNvbGxhcHNhYmxlIGNv
bnRlbnQgYW5kIGZvciB0aGUgbGFzdCBsaW5lIGJlZm9yZSBhIGZvcmNlZCBicmVhayBvciB0aGUg
ZW5kIG9mIHRoZSBibG9jay4KICAgICBhdXRvIHRleHRBbGlnbiA9IHN0eWxlLnRleHRBbGlnbjsK
LSAgICBpZiAodGV4dEFsaWduID09IEpVU1RJRlkgJiYgKCFzdHlsZS5jb2xsYXBzZVdoaXRlc3Bh
Y2UgfHwgbGFzdExpbmUpKQotICAgICAgICB0ZXh0QWxpZ24gPSBMRUZUOworICAgIGlmICh0ZXh0
QWxpZ24gPT0gVGV4dEFsaWduTW9kZTo6SnVzdGlmeSAmJiAoIXN0eWxlLmNvbGxhcHNlV2hpdGVz
cGFjZSB8fCBsYXN0TGluZSkpCisgICAgICAgIHRleHRBbGlnbiA9IFRleHRBbGlnbk1vZGU6Okxl
ZnQ7CiAgICAgcmV0dXJuIHRleHRBbGlnbjsKIH0KIApAQCAtOTI1LDcgKzkyNSw3IEBAIHN0YXRp
YyB2b2lkIGNsb3NlTGluZUVuZGluZ0FuZEFkanVzdFJ1bnMKICAgICBhdXRvIGZpcnN0UnVuSW5k
ZXggPSBsYXN0UnVuSW5kZXhPZlByZXZpb3VzTGluZSA/IGxhc3RSdW5JbmRleE9mUHJldmlvdXNM
aW5lLnZhbHVlKCkgKyAxIDogMDsKICAgICBhdXRvIGxpbmVMb2dpY2FsTGVmdCA9IGxpbmUubG9n
aWNhbExlZnRPZmZzZXQoKTsKICAgICBhdXRvIHRleHRBbGlnbiA9IHRleHRBbGlnbkZvckxpbmUo
c3R5bGUsIGxhc3RMaW5lSW5GbG93IHx8IChsaW5lLmxhc3RGcmFnbWVudCgpLmlzVmFsaWQoKSAm
JiBsaW5lLmxhc3RGcmFnbWVudCgpLnR5cGUoKSA9PSBUZXh0RnJhZ21lbnRJdGVyYXRvcjo6VGV4
dEZyYWdtZW50OjpIYXJkTGluZUJyZWFrKSk7Ci0gICAgaWYgKHRleHRBbGlnbiA9PSBKVVNUSUZZ
KQorICAgIGlmICh0ZXh0QWxpZ24gPT0gVGV4dEFsaWduTW9kZTo6SnVzdGlmeSkKICAgICAgICAg
anVzdGlmeVJ1bnMobGluZSwgcnVucywgZmlyc3RSdW5JbmRleCk7CiAgICAgZWxzZQogICAgICAg
ICBsaW5lTG9naWNhbExlZnQgPSBjb21wdXRlTGluZUxlZnQodGV4dEFsaWduLCBsaW5lLmF2YWls
YWJsZVdpZHRoKCksIGxpbmUud2lkdGgoKSwgbGluZS5sb2dpY2FsTGVmdE9mZnNldCgpKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91
dEZ1bmN0aW9ucy5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAs
NyArODAsNyBAQCB2b2lkIHBhaW50Rmxvdyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGF1dG8mIHN0eWxlID0gZmxvdy5zdHlsZSgpOwotICAgIGlmIChz
dHlsZS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAoc3R5bGUudmlzaWJpbGl0eSgp
ICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIFRleHRQYWlu
dGVyIHRleHRQYWludGVyKHBhaW50SW5mby5jb250ZXh0KCkpOwpAQCAtMTQzLDcgKzE0Myw3IEBA
IGJvb2wgaGl0VGVzdEZsb3coY29uc3QgUmVuZGVyQmxvY2tGbG93JiAKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgYXV0byYgc3R5bGUgPSBmbG93LnN0eWxlKCk7Ci0gICAgaWYgKHN0eWxl
LnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8IHN0eWxlLnBvaW50ZXJFdmVudHMoKSA9PSBQRV9O
T05FKQorICAgIGlmIChzdHlsZS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSB8
fCBzdHlsZS5wb2ludGVyRXZlbnRzKCkgPT0gUG9pbnRlckV2ZW50czo6Tm9uZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgTGF5b3V0UmVjdCByYW5nZVJlY3QgPSBsb2NhdGlvbkluQ29u
dGFpbmVyLmJvdW5kaW5nQm94KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2lt
cGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9y
LmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBs
ZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDcgKzQ4LDcgQEAgVGV4dEZyYWdtZW50SXRlcmF0b3I6OlN0eWxlOjpTdHlsZShjb25zdAogICAg
ICwga2VlcEFsbFdvcmRzRm9yQ0pLKHN0eWxlLndvcmRCcmVhaygpID09IFdvcmRCcmVhazo6S2Vl
cEFsbCkKICAgICAsIHdvcmRTcGFjaW5nKGZvbnQud29yZFNwYWNpbmcoKSkKICAgICAsIHRhYldp
ZHRoKGNvbGxhcHNlV2hpdGVzcGFjZSA/IDAgOiBzdHlsZS50YWJTaXplKCkpCi0gICAgLCBzaG91
bGRIeXBoZW5hdGUoc3R5bGUuaHlwaGVucygpID09IEh5cGhlbnNBdXRvICYmIGNhbkh5cGhlbmF0
ZShzdHlsZS5sb2NhbGUoKSkpCisgICAgLCBzaG91bGRIeXBoZW5hdGUoc3R5bGUuaHlwaGVucygp
ID09IEh5cGhlbnM6OkF1dG8gJiYgY2FuSHlwaGVuYXRlKHN0eWxlLmxvY2FsZSgpKSkKICAgICAs
IGh5cGhlblN0cmluZ1dpZHRoKHNob3VsZEh5cGhlbmF0ZSA/ICh1c2VTaW1wbGlmaWVkVGV4dE1l
YXN1cmluZyA/IGZvbnQud2lkdGhGb3JTaW1wbGVUZXh0KHN0eWxlLmh5cGhlblN0cmluZygpKSA6
IGZvbnQud2lkdGgoVGV4dFJ1bihTdHJpbmcoc3R5bGUuaHlwaGVuU3RyaW5nKCkpKSkpIDogMCkK
ICAgICAsIGh5cGhlbkxpbWl0QmVmb3JlKHN0eWxlLmh5cGhlbmF0aW9uTGltaXRCZWZvcmUoKSA8
IDAgPyAyIDogc3R5bGUuaHlwaGVuYXRpb25MaW1pdEJlZm9yZSgpKQogICAgICwgaHlwaGVuTGlt
aXRBZnRlcihzdHlsZS5oeXBoZW5hdGlvbkxpbWl0QWZ0ZXIoKSA8IDAgPyAyIDogc3R5bGUuaHlw
aGVuYXRpb25MaW1pdEFmdGVyKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2lt
cGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5o
CShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGlu
ZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsx
MDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IFN0eWxlKGNvbnN0IFJlbmRlclN0eWxl
JiwgYm9vbCB1c2VTaW1wbGlmaWVkVGV4dE1lYXN1cmluZyk7CiAKICAgICAgICAgY29uc3QgRm9u
dENhc2NhZGUmIGZvbnQ7Ci0gICAgICAgIEVUZXh0QWxpZ24gdGV4dEFsaWduOworICAgICAgICBU
ZXh0QWxpZ25Nb2RlIHRleHRBbGlnbjsKICAgICAgICAgYm9vbCBoYXNLZXJuaW5nT3JMaWdhdHVy
ZXM7CiAgICAgICAgIGJvb2wgY29sbGFwc2VXaGl0ZXNwYWNlOwogICAgICAgICBib29sIHByZXNl
cnZlTmV3bGluZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlv
blBhaW50ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0
RGVjb3JhdGlvblBhaW50ZXIuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjIxLDE5ICsyMjEsMTkgQEAgc3RhdGljIFN0cm9rZVN0eWxlIHRleHREZWNvcmF0aW9uU3R5bGVU
bwogewogICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlID0gU29saWRTdHJva2U7CiAgICAgc3dp
dGNoIChkZWNvcmF0aW9uU3R5bGUpIHsKLSAgICBjYXNlIFRleHREZWNvcmF0aW9uU3R5bGVTb2xp
ZDoKKyAgICBjYXNlIFRleHREZWNvcmF0aW9uU3R5bGU6OlNvbGlkOgogICAgICAgICBzdHJva2VT
dHlsZSA9IFNvbGlkU3Ryb2tlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRleHREZWNvcmF0
aW9uU3R5bGVEb3VibGU6CisgICAgY2FzZSBUZXh0RGVjb3JhdGlvblN0eWxlOjpEb3VibGU6CiAg
ICAgICAgIHN0cm9rZVN0eWxlID0gRG91YmxlU3Ryb2tlOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFRleHREZWNvcmF0aW9uU3R5bGVEb3R0ZWQ6CisgICAgY2FzZSBUZXh0RGVjb3JhdGlvblN0
eWxlOjpEb3R0ZWQ6CiAgICAgICAgIHN0cm9rZVN0eWxlID0gRG90dGVkU3Ryb2tlOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFRleHREZWNvcmF0aW9uU3R5bGVEYXNoZWQ6CisgICAgY2FzZSBU
ZXh0RGVjb3JhdGlvblN0eWxlOjpEYXNoZWQ6CiAgICAgICAgIHN0cm9rZVN0eWxlID0gRGFzaGVk
U3Ryb2tlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRleHREZWNvcmF0aW9uU3R5bGVXYXZ5
OgorICAgIGNhc2UgVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eToKICAgICAgICAgc3Ryb2tlU3R5
bGUgPSBXYXZ5U3Ryb2tlOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yNTIsNyArMjUyLDcg
QEAgVGV4dERlY29yYXRpb25QYWludGVyOjpUZXh0RGVjb3JhdGlvblBhaQogICAgICwgbV9kZWNv
cmF0aW9ucyB7IE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj46OmZyb21SYXcoZGVjb3JhdGlvbnMp
IH0KICAgICAsIG1fd2F2eU9mZnNldCB7IHdhdnlPZmZzZXRGcm9tRGVjb3JhdGlvbigpIH0KICAg
ICAsIG1faXNQcmludGluZyB7IHJlbmRlcmVyLmRvY3VtZW50KCkucHJpbnRpbmcoKSB9Ci0gICAg
LCBtX3N0eWxlcyB7IHN0eWxlcyA/ICpXVEZNb3ZlKHN0eWxlcykgOiBzdHlsZXNGb3JSZW5kZXJl
cihyZW5kZXJlciwgZGVjb3JhdGlvbnMsIGlzRmlyc3RMaW5lLCBOT1BTRVVETykgfQorICAgICwg
bV9zdHlsZXMgeyBzdHlsZXMgPyAqV1RGTW92ZShzdHlsZXMpIDogc3R5bGVzRm9yUmVuZGVyZXIo
cmVuZGVyZXIsIGRlY29yYXRpb25zLCBpc0ZpcnN0TGluZSwgUHNldWRvSWQ6Ok5vbmUpIH0KICAg
ICAsIG1fbGluZVN0eWxlIHsgaXNGaXJzdExpbmUgPyByZW5kZXJlci5maXJzdExpbmVTdHlsZSgp
IDogcmVuZGVyZXIuc3R5bGUoKSB9CiB7CiB9CkBAIC0yNzMsMjEgKzI3MywyMSBAQCB2b2lkIFRl
eHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRUZXh0RGVjCiAKICAgICAgICAgYXV0byBzdHJva2VT
dHlsZSA9IHRleHREZWNvcmF0aW9uU3R5bGVUb1N0cm9rZVN0eWxlKHN0eWxlKTsKIAotICAgICAg
ICBpZiAoc3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZVdhdnkpCisgICAgICAgIGlmIChzdHls
ZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5KQogICAgICAgICAgICAgc3Ryb2tlV2F2eVRl
eHREZWNvcmF0aW9uKG1fY29udGV4dCwgc3RhcnQsIGVuZCwgdGV4dERlY29yYXRpb25UaGlja25l
c3MsIG1fbGluZVN0eWxlLmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgpKTsKICAgICAgICAgZWxzZSBp
ZiAoZGVjb3JhdGlvbiA9PSBUZXh0RGVjb3JhdGlvblVuZGVybGluZSB8fCBkZWNvcmF0aW9uID09
IFRleHREZWNvcmF0aW9uT3ZlcmxpbmUpIHsKICNpZiBFTkFCTEUoQ1NTM19URVhUX0RFQ09SQVRJ
T05fU0tJUF9JTkspCiAgICAgICAgICAgICBpZiAoKG1fbGluZVN0eWxlLnRleHREZWNvcmF0aW9u
U2tpcCgpID09IFRleHREZWNvcmF0aW9uU2tpcEluayB8fCBtX2xpbmVTdHlsZS50ZXh0RGVjb3Jh
dGlvblNraXAoKSA9PSBUZXh0RGVjb3JhdGlvblNraXBBdXRvKSAmJiBtX2lzSG9yaXpvbnRhbCkg
ewogICAgICAgICAgICAgICAgIGlmICghbV9jb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKLSAg
ICAgICAgICAgICAgICAgICAgZHJhd1NraXBJbmtVbmRlcmxpbmUobV9jb250ZXh0LCAqbV9mb250
LCB0ZXh0UnVuLCB0ZXh0T3JpZ2luLCBsb2NhbE9yaWdpbiwgb2Zmc2V0LCBtX3dpZHRoLCBtX2lz
UHJpbnRpbmcsIHN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGVEb3VibGUsIHN0cm9rZVN0eWxl
KTsKKyAgICAgICAgICAgICAgICAgICAgZHJhd1NraXBJbmtVbmRlcmxpbmUobV9jb250ZXh0LCAq
bV9mb250LCB0ZXh0UnVuLCB0ZXh0T3JpZ2luLCBsb2NhbE9yaWdpbiwgb2Zmc2V0LCBtX3dpZHRo
LCBtX2lzUHJpbnRpbmcsIHN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OkRvdWJsZSwgc3Ry
b2tlU3R5bGUpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6
IE5lZWQgdG8gc3VwcG9ydCB0ZXh0LWRlY29yYXRpb24tc2tpcDogbm9uZS4KICNlbmRpZgotICAg
ICAgICAgICAgICAgIG1fY29udGV4dC5kcmF3TGluZUZvclRleHQoc3RhcnQsIG1fd2lkdGgsIG1f
aXNQcmludGluZywgc3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZURvdWJsZSwgc3Ryb2tlU3R5
bGUpOworICAgICAgICAgICAgICAgIG1fY29udGV4dC5kcmF3TGluZUZvclRleHQoc3RhcnQsIG1f
d2lkdGgsIG1faXNQcmludGluZywgc3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6RG91Ymxl
LCBzdHJva2VTdHlsZSk7CiAgICAgICAgICAgICAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIEFTU0VSVChkZWNvcmF0aW9uID09IFRleHREZWNvcmF0aW9uTGluZVRocm91Z2gpOwotICAg
ICAgICAgICAgbV9jb250ZXh0LmRyYXdMaW5lRm9yVGV4dChzdGFydCwgbV93aWR0aCwgbV9pc1By
aW50aW5nLCBzdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlRG91YmxlLCBzdHJva2VTdHlsZSk7
CisgICAgICAgICAgICBtX2NvbnRleHQuZHJhd0xpbmVGb3JUZXh0KHN0YXJ0LCBtX3dpZHRoLCBt
X2lzUHJpbnRpbmcsIHN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OkRvdWJsZSwgc3Ryb2tl
U3R5bGUpOwogICAgICAgICB9CiAgICAgfTsKIApAQCAtMzM2LDEzICszMzYsMTMgQEAgdm9pZCBU
ZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50VGV4dERlYwogICAgICAgICAvLyBUaGVzZSBkZWNv
cmF0aW9ucyBzaG91bGQgbWF0Y2ggdGhlIHZpc3VhbCBvdmVyZmxvd3MgY29tcHV0ZWQgaW4gdmlz
dWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucygpLgogICAgICAgICBpZiAobV9kZWNvcmF0aW9ucy5j
b250YWlucyhUZXh0RGVjb3JhdGlvblVuZGVybGluZSkpIHsKICAgICAgICAgICAgIGludCBvZmZz
ZXQgPSBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KG1fbGluZVN0eWxlLnRleHRVbmRlcmxpbmVQb3Np
dGlvbigpLCBtX2xpbmVTdHlsZS5mb250TWV0cmljcygpLCBtX2lubGluZVRleHRCb3gsIHRleHRE
ZWNvcmF0aW9uVGhpY2tuZXNzKTsKLSAgICAgICAgICAgIGZsb2F0IHdhdnlPZmZzZXQgPSBtX3N0
eWxlcy51bmRlcmxpbmVTdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlV2F2eSA/IG1fd2F2eU9m
ZnNldCA6IDA7CisgICAgICAgICAgICBmbG9hdCB3YXZ5T2Zmc2V0ID0gbV9zdHlsZXMudW5kZXJs
aW5lU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSA/IG1fd2F2eU9mZnNldCA6IDA7
CiAgICAgICAgICAgICBGbG9hdFBvaW50IHN0YXJ0ID0gbG9jYWxPcmlnaW4gKyBGbG9hdFNpemUo
MCwgb2Zmc2V0ICsgd2F2eU9mZnNldCk7CiAgICAgICAgICAgICBGbG9hdFBvaW50IGVuZCA9IGxv
Y2FsT3JpZ2luICsgRmxvYXRTaXplKG1fd2lkdGgsIG9mZnNldCArIHdhdnlPZmZzZXQpOwogICAg
ICAgICAgICAgcGFpbnREZWNvcmF0aW9uKFRleHREZWNvcmF0aW9uVW5kZXJsaW5lLCBtX3N0eWxl
cy51bmRlcmxpbmVTdHlsZSwgbV9zdHlsZXMudW5kZXJsaW5lQ29sb3IsIHN0YXJ0LCBlbmQsIG9m
ZnNldCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4
dERlY29yYXRpb25PdmVybGluZSkpIHsKLSAgICAgICAgICAgIGZsb2F0IHdhdnlPZmZzZXQgPSBt
X3N0eWxlcy5vdmVybGluZVN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGVXYXZ5ID8gbV93YXZ5
T2Zmc2V0IDogMDsKKyAgICAgICAgICAgIGZsb2F0IHdhdnlPZmZzZXQgPSBtX3N0eWxlcy5vdmVy
bGluZVN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkgPyBtX3dhdnlPZmZzZXQgOiAw
OwogICAgICAgICAgICAgRmxvYXRQb2ludCBzdGFydCA9IGxvY2FsT3JpZ2luIC0gRmxvYXRTaXpl
KDAsIHdhdnlPZmZzZXQpOwogICAgICAgICAgICAgRmxvYXRQb2ludCBlbmQgPSBsb2NhbE9yaWdp
biArIEZsb2F0U2l6ZShtX3dpZHRoLCAtd2F2eU9mZnNldCk7CiAgICAgICAgICAgICBwYWludERl
Y29yYXRpb24oVGV4dERlY29yYXRpb25PdmVybGluZSwgbV9zdHlsZXMub3ZlcmxpbmVTdHlsZSwg
bV9zdHlsZXMub3ZlcmxpbmVDb2xvciwgc3RhcnQsIGVuZCwgMCk7CkBAIC00MDEsNyArNDAxLDcg
QEAgc3RhdGljIHZvaWQgY29sbGVjdFN0eWxlc0ZvclJlbmRlcmVyKFRleAogICAgIH07CiAKICAg
ICBhdXRvIHN0eWxlRm9yUmVuZGVyZXIgPSBbJl0gKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVy
ZXIpIC0+IGNvbnN0IFJlbmRlclN0eWxlJiB7Ci0gICAgICAgIGlmIChwc2V1ZG9JZCAhPSBOT1BT
RVVETyAmJiByZW5kZXJlci5zdHlsZSgpLmhhc1BzZXVkb1N0eWxlKHBzZXVkb0lkKSkgeworICAg
ICAgICBpZiAocHNldWRvSWQgIT0gUHNldWRvSWQ6Ok5vbmUgJiYgcmVuZGVyZXIuc3R5bGUoKS5o
YXNQc2V1ZG9TdHlsZShwc2V1ZG9JZCkpIHsKICAgICAgICAgICAgIGlmIChpczxSZW5kZXJUZXh0
PihyZW5kZXJlcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuICpkb3duY2FzdDxSZW5kZXJUZXh0
PihyZW5kZXJlcikuZ2V0Q2FjaGVkUHNldWRvU3R5bGUocHNldWRvSWQpOwogICAgICAgICAgICAg
cmV0dXJuICpkb3duY2FzdDxSZW5kZXJFbGVtZW50PihyZW5kZXJlcikuZ2V0Q2FjaGVkUHNldWRv
U3R5bGUocHNldWRvSWQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNv
cmF0aW9uUGFpbnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9U
ZXh0RGVjb3JhdGlvblBhaW50ZXIuaAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02
Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgVGV4dERlY29yYXRpb25TdHlsZSBsaW5ldGhy
b3VnaFN0eWxlOwogICAgIH07CiAgICAgLy8gRklYTUU6IE1ha2UgcmVxdWVzdGVkRGVjb3JhdGlv
bnMgYW4gT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPi4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2ODQ0Pi4KLSAgICBzdGF0aWMgU3R5bGVzIHN0eWxlc0Zv
clJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCYsIHVuc2lnbmVkIHJlcXVlc3RlZERlY29yYXRp
b25zLCBib29sIGZpcnN0TGluZVN0eWxlID0gZmFsc2UsIFBzZXVkb0lkID0gTk9QU0VVRE8pOwor
ICAgIHN0YXRpYyBTdHlsZXMgc3R5bGVzRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0Jiwg
dW5zaWduZWQgcmVxdWVzdGVkRGVjb3JhdGlvbnMsIGJvb2wgZmlyc3RMaW5lU3R5bGUgPSBmYWxz
ZSwgUHNldWRvSWQgPSBQc2V1ZG9JZDo6Tm9uZSk7CiAKIHByaXZhdGU6CiAgICAgR3JhcGhpY3ND
b250ZXh0JiBtX2NvbnRleHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9C
cmVha2luZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bGluZS9CcmVha2luZ0NvbnRleHQuaAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEx
MSw4ICsxMTEsOCBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9yZW5kZXJUZXh0SW5mbyhpblJlbmRl
clRleHRJbmZvKQogICAgICAgICAsIG1fbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZShpbkxhc3RG
bG9hdEZyb21QcmV2aW91c0xpbmUpCiAgICAgICAgICwgbV93aWR0aChsaW5lV2lkdGgpCi0gICAg
ICAgICwgbV9jdXJyV1MoTk9STUFMKQotICAgICAgICAsIG1fbGFzdFdTKE5PUk1BTCkKKyAgICAg
ICAgLCBtX2N1cnJXUyhXaGl0ZVNwYWNlOjpOb3JtYWwpCisgICAgICAgICwgbV9sYXN0V1MoV2hp
dGVTcGFjZTo6Tm9ybWFsKQogICAgICAgICAsIG1fcHJlc2VydmVzTmV3bGluZShmYWxzZSkKICAg
ICAgICAgLCBtX2F0U3RhcnQodHJ1ZSkKICAgICAgICAgLCBtX2lnbm9yaW5nU3BhY2VzKGZhbHNl
KQpAQCAtMTYxLDcgKzE2MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJMaW5lQnJlYWtJ
ZkZpdHNPbkxpbmUoYm9vbCBpZ25vcmluZ1RyYWlsaW5nU3BhY2UgPSBmYWxzZSkKICAgICB7Ci0g
ICAgICAgIGlmIChtX3dpZHRoLmZpdHNPbkxpbmUoaWdub3JpbmdUcmFpbGluZ1NwYWNlKSB8fCBt
X2xhc3RXUyA9PSBOT1dSQVAgfHwgbV9oYW5nc0F0RW5kKQorICAgICAgICBpZiAobV93aWR0aC5m
aXRzT25MaW5lKGlnbm9yaW5nVHJhaWxpbmdTcGFjZSkgfHwgbV9sYXN0V1MgPT0gV2hpdGVTcGFj
ZTo6Tm9XcmFwIHx8IG1faGFuZ3NBdEVuZCkKICAgICAgICAgICAgIG1fbGluZUJyZWFrSGlzdG9y
eS5jbGVhcigpOwogICAgICAgICBtX2hhbmdzQXRFbmQgPSBmYWxzZTsKICAgICB9CkBAIC0yNjgs
MTMgKzI2OCwxMyBAQCBwcml2YXRlOgogCiAgICAgTGluZVdpZHRoIG1fd2lkdGg7CiAKLSAgICBF
V2hpdGVTcGFjZSBtX2N1cnJXUzsKLSAgICBFV2hpdGVTcGFjZSBtX2xhc3RXUzsKKyAgICBXaGl0
ZVNwYWNlIG1fY3VycldTOworICAgIFdoaXRlU3BhY2UgbV9sYXN0V1M7CiAKICAgICBib29sIG1f
cHJlc2VydmVzTmV3bGluZTsKICAgICBib29sIG1fYXRTdGFydDsKIAotICAgIC8vIFRoaXMgdmFy
aWFibGUgaXMgdXNlZCBvbmx5IGlmIHdoaXRlc3BhY2UgaXNuJ3Qgc2V0IHRvIFBSRSwgYW5kIGl0
IHRlbGxzIHVzIHdoZXRoZXIKKyAgICAvLyBUaGlzIHZhcmlhYmxlIGlzIHVzZWQgb25seSBpZiB3
aGl0ZXNwYWNlIGlzbid0IHNldCB0byBXaGl0ZVNwYWNlOjpQcmUsIGFuZCBpdCB0ZWxscyB1cyB3
aGV0aGVyCiAgICAgLy8gb3Igbm90IHdlIGFyZSBjdXJyZW50bHkgaWdub3Jpbmcgd2hpdGVzcGFj
ZS4KICAgICBib29sIG1faWdub3JpbmdTcGFjZXM7CiAKQEAgLTM2NSw3ICszNjUsNyBAQCBpbmxp
bmUgdm9pZCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZUJSKENsCiAgICAgICAgIC8vIElmIHdlIHdl
cmUgcHJlY2VkZWQgYnkgY29sbGFwc2luZyBzcGFjZSBhbmQgYXJlIGluIGEgcmlnaHQtYWxpZ25l
ZCBjb250YWluZXIgd2UgbmVlZCB0byBlbnN1cmUgdGhlIHNwYWNlIGdldHMKICAgICAgICAgLy8g
Y29sbGFwc2VkIGF3YXkgc28gdGhhdCBpdCBkb2Vzbid0IHB1c2ggdGhlIHRleHQgb3V0IGZyb20g
dGhlIGNvbnRhaW5lcidzIHJpZ2h0LWhhbmQgZWRnZS4KICAgICAgICAgLy8gRklYTUU6IERvIHRo
aXMgcmVnYXJkbGVzcyBvZiB0aGUgY29udGFpbmVyJ3MgYWxpZ25tZW50IC0gd2lsbCByZXF1aXJl
IHJlYmFzZWxpbmluZyBhIGxvdCBvZiB0ZXN0IHJlc3VsdHMuCi0gICAgICAgIGVsc2UgaWYgKG1f
aWdub3JpbmdTcGFjZXMgJiYgKG1fYmxvY2tTdHlsZS50ZXh0QWxpZ24oKSA9PSBSSUdIVCB8fCBt
X2Jsb2NrU3R5bGUudGV4dEFsaWduKCkgPT0gV0VCS0lUX1JJR0hUKSkKKyAgICAgICAgZWxzZSBp
ZiAobV9pZ25vcmluZ1NwYWNlcyAmJiAobV9ibG9ja1N0eWxlLnRleHRBbGlnbigpID09IFRleHRB
bGlnbk1vZGU6OlJpZ2h0IHx8IG1fYmxvY2tTdHlsZS50ZXh0QWxpZ24oKSA9PSBUZXh0QWxpZ25N
b2RlOjpXZWJLaXRSaWdodCkpCiAgICAgICAgICAgICBtX2xpbmVXaGl0ZXNwYWNlQ29sbGFwc2lu
Z1N0YXRlLnN0b3BJZ25vcmluZ1NwYWNlcyhJbmxpbmVJdGVyYXRvcigwLCBtX2N1cnJlbnQucmVu
ZGVyZXIoKSwgbV9jdXJyZW50Lm9mZnNldCgpKSk7CiAKICAgICAgICAgaWYgKCFtX2xpbmVJbmZv
LmlzRW1wdHkoKSkKQEAgLTQzNyw3ICs0MzcsNyBAQCBpbmxpbmUgdm9pZCBCcmVha2luZ0NvbnRl
eHQ6OmhhbmRsZU91dE9mCiAgICAgaWYgKCFpc0lubGluZVR5cGUpCiAgICAgICAgIG1fYmxvY2su
c2V0U3RhdGljSW5saW5lUG9zaXRpb25Gb3JDaGlsZChib3gsIG1fYmxvY2subG9naWNhbEhlaWdo
dCgpLCBtX2Jsb2NrLnN0YXJ0T2Zmc2V0Rm9yQ29udGVudChtX2Jsb2NrLmxvZ2ljYWxIZWlnaHQo
KSkpOwogICAgIGVsc2UgewotICAgICAgICAvLyBJZiBvdXIgb3JpZ2luYWwgZGlzcGxheSB3YXMg
YW4gSU5MSU5FIHR5cGUsIHRoZW4gd2UgY2FuIGRldGVybWluZSBvdXIgc3RhdGljIHkgcG9zaXRp
b24gbm93LgorICAgICAgICAvLyBJZiBvdXIgb3JpZ2luYWwgZGlzcGxheSB3YXMgYW4gRGlzcGxh
eVR5cGU6OklubGluZSB0eXBlLCB0aGVuIHdlIGNhbiBkZXRlcm1pbmUgb3VyIHN0YXRpYyB5IHBv
c2l0aW9uIG5vdy4KICAgICAgICAgYm94LmxheWVyKCktPnNldFN0YXRpY0Jsb2NrUG9zaXRpb24o
bV9ibG9jay5sb2dpY2FsSGVpZ2h0KCkpOwogICAgIH0KIApAQCAtNzYyLDcgKzc2Miw3IEBAIGlu
bGluZSBib29sIEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dCgKICAgICBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUgPSBsaW5lU3R5bGUocmVuZGVyVGV4dCwgbV9saW5lSW5mbyk7CiAgICAgY29u
c3QgRm9udENhc2NhZGUmIGZvbnQgPSBzdHlsZS5mb250Q2FzY2FkZSgpOwogICAgIGJvb2wgaXNG
aXhlZFBpdGNoID0gZm9udC5pc0ZpeGVkUGl0Y2goKTsKLSAgICBib29sIGNhbkh5cGhlbmF0ZSA9
IHN0eWxlLmh5cGhlbnMoKSA9PSBIeXBoZW5zQXV0byAmJiBXZWJDb3JlOjpjYW5IeXBoZW5hdGUo
c3R5bGUubG9jYWxlKCkpOworICAgIGJvb2wgY2FuSHlwaGVuYXRlID0gc3R5bGUuaHlwaGVucygp
ID09IEh5cGhlbnM6OkF1dG8gJiYgV2ViQ29yZTo6Y2FuSHlwaGVuYXRlKHN0eWxlLmxvY2FsZSgp
KTsKICAgICBib29sIGNhbkhhbmdQdW5jdHVhdGlvbkF0U3RhcnQgPSBzdHlsZS5oYW5naW5nUHVu
Y3R1YXRpb24oKSAmIEZpcnN0SGFuZ2luZ1B1bmN0dWF0aW9uOwogICAgIGJvb2wgY2FuSGFuZ1B1
bmN0dWF0aW9uQXRFbmQgPSBzdHlsZS5oYW5naW5nUHVuY3R1YXRpb24oKSAmIExhc3RIYW5naW5n
UHVuY3R1YXRpb247CiAgICAgYm9vbCBjYW5IYW5nU3RvcE9yQ29tbWFBdExpbmVFbmQgPSBzdHls
ZS5oYW5naW5nUHVuY3R1YXRpb24oKSAmIEFsbG93RW5kSGFuZ2luZ1B1bmN0dWF0aW9uOwpAQCAt
Nzc4LDcgKzc3OCw3IEBAIGlubGluZSBib29sIEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dCgK
ICAgICBib29sIGJyZWFrTkJTUCA9IG1fYXV0b1dyYXAgJiYgbV9jdXJyZW50U3R5bGUtPm5ic3BN
b2RlKCkgPT0gTkJTUE1vZGU6OlNwYWNlOwogICAgIC8vIEF1dG8td3JhcHBpbmcgdGV4dCBzaG91
bGQgd3JhcCBpbiB0aGUgbWlkZGxlIG9mIGEgd29yZCBvbmx5IGlmIGl0IGNvdWxkIG5vdCB3cmFw
IGJlZm9yZSB0aGUgd29yZCwKICAgICAvLyB3aGljaCBpcyBvbmx5IHBvc3NpYmxlIGlmIHRoZSB3
b3JkIGlzIHRoZSBmaXJzdCB0aGluZyBvbiB0aGUgbGluZS4KLSAgICBib29sIGJyZWFrV29yZHMg
PSBtX2N1cnJlbnRTdHlsZS0+YnJlYWtXb3JkcygpICYmICgobV9hdXRvV3JhcCAmJiAoIW1fd2lk
dGguY29tbWl0dGVkV2lkdGgoKSAmJiAhbV93aWR0aC5oYXNDb21taXR0ZWRSZXBsYWNlZCgpKSkg
fHwgbV9jdXJyV1MgPT0gUFJFKTsKKyAgICBib29sIGJyZWFrV29yZHMgPSBtX2N1cnJlbnRTdHls
ZS0+YnJlYWtXb3JkcygpICYmICgobV9hdXRvV3JhcCAmJiAoIW1fd2lkdGguY29tbWl0dGVkV2lk
dGgoKSAmJiAhbV93aWR0aC5oYXNDb21taXR0ZWRSZXBsYWNlZCgpKSkgfHwgbV9jdXJyV1MgPT0g
V2hpdGVTcGFjZTo6UHJlKTsKICAgICBib29sIG1pZFdvcmRCcmVhayA9IGZhbHNlOwogICAgIGJv
b2wgYnJlYWtBbGwgPSBtX2N1cnJlbnRTdHlsZS0+d29yZEJyZWFrKCkgPT0gV29yZEJyZWFrOjpC
cmVha0FsbCAmJiBtX2F1dG9XcmFwOwogICAgIGJvb2wga2VlcEFsbFdvcmRzID0gbV9jdXJyZW50
U3R5bGUtPndvcmRCcmVhaygpID09IFdvcmRCcmVhazo6S2VlcEFsbDsKQEAgLTgzMCw3ICs4MzAs
NyBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQoCiAgICAgICAgIGlm
ICghbV9jb2xsYXBzZVdoaXRlU3BhY2UgfHwgIW1fY3VycmVudENoYXJhY3RlcklzU3BhY2UpCiAg
ICAgICAgICAgICBtX2xpbmVJbmZvLnNldEVtcHR5KGZhbHNlLCAmbV9ibG9jaywgJm1fd2lkdGgp
OwogCi0gICAgICAgIGlmIChjID09IHNvZnRIeXBoZW4gJiYgbV9hdXRvV3JhcCAmJiAhaHlwaGVu
V2lkdGggJiYgc3R5bGUuaHlwaGVucygpICE9IEh5cGhlbnNOb25lKSB7CisgICAgICAgIGlmIChj
ID09IHNvZnRIeXBoZW4gJiYgbV9hdXRvV3JhcCAmJiAhaHlwaGVuV2lkdGggJiYgc3R5bGUuaHlw
aGVucygpICE9IEh5cGhlbnM6Ok5vbmUpIHsKICAgICAgICAgICAgIGh5cGhlbldpZHRoID0gbWVh
c3VyZUh5cGhlbldpZHRoKHJlbmRlclRleHQsIGZvbnQsICZmYWxsYmFja0ZvbnRzKTsKICAgICAg
ICAgICAgIG1fd2lkdGguYWRkVW5jb21taXR0ZWRXaWR0aChoeXBoZW5XaWR0aCk7CiAgICAgICAg
IH0KQEAgLTgzOSw3ICs4MzksNyBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRs
ZVRleHQoCiAKICAgICAgICAgbV9jdXJyZW50Q2hhcmFjdGVySXNXUyA9IG1fY3VycmVudENoYXJh
Y3RlcklzU3BhY2UgfHwgKGJyZWFrTkJTUCAmJiBjID09IG5vQnJlYWtTcGFjZSk7CiAKLSAgICAg
ICAgaWYgKChicmVha0FsbCB8fCBicmVha1dvcmRzKSAmJiAhbWlkV29yZEJyZWFrICYmICghbV9j
dXJyZW50Q2hhcmFjdGVySXNTcGFjZSB8fCBzdHlsZS53aGl0ZVNwYWNlKCkgIT0gUFJFX1dSQVAp
KSB7CisgICAgICAgIGlmICgoYnJlYWtBbGwgfHwgYnJlYWtXb3JkcykgJiYgIW1pZFdvcmRCcmVh
ayAmJiAoIW1fY3VycmVudENoYXJhY3RlcklzU3BhY2UgfHwgc3R5bGUud2hpdGVTcGFjZSgpICE9
IFdoaXRlU3BhY2U6OlByZVdyYXApKSB7CiAgICAgICAgICAgICB3cmFwVyArPSBjaGFyV2lkdGg7
CiAgICAgICAgICAgICBib29sIG1pZFdvcmRCcmVha0lzQmVmb3JlU3Vycm9nYXRlUGFpciA9IFUx
Nl9JU19MRUFEKGMpICYmIFUxNl9JU19UUkFJTChyZW5kZXJUZXh0LmNoYXJhY3RlckF0KG1fY3Vy
cmVudC5vZmZzZXQoKSArIDEpKTsKICAgICAgICAgICAgIGNoYXJXaWR0aCA9IHRleHRXaWR0aChy
ZW5kZXJUZXh0LCBtX2N1cnJlbnQub2Zmc2V0KCksIG1pZFdvcmRCcmVha0lzQmVmb3JlU3Vycm9n
YXRlUGFpciA/IDIgOiAxLCBmb250LCBtX3dpZHRoLmNvbW1pdHRlZFdpZHRoKCkgKyB3cmFwVywg
aXNGaXhlZFBpdGNoLCBtX2NvbGxhcHNlV2hpdGVTcGFjZSwgZmFsbGJhY2tGb250cywgdGV4dExh
eW91dCk7CkBAIC04NDcsOCArODQ3LDggQEAgaW5saW5lIGJvb2wgQnJlYWtpbmdDb250ZXh0Ojpo
YW5kbGVUZXh0KAogICAgICAgICB9CiAKICAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
bmV4dEJyZWFrYWJsZVBvc2l0aW9uID0gbV9jdXJyZW50Lm5leHRCcmVha2FibGVQb3NpdGlvbigp
OwotICAgICAgICBib29sIGJldHdlZW5Xb3JkcyA9IGMgPT0gJ1xuJyB8fCAobV9jdXJyV1MgIT0g
UFJFICYmICFtX2F0U3RhcnQgJiYgaXNCcmVha2FibGUobV9yZW5kZXJUZXh0SW5mby5saW5lQnJl
YWtJdGVyYXRvciwgbV9jdXJyZW50Lm9mZnNldCgpLCBuZXh0QnJlYWthYmxlUG9zaXRpb24sIGJy
ZWFrTkJTUCwgY2FuVXNlTGluZUJyZWFrU2hvcnRjdXQsIGtlZXBBbGxXb3JkcykKLSAgICAgICAg
ICAgICYmIChzdHlsZS5oeXBoZW5zKCkgIT0gSHlwaGVuc05vbmUgfHwgKG1fY3VycmVudC5wcmV2
aW91c0luU2FtZU5vZGUoKSAhPSBzb2Z0SHlwaGVuKSkpOworICAgICAgICBib29sIGJldHdlZW5X
b3JkcyA9IGMgPT0gJ1xuJyB8fCAobV9jdXJyV1MgIT0gV2hpdGVTcGFjZTo6UHJlICYmICFtX2F0
U3RhcnQgJiYgaXNCcmVha2FibGUobV9yZW5kZXJUZXh0SW5mby5saW5lQnJlYWtJdGVyYXRvciwg
bV9jdXJyZW50Lm9mZnNldCgpLCBuZXh0QnJlYWthYmxlUG9zaXRpb24sIGJyZWFrTkJTUCwgY2Fu
VXNlTGluZUJyZWFrU2hvcnRjdXQsIGtlZXBBbGxXb3JkcykKKyAgICAgICAgICAgICYmIChzdHls
ZS5oeXBoZW5zKCkgIT0gSHlwaGVuczo6Tm9uZSB8fCAobV9jdXJyZW50LnByZXZpb3VzSW5TYW1l
Tm9kZSgpICE9IHNvZnRIeXBoZW4pKSk7CiAgICAgICAgIG1fY3VycmVudC5zZXROZXh0QnJlYWth
YmxlUG9zaXRpb24obmV4dEJyZWFrYWJsZVBvc2l0aW9uKTsKICAgICAgICAgCiAgICAgICAgIGlm
IChjYW5IYW5nU3RvcE9yQ29tbWFBdExpbmVFbmQgJiYgcmVuZGVyVGV4dC5pc0hhbmdhYmxlU3Rv
cE9yQ29tbWEoYykgJiYgbV93aWR0aC5maXRzT25MaW5lKCkpIHsKQEAgLTk0Nyw3ICs5NDcsNyBA
QCBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQoCiAgICAgICAgICAgICAg
ICAgICAgICAgICB3b3JkTWVhc3VyZW1lbnQuZW5kT2Zmc2V0ID0gbV9saW5lQnJlYWtIaXN0b3J5
Lm9mZnNldCgpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIC8v
IENoZWNrIGlmIHRoZSBsYXN0IGJyZWFraW5nIHBvc2l0aW9uIGlzIGEgc29mdC1oeXBoZW4uCi0g
ICAgICAgICAgICAgICAgICAgIGlmICghaHlwaGVuYXRlZCAmJiBzdHlsZS5oeXBoZW5zKCkgIT0g
SHlwaGVuc05vbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFoeXBoZW5hdGVkICYmIHN0
eWxlLmh5cGhlbnMoKSAhPSBIeXBoZW5zOjpOb25lKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBsYXN0QnJlYWtpbmdQb3NpdG9uOwogICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlckF0QnJlYWtpbmdQb3Np
dGlvbiA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9saW5lQnJlYWtI
aXN0b3J5Lm9mZnNldCgpIHx8IG1fbGluZUJyZWFrSGlzdG9yeS5uZXh0QnJlYWthYmxlUG9zaXRp
b24oKSkgewpAQCAtMTA3MSw3ICsxMDcxLDcgQEAgaW5saW5lIGJvb2wgQnJlYWtpbmdDb250ZXh0
OjpoYW5kbGVUZXh0KAogICAgICAgICAgICAgLy8gU3BhY2VzIGFmdGVyIHJpZ2h0LWFsaWduZWQg
dGV4dCBhbmQgYmVmb3JlIGEgbGluZS1icmVhayBnZXQgY29sbGFwc2VkIGF3YXkgY29tcGxldGVs
eSBzbyB0aGF0IHRoZSB0cmFpbGluZwogICAgICAgICAgICAgLy8gc3BhY2UgZG9lc24ndCBzZWVt
IHRvIHB1c2ggdGhlIHRleHQgb3V0IGZyb20gdGhlIHJpZ2h0LWhhbmQgZWRnZS4KICAgICAgICAg
ICAgIC8vIEZJWE1FOiBEbyB0aGlzIHJlZ2FyZGxlc3Mgb2YgdGhlIGNvbnRhaW5lcidzIGFsaWdu
bWVudCAtIHdpbGwgcmVxdWlyZSByZWJhc2VsaW5pbmcgYSBsb3Qgb2YgdGVzdCByZXN1bHRzLgot
ICAgICAgICAgICAgaWYgKG1fbmV4dE9iamVjdCAmJiBtX3N0YXJ0T2ZJZ25vcmVkU3BhY2VzLm9m
ZnNldCgpICYmIG1fbmV4dE9iamVjdC0+aXNCUigpICYmIChtX2Jsb2NrU3R5bGUudGV4dEFsaWdu
KCkgPT0gUklHSFQgfHwgbV9ibG9ja1N0eWxlLnRleHRBbGlnbigpID09IFdFQktJVF9SSUdIVCkp
IHsKKyAgICAgICAgICAgIGlmIChtX25leHRPYmplY3QgJiYgbV9zdGFydE9mSWdub3JlZFNwYWNl
cy5vZmZzZXQoKSAmJiBtX25leHRPYmplY3QtPmlzQlIoKSAmJiAobV9ibG9ja1N0eWxlLnRleHRB
bGlnbigpID09IFRleHRBbGlnbk1vZGU6OlJpZ2h0IHx8IG1fYmxvY2tTdHlsZS50ZXh0QWxpZ24o
KSA9PSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRSaWdodCkpIHsKICAgICAgICAgICAgICAgICBtX3N0
YXJ0T2ZJZ25vcmVkU3BhY2VzLnNldE9mZnNldChtX3N0YXJ0T2ZJZ25vcmVkU3BhY2VzLm9mZnNl
dCgpIC0gMSk7CiAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUncyBqdXN0IGEgc2luZ2xlIHRy
YWlsaW5nIHNwYWNlIHN0YXJ0IGlnbm9yaW5nIGl0IG5vdyBzbyBpdCBjb2xsYXBzZXMgYXdheS4K
ICAgICAgICAgICAgICAgICBpZiAobV9jdXJyZW50Lm9mZnNldCgpID09IHJlbmRlclRleHQudGV4
dCgpLmxlbmd0aCgpIC0gMSkKQEAgLTExMzAsNyArMTEzMCw3IEBAIGlubGluZSBib29sIEJyZWFr
aW5nQ29udGV4dDo6aGFuZGxlVGV4dCgKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKCFoeXBoZW5hdGVkICYmIG1fbGluZUJyZWFrSGlzdG9yeS5wcmV2aW91c0luU2Ft
ZU5vZGUoKSA9PSBzb2Z0SHlwaGVuICYmIHN0eWxlLmh5cGhlbnMoKSAhPSBIeXBoZW5zTm9uZSkg
eworICAgICAgICBpZiAoIWh5cGhlbmF0ZWQgJiYgbV9saW5lQnJlYWtIaXN0b3J5LnByZXZpb3Vz
SW5TYW1lTm9kZSgpID09IHNvZnRIeXBoZW4gJiYgc3R5bGUuaHlwaGVucygpICE9IEh5cGhlbnM6
Ok5vbmUpIHsKICAgICAgICAgICAgIGh5cGhlbmF0ZWQgPSB0cnVlOwogICAgICAgICAgICAgbV9h
dEVuZCA9IHRydWU7CiAgICAgICAgIH0KQEAgLTExNDcsNyArMTE0Nyw3IEBAIGlubGluZSBib29s
IHRleHRCZWdpbnNXaXRoQnJlYWthYmxlUG9zaXQKIGlubGluZSBib29sIEJyZWFraW5nQ29udGV4
dDo6Y2FuQnJlYWtBdFRoaXNQb3NpdGlvbigpCiB7CiAgICAgLy8gSWYgd2UgYXJlIG5vLXdyYXAg
YW5kIGhhdmUgZm91bmQgYSBsaW5lLWJyZWFraW5nIG9wcG9ydHVuaXR5IGFscmVhZHkgdGhlbiB3
ZSBzaG91bGQgdGFrZSBpdC4KLSAgICBpZiAobV93aWR0aC5jb21taXR0ZWRXaWR0aCgpICYmICFt
X3dpZHRoLmZpdHNPbkxpbmUobV9jdXJyZW50Q2hhcmFjdGVySXNTcGFjZSkgJiYgbV9jdXJyV1Mg
PT0gTk9XUkFQKQorICAgIGlmIChtX3dpZHRoLmNvbW1pdHRlZFdpZHRoKCkgJiYgIW1fd2lkdGgu
Zml0c09uTGluZShtX2N1cnJlbnRDaGFyYWN0ZXJJc1NwYWNlKSAmJiBtX2N1cnJXUyA9PSBXaGl0
ZVNwYWNlOjpOb1dyYXApCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gQXZvaWQgYnJl
YWtpbmcgb24gZW1wdHkgaW5saW5lcy4KQEAgLTEyNTcsNyArMTI1Nyw3IEBAIGlubGluZSBJbmxp
bmVJdGVyYXRvciBCcmVha2luZ0NvbnRleHQ6OmgKICAgICBpZiAobV9saW5lQnJlYWtIaXN0b3J5
LmN1cnJlbnQoKSA9PSBtX3Jlc29sdmVyLnBvc2l0aW9uKCkpIHsKICAgICAgICAgaWYgKCFtX2xp
bmVCcmVha0hpc3RvcnkucmVuZGVyZXIoKSB8fCAhbV9saW5lQnJlYWtIaXN0b3J5LnJlbmRlcmVy
KCktPmlzQlIoKSkgewogICAgICAgICAgICAgLy8gd2UganVzdCBhZGQgYXMgbXVjaCBhcyBwb3Nz
aWJsZQotICAgICAgICAgICAgaWYgKG1fYmxvY2tTdHlsZS53aGl0ZVNwYWNlKCkgPT0gUFJFICYm
ICFtX2N1cnJlbnQub2Zmc2V0KCkpIHsKKyAgICAgICAgICAgIGlmIChtX2Jsb2NrU3R5bGUud2hp
dGVTcGFjZSgpID09IFdoaXRlU3BhY2U6OlByZSAmJiAhbV9jdXJyZW50Lm9mZnNldCgpKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKG1fbGFzdE9iamVjdCkKICAgICAgICAgICAgICAgICAgICAgY29t
bWl0TGluZUJyZWFrQXRDdXJyZW50V2lkdGgoKm1fbGFzdE9iamVjdCwgbV9sYXN0T2JqZWN0LT5p
c1RleHQoKSA/IG1fbGFzdE9iamVjdC0+bGVuZ3RoKCkgOiAwKTsKICAgICAgICAgICAgICAgICBl
bHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lSW5saW5lSGVhZGVy
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVJbmxp
bmVIZWFkZXJzLmgJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9saW5lL0xpbmVJbmxpbmVIZWFkZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcg
QEAgaW5saW5lIGJvb2wgc2hvdWxkQ29sbGFwc2VXaGl0ZVNwYWNlKGNvbgogICAgIC8vIElmIGEg
c3BhY2UgKFUrMDAyMCkgYXQgdGhlIGVuZCBvZiBhIGxpbmUgaGFzICd3aGl0ZS1zcGFjZScgc2V0
IHRvICdub3JtYWwnLCAnbm93cmFwJywgb3IgJ3ByZS1saW5lJywgaXQgaXMgYWxzbyByZW1vdmVk
LgogICAgIC8vIElmIHNwYWNlcyAoVSswMDIwKSBvciB0YWJzIChVKzAwMDkpIGF0IHRoZSBlbmQg
b2YgYSBsaW5lIGhhdmUgJ3doaXRlLXNwYWNlJyBzZXQgdG8gJ3ByZS13cmFwJywgVUFzIG1heSB2
aXN1YWxseSBjb2xsYXBzZSB0aGVtLgogICAgIHJldHVybiBzdHlsZS0+Y29sbGFwc2VXaGl0ZVNw
YWNlKCkKLSAgICAgICAgfHwgKHdoaXRlc3BhY2VQb3NpdGlvbiA9PSBUcmFpbGluZ1doaXRlc3Bh
Y2UgJiYgc3R5bGUtPndoaXRlU3BhY2UoKSA9PSBQUkVfV1JBUCAmJiAoIWxpbmVJbmZvLmlzRW1w
dHkoKSB8fCAhbGluZUluZm8ucHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KCkpKTsKKyAgICAgICAg
fHwgKHdoaXRlc3BhY2VQb3NpdGlvbiA9PSBUcmFpbGluZ1doaXRlc3BhY2UgJiYgc3R5bGUtPndo
aXRlU3BhY2UoKSA9PSBXaGl0ZVNwYWNlOjpQcmVXcmFwICYmICghbGluZUluZm8uaXNFbXB0eSgp
IHx8ICFsaW5lSW5mby5wcmV2aW91c0xpbmVCcm9rZUNsZWFubHkoKSkpOwogfQogCiBpbmxpbmUg
Ym9vbCBza2lwTm9uQnJlYWtpbmdTcGFjZShjb25zdCBJbmxpbmVJdGVyYXRvciYgaXQsIGNvbnN0
IExpbmVJbmZvJiBsaW5lSW5mbykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5l
L0xpbmVXaWR0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xp
bmUvTGluZVdpZHRoLmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL2xpbmUvTGluZVdpZHRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBA
QCBzdGF0aWMgYm9vbCBuZXdGbG9hdFNocmlua3NMaW5lKGNvbnN0IEZsCiAKICAgICAvLyBpbml0
aWFsLWxldHRlciBmbG9hdCBhbHdheXMgc2hyaW5rcyB0aGUgZmlyc3QgbGluZS4KICAgICBjb25z
dCBhdXRvJiBzdHlsZSA9IG5ld0Zsb2F0LnJlbmRlcmVyKCkuc3R5bGUoKTsKLSAgICBpZiAoaXNG
aXJzdExpbmUgJiYgc3R5bGUuc3R5bGVUeXBlKCkgPT0gRklSU1RfTEVUVEVSICYmICFzdHlsZS5p
bml0aWFsTGV0dGVyKCkuaXNFbXB0eSgpKQorICAgIGlmIChpc0ZpcnN0TGluZSAmJiBzdHlsZS5z
dHlsZVR5cGUoKSA9PSBQc2V1ZG9JZDo6Rmlyc3RMZXR0ZXIgJiYgIXN0eWxlLmluaXRpYWxMZXR0
ZXIoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBmYWxzZTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE9wZXJhdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhPcGVy
YXRvci5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvTWF0aE9wZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzA4LDcgKzcwOCw3IEBA
IHZvaWQgTWF0aE9wZXJhdG9yOjpwYWludEhvcml6b250YWxHbHlwaEEKIAogdm9pZCBNYXRoT3Bl
cmF0b3I6OnBhaW50KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgUGFpbnRJbmZvJiBpbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7Ci0gICAgaWYgKGluZm8uY29udGV4dCgp
LnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5k
IHx8IHN0eWxlLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChpbmZvLmNvbnRleHQo
KS5wYWludGluZ0Rpc2FibGVkKCkgfHwgaW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3Vu
ZCB8fCBzdHlsZS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgLy8gTWFrZSBhIGNvcHkgb2YgdGhlIFBhaW50SW5mbyBiZWNhdXNlIGFw
cGx5VHJhbnNmb3JtIHdpbGwgbW9kaWZ5IGl0cyByZWN0LgpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAJ
KHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MRnJhY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsNyArMjU1LDcgQEAg
dm9pZCBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6cGFpbnQoUGFpbnRJbgogewogICAgIFJlbmRlck1h
dGhNTEJsb2NrOjpwYWludChpbmZvLCBwYWludE9mZnNldCk7CiAgICAgTGF5b3V0VW5pdCB0aGlj
a25lc3MgPSBsaW5lVGhpY2tuZXNzKCk7Ci0gICAgaWYgKGluZm8uY29udGV4dCgpLnBhaW50aW5n
RGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHN0eWxl
KCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgIWlzVmFsaWQoKSB8fCAhdGhpY2tuZXNzKQor
ICAgIGlmIChpbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkgfHwgaW5mby5waGFzZSAh
PSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmls
aXR5OjpWaXNpYmxlIHx8ICFpc1ZhbGlkKCkgfHwgIXRoaWNrbmVzcykKICAgICAgICAgcmV0dXJu
OwogCiAgICAgSW50UG9pbnQgYWRqdXN0ZWRQYWludE9mZnNldCA9IHJvdW5kZWRJbnRQb2ludChw
YWludE9mZnNldCArIGxvY2F0aW9uKCkgKyBMYXlvdXRQb2ludCgwLCBhc2NlbnRPdmVySG9yaXpv
bnRhbEF4aXMoKSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxNYXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTE1hdGguY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1hdGguY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MTWF0aDo6bGF5b3V0QmxvY2so
Ym9vbCAKIHsKICAgICBBU1NFUlQobmVlZHNMYXlvdXQoKSk7CiAKLSAgICBpZiAoc3R5bGUoKS5k
aXNwbGF5KCkgIT0gQkxPQ0spIHsKKyAgICBpZiAoc3R5bGUoKS5kaXNwbGF5KCkgIT0gRGlzcGxh
eVR5cGU6OkJsb2NrKSB7CiAgICAgICAgIFJlbmRlck1hdGhNTFJvdzo6bGF5b3V0QmxvY2socmVs
YXlvdXRDaGlsZHJlbiwgcGFnZUxvZ2ljYWxIZWlnaHQpOwogICAgICAgICByZXR1cm47CiAgICAg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5j
bG9zZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxNZW5jbG9zZTo6cGFpbnQo
UGFpbnRJbgogewogICAgIFJlbmRlck1hdGhNTFJvdzo6cGFpbnQoaW5mbywgcGFpbnRPZmZzZXQp
OwogCi0gICAgaWYgKGluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBo
YXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJ
U0lCTEUpCisgICAgaWYgKGluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZv
LnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9
IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIExheW91dFVuaXQg
dGhpY2tuZXNzID0gcnVsZVRoaWNrbmVzcygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCShyZXZpc2lvbiAyMzIx
NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxS
b290OjpwYWludChQYWludEluZm8mIAogewogICAgIFJlbmRlck1hdGhNTFJvdzo6cGFpbnQoaW5m
bywgcGFpbnRPZmZzZXQpOwogCi0gICAgaWYgKCFmaXJzdENoaWxkKCkgfHwgaW5mby5jb250ZXh0
KCkucGFpbnRpbmdEaXNhYmxlZCgpIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUg
fHwgIWlzVmFsaWQoKSkKKyAgICBpZiAoIWZpcnN0Q2hpbGQoKSB8fCBpbmZvLmNvbnRleHQoKS5w
YWludGluZ0Rpc2FibGVkKCkgfHwgc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6
VmlzaWJsZSB8fCAhaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXZSBkcmF3
IHRoZSByYWRpY2FsIG9wZXJhdG9yLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAJKHJldmlzaW9uIDIzMjE0MykK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01OTQsNyArNTk0LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxUb2tl
bjo6cGFpbnQoUGFpbnRJbmZvJgogICAgIFJlbmRlck1hdGhNTEJsb2NrOjpwYWludChpbmZvLCBw
YWludE9mZnNldCk7CiAKICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiB1c2luZyBEcmF3R2x5cGgs
IHdlIG1heSBjb25zaWRlciB1c2luZyB0aGUgbW9yZSBnZW5lcmFsIFRleHRQYWludGVyIHNvIHRo
YXQgd2UgY2FuIGFwcGx5IG1hdGh2YXJpYW50IHRvIHN0cmluZ3Mgd2l0aCBhbiBhcmJpdHJhcnkg
bnVtYmVyIG9mIGNoYXJhY3RlcnMgYW5kIHByZXNlcnZlIGFkdmFuY2VkIENTUyBlZmZlY3RzICh0
ZXh0LXNoYWRvdywgZXRjKS4KLSAgICBpZiAoaW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxl
ZCgpIHx8IGluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQgfHwgc3R5bGUoKS52aXNp
YmlsaXR5KCkgIT0gVklTSUJMRSB8fCAhbV9tYXRoVmFyaWFudENvZGVQb2ludCkKKyAgICBpZiAo
aW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpIHx8IGluZm8ucGhhc2UgIT0gUGFpbnRQ
aGFzZUZvcmVncm91bmQgfHwgc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6Vmlz
aWJsZSB8fCAhbV9tYXRoVmFyaWFudENvZGVQb2ludCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
YXV0byBtYXRoVmFyaWFudEdseXBoID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpLmdseXBoRGF0YUZv
ckNoYXJhY3RlcihtX21hdGhWYXJpYW50Q29kZVBvaW50LnZhbHVlKCksIG1fbWF0aFZhcmlhbnRJ
c01pcnJvcmVkKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvQm94U2hh
cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvQm94
U2hhcGUuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL0JveFNoYXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBSb3Vu
ZGVkUmVjdCBjb21wdXRlUm91bmRlZFJlY3RGb3JCb3hTaGFwCiB7CiAgICAgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlID0gcmVuZGVyZXIuc3R5bGUoKTsKICAgICBzd2l0Y2ggKGJveCkgewotICAg
IGNhc2UgTWFyZ2luQm94OiB7CisgICAgY2FzZSBDU1NCb3hUeXBlOjpNYXJnaW5Cb3g6IHsKICAg
ICAgICAgaWYgKCFzdHlsZS5oYXNCb3JkZXJSYWRpdXMoKSkKICAgICAgICAgICAgIHJldHVybiBS
b3VuZGVkUmVjdChyZW5kZXJlci5tYXJnaW5Cb3hSZWN0KCksIFJvdW5kZWRSZWN0OjpSYWRpaSgp
KTsKIApAQCAtNzUsMTggKzc1LDE4IEBAIFJvdW5kZWRSZWN0IGNvbXB1dGVSb3VuZGVkUmVjdEZv
ckJveFNoYXAKICAgICAgICAgcmFkaWkuc2NhbGUoY2FsY0JvcmRlclJhZGlpQ29uc3RyYWludFNj
YWxlRm9yKG1hcmdpbkJveCwgcmFkaWkpKTsKICAgICAgICAgcmV0dXJuIFJvdW5kZWRSZWN0KG1h
cmdpbkJveCwgcmFkaWkpOwogICAgIH0KLSAgICBjYXNlIFBhZGRpbmdCb3g6CisgICAgY2FzZSBD
U1NCb3hUeXBlOjpQYWRkaW5nQm94OgogICAgICAgICByZXR1cm4gc3R5bGUuZ2V0Um91bmRlZElu
bmVyQm9yZGVyRm9yKHJlbmRlcmVyLmJvcmRlckJveFJlY3QoKSk7Ci0gICAgY2FzZSBDb250ZW50
Qm94OgorICAgIGNhc2UgQ1NTQm94VHlwZTo6Q29udGVudEJveDoKICAgICAgICAgcmV0dXJuIHN0
eWxlLmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihyZW5kZXJlci5ib3JkZXJCb3hSZWN0KCksCiAg
ICAgICAgICAgICByZW5kZXJlci5wYWRkaW5nVG9wKCkgKyByZW5kZXJlci5ib3JkZXJUb3AoKSwg
cmVuZGVyZXIucGFkZGluZ0JvdHRvbSgpICsgcmVuZGVyZXIuYm9yZGVyQm90dG9tKCksCiAgICAg
ICAgICAgICByZW5kZXJlci5wYWRkaW5nTGVmdCgpICsgcmVuZGVyZXIuYm9yZGVyTGVmdCgpLCBy
ZW5kZXJlci5wYWRkaW5nUmlnaHQoKSArIHJlbmRlcmVyLmJvcmRlclJpZ2h0KCkpOwogICAgIC8v
IGZpbGwsIHN0cm9rZSwgdmlldy1ib3ggY29tcHV0ZSB0byBib3JkZXItYm94IGZvciBIVE1MIGVs
ZW1lbnRzLgotICAgIGNhc2UgQm9yZGVyQm94OgotICAgIGNhc2UgRmlsbDoKLSAgICBjYXNlIFN0
cm9rZToKLSAgICBjYXNlIFZpZXdCb3g6Ci0gICAgY2FzZSBCb3hNaXNzaW5nOgorICAgIGNhc2Ug
Q1NTQm94VHlwZTo6Qm9yZGVyQm94OgorICAgIGNhc2UgQ1NTQm94VHlwZTo6RmlsbDoKKyAgICBj
YXNlIENTU0JveFR5cGU6OlN0cm9rZToKKyAgICBjYXNlIENTU0JveFR5cGU6OlZpZXdCb3g6Cisg
ICAgY2FzZSBDU1NCb3hUeXBlOjpCb3hNaXNzaW5nOgogICAgICAgICByZXR1cm4gc3R5bGUuZ2V0
Um91bmRlZEJvcmRlckZvcihyZW5kZXJlci5ib3JkZXJCb3hSZWN0KCkpOwogICAgIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lk
ZUluZm8uY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MiwxMCArNzIs
MTAgQEAgRmxvYXRTaXplIFNoYXBlT3V0c2lkZUluZm86OnNoYXBlVG9SZW5kZQogCiBzdGF0aWMg
aW5saW5lIENTU0JveFR5cGUgcmVmZXJlbmNlQm94KGNvbnN0IFNoYXBlVmFsdWUmIHNoYXBlVmFs
dWUpCiB7Ci0gICAgaWYgKHNoYXBlVmFsdWUuY3NzQm94KCkgPT0gQm94TWlzc2luZykgeworICAg
IGlmIChzaGFwZVZhbHVlLmNzc0JveCgpID09IENTU0JveFR5cGU6OkJveE1pc3NpbmcpIHsKICAg
ICAgICAgaWYgKHNoYXBlVmFsdWUudHlwZSgpID09IFNoYXBlVmFsdWU6OlR5cGU6OkltYWdlKQot
ICAgICAgICAgICAgcmV0dXJuIENvbnRlbnRCb3g7Ci0gICAgICAgIHJldHVybiBNYXJnaW5Cb3g7
CisgICAgICAgICAgICByZXR1cm4gQ1NTQm94VHlwZTo6Q29udGVudEJveDsKKyAgICAgICAgcmV0
dXJuIENTU0JveFR5cGU6Ok1hcmdpbkJveDsKICAgICB9CiAgICAgcmV0dXJuIHNoYXBlVmFsdWUu
Y3NzQm94KCk7CiB9CkBAIC04NCwzMCArODQsMzAgQEAgdm9pZCBTaGFwZU91dHNpZGVJbmZvOjpz
ZXRSZWZlcmVuY2VCb3hMbwogewogICAgIGJvb2wgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUgPSBt
X3JlbmRlcmVyLmNvbnRhaW5pbmdCbG9jaygpLT5zdHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCk7CiAgICAgc3dpdGNoIChyZWZlcmVuY2VCb3goKm1fcmVuZGVyZXIuc3R5bGUoKS5zaGFw
ZU91dHNpZGUoKSkpIHsKLSAgICBjYXNlIE1hcmdpbkJveDoKKyAgICBjYXNlIENTU0JveFR5cGU6
Ok1hcmdpbkJveDoKICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKQogICAgICAg
ICAgICAgbmV3UmVmZXJlbmNlQm94TG9naWNhbFNpemUuZXhwYW5kKG1fcmVuZGVyZXIuaG9yaXpv
bnRhbE1hcmdpbkV4dGVudCgpLCBtX3JlbmRlcmVyLnZlcnRpY2FsTWFyZ2luRXh0ZW50KCkpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBuZXdSZWZlcmVuY2VCb3hMb2dpY2FsU2l6ZS5leHBh
bmQobV9yZW5kZXJlci52ZXJ0aWNhbE1hcmdpbkV4dGVudCgpLCBtX3JlbmRlcmVyLmhvcml6b250
YWxNYXJnaW5FeHRlbnQoKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQm9yZGVyQm94Ogor
ICAgIGNhc2UgQ1NTQm94VHlwZTo6Qm9yZGVyQm94OgogICAgICAgICBicmVhazsKLSAgICBjYXNl
IFBhZGRpbmdCb3g6CisgICAgY2FzZSBDU1NCb3hUeXBlOjpQYWRkaW5nQm94OgogICAgICAgICBp
ZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUpCiAgICAgICAgICAgICBuZXdSZWZlcmVuY2VCb3hM
b2dpY2FsU2l6ZS5zaHJpbmsobV9yZW5kZXJlci5ob3Jpem9udGFsQm9yZGVyRXh0ZW50KCksIG1f
cmVuZGVyZXIudmVydGljYWxCb3JkZXJFeHRlbnQoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIG5ld1JlZmVyZW5jZUJveExvZ2ljYWxTaXplLnNocmluayhtX3JlbmRlcmVyLnZlcnRpY2Fs
Qm9yZGVyRXh0ZW50KCksIG1fcmVuZGVyZXIuaG9yaXpvbnRhbEJvcmRlckV4dGVudCgpKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDb250ZW50Qm94OgorICAgIGNhc2UgQ1NTQm94VHlwZTo6
Q29udGVudEJveDoKICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKQogICAgICAg
ICAgICAgbmV3UmVmZXJlbmNlQm94TG9naWNhbFNpemUuc2hyaW5rKG1fcmVuZGVyZXIuaG9yaXpv
bnRhbEJvcmRlckFuZFBhZGRpbmdFeHRlbnQoKSwgbV9yZW5kZXJlci52ZXJ0aWNhbEJvcmRlckFu
ZFBhZGRpbmdFeHRlbnQoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG5ld1JlZmVyZW5j
ZUJveExvZ2ljYWxTaXplLnNocmluayhtX3JlbmRlcmVyLnZlcnRpY2FsQm9yZGVyQW5kUGFkZGlu
Z0V4dGVudCgpLCBtX3JlbmRlcmVyLmhvcml6b250YWxCb3JkZXJBbmRQYWRkaW5nRXh0ZW50KCkp
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEZpbGw6Ci0gICAgY2FzZSBTdHJva2U6Ci0gICAg
Y2FzZSBWaWV3Qm94OgotICAgIGNhc2UgQm94TWlzc2luZzoKKyAgICBjYXNlIENTU0JveFR5cGU6
OkZpbGw6CisgICAgY2FzZSBDU1NCb3hUeXBlOjpTdHJva2U6CisgICAgY2FzZSBDU1NCb3hUeXBl
OjpWaWV3Qm94OgorICAgIGNhc2UgQ1NTQm94VHlwZTo6Qm94TWlzc2luZzoKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTIyNCwxNCArMjI0
LDIyIEBAIHN0YXRpYyBpbmxpbmUgTGF5b3V0VW5pdCBib3JkZXJBbmRQYWRkaW4KIExheW91dFVu
aXQgU2hhcGVPdXRzaWRlSW5mbzo6bG9naWNhbFRvcE9mZnNldCgpIGNvbnN0CiB7CiAgICAgc3dp
dGNoIChyZWZlcmVuY2VCb3goKm1fcmVuZGVyZXIuc3R5bGUoKS5zaGFwZU91dHNpZGUoKSkpIHsK
LSAgICBjYXNlIE1hcmdpbkJveDogcmV0dXJuIC1tX3JlbmRlcmVyLm1hcmdpbkJlZm9yZSgmbV9y
ZW5kZXJlci5jb250YWluaW5nQmxvY2soKS0+c3R5bGUoKSk7Ci0gICAgY2FzZSBCb3JkZXJCb3g6
IHJldHVybiBMYXlvdXRVbml0KCk7Ci0gICAgY2FzZSBQYWRkaW5nQm94OiByZXR1cm4gYm9yZGVy
QmVmb3JlSW5Xcml0aW5nTW9kZShtX3JlbmRlcmVyLCBtX3JlbmRlcmVyLmNvbnRhaW5pbmdCbG9j
aygpLT5zdHlsZSgpLndyaXRpbmdNb2RlKCkpOwotICAgIGNhc2UgQ29udGVudEJveDogcmV0dXJu
IGJvcmRlckFuZFBhZGRpbmdCZWZvcmVJbldyaXRpbmdNb2RlKG1fcmVuZGVyZXIsIG1fcmVuZGVy
ZXIuY29udGFpbmluZ0Jsb2NrKCktPnN0eWxlKCkud3JpdGluZ01vZGUoKSk7Ci0gICAgY2FzZSBG
aWxsOiBicmVhazsKLSAgICBjYXNlIFN0cm9rZTogYnJlYWs7Ci0gICAgY2FzZSBWaWV3Qm94OiBi
cmVhazsKLSAgICBjYXNlIEJveE1pc3Npbmc6IGJyZWFrOworICAgIGNhc2UgQ1NTQm94VHlwZTo6
TWFyZ2luQm94OgorICAgICAgICByZXR1cm4gLW1fcmVuZGVyZXIubWFyZ2luQmVmb3JlKCZtX3Jl
bmRlcmVyLmNvbnRhaW5pbmdCbG9jaygpLT5zdHlsZSgpKTsKKyAgICBjYXNlIENTU0JveFR5cGU6
OkJvcmRlckJveDoKKyAgICAgICAgcmV0dXJuIExheW91dFVuaXQoKTsKKyAgICBjYXNlIENTU0Jv
eFR5cGU6OlBhZGRpbmdCb3g6CisgICAgICAgIHJldHVybiBib3JkZXJCZWZvcmVJbldyaXRpbmdN
b2RlKG1fcmVuZGVyZXIsIG1fcmVuZGVyZXIuY29udGFpbmluZ0Jsb2NrKCktPnN0eWxlKCkud3Jp
dGluZ01vZGUoKSk7CisgICAgY2FzZSBDU1NCb3hUeXBlOjpDb250ZW50Qm94OgorICAgICAgICBy
ZXR1cm4gYm9yZGVyQW5kUGFkZGluZ0JlZm9yZUluV3JpdGluZ01vZGUobV9yZW5kZXJlciwgbV9y
ZW5kZXJlci5jb250YWluaW5nQmxvY2soKS0+c3R5bGUoKS53cml0aW5nTW9kZSgpKTsKKyAgICBj
YXNlIENTU0JveFR5cGU6OkZpbGw6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTQm94VHlw
ZTo6U3Ryb2tlOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU0JveFR5cGU6OlZpZXdCb3g6
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTQm94VHlwZTo6Qm94TWlzc2luZzoKKyAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjcy
LDE0ICsyODAsMjIgQEAgTGF5b3V0VW5pdCBTaGFwZU91dHNpZGVJbmZvOjpsb2dpY2FsTGVmdAog
ICAgICAgICByZXR1cm4gTGF5b3V0VW5pdCgpOwogICAgIAogICAgIHN3aXRjaCAocmVmZXJlbmNl
Qm94KCptX3JlbmRlcmVyLnN0eWxlKCkuc2hhcGVPdXRzaWRlKCkpKSB7Ci0gICAgY2FzZSBNYXJn
aW5Cb3g6IHJldHVybiAtbV9yZW5kZXJlci5tYXJnaW5TdGFydCgmbV9yZW5kZXJlci5jb250YWlu
aW5nQmxvY2soKS0+c3R5bGUoKSk7Ci0gICAgY2FzZSBCb3JkZXJCb3g6IHJldHVybiBMYXlvdXRV
bml0KCk7Ci0gICAgY2FzZSBQYWRkaW5nQm94OiByZXR1cm4gYm9yZGVyU3RhcnRXaXRoU3R5bGVG
b3JXcml0aW5nTW9kZShtX3JlbmRlcmVyLCBtX3JlbmRlcmVyLmNvbnRhaW5pbmdCbG9jaygpLT5z
dHlsZSgpKTsKLSAgICBjYXNlIENvbnRlbnRCb3g6IHJldHVybiBib3JkZXJBbmRQYWRkaW5nU3Rh
cnRXaXRoU3R5bGVGb3JXcml0aW5nTW9kZShtX3JlbmRlcmVyLCBtX3JlbmRlcmVyLmNvbnRhaW5p
bmdCbG9jaygpLT5zdHlsZSgpKTsKLSAgICBjYXNlIEZpbGw6IGJyZWFrOwotICAgIGNhc2UgU3Ry
b2tlOiBicmVhazsKLSAgICBjYXNlIFZpZXdCb3g6IGJyZWFrOwotICAgIGNhc2UgQm94TWlzc2lu
ZzogYnJlYWs7CisgICAgY2FzZSBDU1NCb3hUeXBlOjpNYXJnaW5Cb3g6CisgICAgICAgIHJldHVy
biAtbV9yZW5kZXJlci5tYXJnaW5TdGFydCgmbV9yZW5kZXJlci5jb250YWluaW5nQmxvY2soKS0+
c3R5bGUoKSk7CisgICAgY2FzZSBDU1NCb3hUeXBlOjpCb3JkZXJCb3g6CisgICAgICAgIHJldHVy
biBMYXlvdXRVbml0KCk7CisgICAgY2FzZSBDU1NCb3hUeXBlOjpQYWRkaW5nQm94OgorICAgICAg
ICByZXR1cm4gYm9yZGVyU3RhcnRXaXRoU3R5bGVGb3JXcml0aW5nTW9kZShtX3JlbmRlcmVyLCBt
X3JlbmRlcmVyLmNvbnRhaW5pbmdCbG9jaygpLT5zdHlsZSgpKTsKKyAgICBjYXNlIENTU0JveFR5
cGU6OkNvbnRlbnRCb3g6CisgICAgICAgIHJldHVybiBib3JkZXJBbmRQYWRkaW5nU3RhcnRXaXRo
U3R5bGVGb3JXcml0aW5nTW9kZShtX3JlbmRlcmVyLCBtX3JlbmRlcmVyLmNvbnRhaW5pbmdCbG9j
aygpLT5zdHlsZSgpKTsKKyAgICBjYXNlIENTU0JveFR5cGU6OkZpbGw6CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ1NTQm94VHlwZTo6U3Ryb2tlOgorICAgICAgICBicmVhazsKKyAgICBjYXNl
IENTU0JveFR5cGU6OlZpZXdCb3g6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTQm94VHlw
ZTo6Qm94TWlzc2luZzoKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRlckNv
bnRlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ291
bnRlckNvbnRlbnQuaAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0NvdW50ZXJDb250ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ291bnRlckNvbnRlbnQgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIENvdW50ZXJDb250ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgaWRlbnRpZmllciwgRUxpc3RTdHlsZVR5cGUgc3R5bGUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgc2VwYXJhdG9yKQorICAgIENvdW50ZXJDb250ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgaWRlbnRpZmllciwgTGlzdFN0eWxlVHlwZSBzdHlsZSwgY29uc3QgQXRvbWljU3RyaW5nJiBz
ZXBhcmF0b3IpCiAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgICAgICwg
bV9saXN0U3R5bGUoc3R5bGUpCiAgICAgICAgICwgbV9zZXBhcmF0b3Ioc2VwYXJhdG9yKQpAQCAt
NDAsMTIgKzQwLDEyIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KLSAgICBFTGlzdFN0
eWxlVHlwZSBsaXN0U3R5bGUoKSBjb25zdCB7IHJldHVybiBtX2xpc3RTdHlsZTsgfQorICAgIExp
c3RTdHlsZVR5cGUgbGlzdFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9saXN0U3R5bGU7IH0KICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIHNlcGFyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fc2VwYXJh
dG9yOyB9CiAKIHByaXZhdGU6CiAgICAgQXRvbWljU3RyaW5nIG1faWRlbnRpZmllcjsKLSAgICBF
TGlzdFN0eWxlVHlwZSBtX2xpc3RTdHlsZTsKKyAgICBMaXN0U3R5bGVUeXBlIG1fbGlzdFN0eWxl
OwogICAgIEF0b21pY1N0cmluZyBtX3NlcGFyYXRvcjsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkocmV2aXNpb24gMjMyMTQz
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gUmVuZGVyU3R5bGUKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTdHlsZT4o
c3R5bGUsIENsb25lKTsKIH0KIAotUmVuZGVyU3R5bGUgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255
bW91c1N0eWxlV2l0aERpc3BsYXkoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBFRGlz
cGxheSBkaXNwbGF5KQorUmVuZGVyU3R5bGUgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0
eWxlV2l0aERpc3BsYXkoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBEaXNwbGF5VHlw
ZSBkaXNwbGF5KQogewogICAgIGF1dG8gbmV3U3R5bGUgPSBjcmVhdGUoKTsKICAgICBuZXdTdHls
ZS5pbmhlcml0RnJvbShwYXJlbnRTdHlsZSk7CkBAIC0xMjAsNyArMTIwLDcgQEAgUmVuZGVyU3R5
bGUgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91cwogCiBSZW5kZXJTdHlsZSBSZW5kZXJTdHls
ZTo6Y3JlYXRlU3R5bGVJbmhlcml0aW5nRnJvbVBzZXVkb1N0eWxlKGNvbnN0IFJlbmRlclN0eWxl
JiBwc2V1ZG9TdHlsZSkKIHsKLSAgICBBU1NFUlQocHNldWRvU3R5bGUuc3R5bGVUeXBlKCkgPT0g
QkVGT1JFIHx8IHBzZXVkb1N0eWxlLnN0eWxlVHlwZSgpID09IEFGVEVSKTsKKyAgICBBU1NFUlQo
cHNldWRvU3R5bGUuc3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6OkJlZm9yZSB8fCBwc2V1ZG9TdHls
ZS5zdHlsZVR5cGUoKSA9PSBQc2V1ZG9JZDo6QWZ0ZXIpOwogCiAgICAgYXV0byBzdHlsZSA9IGNy
ZWF0ZSgpOwogICAgIHN0eWxlLmluaGVyaXRGcm9tKHBzZXVkb1N0eWxlKTsKQEAgLTE0MCwzMSAr
MTQwLDMxIEBAIFJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZShDcmVhdGVEZWZhdWx0U3QKICAgICAs
IG1faW5oZXJpdGVkRGF0YShTdHlsZUluaGVyaXRlZERhdGE6OmNyZWF0ZSgpKQogICAgICwgbV9z
dmdTdHlsZShTVkdSZW5kZXJTdHlsZTo6Y3JlYXRlKCkpCiB7Ci0gICAgbV9pbmhlcml0ZWRGbGFn
cy5lbXB0eUNlbGxzID0gaW5pdGlhbEVtcHR5Q2VsbHMoKTsKLSAgICBtX2luaGVyaXRlZEZsYWdz
LmNhcHRpb25TaWRlID0gaW5pdGlhbENhcHRpb25TaWRlKCk7Ci0gICAgbV9pbmhlcml0ZWRGbGFn
cy5saXN0U3R5bGVUeXBlID0gaW5pdGlhbExpc3RTdHlsZVR5cGUoKTsKLSAgICBtX2luaGVyaXRl
ZEZsYWdzLmxpc3RTdHlsZVBvc2l0aW9uID0gaW5pdGlhbExpc3RTdHlsZVBvc2l0aW9uKCk7Ci0g
ICAgbV9pbmhlcml0ZWRGbGFncy52aXNpYmlsaXR5ID0gaW5pdGlhbFZpc2liaWxpdHkoKTsKLSAg
ICBtX2luaGVyaXRlZEZsYWdzLnRleHRBbGlnbiA9IGluaXRpYWxUZXh0QWxpZ24oKTsKLSAgICBt
X2luaGVyaXRlZEZsYWdzLnRleHRUcmFuc2Zvcm0gPSBpbml0aWFsVGV4dFRyYW5zZm9ybSgpOwor
ICAgIG1faW5oZXJpdGVkRmxhZ3MuZW1wdHlDZWxscyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
bml0aWFsRW1wdHlDZWxscygpKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmNhcHRpb25TaWRlID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxDYXB0aW9uU2lkZSgpKTsKKyAgICBtX2luaGVy
aXRlZEZsYWdzLmxpc3RTdHlsZVR5cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbExp
c3RTdHlsZVR5cGUoKSk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5saXN0U3R5bGVQb3NpdGlvbiA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsTGlzdFN0eWxlUG9zaXRpb24oKSk7CisgICAg
bV9pbmhlcml0ZWRGbGFncy52aXNpYmlsaXR5ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRp
YWxWaXNpYmlsaXR5KCkpOworICAgIG1faW5oZXJpdGVkRmxhZ3MudGV4dEFsaWduID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxUZXh0QWxpZ24oKSk7CisgICAgbV9pbmhlcml0ZWRGbGFn
cy50ZXh0VHJhbnNmb3JtID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxUZXh0VHJhbnNm
b3JtKCkpOwogICAgIG1faW5oZXJpdGVkRmxhZ3MudGV4dERlY29yYXRpb25zID0gaW5pdGlhbFRl
eHREZWNvcmF0aW9uKCk7Ci0gICAgbV9pbmhlcml0ZWRGbGFncy5jdXJzb3IgPSBpbml0aWFsQ3Vy
c29yKCk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5jdXJzb3IgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oaW5pdGlhbEN1cnNvcigpKTsKICNpZiBFTkFCTEUoQ1VSU09SX1ZJU0lCSUxJVFkpCi0gICAg
bV9pbmhlcml0ZWRGbGFncy5jdXJzb3JWaXNpYmlsaXR5ID0gaW5pdGlhbEN1cnNvclZpc2liaWxp
dHkoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLmN1cnNvclZpc2liaWxpdHkgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oaW5pdGlhbEN1cnNvclZpc2liaWxpdHkoKSk7CiAjZW5kaWYKICAgICBtX2lu
aGVyaXRlZEZsYWdzLmRpcmVjdGlvbiA9IGluaXRpYWxEaXJlY3Rpb24oKTsKLSAgICBtX2luaGVy
aXRlZEZsYWdzLndoaXRlU3BhY2UgPSBpbml0aWFsV2hpdGVTcGFjZSgpOworICAgIG1faW5oZXJp
dGVkRmxhZ3Mud2hpdGVTcGFjZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsV2hpdGVT
cGFjZSgpKTsKICAgICBtX2luaGVyaXRlZEZsYWdzLmJvcmRlckNvbGxhcHNlID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGluaXRpYWxCb3JkZXJDb2xsYXBzZSgpKTsKLSAgICBtX2luaGVyaXRlZEZs
YWdzLnJ0bE9yZGVyaW5nID0gaW5pdGlhbFJUTE9yZGVyaW5nKCk7CisgICAgbV9pbmhlcml0ZWRG
bGFncy5ydGxPcmRlcmluZyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsUlRMT3JkZXJp
bmcoKSk7CiAgICAgbV9pbmhlcml0ZWRGbGFncy5ib3hEaXJlY3Rpb24gPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oaW5pdGlhbEJveERpcmVjdGlvbigpKTsKICAgICBtX2luaGVyaXRlZEZsYWdzLnBy
aW50Q29sb3JBZGp1c3QgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbFByaW50Q29sb3JB
ZGp1c3QoKSk7Ci0gICAgbV9pbmhlcml0ZWRGbGFncy5wb2ludGVyRXZlbnRzID0gaW5pdGlhbFBv
aW50ZXJFdmVudHMoKTsKLSAgICBtX2luaGVyaXRlZEZsYWdzLmluc2lkZUxpbmsgPSBOb3RJbnNp
ZGVMaW5rOworICAgIG1faW5oZXJpdGVkRmxhZ3MucG9pbnRlckV2ZW50cyA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihpbml0aWFsUG9pbnRlckV2ZW50cygpKTsKKyAgICBtX2luaGVyaXRlZEZsYWdz
Lmluc2lkZUxpbmsgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSW5zaWRlTGluazo6Tm90SW5zaWRl
KTsKICAgICBtX2luaGVyaXRlZEZsYWdzLmluc2lkZURlZmF1bHRCdXR0b24gPSBmYWxzZTsKICAg
ICBtX2luaGVyaXRlZEZsYWdzLndyaXRpbmdNb2RlID0gaW5pdGlhbFdyaXRpbmdNb2RlKCk7CiAK
LSAgICBtX25vbkluaGVyaXRlZEZsYWdzLmVmZmVjdGl2ZURpc3BsYXkgPSBpbml0aWFsRGlzcGxh
eSgpOwotICAgIG1fbm9uSW5oZXJpdGVkRmxhZ3Mub3JpZ2luYWxEaXNwbGF5ID0gaW5pdGlhbERp
c3BsYXkoKTsKKyAgICBtX25vbkluaGVyaXRlZEZsYWdzLmVmZmVjdGl2ZURpc3BsYXkgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbERpc3BsYXkoKSk7CisgICAgbV9ub25Jbmhlcml0ZWRG
bGFncy5vcmlnaW5hbERpc3BsYXkgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbERpc3Bs
YXkoKSk7CiAgICAgbV9ub25Jbmhlcml0ZWRGbGFncy5vdmVyZmxvd1ggPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oaW5pdGlhbE92ZXJmbG93WCgpKTsKICAgICBtX25vbkluaGVyaXRlZEZsYWdzLm92
ZXJmbG93WSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsT3ZlcmZsb3dZKCkpOwogICAg
IG1fbm9uSW5oZXJpdGVkRmxhZ3MudmVydGljYWxBbGlnbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
Pihpbml0aWFsVmVydGljYWxBbGlnbigpKTsKQEAgLTE4Niw4ICsxODYsOCBAQCBSZW5kZXJTdHls
ZTo6UmVuZGVyU3R5bGUoQ3JlYXRlRGVmYXVsdFN0CiAgICAgbV9ub25Jbmhlcml0ZWRGbGFncy5h
ZmZlY3RlZEJ5QWN0aXZlID0gZmFsc2U7CiAgICAgbV9ub25Jbmhlcml0ZWRGbGFncy5hZmZlY3Rl
ZEJ5RHJhZyA9IGZhbHNlOwogICAgIG1fbm9uSW5oZXJpdGVkRmxhZ3MuaXNMaW5rID0gZmFsc2U7
Ci0gICAgbV9ub25Jbmhlcml0ZWRGbGFncy5zdHlsZVR5cGUgPSBOT1BTRVVETzsKLSAgICBtX25v
bkluaGVyaXRlZEZsYWdzLnBzZXVkb0JpdHMgPSBOT1BTRVVETzsKKyAgICBtX25vbkluaGVyaXRl
ZEZsYWdzLnN0eWxlVHlwZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQc2V1ZG9JZDo6Tm9uZSk7
CisgICAgbV9ub25Jbmhlcml0ZWRGbGFncy5wc2V1ZG9CaXRzID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFBzZXVkb0lkOjpOb25lKTsKIAogICAgIHN0YXRpY19hc3NlcnQoKHNpemVvZihJbmhlcml0
ZWRGbGFncykgPD0gOCksICJJbmhlcml0ZWRGbGFncyBkb2VzIG5vdCBncm93Iik7CiAgICAgc3Rh
dGljX2Fzc2VydCgoc2l6ZW9mKE5vbkluaGVyaXRlZEZsYWdzKSA8PSA4KSwgIk5vbkluaGVyaXRl
ZEZsYWdzIGRvZXMgbm90IGdyb3ciKTsKQEAgLTM2Niw3ICszNjYsNyBAQCBib29sIFJlbmRlclN0
eWxlOjpvcGVyYXRvcj09KGNvbnN0IFJlbmRlCiAKIGJvb2wgUmVuZGVyU3R5bGU6Omhhc1VuaXF1
ZVBzZXVkb1N0eWxlKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fY2FjaGVkUHNldWRvU3R5bGVzIHx8
IHN0eWxlVHlwZSgpICE9IE5PUFNFVURPKQorICAgIGlmICghbV9jYWNoZWRQc2V1ZG9TdHlsZXMg
fHwgc3R5bGVUeXBlKCkgIT0gUHNldWRvSWQ6Ok5vbmUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGZvciAoYXV0byYgcHNldWRvU3R5bGUgOiAqbV9jYWNoZWRQc2V1ZG9TdHlsZXMpIHsK
QEAgLTM4Miw3ICszODIsNyBAQCBSZW5kZXJTdHlsZSogUmVuZGVyU3R5bGU6OmdldENhY2hlZFBz
ZXVkCiAgICAgaWYgKCFtX2NhY2hlZFBzZXVkb1N0eWxlcyB8fCAhbV9jYWNoZWRQc2V1ZG9TdHls
ZXMtPnNpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoc3R5bGVUeXBl
KCkgIT0gTk9QU0VVRE8pIAorICAgIGlmIChzdHlsZVR5cGUoKSAhPSBQc2V1ZG9JZDo6Tm9uZSkg
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgZm9yIChhdXRvJiBwc2V1ZG9TdHlsZSA6
ICptX2NhY2hlZFBzZXVkb1N0eWxlcykgewpAQCAtMzk4LDcgKzM5OCw3IEBAIFJlbmRlclN0eWxl
KiBSZW5kZXJTdHlsZTo6YWRkQ2FjaGVkUHNldWQKICAgICBpZiAoIXBzZXVkbykKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBBU1NFUlQocHNldWRvLT5zdHlsZVR5cGUoKSA+IE5PUFNF
VURPKTsKKyAgICBBU1NFUlQocHNldWRvLT5zdHlsZVR5cGUoKSA+IFBzZXVkb0lkOjpOb25lKTsK
IAogICAgIFJlbmRlclN0eWxlKiByZXN1bHQgPSBwc2V1ZG8uZ2V0KCk7CiAKQEAgLTcwNiw3ICs3
MDYsNyBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheW91dChjCiAgICAgICAg
IHJldHVybiB0cnVlOwogCiAKLSAgICBpZiAobV9ub25Jbmhlcml0ZWRGbGFncy5lZmZlY3RpdmVE
aXNwbGF5ID49IFRBQkxFKSB7CisgICAgaWYgKHN0YXRpY19jYXN0PERpc3BsYXlUeXBlPihtX25v
bkluaGVyaXRlZEZsYWdzLmVmZmVjdGl2ZURpc3BsYXkpID49IERpc3BsYXlUeXBlOjpUYWJsZSkg
ewogICAgICAgICBpZiAobV9pbmhlcml0ZWRGbGFncy5ib3JkZXJDb2xsYXBzZSAhPSBvdGhlci5t
X2luaGVyaXRlZEZsYWdzLmJvcmRlckNvbGxhcHNlCiAgICAgICAgICAgICB8fCBtX2luaGVyaXRl
ZEZsYWdzLmVtcHR5Q2VsbHMgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy5lbXB0eUNlbGxzCiAg
ICAgICAgICAgICB8fCBtX2luaGVyaXRlZEZsYWdzLmNhcHRpb25TaWRlICE9IG90aGVyLm1faW5o
ZXJpdGVkRmxhZ3MuY2FwdGlvblNpZGUKQEAgLTcyNyw3ICs3MjcsNyBAQCBib29sIFJlbmRlclN0
eWxlOjpjaGFuZ2VSZXF1aXJlc0xheW91dChjCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKLSAgICBpZiAobV9ub25Jbmhlcml0ZWRGbGFncy5lZmZlY3RpdmVEaXNwbGF5ID09IExJ
U1RfSVRFTSkgeworICAgIGlmIChzdGF0aWNfY2FzdDxEaXNwbGF5VHlwZT4obV9ub25Jbmhlcml0
ZWRGbGFncy5lZmZlY3RpdmVEaXNwbGF5KSA9PSBEaXNwbGF5VHlwZTo6TGlzdEl0ZW0pIHsKICAg
ICAgICAgaWYgKG1faW5oZXJpdGVkRmxhZ3MubGlzdFN0eWxlVHlwZSAhPSBvdGhlci5tX2luaGVy
aXRlZEZsYWdzLmxpc3RTdHlsZVR5cGUKICAgICAgICAgICAgIHx8IG1faW5oZXJpdGVkRmxhZ3Mu
bGlzdFN0eWxlUG9zaXRpb24gIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy5saXN0U3R5bGVQb3Np
dGlvbikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNzcyLDcgKzc3Miw3IEBAIGJvb2wg
UmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5b3V0KGMKICAgICBpZiAoIWFyZVBvaW50aW5n
VG9FcXVhbERhdGEobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Y291bnRlckRpcmVjdGl2ZXMsIG90
aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmNvdW50ZXJEaXJlY3RpdmVzKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICBpZiAoKHZpc2liaWxpdHkoKSA9PSBDT0xMQVBTRSkgIT0gKG90
aGVyLnZpc2liaWxpdHkoKSA9PSBDT0xMQVBTRSkpCisgICAgaWYgKCh2aXNpYmlsaXR5KCkgPT0g
VmlzaWJpbGl0eTo6Q29sbGFwc2UpICE9IChvdGhlci52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0
eTo6Q29sbGFwc2UpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5oYXNPcGFjaXR5KCkgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+aGFzT3BhY2l0eSgpKSB7CkBAIC04MDksMTQgKzgwOSwxNCBAQCBib29sIFJlbmRlclN0eWxl
OjpjaGFuZ2VSZXF1aXJlc0xheW91dChjCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBib29sIGhh
c0ZpcnN0TGluZVN0eWxlID0gaGFzUHNldWRvU3R5bGUoRklSU1RfTElORSk7Ci0gICAgaWYgKGhh
c0ZpcnN0TGluZVN0eWxlICE9IG90aGVyLmhhc1BzZXVkb1N0eWxlKEZJUlNUX0xJTkUpKQorICAg
IGJvb2wgaGFzRmlyc3RMaW5lU3R5bGUgPSBoYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RM
aW5lKTsKKyAgICBpZiAoaGFzRmlyc3RMaW5lU3R5bGUgIT0gb3RoZXIuaGFzUHNldWRvU3R5bGUo
UHNldWRvSWQ6OkZpcnN0TGluZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChoYXNG
aXJzdExpbmVTdHlsZSkgewotICAgICAgICBhdXRvKiBmaXJzdExpbmVTdHlsZSA9IGdldENhY2hl
ZFBzZXVkb1N0eWxlKEZJUlNUX0xJTkUpOworICAgICAgICBhdXRvKiBmaXJzdExpbmVTdHlsZSA9
IGdldENhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb0lkOjpGaXJzdExpbmUpOwogICAgICAgICBpZiAo
IWZpcnN0TGluZVN0eWxlKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGF1dG8q
IG90aGVyRmlyc3RMaW5lU3R5bGUgPSBvdGhlci5nZXRDYWNoZWRQc2V1ZG9TdHlsZShGSVJTVF9M
SU5FKTsKKyAgICAgICAgYXV0byogb3RoZXJGaXJzdExpbmVTdHlsZSA9IG90aGVyLmdldENhY2hl
ZFBzZXVkb1N0eWxlKFBzZXVkb0lkOjpGaXJzdExpbmUpOwogICAgICAgICBpZiAoIW90aGVyRmly
c3RMaW5lU3R5bGUpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgLy8gRklYTUU6
IE5vdCBhbGwgZmlyc3QgbGluZSBzdHlsZSBjaGFuZ2VzIGFjdHVhbGx5IG5lZWQgbGF5b3V0LgpA
QCAtODg1LDcgKzg4NSw3IEBAIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5ZXJS
ZXAKIAogc3RhdGljIGJvb2wgcmVxdWlyZXNQYWludGluZyhjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUpCiB7Ci0gICAgaWYgKHN0eWxlLnZpc2liaWxpdHkoKSA9PSBISURERU4pCisgICAgaWYgKHN0
eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4pCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpZiAoIXN0eWxlLm9wYWNpdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMTM0OSw3ICsxMzQ5LDcgQEAgQ291bnRlckRpcmVjdGl2ZU1hcCYgUmVuZGVyU3R5bGU6OmFj
Y2VzcwogCiBjb25zdCBBdG9taWNTdHJpbmcmIFJlbmRlclN0eWxlOjpoeXBoZW5TdHJpbmcoKSBj
b25zdAogewotICAgIEFTU0VSVChoeXBoZW5zKCkgIT0gSHlwaGVuc05vbmUpOworICAgIEFTU0VS
VChoeXBoZW5zKCkgIT0gSHlwaGVuczo6Tm9uZSk7CiAKICAgICBhdXRvJiBoeXBoZW5hdGlvblN0
cmluZyA9IG1fcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uU3RyaW5nOwogICAgIGlmICgh
aHlwaGVuYXRpb25TdHJpbmcuaXNOdWxsKCkpCkBAIC0xMzY0LDM2ICsxMzY0LDM2IEBAIGNvbnN0
IEF0b21pY1N0cmluZyYgUmVuZGVyU3R5bGU6Omh5cGhlblMKIGNvbnN0IEF0b21pY1N0cmluZyYg
UmVuZGVyU3R5bGU6OnRleHRFbXBoYXNpc01hcmtTdHJpbmcoKSBjb25zdAogewogICAgIHN3aXRj
aCAodGV4dEVtcGhhc2lzTWFyaygpKSB7Ci0gICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrTm9uZToK
KyAgICBjYXNlIFRleHRFbXBoYXNpc01hcms6Ok5vbmU6CiAgICAgICAgIHJldHVybiBudWxsQXRv
bSgpOwotICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya0N1c3RvbToKKyAgICBjYXNlIFRleHRFbXBo
YXNpc01hcms6OkN1c3RvbToKICAgICAgICAgcmV0dXJuIHRleHRFbXBoYXNpc0N1c3RvbU1hcmso
KTsKLSAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtEb3Q6IHsKKyAgICBjYXNlIFRleHRFbXBoYXNp
c01hcms6OkRvdDogewogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5n
PiBmaWxsZWREb3RTdHJpbmcoJmJ1bGxldCwgMSk7CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxBdG9taWNTdHJpbmc+IG9wZW5Eb3RTdHJpbmcoJndoaXRlQnVsbGV0LCAxKTsKLSAgICAg
ICAgcmV0dXJuIHRleHRFbXBoYXNpc0ZpbGwoKSA9PSBUZXh0RW1waGFzaXNGaWxsRmlsbGVkID8g
ZmlsbGVkRG90U3RyaW5nIDogb3BlbkRvdFN0cmluZzsKKyAgICAgICAgcmV0dXJuIHRleHRFbXBo
YXNpc0ZpbGwoKSA9PSBUZXh0RW1waGFzaXNGaWxsOjpGaWxsZWQgPyBmaWxsZWREb3RTdHJpbmcg
OiBvcGVuRG90U3RyaW5nOwogICAgIH0KLSAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtDaXJjbGU6
IHsKKyAgICBjYXNlIFRleHRFbXBoYXNpc01hcms6OkNpcmNsZTogewogICAgICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBmaWxsZWRDaXJjbGVTdHJpbmcoJmJsYWNrQ2ly
Y2xlLCAxKTsKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gb3Bl
bkNpcmNsZVN0cmluZygmd2hpdGVDaXJjbGUsIDEpOwotICAgICAgICByZXR1cm4gdGV4dEVtcGhh
c2lzRmlsbCgpID09IFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQgPyBmaWxsZWRDaXJjbGVTdHJpbmcg
OiBvcGVuQ2lyY2xlU3RyaW5nOworICAgICAgICByZXR1cm4gdGV4dEVtcGhhc2lzRmlsbCgpID09
IFRleHRFbXBoYXNpc0ZpbGw6OkZpbGxlZCA/IGZpbGxlZENpcmNsZVN0cmluZyA6IG9wZW5DaXJj
bGVTdHJpbmc7CiAgICAgfQotICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya0RvdWJsZUNpcmNsZTog
eworICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFyazo6RG91YmxlQ2lyY2xlOiB7CiAgICAgICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGZpbGxlZERvdWJsZUNpcmNsZVN0cmlu
ZygmZmlzaGV5ZSwgMSk7CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJp
bmc+IG9wZW5Eb3VibGVDaXJjbGVTdHJpbmcoJmJ1bGxzZXllLCAxKTsKLSAgICAgICAgcmV0dXJu
IHRleHRFbXBoYXNpc0ZpbGwoKSA9PSBUZXh0RW1waGFzaXNGaWxsRmlsbGVkID8gZmlsbGVkRG91
YmxlQ2lyY2xlU3RyaW5nIDogb3BlbkRvdWJsZUNpcmNsZVN0cmluZzsKKyAgICAgICAgcmV0dXJu
IHRleHRFbXBoYXNpc0ZpbGwoKSA9PSBUZXh0RW1waGFzaXNGaWxsOjpGaWxsZWQgPyBmaWxsZWRE
b3VibGVDaXJjbGVTdHJpbmcgOiBvcGVuRG91YmxlQ2lyY2xlU3RyaW5nOwogICAgIH0KLSAgICBj
YXNlIFRleHRFbXBoYXNpc01hcmtUcmlhbmdsZTogeworICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFy
azo6VHJpYW5nbGU6IHsKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmlu
Zz4gZmlsbGVkVHJpYW5nbGVTdHJpbmcoJmJsYWNrVXBQb2ludGluZ1RyaWFuZ2xlLCAxKTsKICAg
ICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gb3BlblRyaWFuZ2xlU3Ry
aW5nKCZ3aGl0ZVVwUG9pbnRpbmdUcmlhbmdsZSwgMSk7Ci0gICAgICAgIHJldHVybiB0ZXh0RW1w
aGFzaXNGaWxsKCkgPT0gVGV4dEVtcGhhc2lzRmlsbEZpbGxlZCA/IGZpbGxlZFRyaWFuZ2xlU3Ry
aW5nIDogb3BlblRyaWFuZ2xlU3RyaW5nOworICAgICAgICByZXR1cm4gdGV4dEVtcGhhc2lzRmls
bCgpID09IFRleHRFbXBoYXNpc0ZpbGw6OkZpbGxlZCA/IGZpbGxlZFRyaWFuZ2xlU3RyaW5nIDog
b3BlblRyaWFuZ2xlU3RyaW5nOwogICAgIH0KLSAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtTZXNh
bWU6IHsKKyAgICBjYXNlIFRleHRFbXBoYXNpc01hcms6OlNlc2FtZTogewogICAgICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBmaWxsZWRTZXNhbWVTdHJpbmcoJnNlc2Ft
ZURvdCwgMSk7CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG9w
ZW5TZXNhbWVTdHJpbmcoJndoaXRlU2VzYW1lRG90LCAxKTsKLSAgICAgICAgcmV0dXJuIHRleHRF
bXBoYXNpc0ZpbGwoKSA9PSBUZXh0RW1waGFzaXNGaWxsRmlsbGVkID8gZmlsbGVkU2VzYW1lU3Ry
aW5nIDogb3BlblNlc2FtZVN0cmluZzsKKyAgICAgICAgcmV0dXJuIHRleHRFbXBoYXNpc0ZpbGwo
KSA9PSBUZXh0RW1waGFzaXNGaWxsOjpGaWxsZWQgPyBmaWxsZWRTZXNhbWVTdHJpbmcgOiBvcGVu
U2VzYW1lU3RyaW5nOwogICAgIH0KLSAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtBdXRvOgorICAg
IGNhc2UgVGV4dEVtcGhhc2lzTWFyazo6QXV0bzoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIHJldHVybiBudWxsQXRvbSgpOwogICAgIH0KQEAgLTE4MjUsNyArMTgyNSw3
IEBAIENvbG9yIFJlbmRlclN0eWxlOjpjb2xvckluY2x1ZGluZ0ZhbGxiYWMKIENvbG9yIFJlbmRl
clN0eWxlOjp2aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlJRCBjb2xvclByb3BlcnR5
KSBjb25zdAogewogICAgIENvbG9yIHVudmlzaXRlZENvbG9yID0gY29sb3JJbmNsdWRpbmdGYWxs
YmFjayhjb2xvclByb3BlcnR5LCBmYWxzZSk7Ci0gICAgaWYgKGluc2lkZUxpbmsoKSAhPSBJbnNp
ZGVWaXNpdGVkTGluaykKKyAgICBpZiAoaW5zaWRlTGluaygpICE9IEluc2lkZUxpbms6Okluc2lk
ZVZpc2l0ZWQpCiAgICAgICAgIHJldHVybiB1bnZpc2l0ZWRDb2xvcjsKIAogICAgIENvbG9yIHZp
c2l0ZWRDb2xvciA9IGNvbG9ySW5jbHVkaW5nRmFsbGJhY2soY29sb3JQcm9wZXJ0eSwgdHJ1ZSk7
CkBAIC0xOTg2LDExICsxOTg2LDExIEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldE1hcmdpbkVuZChM
ZW5ndGgmJiAKIFRleHRFbXBoYXNpc01hcmsgUmVuZGVyU3R5bGU6OnRleHRFbXBoYXNpc01hcmso
KSBjb25zdAogewogICAgIGF1dG8gbWFyayA9IHN0YXRpY19jYXN0PFRleHRFbXBoYXNpc01hcms+
KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc01hcmspOwotICAgIGlmIChtYXJrICE9
IFRleHRFbXBoYXNpc01hcmtBdXRvKQorICAgIGlmIChtYXJrICE9IFRleHRFbXBoYXNpc01hcms6
OkF1dG8pCiAgICAgICAgIHJldHVybiBtYXJrOwogICAgIGlmIChpc0hvcml6b250YWxXcml0aW5n
TW9kZSgpKQotICAgICAgICByZXR1cm4gVGV4dEVtcGhhc2lzTWFya0RvdDsKLSAgICByZXR1cm4g
VGV4dEVtcGhhc2lzTWFya1Nlc2FtZTsKKyAgICAgICAgcmV0dXJuIFRleHRFbXBoYXNpc01hcms6
OkRvdDsKKyAgICByZXR1cm4gVGV4dEVtcGhhc2lzTWFyazo6U2VzYW1lOwogfQogCiAjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKQEAgLTIwNjcsMzIgKzIwNjcsMzIgQEAgdm9pZCBSZW5kZXJTdHls
ZTo6c2V0Q29sdW1uU3R5bGVzRnJvbVBhZwogICAgIAogICAgIHN3aXRjaCAocGFnaW5hdGlvbk1v
ZGUpIHsKICAgICBjYXNlIFBhZ2luYXRpb246OkxlZnRUb1JpZ2h0UGFnaW5hdGVkOgotICAgICAg
ICBzZXRDb2x1bW5BeGlzKEhvcml6b250YWxDb2x1bW5BeGlzKTsKKyAgICAgICAgc2V0Q29sdW1u
QXhpcyhDb2x1bW5BeGlzOjpIb3Jpem9udGFsKTsKICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkpCi0gICAgICAgICAgICBzZXRDb2x1bW5Qcm9ncmVzc2lvbihpc0xlZnRUb1Jp
Z2h0RGlyZWN0aW9uKCkgPyBOb3JtYWxDb2x1bW5Qcm9ncmVzc2lvbiA6IFJldmVyc2VDb2x1bW5Q
cm9ncmVzc2lvbik7CisgICAgICAgICAgICBzZXRDb2x1bW5Qcm9ncmVzc2lvbihpc0xlZnRUb1Jp
Z2h0RGlyZWN0aW9uKCkgPyBDb2x1bW5Qcm9ncmVzc2lvbjo6Tm9ybWFsIDogQ29sdW1uUHJvZ3Jl
c3Npb246OlJldmVyc2UpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzZXRDb2x1bW5Qcm9n
cmVzc2lvbihpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gUmV2ZXJzZUNvbHVtblByb2dy
ZXNzaW9uIDogTm9ybWFsQ29sdW1uUHJvZ3Jlc3Npb24pOworICAgICAgICAgICAgc2V0Q29sdW1u
UHJvZ3Jlc3Npb24oaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSA/IENvbHVtblByb2dyZXNz
aW9uOjpSZXZlcnNlIDogQ29sdW1uUHJvZ3Jlc3Npb246Ok5vcm1hbCk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgUGFnaW5hdGlvbjo6UmlnaHRUb0xlZnRQYWdpbmF0ZWQ6Ci0gICAgICAgIHNl
dENvbHVtbkF4aXMoSG9yaXpvbnRhbENvbHVtbkF4aXMpOworICAgICAgICBzZXRDb2x1bW5BeGlz
KENvbHVtbkF4aXM6Okhvcml6b250YWwpOwogICAgICAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKSkKLSAgICAgICAgICAgIHNldENvbHVtblByb2dyZXNzaW9uKGlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24oKSA/IFJldmVyc2VDb2x1bW5Qcm9ncmVzc2lvbiA6IE5vcm1hbENvbHVtblByb2dy
ZXNzaW9uKTsKKyAgICAgICAgICAgIHNldENvbHVtblByb2dyZXNzaW9uKGlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24oKSA/IENvbHVtblByb2dyZXNzaW9uOjpSZXZlcnNlIDogQ29sdW1uUHJvZ3Jlc3Np
b246Ok5vcm1hbCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNldENvbHVtblByb2dyZXNz
aW9uKGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgPyBOb3JtYWxDb2x1bW5Qcm9ncmVzc2lv
biA6IFJldmVyc2VDb2x1bW5Qcm9ncmVzc2lvbik7CisgICAgICAgICAgICBzZXRDb2x1bW5Qcm9n
cmVzc2lvbihpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gQ29sdW1uUHJvZ3Jlc3Npb246
Ok5vcm1hbCA6IENvbHVtblByb2dyZXNzaW9uOjpSZXZlcnNlKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBQYWdpbmF0aW9uOjpUb3BUb0JvdHRvbVBhZ2luYXRlZDoKLSAgICAgICAgc2V0Q29s
dW1uQXhpcyhWZXJ0aWNhbENvbHVtbkF4aXMpOworICAgICAgICBzZXRDb2x1bW5BeGlzKENvbHVt
bkF4aXM6OlZlcnRpY2FsKTsKICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkp
Ci0gICAgICAgICAgICBzZXRDb2x1bW5Qcm9ncmVzc2lvbihpc0ZsaXBwZWRCbG9ja3NXcml0aW5n
TW9kZSgpID8gUmV2ZXJzZUNvbHVtblByb2dyZXNzaW9uIDogTm9ybWFsQ29sdW1uUHJvZ3Jlc3Np
b24pOworICAgICAgICAgICAgc2V0Q29sdW1uUHJvZ3Jlc3Npb24oaXNGbGlwcGVkQmxvY2tzV3Jp
dGluZ01vZGUoKSA/IENvbHVtblByb2dyZXNzaW9uOjpSZXZlcnNlIDogQ29sdW1uUHJvZ3Jlc3Np
b246Ok5vcm1hbCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNldENvbHVtblByb2dyZXNz
aW9uKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IE5vcm1hbENvbHVtblByb2dyZXNzaW9uIDog
UmV2ZXJzZUNvbHVtblByb2dyZXNzaW9uKTsKKyAgICAgICAgICAgIHNldENvbHVtblByb2dyZXNz
aW9uKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IENvbHVtblByb2dyZXNzaW9uOjpOb3JtYWwg
OiBDb2x1bW5Qcm9ncmVzc2lvbjo6UmV2ZXJzZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
UGFnaW5hdGlvbjo6Qm90dG9tVG9Ub3BQYWdpbmF0ZWQ6Ci0gICAgICAgIHNldENvbHVtbkF4aXMo
VmVydGljYWxDb2x1bW5BeGlzKTsKKyAgICAgICAgc2V0Q29sdW1uQXhpcyhDb2x1bW5BeGlzOjpW
ZXJ0aWNhbCk7CiAgICAgICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQotICAgICAg
ICAgICAgc2V0Q29sdW1uUHJvZ3Jlc3Npb24oaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSA/
IE5vcm1hbENvbHVtblByb2dyZXNzaW9uIDogUmV2ZXJzZUNvbHVtblByb2dyZXNzaW9uKTsKKyAg
ICAgICAgICAgIHNldENvbHVtblByb2dyZXNzaW9uKGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2Rl
KCkgPyBDb2x1bW5Qcm9ncmVzc2lvbjo6Tm9ybWFsIDogQ29sdW1uUHJvZ3Jlc3Npb246OlJldmVy
c2UpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzZXRDb2x1bW5Qcm9ncmVzc2lvbihpc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBSZXZlcnNlQ29sdW1uUHJvZ3Jlc3Npb24gOiBOb3JtYWxD
b2x1bW5Qcm9ncmVzc2lvbik7CisgICAgICAgICAgICBzZXRDb2x1bW5Qcm9ncmVzc2lvbihpc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBDb2x1bW5Qcm9ncmVzc2lvbjo6UmV2ZXJzZSA6IENvbHVt
blByb2dyZXNzaW9uOjpOb3JtYWwpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBhZ2luYXRp
b246OlVucGFnaW5hdGVkOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCShyZXZpc2lvbiAy
MzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTQ4LDcgKzE0OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVu
ZGVyU3R5bGUgY2xvbmUoY29uc3QgUmVuZGVyU3R5bGUmKTsKICAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBjbG9uZVB0cihjb25zdCBSZW5kZXJTdHlsZSYpOwogCi0gICAg
c3RhdGljIFJlbmRlclN0eWxlIGNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoY29uc3Qg
UmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBFRGlzcGxheSk7CisgICAgc3RhdGljIFJlbmRlclN0
eWxlIGNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoY29uc3QgUmVuZGVyU3R5bGUmIHBh
cmVudFN0eWxlLCBEaXNwbGF5VHlwZSk7CiAgICAgc3RhdGljIFJlbmRlclN0eWxlIGNyZWF0ZVN0
eWxlSW5oZXJpdGluZ0Zyb21Qc2V1ZG9TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcHNldWRvU3R5
bGUpOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9O
UykKQEAgLTE3NCw3ICsxNzQsNyBAQCBwdWJsaWM6CiAgICAgU3R5bGVDb250ZW50QWxpZ25tZW50
RGF0YSByZXNvbHZlZEp1c3RpZnlDb250ZW50KGNvbnN0IFN0eWxlQ29udGVudEFsaWdubWVudERh
dGEmIG5vcm1hbFZhbHVlQmVoYXZpb3VyKSBjb25zdDsKIAogICAgIFBzZXVkb0lkIHN0eWxlVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFBzZXVkb0lkPihtX25vbkluaGVyaXRlZEZs
YWdzLnN0eWxlVHlwZSk7IH0KLSAgICB2b2lkIHNldFN0eWxlVHlwZShQc2V1ZG9JZCBzdHlsZVR5
cGUpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5zdHlsZVR5cGUgPSBzdHlsZVR5cGU7IH0KKyAgICB2
b2lkIHNldFN0eWxlVHlwZShQc2V1ZG9JZCBzdHlsZVR5cGUpIHsgbV9ub25Jbmhlcml0ZWRGbGFn
cy5zdHlsZVR5cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3R5bGVUeXBlKTsgfQogCiAgICAg
UmVuZGVyU3R5bGUqIGdldENhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb0lkKSBjb25zdDsKICAgICBS
ZW5kZXJTdHlsZSogYWRkQ2FjaGVkUHNldWRvU3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPik7CkBAIC0yMjgsNyArMjI4LDcgQEAgcHVibGljOgogICAgIEZpbHRlck91dHNldHMgZmls
dGVyT3V0c2V0cygpIGNvbnN0IHsgcmV0dXJuIGhhc0ZpbHRlcigpID8gZmlsdGVyKCkub3V0c2V0
cygpIDogRmlsdGVyT3V0c2V0cygpOyB9CiAKICAgICBPcmRlciBydGxPcmRlcmluZygpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PE9yZGVyPihtX2luaGVyaXRlZEZsYWdzLnJ0bE9yZGVyaW5n
KTsgfQotICAgIHZvaWQgc2V0UlRMT3JkZXJpbmcoT3JkZXIgb3JkZXJpbmcpIHsgbV9pbmhlcml0
ZWRGbGFncy5ydGxPcmRlcmluZyA9IG9yZGVyaW5nOyB9CisgICAgdm9pZCBzZXRSVExPcmRlcmlu
ZyhPcmRlciBvcmRlcmluZykgeyBtX2luaGVyaXRlZEZsYWdzLnJ0bE9yZGVyaW5nID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG9yZGVyaW5nKTsgfQogCiAgICAgYm9vbCBpc1N0eWxlQXZhaWxhYmxl
KCkgY29uc3Q7CiAKQEAgLTI0MCw3ICsyNDAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBhdHRyaWJ1
dGUgZ2V0dGVyIG1ldGhvZHMKIAotICAgIEVEaXNwbGF5IGRpc3BsYXkoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxFRGlzcGxheT4obV9ub25Jbmhlcml0ZWRGbGFncy5lZmZlY3RpdmVEaXNw
bGF5KTsgfQorICAgIERpc3BsYXlUeXBlIGRpc3BsYXkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxEaXNwbGF5VHlwZT4obV9ub25Jbmhlcml0ZWRGbGFncy5lZmZlY3RpdmVEaXNwbGF5KTsg
fQogCiAgICAgY29uc3QgTGVuZ3RoJiBsZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERh
dGEtPm9mZnNldC5sZWZ0KCk7IH0KICAgICBjb25zdCBMZW5ndGgmIHJpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gbV9zdXJyb3VuZERhdGEtPm9mZnNldC5yaWdodCgpOyB9CkBAIC0zMzEsNyArMzMxLDcg
QEAgcHVibGljOgogICAgIE92ZXJmbG93IG92ZXJmbG93SW5saW5lRGlyZWN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG92ZXJmbG93WCgpIDogb3ZlcmZs
b3dZKCk7IH0KICAgICBPdmVyZmxvdyBvdmVyZmxvd0Jsb2NrRGlyZWN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG92ZXJmbG93WSgpIDogb3ZlcmZsb3dY
KCk7IH0KICAgICAKLSAgICBFVmlzaWJpbGl0eSB2aXNpYmlsaXR5KCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8RVZpc2liaWxpdHk+KG1faW5oZXJpdGVkRmxhZ3MudmlzaWJpbGl0eSk7IH0K
KyAgICBWaXNpYmlsaXR5IHZpc2liaWxpdHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxW
aXNpYmlsaXR5PihtX2luaGVyaXRlZEZsYWdzLnZpc2liaWxpdHkpOyB9CiAgICAgVmVydGljYWxB
bGlnbiB2ZXJ0aWNhbEFsaWduKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VmVydGljYWxB
bGlnbj4obV9ub25Jbmhlcml0ZWRGbGFncy52ZXJ0aWNhbEFsaWduKTsgfQogICAgIGNvbnN0IExl
bmd0aCYgdmVydGljYWxBbGlnbkxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94RGF0YS0+dmVy
dGljYWxBbGlnbigpOyB9CiAKQEAgLTM2Myw4ICszNjMsOCBAQCBwdWJsaWM6CiAgICAgRm9udFNl
bGVjdGlvblZhbHVlIGZvbnRJdGFsaWMoKSBjb25zdCB7IHJldHVybiBmb250RGVzY3JpcHRpb24o
KS5pdGFsaWMoKTsgfQogCiAgICAgY29uc3QgTGVuZ3RoJiB0ZXh0SW5kZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+aW5kZW50OyB9Ci0gICAgRVRleHRBbGlnbiB0ZXh0
QWxpZ24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVGV4dEFsaWduPihtX2luaGVyaXRl
ZEZsYWdzLnRleHRBbGlnbik7IH0KLSAgICBFVGV4dFRyYW5zZm9ybSB0ZXh0VHJhbnNmb3JtKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVRleHRUcmFuc2Zvcm0+KG1faW5oZXJpdGVkRmxh
Z3MudGV4dFRyYW5zZm9ybSk7IH0KKyAgICBUZXh0QWxpZ25Nb2RlIHRleHRBbGlnbigpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRBbGlnbk1vZGU+KG1faW5oZXJpdGVkRmxhZ3MudGV4
dEFsaWduKTsgfQorICAgIFRleHRUcmFuc2Zvcm0gdGV4dFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PFRleHRUcmFuc2Zvcm0+KG1faW5oZXJpdGVkRmxhZ3MudGV4dFRyYW5z
Zm9ybSk7IH0KICAgICBUZXh0RGVjb3JhdGlvbiB0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHREZWNvcmF0aW9uPihtX2luaGVyaXRlZEZsYWdz
LnRleHREZWNvcmF0aW9ucyk7IH0KICAgICBUZXh0RGVjb3JhdGlvbiB0ZXh0RGVjb3JhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHREZWNvcmF0aW9uPihtX3Zpc3VhbERhdGEt
PnRleHREZWNvcmF0aW9uKTsgfQogICAgIFRleHREZWNvcmF0aW9uU3R5bGUgdGV4dERlY29yYXRp
b25TdHlsZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHREZWNvcmF0aW9uU3R5bGU+
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHREZWNvcmF0aW9uU3R5bGUpOyB9CkBAIC0zOTQs
MTIgKzM5NCwxMiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgTGVuZ3RoJiBs
aW5lSGVpZ2h0KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGNvbXB1dGVkTGluZUhl
aWdodCgpIGNvbnN0OwogCi0gICAgRVdoaXRlU3BhY2Ugd2hpdGVTcGFjZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEVXaGl0ZVNwYWNlPihtX2luaGVyaXRlZEZsYWdzLndoaXRlU3BhY2Up
OyB9Ci0gICAgc3RhdGljIGJvb2wgYXV0b1dyYXAoRVdoaXRlU3BhY2UpOworICAgIFdoaXRlU3Bh
Y2Ugd2hpdGVTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFdoaXRlU3BhY2U+KG1f
aW5oZXJpdGVkRmxhZ3Mud2hpdGVTcGFjZSk7IH0KKyAgICBzdGF0aWMgYm9vbCBhdXRvV3JhcChX
aGl0ZVNwYWNlKTsKICAgICBib29sIGF1dG9XcmFwKCkgY29uc3QgeyByZXR1cm4gYXV0b1dyYXAo
d2hpdGVTcGFjZSgpKTsgfQotICAgIHN0YXRpYyBib29sIHByZXNlcnZlTmV3bGluZShFV2hpdGVT
cGFjZSk7CisgICAgc3RhdGljIGJvb2wgcHJlc2VydmVOZXdsaW5lKFdoaXRlU3BhY2UpOwogICAg
IGJvb2wgcHJlc2VydmVOZXdsaW5lKCkgY29uc3QgeyByZXR1cm4gcHJlc2VydmVOZXdsaW5lKHdo
aXRlU3BhY2UoKSk7IH0KLSAgICBzdGF0aWMgYm9vbCBjb2xsYXBzZVdoaXRlU3BhY2UoRVdoaXRl
U3BhY2UpOworICAgIHN0YXRpYyBib29sIGNvbGxhcHNlV2hpdGVTcGFjZShXaGl0ZVNwYWNlKTsK
ICAgICBib29sIGNvbGxhcHNlV2hpdGVTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIGNvbGxhcHNlV2hp
dGVTcGFjZSh3aGl0ZVNwYWNlKCkpOyB9CiAgICAgYm9vbCBpc0NvbGxhcHNpYmxlV2hpdGVTcGFj
ZShVQ2hhcikgY29uc3Q7CiAgICAgYm9vbCBicmVha09ubHlBZnRlcldoaXRlU3BhY2UoKSBjb25z
dDsKQEAgLTQzNiwxMiArNDM2LDEyIEBAIHB1YmxpYzoKICAgICBCb3JkZXJDb2xsYXBzZSBib3Jk
ZXJDb2xsYXBzZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJvcmRlckNvbGxhcHNlPiht
X2luaGVyaXRlZEZsYWdzLmJvcmRlckNvbGxhcHNlKTsgfQogICAgIGZsb2F0IGhvcml6b250YWxC
b3JkZXJTcGFjaW5nKCkgY29uc3Q7CiAgICAgZmxvYXQgdmVydGljYWxCb3JkZXJTcGFjaW5nKCkg
Y29uc3Q7Ci0gICAgRUVtcHR5Q2VsbCBlbXB0eUNlbGxzKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8RUVtcHR5Q2VsbD4obV9pbmhlcml0ZWRGbGFncy5lbXB0eUNlbGxzKTsgfQotICAgIEVD
YXB0aW9uU2lkZSBjYXB0aW9uU2lkZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVDYXB0
aW9uU2lkZT4obV9pbmhlcml0ZWRGbGFncy5jYXB0aW9uU2lkZSk7IH0KKyAgICBFbXB0eUNlbGwg
ZW1wdHlDZWxscygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVtcHR5Q2VsbD4obV9pbmhl
cml0ZWRGbGFncy5lbXB0eUNlbGxzKTsgfQorICAgIENhcHRpb25TaWRlIGNhcHRpb25TaWRlKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q2FwdGlvblNpZGU+KG1faW5oZXJpdGVkRmxhZ3Mu
Y2FwdGlvblNpZGUpOyB9CiAKLSAgICBFTGlzdFN0eWxlVHlwZSBsaXN0U3R5bGVUeXBlKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUxpc3RTdHlsZVR5cGU+KG1faW5oZXJpdGVkRmxhZ3Mu
bGlzdFN0eWxlVHlwZSk7IH0KKyAgICBMaXN0U3R5bGVUeXBlIGxpc3RTdHlsZVR5cGUoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxMaXN0U3R5bGVUeXBlPihtX2luaGVyaXRlZEZsYWdzLmxp
c3RTdHlsZVR5cGUpOyB9CiAgICAgU3R5bGVJbWFnZSogbGlzdFN0eWxlSW1hZ2UoKSBjb25zdDsK
LSAgICBFTGlzdFN0eWxlUG9zaXRpb24gbGlzdFN0eWxlUG9zaXRpb24oKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxFTGlzdFN0eWxlUG9zaXRpb24+KG1faW5oZXJpdGVkRmxhZ3MubGlzdFN0
eWxlUG9zaXRpb24pOyB9CisgICAgTGlzdFN0eWxlUG9zaXRpb24gbGlzdFN0eWxlUG9zaXRpb24o
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxMaXN0U3R5bGVQb3NpdGlvbj4obV9pbmhlcml0
ZWRGbGFncy5saXN0U3R5bGVQb3NpdGlvbik7IH0KIAogICAgIGNvbnN0IExlbmd0aCYgbWFyZ2lu
VG9wKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERhdGEtPm1hcmdpbi50b3AoKTsgfQogICAg
IGNvbnN0IExlbmd0aCYgbWFyZ2luQm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9zdXJyb3VuZERh
dGEtPm1hcmdpbi5ib3R0b20oKTsgfQpAQCAtNDY2LDcgKzQ2Niw3IEBAIHB1YmxpYzoKICAgICBj
b25zdCBMZW5ndGgmIHBhZGRpbmdTdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRh
LT5wYWRkaW5nLnN0YXJ0KHdyaXRpbmdNb2RlKCksIGRpcmVjdGlvbigpKTsgfQogICAgIGNvbnN0
IExlbmd0aCYgcGFkZGluZ0VuZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5wYWRk
aW5nLmVuZCh3cml0aW5nTW9kZSgpLCBkaXJlY3Rpb24oKSk7IH0KIAotICAgIEVDdXJzb3IgY3Vy
c29yKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUN1cnNvcj4obV9pbmhlcml0ZWRGbGFn
cy5jdXJzb3IpOyB9CisgICAgQ3Vyc29yVHlwZSBjdXJzb3IoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxDdXJzb3JUeXBlPihtX2luaGVyaXRlZEZsYWdzLmN1cnNvcik7IH0KIAogI2lmIEVO
QUJMRShDVVJTT1JfVklTSUJJTElUWSkKICAgICBDdXJzb3JWaXNpYmlsaXR5IGN1cnNvclZpc2li
aWxpdHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDdXJzb3JWaXNpYmlsaXR5PihtX2lu
aGVyaXRlZEZsYWdzLmN1cnNvclZpc2liaWxpdHkpOyB9CkBAIC00NzQsNyArNDc0LDcgQEAgcHVi
bGljOgogCiAgICAgQ3Vyc29yTGlzdCogY3Vyc29ycygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUlu
aGVyaXRlZERhdGEtPmN1cnNvckRhdGEuZ2V0KCk7IH0KIAotICAgIEVJbnNpZGVMaW5rIGluc2lk
ZUxpbmsoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFSW5zaWRlTGluaz4obV9pbmhlcml0
ZWRGbGFncy5pbnNpZGVMaW5rKTsgfQorICAgIEluc2lkZUxpbmsgaW5zaWRlTGluaygpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEluc2lkZUxpbms+KG1faW5oZXJpdGVkRmxhZ3MuaW5zaWRl
TGluayk7IH0KICAgICBib29sIGlzTGluaygpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVk
RmxhZ3MuaXNMaW5rOyB9CiAKICAgICBib29sIGluc2lkZURlZmF1bHRCdXR0b24oKSBjb25zdCB7
IHJldHVybiBtX2luaGVyaXRlZEZsYWdzLmluc2lkZURlZmF1bHRCdXR0b247IH0KQEAgLTU5Miw3
ICs1OTIsNyBAQCBwdWJsaWM6CiAgICAgc2hvcnQgaHlwaGVuYXRpb25MaW1pdExpbmVzKCkgY29u
c3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdExpbmVzOyB9
CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBoeXBoZW5hdGlvblN0cmluZygpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uU3RyaW5nOyB9CiAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBsb2NhbGUoKSBjb25zdCB7IHJldHVybiBmb250RGVzY3JpcHRpb24oKS5s
b2NhbGUoKTsgfQotICAgIEVCb3JkZXJGaXQgYm9yZGVyRml0KCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8RUJvcmRlckZpdD4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Ym9yZGVyRml0KTsg
fQorICAgIEJvcmRlckZpdCBib3JkZXJGaXQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxC
b3JkZXJGaXQ+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJvcmRlckZpdCk7IH0KICAgICBSZXNp
emUgcmVzaXplKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVzaXplPihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5yZXNpemUpOyB9CiAgICAgQ29sdW1uQXhpcyBjb2x1bW5BeGlzKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29sdW1uQXhpcz4obV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bXVsdGlDb2wtPmF4aXMpOyB9CiAgICAgYm9vbCBoYXNJbmxpbmVDb2x1bW5BeGlzKCkgY29u
c3Q7CkBAIC02NTEsNyArNjUxLDcgQEAgcHVibGljOgogICAgIExpbmVTbmFwIGxpbmVTbmFwKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGluZVNuYXA+KG1fcmFyZUluaGVyaXRlZERhdGEt
PmxpbmVTbmFwKTsgfQogICAgIExpbmVBbGlnbiBsaW5lQWxpZ24oKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxMaW5lQWxpZ24+KG1fcmFyZUluaGVyaXRlZERhdGEtPmxpbmVBbGlnbik7IH0K
IAotICAgIEVQb2ludGVyRXZlbnRzIHBvaW50ZXJFdmVudHMoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxFUG9pbnRlckV2ZW50cz4obV9pbmhlcml0ZWRGbGFncy5wb2ludGVyRXZlbnRzKTsg
fQorICAgIFBvaW50ZXJFdmVudHMgcG9pbnRlckV2ZW50cygpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PFBvaW50ZXJFdmVudHM+KG1faW5oZXJpdGVkRmxhZ3MucG9pbnRlckV2ZW50cyk7IH0K
ICAgICBjb25zdCBBbmltYXRpb25MaXN0KiBhbmltYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+YW5pbWF0aW9ucy5nZXQoKTsgfQogICAgIGNvbnN0IEFuaW1h
dGlvbkxpc3QqIHRyYW5zaXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+dHJhbnNpdGlvbnMuZ2V0KCk7IH0KIApAQCAtNzk2LDggKzc5Niw4IEBAIHB1YmxpYzoK
IAogLy8gYXR0cmlidXRlIHNldHRlciBtZXRob2RzCiAKLSAgICB2b2lkIHNldERpc3BsYXkoRURp
c3BsYXkgdikgeyBtX25vbkluaGVyaXRlZEZsYWdzLmVmZmVjdGl2ZURpc3BsYXkgPSB2OyB9Ci0g
ICAgdm9pZCBzZXRPcmlnaW5hbERpc3BsYXkoRURpc3BsYXkgdikgeyBtX25vbkluaGVyaXRlZEZs
YWdzLm9yaWdpbmFsRGlzcGxheSA9IHY7IH0KKyAgICB2b2lkIHNldERpc3BsYXkoRGlzcGxheVR5
cGUgdikgeyBtX25vbkluaGVyaXRlZEZsYWdzLmVmZmVjdGl2ZURpc3BsYXkgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4odik7IH0KKyAgICB2b2lkIHNldE9yaWdpbmFsRGlzcGxheShEaXNwbGF5VHlw
ZSB2KSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Mub3JpZ2luYWxEaXNwbGF5ID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHYpOyB9CiAgICAgdm9pZCBzZXRQb3NpdGlvbihQb3NpdGlvblR5cGUgdikgeyBt
X25vbkluaGVyaXRlZEZsYWdzLnBvc2l0aW9uID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYpOyB9
CiAgICAgdm9pZCBzZXRGbG9hdGluZyhGbG9hdCB2KSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZmxv
YXRpbmcgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odik7IH0KIApAQCAtODgyLDcgKzg4Miw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgc2V0T3ZlcmZsb3dYKE92ZXJmbG93IHYpIHsgbV9ub25Jbmhl
cml0ZWRGbGFncy5vdmVyZmxvd1ggPSAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYpOyB9CiAgICAg
dm9pZCBzZXRPdmVyZmxvd1koT3ZlcmZsb3cgdikgeyBtX25vbkluaGVyaXRlZEZsYWdzLm92ZXJm
bG93WSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KTsgfQotICAgIHZvaWQgc2V0VmlzaWJpbGl0
eShFVmlzaWJpbGl0eSB2KSB7IG1faW5oZXJpdGVkRmxhZ3MudmlzaWJpbGl0eSA9IHY7IH0KKyAg
ICB2b2lkIHNldFZpc2liaWxpdHkoVmlzaWJpbGl0eSB2KSB7IG1faW5oZXJpdGVkRmxhZ3Mudmlz
aWJpbGl0eSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KTsgfQogICAgIHZvaWQgc2V0VmVydGlj
YWxBbGlnbihWZXJ0aWNhbEFsaWduIHYpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy52ZXJ0aWNhbEFs
aWduID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYpOyB9CiAgICAgdm9pZCBzZXRWZXJ0aWNhbEFs
aWduTGVuZ3RoKExlbmd0aCYmIGxlbmd0aCkgeyBzZXRWZXJ0aWNhbEFsaWduKFZlcnRpY2FsQWxp
Z246Okxlbmd0aCk7IFNFVF9WQVIobV9ib3hEYXRhLCBtX3ZlcnRpY2FsQWxpZ24sIFdURk1vdmUo
bGVuZ3RoKSk7IH0KIApAQCAtOTEzLDIxICs5MTMsMjEgQEAgcHVibGljOgogCiAgICAgdm9pZCBz
ZXRDb2xvcihjb25zdCBDb2xvciYpOwogICAgIHZvaWQgc2V0VGV4dEluZGVudChMZW5ndGgmJiBs
ZW5ndGgpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBpbmRlbnQsIFdURk1vdmUobGVu
Z3RoKSk7IH0KLSAgICB2b2lkIHNldFRleHRBbGlnbihFVGV4dEFsaWduIHYpIHsgbV9pbmhlcml0
ZWRGbGFncy50ZXh0QWxpZ24gPSB2OyB9Ci0gICAgdm9pZCBzZXRUZXh0VHJhbnNmb3JtKEVUZXh0
VHJhbnNmb3JtIHYpIHsgbV9pbmhlcml0ZWRGbGFncy50ZXh0VHJhbnNmb3JtID0gdjsgfQorICAg
IHZvaWQgc2V0VGV4dEFsaWduKFRleHRBbGlnbk1vZGUgdikgeyBtX2luaGVyaXRlZEZsYWdzLnRl
eHRBbGlnbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KTsgfQorICAgIHZvaWQgc2V0VGV4dFRy
YW5zZm9ybShUZXh0VHJhbnNmb3JtIHYpIHsgbV9pbmhlcml0ZWRGbGFncy50ZXh0VHJhbnNmb3Jt
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYpOyB9CiAgICAgdm9pZCBhZGRUb1RleHREZWNvcmF0
aW9uc0luRWZmZWN0KFRleHREZWNvcmF0aW9uIHYpIHsgbV9pbmhlcml0ZWRGbGFncy50ZXh0RGVj
b3JhdGlvbnMgfD0gdjsgfQogICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb25zSW5FZmZlY3QoVGV4
dERlY29yYXRpb24gdikgeyBtX2luaGVyaXRlZEZsYWdzLnRleHREZWNvcmF0aW9ucyA9IHY7IH0K
ICAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uKFRleHREZWNvcmF0aW9uIHYpIHsgU0VUX1ZBUiht
X3Zpc3VhbERhdGEsIHRleHREZWNvcmF0aW9uLCB2KTsgfQotICAgIHZvaWQgc2V0VGV4dERlY29y
YXRpb25TdHlsZShUZXh0RGVjb3JhdGlvblN0eWxlIHYpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLCB0ZXh0RGVjb3JhdGlvblN0eWxlLCB2KTsgfQotICAgIHZvaWQgc2V0VGV4dERl
Y29yYXRpb25Ta2lwKFRleHREZWNvcmF0aW9uU2tpcCBza2lwKSB7IFNFVF9WQVIobV9yYXJlSW5o
ZXJpdGVkRGF0YSwgdGV4dERlY29yYXRpb25Ta2lwLCBza2lwKTsgfQotICAgIHZvaWQgc2V0VGV4
dFVuZGVybGluZVBvc2l0aW9uKFRleHRVbmRlcmxpbmVQb3NpdGlvbiB2KSB7IFNFVF9WQVIobV9y
YXJlSW5oZXJpdGVkRGF0YSwgdGV4dFVuZGVybGluZVBvc2l0aW9uLCB2KTsgfQotICAgIHZvaWQg
c2V0RGlyZWN0aW9uKFRleHREaXJlY3Rpb24gdikgeyBtX2luaGVyaXRlZEZsYWdzLmRpcmVjdGlv
biA9IHY7IH0KKyAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uU3R5bGUoVGV4dERlY29yYXRpb25T
dHlsZSB2KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgdGV4dERlY29yYXRpb25T
dHlsZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYpKTsgfQorICAgIHZvaWQgc2V0VGV4dERlY29y
YXRpb25Ta2lwKFRleHREZWNvcmF0aW9uU2tpcCBza2lwKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJp
dGVkRGF0YSwgdGV4dERlY29yYXRpb25Ta2lwLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2tpcCkp
OyB9CisgICAgdm9pZCBzZXRUZXh0VW5kZXJsaW5lUG9zaXRpb24oVGV4dFVuZGVybGluZVBvc2l0
aW9uIHYpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0VW5kZXJsaW5lUG9zaXRp
b24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KSk7IH0KKyAgICB2b2lkIHNldERpcmVjdGlvbihU
ZXh0RGlyZWN0aW9uIHYpIHsgbV9pbmhlcml0ZWRGbGFncy5kaXJlY3Rpb24gPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4odik7IH0KICAgICB2b2lkIHNldEhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb24o
Ym9vbCB2KSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3MuaGFzRXhwbGljaXRseVNldERpcmVjdGlvbiA9
IHY7IH0KICAgICB2b2lkIHNldExpbmVIZWlnaHQoTGVuZ3RoJiYpOwogICAgIGJvb2wgc2V0Wm9v
bShmbG9hdCk7CiAgICAgdm9pZCBzZXRab29tV2l0aG91dFJldHVyblZhbHVlKGZsb2F0IGYpIHsg
c2V0Wm9vbShmKTsgfQogICAgIGJvb2wgc2V0RWZmZWN0aXZlWm9vbShmbG9hdCk7Ci0gICAgdm9p
ZCBzZXRUZXh0Wm9vbShUZXh0Wm9vbSB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwg
dGV4dFpvb20sIHYpOyB9CisgICAgdm9pZCBzZXRUZXh0Wm9vbShUZXh0Wm9vbSB2KSB7IFNFVF9W
QVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dFpvb20sIHN0YXRpY19jYXN0PHVuc2lnbmVkPih2
KSk7IH0KIAogI2lmIEVOQUJMRShDU1MzX1RFWFQpCiAgICAgdm9pZCBzZXRUZXh0SW5kZW50TGlu
ZShUZXh0SW5kZW50TGluZSB2KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dElu
ZGVudExpbmUsIHYpOyB9CkBAIC05NTIsNyArOTUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
SW1hZ2VSZXNvbHV0aW9uKGZsb2F0IGYpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBp
bWFnZVJlc29sdXRpb24sIGYpOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0V2hpdGVTcGFjZShF
V2hpdGVTcGFjZSB2KSB7IG1faW5oZXJpdGVkRmxhZ3Mud2hpdGVTcGFjZSA9IHY7IH0KKyAgICB2
b2lkIHNldFdoaXRlU3BhY2UoV2hpdGVTcGFjZSB2KSB7IG1faW5oZXJpdGVkRmxhZ3Mud2hpdGVT
cGFjZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KTsgfQogCiAgICAgdm9pZCBzZXRXb3JkU3Bh
Y2luZyhMZW5ndGgmJik7CiAgICAgdm9pZCBzZXRMZXR0ZXJTcGFjaW5nKGZsb2F0KTsKQEAgLTk3
OCwxNiArOTc4LDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEJvcmRlckNvbGxhcHNlKEJvcmRl
ckNvbGxhcHNlIGNvbGxhcHNlKSB7IG1faW5oZXJpdGVkRmxhZ3MuYm9yZGVyQ29sbGFwc2UgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oY29sbGFwc2UpOyB9CiAgICAgdm9pZCBzZXRIb3Jpem9udGFs
Qm9yZGVyU3BhY2luZyhmbG9hdCk7CiAgICAgdm9pZCBzZXRWZXJ0aWNhbEJvcmRlclNwYWNpbmco
ZmxvYXQpOwotICAgIHZvaWQgc2V0RW1wdHlDZWxscyhFRW1wdHlDZWxsIHYpIHsgbV9pbmhlcml0
ZWRGbGFncy5lbXB0eUNlbGxzID0gdjsgfQotICAgIHZvaWQgc2V0Q2FwdGlvblNpZGUoRUNhcHRp
b25TaWRlIHYpIHsgbV9pbmhlcml0ZWRGbGFncy5jYXB0aW9uU2lkZSA9IHY7IH0KKyAgICB2b2lk
IHNldEVtcHR5Q2VsbHMoRW1wdHlDZWxsIHYpIHsgbV9pbmhlcml0ZWRGbGFncy5lbXB0eUNlbGxz
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYpOyB9CisgICAgdm9pZCBzZXRDYXB0aW9uU2lkZShD
YXB0aW9uU2lkZSB2KSB7IG1faW5oZXJpdGVkRmxhZ3MuY2FwdGlvblNpZGUgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4odik7IH0KIAogICAgIHZvaWQgc2V0QXNwZWN0UmF0aW9UeXBlKEFzcGVjdFJh
dGlvVHlwZSBhc3BlY3RSYXRpb1R5cGUpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LCBhc3BlY3RSYXRpb1R5cGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihhc3BlY3RSYXRpb1R5cGUp
KTsgfQogICAgIHZvaWQgc2V0QXNwZWN0UmF0aW9EZW5vbWluYXRvcihmbG9hdCB2KSB7IFNFVF9W
QVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYXNwZWN0UmF0aW9EZW5vbWluYXRvciwgdik7IH0K
ICAgICB2b2lkIHNldEFzcGVjdFJhdGlvTnVtZXJhdG9yKGZsb2F0IHYpIHsgU0VUX1ZBUihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLCBhc3BlY3RSYXRpb051bWVyYXRvciwgdik7IH0KIAotICAgIHZv
aWQgc2V0TGlzdFN0eWxlVHlwZShFTGlzdFN0eWxlVHlwZSB2KSB7IG1faW5oZXJpdGVkRmxhZ3Mu
bGlzdFN0eWxlVHlwZSA9IHY7IH0KKyAgICB2b2lkIHNldExpc3RTdHlsZVR5cGUoTGlzdFN0eWxl
VHlwZSB2KSB7IG1faW5oZXJpdGVkRmxhZ3MubGlzdFN0eWxlVHlwZSA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPih2KTsgfQogICAgIHZvaWQgc2V0TGlzdFN0eWxlSW1hZ2UoUmVmUHRyPFN0eWxlSW1h
Z2U+JiYpOwotICAgIHZvaWQgc2V0TGlzdFN0eWxlUG9zaXRpb24oRUxpc3RTdHlsZVBvc2l0aW9u
IHYpIHsgbV9pbmhlcml0ZWRGbGFncy5saXN0U3R5bGVQb3NpdGlvbiA9IHY7IH0KKyAgICB2b2lk
IHNldExpc3RTdHlsZVBvc2l0aW9uKExpc3RTdHlsZVBvc2l0aW9uIHYpIHsgbV9pbmhlcml0ZWRG
bGFncy5saXN0U3R5bGVQb3NpdGlvbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KTsgfQogCiAg
ICAgdm9pZCByZXNldE1hcmdpbigpIHsgU0VUX1ZBUihtX3N1cnJvdW5kRGF0YSwgbWFyZ2luLCBM
ZW5ndGhCb3goRml4ZWQpKTsgfQogICAgIHZvaWQgc2V0TWFyZ2luVG9wKExlbmd0aCYmIGxlbmd0
aCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBtYXJnaW4udG9wKCksIFdURk1vdmUobGVuZ3Ro
KSk7IH0KQEAgLTEwMDQsMTYgKzEwMDQsMTYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGFkZGlu
Z0xlZnQoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIHBhZGRpbmcu
bGVmdCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CiAgICAgdm9pZCBzZXRQYWRkaW5nUmlnaHQoTGVu
Z3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIHBhZGRpbmcucmlnaHQoKSwg
V1RGTW92ZShsZW5ndGgpKTsgfQogCi0gICAgdm9pZCBzZXRDdXJzb3IoRUN1cnNvciBjKSB7IG1f
aW5oZXJpdGVkRmxhZ3MuY3Vyc29yID0gYzsgfQorICAgIHZvaWQgc2V0Q3Vyc29yKEN1cnNvclR5
cGUgYykgeyBtX2luaGVyaXRlZEZsYWdzLmN1cnNvciA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihj
KTsgfQogICAgIHZvaWQgYWRkQ3Vyc29yKFJlZlB0cjxTdHlsZUltYWdlPiYmLCBjb25zdCBJbnRQ
b2ludCYgaG90U3BvdCA9IEludFBvaW50KCkpOwogICAgIHZvaWQgc2V0Q3Vyc29yTGlzdChSZWZQ
dHI8Q3Vyc29yTGlzdD4mJik7CiAgICAgdm9pZCBjbGVhckN1cnNvckxpc3QoKTsKIAogI2lmIEVO
QUJMRShDVVJTT1JfVklTSUJJTElUWSkKLSAgICB2b2lkIHNldEN1cnNvclZpc2liaWxpdHkoQ3Vy
c29yVmlzaWJpbGl0eSBjKSB7IG1faW5oZXJpdGVkRmxhZ3MuY3Vyc29yVmlzaWJpbGl0eSA9IGM7
IH0KKyAgICB2b2lkIHNldEN1cnNvclZpc2liaWxpdHkoQ3Vyc29yVmlzaWJpbGl0eSBjKSB7IG1f
aW5oZXJpdGVkRmxhZ3MuY3Vyc29yVmlzaWJpbGl0eSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihj
KTsgfQogI2VuZGlmCiAKLSAgICB2b2lkIHNldEluc2lkZUxpbmsoRUluc2lkZUxpbmsgaW5zaWRl
TGluaykgeyBtX2luaGVyaXRlZEZsYWdzLmluc2lkZUxpbmsgPSBpbnNpZGVMaW5rOyB9CisgICAg
dm9pZCBzZXRJbnNpZGVMaW5rKEluc2lkZUxpbmsgaW5zaWRlTGluaykgeyBtX2luaGVyaXRlZEZs
YWdzLmluc2lkZUxpbmsgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5zaWRlTGluayk7IH0KICAg
ICB2b2lkIHNldElzTGluayhib29sIHYpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5pc0xpbmsgPSB2
OyB9CiAKICAgICB2b2lkIHNldEluc2lkZURlZmF1bHRCdXR0b24oYm9vbCBpbnNpZGVEZWZhdWx0
QnV0dG9uKSB7IG1faW5oZXJpdGVkRmxhZ3MuaW5zaWRlRGVmYXVsdEJ1dHRvbiA9IGluc2lkZURl
ZmF1bHRCdXR0b247IH0KQEAgLTExMTYsMTUgKzExMTYsMTUgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0T3ZlcmZsb3dXcmFwKE92ZXJmbG93V3JhcCBiKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVk
RGF0YSwgb3ZlcmZsb3dXcmFwLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYikpOyB9CiAgICAgdm9p
ZCBzZXROQlNQTW9kZShOQlNQTW9kZSBiKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwg
bmJzcE1vZGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihiKSk7IH0KICAgICB2b2lkIHNldExpbmVC
cmVhayhMaW5lQnJlYWsgYikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGxpbmVCcmVh
aywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGIpKTsgfQotICAgIHZvaWQgc2V0SHlwaGVucyhIeXBo
ZW5zIGgpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBoeXBoZW5zLCBoKTsgfQorICAg
IHZvaWQgc2V0SHlwaGVucyhIeXBoZW5zIGgpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRh
LCBoeXBoZW5zLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaCkpOyB9CiAgICAgdm9pZCBzZXRIeXBo
ZW5hdGlvbkxpbWl0QmVmb3JlKHNob3J0IGxpbWl0KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVk
RGF0YSwgaHlwaGVuYXRpb25MaW1pdEJlZm9yZSwgbGltaXQpOyB9CiAgICAgdm9pZCBzZXRIeXBo
ZW5hdGlvbkxpbWl0QWZ0ZXIoc2hvcnQgbGltaXQpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWRE
YXRhLCBoeXBoZW5hdGlvbkxpbWl0QWZ0ZXIsIGxpbWl0KTsgfQogICAgIHZvaWQgc2V0SHlwaGVu
YXRpb25MaW1pdExpbmVzKHNob3J0IGxpbWl0KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0
YSwgaHlwaGVuYXRpb25MaW1pdExpbmVzLCBsaW1pdCk7IH0KICAgICB2b2lkIHNldEh5cGhlbmF0
aW9uU3RyaW5nKGNvbnN0IEF0b21pY1N0cmluZyYgaCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRl
ZERhdGEsIGh5cGhlbmF0aW9uU3RyaW5nLCBoKTsgfQotICAgIHZvaWQgc2V0Qm9yZGVyRml0KEVC
b3JkZXJGaXQgYikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGJvcmRlckZpdCwg
Yik7IH0KKyAgICB2b2lkIHNldEJvcmRlckZpdChCb3JkZXJGaXQgYikgeyBTRVRfVkFSKG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEsIGJvcmRlckZpdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGIpKTsg
fQogICAgIHZvaWQgc2V0UmVzaXplKFJlc2l6ZSByKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJp
dGVkRGF0YSwgcmVzaXplLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocikpOyB9Ci0gICAgdm9pZCBz
ZXRDb2x1bW5BeGlzKENvbHVtbkF4aXMgYXhpcykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBtdWx0aUNvbCwgYXhpcywgYXhpcyk7IH0KLSAgICB2b2lkIHNldENvbHVt
blByb2dyZXNzaW9uKENvbHVtblByb2dyZXNzaW9uIHByb2dyZXNzaW9uKSB7IFNFVF9ORVNURURf
VkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11bHRpQ29sLCBwcm9ncmVzc2lvbiwgcHJvZ3Jl
c3Npb24pOyB9CisgICAgdm9pZCBzZXRDb2x1bW5BeGlzKENvbHVtbkF4aXMgYXhpcykgeyBTRVRf
TkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwgYXhpcywgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGF4aXMpKTsgfQorICAgIHZvaWQgc2V0Q29sdW1uUHJvZ3Jlc3Npb24o
Q29sdW1uUHJvZ3Jlc3Npb24gcHJvZ3Jlc3Npb24pIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9u
SW5oZXJpdGVkRGF0YSwgbXVsdGlDb2wsIHByb2dyZXNzaW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ocHJvZ3Jlc3Npb24pKTsgfQogICAgIHZvaWQgc2V0Q29sdW1uV2lkdGgoZmxvYXQgZikgeyBT
RVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwgYXV0b1dpZHRo
LCBmYWxzZSk7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11bHRpQ29s
LCB3aWR0aCwgZik7IH0KICAgICB2b2lkIHNldEhhc0F1dG9Db2x1bW5XaWR0aCgpIHsgU0VUX05F
U1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbXVsdGlDb2wsIGF1dG9XaWR0aCwgdHJ1
ZSk7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11bHRpQ29sLCB3aWR0
aCwgMCk7IH0KICAgICB2b2lkIHNldENvbHVtbkNvdW50KHVuc2lnbmVkIHNob3J0IGMpIHsgU0VU
X05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbXVsdGlDb2wsIGF1dG9Db3VudCwg
ZmFsc2UpOyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwg
Y291bnQsIGMpOyB9CkBAIC0xMTQ5LDggKzExNDksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRU
ZXh0Q29tYmluZShUZXh0Q29tYmluZSB2KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0
YSwgdGV4dENvbWJpbmUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KSk7IH0KICAgICB2b2lkIHNl
dFRleHREZWNvcmF0aW9uQ29sb3IoY29uc3QgQ29sb3ImIGMpIHsgU0VUX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCB0ZXh0RGVjb3JhdGlvbkNvbG9yLCBjKTsgfQogICAgIHZvaWQgc2V0VGV4
dEVtcGhhc2lzQ29sb3IoY29uc3QgQ29sb3ImIGMpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWRE
YXRhLCB0ZXh0RW1waGFzaXNDb2xvciwgYyk7IH0KLSAgICB2b2lkIHNldFRleHRFbXBoYXNpc0Zp
bGwoVGV4dEVtcGhhc2lzRmlsbCBmaWxsKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwg
dGV4dEVtcGhhc2lzRmlsbCwgZmlsbCk7IH0KLSAgICB2b2lkIHNldFRleHRFbXBoYXNpc01hcmso
VGV4dEVtcGhhc2lzTWFyayBtYXJrKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4
dEVtcGhhc2lzTWFyaywgbWFyayk7IH0KKyAgICB2b2lkIHNldFRleHRFbXBoYXNpc0ZpbGwoVGV4
dEVtcGhhc2lzRmlsbCBmaWxsKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEVt
cGhhc2lzRmlsbCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGZpbGwpKTsgfQorICAgIHZvaWQgc2V0
VGV4dEVtcGhhc2lzTWFyayhUZXh0RW1waGFzaXNNYXJrIG1hcmspIHsgU0VUX1ZBUihtX3JhcmVJ
bmhlcml0ZWREYXRhLCB0ZXh0RW1waGFzaXNNYXJrLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obWFy
aykpOyB9CiAgICAgdm9pZCBzZXRUZXh0RW1waGFzaXNDdXN0b21NYXJrKGNvbnN0IEF0b21pY1N0
cmluZyYgbWFyaykgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBoYXNpc0N1
c3RvbU1hcmssIG1hcmspOyB9CiAgICAgdm9pZCBzZXRUZXh0RW1waGFzaXNQb3NpdGlvbihUZXh0
RW1waGFzaXNQb3NpdGlvbiBwb3NpdGlvbikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEs
IHRleHRFbXBoYXNpc1Bvc2l0aW9uLCBwb3NpdGlvbik7IH0KICAgICBib29sIHNldFRleHRPcmll
bnRhdGlvbihUZXh0T3JpZW50YXRpb24pOwpAQCAtMTE1OCw3ICsxMTU4LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0T2JqZWN0Rml0KE9iamVjdEZpdCBmaXQpIHsgU0VUX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBvYmplY3RGaXQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihmaXQpKTsgfQog
ICAgIHZvaWQgc2V0T2JqZWN0UG9zaXRpb24oTGVuZ3RoUG9pbnQmJiBwb3NpdGlvbikgeyBTRVRf
VkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG9iamVjdFBvc2l0aW9uLCBXVEZNb3ZlKHBvc2l0
aW9uKSk7IH0KIAotICAgIHZvaWQgc2V0UnVieVBvc2l0aW9uKFJ1YnlQb3NpdGlvbiBwb3NpdGlv
bikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHJ1YnlQb3NpdGlvbiwgcG9zaXRpb24p
OyB9CisgICAgdm9pZCBzZXRSdWJ5UG9zaXRpb24oUnVieVBvc2l0aW9uIHBvc2l0aW9uKSB7IFNF
VF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgcnVieVBvc2l0aW9uLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ocG9zaXRpb24pKTsgfQogCiAgICAgdm9pZCBzZXRGaWx0ZXIoY29uc3QgRmlsdGVyT3Bl
cmF0aW9ucyYgb3BzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGZp
bHRlciwgb3BlcmF0aW9ucywgb3BzKTsgfQogICAgIHZvaWQgc2V0Q29sb3JGaWx0ZXIoY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyYgb3BzKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZUluaGVyaXRlZERh
dGEsIGNvbG9yRmlsdGVyLCBvcGVyYXRpb25zLCBvcHMpOyB9CkBAIC0xMTY5LDE5ICsxMTY5LDE5
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0VGFiU2l6ZSh1bnNpZ25lZCBzaXplKSB7IFNFVF9W
QVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGFiU2l6ZSwgc2l6ZSk7IH0KIAotICAgIHZvaWQgc2V0
QnJlYWtCZWZvcmUoQnJlYWtCZXR3ZWVuIGJyZWFrQmVoYXZpb3IpIHsgU0VUX1ZBUihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLCBicmVha0JlZm9yZSwgYnJlYWtCZWhhdmlvcik7IH0KLSAgICB2b2lk
IHNldEJyZWFrQWZ0ZXIoQnJlYWtCZXR3ZWVuIGJyZWFrQmVoYXZpb3IpIHsgU0VUX1ZBUihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLCBicmVha0FmdGVyLCBicmVha0JlaGF2aW9yKTsgfQotICAgIHZv
aWQgc2V0QnJlYWtJbnNpZGUoQnJlYWtJbnNpZGUgYnJlYWtCZWhhdmlvcikgeyBTRVRfVkFSKG1f
cmFyZU5vbkluaGVyaXRlZERhdGEsIGJyZWFrSW5zaWRlLCBicmVha0JlaGF2aW9yKTsgfQorICAg
IHZvaWQgc2V0QnJlYWtCZWZvcmUoQnJlYWtCZXR3ZWVuIGJyZWFrQmVoYXZpb3IpIHsgU0VUX1ZB
UihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBicmVha0JlZm9yZSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGJyZWFrQmVoYXZpb3IpKTsgfQorICAgIHZvaWQgc2V0QnJlYWtBZnRlcihCcmVha0JldHdl
ZW4gYnJlYWtCZWhhdmlvcikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGJyZWFr
QWZ0ZXIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihicmVha0JlaGF2aW9yKSk7IH0KKyAgICB2b2lk
IHNldEJyZWFrSW5zaWRlKEJyZWFrSW5zaWRlIGJyZWFrQmVoYXZpb3IpIHsgU0VUX1ZBUihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLCBicmVha0luc2lkZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJy
ZWFrQmVoYXZpb3IpKTsgfQogICAgIAotICAgIHZvaWQgc2V0SGFuZ2luZ1B1bmN0dWF0aW9uKEhh
bmdpbmdQdW5jdHVhdGlvbiBwdW5jdHVhdGlvbikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERh
dGEsIGhhbmdpbmdQdW5jdHVhdGlvbiwgcHVuY3R1YXRpb24pOyB9CisgICAgdm9pZCBzZXRIYW5n
aW5nUHVuY3R1YXRpb24oSGFuZ2luZ1B1bmN0dWF0aW9uIHB1bmN0dWF0aW9uKSB7IFNFVF9WQVIo
bV9yYXJlSW5oZXJpdGVkRGF0YSwgaGFuZ2luZ1B1bmN0dWF0aW9uLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ocHVuY3R1YXRpb24pKTsgfQogCiAgICAgLy8gRW5kIENTUzMgU2V0dGVycwogCiAgICAg
dm9pZCBzZXRMaW5lR3JpZChjb25zdCBBdG9taWNTdHJpbmcmIGxpbmVHcmlkKSB7IFNFVF9WQVIo
bV9yYXJlSW5oZXJpdGVkRGF0YSwgbGluZUdyaWQsIGxpbmVHcmlkKTsgfQotICAgIHZvaWQgc2V0
TGluZVNuYXAoTGluZVNuYXAgbGluZVNuYXApIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRh
LCBsaW5lU25hcCwgbGluZVNuYXApOyB9Ci0gICAgdm9pZCBzZXRMaW5lQWxpZ24oTGluZUFsaWdu
IGxpbmVBbGlnbikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGxpbmVBbGlnbiwgbGlu
ZUFsaWduKTsgfQorICAgIHZvaWQgc2V0TGluZVNuYXAoTGluZVNuYXAgbGluZVNuYXApIHsgU0VU
X1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBsaW5lU25hcCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGxpbmVTbmFwKSk7IH0KKyAgICB2b2lkIHNldExpbmVBbGlnbihMaW5lQWxpZ24gbGluZUFsaWdu
KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgbGluZUFsaWduLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obGluZUFsaWduKSk7IH0KIAotICAgIHZvaWQgc2V0UG9pbnRlckV2ZW50cyhFUG9p
bnRlckV2ZW50cyBwKSB7IG1faW5oZXJpdGVkRmxhZ3MucG9pbnRlckV2ZW50cyA9IHA7IH0KKyAg
ICB2b2lkIHNldFBvaW50ZXJFdmVudHMoUG9pbnRlckV2ZW50cyBwKSB7IG1faW5oZXJpdGVkRmxh
Z3MucG9pbnRlckV2ZW50cyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwKTsgfQogCiAgICAgdm9p
ZCBjbGVhckFuaW1hdGlvbnMoKTsKICAgICB2b2lkIGNsZWFyVHJhbnNpdGlvbnMoKTsKQEAgLTE0
MjcsMTMgKzE0MjcsMTMgQEAgcHVibGljOgogICAgIHN0YXRpYyBPdmVyZmxvdyBpbml0aWFsT3Zl
cmZsb3dYKCkgeyByZXR1cm4gT3ZlcmZsb3c6OlZpc2libGU7IH0KICAgICBzdGF0aWMgT3ZlcmZs
b3cgaW5pdGlhbE92ZXJmbG93WSgpIHsgcmV0dXJuIE92ZXJmbG93OjpWaXNpYmxlOyB9CiAgICAg
c3RhdGljIENsZWFyIGluaXRpYWxDbGVhcigpIHsgcmV0dXJuIENsZWFyOjpOb25lOyB9Ci0gICAg
c3RhdGljIEVEaXNwbGF5IGluaXRpYWxEaXNwbGF5KCkgeyByZXR1cm4gSU5MSU5FOyB9CisgICAg
c3RhdGljIERpc3BsYXlUeXBlIGluaXRpYWxEaXNwbGF5KCkgeyByZXR1cm4gRGlzcGxheVR5cGU6
OklubGluZTsgfQogICAgIHN0YXRpYyBFVW5pY29kZUJpZGkgaW5pdGlhbFVuaWNvZGVCaWRpKCkg
eyByZXR1cm4gVUJOb3JtYWw7IH0KICAgICBzdGF0aWMgUG9zaXRpb25UeXBlIGluaXRpYWxQb3Np
dGlvbigpIHsgcmV0dXJuIFBvc2l0aW9uVHlwZTo6U3RhdGljOyB9CiAgICAgc3RhdGljIFZlcnRp
Y2FsQWxpZ24gaW5pdGlhbFZlcnRpY2FsQWxpZ24oKSB7IHJldHVybiBWZXJ0aWNhbEFsaWduOjpC
YXNlbGluZTsgfQogICAgIHN0YXRpYyBGbG9hdCBpbml0aWFsRmxvYXRpbmcoKSB7IHJldHVybiBG
bG9hdDo6Tm87IH0KLSAgICBzdGF0aWMgQnJlYWtCZXR3ZWVuIGluaXRpYWxCcmVha0JldHdlZW4o
KSB7IHJldHVybiBBdXRvQnJlYWtCZXR3ZWVuOyB9Ci0gICAgc3RhdGljIEJyZWFrSW5zaWRlIGlu
aXRpYWxCcmVha0luc2lkZSgpIHsgcmV0dXJuIEF1dG9CcmVha0luc2lkZTsgfQorICAgIHN0YXRp
YyBCcmVha0JldHdlZW4gaW5pdGlhbEJyZWFrQmV0d2VlbigpIHsgcmV0dXJuIEJyZWFrQmV0d2Vl
bjo6QXV0bzsgfQorICAgIHN0YXRpYyBCcmVha0luc2lkZSBpbml0aWFsQnJlYWtJbnNpZGUoKSB7
IHJldHVybiBCcmVha0luc2lkZTo6QXV0bzsgfQogICAgIHN0YXRpYyBIYW5naW5nUHVuY3R1YXRp
b24gaW5pdGlhbEhhbmdpbmdQdW5jdHVhdGlvbigpIHsgcmV0dXJuIE5vSGFuZ2luZ1B1bmN0dWF0
aW9uOyB9CiAgICAgc3RhdGljIFRhYmxlTGF5b3V0VHlwZSBpbml0aWFsVGFibGVMYXlvdXQoKSB7
IHJldHVybiBUYWJsZUxheW91dFR5cGU6OkF1dG87IH0KICAgICBzdGF0aWMgQm9yZGVyQ29sbGFw
c2UgaW5pdGlhbEJvcmRlckNvbGxhcHNlKCkgeyByZXR1cm4gQm9yZGVyQ29sbGFwc2U6OlNlcGFy
YXRlOyB9CkBAIC0xNDQxLDI0ICsxNDQxLDI0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgT3V0bGlu
ZUlzQXV0byBpbml0aWFsT3V0bGluZVN0eWxlSXNBdXRvKCkgeyByZXR1cm4gT3V0bGluZUlzQXV0
bzo6T2ZmOyB9CiAgICAgc3RhdGljIE5pbmVQaWVjZUltYWdlIGluaXRpYWxOaW5lUGllY2VJbWFn
ZSgpIHsgcmV0dXJuIE5pbmVQaWVjZUltYWdlKCk7IH0KICAgICBzdGF0aWMgTGVuZ3RoU2l6ZSBp
bml0aWFsQm9yZGVyUmFkaXVzKCkgeyByZXR1cm4geyB7IDAsIEZpeGVkIH0sIHsgMCwgRml4ZWQg
fSB9OyB9Ci0gICAgc3RhdGljIEVDYXB0aW9uU2lkZSBpbml0aWFsQ2FwdGlvblNpZGUoKSB7IHJl
dHVybiBDQVBUT1A7IH0KLSAgICBzdGF0aWMgQ29sdW1uQXhpcyBpbml0aWFsQ29sdW1uQXhpcygp
IHsgcmV0dXJuIEF1dG9Db2x1bW5BeGlzOyB9Ci0gICAgc3RhdGljIENvbHVtblByb2dyZXNzaW9u
IGluaXRpYWxDb2x1bW5Qcm9ncmVzc2lvbigpIHsgcmV0dXJuIE5vcm1hbENvbHVtblByb2dyZXNz
aW9uOyB9CisgICAgc3RhdGljIENhcHRpb25TaWRlIGluaXRpYWxDYXB0aW9uU2lkZSgpIHsgcmV0
dXJuIENhcHRpb25TaWRlOjpUb3A7IH0KKyAgICBzdGF0aWMgQ29sdW1uQXhpcyBpbml0aWFsQ29s
dW1uQXhpcygpIHsgcmV0dXJuIENvbHVtbkF4aXM6OkF1dG87IH0KKyAgICBzdGF0aWMgQ29sdW1u
UHJvZ3Jlc3Npb24gaW5pdGlhbENvbHVtblByb2dyZXNzaW9uKCkgeyByZXR1cm4gQ29sdW1uUHJv
Z3Jlc3Npb246Ok5vcm1hbDsgfQogICAgIHN0YXRpYyBUZXh0RGlyZWN0aW9uIGluaXRpYWxEaXJl
Y3Rpb24oKSB7IHJldHVybiBMVFI7IH0KICAgICBzdGF0aWMgV3JpdGluZ01vZGUgaW5pdGlhbFdy
aXRpbmdNb2RlKCkgeyByZXR1cm4gVG9wVG9Cb3R0b21Xcml0aW5nTW9kZTsgfQogICAgIHN0YXRp
YyBUZXh0Q29tYmluZSBpbml0aWFsVGV4dENvbWJpbmUoKSB7IHJldHVybiBUZXh0Q29tYmluZTo6
Tm9uZTsgfQogICAgIHN0YXRpYyBUZXh0T3JpZW50YXRpb24gaW5pdGlhbFRleHRPcmllbnRhdGlv
bigpIHsgcmV0dXJuIFRleHRPcmllbnRhdGlvbjo6TWl4ZWQ7IH0KICAgICBzdGF0aWMgT2JqZWN0
Rml0IGluaXRpYWxPYmplY3RGaXQoKSB7IHJldHVybiBPYmplY3RGaXQ6OkZpbGw7IH0KICAgICBz
dGF0aWMgTGVuZ3RoUG9pbnQgaW5pdGlhbE9iamVjdFBvc2l0aW9uKCkgeyByZXR1cm4gTGVuZ3Ro
UG9pbnQoTGVuZ3RoKDUwLjBmLCBQZXJjZW50KSwgTGVuZ3RoKDUwLjBmLCBQZXJjZW50KSk7IH0K
LSAgICBzdGF0aWMgRUVtcHR5Q2VsbCBpbml0aWFsRW1wdHlDZWxscygpIHsgcmV0dXJuIFNIT1c7
IH0KLSAgICBzdGF0aWMgRUxpc3RTdHlsZVBvc2l0aW9uIGluaXRpYWxMaXN0U3R5bGVQb3NpdGlv
bigpIHsgcmV0dXJuIE9VVFNJREU7IH0KLSAgICBzdGF0aWMgRUxpc3RTdHlsZVR5cGUgaW5pdGlh
bExpc3RTdHlsZVR5cGUoKSB7IHJldHVybiBEaXNjOyB9Ci0gICAgc3RhdGljIEVUZXh0VHJhbnNm
b3JtIGluaXRpYWxUZXh0VHJhbnNmb3JtKCkgeyByZXR1cm4gVFROT05FOyB9Ci0gICAgc3RhdGlj
IEVWaXNpYmlsaXR5IGluaXRpYWxWaXNpYmlsaXR5KCkgeyByZXR1cm4gVklTSUJMRTsgfQotICAg
IHN0YXRpYyBFV2hpdGVTcGFjZSBpbml0aWFsV2hpdGVTcGFjZSgpIHsgcmV0dXJuIE5PUk1BTDsg
fQorICAgIHN0YXRpYyBFbXB0eUNlbGwgaW5pdGlhbEVtcHR5Q2VsbHMoKSB7IHJldHVybiBFbXB0
eUNlbGw6OlNob3c7IH0KKyAgICBzdGF0aWMgTGlzdFN0eWxlUG9zaXRpb24gaW5pdGlhbExpc3RT
dHlsZVBvc2l0aW9uKCkgeyByZXR1cm4gTGlzdFN0eWxlUG9zaXRpb246Ok91dHNpZGU7IH0KKyAg
ICBzdGF0aWMgTGlzdFN0eWxlVHlwZSBpbml0aWFsTGlzdFN0eWxlVHlwZSgpIHsgcmV0dXJuIExp
c3RTdHlsZVR5cGU6OkRpc2M7IH0KKyAgICBzdGF0aWMgVGV4dFRyYW5zZm9ybSBpbml0aWFsVGV4
dFRyYW5zZm9ybSgpIHsgcmV0dXJuIFRleHRUcmFuc2Zvcm06Ok5vbmU7IH0KKyAgICBzdGF0aWMg
VmlzaWJpbGl0eSBpbml0aWFsVmlzaWJpbGl0eSgpIHsgcmV0dXJuIFZpc2liaWxpdHk6OlZpc2li
bGU7IH0KKyAgICBzdGF0aWMgV2hpdGVTcGFjZSBpbml0aWFsV2hpdGVTcGFjZSgpIHsgcmV0dXJu
IFdoaXRlU3BhY2U6Ok5vcm1hbDsgfQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsSG9yaXpvbnRh
bEJvcmRlclNwYWNpbmcoKSB7IHJldHVybiAwOyB9CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxW
ZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSB7IHJldHVybiAwOyB9Ci0gICAgc3RhdGljIEVDdXJzb3Ig
aW5pdGlhbEN1cnNvcigpIHsgcmV0dXJuIEN1cnNvckF1dG87IH0KKyAgICBzdGF0aWMgQ3Vyc29y
VHlwZSBpbml0aWFsQ3Vyc29yKCkgeyByZXR1cm4gQ3Vyc29yVHlwZTo6QXV0bzsgfQogICAgIHN0
YXRpYyBDb2xvciBpbml0aWFsQ29sb3IoKSB7IHJldHVybiBDb2xvcjo6YmxhY2s7IH0KICAgICBz
dGF0aWMgU3R5bGVJbWFnZSogaW5pdGlhbExpc3RTdHlsZUltYWdlKCkgeyByZXR1cm4gMDsgfQog
ICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsQm9yZGVyV2lkdGgoKSB7IHJldHVybiAzOyB9CkBAIC0x
NDc4LDEzICsxNDc4LDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc2hvcnQgaW5pdGlhbFdpZG93
cygpIHsgcmV0dXJuIDI7IH0KICAgICBzdGF0aWMgc2hvcnQgaW5pdGlhbE9ycGhhbnMoKSB7IHJl
dHVybiAyOyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsTGluZUhlaWdodCgpIHsgcmV0dXJu
IExlbmd0aCgtMTAwLjBmLCBQZXJjZW50KTsgfQotICAgIHN0YXRpYyBFVGV4dEFsaWduIGluaXRp
YWxUZXh0QWxpZ24oKSB7IHJldHVybiBUQVNUQVJUOyB9CisgICAgc3RhdGljIFRleHRBbGlnbk1v
ZGUgaW5pdGlhbFRleHRBbGlnbigpIHsgcmV0dXJuIFRleHRBbGlnbk1vZGU6OlN0YXJ0OyB9CiAg
ICAgc3RhdGljIFRleHREZWNvcmF0aW9uIGluaXRpYWxUZXh0RGVjb3JhdGlvbigpIHsgcmV0dXJu
IFRleHREZWNvcmF0aW9uTm9uZTsgfQotICAgIHN0YXRpYyBUZXh0RGVjb3JhdGlvblN0eWxlIGlu
aXRpYWxUZXh0RGVjb3JhdGlvblN0eWxlKCkgeyByZXR1cm4gVGV4dERlY29yYXRpb25TdHlsZVNv
bGlkOyB9CisgICAgc3RhdGljIFRleHREZWNvcmF0aW9uU3R5bGUgaW5pdGlhbFRleHREZWNvcmF0
aW9uU3R5bGUoKSB7IHJldHVybiBUZXh0RGVjb3JhdGlvblN0eWxlOjpTb2xpZDsgfQogICAgIHN0
YXRpYyBUZXh0RGVjb3JhdGlvblNraXAgaW5pdGlhbFRleHREZWNvcmF0aW9uU2tpcCgpIHsgcmV0
dXJuIFRleHREZWNvcmF0aW9uU2tpcEF1dG87IH0KICAgICBzdGF0aWMgVGV4dFVuZGVybGluZVBv
c2l0aW9uIGluaXRpYWxUZXh0VW5kZXJsaW5lUG9zaXRpb24oKSB7IHJldHVybiBUZXh0VW5kZXJs
aW5lUG9zaXRpb25BdXRvOyB9CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxab29tKCkgeyByZXR1
cm4gMS4wZjsgfQotICAgIHN0YXRpYyBUZXh0Wm9vbSBpbml0aWFsVGV4dFpvb20oKSB7IHJldHVy
biBUZXh0Wm9vbU5vcm1hbDsgfQorICAgIHN0YXRpYyBUZXh0Wm9vbSBpbml0aWFsVGV4dFpvb20o
KSB7IHJldHVybiBUZXh0Wm9vbTo6Tm9ybWFsOyB9CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxP
dXRsaW5lT2Zmc2V0KCkgeyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsT3Bh
Y2l0eSgpIHsgcmV0dXJuIDEuMGY7IH0KICAgICBzdGF0aWMgQm94QWxpZ25tZW50IGluaXRpYWxC
b3hBbGlnbigpIHsgcmV0dXJuIEJveEFsaWdubWVudDo6U3RyZXRjaDsgfQpAQCAtMTUyNCwxOCAr
MTUyNCwxOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIE5CU1BNb2RlIGluaXRpYWxOQlNQTW9kZSgp
IHsgcmV0dXJuIE5CU1BNb2RlOjpOb3JtYWw7IH0KICAgICBzdGF0aWMgTGluZUJyZWFrIGluaXRp
YWxMaW5lQnJlYWsoKSB7IHJldHVybiBMaW5lQnJlYWs6OkF1dG87IH0KICAgICBzdGF0aWMgRVNw
ZWFrQXMgaW5pdGlhbFNwZWFrQXMoKSB7IHJldHVybiBTcGVha05vcm1hbDsgfQotICAgIHN0YXRp
YyBIeXBoZW5zIGluaXRpYWxIeXBoZW5zKCkgeyByZXR1cm4gSHlwaGVuc01hbnVhbDsgfQorICAg
IHN0YXRpYyBIeXBoZW5zIGluaXRpYWxIeXBoZW5zKCkgeyByZXR1cm4gSHlwaGVuczo6TWFudWFs
OyB9CiAgICAgc3RhdGljIHNob3J0IGluaXRpYWxIeXBoZW5hdGlvbkxpbWl0QmVmb3JlKCkgeyBy
ZXR1cm4gLTE7IH0KICAgICBzdGF0aWMgc2hvcnQgaW5pdGlhbEh5cGhlbmF0aW9uTGltaXRBZnRl
cigpIHsgcmV0dXJuIC0xOyB9CiAgICAgc3RhdGljIHNob3J0IGluaXRpYWxIeXBoZW5hdGlvbkxp
bWl0TGluZXMoKSB7IHJldHVybiAtMTsgfQogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IGluaXRpYWxIeXBoZW5hdGlvblN0cmluZygpIHsgcmV0dXJuIG51bGxBdG9tKCk7IH0KLSAgICBz
dGF0aWMgRUJvcmRlckZpdCBpbml0aWFsQm9yZGVyRml0KCkgeyByZXR1cm4gQm9yZGVyRml0Qm9y
ZGVyOyB9CisgICAgc3RhdGljIEJvcmRlckZpdCBpbml0aWFsQm9yZGVyRml0KCkgeyByZXR1cm4g
Qm9yZGVyRml0OjpCb3JkZXI7IH0KICAgICBzdGF0aWMgUmVzaXplIGluaXRpYWxSZXNpemUoKSB7
IHJldHVybiBSZXNpemU6Ok5vbmU7IH0KICAgICBzdGF0aWMgQ29udHJvbFBhcnQgaW5pdGlhbEFw
cGVhcmFuY2UoKSB7IHJldHVybiBOb0NvbnRyb2xQYXJ0OyB9CiAgICAgc3RhdGljIEFzcGVjdFJh
dGlvVHlwZSBpbml0aWFsQXNwZWN0UmF0aW9UeXBlKCkgeyByZXR1cm4gQXNwZWN0UmF0aW9UeXBl
OjpBdXRvOyB9CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9y
KCkgeyByZXR1cm4gMTsgfQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsQXNwZWN0UmF0aW9OdW1l
cmF0b3IoKSB7IHJldHVybiAxOyB9Ci0gICAgc3RhdGljIE9yZGVyIGluaXRpYWxSVExPcmRlcmlu
ZygpIHsgcmV0dXJuIExvZ2ljYWxPcmRlcjsgfQorICAgIHN0YXRpYyBPcmRlciBpbml0aWFsUlRM
T3JkZXJpbmcoKSB7IHJldHVybiBPcmRlcjo6TG9naWNhbDsgfQogICAgIHN0YXRpYyBmbG9hdCBp
bml0aWFsVGV4dFN0cm9rZVdpZHRoKCkgeyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyB1bnNpZ25l
ZCBzaG9ydCBpbml0aWFsQ29sdW1uQ291bnQoKSB7IHJldHVybiAxOyB9CiAgICAgc3RhdGljIENv
bHVtbkZpbGwgaW5pdGlhbENvbHVtbkZpbGwoKSB7IHJldHVybiBDb2x1bW5GaWxsOjpCYWxhbmNl
OyB9CkBAIC0xNTQ2LDcgKzE1NDYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIExlbmd0aCBpbml0
aWFsVHJhbnNmb3JtT3JpZ2luWCgpIHsgcmV0dXJuIExlbmd0aCg1MC4wZiwgUGVyY2VudCk7IH0K
ICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxUcmFuc2Zvcm1PcmlnaW5ZKCkgeyByZXR1cm4gTGVu
Z3RoKDUwLjBmLCBQZXJjZW50KTsgfQogICAgIHN0YXRpYyBUcmFuc2Zvcm1Cb3ggaW5pdGlhbFRy
YW5zZm9ybUJveCgpIHsgcmV0dXJuIFRyYW5zZm9ybUJveDo6Qm9yZGVyQm94OyB9Ci0gICAgc3Rh
dGljIEVQb2ludGVyRXZlbnRzIGluaXRpYWxQb2ludGVyRXZlbnRzKCkgeyByZXR1cm4gUEVfQVVU
TzsgfQorICAgIHN0YXRpYyBQb2ludGVyRXZlbnRzIGluaXRpYWxQb2ludGVyRXZlbnRzKCkgeyBy
ZXR1cm4gUG9pbnRlckV2ZW50czo6QXV0bzsgfQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsVHJh
bnNmb3JtT3JpZ2luWigpIHsgcmV0dXJuIDA7IH0KICAgICBzdGF0aWMgVHJhbnNmb3JtU3R5bGUz
RCBpbml0aWFsVHJhbnNmb3JtU3R5bGUzRCgpIHsgcmV0dXJuIFRyYW5zZm9ybVN0eWxlM0Q6OkZs
YXQ7IH0KICAgICBzdGF0aWMgQmFja2ZhY2VWaXNpYmlsaXR5IGluaXRpYWxCYWNrZmFjZVZpc2li
aWxpdHkoKSB7IHJldHVybiBCYWNrZmFjZVZpc2liaWxpdHk6OlZpc2libGU7IH0KQEAgLTE1NTQs
MTcgKzE1NTQsMTcgQEAgcHVibGljOgogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFBlcnNwZWN0
aXZlT3JpZ2luWCgpIHsgcmV0dXJuIExlbmd0aCg1MC4wZiwgUGVyY2VudCk7IH0KICAgICBzdGF0
aWMgTGVuZ3RoIGluaXRpYWxQZXJzcGVjdGl2ZU9yaWdpblkoKSB7IHJldHVybiBMZW5ndGgoNTAu
MGYsIFBlcmNlbnQpOyB9CiAgICAgc3RhdGljIENvbG9yIGluaXRpYWxCYWNrZ3JvdW5kQ29sb3Io
KSB7IHJldHVybiBDb2xvcjo6dHJhbnNwYXJlbnQ7IH0KLSAgICBzdGF0aWMgQ29sb3IgaW5pdGlh
bFRleHRFbXBoYXNpc0NvbG9yKCkgeyByZXR1cm4gVGV4dEVtcGhhc2lzRmlsbEZpbGxlZDsgfQot
ICAgIHN0YXRpYyBUZXh0RW1waGFzaXNGaWxsIGluaXRpYWxUZXh0RW1waGFzaXNGaWxsKCkgeyBy
ZXR1cm4gVGV4dEVtcGhhc2lzRmlsbEZpbGxlZDsgfQotICAgIHN0YXRpYyBUZXh0RW1waGFzaXNN
YXJrIGluaXRpYWxUZXh0RW1waGFzaXNNYXJrKCkgeyByZXR1cm4gVGV4dEVtcGhhc2lzTWFya05v
bmU7IH0KKyAgICBzdGF0aWMgQ29sb3IgaW5pdGlhbFRleHRFbXBoYXNpc0NvbG9yKCkgeyByZXR1
cm4gQ29sb3IoKTsgfQorICAgIHN0YXRpYyBUZXh0RW1waGFzaXNGaWxsIGluaXRpYWxUZXh0RW1w
aGFzaXNGaWxsKCkgeyByZXR1cm4gVGV4dEVtcGhhc2lzRmlsbDo6RmlsbGVkOyB9CisgICAgc3Rh
dGljIFRleHRFbXBoYXNpc01hcmsgaW5pdGlhbFRleHRFbXBoYXNpc01hcmsoKSB7IHJldHVybiBU
ZXh0RW1waGFzaXNNYXJrOjpOb25lOyB9CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
aW5pdGlhbFRleHRFbXBoYXNpc0N1c3RvbU1hcmsoKSB7IHJldHVybiBudWxsQXRvbSgpOyB9CiAg
ICAgc3RhdGljIFRleHRFbXBoYXNpc1Bvc2l0aW9uIGluaXRpYWxUZXh0RW1waGFzaXNQb3NpdGlv
bigpIHsgcmV0dXJuIFRleHRFbXBoYXNpc1Bvc2l0aW9uT3ZlciB8IFRleHRFbXBoYXNpc1Bvc2l0
aW9uUmlnaHQ7IH0KLSAgICBzdGF0aWMgUnVieVBvc2l0aW9uIGluaXRpYWxSdWJ5UG9zaXRpb24o
KSB7IHJldHVybiBSdWJ5UG9zaXRpb25CZWZvcmU7IH0KKyAgICBzdGF0aWMgUnVieVBvc2l0aW9u
IGluaXRpYWxSdWJ5UG9zaXRpb24oKSB7IHJldHVybiBSdWJ5UG9zaXRpb246OkJlZm9yZTsgfQog
ICAgIHN0YXRpYyBMaW5lQm94Q29udGFpbiBpbml0aWFsTGluZUJveENvbnRhaW4oKSB7IHJldHVy
biBMaW5lQm94Q29udGFpbkJsb2NrIHwgTGluZUJveENvbnRhaW5JbmxpbmUgfCBMaW5lQm94Q29u
dGFpblJlcGxhY2VkOyB9CiAgICAgc3RhdGljIEltYWdlT3JpZW50YXRpb25FbnVtIGluaXRpYWxJ
bWFnZU9yaWVudGF0aW9uKCkgeyByZXR1cm4gT3JpZ2luVG9wTGVmdDsgfQogICAgIHN0YXRpYyBJ
bWFnZVJlbmRlcmluZyBpbml0aWFsSW1hZ2VSZW5kZXJpbmcoKSB7IHJldHVybiBJbWFnZVJlbmRl
cmluZzo6QXV0bzsgfQotICAgIHN0YXRpYyBJbWFnZVJlc29sdXRpb25Tb3VyY2UgaW5pdGlhbElt
YWdlUmVzb2x1dGlvblNvdXJjZSgpIHsgcmV0dXJuIEltYWdlUmVzb2x1dGlvblNwZWNpZmllZDsg
fQotICAgIHN0YXRpYyBJbWFnZVJlc29sdXRpb25TbmFwIGluaXRpYWxJbWFnZVJlc29sdXRpb25T
bmFwKCkgeyByZXR1cm4gSW1hZ2VSZXNvbHV0aW9uTm9TbmFwOyB9CisgICAgc3RhdGljIEltYWdl
UmVzb2x1dGlvblNvdXJjZSBpbml0aWFsSW1hZ2VSZXNvbHV0aW9uU291cmNlKCkgeyByZXR1cm4g
SW1hZ2VSZXNvbHV0aW9uU291cmNlOjpTcGVjaWZpZWQ7IH0KKyAgICBzdGF0aWMgSW1hZ2VSZXNv
bHV0aW9uU25hcCBpbml0aWFsSW1hZ2VSZXNvbHV0aW9uU25hcCgpIHsgcmV0dXJuIEltYWdlUmVz
b2x1dGlvblNuYXA6Ok5vbmU7IH0KICAgICBzdGF0aWMgZmxvYXQgaW5pdGlhbEltYWdlUmVzb2x1
dGlvbigpIHsgcmV0dXJuIDE7IH0KICAgICBzdGF0aWMgU3R5bGVJbWFnZSogaW5pdGlhbEJvcmRl
ckltYWdlU291cmNlKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHN0YXRpYyBTdHlsZUltYWdl
KiBpbml0aWFsTWFza0JveEltYWdlU291cmNlKCkgeyByZXR1cm4gbnVsbHB0cjsgfQpAQCAtMTU3
NSwxMiArMTU3NSwxMiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKICAgICBzdGF0
aWMgVGV4dEluZGVudExpbmUgaW5pdGlhbFRleHRJbmRlbnRMaW5lKCkgeyByZXR1cm4gVGV4dElu
ZGVudExpbmU6OkZpcnN0TGluZTsgfQogICAgIHN0YXRpYyBUZXh0SW5kZW50VHlwZSBpbml0aWFs
VGV4dEluZGVudFR5cGUoKSB7IHJldHVybiBUZXh0SW5kZW50VHlwZTo6Tm9ybWFsOyB9Ci0gICAg
c3RhdGljIFRleHRBbGlnbkxhc3QgaW5pdGlhbFRleHRBbGlnbkxhc3QoKSB7IHJldHVybiBUZXh0
QWxpZ25MYXN0QXV0bzsgfQotICAgIHN0YXRpYyBUZXh0SnVzdGlmeSBpbml0aWFsVGV4dEp1c3Rp
ZnkoKSB7IHJldHVybiBUZXh0SnVzdGlmeUF1dG87IH0KKyAgICBzdGF0aWMgVGV4dEFsaWduTGFz
dCBpbml0aWFsVGV4dEFsaWduTGFzdCgpIHsgcmV0dXJuIFRleHRBbGlnbkxhc3Q6OkF1dG87IH0K
KyAgICBzdGF0aWMgVGV4dEp1c3RpZnkgaW5pdGlhbFRleHRKdXN0aWZ5KCkgeyByZXR1cm4gVGV4
dEp1c3RpZnk6OkF1dG87IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZ
KQotICAgIHN0YXRpYyBDdXJzb3JWaXNpYmlsaXR5IGluaXRpYWxDdXJzb3JWaXNpYmlsaXR5KCkg
eyByZXR1cm4gQ3Vyc29yVmlzaWJpbGl0eUF1dG87IH0KKyAgICBzdGF0aWMgQ3Vyc29yVmlzaWJp
bGl0eSBpbml0aWFsQ3Vyc29yVmlzaWJpbGl0eSgpIHsgcmV0dXJuIEN1cnNvclZpc2liaWxpdHk6
OkF1dG87IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKQEAgLTE2MTYs
NyArMTYxNiw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4g
aW5pdGlhbEdyaWRBdXRvUmVwZWF0VHJhY2tzKCkgeyByZXR1cm4gVmVjdG9yPEdyaWRUcmFja1Np
emU+KCk7IH0KICAgICBzdGF0aWMgdW5zaWduZWQgaW5pdGlhbEdyaWRBdXRvUmVwZWF0SW5zZXJ0
aW9uUG9pbnQoKSB7IHJldHVybiAwOyB9Ci0gICAgc3RhdGljIEF1dG9SZXBlYXRUeXBlIGluaXRp
YWxHcmlkQXV0b1JlcGVhdFR5cGUoKSB7IHJldHVybiBOb0F1dG9SZXBlYXQ7IH0KKyAgICBzdGF0
aWMgQXV0b1JlcGVhdFR5cGUgaW5pdGlhbEdyaWRBdXRvUmVwZWF0VHlwZSgpIHsgcmV0dXJuIEF1
dG9SZXBlYXRUeXBlOjpOb25lOyB9CiAKICAgICBzdGF0aWMgR3JpZEF1dG9GbG93IGluaXRpYWxH
cmlkQXV0b0Zsb3coKSB7IHJldHVybiBBdXRvRmxvd1JvdzsgfQogCkBAIC0xNjQxLDggKzE2NDEs
OCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHVuc2lnbmVkIGluaXRpYWxUYWJTaXplKCkgeyByZXR1
cm4gODsgfQogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdGlhbExpbmVHcmlk
KCkgeyByZXR1cm4gbnVsbEF0b20oKTsgfQotICAgIHN0YXRpYyBMaW5lU25hcCBpbml0aWFsTGlu
ZVNuYXAoKSB7IHJldHVybiBMaW5lU25hcE5vbmU7IH0KLSAgICBzdGF0aWMgTGluZUFsaWduIGlu
aXRpYWxMaW5lQWxpZ24oKSB7IHJldHVybiBMaW5lQWxpZ25Ob25lOyB9CisgICAgc3RhdGljIExp
bmVTbmFwIGluaXRpYWxMaW5lU25hcCgpIHsgcmV0dXJuIExpbmVTbmFwOjpOb25lOyB9CisgICAg
c3RhdGljIExpbmVBbGlnbiBpbml0aWFsTGluZUFsaWduKCkgeyByZXR1cm4gTGluZUFsaWduOjpO
b25lOyB9CiAKICAgICBzdGF0aWMgSW50U2l6ZSBpbml0aWFsSW5pdGlhbExldHRlcigpIHsgcmV0
dXJuIEludFNpemUoKTsgfQogICAgIHN0YXRpYyBMaW5lQ2xhbXBWYWx1ZSBpbml0aWFsTGluZUNs
YW1wKCkgeyByZXR1cm4gTGluZUNsYW1wVmFsdWUoKTsgfQpAQCAtMTc0MiwxMyArMTc0MiwxMyBA
QCBwcml2YXRlOgogCiAgICAgICAgIHZvaWQgY29weU5vbkluaGVyaXRlZEZyb20oY29uc3QgTm9u
SW5oZXJpdGVkRmxhZ3MmKTsKIAotICAgICAgICBib29sIGhhc0FueVB1YmxpY1BzZXVkb1N0eWxl
cygpIGNvbnN0IHsgcmV0dXJuIFBVQkxJQ19QU0VVRE9JRF9NQVNLICYgcHNldWRvQml0czsgfQor
ICAgICAgICBib29sIGhhc0FueVB1YmxpY1BzZXVkb1N0eWxlcygpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQc2V1ZG9JZDo6UHVibGljUHNldWRvSWRNYXNrKSAmIHBzZXVk
b0JpdHM7IH0KICAgICAgICAgYm9vbCBoYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZCkgY29uc3Q7CiAg
ICAgICAgIHZvaWQgc2V0SGFzUHNldWRvU3R5bGUoUHNldWRvSWQpOwogICAgICAgICB2b2lkIHNl
dEhhc1BzZXVkb1N0eWxlcyhQc2V1ZG9JZFNldCk7CiAKLSAgICAgICAgdW5zaWduZWQgZWZmZWN0
aXZlRGlzcGxheSA6IDU7IC8vIEVEaXNwbGF5Ci0gICAgICAgIHVuc2lnbmVkIG9yaWdpbmFsRGlz
cGxheSA6IDU7IC8vIEVEaXNwbGF5CisgICAgICAgIHVuc2lnbmVkIGVmZmVjdGl2ZURpc3BsYXkg
OiA1OyAvLyBEaXNwbGF5VHlwZQorICAgICAgICB1bnNpZ25lZCBvcmlnaW5hbERpc3BsYXkgOiA1
OyAvLyBEaXNwbGF5VHlwZQogICAgICAgICB1bnNpZ25lZCBvdmVyZmxvd1ggOiAzOyAvLyBPdmVy
ZmxvdwogICAgICAgICB1bnNpZ25lZCBvdmVyZmxvd1kgOiAzOyAvLyBPdmVyZmxvdwogICAgICAg
ICB1bnNpZ25lZCB2ZXJ0aWNhbEFsaWduIDogNDsgLy8gVmVydGljYWxBbGlnbgpAQCAtMTc3Myw3
ICsxNzczLDcgQEAgcHJpdmF0ZToKICAgICAgICAgdW5zaWduZWQgaXNMaW5rIDogMTsKIAogICAg
ICAgICB1bnNpZ25lZCBzdHlsZVR5cGUgOiA0OyAvLyBQc2V1ZG9JZAotICAgICAgICB1bnNpZ25l
ZCBwc2V1ZG9CaXRzIDogKHN0YXRpY19jYXN0PHVuc2lnbmVkPihGSVJTVF9JTlRFUk5BTF9QU0VV
RE9JRCkgLSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRklSU1RfUFVCTElDX1BTRVVET0lEKSk7Cisg
ICAgICAgIHVuc2lnbmVkIHBzZXVkb0JpdHMgOiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBzZXVk
b0lkOjpGaXJzdEludGVybmFsUHNldWRvSWQpIC0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBzZXVk
b0lkOjpGaXJzdFB1YmxpY1BzZXVkb0lkKSk7CiAKICAgICAgICAgLy8gSWYgeW91IGFkZCBtb3Jl
IHN0eWxlIGJpdHMgaGVyZSwgeW91IHdpbGwgYWxzbyBuZWVkIHRvIHVwZGF0ZSBSZW5kZXJTdHls
ZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6OmNvcHlOb25Jbmhlcml0ZWRGcm9tKCkuCiAgICAgfTsKQEAg
LTE3ODIsMjAgKzE3ODIsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEluaGVyaXRlZEZsYWdzJikgY29uc3Q7CiAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBJbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIp
OyB9CiAKLSAgICAgICAgdW5zaWduZWQgZW1wdHlDZWxscyA6IDE7IC8vIEVFbXB0eUNlbGwKLSAg
ICAgICAgdW5zaWduZWQgY2FwdGlvblNpZGUgOiAyOyAvLyBFQ2FwdGlvblNpZGUKLSAgICAgICAg
dW5zaWduZWQgbGlzdFN0eWxlVHlwZSA6IDc7IC8vIEVMaXN0U3R5bGVUeXBlCi0gICAgICAgIHVu
c2lnbmVkIGxpc3RTdHlsZVBvc2l0aW9uIDogMTsgLy8gRUxpc3RTdHlsZVBvc2l0aW9uCi0gICAg
ICAgIHVuc2lnbmVkIHZpc2liaWxpdHkgOiAyOyAvLyBFVmlzaWJpbGl0eQotICAgICAgICB1bnNp
Z25lZCB0ZXh0QWxpZ24gOiA0OyAvLyBFVGV4dEFsaWduCi0gICAgICAgIHVuc2lnbmVkIHRleHRU
cmFuc2Zvcm0gOiAyOyAvLyBFVGV4dFRyYW5zZm9ybQorICAgICAgICB1bnNpZ25lZCBlbXB0eUNl
bGxzIDogMTsgLy8gRW1wdHlDZWxsCisgICAgICAgIHVuc2lnbmVkIGNhcHRpb25TaWRlIDogMjsg
Ly8gQ2FwdGlvblNpZGUKKyAgICAgICAgdW5zaWduZWQgbGlzdFN0eWxlVHlwZSA6IDc7IC8vIExp
c3RTdHlsZVR5cGUKKyAgICAgICAgdW5zaWduZWQgbGlzdFN0eWxlUG9zaXRpb24gOiAxOyAvLyBM
aXN0U3R5bGVQb3NpdGlvbgorICAgICAgICB1bnNpZ25lZCB2aXNpYmlsaXR5IDogMjsgLy8gVmlz
aWJpbGl0eQorICAgICAgICB1bnNpZ25lZCB0ZXh0QWxpZ24gOiA0OyAvLyBUZXh0QWxpZ25Nb2Rl
CisgICAgICAgIHVuc2lnbmVkIHRleHRUcmFuc2Zvcm0gOiAyOyAvLyBUZXh0VHJhbnNmb3JtCiAg
ICAgICAgIHVuc2lnbmVkIHRleHREZWNvcmF0aW9ucyA6IFRleHREZWNvcmF0aW9uQml0czsKLSAg
ICAgICAgdW5zaWduZWQgY3Vyc29yIDogNjsgLy8gRUN1cnNvcgorICAgICAgICB1bnNpZ25lZCBj
dXJzb3IgOiA2OyAvLyBDdXJzb3JUeXBlCiAjaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQog
ICAgICAgICB1bnNpZ25lZCBjdXJzb3JWaXNpYmlsaXR5IDogMTsgLy8gQ3Vyc29yVmlzaWJpbGl0
eQogI2VuZGlmCiAgICAgICAgIHVuc2lnbmVkIGRpcmVjdGlvbiA6IDE7IC8vIFRleHREaXJlY3Rp
b24KLSAgICAgICAgdW5zaWduZWQgd2hpdGVTcGFjZSA6IDM7IC8vIEVXaGl0ZVNwYWNlCisgICAg
ICAgIHVuc2lnbmVkIHdoaXRlU3BhY2UgOiAzOyAvLyBXaGl0ZVNwYWNlCiAgICAgICAgIC8vIDM1
IGJpdHMKICAgICAgICAgdW5zaWduZWQgYm9yZGVyQ29sbGFwc2UgOiAxOyAvLyBCb3JkZXJDb2xs
YXBzZQogICAgICAgICB1bnNpZ25lZCBib3hEaXJlY3Rpb24gOiAxOyAvLyBCb3hEaXJlY3Rpb24K
QEAgLTE4MDMsOCArMTgwMyw4IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIG5vbiBDU1MyIGluaGVy
aXRlZAogICAgICAgICB1bnNpZ25lZCBydGxPcmRlcmluZyA6IDE7IC8vIE9yZGVyCiAgICAgICAg
IHVuc2lnbmVkIHByaW50Q29sb3JBZGp1c3QgOiBQcmludENvbG9yQWRqdXN0Qml0czsgLy8gUHJp
bnRDb2xvckFkanVzdAotICAgICAgICB1bnNpZ25lZCBwb2ludGVyRXZlbnRzIDogNDsgLy8gRVBv
aW50ZXJFdmVudHMKLSAgICAgICAgdW5zaWduZWQgaW5zaWRlTGluayA6IDI7IC8vIEVJbnNpZGVM
aW5rCisgICAgICAgIHVuc2lnbmVkIHBvaW50ZXJFdmVudHMgOiA0OyAvLyBQb2ludGVyRXZlbnRz
CisgICAgICAgIHVuc2lnbmVkIGluc2lkZUxpbmsgOiAyOyAvLyBJbnNpZGVMaW5rCiAgICAgICAg
IHVuc2lnbmVkIGluc2lkZURlZmF1bHRCdXR0b24gOiAxOwogICAgICAgICAvLyA0NiBiaXRzCiAK
QEAgLTE4MTYsNyArMTgxNiw3IEBAIHByaXZhdGU6CiAgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBp
cyB1c2VkIHRvIGltcGxlbWVudCB0aGUgcmVwbGFjZSBvcGVyYXRpb24uCiAgICAgUmVuZGVyU3R5
bGUoUmVuZGVyU3R5bGUmLCBSZW5kZXJTdHlsZSYmKTsKIAotICAgIEVEaXNwbGF5IG9yaWdpbmFs
RGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVEaXNwbGF5PihtX25vbkluaGVy
aXRlZEZsYWdzLm9yaWdpbmFsRGlzcGxheSk7IH0KKyAgICBEaXNwbGF5VHlwZSBvcmlnaW5hbERp
c3BsYXkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxEaXNwbGF5VHlwZT4obV9ub25Jbmhl
cml0ZWRGbGFncy5vcmlnaW5hbERpc3BsYXkpOyB9CiAKICAgICBib29sIGhhc0F1dG9MZWZ0QW5k
UmlnaHQoKSBjb25zdCB7IHJldHVybiBsZWZ0KCkuaXNBdXRvKCkgJiYgcmlnaHQoKS5pc0F1dG8o
KTsgfQogICAgIGJvb2wgaGFzQXV0b1RvcEFuZEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHRvcCgp
LmlzQXV0bygpICYmIGJvdHRvbSgpLmlzQXV0bygpOyB9CkBAIC0xODI1LDExICsxODI1LDExIEBA
IHByaXZhdGU6CiAKICAgICBMYXlvdXRCb3hFeHRlbnQgZ2V0U2hhZG93SW5zZXRFeHRlbnQoY29u
c3QgU2hhZG93RGF0YSopIGNvbnN0OwogCi0gICAgc3RhdGljIGJvb2wgaXNEaXNwbGF5UmVwbGFj
ZWRUeXBlKEVEaXNwbGF5KTsKLSAgICBzdGF0aWMgYm9vbCBpc0Rpc3BsYXlJbmxpbmVUeXBlKEVE
aXNwbGF5KTsKLSAgICBzdGF0aWMgYm9vbCBpc0Rpc3BsYXlGbGV4aWJsZUJveChFRGlzcGxheSk7
Ci0gICAgc3RhdGljIGJvb2wgaXNEaXNwbGF5R3JpZEJveChFRGlzcGxheSk7Ci0gICAgc3RhdGlj
IGJvb2wgaXNEaXNwbGF5RmxleGlibGVPckdyaWRCb3goRURpc3BsYXkpOworICAgIHN0YXRpYyBi
b29sIGlzRGlzcGxheVJlcGxhY2VkVHlwZShEaXNwbGF5VHlwZSk7CisgICAgc3RhdGljIGJvb2wg
aXNEaXNwbGF5SW5saW5lVHlwZShEaXNwbGF5VHlwZSk7CisgICAgc3RhdGljIGJvb2wgaXNEaXNw
bGF5RmxleGlibGVCb3goRGlzcGxheVR5cGUpOworICAgIHN0YXRpYyBib29sIGlzRGlzcGxheUdy
aWRCb3goRGlzcGxheVR5cGUpOworICAgIHN0YXRpYyBib29sIGlzRGlzcGxheUZsZXhpYmxlT3JH
cmlkQm94KERpc3BsYXlUeXBlKTsKIAogICAgIENvbG9yIGNvbG9ySW5jbHVkaW5nRmFsbGJhY2so
Q1NTUHJvcGVydHlJRCBjb2xvclByb3BlcnR5LCBib29sIHZpc2l0ZWRMaW5rKSBjb25zdDsKIApA
QCAtMTkyMCwyMyArMTkyMCwyMyBAQCBpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6Tm9uSW5oZXJp
dGVkRmxhCiAKIGlubGluZSBib29sIFJlbmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6aGFz
UHNldWRvU3R5bGUoUHNldWRvSWQgcHNldWRvKSBjb25zdAogewotICAgIEFTU0VSVChwc2V1ZG8g
PiBOT1BTRVVETyk7Ci0gICAgQVNTRVJUKHBzZXVkbyA8IEZJUlNUX0lOVEVSTkFMX1BTRVVET0lE
KTsKLSAgICByZXR1cm4gcHNldWRvQml0cyAmICgxIDw8IChwc2V1ZG8gLSAxIC8qIE5PUFNVRURP
ICovKSk7CisgICAgQVNTRVJUKHBzZXVkbyA+IFBzZXVkb0lkOjpOb25lKTsKKyAgICBBU1NFUlQo
cHNldWRvIDwgUHNldWRvSWQ6OkZpcnN0SW50ZXJuYWxQc2V1ZG9JZCk7CisgICAgcmV0dXJuIHBz
ZXVkb0JpdHMgJiAoMSA8PCAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBzZXVkbykgLSAxIC8qIFBz
ZXVkb0lkOjpOb25lICovKSk7CiB9CiAKIGlubGluZSB2b2lkIFJlbmRlclN0eWxlOjpOb25Jbmhl
cml0ZWRGbGFnczo6c2V0SGFzUHNldWRvU3R5bGUoUHNldWRvSWQgcHNldWRvKQogewotICAgIEFT
U0VSVChwc2V1ZG8gPiBOT1BTRVVETyk7Ci0gICAgQVNTRVJUKHBzZXVkbyA8IEZJUlNUX0lOVEVS
TkFMX1BTRVVET0lEKTsKLSAgICBwc2V1ZG9CaXRzIHw9IDEgPDwgKHBzZXVkbyAtIDEgLyogTk9Q
U1VFRE8gKi8pOworICAgIEFTU0VSVChwc2V1ZG8gPiBQc2V1ZG9JZDo6Tm9uZSk7CisgICAgQVNT
RVJUKHBzZXVkbyA8IFBzZXVkb0lkOjpGaXJzdEludGVybmFsUHNldWRvSWQpOworICAgIHBzZXVk
b0JpdHMgfD0gMSA8PCAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBzZXVkbykgLSAxIC8qIFBzZXVk
b0lkOjpOb25lICovKTsKIH0KIAogaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6Ok5vbkluaGVyaXRl
ZEZsYWdzOjpzZXRIYXNQc2V1ZG9TdHlsZXMoUHNldWRvSWRTZXQgcHNldWRvSWRTZXQpCiB7CiAg
ICAgQVNTRVJUKHBzZXVkb0lkU2V0KTsKLSAgICBBU1NFUlQoKHBzZXVkb0lkU2V0LmRhdGEoKSAm
IFBVQkxJQ19QU0VVRE9JRF9NQVNLKSA9PSBwc2V1ZG9JZFNldC5kYXRhKCkpOwotICAgIHBzZXVk
b0JpdHMgfD0gcHNldWRvSWRTZXQuZGF0YSgpID4+IDE7IC8vIFNoaWZ0IGRvd24gYXMgd2UgZG8g
bm90IHN0b3JlIGEgYml0IGZvciBOT1BTVUVETy4KKyAgICBBU1NFUlQoKHBzZXVkb0lkU2V0LmRh
dGEoKSAmIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQc2V1ZG9JZDo6UHVibGljUHNldWRvSWRNYXNr
KSkgPT0gcHNldWRvSWRTZXQuZGF0YSgpKTsKKyAgICBwc2V1ZG9CaXRzIHw9IHBzZXVkb0lkU2V0
LmRhdGEoKSA+PiAxOyAvLyBTaGlmdCBkb3duIGFzIHdlIGRvIG5vdCBzdG9yZSBhIGJpdCBmb3Ig
UHNldWRvSWQ6Ok5vbmUuCiB9CiAKIGlubGluZSBib29sIFJlbmRlclN0eWxlOjpJbmhlcml0ZWRG
bGFnczo6b3BlcmF0b3I9PShjb25zdCBJbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0CkBAIC0y
MDA1LDIyICsyMDA1LDIyIEBAIGlubGluZSBib29sIFJlbmRlclN0eWxlOjpoYXNCYWNrZ3JvdW5k
KCkKICAgICByZXR1cm4gdmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENvbG9yKS5pc1Zpc2libGUoKSB8fCAgaGFzQmFja2dyb3VuZEltYWdlKCk7CiB9CiAKLWlubGlu
ZSBib29sIFJlbmRlclN0eWxlOjphdXRvV3JhcChFV2hpdGVTcGFjZSB3aGl0ZVNwYWNlKQoraW5s
aW5lIGJvb2wgUmVuZGVyU3R5bGU6OmF1dG9XcmFwKFdoaXRlU3BhY2Ugd2hpdGVTcGFjZSkKIHsK
ICAgICAvLyBOb3dyYXAgYW5kIHByZSBkb24ndCBhdXRvbWF0aWNhbGx5IHdyYXAuCi0gICAgcmV0
dXJuIHdoaXRlU3BhY2UgIT0gTk9XUkFQICYmIHdoaXRlU3BhY2UgIT0gUFJFOworICAgIHJldHVy
biB3aGl0ZVNwYWNlICE9IFdoaXRlU3BhY2U6Ok5vV3JhcCAmJiB3aGl0ZVNwYWNlICE9IFdoaXRl
U3BhY2U6OlByZTsKIH0KIAotaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OnByZXNlcnZlTmV3bGlu
ZShFV2hpdGVTcGFjZSB3aGl0ZVNwYWNlKQoraW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OnByZXNl
cnZlTmV3bGluZShXaGl0ZVNwYWNlIHdoaXRlU3BhY2UpCiB7CiAgICAgLy8gTm9ybWFsIGFuZCBu
b3dyYXAgZG8gbm90IHByZXNlcnZlIG5ld2xpbmVzLgotICAgIHJldHVybiB3aGl0ZVNwYWNlICE9
IE5PUk1BTCAmJiB3aGl0ZVNwYWNlICE9IE5PV1JBUDsKKyAgICByZXR1cm4gd2hpdGVTcGFjZSAh
PSBXaGl0ZVNwYWNlOjpOb3JtYWwgJiYgd2hpdGVTcGFjZSAhPSBXaGl0ZVNwYWNlOjpOb1dyYXA7
CiB9CiAKLWlubGluZSBib29sIFJlbmRlclN0eWxlOjpjb2xsYXBzZVdoaXRlU3BhY2UoRVdoaXRl
U3BhY2Ugd3MpCitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6Y29sbGFwc2VXaGl0ZVNwYWNlKFdo
aXRlU3BhY2Ugd3MpCiB7CiAgICAgLy8gUHJlIGFuZCBwcmV3cmFwIGRvIG5vdCBjb2xsYXBzZSB3
aGl0ZXNwYWNlLgotICAgIHJldHVybiB3cyAhPSBQUkUgJiYgd3MgIT0gUFJFX1dSQVA7CisgICAg
cmV0dXJuIHdzICE9IFdoaXRlU3BhY2U6OlByZSAmJiB3cyAhPSBXaGl0ZVNwYWNlOjpQcmVXcmFw
OwogfQogCiBpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6aXNDb2xsYXBzaWJsZVdoaXRlU3BhY2Uo
VUNoYXIgY2hhcmFjdGVyKSBjb25zdApAQCAtMjAzOCw3ICsyMDM4LDcgQEAgaW5saW5lIGJvb2wg
UmVuZGVyU3R5bGU6OmlzQ29sbGFwc2libGVXaAogCiBpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6
YnJlYWtPbmx5QWZ0ZXJXaGl0ZVNwYWNlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gd2hpdGVTcGFj
ZSgpID09IFBSRV9XUkFQIHx8IGxpbmVCcmVhaygpID09IExpbmVCcmVhazo6QWZ0ZXJXaGl0ZVNw
YWNlOworICAgIHJldHVybiB3aGl0ZVNwYWNlKCkgPT0gV2hpdGVTcGFjZTo6UHJlV3JhcCB8fCBs
aW5lQnJlYWsoKSA9PSBMaW5lQnJlYWs6OkFmdGVyV2hpdGVTcGFjZTsKIH0KIAogaW5saW5lIGJv
b2wgUmVuZGVyU3R5bGU6OmJyZWFrV29yZHMoKSBjb25zdApAQCAtMjA0OSw3ICsyMDQ5LDcgQEAg
aW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmJyZWFrV29yZHMoKSBjbwogaW5saW5lIGJvb2wgUmVu
ZGVyU3R5bGU6Omhhc0lubGluZUNvbHVtbkF4aXMoKSBjb25zdAogewogICAgIGF1dG8gYXhpcyA9
IGNvbHVtbkF4aXMoKTsKLSAgICByZXR1cm4gKGF4aXMgPT0gQXV0b0NvbHVtbkF4aXMgfHwgaXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSA9PSAoYXhpcyA9PSBIb3Jpem9udGFsQ29sdW1uQXhpcykp
ICYmICFoYXNMaW5lc0NsYW1wKCk7CisgICAgcmV0dXJuIChheGlzID09IENvbHVtbkF4aXM6OkF1
dG8gfHwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA9PSAoYXhpcyA9PSBDb2x1bW5BeGlzOjpI
b3Jpem9udGFsKSkgJiYgIWhhc0xpbmVzQ2xhbXAoKTsKIH0KIAogaW5saW5lIEltYWdlT3JpZW50
YXRpb25FbnVtIFJlbmRlclN0eWxlOjppbWFnZU9yaWVudGF0aW9uKCkgY29uc3QKQEAgLTIxNzAs
OSArMjE3MCw5IEBAIGlubGluZSBib29sIFJlbmRlclN0eWxlOjp3aWxsQ2hhbmdlQ3JlYXQKIAog
aW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmlzRGlzcGxheVJlZ2lvblR5cGUoKSBjb25zdAogewot
ICAgIHJldHVybiBkaXNwbGF5KCkgPT0gQkxPQ0sgfHwgZGlzcGxheSgpID09IElOTElORV9CTE9D
SwotICAgICAgICB8fCBkaXNwbGF5KCkgPT0gVEFCTEVfQ0VMTCB8fCBkaXNwbGF5KCkgPT0gVEFC
TEVfQ0FQVElPTgotICAgICAgICB8fCBkaXNwbGF5KCkgPT0gTElTVF9JVEVNOworICAgIHJldHVy
biBkaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OkJsb2NrIHx8IGRpc3BsYXkoKSA9PSBEaXNwbGF5
VHlwZTo6SW5saW5lQmxvY2sKKyAgICAgICAgfHwgZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpU
YWJsZUNlbGwgfHwgZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpUYWJsZUNhcHRpb24KKyAgICAg
ICAgfHwgZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpMaXN0SXRlbTsKIH0KIAogaW5saW5lIGJv
b2wgUmVuZGVyU3R5bGU6OnNldFdyaXRpbmdNb2RlKFdyaXRpbmdNb2RlIHYpCkBAIC0yMTkzLDI4
ICsyMTkzLDI4IEBAIGlubGluZSB2b2lkIFJlbmRlclN0eWxlOjpnZXRTaGFkb3dCbG9ja0QKICAg
ICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGdldFNoYWRvd1ZlcnRpY2FsRXh0
ZW50KHNoYWRvdywgbG9naWNhbFRvcCwgbG9naWNhbEJvdHRvbSkgOiBnZXRTaGFkb3dIb3Jpem9u
dGFsRXh0ZW50KHNoYWRvdywgbG9naWNhbFRvcCwgbG9naWNhbEJvdHRvbSk7CiB9CiAKLWlubGlu
ZSBib29sIFJlbmRlclN0eWxlOjppc0Rpc3BsYXlSZXBsYWNlZFR5cGUoRURpc3BsYXkgZGlzcGxh
eSkKK2lubGluZSBib29sIFJlbmRlclN0eWxlOjppc0Rpc3BsYXlSZXBsYWNlZFR5cGUoRGlzcGxh
eVR5cGUgZGlzcGxheSkKIHsKLSAgICByZXR1cm4gZGlzcGxheSA9PSBJTkxJTkVfQkxPQ0sgfHwg
ZGlzcGxheSA9PSBJTkxJTkVfQk9YIHx8IGRpc3BsYXkgPT0gSU5MSU5FX0ZMRVgKLSAgICAgICAg
fHwgZGlzcGxheSA9PSBJTkxJTkVfR1JJRCB8fCBkaXNwbGF5ID09IElOTElORV9UQUJMRTsKKyAg
ICByZXR1cm4gZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lQmxvY2sgfHwgZGlzcGxheSA9
PSBEaXNwbGF5VHlwZTo6SW5saW5lQm94IHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OklubGlu
ZUZsZXgKKyAgICAgICAgfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lR3JpZCB8fCBk
aXNwbGF5ID09IERpc3BsYXlUeXBlOjpJbmxpbmVUYWJsZTsKIH0KIAotaW5saW5lIGJvb2wgUmVu
ZGVyU3R5bGU6OmlzRGlzcGxheUlubGluZVR5cGUoRURpc3BsYXkgZGlzcGxheSkKK2lubGluZSBi
b29sIFJlbmRlclN0eWxlOjppc0Rpc3BsYXlJbmxpbmVUeXBlKERpc3BsYXlUeXBlIGRpc3BsYXkp
CiB7Ci0gICAgcmV0dXJuIGRpc3BsYXkgPT0gSU5MSU5FIHx8IGlzRGlzcGxheVJlcGxhY2VkVHlw
ZShkaXNwbGF5KTsKKyAgICByZXR1cm4gZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lIHx8
IGlzRGlzcGxheVJlcGxhY2VkVHlwZShkaXNwbGF5KTsKIH0KIAotaW5saW5lIGJvb2wgUmVuZGVy
U3R5bGU6OmlzRGlzcGxheUZsZXhpYmxlQm94KEVEaXNwbGF5IGRpc3BsYXkpCitpbmxpbmUgYm9v
bCBSZW5kZXJTdHlsZTo6aXNEaXNwbGF5RmxleGlibGVCb3goRGlzcGxheVR5cGUgZGlzcGxheSkK
IHsKLSAgICByZXR1cm4gZGlzcGxheSA9PSBGTEVYIHx8IGRpc3BsYXkgPT0gSU5MSU5FX0ZMRVg7
CisgICAgcmV0dXJuIGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OkZsZXggfHwgZGlzcGxheSA9PSBE
aXNwbGF5VHlwZTo6SW5saW5lRmxleDsKIH0KIAotaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6Omlz
RGlzcGxheUdyaWRCb3goRURpc3BsYXkgZGlzcGxheSkKK2lubGluZSBib29sIFJlbmRlclN0eWxl
Ojppc0Rpc3BsYXlHcmlkQm94KERpc3BsYXlUeXBlIGRpc3BsYXkpCiB7Ci0gICAgcmV0dXJuIGRp
c3BsYXkgPT0gR1JJRCB8fCBkaXNwbGF5ID09IElOTElORV9HUklEOworICAgIHJldHVybiBkaXNw
bGF5ID09IERpc3BsYXlUeXBlOjpHcmlkIHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OklubGlu
ZUdyaWQ7CiB9CiAKLWlubGluZSBib29sIFJlbmRlclN0eWxlOjppc0Rpc3BsYXlGbGV4aWJsZU9y
R3JpZEJveChFRGlzcGxheSBkaXNwbGF5KQoraW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmlzRGlz
cGxheUZsZXhpYmxlT3JHcmlkQm94KERpc3BsYXlUeXBlIGRpc3BsYXkpCiB7CiAgICAgcmV0dXJu
IGlzRGlzcGxheUZsZXhpYmxlQm94KGRpc3BsYXkpIHx8IGlzRGlzcGxheUdyaWRCb3goZGlzcGxh
eSk7CiB9CkBAIC0yMjQ2LDcgKzIyNDYsNyBAQCBpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6c2V0
Qm94UmVmbGVjdChSCiAKIGlubGluZSBib29sIHBzZXVkb0VsZW1lbnRSZW5kZXJlcklzTmVlZGVk
KGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKLSAgICByZXR1cm4gc3R5bGUgJiYgc3R5bGUt
PmRpc3BsYXkoKSAhPSBOT05FICYmIHN0eWxlLT5jb250ZW50RGF0YSgpOworICAgIHJldHVybiBz
dHlsZSAmJiBzdHlsZS0+ZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpOb25lICYmIHN0eWxlLT5j
b250ZW50RGF0YSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50
cy5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDE3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgVmlzaWJpbGl0eSB2aXNpYmlsaXR5KQoreworICAgIHN3aXRjaCAodmlzaWJp
bGl0eSkgeworICAgIGNhc2UgVmlzaWJpbGl0eTo6VmlzaWJsZTogdHMgPDwgInZpc2libGUiOyBi
cmVhazsKKyAgICBjYXNlIFZpc2liaWxpdHk6OkhpZGRlbjogdHMgPDwgImhpZGRlbiI7IGJyZWFr
OworICAgIGNhc2UgVmlzaWJpbGl0eTo6Q29sbGFwc2U6IHRzIDw8ICJjb2xsYXBzZSI7IGJyZWFr
OworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHM7Cit9CisKIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIEltYWdlUmVuZGVyaW5nIGltYWdlUmVuZGVyaW5nKQogewogICAg
IHN3aXRjaCAoaW1hZ2VSZW5kZXJpbmcpIHsKQEAgLTExMSw3ICsxMjIsNyBAQCBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBFCiAKIGJvb2wgYWx3YXlzUGFnZUJyZWFrKEJy
ZWFrQmV0d2VlbiBiZXR3ZWVuKQogewotICAgIHJldHVybiBiZXR3ZWVuID49IFBhZ2VCcmVha0Jl
dHdlZW47CisgICAgcmV0dXJuIGJldHdlZW4gPj0gQnJlYWtCZXR3ZWVuOjpQYWdlOwogfQogCiBj
b25zdCBmbG9hdCBkZWZhdWx0TWl0ZXJMaW1pdCA9IDQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAkocmV2aXNp
b24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
Q29uc3RhbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDMwICs3NywzMiBAQCBlbnVtIGNsYXNz
IFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5zaXRpCiB9OwogCiAvLyBTdGF0aWMgcHNldWRvIHN0
eWxlcy4gRHluYW1pYyBvbmVzIGFyZSBwcm9kdWNlZCBvbiB0aGUgZmx5LgotZW51bSBQc2V1ZG9J
ZCA6IHVuc2lnbmVkIGNoYXIgewotICAgIC8vIFRoZSBvcmRlciBtdXN0IGJlIE5PUCBJRCwgcHVi
bGljIElEcywgYW5kIHRoZW4gaW50ZXJuYWwgSURzLgotICAgIE5PUFNFVURPLAotICAgIEZJUlNU
X0xJTkUsCi0gICAgRklSU1RfTEVUVEVSLAotICAgIE1BUktFUiwKLSAgICBCRUZPUkUsCi0gICAg
QUZURVIsCi0gICAgU0VMRUNUSU9OLAotICAgIFNDUk9MTEJBUiwKLQotICAgIC8vIEludGVybmFs
IElEcyBmb2xsb3c6Ci0gICAgU0NST0xMQkFSX1RIVU1CLAotICAgIFNDUk9MTEJBUl9CVVRUT04s
Ci0gICAgU0NST0xMQkFSX1RSQUNLLAotICAgIFNDUk9MTEJBUl9UUkFDS19QSUVDRSwKLSAgICBT
Q1JPTExCQVJfQ09STkVSLAotICAgIFJFU0laRVIsCi0KLSAgICBBRlRFUl9MQVNUX0lOVEVSTkFM
X1BTRVVET0lELAotCi0gICAgRklSU1RfUFVCTElDX1BTRVVET0lEID0gRklSU1RfTElORSwKLSAg
ICBGSVJTVF9JTlRFUk5BTF9QU0VVRE9JRCA9IFNDUk9MTEJBUl9USFVNQiwKLSAgICBQVUJMSUNf
UFNFVURPSURfTUFTSyA9ICgoMSA8PCBGSVJTVF9JTlRFUk5BTF9QU0VVRE9JRCkgLSAxKSAmIH4o
KDEgPDwgRklSU1RfUFVCTElDX1BTRVVET0lEKSAtIDEpCitlbnVtIGNsYXNzIFBzZXVkb0lkIDog
dW5zaWduZWQgY2hhciB7CisgICAgLy8gVGhlIG9yZGVyIG11c3QgYmUgTm9uZSwgcHVibGljIElE
cywgYW5kIHRoZW4gaW50ZXJuYWwgSURzLgorICAgIE5vbmUsCisKKyAgICAvLyBQdWJsaWM6Cisg
ICAgRmlyc3RMaW5lLAorICAgIEZpcnN0TGV0dGVyLAorICAgIE1hcmtlciwKKyAgICBCZWZvcmUs
CisgICAgQWZ0ZXIsCisgICAgU2VsZWN0aW9uLAorICAgIFNjcm9sbGJhciwKKworICAgIC8vIElu
dGVybmFsOgorICAgIFNjcm9sbGJhclRodW1iLAorICAgIFNjcm9sbGJhckJ1dHRvbiwKKyAgICBT
Y3JvbGxiYXJUcmFjaywKKyAgICBTY3JvbGxiYXJUcmFja1BpZWNlLAorICAgIFNjcm9sbGJhckNv
cm5lciwKKyAgICBSZXNpemVyLAorCisgICAgQWZ0ZXJMYXN0SW50ZXJuYWxQc2V1ZG9JZCwKKwor
ICAgIEZpcnN0UHVibGljUHNldWRvSWQgPSBGaXJzdExpbmUsCisgICAgRmlyc3RJbnRlcm5hbFBz
ZXVkb0lkID0gU2Nyb2xsYmFyVGh1bWIsCisgICAgUHVibGljUHNldWRvSWRNYXNrID0gKCgxIDw8
IEZpcnN0SW50ZXJuYWxQc2V1ZG9JZCkgLSAxKSAmIH4oKDEgPDwgRmlyc3RQdWJsaWNQc2V1ZG9J
ZCkgLSAxKQogfTsKIAogY2xhc3MgUHNldWRvSWRTZXQgewpAQCAtMTI0LDE0ICsxMjYsMTQgQEAg
cHVibGljOgogCiAgICAgYm9vbCBoYXMoUHNldWRvSWQgcHNldWRvSWQpIGNvbnN0CiAgICAgewot
ICAgICAgICBBU1NFUlQoKHNpemVvZihtX2RhdGEpICogOCkgPiBwc2V1ZG9JZCk7Ci0gICAgICAg
IHJldHVybiBtX2RhdGEgJiAoMVUgPDwgcHNldWRvSWQpOworICAgICAgICBBU1NFUlQoKHNpemVv
ZihtX2RhdGEpICogOCkgPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHNldWRvSWQpKTsKKyAgICAg
ICAgcmV0dXJuIG1fZGF0YSAmICgxVSA8PCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHNldWRvSWQp
KTsKICAgICB9CiAKICAgICB2b2lkIGFkZChQc2V1ZG9JZCBwc2V1ZG9JZCkKICAgICB7Ci0gICAg
ICAgIEFTU0VSVCgoc2l6ZW9mKG1fZGF0YSkgKiA4KSA+IHBzZXVkb0lkKTsKLSAgICAgICAgbV9k
YXRhIHw9ICgxVSA8PCBwc2V1ZG9JZCk7CisgICAgICAgIEFTU0VSVCgoc2l6ZW9mKG1fZGF0YSkg
KiA4KSA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwc2V1ZG9JZCkpOworICAgICAgICBtX2RhdGEg
fD0gKDFVIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwc2V1ZG9JZCkpOwogICAgIH0KIAogICAg
IHZvaWQgbWVyZ2UoUHNldWRvSWRTZXQgc291cmNlKQpAQCAtNTQzLDE0ICs1NDUsMTQgQEAgZW51
bSBjbGFzcyBSZXNpemUgewogfTsKIAogLy8gVGhlIG9yZGVyIG9mIHRoaXMgZW51bSBtdXN0IG1h
dGNoIHRoZSBvcmRlciBvZiB0aGUgbGlzdCBzdHlsZSB0eXBlcyBpbiBDU1NWYWx1ZUtleXdvcmRz
LmluLgotZW51bSBFTGlzdFN0eWxlVHlwZSB7CitlbnVtIGNsYXNzIExpc3RTdHlsZVR5cGUgewog
ICAgIERpc2MsCiAgICAgQ2lyY2xlLAogICAgIFNxdWFyZSwKLSAgICBEZWNpbWFsTGlzdFN0eWxl
LAorICAgIERlY2ltYWwsCiAgICAgRGVjaW1hbExlYWRpbmdaZXJvLAogICAgIEFyYWJpY0luZGlj
LAotICAgIEJpbmFyeUxpc3RTdHlsZSwKKyAgICBCaW5hcnksCiAgICAgQmVuZ2FsaSwKICAgICBD
YW1ib2RpYW4sCiAgICAgS2htZXIsCkBAIC02MjQsNyArNjI2LDcgQEAgZW51bSBFTGlzdFN0eWxl
VHlwZSB7CiAgICAgS2F0YWthbmEsCiAgICAgSGlyYWdhbmFJcm9oYSwKICAgICBLYXRha2FuYUly
b2hhLAotICAgIE5vbmVMaXN0U3R5bGUKKyAgICBOb25lCiB9OwogCiBlbnVtIGNsYXNzIFF1b3Rl
VHlwZSB7CkBAIC02MzQsNTAgKzYzNiw1MCBAQCBlbnVtIGNsYXNzIFF1b3RlVHlwZSB7CiAgICAg
Tm9DbG9zZVF1b3RlCiB9OwogCi1lbnVtIEVCb3JkZXJGaXQgewotICAgIEJvcmRlckZpdEJvcmRl
ciwKLSAgICBCb3JkZXJGaXRMaW5lcwotfTsKLQotZW51bSBFQW5pbWF0aW9uRmlsbE1vZGUgewot
ICAgIEFuaW1hdGlvbkZpbGxNb2RlTm9uZSwKLSAgICBBbmltYXRpb25GaWxsTW9kZUZvcndhcmRz
LAotICAgIEFuaW1hdGlvbkZpbGxNb2RlQmFja3dhcmRzLAotICAgIEFuaW1hdGlvbkZpbGxNb2Rl
Qm90aAotfTsKLQotZW51bSBFQW5pbVBsYXlTdGF0ZSB7Ci0gICAgQW5pbVBsYXlTdGF0ZVBsYXlp
bmcgPSAweDAsCi0gICAgQW5pbVBsYXlTdGF0ZVBhdXNlZCA9IDB4MQotfTsKLQotZW51bSBFV2hp
dGVTcGFjZSB7Ci0gICAgTk9STUFMLAotICAgIFBSRSwKLSAgICBQUkVfV1JBUCwKLSAgICBQUkVf
TElORSwKLSAgICBOT1dSQVAsCi0gICAgS0hUTUxfTk9XUkFQCitlbnVtIGNsYXNzIEJvcmRlckZp
dCB7CisgICAgQm9yZGVyLAorICAgIExpbmVzCit9OworCitlbnVtIGNsYXNzIEFuaW1hdGlvbkZp
bGxNb2RlIHsKKyAgICBOb25lLAorICAgIEZvcndhcmRzLAorICAgIEJhY2t3YXJkcywKKyAgICBC
b3RoCit9OworCitlbnVtIGNsYXNzIEFuaW1hdGlvblBsYXlTdGF0ZSB7CisgICAgUGxheWluZyA9
IDB4MCwKKyAgICBQYXVzZWQgPSAweDEKK307CisKK2VudW0gY2xhc3MgV2hpdGVTcGFjZSB7Cisg
ICAgTm9ybWFsLAorICAgIFByZSwKKyAgICBQcmVXcmFwLAorICAgIFByZUxpbmUsCisgICAgTm9X
cmFwLAorICAgIEtIVE1MTm9XcmFwCiB9OwogCiAvLyBUaGUgb3JkZXIgb2YgdGhpcyBlbnVtIG11
c3QgbWF0Y2ggdGhlIG9yZGVyIG9mIHRoZSB0ZXh0IGFsaWduIHZhbHVlcyBpbiBDU1NWYWx1ZUtl
eXdvcmRzLmluLgotZW51bSBFVGV4dEFsaWduIHsKLSAgICBMRUZULAotICAgIFJJR0hULAotICAg
IENFTlRFUiwKLSAgICBKVVNUSUZZLAotICAgIFdFQktJVF9MRUZULAotICAgIFdFQktJVF9SSUdI
VCwKLSAgICBXRUJLSVRfQ0VOVEVSLAotICAgIFRBU1RBUlQsCi0gICAgVEFFTkQsCi19OwotCi1l
bnVtIEVUZXh0VHJhbnNmb3JtIHsKLSAgICBDQVBJVEFMSVpFLAotICAgIFVQUEVSQ0FTRSwKLSAg
ICBMT1dFUkNBU0UsCi0gICAgVFROT05FCitlbnVtIGNsYXNzIFRleHRBbGlnbk1vZGUgeworICAg
IExlZnQsCisgICAgUmlnaHQsCisgICAgQ2VudGVyLAorICAgIEp1c3RpZnksCisgICAgV2ViS2l0
TGVmdCwKKyAgICBXZWJLaXRSaWdodCwKKyAgICBXZWJLaXRDZW50ZXIsCisgICAgU3RhcnQsCisg
ICAgRW5kLAorfTsKKworZW51bSBjbGFzcyBUZXh0VHJhbnNmb3JtIHsKKyAgICBDYXBpdGFsaXpl
LAorICAgIFVwcGVyY2FzZSwKKyAgICBMb3dlcmNhc2UsCisgICAgTm9uZQogfTsKIAogI2lmIEVO
QUJMRShMRVRURVJQUkVTUykKQEAgLTY4NiwyMTYgKzY4OCwyMTggQEAgc3RhdGljIGNvbnN0IHNp
emVfdCBUZXh0RGVjb3JhdGlvbkJpdHMgPQogc3RhdGljIGNvbnN0IHNpemVfdCBUZXh0RGVjb3Jh
dGlvbkJpdHMgPSA0OwogI2VuZGlmCiBlbnVtIFRleHREZWNvcmF0aW9uIHsKLSAgICBUZXh0RGVj
b3JhdGlvbk5vbmUgPSAweDAsCi0gICAgVGV4dERlY29yYXRpb25VbmRlcmxpbmUgPSAweDEsCi0g
ICAgVGV4dERlY29yYXRpb25PdmVybGluZSA9IDB4MiwKLSAgICBUZXh0RGVjb3JhdGlvbkxpbmVU
aHJvdWdoID0gMHg0LAotICAgIFRleHREZWNvcmF0aW9uQmxpbmsgPSAweDgsCisgICAgVGV4dERl
Y29yYXRpb25Ob25lICAgICAgICAgID0gMCwKKyAgICBUZXh0RGVjb3JhdGlvblVuZGVybGluZSAg
ICAgPSAxIDw8IDAsCisgICAgVGV4dERlY29yYXRpb25PdmVybGluZSAgICAgID0gMSA8PCAxLAor
ICAgIFRleHREZWNvcmF0aW9uTGluZVRocm91Z2ggICA9IDEgPDwgMiwKKyAgICBUZXh0RGVjb3Jh
dGlvbkJsaW5rICAgICAgICAgPSAxIDw8IDMsCiAjaWYgRU5BQkxFKExFVFRFUlBSRVNTKQotICAg
IFRleHREZWNvcmF0aW9uTGV0dGVycHJlc3MgPSAweDEwLAorICAgIFRleHREZWNvcmF0aW9uTGV0
dGVycHJlc3MgICA9IDEgPDwgNCwKICNlbmRpZgogfTsKIGlubGluZSBUZXh0RGVjb3JhdGlvbiBv
cGVyYXRvcnwoVGV4dERlY29yYXRpb24gYSwgVGV4dERlY29yYXRpb24gYikgeyByZXR1cm4gVGV4
dERlY29yYXRpb24oaW50KGEpIHwgaW50KGIpKTsgfQogaW5saW5lIFRleHREZWNvcmF0aW9uJiBv
cGVyYXRvcnw9KFRleHREZWNvcmF0aW9uJiBhLCBUZXh0RGVjb3JhdGlvbiBiKSB7IHJldHVybiBh
ID0gYSB8IGI7IH0KIAotZW51bSBUZXh0RGVjb3JhdGlvblN0eWxlIHsKLSAgICBUZXh0RGVjb3Jh
dGlvblN0eWxlU29saWQsCi0gICAgVGV4dERlY29yYXRpb25TdHlsZURvdWJsZSwKLSAgICBUZXh0
RGVjb3JhdGlvblN0eWxlRG90dGVkLAotICAgIFRleHREZWNvcmF0aW9uU3R5bGVEYXNoZWQsCi0g
ICAgVGV4dERlY29yYXRpb25TdHlsZVdhdnkKK2VudW0gY2xhc3MgVGV4dERlY29yYXRpb25TdHls
ZSB7CisgICAgU29saWQsCisgICAgRG91YmxlLAorICAgIERvdHRlZCwKKyAgICBEYXNoZWQsCisg
ICAgV2F2eQogfTsKIAogI2lmIEVOQUJMRShDU1MzX1RFWFQpCi1lbnVtIFRleHRBbGlnbkxhc3Qg
ewotICAgIFRleHRBbGlnbkxhc3RBdXRvLAotICAgIFRleHRBbGlnbkxhc3RTdGFydCwKLSAgICBU
ZXh0QWxpZ25MYXN0RW5kLAotICAgIFRleHRBbGlnbkxhc3RMZWZ0LAotICAgIFRleHRBbGlnbkxh
c3RSaWdodCwKLSAgICBUZXh0QWxpZ25MYXN0Q2VudGVyLAotICAgIFRleHRBbGlnbkxhc3RKdXN0
aWZ5CitlbnVtIGNsYXNzIFRleHRBbGlnbkxhc3QgeworICAgIEF1dG8sCisgICAgU3RhcnQsCisg
ICAgRW5kLAorICAgIExlZnQsCisgICAgUmlnaHQsCisgICAgQ2VudGVyLAorICAgIEp1c3RpZnkK
IH07CiAKLWVudW0gVGV4dEp1c3RpZnkgewotICAgIFRleHRKdXN0aWZ5QXV0bywKLSAgICBUZXh0
SnVzdGlmeU5vbmUsCi0gICAgVGV4dEp1c3RpZnlJbnRlcldvcmQsCi0gICAgVGV4dEp1c3RpZnlE
aXN0cmlidXRlCitlbnVtIGNsYXNzIFRleHRKdXN0aWZ5IHsKKyAgICBBdXRvLAorICAgIE5vbmUs
CisgICAgSW50ZXJXb3JkLAorICAgIERpc3RyaWJ1dGUKIH07CiAjZW5kaWYgLy8gQ1NTM19URVhU
CiAKIGVudW0gVGV4dERlY29yYXRpb25Ta2lwSXRlbXMgewotICAgIFRleHREZWNvcmF0aW9uU2tp
cE5vbmUgPSAwLAotICAgIFRleHREZWNvcmF0aW9uU2tpcEluayA9IDEgPDwgMCwKLSAgICBUZXh0
RGVjb3JhdGlvblNraXBPYmplY3RzID0gMSA8PCAxLAotICAgIFRleHREZWNvcmF0aW9uU2tpcEF1
dG8gPSAxIDw8IDIKKyAgICBUZXh0RGVjb3JhdGlvblNraXBOb25lICAgICAgPSAwLAorICAgIFRl
eHREZWNvcmF0aW9uU2tpcEluayAgICAgICA9IDEgPDwgMCwKKyAgICBUZXh0RGVjb3JhdGlvblNr
aXBPYmplY3RzICAgPSAxIDw8IDEsCisgICAgVGV4dERlY29yYXRpb25Ta2lwQXV0byAgICAgID0g
MSA8PCAyCiB9OwogdHlwZWRlZiB1bnNpZ25lZCBUZXh0RGVjb3JhdGlvblNraXA7CiAKIGVudW0g
VGV4dFVuZGVybGluZVBvc2l0aW9uIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHN1cHBvcnQg
Zm9yICd1bmRlciBsZWZ0JyBhbmQgJ3VuZGVyIHJpZ2h0JyB2YWx1ZXMuCi0gICAgVGV4dFVuZGVy
bGluZVBvc2l0aW9uQXV0byA9IDB4MSwKLSAgICBUZXh0VW5kZXJsaW5lUG9zaXRpb25BbHBoYWJl
dGljID0gMHgyLAotICAgIFRleHRVbmRlcmxpbmVQb3NpdGlvblVuZGVyID0gMHg0Ci19OwotCi1l
bnVtIFRleHRab29tIHsKLSAgICBUZXh0Wm9vbU5vcm1hbCwKLSAgICBUZXh0Wm9vbVJlc2V0Ci19
OwotCi1lbnVtIEJyZWFrQmV0d2VlbiB7Ci0gICAgQXV0b0JyZWFrQmV0d2VlbiwKLSAgICBBdm9p
ZEJyZWFrQmV0d2VlbiwKLSAgICBBdm9pZENvbHVtbkJyZWFrQmV0d2VlbiwKLSAgICBBdm9pZFBh
Z2VCcmVha0JldHdlZW4sCi0gICAgQ29sdW1uQnJlYWtCZXR3ZWVuLAotICAgIFBhZ2VCcmVha0Jl
dHdlZW4sCi0gICAgTGVmdFBhZ2VCcmVha0JldHdlZW4sCi0gICAgUmlnaHRQYWdlQnJlYWtCZXR3
ZWVuLAotICAgIFJlY3RvUGFnZUJyZWFrQmV0d2VlbiwKLSAgICBWZXJzb1BhZ2VCcmVha0JldHdl
ZW4KKyAgICBUZXh0VW5kZXJsaW5lUG9zaXRpb25BdXRvICAgICAgID0gMSA8PCAwLAorICAgIFRl
eHRVbmRlcmxpbmVQb3NpdGlvbkFscGhhYmV0aWMgPSAxIDw8IDEsCisgICAgVGV4dFVuZGVybGlu
ZVBvc2l0aW9uVW5kZXIgICAgICA9IDEgPDwgMgorfTsKKworZW51bSBjbGFzcyBUZXh0Wm9vbSB7
CisgICAgTm9ybWFsLAorICAgIFJlc2V0Cit9OworCitlbnVtIGNsYXNzIEJyZWFrQmV0d2VlbiB7
CisgICAgQXV0bywKKyAgICBBdm9pZCwKKyAgICBBdm9pZENvbHVtbiwKKyAgICBBdm9pZFBhZ2Us
CisgICAgQ29sdW1uLAorICAgIFBhZ2UsCisgICAgTGVmdFBhZ2UsCisgICAgUmlnaHRQYWdlLAor
ICAgIFJlY3RvUGFnZSwKKyAgICBWZXJzb1BhZ2UKIH07CiBib29sIGFsd2F5c1BhZ2VCcmVhayhC
cmVha0JldHdlZW4pOwogICAgIAotZW51bSBCcmVha0luc2lkZSB7Ci0gICAgQXV0b0JyZWFrSW5z
aWRlLAotICAgIEF2b2lkQnJlYWtJbnNpZGUsCi0gICAgQXZvaWRDb2x1bW5CcmVha0luc2lkZSwK
LSAgICBBdm9pZFBhZ2VCcmVha0luc2lkZQorZW51bSBjbGFzcyBCcmVha0luc2lkZSB7CisgICAg
QXV0bywKKyAgICBBdm9pZCwKKyAgICBBdm9pZENvbHVtbiwKKyAgICBBdm9pZFBhZ2UKIH07CiAK
IGVudW0gSGFuZ2luZ1B1bmN0dWF0aW9uIHsKLSAgICBOb0hhbmdpbmdQdW5jdHVhdGlvbiA9IDAs
Ci0gICAgRmlyc3RIYW5naW5nUHVuY3R1YXRpb24gPSAxIDw8IDAsCi0gICAgTGFzdEhhbmdpbmdQ
dW5jdHVhdGlvbiA9IDEgPDwgMSwKLSAgICBBbGxvd0VuZEhhbmdpbmdQdW5jdHVhdGlvbiA9IDEg
PDwgMiwKLSAgICBGb3JjZUVuZEhhbmdpbmdQdW5jdHVhdGlvbiA9IDEgPDwgMworICAgIE5vSGFu
Z2luZ1B1bmN0dWF0aW9uICAgICAgICA9IDAsCisgICAgRmlyc3RIYW5naW5nUHVuY3R1YXRpb24g
ICAgID0gMSA8PCAwLAorICAgIExhc3RIYW5naW5nUHVuY3R1YXRpb24gICAgICA9IDEgPDwgMSwK
KyAgICBBbGxvd0VuZEhhbmdpbmdQdW5jdHVhdGlvbiAgPSAxIDw8IDIsCisgICAgRm9yY2VFbmRI
YW5naW5nUHVuY3R1YXRpb24gID0gMSA8PCAzCiB9OwogaW5saW5lIEhhbmdpbmdQdW5jdHVhdGlv
biBvcGVyYXRvcnwoSGFuZ2luZ1B1bmN0dWF0aW9uIGEsIEhhbmdpbmdQdW5jdHVhdGlvbiBiKSB7
IHJldHVybiBIYW5naW5nUHVuY3R1YXRpb24oaW50KGEpIHwgaW50KGIpKTsgfQogaW5saW5lIEhh
bmdpbmdQdW5jdHVhdGlvbiYgb3BlcmF0b3J8PShIYW5naW5nUHVuY3R1YXRpb24mIGEsIEhhbmdp
bmdQdW5jdHVhdGlvbiBiKSB7IHJldHVybiBhID0gYSB8IGI7IH0KIAotZW51bSBFRW1wdHlDZWxs
IHsKLSAgICBTSE9XLAotICAgIEhJREUKK2VudW0gY2xhc3MgRW1wdHlDZWxsIHsKKyAgICBTaG93
LAorICAgIEhpZGUKIH07CiAKLWVudW0gRUNhcHRpb25TaWRlIHsKLSAgICBDQVBUT1AsCi0gICAg
Q0FQQk9UVE9NLAotICAgIENBUExFRlQsCi0gICAgQ0FQUklHSFQKK2VudW0gY2xhc3MgQ2FwdGlv
blNpZGUgeworICAgIFRvcCwKKyAgICBCb3R0b20sCisgICAgTGVmdCwKKyAgICBSaWdodAogfTsK
IAotZW51bSBFTGlzdFN0eWxlUG9zaXRpb24gewotICAgIE9VVFNJREUsCi0gICAgSU5TSURFCitl
bnVtIGNsYXNzIExpc3RTdHlsZVBvc2l0aW9uIHsKKyAgICBPdXRzaWRlLAorICAgIEluc2lkZQog
fTsKIAotZW51bSBFVmlzaWJpbGl0eSB7Ci0gICAgVklTSUJMRSwKLSAgICBISURERU4sCi0gICAg
Q09MTEFQU0UKK2VudW0gY2xhc3MgVmlzaWJpbGl0eSB7CisgICAgVmlzaWJsZSwKKyAgICBIaWRk
ZW4sCisgICAgQ29sbGFwc2UKIH07CiAKLWVudW0gRUN1cnNvciB7CitXVEY6OlRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgVmlzaWJpbGl0eSk7CisKK2VudW0gY2xhc3Mg
Q3Vyc29yVHlwZSB7CiAgICAgLy8gVGhlIGZvbGxvd2luZyBtdXN0IG1hdGNoIHRoZSBvcmRlciBp
biBDU1NWYWx1ZUtleXdvcmRzLmluLgotICAgIEN1cnNvckF1dG8sCi0gICAgQ3Vyc29yRGVmYXVs
dCwKLSAgICAvLyBDdXJzb3JOb25lCi0gICAgQ3Vyc29yQ29udGV4dE1lbnUsCi0gICAgQ3Vyc29y
SGVscCwKLSAgICBDdXJzb3JQb2ludGVyLAotICAgIEN1cnNvclByb2dyZXNzLAotICAgIEN1cnNv
cldhaXQsCi0gICAgQ3Vyc29yQ2VsbCwKLSAgICBDdXJzb3JDcm9zc2hhaXIsCi0gICAgQ3Vyc29y
VGV4dCwKLSAgICBDdXJzb3JWZXJ0aWNhbFRleHQsCi0gICAgQ3Vyc29yQWxpYXMsCi0gICAgLy8g
Q3Vyc29yQ29weQotICAgIEN1cnNvck1vdmUsCi0gICAgQ3Vyc29yTm9Ecm9wLAotICAgIEN1cnNv
ck5vdEFsbG93ZWQsCi0gICAgQ3Vyc29yR3JhYiwKLSAgICBDdXJzb3JHcmFiYmluZywKLSAgICBD
dXJzb3JFUmVzaXplLAotICAgIEN1cnNvck5SZXNpemUsCi0gICAgQ3Vyc29yTmVSZXNpemUsCi0g
ICAgQ3Vyc29yTndSZXNpemUsCi0gICAgQ3Vyc29yU1Jlc2l6ZSwKLSAgICBDdXJzb3JTZVJlc2l6
ZSwKLSAgICBDdXJzb3JTd1Jlc2l6ZSwKLSAgICBDdXJzb3JXUmVzaXplLAotICAgIEN1cnNvckV3
UmVzaXplLAotICAgIEN1cnNvck5zUmVzaXplLAotICAgIEN1cnNvck5lc3dSZXNpemUsCi0gICAg
Q3Vyc29yTndzZVJlc2l6ZSwKLSAgICBDdXJzb3JDb2xSZXNpemUsCi0gICAgQ3Vyc29yUm93UmVz
aXplLAotICAgIEN1cnNvckFsbFNjcm9sbCwKLSAgICBDdXJzb3Jab29tSW4sCi0gICAgQ3Vyc29y
Wm9vbU91dCwKKyAgICBBdXRvLAorICAgIERlZmF1bHQsCisgICAgLy8gTm9uZQorICAgIENvbnRl
eHRNZW51LAorICAgIEhlbHAsCisgICAgUG9pbnRlciwKKyAgICBQcm9ncmVzcywKKyAgICBXYWl0
LAorICAgIENlbGwsCisgICAgQ3Jvc3NoYWlyLAorICAgIFRleHQsCisgICAgVmVydGljYWxUZXh0
LAorICAgIEFsaWFzLAorICAgIC8vIENvcHkKKyAgICBNb3ZlLAorICAgIE5vRHJvcCwKKyAgICBO
b3RBbGxvd2VkLAorICAgIEdyYWIsCisgICAgR3JhYmJpbmcsCisgICAgRVJlc2l6ZSwKKyAgICBO
UmVzaXplLAorICAgIE5FUmVzaXplLAorICAgIE5XUmVzaXplLAorICAgIFNSZXNpemUsCisgICAg
U0VSZXNpemUsCisgICAgU1dSZXNpemUsCisgICAgV1Jlc2l6ZSwKKyAgICBFV1Jlc2l6ZSwKKyAg
ICBOU1Jlc2l6ZSwKKyAgICBORVNXUmVzaXplLAorICAgIE5XU0VSZXNpemUsCisgICAgQ29sdW1u
UmVzaXplLAorICAgIFJvd1Jlc2l6ZSwKKyAgICBBbGxTY3JvbGwsCisgICAgWm9vbUluLAorICAg
IFpvb21PdXQsCiAKICAgICAvLyBUaGUgZm9sbG93aW5nIGFyZSBoYW5kbGVkIGFzIGV4Y2VwdGlv
bnMgc28gZG9uJ3QgbmVlZCB0byBtYXRjaC4KLSAgICBDdXJzb3JDb3B5LAotICAgIEN1cnNvck5v
bmUKKyAgICBDb3B5LAorICAgIE5vbmUKIH07CiAKICNpZiBFTkFCTEUoQ1VSU09SX1ZJU0lCSUxJ
VFkpCi1lbnVtIEN1cnNvclZpc2liaWxpdHkgewotICAgIEN1cnNvclZpc2liaWxpdHlBdXRvLAot
ICAgIEN1cnNvclZpc2liaWxpdHlBdXRvSGlkZSwKK2VudW0gY2xhc3MgQ3Vyc29yVmlzaWJpbGl0
eSB7CisgICAgQXV0bywKKyAgICBBdXRvSGlkZSwKIH07CiAjZW5kaWYKIAogLy8gVGhlIG9yZGVy
IG9mIHRoaXMgZW51bSBtdXN0IG1hdGNoIHRoZSBvcmRlciBvZiB0aGUgZGlzcGxheSB2YWx1ZXMg
aW4gQ1NTVmFsdWVLZXl3b3Jkcy5pbi4KLWVudW0gRURpc3BsYXkgewotICAgIElOTElORSwKLSAg
ICBCTE9DSywKLSAgICBMSVNUX0lURU0sCi0gICAgQ09NUEFDVCwKLSAgICBJTkxJTkVfQkxPQ0ss
Ci0gICAgVEFCTEUsCi0gICAgSU5MSU5FX1RBQkxFLAotICAgIFRBQkxFX1JPV19HUk9VUCwKLSAg
ICBUQUJMRV9IRUFERVJfR1JPVVAsCi0gICAgVEFCTEVfRk9PVEVSX0dST1VQLAotICAgIFRBQkxF
X1JPVywKLSAgICBUQUJMRV9DT0xVTU5fR1JPVVAsCi0gICAgVEFCTEVfQ09MVU1OLAotICAgIFRB
QkxFX0NFTEwsCi0gICAgVEFCTEVfQ0FQVElPTiwKLSAgICBCT1gsCi0gICAgSU5MSU5FX0JPWCwK
LSAgICBGTEVYLAotICAgIFdFQktJVF9GTEVYLAotICAgIElOTElORV9GTEVYLAotICAgIFdFQktJ
VF9JTkxJTkVfRkxFWCwKLSAgICBDT05URU5UUywKLSAgICBHUklELAotICAgIElOTElORV9HUklE
LAotICAgIE5PTkUKLX07Ci0KLWVudW0gRUluc2lkZUxpbmsgewotICAgIE5vdEluc2lkZUxpbmss
Ci0gICAgSW5zaWRlVW52aXNpdGVkTGluaywKLSAgICBJbnNpZGVWaXNpdGVkTGluaworZW51bSBj
bGFzcyBEaXNwbGF5VHlwZSB7CisgICAgSW5saW5lLAorICAgIEJsb2NrLAorICAgIExpc3RJdGVt
LAorICAgIENvbXBhY3QsCisgICAgSW5saW5lQmxvY2ssCisgICAgVGFibGUsCisgICAgSW5saW5l
VGFibGUsCisgICAgVGFibGVSb3dHcm91cCwKKyAgICBUYWJsZUhlYWRlckdyb3VwLAorICAgIFRh
YmxlRm9vdGVyR3JvdXAsCisgICAgVGFibGVSb3csCisgICAgVGFibGVDb2x1bW5Hcm91cCwKKyAg
ICBUYWJsZUNvbHVtbiwKKyAgICBUYWJsZUNlbGwsCisgICAgVGFibGVDYXB0aW9uLAorICAgIEJv
eCwKKyAgICBJbmxpbmVCb3gsCisgICAgRmxleCwKKyAgICBXZWJLaXRGbGV4LAorICAgIElubGlu
ZUZsZXgsCisgICAgV2ViS2l0SW5saW5lRmxleCwKKyAgICBDb250ZW50cywKKyAgICBHcmlkLAor
ICAgIElubGluZUdyaWQsCisgICAgTm9uZQorfTsKKworZW51bSBjbGFzcyBJbnNpZGVMaW5rIHsK
KyAgICBOb3RJbnNpZGUsCisgICAgSW5zaWRlVW52aXNpdGVkLAorICAgIEluc2lkZVZpc2l0ZWQK
IH07CiAgICAgCi1lbnVtIEVQb2ludGVyRXZlbnRzIHsKLSAgICBQRV9OT05FLAotICAgIFBFX0FV
VE8sCi0gICAgUEVfU1RST0tFLAotICAgIFBFX0ZJTEwsCi0gICAgUEVfUEFJTlRFRCwKLSAgICBQ
RV9WSVNJQkxFLAotICAgIFBFX1ZJU0lCTEVfU1RST0tFLAotICAgIFBFX1ZJU0lCTEVfRklMTCwK
LSAgICBQRV9WSVNJQkxFX1BBSU5URUQsCi0gICAgUEVfQUxMCitlbnVtIGNsYXNzIFBvaW50ZXJF
dmVudHMgeworICAgIE5vbmUsCisgICAgQXV0bywKKyAgICBTdHJva2UsCisgICAgRmlsbCwKKyAg
ICBQYWludGVkLAorICAgIFZpc2libGUsCisgICAgVmlzaWJsZVN0cm9rZSwKKyAgICBWaXNpYmxl
RmlsbCwKKyAgICBWaXNpYmxlUGFpbnRlZCwKKyAgICBBbGwKIH07CiAKIGVudW0gY2xhc3MgVHJh
bnNmb3JtU3R5bGUzRCB7CkBAIC05MTksNDIgKzkyMyw0MiBAQCBlbnVtIGNsYXNzIExpbmVDbGFt
cCB7CiAgICAgUGVyY2VudGFnZQogfTsKIAotZW51bSBIeXBoZW5zIHsKLSAgICBIeXBoZW5zTm9u
ZSwKLSAgICBIeXBoZW5zTWFudWFsLAotICAgIEh5cGhlbnNBdXRvCitlbnVtIGNsYXNzIEh5cGhl
bnMgeworICAgIE5vbmUsCisgICAgTWFudWFsLAorICAgIEF1dG8KIH07CiAKIGVudW0gRVNwZWFr
QXMgewotICAgIFNwZWFrTm9ybWFsID0gMCwKLSAgICBTcGVha1NwZWxsT3V0ID0gMSA8PCAwLAot
ICAgIFNwZWFrRGlnaXRzID0gMSA8PCAxLAorICAgIFNwZWFrTm9ybWFsICAgICAgICAgICAgID0g
MCwKKyAgICBTcGVha1NwZWxsT3V0ICAgICAgICAgICA9IDEgPDwgMCwKKyAgICBTcGVha0RpZ2l0
cyAgICAgICAgICAgICA9IDEgPDwgMSwKICAgICBTcGVha0xpdGVyYWxQdW5jdHVhdGlvbiA9IDEg
PDwgMiwKLSAgICBTcGVha05vUHVuY3R1YXRpb24gPSAxIDw8IDMKKyAgICBTcGVha05vUHVuY3R1
YXRpb24gICAgICA9IDEgPDwgMwogfTsKIGlubGluZSBFU3BlYWtBcyBvcGVyYXRvcnwoRVNwZWFr
QXMgYSwgRVNwZWFrQXMgYikgeyByZXR1cm4gRVNwZWFrQXMoaW50KGEpIHwgaW50KGIpKTsgfQog
aW5saW5lIEVTcGVha0FzJiBvcGVyYXRvcnw9KEVTcGVha0FzJiBhLCBFU3BlYWtBcyBiKSB7IHJl
dHVybiBhID0gYSB8IGI7IH0KIAotZW51bSBUZXh0RW1waGFzaXNGaWxsIHsKLSAgICBUZXh0RW1w
aGFzaXNGaWxsRmlsbGVkLAotICAgIFRleHRFbXBoYXNpc0ZpbGxPcGVuCitlbnVtIGNsYXNzIFRl
eHRFbXBoYXNpc0ZpbGwgeworICAgIEZpbGxlZCwKKyAgICBPcGVuCiB9OwogCi1lbnVtIFRleHRF
bXBoYXNpc01hcmsgewotICAgIFRleHRFbXBoYXNpc01hcmtOb25lLAotICAgIFRleHRFbXBoYXNp
c01hcmtBdXRvLAotICAgIFRleHRFbXBoYXNpc01hcmtEb3QsCi0gICAgVGV4dEVtcGhhc2lzTWFy
a0NpcmNsZSwKLSAgICBUZXh0RW1waGFzaXNNYXJrRG91YmxlQ2lyY2xlLAotICAgIFRleHRFbXBo
YXNpc01hcmtUcmlhbmdsZSwKLSAgICBUZXh0RW1waGFzaXNNYXJrU2VzYW1lLAotICAgIFRleHRF
bXBoYXNpc01hcmtDdXN0b20KK2VudW0gY2xhc3MgVGV4dEVtcGhhc2lzTWFyayB7CisgICAgTm9u
ZSwKKyAgICBBdXRvLAorICAgIERvdCwKKyAgICBDaXJjbGUsCisgICAgRG91YmxlQ2lyY2xlLAor
ICAgIFRyaWFuZ2xlLAorICAgIFNlc2FtZSwKKyAgICBDdXN0b20KIH07CiAKIGVudW0gVGV4dEVt
cGhhc2lzUG9zaXRpb25zIHsKLSAgICBUZXh0RW1waGFzaXNQb3NpdGlvbk92ZXIgPSAxIDw8IDAs
CisgICAgVGV4dEVtcGhhc2lzUG9zaXRpb25PdmVyICA9IDEgPDwgMCwKICAgICBUZXh0RW1waGFz
aXNQb3NpdGlvblVuZGVyID0gMSA8PCAxLAotICAgIFRleHRFbXBoYXNpc1Bvc2l0aW9uTGVmdCA9
IDEgPDwgMiwKKyAgICBUZXh0RW1waGFzaXNQb3NpdGlvbkxlZnQgID0gMSA8PCAyLAogICAgIFRl
eHRFbXBoYXNpc1Bvc2l0aW9uUmlnaHQgPSAxIDw8IDMKIH07CiB0eXBlZGVmIHVuc2lnbmVkIFRl
eHRFbXBoYXNpc1Bvc2l0aW9uOwpAQCAtOTgwLDU4ICs5ODQsNTggQEAgZW51bSBjbGFzcyBJbWFn
ZVJlbmRlcmluZyB7CiAKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJl
YW0mLCBJbWFnZVJlbmRlcmluZyk7CiAKLWVudW0gSW1hZ2VSZXNvbHV0aW9uU291cmNlIHsKLSAg
ICBJbWFnZVJlc29sdXRpb25TcGVjaWZpZWQgPSAwLAotICAgIEltYWdlUmVzb2x1dGlvbkZyb21J
bWFnZQorZW51bSBjbGFzcyBJbWFnZVJlc29sdXRpb25Tb3VyY2UgeworICAgIFNwZWNpZmllZCA9
IDAsCisgICAgRnJvbUltYWdlCiB9OwogCi1lbnVtIEltYWdlUmVzb2x1dGlvblNuYXAgewotICAg
IEltYWdlUmVzb2x1dGlvbk5vU25hcCA9IDAsCi0gICAgSW1hZ2VSZXNvbHV0aW9uU25hcFBpeGVs
cworZW51bSBjbGFzcyBJbWFnZVJlc29sdXRpb25TbmFwIHsKKyAgICBOb25lID0gMCwKKyAgICBQ
aXhlbHMKIH07CiAKLWVudW0gT3JkZXIgewotICAgIExvZ2ljYWxPcmRlciA9IDAsCi0gICAgVmlz
dWFsT3JkZXIKK2VudW0gY2xhc3MgT3JkZXIgeworICAgIExvZ2ljYWwgPSAwLAorICAgIFZpc3Vh
bAogfTsKIAotZW51bSBDb2x1bW5BeGlzIHsKLSAgICBIb3Jpem9udGFsQ29sdW1uQXhpcywKLSAg
ICBWZXJ0aWNhbENvbHVtbkF4aXMsCi0gICAgQXV0b0NvbHVtbkF4aXMKK2VudW0gY2xhc3MgQ29s
dW1uQXhpcyB7CisgICAgSG9yaXpvbnRhbCwKKyAgICBWZXJ0aWNhbCwKKyAgICBBdXRvCiB9Owog
Ci1lbnVtIENvbHVtblByb2dyZXNzaW9uIHsKLSAgICBOb3JtYWxDb2x1bW5Qcm9ncmVzc2lvbiwK
LSAgICBSZXZlcnNlQ29sdW1uUHJvZ3Jlc3Npb24KK2VudW0gY2xhc3MgQ29sdW1uUHJvZ3Jlc3Np
b24geworICAgIE5vcm1hbCwKKyAgICBSZXZlcnNlCiB9OwogCi1lbnVtIExpbmVTbmFwIHsKLSAg
ICBMaW5lU25hcE5vbmUsCi0gICAgTGluZVNuYXBCYXNlbGluZSwKLSAgICBMaW5lU25hcENvbnRh
aW4KK2VudW0gY2xhc3MgTGluZVNuYXAgeworICAgIE5vbmUsCisgICAgQmFzZWxpbmUsCisgICAg
Q29udGFpbgogfTsKIAotZW51bSBMaW5lQWxpZ24gewotICAgIExpbmVBbGlnbk5vbmUsCi0gICAg
TGluZUFsaWduRWRnZXMKK2VudW0gY2xhc3MgTGluZUFsaWduIHsKKyAgICBOb25lLAorICAgIEVk
Z2VzCiB9OwogCi1lbnVtIFJ1YnlQb3NpdGlvbiB7Ci0gICAgUnVieVBvc2l0aW9uQmVmb3JlLAot
ICAgIFJ1YnlQb3NpdGlvbkFmdGVyLAotICAgIFJ1YnlQb3NpdGlvbkludGVyQ2hhcmFjdGVyCitl
bnVtIGNsYXNzIFJ1YnlQb3NpdGlvbiB7CisgICAgQmVmb3JlLAorICAgIEFmdGVyLAorICAgIElu
dGVyQ2hhcmFjdGVyCiB9OwogCiBzdGF0aWMgY29uc3Qgc2l6ZV90IEdyaWRBdXRvRmxvd0JpdHMg
PSA0OwogZW51bSBJbnRlcm5hbEdyaWRBdXRvRmxvd0FsZ29yaXRobSB7Ci0gICAgSW50ZXJuYWxB
dXRvRmxvd0FsZ29yaXRobVNwYXJzZSA9IDB4MSwKLSAgICBJbnRlcm5hbEF1dG9GbG93QWxnb3Jp
dGhtRGVuc2UgPSAweDIsCisgICAgSW50ZXJuYWxBdXRvRmxvd0FsZ29yaXRobVNwYXJzZSA9IDEg
PDwgMCwKKyAgICBJbnRlcm5hbEF1dG9GbG93QWxnb3JpdGhtRGVuc2UgID0gMSA8PCAxLAogfTsK
IAogZW51bSBJbnRlcm5hbEdyaWRBdXRvRmxvd0RpcmVjdGlvbiB7Ci0gICAgSW50ZXJuYWxBdXRv
Rmxvd0RpcmVjdGlvblJvdyA9IDB4NCwKLSAgICBJbnRlcm5hbEF1dG9GbG93RGlyZWN0aW9uQ29s
dW1uID0gMHg4CisgICAgSW50ZXJuYWxBdXRvRmxvd0RpcmVjdGlvblJvdyAgICA9IDEgPDwgMiwK
KyAgICBJbnRlcm5hbEF1dG9GbG93RGlyZWN0aW9uQ29sdW1uID0gMSA8PCAzCiB9OwogCiBlbnVt
IEdyaWRBdXRvRmxvdyB7CkBAIC0xMDQxLDEwICsxMDQ1LDEwIEBAIGVudW0gR3JpZEF1dG9GbG93
IHsKICAgICBBdXRvRmxvd0NvbHVtbkRlbnNlID0gSW50ZXJuYWxBdXRvRmxvd0FsZ29yaXRobURl
bnNlIHwgSW50ZXJuYWxBdXRvRmxvd0RpcmVjdGlvbkNvbHVtbgogfTsKIAotZW51bSBBdXRvUmVw
ZWF0VHlwZSB7Ci0gICAgTm9BdXRvUmVwZWF0LAotICAgIEF1dG9GaWxsLAotICAgIEF1dG9GaXQK
K2VudW0gY2xhc3MgQXV0b1JlcGVhdFR5cGUgeworICAgIE5vbmUsCisgICAgRmlsbCwKKyAgICBG
aXQKIH07CiAKIC8vIFJlYXNvbmFibGUgbWF4aW11bSB0byBwcmV2ZW50IGluc2FuZSBmb250IHNp
emVzIGZyb20gY2F1c2luZyBjcmFzaGVzIG9uIHNvbWUgcGxhdGZvcm1zIChzdWNoIGFzIFdpbmRv
d3MpLgpAQCAtMTA3MCw3ICsxMDc0LDcgQEAgZW51bSBjbGFzcyBJc29sYXRpb24gewogfTsKIAog
Ly8gRmlsbCwgU3Ryb2tlLCBWaWV3Qm94IGFyZSBqdXN0IHVzZWQgZm9yIFNWRy4KLWVudW0gQ1NT
Qm94VHlwZSB7CitlbnVtIGNsYXNzIENTU0JveFR5cGUgewogICAgIEJveE1pc3NpbmcgPSAwLAog
ICAgIE1hcmdpbkJveCwKICAgICBCb3JkZXJCb3gsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TaGFwZVZhbHVlLmgJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFwZVZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk1
LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICBUeXBlIG1fdHlwZTsKICAgICBSZWZQdHI8QmFzaWNT
aGFwZT4gbV9zaGFwZTsKICAgICBSZWZQdHI8U3R5bGVJbWFnZT4gbV9pbWFnZTsKLSAgICBDU1NC
b3hUeXBlIG1fY3NzQm94IHsgQm94TWlzc2luZyB9OworICAgIENTU0JveFR5cGUgbV9jc3NCb3gg
eyBDU1NCb3hUeXBlOjpCb3hNaXNzaW5nIH07CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5jcHAJKHJldmlz
aW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRp
Q29sRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDggQEAgU3R5bGVNdWx0aUNv
bERhdGE6OlN0eWxlTXVsdGlDb2xEYXRhKCkKICAgICAsIGF1dG9Db3VudCh0cnVlKQogICAgICwg
ZmlsbChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5bGU6OmluaXRpYWxDb2x1bW5GaWxs
KCkpKQogICAgICwgY29sdW1uU3BhbihmYWxzZSkKLSAgICAsIGF4aXMoUmVuZGVyU3R5bGU6Omlu
aXRpYWxDb2x1bW5BeGlzKCkpCi0gICAgLCBwcm9ncmVzc2lvbihSZW5kZXJTdHlsZTo6aW5pdGlh
bENvbHVtblByb2dyZXNzaW9uKCkpCisgICAgLCBheGlzKHN0YXRpY19jYXN0PHVuc2lnbmVkPihS
ZW5kZXJTdHlsZTo6aW5pdGlhbENvbHVtbkF4aXMoKSkpCisgICAgLCBwcm9ncmVzc2lvbihzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5bGU6OmluaXRpYWxDb2x1bW5Qcm9ncmVzc2lvbigp
KSkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFy
ZUluaGVyaXRlZERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04NywxMSArODcsMTEgQEAgU3R5bGVSYXJlSW5oZXJpdGVkRGF0
YTo6U3R5bGVSYXJlSW5oZXJpdAogICAgICwgbmJzcE1vZGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KE5CU1BNb2RlOjpOb3JtYWwpKQogICAgICwgbGluZUJyZWFrKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihMaW5lQnJlYWs6OkF1dG8pKQogICAgICwgdXNlclNlbGVjdChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUmVuZGVyU3R5bGU6OmluaXRpYWxVc2VyU2VsZWN0KCkpKQotICAgICwgc3BlYWtBcyhTcGVh
a05vcm1hbCkKLSAgICAsIGh5cGhlbnMoSHlwaGVuc01hbnVhbCkKLSAgICAsIHRleHRFbXBoYXNp
c0ZpbGwoVGV4dEVtcGhhc2lzRmlsbEZpbGxlZCkKLSAgICAsIHRleHRFbXBoYXNpc01hcmsoVGV4
dEVtcGhhc2lzTWFya05vbmUpCi0gICAgLCB0ZXh0RW1waGFzaXNQb3NpdGlvbihUZXh0RW1waGFz
aXNQb3NpdGlvbk92ZXIgfCBUZXh0RW1waGFzaXNQb3NpdGlvblJpZ2h0KQorICAgICwgc3BlYWtB
cyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oU3BlYWtOb3JtYWwpKQorICAgICwgaHlwaGVucyhzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSHlwaGVuczo6TWFudWFsKSkKKyAgICAsIHRleHRFbXBoYXNpc0Zp
bGwoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFRleHRFbXBoYXNpc0ZpbGw6OkZpbGxlZCkpCisgICAg
LCB0ZXh0RW1waGFzaXNNYXJrKHN0YXRpY19jYXN0PHVuc2lnbmVkPihUZXh0RW1waGFzaXNNYXJr
OjpOb25lKSkKKyAgICAsIHRleHRFbXBoYXNpc1Bvc2l0aW9uKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihUZXh0RW1waGFzaXNQb3NpdGlvbk92ZXIgfCBUZXh0RW1waGFzaXNQb3NpdGlvblJpZ2h0KSkK
ICAgICAsIHRleHRPcmllbnRhdGlvbihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVGV4dE9yaWVudGF0
aW9uOjpNaXhlZCkpCiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKICAgICAsIHRleHRJbmRlbnRMaW5l
KFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEluZGVudExpbmUoKSkKQEAgLTEwMiw4ICsxMDIsOCBA
QCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0CiAgICAgLCBpbWFnZU9y
aWVudGF0aW9uKFJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VPcmllbnRhdGlvbigpKQogI2VuZGlm
CiAgICAgLCBpbWFnZVJlbmRlcmluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5bGU6
OmluaXRpYWxJbWFnZVJlbmRlcmluZygpKSkKLSAgICAsIGxpbmVTbmFwKFJlbmRlclN0eWxlOjpp
bml0aWFsTGluZVNuYXAoKSkKLSAgICAsIGxpbmVBbGlnbihSZW5kZXJTdHlsZTo6aW5pdGlhbExp
bmVBbGlnbigpKQorICAgICwgbGluZVNuYXAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0
eWxlOjppbml0aWFsTGluZVNuYXAoKSkpCisgICAgLCBsaW5lQWxpZ24oc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFsTGluZUFsaWduKCkpKQogI2lmIEVOQUJMRShBQ0NF
TEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpCiAgICAgLCB1c2VUb3VjaE92ZXJmbG93U2Nyb2xs
aW5nKFJlbmRlclN0eWxlOjppbml0aWFsVXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZygpKQogI2Vu
ZGlmCkBAIC0xMTcsOCArMTE3LDggQEAgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJl
SW5oZXJpdAogI2VuZGlmCiAgICAgLCB0ZXh0RGVjb3JhdGlvblNraXAoUmVuZGVyU3R5bGU6Omlu
aXRpYWxUZXh0RGVjb3JhdGlvblNraXAoKSkKICAgICAsIHRleHRVbmRlcmxpbmVQb3NpdGlvbihS
ZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRVbmRlcmxpbmVQb3NpdGlvbigpKQotICAgICwgcnVieVBv
c2l0aW9uKFJlbmRlclN0eWxlOjppbml0aWFsUnVieVBvc2l0aW9uKCkpCi0gICAgLCB0ZXh0Wm9v
bShSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRab29tKCkpCisgICAgLCBydWJ5UG9zaXRpb24oc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFsUnVieVBvc2l0aW9uKCkpKQor
ICAgICwgdGV4dFpvb20oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFs
VGV4dFpvb20oKSkpCiAjaWYgUExBVEZPUk0oSU9TKQogICAgICwgdG91Y2hDYWxsb3V0RW5hYmxl
ZChSZW5kZXJTdHlsZTo6aW5pdGlhbFRvdWNoQ2FsbG91dEVuYWJsZWQoKSkKICNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NiwxMCArODYsMTAgQEAgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6
U3R5bGVSYXJlTm9uSQogICAgICwgdGV4dE92ZXJmbG93KHN0YXRpY19jYXN0PHVuc2lnbmVkPihS
ZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRPdmVyZmxvdygpKSkKICAgICAsIG1hcmdpbkJlZm9yZUNv
bGxhcHNlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihNYXJnaW5Db2xsYXBzZTo6Q29sbGFwc2UpKQog
ICAgICwgbWFyZ2luQWZ0ZXJDb2xsYXBzZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTWFyZ2luQ29s
bGFwc2U6OkNvbGxhcHNlKSkKLSAgICAsIGFwcGVhcmFuY2UoUmVuZGVyU3R5bGU6OmluaXRpYWxB
cHBlYXJhbmNlKCkpCi0gICAgLCBib3JkZXJGaXQoUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJG
aXQoKSkKKyAgICAsIGFwcGVhcmFuY2Uoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxl
Ojppbml0aWFsQXBwZWFyYW5jZSgpKSkKKyAgICAsIGJvcmRlckZpdChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJGaXQoKSkpCiAgICAgLCB0ZXh0Q29tYmlu
ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0Q29tYmluZSgp
KSkKLSAgICAsIHRleHREZWNvcmF0aW9uU3R5bGUoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RGVj
b3JhdGlvblN0eWxlKCkpCisgICAgLCB0ZXh0RGVjb3JhdGlvblN0eWxlKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHREZWNvcmF0aW9uU3R5bGUoKSkpCiAgICAg
LCBhc3BlY3RSYXRpb1R5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0
aWFsQXNwZWN0UmF0aW9UeXBlKCkpKQogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCiAgICAg
LCBlZmZlY3RpdmVCbGVuZE1vZGUoUmVuZGVyU3R5bGU6OmluaXRpYWxCbGVuZE1vZGUoKSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWRE
YXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
UmFyZU5vbkluaGVyaXRlZERhdGEuaAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAkod29ya2luZyBj
b3B5KQpAQCAtMTg1LDcgKzE4NSw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBtYXJnaW5CZWZv
cmVDb2xsYXBzZSA6IDI7IC8vIE1hcmdpbkNvbGxhcHNlCiAgICAgdW5zaWduZWQgbWFyZ2luQWZ0
ZXJDb2xsYXBzZSA6IDI7IC8vIE1hcmdpbkNvbGxhcHNlCiAgICAgdW5zaWduZWQgYXBwZWFyYW5j
ZSA6IDY7IC8vIEVBcHBlYXJhbmNlCi0gICAgdW5zaWduZWQgYm9yZGVyRml0IDogMTsgLy8gRUJv
cmRlckZpdAorICAgIHVuc2lnbmVkIGJvcmRlckZpdCA6IDE7IC8vIEJvcmRlckZpdAogICAgIHVu
c2lnbmVkIHRleHRDb21iaW5lIDogMTsgLy8gQ1NTMyB0ZXh0LWNvbWJpbmUgcHJvcGVydGllcwog
CiAgICAgdW5zaWduZWQgdGV4dERlY29yYXRpb25TdHlsZSA6IDM7IC8vIFRleHREZWNvcmF0aW9u
U3R5bGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFp
bmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0NvbnRhaW5lci5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM3
LDcgKzEzNyw3IEBAIHZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjpwYWludChQYWludEluZm8KICAg
ICAvLyBvdXRsaW5lIHJlY3QgaW50byBwYXJlbnQgY29vcmRzIGJlZm9yZSBkcmF3aW5nLgogICAg
IC8vIEZJWE1FOiBUaGlzIG1lYW5zIG91ciBmb2N1cyByaW5nIHdvbid0IHNoYXJlIG91ciByb3Rh
dGlvbiBsaWtlIGl0IHNob3VsZC4KICAgICAvLyBXZSBzaG91bGQgaW5zdGVhZCBkaXNhYmxlIG91
ciBjbGlwIGR1cmluZyBQYWludFBoYXNlT3V0bGluZQotICAgIGlmIChwYWludEluZm8ucGhhc2Ug
PT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lICYmIHN0eWxlKCkub3V0bGluZVdpZHRoKCkgJiYgc3R5
bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkgeworICAgIGlmIChwYWludEluZm8ucGhhc2Ug
PT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lICYmIHN0eWxlKCkub3V0bGluZVdpZHRoKCkgJiYgc3R5
bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkgewogICAgICAgICBJbnRS
ZWN0IHBhaW50UmVjdEluUGFyZW50ID0gZW5jbG9zaW5nSW50UmVjdChsb2NhbFRvUGFyZW50VHJh
bnNmb3JtKCkubWFwUmVjdChyZXBhaW50UmVjdCkpOwogICAgICAgICBwYWludE91dGxpbmUocGFp
bnRJbmZvLCBwYWludFJlY3RJblBhcmVudCk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAJKHJldmlzaW9uIDIzMjE0MykK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6bGF5b3V0
KCkKIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYpCiB7CiAgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdE
aXNhYmxlZCgpIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZAotICAg
ICAgICB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBISURERU4gfHwgIWltYWdlUmVzb3VyY2Uo
KS5jYWNoZWRJbWFnZSgpKQorICAgICAgICB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNp
YmlsaXR5OjpIaWRkZW4gfHwgIWltYWdlUmVzb3VyY2UoKS5jYWNoZWRJbWFnZSgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBGbG9hdFJlY3QgYm91bmRpbmdCb3ggPSByZXBhaW50UmVjdEluTG9j
YWxDb29yZGluYXRlcygpOwpAQCAtMTkyLDcgKzE5Miw3IEBAIGJvb2wgUmVuZGVyU1ZHSW1hZ2U6
Om5vZGVBdEZsb2F0UG9pbnQoY28KICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgUG9pbnRl
ckV2ZW50c0hpdFJ1bGVzIGhpdFJ1bGVzKFBvaW50ZXJFdmVudHNIaXRSdWxlczo6U1ZHX0lNQUdF
X0hJVFRFU1RJTkcsIHJlcXVlc3QsIHN0eWxlKCkucG9pbnRlckV2ZW50cygpKTsKLSAgICBib29s
IGlzVmlzaWJsZSA9IChzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKTsKKyAgICBib29s
IGlzVmlzaWJsZSA9IChzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxl
KTsKICAgICBpZiAoaXNWaXNpYmxlIHx8ICFoaXRSdWxlcy5yZXF1aXJlVmlzaWJsZSkgewogICAg
ICAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkuaW52
ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50
KTsKICAgICAgICAgICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbmxpbmVUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05MSw4ICs5MSw4IEBAIHZvaWQgUmVuZGVyU1ZHSW5saW5lVGV4dDo6c3R5bGVE
aWRDaGFuZ2UKICAgICBSZW5kZXJUZXh0OjpzdHlsZURpZENoYW5nZShkaWZmLCBvbGRTdHlsZSk7
CiAgICAgdXBkYXRlU2NhbGVkRm9udCgpOwogCi0gICAgYm9vbCBuZXdQcmVzZXJ2ZXMgPSBzdHls
ZSgpLndoaXRlU3BhY2UoKSA9PSBQUkU7Ci0gICAgYm9vbCBvbGRQcmVzZXJ2ZXMgPSBvbGRTdHls
ZSA/IG9sZFN0eWxlLT53aGl0ZVNwYWNlKCkgPT0gUFJFIDogZmFsc2U7CisgICAgYm9vbCBuZXdQ
cmVzZXJ2ZXMgPSBzdHlsZSgpLndoaXRlU3BhY2UoKSA9PSBXaGl0ZVNwYWNlOjpQcmU7CisgICAg
Ym9vbCBvbGRQcmVzZXJ2ZXMgPSBvbGRTdHlsZSA/IG9sZFN0eWxlLT53aGl0ZVNwYWNlKCkgPT0g
V2hpdGVTcGFjZTo6UHJlIDogZmFsc2U7CiAgICAgaWYgKG9sZFByZXNlcnZlcyAmJiAhbmV3UHJl
c2VydmVzKSB7CiAgICAgICAgIHNldFRleHQoYXBwbHlTVkdXaGl0ZXNwYWNlUnVsZXMob3JpZ2lu
YWxUZXh0KCksIGZhbHNlKSwgdHJ1ZSk7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3Bw
CShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR01vZGVsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDcgKzE2OCw3IEBAIHZv
aWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmFic29sdXRlRm9jdXMKICAgICAKIGJvb2wgUmVuZGVy
U1ZHTW9kZWxPYmplY3Q6OmNoZWNrSW50ZXJzZWN0aW9uKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKCFyZW5kZXJlciB8fCByZW5kZXJl
ci0+c3R5bGUoKS5wb2ludGVyRXZlbnRzKCkgPT0gUEVfTk9ORSkKKyAgICBpZiAoIXJlbmRlcmVy
IHx8IHJlbmRlcmVyLT5zdHlsZSgpLnBvaW50ZXJFdmVudHMoKSA9PSBQb2ludGVyRXZlbnRzOjpO
b25lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFpc0dyYXBoaWNzRWxlbWVudCgq
cmVuZGVyZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xODEsNyArMTgxLDcgQEAgYm9v
bCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6Y2hlY2tJbnRlcnNlYwogCiBib29sIFJlbmRlclNWR01v
ZGVsT2JqZWN0OjpjaGVja0VuY2xvc3VyZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQogewotICAgIGlmICghcmVuZGVyZXIgfHwgcmVuZGVyZXItPnN0eWxl
KCkucG9pbnRlckV2ZW50cygpID09IFBFX05PTkUpCisgICAgaWYgKCFyZW5kZXJlciB8fCByZW5k
ZXJlci0+c3R5bGUoKS5wb2ludGVyRXZlbnRzKCkgPT0gUG9pbnRlckV2ZW50czo6Tm9uZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghaXNHcmFwaGljc0VsZW1lbnQoKnJlbmRlcmVy
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3IEBAIHN0YXRpYyBpbmxpbmUgUmVuZGVyU1ZHUmVzb3Vy
Y2UqIHJlcXVlc3QKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKHN0eWxlLmluc2lk
ZUxpbmsoKSA9PSBJbnNpZGVWaXNpdGVkTGluaykgeworICAgIGlmIChzdHlsZS5pbnNpZGVMaW5r
KCkgPT0gSW5zaWRlTGluazo6SW5zaWRlVmlzaXRlZCkgewogICAgICAgICAvLyBGSVhNRTogVGhp
cyBjb2RlIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgdXJpIGNvbXBvbmVudCBvZiB0aGUgdmlzaXRlZCBs
aW5rIHBhaW50LCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzAwMDYK
ICAgICAgICAgU1ZHUGFpbnRUeXBlIHZpc2l0ZWRQYWludFR5cGUgPSBhcHBseVRvRmlsbCA/IHN2
Z1N0eWxlLnZpc2l0ZWRMaW5rRmlsbFBhaW50VHlwZSgpIDogc3ZnU3R5bGUudmlzaXRlZExpbmtT
dHJva2VQYWludFR5cGUoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAkocmV2aXNpb24gMjMy
MTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNs
aXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBAIGJvb2wgUmVuZGVyU1ZH
UmVzb3VyY2VDbGlwcGVyOjpwYXRoT25seUMKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICBTVkdHcmFwaGljc0VsZW1lbnQmIHN0eWxlZCA9IGRvd25jYXN0PFNWR0dyYXBoaWNzRWxlbWVu
dD4oKmNoaWxkTm9kZSk7CiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHJlbmRl
cmVyLT5zdHlsZSgpOwotICAgICAgICBpZiAoc3R5bGUuZGlzcGxheSgpID09IE5PTkUgfHwgc3R5
bGUudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgICAgIGlmIChzdHlsZS5kaXNwbGF5KCkg
PT0gRGlzcGxheVR5cGU6Ok5vbmUgfHwgc3R5bGUudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6
OlZpc2libGUpCiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGNvbnN0IFNWR1JlbmRl
clN0eWxlJiBzdmdTdHlsZSA9IHN0eWxlLnN2Z1N0eWxlKCk7CiAgICAgICAgIC8vIEN1cnJlbnQg
c2hhcGUgaW4gY2xpcC1wYXRoIGdldHMgY2xpcHBlZCB0b28uIEZhbGxiYWNrIHRvIG1hc2tpbmcu
CkBAIC0yMDYsNyArMjA2LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmRyYXdD
b250ZQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOwotICAgICAgICBpZiAoc3R5
bGUuZGlzcGxheSgpID09IE5PTkUgfHwgc3R5bGUudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisg
ICAgICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUgfHwgc3R5bGUu
dmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgICAgICBjb250aW51
ZTsKIAogICAgICAgICBXaW5kUnVsZSBuZXdDbGlwUnVsZSA9IHN0eWxlLnN2Z1N0eWxlKCkuY2xp
cFJ1bGUoKTsKQEAgLTI0Niw3ICsyNDYsNyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBl
cjo6Y2FsY3VsYXRlCiAgICAgICAgIGlmICghcmVuZGVyZXItPmlzU1ZHU2hhcGUoKSAmJiAhcmVu
ZGVyZXItPmlzU1ZHVGV4dCgpICYmICFjaGlsZE5vZGUtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnVz
ZVRhZykpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7Ci0gICAgICAgIGlmIChzdHlsZS5kaXNwbGF5KCkg
PT0gTk9ORSB8fCBzdHlsZS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICAgICAgaWYgKHN0
eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSB8fCBzdHlsZS52aXNpYmlsaXR5KCkg
IT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
bV9jbGlwQm91bmRhcmllcy51bml0ZShyZW5kZXJlci0+bG9jYWxUb1BhcmVudFRyYW5zZm9ybSgp
Lm1hcFJlY3QocmVuZGVyZXItPnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkpKTsKICAg
ICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
TWFza2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwNyw3ICsxMDcsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpk
cmF3Q29udGVuCiAgICAgICAgIGlmIChyZW5kZXJlci0+bmVlZHNMYXlvdXQoKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gcmVu
ZGVyZXItPnN0eWxlKCk7Ci0gICAgICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gTk9ORSB8fCBz
dHlsZS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICAgICAgaWYgKHN0eWxlLmRpc3BsYXko
KSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSB8fCBzdHlsZS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0
eTo6VmlzaWJsZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBTVkdSZW5kZXJpbmdD
b250ZXh0OjpyZW5kZXJTdWJ0cmVlVG9JbWFnZUJ1ZmZlcihtYXNrZXJEYXRhLT5tYXNrSW1hZ2Uu
Z2V0KCksICpyZW5kZXJlciwgbWFza0NvbnRlbnRUcmFuc2Zvcm1hdGlvbik7CiAgICAgfQpAQCAt
MTMyLDcgKzEzMiw3IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmNhbGN1bGF0ZU0K
ICAgICAgICAgaWYgKCFjaGlsZE5vZGUtPmlzU1ZHRWxlbWVudCgpIHx8ICFyZW5kZXJlcikKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSBy
ZW5kZXJlci0+c3R5bGUoKTsKLSAgICAgICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBOT05FIHx8
IHN0eWxlLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgICAgICBpZiAoc3R5bGUuZGlzcGxh
eSgpID09IERpc3BsYXlUeXBlOjpOb25lIHx8IHN0eWxlLnZpc2liaWxpdHkoKSAhPSBWaXNpYmls
aXR5OjpWaXNpYmxlKQogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBtX21hc2tDb250
ZW50Qm91bmRhcmllcy51bml0ZShyZW5kZXJlci0+bG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLm1h
cFJlY3QocmVuZGVyZXItPnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkpKTsKICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5j
cHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUm9vdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyOSw3ICszMjksNyBAQCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIFJlbmRlclNWR1Jvb3Q6OmxvCiAKIExheW91dFJlY3QgUmVuZGVyU1ZH
Um9vdDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QKIHsKLSAgICBpZiAoc3R5bGUoKS52aXNp
YmlsaXR5KCkgIT0gVklTSUJMRSAmJiAhZW5jbG9zaW5nTGF5ZXIoKS0+aGFzVmlzaWJsZUNvbnRl
bnQoKSkKKyAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJs
ZSAmJiAhZW5jbG9zaW5nTGF5ZXIoKS0+aGFzVmlzaWJsZUNvbnRlbnQoKSkKICAgICAgICAgcmV0
dXJuIExheW91dFJlY3QoKTsKIAogICAgIEZsb2F0UmVjdCBjb250ZW50UmVwYWludFJlY3QgPSBt
X2xvY2FsVG9Cb3JkZXJCb3hUcmFuc2Zvcm0ubWFwUmVjdChyZXBhaW50UmVjdEluTG9jYWxDb29y
ZGluYXRlcygpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
U2hhcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHU2hhcGUuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk3LDcgKzI5
Nyw3IEBAIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OmZpbGxTdHJva2VNYXJrZXJzKFAKIHZvaWQgUmVu
ZGVyU1ZHU2hhcGU6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYpCiB7CiAgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpIHx8
IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZAotICAgICAgICB8fCBzdHls
ZSgpLnZpc2liaWxpdHkoKSA9PSBISURERU4gfHwgaXNFbXB0eSgpKQorICAgICAgICB8fCBzdHls
ZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gfHwgaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94ID0gcmVwYWludFJlY3RJbkxv
Y2FsQ29vcmRpbmF0ZXMoKTsKICAgICBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBhaW50SW5mb0lu
dGVyc2VjdHNSZXBhaW50UmVjdChib3VuZGluZ0JveCwgbV9sb2NhbFRyYW5zZm9ybSwgcGFpbnRJ
bmZvKSkKQEAgLTM3NCw3ICszNzQsNyBAQCBib29sIFJlbmRlclNWR1NoYXBlOjpub2RlQXRGbG9h
dFBvaW50KGNvCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFBvaW50ZXJFdmVudHNIaXRS
dWxlcyBoaXRSdWxlcyhQb2ludGVyRXZlbnRzSGl0UnVsZXM6OlNWR19QQVRIX0hJVFRFU1RJTkcs
IHJlcXVlc3QsIHN0eWxlKCkucG9pbnRlckV2ZW50cygpKTsKLSAgICBib29sIGlzVmlzaWJsZSA9
IChzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKTsKKyAgICBib29sIGlzVmlzaWJsZSA9
IChzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlKTsKICAgICBpZiAo
aXNWaXNpYmxlIHx8ICFoaXRSdWxlcy5yZXF1aXJlVmlzaWJsZSkgewogICAgICAgICBjb25zdCBT
VkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBzdHlsZSgpLnN2Z1N0eWxlKCk7CiAgICAgICAgIFdp
bmRSdWxlIGZpbGxSdWxlID0gc3ZnU3R5bGUuZmlsbFJ1bGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAkocmV2aXNpb24gMjMyMTQz
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDMyLDcgKzQzMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSb290SW5saW5l
Qm94PiBSZW5kZXJTVkcKIGJvb2wgUmVuZGVyU1ZHVGV4dDo6bm9kZUF0RmxvYXRQb2ludChjb25z
dCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBG
bG9hdFBvaW50JiBwb2ludEluUGFyZW50LCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pCiB7
CiAgICAgUG9pbnRlckV2ZW50c0hpdFJ1bGVzIGhpdFJ1bGVzKFBvaW50ZXJFdmVudHNIaXRSdWxl
czo6U1ZHX1RFWFRfSElUVEVTVElORywgcmVxdWVzdCwgc3R5bGUoKS5wb2ludGVyRXZlbnRzKCkp
OwotICAgIGJvb2wgaXNWaXNpYmxlID0gKHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUp
OworICAgIGJvb2wgaXNWaXNpYmxlID0gKHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxp
dHk6OlZpc2libGUpOwogICAgIGlmIChpc1Zpc2libGUgfHwgIWhpdFJ1bGVzLnJlcXVpcmVWaXNp
YmxlKSB7CiAgICAgICAgIGlmICgoaGl0UnVsZXMuY2FuSGl0U3Ryb2tlICYmIChzdHlsZSgpLnN2
Z1N0eWxlKCkuaGFzU3Ryb2tlKCkgfHwgIWhpdFJ1bGVzLnJlcXVpcmVTdHJva2UpKQogICAgICAg
ICAgICAgfHwgKGhpdFJ1bGVzLmNhbkhpdEZpbGwgJiYgKHN0eWxlKCkuc3ZnU3R5bGUoKS5oYXNG
aWxsKCkgfHwgIWhpdFJ1bGVzLnJlcXVpcmVGaWxsKSkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAkocmV2aXNpb24gMjMy
MTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDcgKzE4MSw3IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJv
eDo6cGFpbnRTZWxlY3Rpb25CYWMKICAgICBBU1NFUlQocGFpbnRJbmZvLnBoYXNlID09IFBhaW50
UGhhc2VGb3JlZ3JvdW5kIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZWN0aW9u
KTsKICAgICBBU1NFUlQodHJ1bmNhdGlvbigpID09IGNOb1RydW5jYXRpb24pOwogCi0gICAgaWYg
KHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAocmVu
ZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAg
ICAgICByZXR1cm47CiAKICAgICBhdXRvJiBwYXJlbnRSZW5kZXJlciA9IHBhcmVudCgpLT5yZW5k
ZXJlcigpOwpAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnQo
UGFpbnRJbmZvJiAKICAgICBBU1NFUlQocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3Jl
Z3JvdW5kIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZWN0aW9uKTsKICAgICBB
U1NFUlQodHJ1bmNhdGlvbigpID09IGNOb1RydW5jYXRpb24pOwogCi0gICAgaWYgKHJlbmRlcmVy
KCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAocmVuZGVyZXIoKS5z
dHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1
cm47CiAKICAgICAvLyBOb3RlOiBXZSdyZSBleHBsaWNpdGVseSBub3Qgc3VwcG9ydGluZyBjb21w
b3NpdGlvbiAmIGN1c3RvbSB1bmRlcmxpbmVzIGFuZCBjdXN0b20gaGlnaGxpZ2h0ZXJzIC0gdW5s
aWtlIElubGluZVRleHRCb3guCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBTVkdJbmxpbmVUZXh0
Qm94OjpwYWludChQYWludEluZm8mIAogCiAgICAgY29uc3QgUmVuZGVyU3R5bGUqIHNlbGVjdGlv
blN0eWxlID0gJnN0eWxlOwogICAgIGlmIChoYXNTZWxlY3Rpb24gJiYgc2hvdWxkUGFpbnRTZWxl
Y3Rpb25IaWdobGlnaHQpIHsKLSAgICAgICAgc2VsZWN0aW9uU3R5bGUgPSBwYXJlbnRSZW5kZXJl
ci5nZXRDYWNoZWRQc2V1ZG9TdHlsZShTRUxFQ1RJT04pOworICAgICAgICBzZWxlY3Rpb25TdHls
ZSA9IHBhcmVudFJlbmRlcmVyLmdldENhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb0lkOjpTZWxlY3Rp
b24pOwogICAgICAgICBpZiAoc2VsZWN0aW9uU3R5bGUpIHsKICAgICAgICAgICAgIGNvbnN0IFNW
R1JlbmRlclN0eWxlJiBzdmdTZWxlY3Rpb25TdHlsZSA9IHNlbGVjdGlvblN0eWxlLT5zdmdTdHls
ZSgpOwogCkBAIC0zOTUsNyArMzk1LDcgQEAgVGV4dFJ1biBTVkdJbmxpbmVUZXh0Qm94Ojpjb25z
dHJ1Y3RUZXh0UgogICAgICAgICAgICAgICAgICwgMCAvKiBwYWRkaW5nLCBvbmx5IHJlbGV2YW50
IGZvciBqdXN0aWZpZWQgdGV4dCwgbm90IHJlbGV2YW50IGZvciBTVkcgKi8KICAgICAgICAgICAg
ICAgICAsIEFsbG93VHJhaWxpbmdFeHBhbnNpb24KICAgICAgICAgICAgICAgICAsIGRpcmVjdGlv
bigpCi0gICAgICAgICAgICAgICAgLCBkaXJPdmVycmlkZSgpIHx8IHN0eWxlLnJ0bE9yZGVyaW5n
KCkgPT0gVmlzdWFsT3JkZXIgLyogZGlyZWN0aW9uYWxPdmVycmlkZSAqLyk7CisgICAgICAgICAg
ICAgICAgLCBkaXJPdmVycmlkZSgpIHx8IHN0eWxlLnJ0bE9yZGVyaW5nKCkgPT0gT3JkZXI6OlZp
c3VhbCAvKiBkaXJlY3Rpb25hbE92ZXJyaWRlICovKTsKIAogICAgIC8vIFdlIGhhbmRsZSBsZXR0
ZXIgJiB3b3JkIHNwYWNpbmcgb3Vyc2VsdmVzLgogICAgIHJ1bi5kaXNhYmxlU3BhY2luZygpOwpA
QCAtNDgwLDcgKzQ4MCw3IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9u
KEcKICAgICBhdXRvJiBkZWNvcmF0aW9uUmVuZGVyZXIgPSBmaW5kUmVuZGVyZXJEZWZpbmluaW5n
VGV4dERlY29yYXRpb24ocGFyZW50KCkpOwogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBkZWNvcmF0
aW9uU3R5bGUgPSBkZWNvcmF0aW9uUmVuZGVyZXIuc3R5bGUoKTsKIAotICAgIGlmIChkZWNvcmF0
aW9uU3R5bGUudmlzaWJpbGl0eSgpID09IEhJRERFTikKKyAgICBpZiAoZGVjb3JhdGlvblN0eWxl
LnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4pCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdmdEZWNvcmF0aW9uU3R5bGUgPSBkZWNvcmF0aW9u
U3R5bGUuc3ZnU3R5bGUoKTsKQEAgLTY0Nyw3ICs2NDcsNyBAQCBib29sIFNWR0lubGluZVRleHRC
b3g6Om5vZGVBdFBvaW50KGNvbnN0CiAgICAgQVNTRVJUKCFpc0xpbmVCcmVhaygpKTsKIAogICAg
IFBvaW50ZXJFdmVudHNIaXRSdWxlcyBoaXRSdWxlcyhQb2ludGVyRXZlbnRzSGl0UnVsZXM6OlNW
R19URVhUX0hJVFRFU1RJTkcsIHJlcXVlc3QsIHJlbmRlcmVyKCkuc3R5bGUoKS5wb2ludGVyRXZl
bnRzKCkpOwotICAgIGJvb2wgaXNWaXNpYmxlID0gcmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxp
dHkoKSA9PSBWSVNJQkxFOworICAgIGJvb2wgaXNWaXNpYmxlID0gcmVuZGVyZXIoKS5zdHlsZSgp
LnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlOwogICAgIGlmIChpc1Zpc2libGUg
fHwgIWhpdFJ1bGVzLnJlcXVpcmVWaXNpYmxlKSB7CiAgICAgICAgIGlmICgoaGl0UnVsZXMuY2Fu
SGl0U3Ryb2tlICYmIChyZW5kZXJlcigpLnN0eWxlKCkuc3ZnU3R5bGUoKS5oYXNTdHJva2UoKSB8
fCAhaGl0UnVsZXMucmVxdWlyZVN0cm9rZSkpCiAgICAgICAgICAgICB8fCAoaGl0UnVsZXMuY2Fu
SGl0RmlsbCAmJiAocmVuZGVyZXIoKS5zdHlsZSgpLnN2Z1N0eWxlKCkuaGFzRmlsbCgpIHx8ICFo
aXRSdWxlcy5yZXF1aXJlRmlsbCkpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU5LDcgKzU5LDcgQEAgRmxvYXRSZWN0IFNWR1JlbmRlclN1cHBvcnQ6OnJlcGFp
bnRSZWN0RgogTGF5b3V0UmVjdCBTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0
Rm9yUmVwYWludChjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikKIHsKICAgICAvLyBSZXR1cm4gZWFybHkg
Zm9yIGFueSBjYXNlcyB3aGVyZSB3ZSBkb24ndCBhY3R1YWxseSBwYWludAotICAgIGlmIChyZW5k
ZXJlci5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFICYmICFyZW5kZXJlci5lbmNsb3Np
bmdMYXllcigpLT5oYXNWaXNpYmxlQ29udGVudCgpKQorICAgIGlmIChyZW5kZXJlci5zdHlsZSgp
LnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICFyZW5kZXJlci5lbmNsb3Np
bmdMYXllcigpLT5oYXNWaXNpYmxlQ29udGVudCgpKQogICAgICAgICByZXR1cm4gTGF5b3V0UmVj
dCgpOwogCiAgICAgLy8gUGFzcyBvdXIgbG9jYWwgcGFpbnQgcmVjdCB0byBjb21wdXRlUmVjdEZv
clJlcGFpbnQoKSB3aGljaCB3aWxsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEzNywxMCArMTM3LDEwIEBAIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4
dDo6cHJlcGFyZVRvUmVuZGUKICAgICBpZiAoaXM8U2hhcGVDbGlwUGF0aE9wZXJhdGlvbj4oY2xp
cFBhdGhPcGVyYXRpb24pKSB7CiAgICAgICAgIGF1dG8mIGNsaXBQYXRoID0gZG93bmNhc3Q8U2hh
cGVDbGlwUGF0aE9wZXJhdGlvbj4oKmNsaXBQYXRoT3BlcmF0aW9uKTsKICAgICAgICAgRmxvYXRS
ZWN0IHJlZmVyZW5jZUJveDsKLSAgICAgICAgaWYgKGNsaXBQYXRoLnJlZmVyZW5jZUJveCgpID09
IFN0cm9rZSkKKyAgICAgICAgaWYgKGNsaXBQYXRoLnJlZmVyZW5jZUJveCgpID09IENTU0JveFR5
cGU6OlN0cm9rZSkgewogICAgICAgICAgICAgLy8gRklYTUU6IHN0cm9rZUJvdW5kaW5nQm94KCkg
dGFrZXMgZGFzaGFycmF5IGludG8gYWNjb3VudCBidXQgc2hvdWxkbid0LgogICAgICAgICAgICAg
cmVmZXJlbmNlQm94ID0gcmVuZGVyZXIuc3Ryb2tlQm91bmRpbmdCb3goKTsKLSAgICAgICAgZWxz
ZSBpZiAoY2xpcFBhdGgucmVmZXJlbmNlQm94KCkgPT0gVmlld0JveCAmJiByZW5kZXJlci5lbGVt
ZW50KCkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChjbGlwUGF0aC5yZWZlcmVuY2VCb3goKSA9PSBD
U1NCb3hUeXBlOjpWaWV3Qm94ICYmIHJlbmRlcmVyLmVsZW1lbnQoKSkgewogICAgICAgICAgICAg
RmxvYXRTaXplIHZpZXdwb3J0U2l6ZTsKICAgICAgICAgICAgIFNWR0xlbmd0aENvbnRleHQoZG93
bmNhc3Q8U1ZHRWxlbWVudD4ocmVuZGVyZXIuZWxlbWVudCgpKSkuZGV0ZXJtaW5lVmlld3BvcnQo
dmlld3BvcnRTaXplKTsKICAgICAgICAgICAgIHJlZmVyZW5jZUJveC5zZXRXaWR0aCh2aWV3cG9y
dFNpemUud2lkdGgoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Rl
eHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwCShyZXZp
c2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlv
dXRBdHRyaWJ1dGVzQnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAg
c3RhdGljIGlubGluZSB2b2lkIHByb2Nlc3NSZW5kZXJTVkdJbmxpbgogewogICAgIGF1dG8mIHN0
cmluZyA9IHRleHQudGV4dCgpOwogICAgIGF1dG8gbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwot
ICAgIGlmICh0ZXh0LnN0eWxlKCkud2hpdGVTcGFjZSgpID09IFBSRSkgeworICAgIGlmICh0ZXh0
LnN0eWxlKCkud2hpdGVTcGFjZSgpID09IFdoaXRlU3BhY2U6OlByZSkgewogICAgICAgICBhdENo
YXJhY3RlciArPSBsZW5ndGg7CiAgICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIu
Y3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1RleHRNZXRyaWNzQnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNSw3ICsxMzUsNyBA
QCB2b2lkIFNWR1RleHRNZXRyaWNzQnVpbGRlcjo6bWVhc3VyZVRleHRSCiAgICAgfQogCiAgICAg
aW5pdGlhbGl6ZU1lYXN1cmVtZW50V2l0aFRleHRSZW5kZXJlcih0ZXh0KTsKLSAgICBib29sIHBy
ZXNlcnZlV2hpdGVTcGFjZSA9IHRleHQuc3R5bGUoKS53aGl0ZVNwYWNlKCkgPT0gUFJFOworICAg
IGJvb2wgcHJlc2VydmVXaGl0ZVNwYWNlID0gdGV4dC5zdHlsZSgpLndoaXRlU3BhY2UoKSA9PSBX
aGl0ZVNwYWNlOjpQcmU7CiAgICAgaW50IHN1cnJvZ2F0ZVBhaXJDaGFyYWN0ZXJzID0gMDsKIAog
ICAgIHdoaWxlIChhZHZhbmNlKCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91
cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlckJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5jcHAJKHJl
dmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5k
ZXJUcmVlQnVpbGRlckJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAzLDcgKzMwMyw3IEBA
IFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IFJlbmRlclRyZWVCdWlsZGUKICAgICAgICAgICAgIC8v
IGNvbHVtbiBzcGFuIGZsYWcgaWYgaXQgaXMgc2V0LgogICAgICAgICAgICAgQVNTRVJUKCFpbmxp
bmVDaGlsZHJlbkJsb2NrLmNvbnRpbnVhdGlvbigpKTsKICAgICAgICAgICAgIC8vIENhY2hlIHRo
aXMgdmFsdWUgYXMgaXQgbWlnaHQgZ2V0IGNoYW5nZWQgaW4gc2V0U3R5bGUoKSBjYWxsLgotICAg
ICAgICAgICAgaW5saW5lQ2hpbGRyZW5CbG9jay5zZXRTdHlsZShSZW5kZXJTdHlsZTo6Y3JlYXRl
QW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnQuc3R5bGUoKSwgQkxPQ0spKTsKKyAgICAg
ICAgICAgIGlubGluZUNoaWxkcmVuQmxvY2suc2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNyZWF0ZUFu
b255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50LnN0eWxlKCksIERpc3BsYXlUeXBlOjpCbG9j
aykpOwogICAgICAgICAgICAgYXV0byBibG9ja1RvTW92ZSA9IG1fYnVpbGRlci5kZXRhY2hGcm9t
UmVuZGVyRWxlbWVudChwYXJlbnQsIGlubGluZUNoaWxkcmVuQmxvY2spOwogCiAgICAgICAgICAg
ICAvLyBOb3cganVzdCBwdXQgdGhlIGlubGluZUNoaWxkcmVuQmxvY2sgaW5zaWRlIHRoZSBibG9j
a0NoaWxkcmVuQmxvY2suCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcv
UmVuZGVyVHJlZUJ1aWxkZXJGaXJzdExldHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyRmlyc3RMZXR0ZXIuY3Bw
CShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcv
UmVuZGVyVHJlZUJ1aWxkZXJGaXJzdExldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcg
KzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgUmVuZGVyU3R5bGUgc3R5bGVG
b3JGaXJzdExldHRlcihjb25zdCBSZW5kZXJCbG9jayYgZmlyc3RMZXR0ZXJCbG9jaywgY29uc3Qg
UmVuZGVyT2JqZWN0JiBmaXJzdExldHRlckNvbnRhaW5lcikKIHsKLSAgICBhdXRvKiBjb250YWlu
ZXJGaXJzdExldHRlclN0eWxlID0gZmlyc3RMZXR0ZXJCbG9jay5nZXRDYWNoZWRQc2V1ZG9TdHls
ZShGSVJTVF9MRVRURVIsICZmaXJzdExldHRlckNvbnRhaW5lci5maXJzdExpbmVTdHlsZSgpKTsK
KyAgICBhdXRvKiBjb250YWluZXJGaXJzdExldHRlclN0eWxlID0gZmlyc3RMZXR0ZXJCbG9jay5n
ZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RMZXR0ZXIsICZmaXJzdExldHRlckNv
bnRhaW5lci5maXJzdExpbmVTdHlsZSgpKTsKICAgICAvLyBGSVhNRTogVGhlcmUgYXBwZWFycyB0
byBiZSBzb21lIHBhdGggd2hlcmUgd2UgaGF2ZSBhIGZpcnN0IGxldHRlciByZW5kZXJlciB3aXRo
b3V0IGZpcnN0IGxldHRlciBzdHlsZS4KICAgICBBU1NFUlQoY29udGFpbmVyRmlyc3RMZXR0ZXJT
dHlsZSk7CiAgICAgYXV0byBmaXJzdExldHRlclN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKGNv
bnRhaW5lckZpcnN0TGV0dGVyU3R5bGUgPyAqY29udGFpbmVyRmlyc3RMZXR0ZXJTdHlsZSA6IGZp
cnN0TGV0dGVyQ29udGFpbmVyLmZpcnN0TGluZVN0eWxlKCkpOwpAQCAtODIsNyArODIsNyBAQCBz
dGF0aWMgUmVuZGVyU3R5bGUgc3R5bGVGb3JGaXJzdExldHRlcihjCiAgICAgfQogCiAgICAgLy8g
Rm9yY2UgaW5saW5lIGRpc3BsYXkgKGV4Y2VwdCBmb3IgZmxvYXRpbmcgZmlyc3QtbGV0dGVycyku
Ci0gICAgZmlyc3RMZXR0ZXJTdHlsZS5zZXREaXNwbGF5KGZpcnN0TGV0dGVyU3R5bGUuaXNGbG9h
dGluZygpID8gQkxPQ0sgOiBJTkxJTkUpOworICAgIGZpcnN0TGV0dGVyU3R5bGUuc2V0RGlzcGxh
eShmaXJzdExldHRlclN0eWxlLmlzRmxvYXRpbmcoKSA/IERpc3BsYXlUeXBlOjpCbG9jayA6IERp
c3BsYXlUeXBlOjpJbmxpbmUpOwogICAgIC8vIENTUzIgc2F5cyBmaXJzdC1sZXR0ZXIgY2FuJ3Qg
YmUgcG9zaXRpb25lZC4KICAgICBmaXJzdExldHRlclN0eWxlLnNldFBvc2l0aW9uKFBvc2l0aW9u
VHlwZTo6U3RhdGljKTsKICAgICByZXR1cm4gZmlyc3RMZXR0ZXJTdHlsZTsKQEAgLTEyMSw3ICsx
MjEsNyBAQCBSZW5kZXJUcmVlQnVpbGRlcjo6Rmlyc3RMZXR0ZXI6OkZpcnN0TGV0CiAKIHZvaWQg
UmVuZGVyVHJlZUJ1aWxkZXI6OkZpcnN0TGV0dGVyOjp1cGRhdGVBZnRlckRlc2NlbmRhbnRzKFJl
bmRlckJsb2NrJiBibG9jaykKIHsKLSAgICBpZiAoIWJsb2NrLnN0eWxlKCkuaGFzUHNldWRvU3R5
bGUoRklSU1RfTEVUVEVSKSkKKyAgICBpZiAoIWJsb2NrLnN0eWxlKCkuaGFzUHNldWRvU3R5bGUo
UHNldWRvSWQ6OkZpcnN0TGV0dGVyKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghc3VwcG9y
dHNGaXJzdExldHRlcihibG9jaykpCiAgICAgICAgIHJldHVybjsKQEAgLTE0MCw3ICsxNDAsNyBA
QCB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjpGaXJzdExldHRlcjo6dXBkCiAKICAgICAvLyBJZiB0
aGUgY2hpbGQgYWxyZWFkeSBoYXMgc3R5bGUsIHRoZW4gaXQgaGFzIGFscmVhZHkgYmVlbiBjcmVh
dGVkLCBzbyB3ZSBqdXN0IHdhbnQKICAgICAvLyB0byB1cGRhdGUgaXQuCi0gICAgaWYgKGZpcnN0
TGV0dGVyUmVuZGVyZXItPnBhcmVudCgpLT5zdHlsZSgpLnN0eWxlVHlwZSgpID09IEZJUlNUX0xF
VFRFUikgeworICAgIGlmIChmaXJzdExldHRlclJlbmRlcmVyLT5wYXJlbnQoKS0+c3R5bGUoKS5z
dHlsZVR5cGUoKSA9PSBQc2V1ZG9JZDo6Rmlyc3RMZXR0ZXIpIHsKICAgICAgICAgdXBkYXRlU3R5
bGUoYmxvY2ssICpmaXJzdExldHRlclJlbmRlcmVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjpGaXJzdExldHRlcjo6
dXBkCiAgICAgaWYgKFN0eWxlOjpkZXRlcm1pbmVDaGFuZ2UoZmlyc3RMZXR0ZXItPnN0eWxlKCks
IHBzZXVkb1N0eWxlKSA9PSBTdHlsZTo6RGV0YWNoKSB7CiAgICAgICAgIC8vIFRoZSBmaXJzdC1s
ZXR0ZXIgcmVuZGVyZXIgbmVlZHMgdG8gYmUgcmVwbGFjZWQuIENyZWF0ZSBhIG5ldyByZW5kZXJl
ciBvZiB0aGUgcmlnaHQgdHlwZS4KICAgICAgICAgUmVuZGVyUHRyPFJlbmRlckJveE1vZGVsT2Jq
ZWN0PiBuZXdGaXJzdExldHRlcjsKLSAgICAgICAgaWYgKHBzZXVkb1N0eWxlLmRpc3BsYXkoKSA9
PSBJTkxJTkUpCisgICAgICAgIGlmIChwc2V1ZG9TdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5
cGU6OklubGluZSkKICAgICAgICAgICAgIG5ld0ZpcnN0TGV0dGVyID0gY3JlYXRlUmVuZGVyZXI8
UmVuZGVySW5saW5lPihmaXJzdExldHRlckJsb2NrLmRvY3VtZW50KCksIFdURk1vdmUocHNldWRv
U3R5bGUpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbmV3Rmlyc3RMZXR0ZXIgPSBjcmVh
dGVSZW5kZXJlcjxSZW5kZXJCbG9ja0Zsb3c+KGZpcnN0TGV0dGVyQmxvY2suZG9jdW1lbnQoKSwg
V1RGTW92ZShwc2V1ZG9TdHlsZSkpOwpAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgUmVuZGVyVHJl
ZUJ1aWxkZXI6OkZpcnN0TGV0dGVyOjpjcmUKICAgICBSZW5kZXJFbGVtZW50KiBmaXJzdExldHRl
ckNvbnRhaW5lciA9IGN1cnJlbnRUZXh0Q2hpbGQucGFyZW50KCk7CiAgICAgYXV0byBwc2V1ZG9T
dHlsZSA9IHN0eWxlRm9yRmlyc3RMZXR0ZXIoZmlyc3RMZXR0ZXJCbG9jaywgKmZpcnN0TGV0dGVy
Q29udGFpbmVyKTsKICAgICBSZW5kZXJQdHI8UmVuZGVyQm94TW9kZWxPYmplY3Q+IG5ld0ZpcnN0
TGV0dGVyOwotICAgIGlmIChwc2V1ZG9TdHlsZS5kaXNwbGF5KCkgPT0gSU5MSU5FKQorICAgIGlm
IChwc2V1ZG9TdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OklubGluZSkKICAgICAgICAg
bmV3Rmlyc3RMZXR0ZXIgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJJbmxpbmU+KGZpcnN0TGV0dGVy
QmxvY2suZG9jdW1lbnQoKSwgV1RGTW92ZShwc2V1ZG9TdHlsZSkpOwogICAgIGVsc2UKICAgICAg
ICAgbmV3Rmlyc3RMZXR0ZXIgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJCbG9ja0Zsb3c+KGZpcnN0
TGV0dGVyQmxvY2suZG9jdW1lbnQoKSwgV1RGTW92ZShwc2V1ZG9TdHlsZSkpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVySW5saW5lLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVy
VHJlZUJ1aWxkZXJJbmxpbmUuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJJbmxpbmUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6SW5saW5l
OjphdHRhY2hJZwogICAgICAgICAvLyBpbmxpbmUgaW50byBjb250aW51YXRpb25zLiBUaGlzIGlu
dm9sdmVzIGNyZWF0aW5nIGFuIGFub255bW91cyBibG9jayBib3ggdG8gaG9sZAogICAgICAgICAv
LyB8bmV3Q2hpbGR8LiBXZSB0aGVuIG1ha2UgdGhhdCBibG9jayBib3ggYSBjb250aW51YXRpb24g
b2YgdGhpcyBpbmxpbmUuIFdlIHRha2UgYWxsIG9mCiAgICAgICAgIC8vIHRoZSBjaGlsZHJlbiBh
ZnRlciB8YmVmb3JlQ2hpbGR8IGFuZCBwdXQgdGhlbSBpbiBhIGNsb25lIG9mIHRoaXMgb2JqZWN0
LgotICAgICAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0
eWxlV2l0aERpc3BsYXkocGFyZW50LnN0eWxlKCksIEJMT0NLKTsKKyAgICAgICAgYXV0byBuZXdT
dHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVu
dC5zdHlsZSgpLCBEaXNwbGF5VHlwZTo6QmxvY2spOwogCiAgICAgICAgIC8vIElmIGluc2lkZSBh
biBpbmxpbmUgYWZmZWN0ZWQgYnkgaW4tZmxvdyBwb3NpdGlvbmluZyB0aGUgYmxvY2sgbmVlZHMg
dG8gYmUgYWZmZWN0ZWQgYnkgaXQgdG9vLgogICAgICAgICAvLyBHaXZpbmcgdGhlIGJsb2NrIGEg
bGF5ZXIgbGlrZSB0aGlzIGFsbG93cyBpdCB0byBjb2xsZWN0IHRoZSB4L3kgb2Zmc2V0cyBmcm9t
IGlubGluZSBwYXJlbnRzIGxhdGVyLgpAQCAtMzc2LDcgKzM3Niw3IEBAIHZvaWQgUmVuZGVyVHJl
ZUJ1aWxkZXI6OklubGluZTo6c3BsaXRJbmwKIGJvb2wgUmVuZGVyVHJlZUJ1aWxkZXI6OklubGlu
ZTo6bmV3Q2hpbGRJc0lubGluZShjb25zdCBSZW5kZXJJbmxpbmUmIHBhcmVudCwgY29uc3QgUmVu
ZGVyT2JqZWN0JiBjaGlsZCkKIHsKICAgICAvLyBpbmxpbmUgcGFyZW50IGdlbmVyYXRlcyBpbmxp
bmUtdGFibGUuCi0gICAgcmV0dXJuIGNoaWxkLmlzSW5saW5lKCkgfHwgKG1fYnVpbGRlci50YWJs
ZUJ1aWxkZXIoKS5jaGlsZFJlcXVpcmVzVGFibGUocGFyZW50LCBjaGlsZCkgJiYgcGFyZW50LnN0
eWxlKCkuZGlzcGxheSgpID09IElOTElORSk7CisgICAgcmV0dXJuIGNoaWxkLmlzSW5saW5lKCkg
fHwgKG1fYnVpbGRlci50YWJsZUJ1aWxkZXIoKS5jaGlsZFJlcXVpcmVzVGFibGUocGFyZW50LCBj
aGlsZCkgJiYgcGFyZW50LnN0eWxlKCkuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpJbmxpbmUp
OwogfQogCiB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjpJbmxpbmU6OmNoaWxkQmVjYW1lTm9uSW5s
aW5lKFJlbmRlcklubGluZSYgcGFyZW50LCBSZW5kZXJFbGVtZW50JiBjaGlsZCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlckxpc3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJU
cmVlQnVpbGRlckxpc3QuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJMaXN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjpMaXN0Ojp1cGRhdGVJ
dGVtCiB7CiAgICAgYXV0byYgc3R5bGUgPSBsaXN0SXRlbVJlbmRlcmVyLnN0eWxlKCk7CiAKLSAg
ICBpZiAoc3R5bGUubGlzdFN0eWxlVHlwZSgpID09IE5vbmVMaXN0U3R5bGUgJiYgKCFzdHlsZS5s
aXN0U3R5bGVJbWFnZSgpIHx8IHN0eWxlLmxpc3RTdHlsZUltYWdlKCktPmVycm9yT2NjdXJyZWQo
KSkpIHsKKyAgICBpZiAoc3R5bGUubGlzdFN0eWxlVHlwZSgpID09IExpc3RTdHlsZVR5cGU6Ok5v
bmUgJiYgKCFzdHlsZS5saXN0U3R5bGVJbWFnZSgpIHx8IHN0eWxlLmxpc3RTdHlsZUltYWdlKCkt
PmVycm9yT2NjdXJyZWQoKSkpIHsKICAgICAgICAgaWYgKGF1dG8qIG1hcmtlciA9IGxpc3RJdGVt
UmVuZGVyZXIubWFya2VyUmVuZGVyZXIoKSkKICAgICAgICAgICAgIG1fYnVpbGRlci5kZXN0cm95
KCptYXJrZXIpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJNYXRoTUwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlck1hdGhNTC5j
cHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGlu
Zy9SZW5kZXJUcmVlQnVpbGRlck1hdGhNTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQy
LDcgQEAgUmVuZGVyVHJlZUJ1aWxkZXI6Ok1hdGhNTDo6TWF0aE1MKFJlbmRlcgogUmVuZGVyUHRy
PFJlbmRlck1hdGhNTEZlbmNlZE9wZXJhdG9yPiBSZW5kZXJUcmVlQnVpbGRlcjo6TWF0aE1MOjpj
cmVhdGVNYXRoTUxPcGVyYXRvcihSZW5kZXJNYXRoTUxGZW5jZWQmIHBhcmVudCwgY29uc3QgU3Ry
aW5nJiBvcGVyYXRvclN0cmluZywKICAgICBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkZvcm0g
Zm9ybSwgTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGbGFnIGZsYWcpCiB7Ci0gICAgUmVuZGVy
UHRyPFJlbmRlck1hdGhNTEZlbmNlZE9wZXJhdG9yPiBuZXdPcGVyYXRvciA9IGNyZWF0ZVJlbmRl
cmVyPFJlbmRlck1hdGhNTEZlbmNlZE9wZXJhdG9yPihwYXJlbnQuZG9jdW1lbnQoKSwgUmVuZGVy
U3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50LnN0eWxlKCksIEJM
T0NLKSwgb3BlcmF0b3JTdHJpbmcsIGZvcm0sIGZsYWcpOworICAgIFJlbmRlclB0cjxSZW5kZXJN
YXRoTUxGZW5jZWRPcGVyYXRvcj4gbmV3T3BlcmF0b3IgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJN
YXRoTUxGZW5jZWRPcGVyYXRvcj4ocGFyZW50LmRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVh
dGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudC5zdHlsZSgpLCBEaXNwbGF5VHlwZTo6
QmxvY2spLCBvcGVyYXRvclN0cmluZywgZm9ybSwgZmxhZyk7CiAgICAgbmV3T3BlcmF0b3ItPmlu
aXRpYWxpemVTdHlsZSgpOwogICAgIHJldHVybiBuZXdPcGVyYXRvcjsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlck11bHRpQ29sdW1u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZUJ1aWxkZXJNdWx0aUNvbHVtbi5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlck11bHRpQ29sdW1u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgUmVuZGVyVHJlZUJ1
aWxkZXI6Ok11bHRpQ29sdW1uOjpjcmUKICAgICAgICAgfQogICAgIH0KIAotICAgIGF1dG8gbmV3
RnJhZ21lbnRlZEZsb3cgPSAhZmxvdy5zdHlsZSgpLmhhc0xpbmVzQ2xhbXAoKSA/IFdlYkNvcmU6
OmNyZWF0ZVJlbmRlcmVyPFJlbmRlck11bHRpQ29sdW1uRmxvdz4oZmxvdy5kb2N1bWVudCgpLCBS
ZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShmbG93LnN0eWxlKCks
IEJMT0NLKSkgOiAgV2ViQ29yZTo6Y3JlYXRlUmVuZGVyZXI8UmVuZGVyTGluZXNDbGFtcEZsb3c+
KGZsb3cuZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERp
c3BsYXkoZmxvdy5zdHlsZSgpLCBCTE9DSykpOworICAgIGF1dG8gbmV3RnJhZ21lbnRlZEZsb3cg
PSAhZmxvdy5zdHlsZSgpLmhhc0xpbmVzQ2xhbXAoKSA/IFdlYkNvcmU6OmNyZWF0ZVJlbmRlcmVy
PFJlbmRlck11bHRpQ29sdW1uRmxvdz4oZmxvdy5kb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3Jl
YXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShmbG93LnN0eWxlKCksIERpc3BsYXlUeXBlOjpC
bG9jaykpIDogIFdlYkNvcmU6OmNyZWF0ZVJlbmRlcmVyPFJlbmRlckxpbmVzQ2xhbXBGbG93Pihm
bG93LmRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNw
bGF5KGZsb3cuc3R5bGUoKSwgRGlzcGxheVR5cGU6OkJsb2NrKSk7CiAgICAgbmV3RnJhZ21lbnRl
ZEZsb3ctPmluaXRpYWxpemVTdHlsZSgpOwogICAgIGF1dG8mIGZyYWdtZW50ZWRGbG93ID0gKm5l
d0ZyYWdtZW50ZWRGbG93OwogICAgIG1fYnVpbGRlci5ibG9ja0J1aWxkZXIoKS5hdHRhY2goZmxv
dywgV1RGTW92ZShuZXdGcmFnbWVudGVkRmxvdyksIG51bGxwdHIpOwpAQCAtMzUyLDcgKzM1Miw3
IEBAIFJlbmRlck9iamVjdCogUmVuZGVyVHJlZUJ1aWxkZXI6Ok11bHRpQ28KICAgICAvLyBOZWVk
IHRvIGNyZWF0ZSBhIG5ldyBjb2x1bW4gc2V0IHdoZW4gdGhlcmUncyBubyBzZXQgYWxyZWFkeSBj
cmVhdGVkLiBXZSBhbHNvIGFsd2F5cyBpbnNlcnQKICAgICAvLyBhbm90aGVyIGNvbHVtbiBzZXQg
YWZ0ZXIgYSBzcGFubmVyLiBFdmVuIGlmIGl0IHR1cm5zIG91dCB0aGF0IHRoZXJlIGFyZSBubyBy
ZW5kZXJlcnMKICAgICAvLyBmb2xsb3dpbmcgdGhlIHNwYW5uZXIsIHRoZXJlIG1heSBiZSBib3R0
b20gbWFyZ2lucyB0aGVyZSwgd2hpY2ggdGFrZSB1cCBzcGFjZS4KLSAgICBhdXRvIG5ld1NldCA9
IGZsb3cuY3JlYXRlTXVsdGlDb2x1bW5TZXQoUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0
eWxlV2l0aERpc3BsYXkobXVsdGljb2xDb250YWluZXItPnN0eWxlKCksIEJMT0NLKSk7CisgICAg
YXV0byBuZXdTZXQgPSBmbG93LmNyZWF0ZU11bHRpQ29sdW1uU2V0KFJlbmRlclN0eWxlOjpjcmVh
dGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KG11bHRpY29sQ29udGFpbmVyLT5zdHlsZSgpLCBE
aXNwbGF5VHlwZTo6QmxvY2spKTsKICAgICBuZXdTZXQtPmluaXRpYWxpemVTdHlsZSgpOwogICAg
IGF1dG8mIHNldCA9ICpuZXdTZXQ7CiAgICAgbV9idWlsZGVyLmJsb2NrQnVpbGRlcigpLmF0dGFj
aCgqbXVsdGljb2xDb250YWluZXIsIFdURk1vdmUobmV3U2V0KSwgaW5zZXJ0QmVmb3JlTXVsdGlj
b2xDaGlsZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVy
VHJlZUJ1aWxkZXJSdWJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJSdWJ5LmNwcAkocmV2aXNpb24gMjMyMTQzKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyUnVi
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGljIGlubGluZSBib29s
IGlzQW5vbnltb3VzUnVieUlubGluZQogICAgICAgICB8fCAhaXNSdWJ5KG9iamVjdC0+cGFyZW50
KCkpCiAgICAgICAgIHx8IGlzPFJlbmRlclJ1YnlSdW4+KCpvYmplY3QpCiAgICAgICAgIHx8IChv
YmplY3QtPmlzSW5saW5lKCkgJiYgKG9iamVjdC0+aXNCZWZvcmVDb250ZW50KCkgfHwgb2JqZWN0
LT5pc0FmdGVyQ29udGVudCgpKSkKLSAgICAgICAgfHwgKG9iamVjdC0+aXNBbm9ueW1vdXMoKSAm
JiBpczxSZW5kZXJCbG9jaz4oKm9iamVjdCkgJiYgb2JqZWN0LT5zdHlsZSgpLmRpc3BsYXkoKSA9
PSBJTkxJTkVfQkxPQ0spKTsKKyAgICAgICAgfHwgKG9iamVjdC0+aXNBbm9ueW1vdXMoKSAmJiBp
czxSZW5kZXJCbG9jaz4oKm9iamVjdCkgJiYgb2JqZWN0LT5zdHlsZSgpLmRpc3BsYXkoKSA9PSBE
aXNwbGF5VHlwZTo6SW5saW5lQmxvY2spKTsKIAogICAgIHJldHVybiBvYmplY3QKICAgICAgICAg
JiYgaXNSdWJ5KG9iamVjdC0+cGFyZW50KCkpCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBpc1J1YnlCZWZvcmVCbG9jayhjb24KICAgICByZXR1cm4gaXNBbm9ueW1vdXNSdWJ5
SW5saW5lQmxvY2sob2JqZWN0KQogICAgICAgICAmJiAhb2JqZWN0LT5wcmV2aW91c1NpYmxpbmco
KQogICAgICAgICAmJiBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKm9iamVjdCkuZmlyc3RDaGlsZCgp
Ci0gICAgICAgICYmIGRvd25jYXN0PFJlbmRlckJsb2NrPigqb2JqZWN0KS5maXJzdENoaWxkKCkt
PnN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gQkVGT1JFOworICAgICAgICAmJiBkb3duY2FzdDxSZW5k
ZXJCbG9jaz4oKm9iamVjdCkuZmlyc3RDaGlsZCgpLT5zdHlsZSgpLnN0eWxlVHlwZSgpID09IFBz
ZXVkb0lkOjpCZWZvcmU7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1J1YnlBZnRlckJsb2Nr
KGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0KQpAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgaXNSdWJ5QWZ0ZXJCbG9jayhjb25zCiAgICAgcmV0dXJuIGlzQW5vbnltb3VzUnVi
eUlubGluZUJsb2NrKG9iamVjdCkKICAgICAgICAgJiYgIW9iamVjdC0+bmV4dFNpYmxpbmcoKQog
ICAgICAgICAmJiBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKm9iamVjdCkuZmlyc3RDaGlsZCgpCi0g
ICAgICAgICYmIGRvd25jYXN0PFJlbmRlckJsb2NrPigqb2JqZWN0KS5maXJzdENoaWxkKCktPnN0
eWxlKCkuc3R5bGVUeXBlKCkgPT0gQUZURVI7CisgICAgICAgICYmIGRvd25jYXN0PFJlbmRlckJs
b2NrPigqb2JqZWN0KS5maXJzdENoaWxkKCktPnN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gUHNldWRv
SWQ6OkFmdGVyOwogfQogCiAjaWZuZGVmIEFTU0VSVF9ESVNBQkxFRApAQCAtOTcsNyArOTcsNyBA
QCBzdGF0aWMgaW5saW5lIFJlbmRlckJsb2NrKiBydWJ5QWZ0ZXJCbG9jCiAKIHN0YXRpYyBhdXRv
IGNyZWF0ZUFub255bW91c1J1YnlJbmxpbmVCbG9jayhSZW5kZXJPYmplY3QmIHJ1YnkpCiB7Ci0g
ICAgYXV0byBuZXdCbG9jayA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlckJsb2NrRmxvdz4ocnVieS5k
b2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShy
dWJ5LnN0eWxlKCksIElOTElORV9CTE9DSykpOworICAgIGF1dG8gbmV3QmxvY2sgPSBjcmVhdGVS
ZW5kZXJlcjxSZW5kZXJCbG9ja0Zsb3c+KHJ1YnkuZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNy
ZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocnVieS5zdHlsZSgpLCBEaXNwbGF5VHlwZTo6
SW5saW5lQmxvY2spKTsKICAgICBuZXdCbG9jay0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAgcmV0
dXJuIG5ld0Jsb2NrOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVCdWlsZGVyVGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclRhYmxlLmNwcAkocmV2aXNpb24g
MjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVC
dWlsZGVyVGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksOCArMTM5LDggQEAgUmVuZGVy
RWxlbWVudCYgUmVuZGVyVHJlZUJ1aWxkZXI6OlRhYmxlOgogICAgIGF1dG8qIHBhcmVudENhbmRp
ZGF0ZSA9IGJlZm9yZUNoaWxkOwogICAgIHdoaWxlIChwYXJlbnRDYW5kaWRhdGUgJiYgcGFyZW50
Q2FuZGlkYXRlLT5wYXJlbnQoKS0+aXNBbm9ueW1vdXMoKQogICAgICAgICAmJiAhaXM8UmVuZGVy
VGFibGVTZWN0aW9uPigqcGFyZW50Q2FuZGlkYXRlKQotICAgICAgICAmJiBwYXJlbnRDYW5kaWRh
dGUtPnN0eWxlKCkuZGlzcGxheSgpICE9IFRBQkxFX0NBUFRJT04KLSAgICAgICAgJiYgcGFyZW50
Q2FuZGlkYXRlLT5zdHlsZSgpLmRpc3BsYXkoKSAhPSBUQUJMRV9DT0xVTU5fR1JPVVApCisgICAg
ICAgICYmIHBhcmVudENhbmRpZGF0ZS0+c3R5bGUoKS5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6
OlRhYmxlQ2FwdGlvbgorICAgICAgICAmJiBwYXJlbnRDYW5kaWRhdGUtPnN0eWxlKCkuZGlzcGxh
eSgpICE9IERpc3BsYXlUeXBlOjpUYWJsZUNvbHVtbkdyb3VwKQogICAgICAgICBwYXJlbnRDYW5k
aWRhdGUgPSBwYXJlbnRDYW5kaWRhdGUtPnBhcmVudCgpOwogCiAgICAgaWYgKHBhcmVudENhbmRp
ZGF0ZSAmJiBpczxSZW5kZXJUYWJsZVNlY3Rpb24+KCpwYXJlbnRDYW5kaWRhdGUpICYmIHBhcmVu
dENhbmRpZGF0ZS0+aXNBbm9ueW1vdXMoKSAmJiAhcGFyZW50LmlzQWZ0ZXJDb250ZW50KHBhcmVu
dENhbmRpZGF0ZSkpIHsKQEAgLTE1MCw4ICsxNTAsOCBAQCBSZW5kZXJFbGVtZW50JiBSZW5kZXJU
cmVlQnVpbGRlcjo6VGFibGU6CiAgICAgfQogCiAgICAgaWYgKGJlZm9yZUNoaWxkICYmICFpczxS
ZW5kZXJUYWJsZVNlY3Rpb24+KCpiZWZvcmVDaGlsZCkKLSAgICAgICAgJiYgYmVmb3JlQ2hpbGQt
PnN0eWxlKCkuZGlzcGxheSgpICE9IFRBQkxFX0NBUFRJT04KLSAgICAgICAgJiYgYmVmb3JlQ2hp
bGQtPnN0eWxlKCkuZGlzcGxheSgpICE9IFRBQkxFX0NPTFVNTl9HUk9VUCkKKyAgICAgICAgJiYg
YmVmb3JlQ2hpbGQtPnN0eWxlKCkuZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpUYWJsZUNhcHRp
b24KKyAgICAgICAgJiYgYmVmb3JlQ2hpbGQtPnN0eWxlKCkuZGlzcGxheSgpICE9IERpc3BsYXlU
eXBlOjpUYWJsZUNvbHVtbkdyb3VwKQogICAgICAgICBiZWZvcmVDaGlsZCA9IG51bGxwdHI7CiAK
ICAgICBhdXRvIG5ld1NlY3Rpb24gPSBSZW5kZXJUYWJsZVNlY3Rpb246OmNyZWF0ZUFub255bW91
c1dpdGhQYXJlbnRSZW5kZXJlcihwYXJlbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCShyZXZpc2lv
biAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJl
ZVVwZGF0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw5ICs2Miw5IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICBjb25zdCBFbGVtZW50JiBtX2VsZW1lbnQ7Ci0gICAgRURpc3BsYXkgbV9w
cmV2aW91c0Rpc3BsYXk7Ci0gICAgRVZpc2liaWxpdHkgbV9wcmV2aW91c1Zpc2liaWxpdHk7Ci0g
ICAgRVZpc2liaWxpdHkgbV9wcmV2aW91c0ltcGxpY2l0VmlzaWJpbGl0eTsKKyAgICBEaXNwbGF5
VHlwZSBtX3ByZXZpb3VzRGlzcGxheTsKKyAgICBWaXNpYmlsaXR5IG1fcHJldmlvdXNWaXNpYmls
aXR5OworICAgIFZpc2liaWxpdHkgbV9wcmV2aW91c0ltcGxpY2l0VmlzaWJpbGl0eTsKIH07CiAj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogCkBAIC0yNTcsMTMgKzI1NywxMyBAQCB2b2lkIFJlbmRl
clRyZWVVcGRhdGVyOjpwb3BQYXJlbnRzVG9EZXB0CiB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1
cGRhdGVCZWZvcmVEZXNjZW5kYW50cyhFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHlsZTo6RWxl
bWVudFVwZGF0ZXMqIHVwZGF0ZXMpCiB7CiAgICAgaWYgKHVwZGF0ZXMpCi0gICAgICAgIGdlbmVy
YXRlZENvbnRlbnQoKS51cGRhdGVQc2V1ZG9FbGVtZW50KGVsZW1lbnQsIHVwZGF0ZXMtPmJlZm9y
ZVBzZXVkb0VsZW1lbnRVcGRhdGUsIEJFRk9SRSk7CisgICAgICAgIGdlbmVyYXRlZENvbnRlbnQo
KS51cGRhdGVQc2V1ZG9FbGVtZW50KGVsZW1lbnQsIHVwZGF0ZXMtPmJlZm9yZVBzZXVkb0VsZW1l
bnRVcGRhdGUsIFBzZXVkb0lkOjpCZWZvcmUpOwogfQogCiB2b2lkIFJlbmRlclRyZWVVcGRhdGVy
Ojp1cGRhdGVBZnRlckRlc2NlbmRhbnRzKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0eWxlOjpF
bGVtZW50VXBkYXRlcyogdXBkYXRlcykKIHsKICAgICBpZiAodXBkYXRlcykKLSAgICAgICAgZ2Vu
ZXJhdGVkQ29udGVudCgpLnVwZGF0ZVBzZXVkb0VsZW1lbnQoZWxlbWVudCwgdXBkYXRlcy0+YWZ0
ZXJQc2V1ZG9FbGVtZW50VXBkYXRlLCBBRlRFUik7CisgICAgICAgIGdlbmVyYXRlZENvbnRlbnQo
KS51cGRhdGVQc2V1ZG9FbGVtZW50KGVsZW1lbnQsIHVwZGF0ZXMtPmFmdGVyUHNldWRvRWxlbWVu
dFVwZGF0ZSwgUHNldWRvSWQ6OkFmdGVyKTsKIAogICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVu
dC5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIpCkBAIC0zMTcsMTMgKzMxNywxMyBAQCB2
b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVFbGVtZW50UmVuCiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBkaXNwbGF5Om5vbmUgY2FuY2VscyBhbmltYXRpb25zLgotICAgICAgICBhdXRvIHRl
YXJkb3duVHlwZSA9IHVwZGF0ZS5zdHlsZS0+ZGlzcGxheSgpID09IE5PTkUgPyBUZWFyZG93blR5
cGU6OlJlbmRlcmVyVXBkYXRlQ2FuY2VsaW5nQW5pbWF0aW9ucyA6IFRlYXJkb3duVHlwZTo6UmVu
ZGVyZXJVcGRhdGU7CisgICAgICAgIGF1dG8gdGVhcmRvd25UeXBlID0gdXBkYXRlLnN0eWxlLT5k
aXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUgPyBUZWFyZG93blR5cGU6OlJlbmRlcmVyVXBk
YXRlQ2FuY2VsaW5nQW5pbWF0aW9ucyA6IFRlYXJkb3duVHlwZTo6UmVuZGVyZXJVcGRhdGU7CiAg
ICAgICAgIHRlYXJEb3duUmVuZGVyZXJzKGVsZW1lbnQsIHRlYXJkb3duVHlwZSwgbV9idWlsZGVy
KTsKIAogICAgICAgICByZW5kZXJpbmdQYXJlbnQoKS5kaWRDcmVhdGVPckRlc3Ryb3lDaGlsZFJl
bmRlcmVyID0gdHJ1ZTsKICAgICB9CiAKLSAgICBib29sIGhhc0Rpc3BsYXlDb250ZW50cyA9IHVw
ZGF0ZS5zdHlsZS0+ZGlzcGxheSgpID09IENPTlRFTlRTOworICAgIGJvb2wgaGFzRGlzcGxheUNv
bnRlbnRzID0gdXBkYXRlLnN0eWxlLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OkNvbnRlbnRz
OwogICAgIGlmIChoYXNEaXNwbGF5Q29udGVudHMpCiAgICAgICAgIGVsZW1lbnQuc3RvcmVEaXNw
bGF5Q29udGVudHNTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnVwZGF0ZS5zdHlsZSkpOwog
ICAgIGVsc2UKQEAgLTY0MCwzNCArNjQwLDM0IEBAIFJlbmRlclZpZXcmIFJlbmRlclRyZWVVcGRh
dGVyOjpyZW5kZXJWaWUKIH0KIAogI2lmIFBMQVRGT1JNKElPUykKLXN0YXRpYyBFVmlzaWJpbGl0
eSBlbGVtZW50SW1wbGljaXRWaXNpYmlsaXR5KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCitzdGF0
aWMgVmlzaWJpbGl0eSBlbGVtZW50SW1wbGljaXRWaXNpYmlsaXR5KGNvbnN0IEVsZW1lbnQmIGVs
ZW1lbnQpCiB7CiAgICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7CiAgICAg
aWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIFZJU0lCTEU7CisgICAgICAgIHJldHVybiBW
aXNpYmlsaXR5OjpWaXNpYmxlOwogCiAgICAgYXV0byYgc3R5bGUgPSByZW5kZXJlci0+c3R5bGUo
KTsKIAogICAgIGF1dG8gd2lkdGggPSBzdHlsZS53aWR0aCgpOwogICAgIGF1dG8gaGVpZ2h0ID0g
c3R5bGUuaGVpZ2h0KCk7CiAgICAgaWYgKCh3aWR0aC5pc0ZpeGVkKCkgJiYgd2lkdGgudmFsdWUo
KSA8PSAwKSB8fCAoaGVpZ2h0LmlzRml4ZWQoKSAmJiBoZWlnaHQudmFsdWUoKSA8PSAwKSkKLSAg
ICAgICAgcmV0dXJuIEhJRERFTjsKKyAgICAgICAgcmV0dXJuIFZpc2liaWxpdHk6OkhpZGRlbjsK
IAogICAgIGF1dG8gdG9wID0gc3R5bGUudG9wKCk7CiAgICAgYXV0byBsZWZ0ID0gc3R5bGUubGVm
dCgpOwogICAgIGlmIChsZWZ0LmlzRml4ZWQoKSAmJiB3aWR0aC5pc0ZpeGVkKCkgJiYgLWxlZnQu
dmFsdWUoKSA+PSB3aWR0aC52YWx1ZSgpKQotICAgICAgICByZXR1cm4gSElEREVOOworICAgICAg
ICByZXR1cm4gVmlzaWJpbGl0eTo6SGlkZGVuOwogCiAgICAgaWYgKHRvcC5pc0ZpeGVkKCkgJiYg
aGVpZ2h0LmlzRml4ZWQoKSAmJiAtdG9wLnZhbHVlKCkgPj0gaGVpZ2h0LnZhbHVlKCkpCi0gICAg
ICAgIHJldHVybiBISURERU47Ci0gICAgcmV0dXJuIFZJU0lCTEU7CisgICAgICAgIHJldHVybiBW
aXNpYmlsaXR5OjpIaWRkZW47CisgICAgcmV0dXJuIFZpc2liaWxpdHk6OlZpc2libGU7CiB9CiAK
IENoZWNrRm9yVmlzaWJpbGl0eUNoYW5nZTo6Q2hlY2tGb3JWaXNpYmlsaXR5Q2hhbmdlKGNvbnN0
IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgOiBtX2VsZW1lbnQoZWxlbWVudCkKLSAgICAsIG1fcHJl
dmlvdXNEaXNwbGF5KGVsZW1lbnQucmVuZGVyU3R5bGUoKSA/IGVsZW1lbnQucmVuZGVyU3R5bGUo
KS0+ZGlzcGxheSgpIDogTk9ORSkKLSAgICAsIG1fcHJldmlvdXNWaXNpYmlsaXR5KGVsZW1lbnQu
cmVuZGVyU3R5bGUoKSA/IGVsZW1lbnQucmVuZGVyU3R5bGUoKS0+dmlzaWJpbGl0eSgpIDogSElE
REVOKQotICAgICwgbV9wcmV2aW91c0ltcGxpY2l0VmlzaWJpbGl0eShXS09ic2VydmluZ0NvbnRl
bnRDaGFuZ2VzKCkgJiYgV0tPYnNlcnZlZENvbnRlbnRDaGFuZ2UoKSAhPSBXS0NvbnRlbnRWaXNp
YmlsaXR5Q2hhbmdlID8gZWxlbWVudEltcGxpY2l0VmlzaWJpbGl0eShlbGVtZW50KSA6IFZJU0lC
TEUpCisgICAgLCBtX3ByZXZpb3VzRGlzcGxheShlbGVtZW50LnJlbmRlclN0eWxlKCkgPyBlbGVt
ZW50LnJlbmRlclN0eWxlKCktPmRpc3BsYXkoKSA6IERpc3BsYXlUeXBlOjpOb25lKQorICAgICwg
bV9wcmV2aW91c1Zpc2liaWxpdHkoZWxlbWVudC5yZW5kZXJTdHlsZSgpID8gZWxlbWVudC5yZW5k
ZXJTdHlsZSgpLT52aXNpYmlsaXR5KCkgOiBWaXNpYmlsaXR5OjpIaWRkZW4pCisgICAgLCBtX3By
ZXZpb3VzSW1wbGljaXRWaXNpYmlsaXR5KFdLT2JzZXJ2aW5nQ29udGVudENoYW5nZXMoKSAmJiBX
S09ic2VydmVkQ29udGVudENoYW5nZSgpICE9IFdLQ29udGVudFZpc2liaWxpdHlDaGFuZ2UgPyBl
bGVtZW50SW1wbGljaXRWaXNpYmlsaXR5KGVsZW1lbnQpIDogVmlzaWJpbGl0eTo6VmlzaWJsZSkK
IHsKIH0KIApAQCAtNjgwLDggKzY4MCw4IEBAIENoZWNrRm9yVmlzaWJpbGl0eUNoYW5nZTo6fkNo
ZWNrRm9yVmlzaWIKICAgICBhdXRvKiBzdHlsZSA9IG1fZWxlbWVudC5yZW5kZXJTdHlsZSgpOwog
ICAgIGlmICghc3R5bGUpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoKG1fcHJldmlvdXNEaXNw
bGF5ID09IE5PTkUgJiYgc3R5bGUtPmRpc3BsYXkoKSAhPSBOT05FKSB8fCAobV9wcmV2aW91c1Zp
c2liaWxpdHkgPT0gSElEREVOICYmIHN0eWxlLT52aXNpYmlsaXR5KCkgIT0gSElEREVOKQotICAg
ICAgICB8fCAobV9wcmV2aW91c0ltcGxpY2l0VmlzaWJpbGl0eSA9PSBISURERU4gJiYgZWxlbWVu
dEltcGxpY2l0VmlzaWJpbGl0eShtX2VsZW1lbnQpID09IFZJU0lCTEUpKQorICAgIGlmICgobV9w
cmV2aW91c0Rpc3BsYXkgPT0gRGlzcGxheVR5cGU6Ok5vbmUgJiYgc3R5bGUtPmRpc3BsYXkoKSAh
PSBEaXNwbGF5VHlwZTo6Tm9uZSkgfHwgKG1fcHJldmlvdXNWaXNpYmlsaXR5ID09IFZpc2liaWxp
dHk6OkhpZGRlbiAmJiBzdHlsZS0+dmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OkhpZGRlbikK
KyAgICAgICAgfHwgKG1fcHJldmlvdXNJbXBsaWNpdFZpc2liaWxpdHkgPT0gVmlzaWJpbGl0eTo6
SGlkZGVuICYmIGVsZW1lbnRJbXBsaWNpdFZpc2liaWxpdHkobV9lbGVtZW50KSA9PSBWaXNpYmls
aXR5OjpWaXNpYmxlKSkKICAgICAgICAgV0tTZXRPYnNlcnZlZENvbnRlbnRDaGFuZ2UoV0tDb250
ZW50VmlzaWJpbGl0eUNoYW5nZSk7CiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRlZENvbnRlbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVl
VXBkYXRlckdlbmVyYXRlZENvbnRlbnQuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsMTQgKzkxLDE0IEBAIHN0YXRpYyB2b2lkIHVw
ZGF0ZVN0eWxlRm9yQ29udGVudFJlbmRlcmUKIAogdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6R2Vu
ZXJhdGVkQ29udGVudDo6dXBkYXRlUHNldWRvRWxlbWVudChFbGVtZW50JiBjdXJyZW50LCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFN0eWxlOjpFbGVtZW50VXBkYXRlPiYgdXBkYXRlLCBQc2V1ZG9JZCBw
c2V1ZG9JZCkKIHsKLSAgICBQc2V1ZG9FbGVtZW50KiBwc2V1ZG9FbGVtZW50ID0gcHNldWRvSWQg
PT0gQkVGT1JFID8gY3VycmVudC5iZWZvcmVQc2V1ZG9FbGVtZW50KCkgOiBjdXJyZW50LmFmdGVy
UHNldWRvRWxlbWVudCgpOworICAgIFBzZXVkb0VsZW1lbnQqIHBzZXVkb0VsZW1lbnQgPSBwc2V1
ZG9JZCA9PSBQc2V1ZG9JZDo6QmVmb3JlID8gY3VycmVudC5iZWZvcmVQc2V1ZG9FbGVtZW50KCkg
OiBjdXJyZW50LmFmdGVyUHNldWRvRWxlbWVudCgpOwogCiAgICAgaWYgKGF1dG8qIHJlbmRlcmVy
ID0gcHNldWRvRWxlbWVudCA/IHBzZXVkb0VsZW1lbnQtPnJlbmRlcmVyKCkgOiBudWxscHRyKQog
ICAgICAgICBtX3VwZGF0ZXIucmVuZGVyVHJlZVBvc2l0aW9uKCkuaW52YWxpZGF0ZU5leHRTaWJs
aW5nKCpyZW5kZXJlcik7CiAKICAgICBpZiAoIW5lZWRzUHNldWRvRWxlbWVudCh1cGRhdGUpKSB7
CiAgICAgICAgIGlmIChwc2V1ZG9FbGVtZW50KSB7Ci0gICAgICAgICAgICBpZiAocHNldWRvSWQg
PT0gQkVGT1JFKQorICAgICAgICAgICAgaWYgKHBzZXVkb0lkID09IFBzZXVkb0lkOjpCZWZvcmUp
CiAgICAgICAgICAgICAgICAgcmVtb3ZlQmVmb3JlUHNldWRvRWxlbWVudChjdXJyZW50LCBtX3Vw
ZGF0ZXIubV9idWlsZGVyKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByZW1v
dmVBZnRlclBzZXVkb0VsZW1lbnQoY3VycmVudCwgbV91cGRhdGVyLm1fYnVpbGRlcik7CkBAIC0x
MTYsMTMgKzExNiwxMyBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjpHZW5lcmF0ZWRDb250ZW50
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChuZXdQc2V1ZG9FbGVtZW50KSB7Ci0gICAgICAg
IGlmIChwc2V1ZG9JZCA9PSBCRUZPUkUpCisgICAgICAgIGlmIChwc2V1ZG9JZCA9PSBQc2V1ZG9J
ZDo6QmVmb3JlKQogICAgICAgICAgICAgY3VycmVudC5zZXRCZWZvcmVQc2V1ZG9FbGVtZW50KG5l
d1BzZXVkb0VsZW1lbnQucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGN1cnJlbnQuc2V0QWZ0ZXJQc2V1ZG9FbGVtZW50KG5ld1BzZXVkb0VsZW1lbnQucmVsZWFz
ZU5vbk51bGwoKSk7CiAgICAgfQogCi0gICAgaWYgKHVwZGF0ZS0+c3R5bGUtPmRpc3BsYXkoKSA9
PSBDT05URU5UUykgeworICAgIGlmICh1cGRhdGUtPnN0eWxlLT5kaXNwbGF5KCkgPT0gRGlzcGxh
eVR5cGU6OkNvbnRlbnRzKSB7CiAgICAgICAgIC8vIEZvciBkaXNwbGF5OmNvbnRlbnRzIHdlIGNy
ZWF0ZSBhbiBpbmxpbmUgd3JhcHBlciB0aGF0IGluaGVyaXRzIGl0cwogICAgICAgICAvLyBzdHls
ZSBmcm9tIHRoZSBkaXNwbGF5OmNvbnRlbnRzIHN0eWxlLgogICAgICAgICBhdXRvIGNvbnRlbnRz
U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlUHRyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJj
ZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExOSw3ICsxMTksNyBAQCBHbHlwaE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlv
CiAgICAgZmxvYXQgaGVpZ2h0ID0gbGluZVN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3Mo
KS5mbG9hdEhlaWdodCgpOwogICAgIEdseXBoT3ZlcmZsb3cgb3ZlcmZsb3dSZXN1bHQ7CiAgICAg
Ci0gICAgaWYgKGRlY29yYXRpb25TdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlV2F2eSkgewor
ICAgIGlmIChkZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSkgewog
ICAgICAgICBnZXRXYXZ5U3Ryb2tlUGFyYW1ldGVycyhsaW5lU3R5bGUuY29tcHV0ZWRGb250UGl4
ZWxTaXplKCksIGNvbnRyb2xQb2ludERpc3RhbmNlLCBzdGVwKTsKICAgICAgICAgd2F2eU9mZnNl
dCA9IHdhdnlPZmZzZXRGcm9tRGVjb3JhdGlvbigpOwogICAgICAgICBvdmVyZmxvd1Jlc3VsdC5s
ZWZ0ID0gc3Ryb2tlVGhpY2tuZXNzOwpAQCAtMTMxLDcgKzEzMSw3IEBAIEdseXBoT3ZlcmZsb3cg
dmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW8KICAgICAgICAgLy8gQ29tcGVuc2F0ZSBmb3IgdGhl
IGludGVncmFsIGNlaWxpbmcgaW4gR3JhcGhpY3NDb250ZXh0Ojpjb21wdXRlTGluZUJvdW5kc0Fu
ZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0KCkKICAgICAgICAgaW50IHVuZGVybGluZU9mZnNldCA9
IDE7CiAgICAgICAgIHVuZGVybGluZU9mZnNldCArPSBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KGxp
bmVTdHlsZS50ZXh0VW5kZXJsaW5lUG9zaXRpb24oKSwgbGluZVN0eWxlLmZvbnRNZXRyaWNzKCks
IGlubGluZVRleHRCb3gsIHN0cm9rZVRoaWNrbmVzcyk7Ci0gICAgICAgIGlmIChkZWNvcmF0aW9u
U3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZVdhdnkpIHsKKyAgICAgICAgaWYgKGRlY29yYXRp
b25TdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5KSB7CiAgICAgICAgICAgICBleHRl
bmRJbnRUb0Zsb2F0KG92ZXJmbG93UmVzdWx0LmJvdHRvbSwgdW5kZXJsaW5lT2Zmc2V0ICsgd2F2
eU9mZnNldCArIGNvbnRyb2xQb2ludERpc3RhbmNlICsgc3Ryb2tlVGhpY2tuZXNzIC0gaGVpZ2h0
KTsKICAgICAgICAgICAgIGV4dGVuZEludFRvRmxvYXQob3ZlcmZsb3dSZXN1bHQudG9wLCAtKHVu
ZGVybGluZU9mZnNldCArIHdhdnlPZmZzZXQgLSBjb250cm9sUG9pbnREaXN0YW5jZSAtIHN0cm9r
ZVRoaWNrbmVzcykpOwogICAgICAgICB9IGVsc2UgewpAQCAtMTQwLDcgKzE0MCw3IEBAIEdseXBo
T3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW8KICAgICAgICAgfQogICAgIH0KICAg
ICBpZiAoZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uT3ZlcmxpbmUpIHsKLSAgICAgICAgaWYg
KGRlY29yYXRpb25TdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlV2F2eSkgeworICAgICAgICBp
ZiAoZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkpIHsKICAgICAg
ICAgICAgIGV4dGVuZEludFRvRmxvYXQob3ZlcmZsb3dSZXN1bHQuYm90dG9tLCAtd2F2eU9mZnNl
dCArIGNvbnRyb2xQb2ludERpc3RhbmNlICsgc3Ryb2tlVGhpY2tuZXNzIC0gaGVpZ2h0KTsKICAg
ICAgICAgICAgIGV4dGVuZEludFRvRmxvYXQob3ZlcmZsb3dSZXN1bHQudG9wLCB3YXZ5T2Zmc2V0
ICsgY29udHJvbFBvaW50RGlzdGFuY2UgKyBzdHJva2VUaGlja25lc3MpOwogICAgICAgICB9IGVs
c2UgewpAQCAtMTUwLDcgKzE1MCw3IEBAIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JE
ZWNvcmF0aW8KICAgICB9CiAgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbkxpbmVU
aHJvdWdoKSB7CiAgICAgICAgIGZsb2F0IGJhc2VsaW5lID0gbGluZVN0eWxlLmZvbnRNZXRyaWNz
KCkuZmxvYXRBc2NlbnQoKTsKLSAgICAgICAgaWYgKGRlY29yYXRpb25TdHlsZSA9PSBUZXh0RGVj
b3JhdGlvblN0eWxlV2F2eSkgeworICAgICAgICBpZiAoZGVjb3JhdGlvblN0eWxlID09IFRleHRE
ZWNvcmF0aW9uU3R5bGU6OldhdnkpIHsKICAgICAgICAgICAgIGV4dGVuZEludFRvRmxvYXQob3Zl
cmZsb3dSZXN1bHQuYm90dG9tLCAyICogYmFzZWxpbmUgLyAzICsgY29udHJvbFBvaW50RGlzdGFu
Y2UgKyBzdHJva2VUaGlja25lc3MgLSBoZWlnaHQpOwogICAgICAgICAgICAgZXh0ZW5kSW50VG9G
bG9hdChvdmVyZmxvd1Jlc3VsdC50b3AsIC0oMiAqIGJhc2VsaW5lIC8gMyAtIGNvbnRyb2xQb2lu
dERpc3RhbmNlIC0gc3Ryb2tlVGhpY2tuZXNzKSk7CiAgICAgICAgIH0gZWxzZSB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUNoYW5nZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVDaGFuZ2UuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZUNoYW5nZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcg
KzM1LDcgQEAgQ2hhbmdlIGRldGVybWluZUNoYW5nZShjb25zdCBSZW5kZXJTdHlsZQogewogICAg
IGlmIChzMS5kaXNwbGF5KCkgIT0gczIuZGlzcGxheSgpKQogICAgICAgICByZXR1cm4gRGV0YWNo
OwotICAgIGlmIChzMS5oYXNQc2V1ZG9TdHlsZShGSVJTVF9MRVRURVIpICE9IHMyLmhhc1BzZXVk
b1N0eWxlKEZJUlNUX0xFVFRFUikpCisgICAgaWYgKHMxLmhhc1BzZXVkb1N0eWxlKFBzZXVkb0lk
OjpGaXJzdExldHRlcikgIT0gczIuaGFzUHNldWRvU3R5bGUoUHNldWRvSWQ6OkZpcnN0TGV0dGVy
KSkKICAgICAgICAgcmV0dXJuIERldGFjaDsKICAgICAvLyBXZSBqdXN0IGRldGFjaCBpZiBhIHJl
bmRlcmVyIGFjcXVpcmVzIG9yIGxvc2VzIGEgY29sdW1uLXNwYW4sIHNpbmNlIHNwYW5uaW5nIGVs
ZW1lbnRzCiAgICAgLy8gdHlwaWNhbGx5IHdvbid0IGNvbnRhaW4gbXVjaCBjb250ZW50LgpAQCAt
NjIsNyArNjIsNyBAQCBDaGFuZ2UgZGV0ZXJtaW5lQ2hhbmdlKGNvbnN0IFJlbmRlclN0eWxlCiAg
ICAgLy8gSWYgdGhlIHBzZXVkb1N0eWxlcyBoYXZlIGNoYW5nZWQsIHdlIHdhbnQgYW55IFN0eWxl
Q2hhbmdlIHRoYXQgaXMgbm90IE5vQ2hhbmdlCiAgICAgLy8gYmVjYXVzZSBzZXRTdHlsZSB3aWxs
IGRvIHRoZSByaWdodCB0aGluZyB3aXRoIGFueXRoaW5nIGVsc2UuCiAgICAgaWYgKHMxLmhhc0Fu
eVB1YmxpY1BzZXVkb1N0eWxlcygpKSB7Ci0gICAgICAgIGZvciAoUHNldWRvSWQgcHNldWRvSWQg
PSBGSVJTVF9QVUJMSUNfUFNFVURPSUQ7IHBzZXVkb0lkIDwgRklSU1RfSU5URVJOQUxfUFNFVURP
SUQ7IHBzZXVkb0lkID0gc3RhdGljX2Nhc3Q8UHNldWRvSWQ+KHBzZXVkb0lkICsgMSkpIHsKKyAg
ICAgICAgZm9yIChQc2V1ZG9JZCBwc2V1ZG9JZCA9IFBzZXVkb0lkOjpGaXJzdFB1YmxpY1BzZXVk
b0lkOyBwc2V1ZG9JZCA8IFBzZXVkb0lkOjpGaXJzdEludGVybmFsUHNldWRvSWQ7IHBzZXVkb0lk
ID0gc3RhdGljX2Nhc3Q8UHNldWRvSWQ+KHN0YXRpY19jYXN0PHVuc2lnbmVkPihwc2V1ZG9JZCkg
KyAxKSkgewogICAgICAgICAgICAgaWYgKHMxLmhhc1BzZXVkb1N0eWxlKHBzZXVkb0lkKSkgewog
ICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwczIgPSBzMi5nZXRDYWNoZWRQc2V1ZG9TdHls
ZShwc2V1ZG9JZCk7CiAgICAgICAgICAgICAgICAgaWYgKCFwczIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZUZvbnRTaXplRnVuY3Rpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZUZvbnRTaXplRnVuY3Rpb25zLmNwcAkocmV2aXNpb24gMjMy
MTQzKQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVGb250U2l6ZUZ1bmN0aW9ucy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAgZmxvYXQgY29tcHV0ZWRGb250U2l6ZUZy
b21TcGVjaWZpZWRTaXplKAogICAgIGlmICghdXNlU1ZHWm9vbVJ1bGVzKSB7CiAgICAgICAgIHpv
b21GYWN0b3IgPSBzdHlsZS0+ZWZmZWN0aXZlWm9vbSgpOwogICAgICAgICBGcmFtZSogZnJhbWUg
PSBkb2N1bWVudC5mcmFtZSgpOwotICAgICAgICBpZiAoZnJhbWUgJiYgc3R5bGUtPnRleHRab29t
KCkgIT0gVGV4dFpvb21SZXNldCkKKyAgICAgICAgaWYgKGZyYW1lICYmIHN0eWxlLT50ZXh0Wm9v
bSgpICE9IFRleHRab29tOjpSZXNldCkKICAgICAgICAgICAgIHpvb21GYWN0b3IgKj0gZnJhbWUt
PnRleHRab29tRmFjdG9yKCk7CiAgICAgfQogICAgIHJldHVybiBjb21wdXRlZEZvbnRTaXplRnJv
bVNwZWNpZmllZFNpemUoc3BlY2lmaWVkU2l6ZSwgaXNBYnNvbHV0ZVNpemUsIHpvb21GYWN0b3Is
IHVzZVNWR1pvb21SdWxlcyA/IE1pbmltdW1Gb250U2l6ZVJ1bGU6Ok5vbmUgOiBNaW5pbXVtRm9u
dFNpemVSdWxlOjpBYnNvbHV0ZUFuZFJlbGF0aXZlLCBkb2N1bWVudC5zZXR0aW5ncygpKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5j
cHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2
ZUZvckRvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsOCArNTgsOCBAQCBSZW5kZXJT
dHlsZSByZXNvbHZlRm9yRG9jdW1lbnQoY29uc3QgRG9jCiAKICAgICBhdXRvIGRvY3VtZW50U3R5
bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CiAKLSAgICBkb2N1bWVudFN0eWxlLnNldERpc3Bs
YXkoQkxPQ0spOwotICAgIGRvY3VtZW50U3R5bGUuc2V0UlRMT3JkZXJpbmcoZG9jdW1lbnQudmlz
dWFsbHlPcmRlcmVkKCkgPyBWaXN1YWxPcmRlciA6IExvZ2ljYWxPcmRlcik7CisgICAgZG9jdW1l
bnRTdHlsZS5zZXREaXNwbGF5KERpc3BsYXlUeXBlOjpCbG9jayk7CisgICAgZG9jdW1lbnRTdHls
ZS5zZXRSVExPcmRlcmluZyhkb2N1bWVudC52aXN1YWxseU9yZGVyZWQoKSA/IE9yZGVyOjpWaXN1
YWwgOiBPcmRlcjo6TG9naWNhbCk7CiAgICAgZG9jdW1lbnRTdHlsZS5zZXRab29tKCFkb2N1bWVu
dC5wcmludGluZygpID8gcmVuZGVyVmlldy5mcmFtZSgpLnBhZ2Vab29tRmFjdG9yKCkgOiAxKTsK
ICAgICBkb2N1bWVudFN0eWxlLnNldFBhZ2VTY2FsZVRyYW5zZm9ybShyZW5kZXJWaWV3LmZyYW1l
KCkuZnJhbWVTY2FsZUZhY3RvcigpKTsKICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGRvY3Vt
ZW50Rm9udERlc2NyaXB0aW9uID0gZG9jdW1lbnRTdHlsZS5mb250RGVzY3JpcHRpb24oKTsKQEAg
LTk5LDcgKzk5LDcgQEAgUmVuZGVyU3R5bGUgcmVzb2x2ZUZvckRvY3VtZW50KGNvbnN0IERvYwog
ICAgICAgICAgICAgcmVuZGVyVmlldy51cGRhdGVDb2x1bW5Qcm9ncmVzc2lvbkZyb21TdHlsZShk
b2N1bWVudFN0eWxlKTsKICAgICAgICAgaWYgKHJlbmRlclZpZXcucGFnZSgpLnBhZ2luYXRpb25M
aW5lR3JpZEVuYWJsZWQoKSkgewogICAgICAgICAgICAgZG9jdW1lbnRTdHlsZS5zZXRMaW5lR3Jp
ZCgiLXdlYmtpdC1kZWZhdWx0LXBhZ2luYXRpb24tZ3JpZCIpOwotICAgICAgICAgICAgZG9jdW1l
bnRTdHlsZS5zZXRMaW5lU25hcChMaW5lU25hcENvbnRhaW4pOworICAgICAgICAgICAgZG9jdW1l
bnRTdHlsZS5zZXRMaW5lU25hcChMaW5lU25hcDo6Q29udGFpbik7CiAgICAgICAgIH0KICAgICB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2hhcmluZ1Jlc29sdmVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNoYXJpbmdSZXNvbHZlci5j
cHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2hhcmlu
Z1Jlc29sdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBzdHJ1Y3QgU2hh
cmluZ1Jlc29sdmVyOjpDb250ZXh0IHsKICAgICBjb25zdCBVcGRhdGUmIHVwZGF0ZTsKICAgICBj
b25zdCBTdHlsZWRFbGVtZW50JiBlbGVtZW50OwogICAgIGJvb2wgZWxlbWVudEFmZmVjdGVkQnlD
bGFzc1J1bGVzOwotICAgIEVJbnNpZGVMaW5rIGVsZW1lbnRMaW5rU3RhdGU7CisgICAgSW5zaWRl
TGluayBlbGVtZW50TGlua1N0YXRlOwogfTsKIAogU2hhcmluZ1Jlc29sdmVyOjpTaGFyaW5nUmVz
b2x2ZXIoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBEb2N1bWVudFJ1bGVTZXRzJiBy
dWxlU2V0cywgY29uc3QgU2VsZWN0b3JGaWx0ZXImIHNlbGVjdG9yRmlsdGVyKQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAkocmV2aXNpb24gMjMyMTQz
KQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTYsNyArMTU2LDcgQEAgc3RhdGljIGJvb2wgYWZmZWN0c1JlbmRlcmVkU3Vi
dHJlZShFbGVtZQogewogICAgIGlmIChlbGVtZW50LnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVy
biB0cnVlOwotICAgIGlmIChuZXdTdHlsZS5kaXNwbGF5KCkgIT0gTk9ORSkKKyAgICBpZiAobmV3
U3R5bGUuZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpOb25lKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICBpZiAoZWxlbWVudC5yZW5kZXJlcklzTmVlZGVkKG5ld1N0eWxlKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CkBAIC0yMzksMTUgKzIzOSwxNSBAQCBFbGVtZW50VXBkYXRlcyBUcmVlUmVz
b2x2ZXI6OnJlc29sdmVFbGVtCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBhdXRvIGJlZm9yZVVw
ZGF0ZSA9IHJlc29sdmVQc2V1ZG9TdHlsZShlbGVtZW50LCB1cGRhdGUsIEJFRk9SRSk7Ci0gICAg
YXV0byBhZnRlclVwZGF0ZSA9IHJlc29sdmVQc2V1ZG9TdHlsZShlbGVtZW50LCB1cGRhdGUsIEFG
VEVSKTsKKyAgICBhdXRvIGJlZm9yZVVwZGF0ZSA9IHJlc29sdmVQc2V1ZG9TdHlsZShlbGVtZW50
LCB1cGRhdGUsIFBzZXVkb0lkOjpCZWZvcmUpOworICAgIGF1dG8gYWZ0ZXJVcGRhdGUgPSByZXNv
bHZlUHNldWRvU3R5bGUoZWxlbWVudCwgdXBkYXRlLCBQc2V1ZG9JZDo6QWZ0ZXIpOwogCiAgICAg
cmV0dXJuIHsgV1RGTW92ZSh1cGRhdGUpLCBkZXNjZW5kYW50c1RvUmVzb2x2ZSwgV1RGTW92ZShi
ZWZvcmVVcGRhdGUpLCBXVEZNb3ZlKGFmdGVyVXBkYXRlKSB9OwogfQogCiBFbGVtZW50VXBkYXRl
IFRyZWVSZXNvbHZlcjo6cmVzb2x2ZVBzZXVkb1N0eWxlKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0
IEVsZW1lbnRVcGRhdGUmIGVsZW1lbnRVcGRhdGUsIFBzZXVkb0lkIHBzZXVkb0lkKQogewotICAg
IGlmIChlbGVtZW50VXBkYXRlLnN0eWxlLT5kaXNwbGF5KCkgPT0gTk9ORSkKKyAgICBpZiAoZWxl
bWVudFVwZGF0ZS5zdHlsZS0+ZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpOb25lKQogICAgICAg
ICByZXR1cm4geyB9OwogICAgIGlmICghZWxlbWVudFVwZGF0ZS5zdHlsZS0+aGFzUHNldWRvU3R5
bGUocHNldWRvSWQpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMjU2LDExICsyNTYsMTEgQEAg
RWxlbWVudFVwZGF0ZSBUcmVlUmVzb2x2ZXI6OnJlc29sdmVQc2V1ZAogICAgIGlmICghcHNldWRv
U3R5bGUpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBQc2V1ZG9FbGVtZW50KiBwc2V1ZG9F
bGVtZW50ID0gcHNldWRvSWQgPT0gQkVGT1JFID8gZWxlbWVudC5iZWZvcmVQc2V1ZG9FbGVtZW50
KCkgOiBlbGVtZW50LmFmdGVyUHNldWRvRWxlbWVudCgpOworICAgIFBzZXVkb0VsZW1lbnQqIHBz
ZXVkb0VsZW1lbnQgPSBwc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6QmVmb3JlID8gZWxlbWVudC5iZWZv
cmVQc2V1ZG9FbGVtZW50KCkgOiBlbGVtZW50LmFmdGVyUHNldWRvRWxlbWVudCgpOwogICAgIGlm
ICghcHNldWRvRWxlbWVudCkgewogICAgICAgICBhdXRvIG5ld1BzZXVkb0VsZW1lbnQgPSBQc2V1
ZG9FbGVtZW50OjpjcmVhdGUoZWxlbWVudCwgcHNldWRvSWQpOwogICAgICAgICBwc2V1ZG9FbGVt
ZW50ID0gbmV3UHNldWRvRWxlbWVudC5wdHIoKTsKLSAgICAgICAgaWYgKHBzZXVkb0lkID09IEJF
Rk9SRSkKKyAgICAgICAgaWYgKHBzZXVkb0lkID09IFBzZXVkb0lkOjpCZWZvcmUpCiAgICAgICAg
ICAgICBlbGVtZW50LnNldEJlZm9yZVBzZXVkb0VsZW1lbnQoV1RGTW92ZShuZXdQc2V1ZG9FbGVt
ZW50KSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGVsZW1lbnQuc2V0QWZ0ZXJQc2V1ZG9F
bGVtZW50KFdURk1vdmUobmV3UHNldWRvRWxlbWVudCkpOwpAQCAtMjc0LDkgKzI3NCw5IEBAIGNv
bnN0IFJlbmRlclN0eWxlKiBUcmVlUmVzb2x2ZXI6OnBhcmVudEIKICAgICAvLyAnZGlzcGxheTog
Y29udGVudHMnIGRvZXNuJ3QgZ2VuZXJhdGUgYm94ZXMuCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
bV9wYXJlbnRTdGFjay5zaXplKCk7IGk7IC0taSkgewogICAgICAgICBhdXRvJiBwYXJlbnQgPSBt
X3BhcmVudFN0YWNrW2kgLSAxXTsKLSAgICAgICAgaWYgKHBhcmVudC5zdHlsZS5kaXNwbGF5KCkg
PT0gTk9ORSkKKyAgICAgICAgaWYgKHBhcmVudC5zdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5
cGU6Ok5vbmUpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgaWYgKHBhcmVu
dC5zdHlsZS5kaXNwbGF5KCkgIT0gQ09OVEVOVFMpCisgICAgICAgIGlmIChwYXJlbnQuc3R5bGUu
ZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpDb250ZW50cykKICAgICAgICAgICAgIHJldHVybiAm
cGFyZW50LnN0eWxlOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTQzMyw3
ICs0MzMsNyBAQCBzdGF0aWMgYm9vbCBoYXNMb2FkaW5nU3R5bGVzaGVldChjb25zdCBTCiAKIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZUluaGVyaXRlZERpc3BsYXlD
b250ZW50c1N0eWxlSWZOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudEVsZW1lbnRTdHls
ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEJveFN0eWxlKQogewotICAgIGlmIChwYXJlbnRF
bGVtZW50U3R5bGUuZGlzcGxheSgpICE9IENPTlRFTlRTKQorICAgIGlmIChwYXJlbnRFbGVtZW50
U3R5bGUuZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpDb250ZW50cykKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgaWYgKHBhcmVudEJveFN0eWxlICYmICFwYXJlbnRCb3hTdHlsZS0+aW5o
ZXJpdGVkTm90RXF1YWwoJnBhcmVudEVsZW1lbnRTdHlsZSkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtNDY1LDcgKzQ2NSw3IEBAIHZvaWQgVHJlZVJlc29sdmVyOjpyZXNvbHZlQ29tcG9z
ZWRUcmVlKCkKICAgICAgICAgaWYgKGlzPFRleHQ+KG5vZGUpKSB7CiAgICAgICAgICAgICBhdXRv
JiB0ZXh0ID0gZG93bmNhc3Q8VGV4dD4obm9kZSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IGlmICgodGV4dC5zdHlsZVZhbGlkaXR5KCkgPj0gVmFsaWRpdHk6OlN1YnRyZWVBbmRSZW5kZXJl
cnNJbnZhbGlkICYmIHBhcmVudC5jaGFuZ2UgIT0gRGV0YWNoKSB8fCBwYXJlbnQuc3R5bGUuZGlz
cGxheSgpID09IENPTlRFTlRTKSB7CisgICAgICAgICAgICBpZiAoKHRleHQuc3R5bGVWYWxpZGl0
eSgpID49IFZhbGlkaXR5OjpTdWJ0cmVlQW5kUmVuZGVyZXJzSW52YWxpZCAmJiBwYXJlbnQuY2hh
bmdlICE9IERldGFjaCkgfHwgcGFyZW50LnN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6
Q29udGVudHMpIHsKICAgICAgICAgICAgICAgICBUZXh0VXBkYXRlIHRleHRVcGRhdGU7CiAgICAg
ICAgICAgICAgICAgdGV4dFVwZGF0ZS5pbmhlcml0ZWREaXNwbGF5Q29udGVudHNTdHlsZSA9IGNy
ZWF0ZUluaGVyaXRlZERpc3BsYXlDb250ZW50c1N0eWxlSWZOZWVkZWQocGFyZW50LnN0eWxlLCBw
YXJlbnRCb3hTdHlsZSgpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCShyZXZpc2lv
biAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzIsNyArMTcyLDcgQEAgcHJvdGVjdGVkOgogICAgIGNsYXNzIEluc3RhbmNlSW52
YWxpZGF0aW9uR3VhcmQ7CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVuZGVyU3R5bGUqIGNvbXB1
dGVkU3R5bGUoUHNldWRvSWQgPSBOT1BTRVVETykgZmluYWw7CisgICAgY29uc3QgUmVuZGVyU3R5
bGUqIGNvbXB1dGVkU3R5bGUoUHNldWRvSWQgPSBQc2V1ZG9JZDo6Tm9uZSkgZmluYWw7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJUYXJnZXQoKSB7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0dFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBAIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBTVkdHRWxlbWVudDo6Y3IKICAgICAvLyBXZSBzdGlsbCBoYXZlIHRvIGNy
ZWF0ZSByZW5kZXJlcnMgZm9yIHRoZSA8Zz4gJiA8bGluZWFyR3JhZGllbnQ+IGVsZW1lbnQsIHRo
b3VnaCB0aGUKICAgICAvLyBzdWJ0cmVlIG1heSBiZSBoaWRkZW4gLSB3ZSBvbmx5IHdhbnQgdGhl
IHJlc291cmNlIHJlbmRlcmVycyB0byBleGlzdCBzbyB0aGV5IGNhbiBiZQogICAgIC8vIHJlZmVy
ZW5jZWQgZnJvbSBzb21ld2hlcmUgZWxzZS4KLSAgICBpZiAoc3R5bGUuZGlzcGxheSgpID09IE5P
TkUpCisgICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSkKICAgICAg
ICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcj4oKnRoaXMs
IFdURk1vdmUoc3R5bGUpKTsKIAogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdU
cmFuc2Zvcm1hYmxlQ29udGFpbmVyPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwpJbmRleDogU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTgtMDUtMjIgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb2Rlcm5p
emUgUmVuZGVyU3R5bGVDb25zdGFudHMuaCAtIFBhcnQgMgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1OTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlv
bi5tbToKKyAgICAgICAgKHNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnQpOgorICAgICAgICAq
IFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKG5zVGV4dEFsaWdubWVudEZyb21SZW5kZXJT
dHlsZSk6CisKIDIwMTgtMDUtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZWdyZXNzaW9uKEFzeW5jUG9saWN5RGVsZWdhdGVzKTogQm94LmFwcCBsb2dpbiBX
aW5kb3cgaXMgYmxhbmsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
SFRNTFJlcHJlc2VudGF0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCShyZXZpc2lvbiAyMzIxNDMpCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5t
bQkod29ya2luZyBjb3B5KQpAQCAtNDU1LDcgKzQ1NSw3IEBAIHN0YXRpYyBOU1N0cmluZyogc2Vh
cmNoRm9yTGFiZWxzQmVmb3JlRWwKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgc2VhcmNoZWRDZWxsQWJvdmUgPSB0cnVlOwotICAgICAg
ICB9IGVsc2UgaWYgKG4tPmlzVGV4dE5vZGUoKSAmJiBuLT5yZW5kZXJlcigpICYmIG4tPnJlbmRl
cmVyKCktPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUpIHsKKyAgICAgICAgfSBlbHNl
IGlmIChuLT5pc1RleHROb2RlKCkgJiYgbi0+cmVuZGVyZXIoKSAmJiBuLT5yZW5kZXJlcigpLT5z
dHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlKSB7CiAgICAgICAgICAg
ICAvLyBGb3IgZWFjaCB0ZXh0IGNodW5rLCBydW4gdGhlIHJlZ2V4cAogICAgICAgICAgICAgU3Ry
aW5nIG5vZGVTdHJpbmcgPSBuLT5ub2RlVmFsdWUoKTsKICAgICAgICAgICAgIC8vIGFkZCAxMDAg
Zm9yIHNsb3AsIHRvIG1ha2UgaXQgbW9yZSBsaWtlbHkgdGhhdCB3ZSdsbCBzZWFyY2ggd2hvbGUg
bm9kZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0J
KHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtOTc5OSwyNSArOTc5OSwyNSBAQCBzdGF0aWMgTlNU
ZXh0QWxpZ25tZW50IG5zVGV4dEFsaWdubWVudEZyCiB7CiAgICAgTlNUZXh0QWxpZ25tZW50IHRl
eHRBbGlnbm1lbnQ7CiAgICAgc3dpdGNoIChzdHlsZS0+dGV4dEFsaWduKCkpIHsKLSAgICBjYXNl
IFJJR0hUOgotICAgIGNhc2UgV0VCS0lUX1JJR0hUOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6
UmlnaHQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRSaWdodDoKICAgICAgICAgdGV4
dEFsaWdubWVudCA9IE5TVGV4dEFsaWdubWVudFJpZ2h0OwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIExFRlQ6Ci0gICAgY2FzZSBXRUJLSVRfTEVGVDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6
OkxlZnQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgogICAgICAgICB0ZXh0
QWxpZ25tZW50ID0gTlNUZXh0QWxpZ25tZW50TGVmdDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBDRU5URVI6Ci0gICAgY2FzZSBXRUJLSVRfQ0VOVEVSOgorICAgIGNhc2UgVGV4dEFsaWduTW9k
ZTo6Q2VudGVyOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0Q2VudGVyOgogICAgICAg
ICB0ZXh0QWxpZ25tZW50ID0gTlNUZXh0QWxpZ25tZW50Q2VudGVyOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIEpVU1RJRlk6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5OgogICAg
ICAgICB0ZXh0QWxpZ25tZW50ID0gTlNUZXh0QWxpZ25tZW50SnVzdGlmaWVkOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFRBU1RBUlQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpTdGFydDoK
ICAgICAgICAgdGV4dEFsaWdubWVudCA9IHN0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkg
PyBOU1RleHRBbGlnbm1lbnRMZWZ0IDogTlNUZXh0QWxpZ25tZW50UmlnaHQ7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgVEFFTkQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpFbmQ6CiAgICAg
ICAgIHRleHRBbGlnbm1lbnQgPSBzdHlsZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gTlNU
ZXh0QWxpZ25tZW50UmlnaHQgOiBOU1RleHRBbGlnbm1lbnRMZWZ0OwogICAgICAgICBicmVhazsK
ICAgICBkZWZhdWx0Ogo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341176</attachid>
            <date>2018-05-23 22:36:10 -0700</date>
            <delta_ts>2018-05-24 18:42:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185901-20180523223608.patch</filename>
            <type>text/plain</type>
            <size>676632</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMjE0NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg1MyBAQAorMjAxOC0wNS0yMyAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIE1vZGVybml6ZSBSZW5kZXJTdHlsZUNv
bnN0YW50cy5oIC0gUGFydCAyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODU5MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBNb2Rlcm5pemVkIHRoZSBzZWNvbmQgc2V0IG9mIGVudW1zIGluIFJlbmRlclN0
eWxlQ29uc3RhbnRzLmggYnk6CisgICAgICAgICAgICAtIENvbnZlcnRpbmcgdGhlbSB0byBlbnVt
IGNsYXNzZXMKKyAgICAgICAgICAgIC0gUmVuYW1pbmcgdGhlbSB0byByZW1vdmUgdW5uZWNlc3Nh
cnkgcHJlZml4ICdFJ3MKKyAgICAgICAgICAgIC0gUmVuYW1pbmcgdmFsdWVzIHRvIHRha2UgYWR2
YW50YWdlIG9mIGVudW0gY2xhc3Mgc2NvcGluZyAoZS5nLiBTdHlsZURpZmZlcmVuY2VFcXVhbCAt
PiBTdHlsZURpZmZlcmVuY2U6OkVxdWFsKQorICAgICAgICAgICAgLSBSZW5hbWluZyB0byBtYXRj
aCBtb2Rlcm4gY29udmVudGlvbnMgKGUuZyBCTk9ORSAtPiBOb25lKQorICAgICAgICAgICAgLSBS
ZWZvcm1hdHRpbmcgdGhlbSBzbyB0aGF0IGVhY2ggdmFsdWUgaXMgb24gaXRzIG93biBsaW5lLgor
CisgICAgICAgIE1vZGVybml6ZXMgdGhlIGZvbGxvd2luZyBlbnVtczoKKyAgICAgICAgICAgIFBz
ZXVkb0lkCisgICAgICAgICAgICBMaXN0U3R5bGVUeXBlIChyZW5hbWVkIGZyb20gRUxpc3RTdHls
ZVR5cGUpCisgICAgICAgICAgICBCb3JkZXJGaXQgKHJlbmFtZWQgZnJvbSBFQm9yZGVyRml0KQor
ICAgICAgICAgICAgQW5pbWF0aW9uRmlsbE1vZGUgKHJlbmFtZWQgZnJvbSBFQW5pbWF0aW9uRmls
bE1vZGUpCisgICAgICAgICAgICBBbmltYXRpb25QbGF5U3RhdGUgKHJlbmFtZWQgZnJvbSBFQW5p
bVBsYXlTdGF0ZSkKKyAgICAgICAgICAgIFdoaXRlU3BhY2UgKHJlbmFtZWQgZnJvbSBFV2hpdGVT
cGFjZSkKKyAgICAgICAgICAgIFRleHRBbGlnbk1vZGUgKHJlbmFtZWQgZnJvbSBFVGV4dEFsaWdu
KQorICAgICAgICAgICAgVGV4dFRyYW5zZm9ybSAocmVuYW1lZCBmcm9tIEVUZXh0VHJhbnNmb3Jt
KQorICAgICAgICAgICAgVGV4dERlY29yYXRpb25TdHlsZQorICAgICAgICAgICAgVGV4dEFsaWdu
TGFzdAorICAgICAgICAgICAgVGV4dEp1c3RpZnkKKyAgICAgICAgICAgIFRleHRab29tCisgICAg
ICAgICAgICBCcmVha0JldHdlZW4KKyAgICAgICAgICAgIEJyZWFrSW5zaWRlCisgICAgICAgICAg
ICBFbXB0eUNlbGwgKHJlbmFtZWQgZnJvbSBFRW1wdHlDZWxsKQorICAgICAgICAgICAgQ2FwdGlv
blNpZGUgKHJlbmFtZWQgZnJvbSBFQ2FwdGlvblNpZGUpCisgICAgICAgICAgICBMaXN0U3R5bGVQ
b3NpdGlvbiAocmVuYW1lZCBmcm9tIEVMaXN0U3R5bGVQb3NpdGlvbikKKyAgICAgICAgICAgIFZp
c2liaWxpdHkgKHJlbmFtZWQgZnJvbSBFVmlzaWJpbGl0eSkKKyAgICAgICAgICAgIEN1cnNvclR5
cGUgKHJlbmFtZWQgZnJvbSBFQ3Vyc29yKQorICAgICAgICAgICAgQ3Vyc29yVmlzaWJpbGl0eQor
ICAgICAgICAgICAgRGlzcGxheVR5cGUgKHJlbmFtZWQgZnJvbSBFRGlzcGxheSkKKyAgICAgICAg
ICAgIEluc2lkZUxpbmsgKHJlbmFtZWQgZnJvbSBFSW5zaWRlTGluaykKKyAgICAgICAgICAgIFBv
aW50ZXJFdmVudHMgKHJlbmFtZWQgZnJvbSBFUG9pbnRlckV2ZW50cykKKyAgICAgICAgICAgIEh5
cGhlbnMKKyAgICAgICAgICAgIFRleHRFbXBoYXNpc0ZpbGwKKyAgICAgICAgICAgIFRleHRFbXBo
YXNpc01hcmsKKyAgICAgICAgICAgIEltYWdlUmVzb2x1dGlvblNvdXJjZQorICAgICAgICAgICAg
SW1hZ2VSZXNvbHV0aW9uU25hcAorICAgICAgICAgICAgT3JkZXIKKyAgICAgICAgICAgIENvbHVt
bkF4aXMKKyAgICAgICAgICAgIENvbHVtblByb2dyZXNzaW9uCisgICAgICAgICAgICBMaW5lU25h
cAorICAgICAgICAgICAgTGluZUFsaWduCisgICAgICAgICAgICBSdWJ5UG9zaXRpb24KKyAgICAg
ICAgICAgIEF1dG9SZXBlYXRUeXBlCisgICAgICAgICAgICBDU1NCb3hUeXBlCisKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhP
YmplY3RDYWNoZTo6aXNOb2RlVmlzaWJsZSBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
TGlzdDo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU1lZGlhQ29udHJvbDo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lZGlhVGltZURpc3BsYXk6OmNv
bXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6aXNET01IaWRkZW4gY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjpkZWZhdWx0T2JqZWN0SW5jbHVzaW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzVW52aXNpdGVkIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzVmlzaXRl
ZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpz
ZXRWYWx1ZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjppc0RhdGFUYWJsZSBjb25z
dCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFj
ZVRleHQuY3BwOgorICAgICAgICAoZ2V0QXR0cmlidXRlU2V0Rm9yQWNjZXNzaWJpbGl0eU9iamVj
dCk6CisgICAgICAgICogYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NBbmltYXRpb25zRm9yRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTVHJhbnNp
dGlvbnNGb3JFbGVtZW50KToKKyAgICAgICAgKiBhbmltYXRpb24vQ1NTQW5pbWF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0FuaW1hdGlvbjo6c3luY1Byb3BlcnRpZXNXaXRoQmFja2lu
Z0FuaW1hdGlvbik6CisgICAgICAgICogYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRlY2xhcmF0aXZlQW5pbWF0aW9uOjppbml0aWFsaXplKToK
KyAgICAgICAgKiBhbmltYXRpb24vS2V5ZnJhbWVFZmZlY3RSZWFkT25seS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdFJlYWRPbmx5OjpiYWNraW5nQW5pbWF0aW9uRm9yQ29t
cG9zaXRlZFJlbmRlcmVyIGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbmRlclRleHREZWNvcmF0aW9uU3R5
bGVGbGFnc1RvQ1NTVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvUGFnZUJyZWFr
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0NvbHVtbkJyZWFrKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnN0eWxlZEVsZW1lbnQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6c3R5bGVkUmVuZGVyZXIgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZVJlbmRlclN0eWxlRm9yUHJvcGVydHkpOgor
ICAgICAgICAoV2ViQ29yZTo6c2hhcGVQcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yUHJvcGVydHlpblN0eWxlKToKKyAgICAg
ICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmg6CisgICAgICAgICogY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRp
dmVWYWx1ZTo6b3BlcmF0b3IgQ2FwdGlvblNpZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEN1cnNvclR5cGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEN1cnNvclZpc2liaWxpdHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIERpc3Bs
YXlUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVy
YXRvciBFbXB0eUNlbGwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFs
dWU6Om9wZXJhdG9yIExpc3RTdHlsZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBMaXN0U3R5bGVUeXBlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBCcmVha0JldHdlZW4gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEJyZWFr
SW5zaWRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVy
YXRvciBUZXh0QWxpZ25Nb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2
ZVZhbHVlOjpvcGVyYXRvciBUZXh0QWxpZ25MYXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0SnVzdGlmeSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgVGV4dERlY29yYXRpb25TdHls
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3Ig
VGV4dFRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1
ZTo6b3BlcmF0b3IgVmlzaWJpbGl0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmlt
aXRpdmVWYWx1ZTo6b3BlcmF0b3IgV2hpdGVTcGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgUnVieVBvc2l0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0RW1waGFzaXNGaWxs
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBU
ZXh0RW1waGFzaXNNYXJrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZh
bHVlOjpvcGVyYXRvciBQb2ludGVyRXZlbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBIeXBoZW5zIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBMaW5lU25hcCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgTGluZUFsaWduIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBPcmRlciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQm9yZGVy
Rml0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRv
ciBDb2x1bW5BeGlzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVl
OjpvcGVyYXRvciBDb2x1bW5Qcm9ncmVzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQ1NTQm94VHlwZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgVGV4dFpvb20gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVDYXB0aW9uU2lkZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3Bl
cmF0b3IgRUN1cnNvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmlt
aXRpdmVWYWx1ZTo6b3BlcmF0b3IgRURpc3BsYXkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVFbXB0eUNlbGwgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVM
aXN0U3R5bGVQb3NpdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQ
cmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUxpc3RTdHlsZVR5cGUgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVUZXh0QWxpZ24g
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6Om9w
ZXJhdG9yIEVUZXh0VHJhbnNmb3JtIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFVmlzaWJpbGl0eSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRVdoaXRlU3Bh
Y2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6
Om9wZXJhdG9yIEVQb2ludGVyRXZlbnRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFQm9yZGVyRml0IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U2VsZWN0b3I6OnBzZXVkb0lkKToKKyAgICAgICAgKiBjc3MvQ1NTVG9TdHlsZU1hcC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25GaWxsTW9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25QbGF5U3RhdGUpOgor
ICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAgICAqIGNzcy9FbGVtZW50
UnVsZUNvbGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UnVsZUNvbGxlY3Rv
cjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVD
b2xsZWN0b3I6OnJ1bGVNYXRjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29s
bGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIGNzcy9FbGVt
ZW50UnVsZUNvbGxlY3Rvci5oOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjptYXRjaCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6Om1hdGNoSG9zdFBzZXVkb0NsYXNzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Omhhc1Njcm9sbGJhclBzZXVkb0VsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjptYXRjaFJlY3Vyc2l2ZWx5IGNvbnN0KToKKyAgICAg
ICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmg6CisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlckNv
bnZlcnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0VGV4dEFsaWduKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydENsaXBQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFNoYXBlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjcmVhdGVHcmlkVHJhY2tMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y3NzdG9MZW5ndGhDb252ZXJzaW9uRGF0YVdpdGhUZXh0Wm9vbUZhY3Rv
cik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQYWdl
QnJlYWtCZXR3ZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydFBhZ2VCcmVha0luc2lkZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRDb2x1bW5CcmVha0JldHdlZW4pOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q29sdW1uQnJlYWtJbnNpZGUpOgorICAgICAg
ICAqIGNzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlWYWx1ZUltYWdlUmVzb2x1dGlvbik6CisgICAgICAgIChXZWJDb3Jl
Ojpjb21wdXRlQmFzZVNwZWNpZmllZEZvbnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdFRleHRab29tKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6aXNWYWxpZERpc3BsYXlWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdERpc3BsYXkpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRGlzcGxheSk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRUZXh0RW1w
aGFzaXNTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5
VmFsdWVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eVZhbHVlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmRl
dGVybWluZVJ1YnlUZXh0U2l6ZU11bHRpcGxpZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQWx0KToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6ZXF1aXZhbGVudEJsb2NrRGlzcGxheSk6CisgICAgICAgIChX
ZWJDb3JlOjpkb2VzTm90SW5oZXJpdFRleHREZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUmVzb2x2ZXI6OmFkanVzdFN0eWxlRm9ySW50ZXJDaGFyYWN0ZXJSdWJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmFkanVzdERpc3BsYXlDb250ZW50c1N0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUmVzb2x2ZXI6OmFkanVzdFNWR0VsZW1lbnRTdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJlc29sdmVyOjphZGp1c3RSZW5kZXJTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVJlc29sdmVyOjpzdHlsZVJ1bGVzRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
Ojppc0NhY2hlYWJsZUluTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVJlc29sdmVyOjphcHBseU1hdGNoZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6UHJvcGVydHk6OmFwcGx5KToK
KyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6U3RhdGU6OmVsZW1lbnRMaW5rU3RhdGUgY29uc3QpOgorICAgICAgICAqIGNzc2pp
dC9TZWxlY3RvckNvbXBpbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGls
ZXI6OmNvbnN0cnVjdEZyYWdtZW50c0ludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVj
dG9yQ29tcGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVSZXF1ZXN0ZWRQc2V1
ZG9FbGVtZW50RXF1YWxzVG9TZWxlY3RvclBzZXVkb0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZU1hcmtQ
c2V1ZG9TdHlsZUZvclBzZXVkb0VsZW1lbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c3R5bGVGb3JFbGVtZW50SWdub3JpbmdQZW5k
aW5nU3R5bGVzaGVldHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmlzUGFnZUJveFZp
c2libGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldFZpc3VhbGx5T3JkZXJlZCk6
CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aXNGb2N1c2FibGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6aGFzRGlzcGxheUNvbnRlbnRzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OnN0b3JlRGlzcGxheUNvbnRlbnRzU3R5bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpiZWZv
cmVPckFmdGVyUHNldWRvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpjb21w
dXRlZFN0eWxlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9Ob2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVFZGl0YWJpbGl0eUZyb21Db21wdXRlZFN0
eWxlKToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXNQ
c2V1ZG9FbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzQmVmb3JlUHNl
dWRvRWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0FmdGVyUHNldWRv
RWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpwc2V1ZG9JZCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpjdXN0b21Qc2V1ZG9JZCBjb25zdCk6CisgICAgICAg
ICogZG9tL1Bvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjp1cHN0cmVh
bSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6ZG93bnN0cmVhbSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6aXNDYW5kaWRhdGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UG9zaXRpb246OnJlbmRlcnNJbkRpZmZlcmVudFBvc2l0aW9uIGNvbnN0KToK
KyAgICAgICAgKiBkb20vUG9zaXRpb25JdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
b3NpdGlvbkl0ZXJhdG9yOjppc0NhbmRpZGF0ZSBjb25zdCk6CisgICAgICAgICogZG9tL1BzZXVk
b0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHNldWRvRWxlbWVudDo6cHNldWRvRWxl
bWVudE5hbWVGb3JFdmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UHNldWRvRWxlbWVudDo6UHNl
dWRvRWxlbWVudCk6CisgICAgICAgICogZG9tL1Zpc2l0ZWRMaW5rU3RhdGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VmlzaXRlZExpbmtTdGF0ZTo6ZGV0ZXJtaW5lTGlua1N0YXRlU2xvd0Nhc2Up
OgorICAgICAgICAqIGRvbS9WaXNpdGVkTGlua1N0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpW
aXNpdGVkTGlua1N0YXRlOjpkZXRlcm1pbmVMaW5rU3RhdGUpOgorICAgICAgICAqIGVkaXRpbmcv
RWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1NwZWNpYWxIVE1MRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjppc05vZGVSZW5kZXJlZCk6CisgICAgICAgICogZWRpdGluZy9UZXh0
SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFzVmlzaWJsZVRleHROb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGVGaXJzdExldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVJlcGxhY2VkRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0SXRlcmF0b3I6OnNob3VsZFJlcHJlc2VudE5vZGVPZmZzZXRaZXJvKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmFkdmFuY2UpOgor
ICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZp
bmRTdGFydE9mUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRFbmRPZlBhcmFncmFw
aCk6CisgICAgICAgICogZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9u
KToKKyAgICAgICAgKiBodG1sL0hUTUxBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQXJlYUVsZW1lbnQ6OmlzRm9jdXNhYmxlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hU
TUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnJl
bmRlcmVySXNOZWVkZWQpOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgor
ICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MSW5wdXRFbGVtZW50OjpjcmVhdGVJbm5lclRleHRTdHlsZSk6CisgICAgICAgICogaHRtbC9I
VE1MT3B0R3JvdXBFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRHcm91cEVs
ZW1lbnQ6OmlzRm9jdXNhYmxlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25FbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50Ojppc0ZvY3VzYWJs
ZSBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNyZWF0ZUlubmVyVGV4dFN0eWxlKToK
KyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6YWRqdXN0SW5u
ZXJUZXh0U3R5bGUgY29uc3QpOgorICAgICAgICAqIGh0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjphdXRvcGxheVBlcm1p
dHRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjppc01haW5Db250ZW50Rm9yUHVycG9zZXNP
ZkF1dG9wbGF5KToKKyAgICAgICAgKiBodG1sL1J1YnlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJ1YnlFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0
bWwvUnVieVRleHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJ1YnlUZXh0RWxlbWVu
dDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvbnRyb2xJbm5l
ckVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29u
dHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9i
amVjdEZvckVsZW1lbnREYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRN
YXRjaGVkU3R5bGVzRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2Vu
dDo6YnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdCk6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwc2V1ZG9FbGVt
ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmpl
Y3RGb3JOb2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJl
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50Ojpi
dWlsZE9iamVjdEZvckxheWVyKToKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OmlzSW5saW5lQmxvY2tCb3gg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OmlzQmxvY2tMZXZlbEJveCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6aXNJbmxpbmVMZXZlbEJveCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6aXNCbG9ja0NvbnRhaW5lckJv
eCBjb25zdCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjpzZWxlY3RDdXJzb3IpOgorICAgICAgICAqIHBhZ2UvRnJhbWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNlYXJjaEZvckxhYmVsc0Fib3ZlQ2VsbCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWVudCk6
CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpjcmVhdGVTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGp1
c3RTY3JvbGxTdGVwRm9yRml4ZWRDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6dXBkYXRlU2Nyb2xsQ29ybmVyKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRp
b25CYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OnBsYXlTdGF0ZVBs
YXlpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6dXBkYXRlUGxh
eVN0YXRlKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmg6CisgICAg
ICAgICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6YmxlbmRGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5QW5pbWF0
aW9uV3JhcHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwKToKKyAgICAgICAg
KiBwYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29tcG9zaXRlQW5pbWF0aW9uOjp1cGRhdGVUcmFuc2l0aW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpDb21wb3NpdGVBbmltYXRpb246OnVwZGF0ZUtleWZyYW1lQW5pbWF0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wb3NpdGVBbmltYXRpb246OnN1c3BlbmRBbmltYXRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUFuaW1hdGlvbjo6cmVzdW1lQW5pbWF0aW9ucyk6Cisg
ICAgICAgICogcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6S2V5ZnJhbWVBbmltYXRpb246OmFuaW1hdGUpOgorICAgICAgICAqIHBhZ2UvaW9z
L0ZyYW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om5vZGVSZXNwb25kaW5nVG9D
bGlja0V2ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb246OkFuaW1hdGlvbik6CisgICAgICAgICogcGxh
dGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9u
OjpjbGVhclBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb246OmZpbGxNb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbjo6cGxheVN0YXRlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbjo6c2V0RmlsbE1vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6QW5pbWF0aW9uOjpzZXRQbGF5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0
aW9uOjpmaWxsc0JhY2t3YXJkcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb246
OmZpbGxzRm9yd2FyZHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uOjppbml0
aWFsRmlsbE1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uOjppbml0aWFsUGxheVN0
YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21L
ZXlmcmFtZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lm1tOgorICAg
ICAgICAoLVtXQUtXaW5kb3cgZHVtcFRpbGVzXSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dl
YkNvcmVOU1VSTEV4dHJhcy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzTG9va2FsaWtlQ2hhcmFj
dGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvSW5saW5lQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OnZp
c2libGVUb0hpdFRlc3RpbmcgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OmFkZFRvTGluZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwbGFjZUJveGVzSW5CbG9ja0RpcmVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjphZGRUZXh0Qm94VmlzdWFsT3Zl
cmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6cGFpbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWludE1hc2spOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lRmxvd0JveDo6Y29tcHV0ZU92ZXJBbm5vdGF0aW9uQWRqdXN0bWVudCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94Ojpjb21wdXRlVW5kZXJBbm5vdGF0aW9uQWRq
dXN0bWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94Ojpjb2xsZWN0
TGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9Jbmxp
bmVGbG93Qm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpJbmxpbmVGbG93
Qm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjplbXBoYXNpc01hcmtFeGlzdHNBbmRJc0Fib3ZlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBhaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OklubGluZVRleHRCb3g6OmNyZWF0ZVRleHRSdW4gY29uc3QpOgorICAgICAgICAqIHJl
bmRlcmluZy9Qb2ludGVyRXZlbnRzSGl0UnVsZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9p
bnRlckV2ZW50c0hpdFJ1bGVzOjpQb2ludGVyRXZlbnRzSGl0UnVsZXMpOgorICAgICAgICAqIHJl
bmRlcmluZy9Qb2ludGVyRXZlbnRzSGl0UnVsZXMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNvbXB1dGVTdGFy
dFBvc2l0aW9uRGVsdGFGb3JDaGlsZEF2b2lkaW5nRmxvYXRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cGFp
bnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnNob3VsZFBhaW50U2Vs
ZWN0aW9uR2FwcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YWRqdXN0
TG9naWNhbExlZnRPZmZzZXRGb3JMaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjphZGp1c3RMb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OmlzQ2hpbGRIaXRUZXN0Q2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjpjb21wdXRlQmxvY2tQcmVmZXJyZWRMb2dpY2FsV2lkdGhzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpmaXJzdExpbmVCbG9jayBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpmaW5kRmlyc3RMZXR0ZXJCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6Z2V0Rmlyc3RMZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OmNyZWF0ZUFub255bW91c0Jsb2NrV2l0aFN0eWxlQW5kRGlzcGxheSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6Y2hpbGRCb3hJc1Vuc3BsaXR0YWJsZUZvckZyYWdtZW50YXRp
b24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRS
dW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxheW91dEV4Y2x1ZGVkQ2hpbGRy
ZW4pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2s6OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlckFuZERpc3Bs
YXkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNyZWF0ZUFub255bW91c0Jsb2Nr
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6d2lsbENyZWF0ZUNvbHVtbnMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpsYXlvdXRCbG9jayk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmFwcGx5QmVmb3JlQnJlYWspOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjphcHBseUFmdGVyQnJlYWspOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2tGbG93OjphZGp1c3RGb3JVbnNwbGl0dGFibGVDaGlsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OnVwZGF0ZVN0eWxlc0ZvckNvbHVtbkNoaWxk
cmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUxvZ2ljYWxM
b2NhdGlvbkZvckZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bG93
ZXN0SW5pdGlhbExldHRlckxvZ2ljYWxCb3R0b20gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2tGbG93OjphZGp1c3RGb3JCb3JkZXJGaXQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2tGbG93OjpmaXRCb3JkZXJUb0xpbmVzSWZOZWVkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpsaW5lQXRJbmRleCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxpbmVDb3VudCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpnZXRIZWlnaHRGb3JMaW5lQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2tGbG93OjpjbGVhclRydW5jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2tGbG93OjpmaW5kQ2xvc2VzdFRleHRBdEFic29sdXRlUG9pbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2tGbG93OjpsaW5lQ291bnRGb3JUZXh0QXV0b3NpemluZyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OnNldENvbXB1dGVkQ29sdW1uQ291bnRBbmRXaWR0
aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OnVwZGF0ZUNvbHVtblByb2dy
ZXNzaW9uRnJvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6aXNU
b3BMYXlvdXRPdmVyZmxvd0FsbG93ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2tGbG93Ojppc0xlZnRMYXlvdXRPdmVyZmxvd0FsbG93ZWQgY29uc3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
QmxvY2tMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6
Y29uc3RydWN0TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OnRleHRB
bGlnbm1lbnRGb3JMaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxv
dzo6dXBkYXRlTG9naWNhbFdpZHRoRm9yQWxpZ25tZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmUpOgor
ICAgICAgICAoV2ViQ29yZTo6ZXhwYW5zaW9uQmVoYXZpb3JGb3JJbmxpbmVUZXh0Qm94KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlubGluZURpcmVjdGlvblBv
c2l0aW9uc0ZvclNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojps
YXlvdXRSdW5zQW5kRmxvYXRzSW5SYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
a0Zsb3c6OmNoZWNrRmxvYXRJbkNsZWFuTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9ja0Zsb3c6OmRlbGV0ZUVsbGlwc2lzTGluZUJveGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrRmxvdzo6Y2hlY2tMaW5lc0ZvclRleHRPdmVyZmxvdyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9ja0Zsb3c6OnN0YXJ0QWxpZ25lZE9mZnNldEZvckxpbmUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
OjpoYXNWZXJ0aWNhbFNjcm9sbGJhcldpdGhBdXRvQmVoYXZpb3IgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpoYXNIb3Jpem9udGFsU2Nyb2xsYmFyV2l0aEF1dG9CZWhhdmlv
ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjppc0NhbmRpZGF0ZUZvck9wYXF1ZW5lc3NUZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRNYXNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6cGFpbnRDbGlwcGluZ01hc2spOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQm94Ojpwb3NpdGlvbkxpbmVCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGhJbkZyYWdtZW50IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUlubGluZURpcmVjdGlvbk1hcmdpbnMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpza2lwQ29udGFpbmluZ0Jsb2NrRm9y
UGVyY2VudEhlaWdodENhbGN1bGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveDo6cG9zaXRpb25Gb3JQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Omlz
VW5zcGxpdHRhYmxlRm9yUGFnaW5hdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVs
T2JqZWN0Ojpsb2NhbENhcmV0UmVjdEZvckVtcHR5RWxlbWVudCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckNv
dW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGxhbkNvdW50ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQ291bnRlcjo6b3JpZ2luYWxUZXh0IGNvbnN0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNoaWxkRG9lc05vdEFmZmVjdFdpZHRoT3JGbGV4aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6bGF5b3V0SG9yaXpvbnRhbEJveCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmxheW91dFZlcnRpY2FsQm94
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJEZXRhaWxzTWFya2VyOjpwYWludCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6
Y3JlYXRlRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmNvbXB1dGVGaXJz
dExpbmVTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50Ojpwcm9w
YWdhdGVTdHlsZVRvQW5vbnltb3VzQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
RWxlbWVudDo6c3R5bGVXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1l
bnQ6Omluc2VydGVkSW50b1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6
d2lsbEJlUmVtb3ZlZEZyb21UcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6
OnJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVs
ZW1lbnQ6OmlzVmlzaWJsZUluRG9jdW1lbnRSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckVsZW1lbnQ6OmdldENhY2hlZFBzZXVkb1N0eWxlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckVsZW1lbnQ6OmdldFVuY2FjaGVkUHNldWRvU3R5bGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c2VsZWN0aW9uUHNldWRvU3R5bGUgY29uc3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJFbGVtZW50Ojp2aXNpYmxlVG9IaXRUZXN0aW5nIGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnBhaW50T2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyRnVsbFNjcmVlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGdWxsU2Ny
ZWVuU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVFbXB0eVRyYWNrc0ZvckF1dG9SZXBlYXQgY29u
c3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJJbWFnZTo6cmVwYWludE9yTWFya0ZvckxheW91dCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6
OndpbGxCZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVTdHlsZU9mQW5vbnlt
b3VzQmxvY2tDb250aW51YXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6
dXBkYXRlQWx3YXlzQ3JlYXRlTGluZUJveGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklu
bGluZTo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVySW5saW5lOjphZGRBbm5vdGF0ZWRSZWdpb25zKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OlJl
bmRlckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVEZXNjZW5k
YW50RGVwZW5kZW50RmxhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNyZWF0
ZVNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpzdHlsZVJlcXVpcmVzU2Nyb2xsYmFyKToK
KyAgICAgICAgKFdlYkNvcmU6OnN0eWxlRGVmaW5lc0F1dG9tYXRpY1Njcm9sbGJhcik6CisgICAg
ICAgIChXZWJDb3JlOjpjb21wdXRlUmVmZXJlbmNlQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjpjYWxjdWxhdGVDbGlwUmVjdHMgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJC
YWNraW5nOjp1cGRhdGVBZnRlckRlc2NlbmRhbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNjcm9sbGJhckhhc0Rp
c3BsYXlOb25lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVx
dWlyZXNDb21wb3NpdGluZ0ZvclBsdWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JGcmFtZSBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGlzdEJveDo6cGFpbnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6aXRlbU9mZnNl
dEZvckFsaWdubWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYWludEl0
ZW1Gb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50SXRl
bUJhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6Y3JlYXRlU2Ny
b2xsYmFyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGlzdEl0ZW06OmNvbXB1dGVNYXJrZXJTdHlsZSBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZWZmZWN0aXZlTGlzdE1hcmtlclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6bGlzdE1hcmtl
clN1ZmZpeCk6CisgICAgICAgIChXZWJDb3JlOjpsaXN0TWFya2VyVGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMaXN0TWFya2VyOjp1cGRhdGVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxp
c3RNYXJrZXI6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxpc3RNYXJrZXI6OnVwZGF0ZU1hcmdpbnMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGlzdE1hcmtlcjo6c3VmZml4IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxpc3RNYXJrZXI6OmlzSW5zaWRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxp
c3RNYXJrZXI6OmdldFJlbGF0aXZlTWFya2VyUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxpc3RNYXJrZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9s
RWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJD
b250YWluZXI6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0VHJhY2tDb250
YWluZXJFbGVtZW50OjpsYXlvdXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51TGlz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6YWRqdXN0SW5uZXJTdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjppZik6CisgICAgICAgIChSZW5kZXJNZW51TGlzdDo6aXRl
bVN0eWxlIGNvbnN0KToKKyAgICAgICAgKFJlbmRlck1lbnVMaXN0OjptZW51U3R5bGUgY29uc3Qp
OgorICAgICAgICAoUmVuZGVyTWVudUxpc3Q6OmNyZWF0ZVNjcm9sbGJhcik6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyOjpjcmVhdGVB
bm9ueW1vdXMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphZGRBbm5vdGF0ZWRSZWdpb25zKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmpl
Y3Q6OmlzQW5vbnltb3VzQmxvY2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2Jq
ZWN0Ojppc0JlZm9yZUNvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2Jq
ZWN0Ojppc0FmdGVyQ29udGVudCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJl
cGxhY2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpzaG91bGRQYWlu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6Y2xpcHBlZE92ZXJmbG93UmVj
dEZvclJlcGFpbnQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSdWJ5QmFzZTo6dGV4dEFsaWdubWVudEZvckxp
bmUgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clJ1YnlSdW46OmNyZWF0ZVJ1YnlCYXNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clJ1YnlSdW46OnN0YXRpY0NyZWF0ZVJ1YnlSdW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
UnVieVJ1bjo6bGF5b3V0QmxvY2spOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5VGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSdWJ5VGV4dDo6dGV4dEFsaWdubWVudEZv
ckxpbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUnVieVRleHQ6OmFkanVzdElu
bGluZURpcmVjdGlvbkxpbmVCb3VuZHMgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJSdWJ5VGV4dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cHNldWRvRm9yU2Nyb2xsYmFyUGFydCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTY3JvbGxiYXI6OnVwZGF0ZVNjcm9sbGJhclBhcnQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
ZWFyY2hGaWVsZDo6dXBkYXRlQ2FuY2VsQnV0dG9uVmlzaWJpbGl0eSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTZWFyY2hGaWVsZDo6dmlzaWJpbGl0eUZvckNhbmNlbEJ1dHRvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTZWFyY2hGaWVsZDo6bWVudVN0eWxlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJjaEZpZWxkOjpjcmVhdGVTY3JvbGxi
YXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZTo6d2lsbEluc2VydFRhYmxlU2VjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZTo6bGF5b3V0Q2FwdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmxheW91
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6cGFpbnRPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmFkanVzdEJvcmRlckJveFJlY3RGb3JQYWludGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6cGFpbnRNYXNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRhYmxlOjpyZWNhbGNTZWN0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUYWJsZTo6Y3JlYXRlVGFibGVXaXRoU3R5bGUpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVD
ZWxsOjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6
OnBhaW50Q29sbGFwc2VkQm9yZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNl
bGw6OnBhaW50QmFja2dyb3VuZHNCZWhpbmRDZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRhYmxlQ2VsbDo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUYWJsZUNlbGw6OnBhaW50TWFzayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNl
bGw6OmNyZWF0ZVRhYmxlQ2VsbFdpdGhTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ29sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ29sOjp1cGRhdGVG
cm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNvbDo6aXNDaGlsZEFs
bG93ZWQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUYWJsZVJvdzo6c3R5bGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGFibGVSb3c6OnBhaW50T3V0bGluZUZvclJvd0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlUm93OjpjcmVhdGVUYWJsZVJvd1dpdGhTdHlsZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
YWJsZVNlY3Rpb246OmFkZENlbGwpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0
aW9uOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246OmNyZWF0
ZVRhYmxlU2VjdGlvbldpdGhTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6c3R5bGVEaWRDaGFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMp
OgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlUZXh0VHJhbnNmb3JtKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRl
eHRGcmFnbWVudDo6c3R5bGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4
dEZyYWdtZW50OjpibG9ja0ZvckFjY29tcGFueWluZ0ZpcnN0TGV0dGVyKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6
OmFkanVzdFN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6YWRqdXN0TWVudUxpc3RTdHlsZSBjb25z
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lV2luOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlIGNvbnN0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZW5kZXJlck9ic2N1cmVzQmFja2dyb3VuZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldp
ZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnNldFdpZGdldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5s
aW5lQm94OjpwYWludEVsbGlwc2lzQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJ
bmxpbmVCb3g6OmxpbmVTbmFwQWRqdXN0bWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpS
b290SW5saW5lQm94OjpsaW5lU2VsZWN0aW9uR2FwKToKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJ
bmxpbmVCb3g6OmNvbXB1dGVDYXJldFJlY3QgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9T
aW1wbGVMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6
OmNhblVzZUZvckZvbnRBbmRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlv
dXQ6OmNhblVzZUZvclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6
OmNvbXB1dGVMaW5lTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojp1
cGRhdGVMaW5lQ29uc3RyYWlucyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0
OjpjcmVhdGVMaW5lUnVucyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojp0
ZXh0QWxpZ25Gb3JMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmNs
b3NlTGluZUVuZGluZ0FuZEFkanVzdFJ1bnMpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVM
aW5lTGF5b3V0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlv
dXQ6OnBhaW50Rmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpoaXRU
ZXN0Rmxvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21l
bnRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpUZXh0
RnJhZ21lbnRJdGVyYXRvcjo6U3R5bGU6OlN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvU2lt
cGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmg6CisgICAgICAgICogcmVuZGVyaW5n
L1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0ZXh0RGVjb3Jh
dGlvblN0eWxlVG9TdHJva2VTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlv
blBhaW50ZXI6OnBhaW50VGV4dERlY29yYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVj
dFN0eWxlc0ZvclJlbmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dERlY29yYXRpb25Q
YWludGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OkJyZWFraW5nQ29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OmNsZWFyTGluZUJyZWFrSWZGaXRzT25MaW5l
KToKKyAgICAgICAgKFdlYkNvcmU6OkJyZWFraW5nQ29udGV4dDo6aGFuZGxlQlIpOgorICAgICAg
ICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0OjpoYW5kbGVPdXRPZkZsb3dQb3NpdGlvbmVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OmNhbkJyZWFrQXRUaGlzUG9zaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0OjpoYW5kbGVFbmRPZkxpbmUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9saW5lL0xpbmVJbmxpbmVIZWFkZXJzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpzaG91bGRDb2xsYXBzZVdoaXRlU3BhY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9saW5lL0xp
bmVXaWR0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXdGbG9hdFNocmlua3NMaW5lKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL01hdGhPcGVyYXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNYXRoT3BlcmF0b3I6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTEZyYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEZy
YWN0aW9uOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxN
YXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE1hdGg6OmxheW91dEJsb2Nr
KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE1lbmNsb3NlOjpwYWludCk6CisgICAgICAg
ICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck1hdGhNTFJvb3Q6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFRva2VuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFRv
a2VuOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFwZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjb21wdXRlUm91bmRlZFJlY3RGb3JCb3hTaGFwZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnJlZmVyZW5jZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZU91dHNpZGVJbmZvOjpz
ZXRSZWZlcmVuY2VCb3hMb2dpY2FsU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZU91dHNp
ZGVJbmZvOjpsb2dpY2FsVG9wT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBl
T3V0c2lkZUluZm86OmxvZ2ljYWxMZWZ0T2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvQ291bnRlckNvbnRlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvdW50ZXJDb250
ZW50OjpDb3VudGVyQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb3VudGVyQ29udGVudDo6
bGlzdFN0eWxlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxl
V2l0aERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNyZWF0ZVN0eWxl
SW5oZXJpdGluZ0Zyb21Qc2V1ZG9TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6UmVuZGVyU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omhhc1VuaXF1
ZVBzZXVkb1N0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpnZXRD
YWNoZWRQc2V1ZG9TdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
YWRkQ2FjaGVkUHNldWRvU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNo
YW5nZVJlcXVpcmVzTGF5b3V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnJlcXVpcmVzUGFp
bnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omh5cGhlblN0cmluZyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6dGV4dEVtcGhhc2lzTWFya1N0cmlu
ZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6dmlzaXRlZERlcGVuZGVu
dENvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjp0ZXh0RW1waGFz
aXNNYXJrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRDb2x1bW5T
dHlsZXNGcm9tUGFnaW5hdGlvbk1vZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFN0eWxlVHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0UlRMT3JkZXJpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmRpc3BsYXkgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU3R5bGU6OnZpc2liaWxpdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU3R5bGU6OnRleHRBbGlnbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6dGV4dFRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
d2hpdGVTcGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6ZW1wdHlD
ZWxscyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2FwdGlvblNpZGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omxpc3RTdHlsZVR5cGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omxpc3RTdHlsZVBvc2l0aW9uIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjdXJzb3IgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omluc2lkZUxpbmsgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OmJvcmRlckZpdCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6cG9pbnRlckV2ZW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6c2V0RGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
c2V0T3JpZ2luYWxEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRW
aXNpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRUZXh0QWxpZ24p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRleHRUcmFuc2Zvcm0pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRleHREZWNvcmF0aW9uU3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRleHREZWNvcmF0aW9uU2tpcCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0VGV4dFVuZGVybGluZVBvc2l0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXREaXJlY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OnNldFRleHRab29tKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN0eWxlOjpzZXRXaGl0ZVNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpz
ZXRFbXB0eUNlbGxzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRDYXB0aW9u
U2lkZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0TGlzdFN0eWxlVHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0TGlzdFN0eWxlUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEN1cnNvcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6c2V0Q3Vyc29yVmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6c2V0SW5zaWRlTGluayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6c2V0SHlwaGVucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0Qm9y
ZGVyRml0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRDb2x1bW5BeGlzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRDb2x1bW5Qcm9ncmVzc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0VGV4dEVtcGhhc2lzRmlsbCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0VGV4dEVtcGhhc2lzTWFyayk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0UnVieVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjpzZXRCcmVha0JlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6c2V0QnJlYWtBZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
c2V0QnJlYWtJbnNpZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEhhbmdp
bmdQdW5jdHVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0TGluZVNu
YXApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldExpbmVBbGlnbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0UG9pbnRlckV2ZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmluaXRpYWxCcmVha0JldHdlZW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU3R5bGU6OmluaXRpYWxCcmVha0luc2lkZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6aW5pdGlhbENhcHRpb25TaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxl
Ojppbml0aWFsQ29sdW1uQXhpcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5p
dGlhbENvbHVtblByb2dyZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpp
bml0aWFsRW1wdHlDZWxscyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlh
bExpc3RTdHlsZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0
aWFsTGlzdFN0eWxlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlh
bFRleHRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxW
aXNpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsV2hpdGVT
cGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbEN1cnNvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRBbGlnbik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHREZWNvcmF0aW9uU3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0Wm9vbSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbEh5cGhlbnMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJGaXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OmluaXRpYWxSVExPcmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6aW5pdGlhbFBvaW50ZXJFdmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OmluaXRpYWxUZXh0RW1waGFzaXNDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6aW5pdGlhbFRleHRFbXBoYXNpc0ZpbGwpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmluaXRpYWxUZXh0RW1waGFzaXNNYXJrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjppbml0aWFsUnVieVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxl
Ojppbml0aWFsSW1hZ2VSZXNvbHV0aW9uU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN0eWxlOjppbml0aWFsSW1hZ2VSZXNvbHV0aW9uU25hcCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRBbGlnbkxhc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU3R5bGU6OmluaXRpYWxUZXh0SnVzdGlmeSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6aW5pdGlhbEN1cnNvclZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OmluaXRpYWxHcmlkQXV0b1JlcGVhdFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU3R5bGU6OmluaXRpYWxMaW5lU25hcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6aW5pdGlhbExpbmVBbGlnbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Tm9u
SW5oZXJpdGVkRmxhZ3M6Omhhc0FueVB1YmxpY1BzZXVkb1N0eWxlcyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6b3JpZ2luYWxEaXNwbGF5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6aGFzUHNldWRvU3R5bGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Ok5vbkluaGVyaXRlZEZsYWdz
OjpzZXRIYXNQc2V1ZG9TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Tm9u
SW5oZXJpdGVkRmxhZ3M6OnNldEhhc1BzZXVkb1N0eWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6YXV0b1dyYXApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnBy
ZXNlcnZlTmV3bGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y29sbGFwc2VX
aGl0ZVNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpicmVha09ubHlBZnRl
cldoaXRlU3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omhhc0lu
bGluZUNvbHVtbkF4aXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Omlz
RGlzcGxheVJlZ2lvblR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OmlzRGlzcGxheVJlcGxhY2VkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
aXNEaXNwbGF5SW5saW5lVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aXNE
aXNwbGF5RmxleGlibGVCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmlzRGlz
cGxheUdyaWRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmlzRGlzcGxheUZs
ZXhpYmxlT3JHcmlkQm94KToKKyAgICAgICAgKFdlYkNvcmU6OnBzZXVkb0VsZW1lbnRSZW5kZXJl
cklzTmVlZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFu
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXZWJDb3Jl
OjphbHdheXNQYWdlQnJlYWspOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZUNvbnN0YW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6UHNldWRvSWRTZXQ6OmhhcyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9JZFNldDo6YWRkKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvU2hhcGVWYWx1ZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZU11
bHRpQ29sRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZU11bHRpQ29sRGF0YTo6U3R5
bGVNdWx0aUNvbERhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhl
cml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZUluaGVyaXRlZERhdGE6
OlN0eWxlUmFyZUluaGVyaXRlZERhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZU5v
bkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHQ29udGFpbmVyOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6cGFpbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmVUZXh0OjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6Y2hlY2tJbnRlcnNlY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmNoZWNrRW5jbG9zdXJlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJl
cXVlc3RQYWludGluZ1Jlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlQ2xpcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZUNsaXBwZXI6OnBhdGhPbmx5Q2xpcHBpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
UmVzb3VyY2VDbGlwcGVyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpjYWxjdWxhdGVDbGlwQ29udGVudFJlcGFp
bnRSZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpkcmF3Q29u
dGVudEludG9NYXNrSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VN
YXNrZXI6OmNhbGN1bGF0ZU1hc2tDb250ZW50UmVwYWludFJlY3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdS
b290OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdTaGFwZTo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6Om5vZGVB
dEZsb2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0Ojpub2RlQXRGbG9hdFBvaW50KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb25CYWNrZ3JvdW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0lubGluZVRleHRCb3g6OmNvbnN0cnVjdFRleHRSdW4gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0lubGluZVRleHRCb3g6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3Vw
cG9ydDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5k
ZXJpbmdDb250ZXh0OjpwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpwcm9jZXNzUmVuZGVyU1ZHSW5saW5lVGV4dCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4
dE1ldHJpY3NCdWlsZGVyOjptZWFzdXJlVGV4dFJlbmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJp
bmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUcmVlQnVpbGRlcjo6QmxvY2s6OmRldGFjaCk6CisgICAgICAgICogcmVuZGVyaW5n
L3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyRmlyc3RMZXR0ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c3R5bGVGb3JGaXJzdExldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVl
QnVpbGRlcjo6Rmlyc3RMZXR0ZXI6OnVwZGF0ZUFmdGVyRGVzY2VuZGFudHMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6OkZpcnN0TGV0dGVyOjp1cGRhdGVTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6Rmlyc3RMZXR0ZXI6OmNyZWF0ZVJl
bmRlcmVycyk6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVy
SW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpJbmxpbmU6
OmF0dGFjaElnbm9yaW5nQ29udGludWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRy
ZWVCdWlsZGVyOjpJbmxpbmU6Om5ld0NoaWxkSXNJbmxpbmUpOgorICAgICAgICAqIHJlbmRlcmlu
Zy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVHJlZUJ1aWxkZXI6Okxpc3Q6OnVwZGF0ZUl0ZW1NYXJrZXIpOgorICAgICAgICAqIHJl
bmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlck1hdGhNTC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6TWF0aE1MOjpjcmVhdGVNYXRoTUxPcGVyYXRvcik6
CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyTXVsdGlDb2x1
bW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6Ok11bHRpQ29sdW1u
OjpjcmVhdGVGcmFnbWVudGVkRmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVp
bGRlcjo6TXVsdGlDb2x1bW46OnByb2Nlc3NQb3NzaWJsZVNwYW5uZXJEZXNjZW5kYW50KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJSdWJ5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmlzQW5vbnltb3VzUnVieUlubGluZUJsb2NrKToKKyAgICAgICAgKFdl
YkNvcmU6OmlzUnVieUJlZm9yZUJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OmlzUnVieUFmdGVy
QmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQW5vbnltb3VzUnVieUlubGluZUJsb2Nr
KToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJUYWJsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6VGFibGU6OmZpbmRPckNy
ZWF0ZVBhcmVudEZvckNoaWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVy
VHJlZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6OnVw
ZGF0ZUJlZm9yZURlc2NlbmRhbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVVcGRh
dGVyOjp1cGRhdGVBZnRlckRlc2NlbmRhbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRy
ZWVVcGRhdGVyOjp1cGRhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6ZWxl
bWVudEltcGxpY2l0VmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpDaGVja0ZvclZpc2li
aWxpdHlDaGFuZ2U6OkNoZWNrRm9yVmlzaWJpbGl0eUNoYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDaGVja0ZvclZpc2liaWxpdHlDaGFuZ2U6On5DaGVja0ZvclZpc2liaWxpdHlDaGFuZ2UpOgor
ICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRlZENv
bnRlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6OkdlbmVyYXRl
ZENvbnRlbnQ6OnVwZGF0ZVBzZXVkb0VsZW1lbnQpOgorICAgICAgICAqIHN0eWxlL0lubGluZVRl
eHRCb3hTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2aXN1YWxPdmVyZmxvd0ZvckRlY29y
YXRpb25zKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZUNoYW5nZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6ZGV0ZXJtaW5lQ2hhbmdlKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZUZvbnRT
aXplRnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpjb21wdXRlZEZvbnRT
aXplRnJvbVNwZWNpZmllZFNpemUpOgorICAgICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZUZvckRv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpyZXNvbHZlRm9yRG9jdW1lbnQp
OgorICAgICAgICAqIHN0eWxlL1N0eWxlU2hhcmluZ1Jlc29sdmVyLmNwcDoKKyAgICAgICAgKiBz
dHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6YWZm
ZWN0c1JlbmRlcmVkU3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29s
dmVyOjpyZXNvbHZlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29s
dmVyOjpyZXNvbHZlUHNldWRvU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlRyZWVS
ZXNvbHZlcjo6cGFyZW50Qm94U3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OmNyZWF0ZUluaGVyaXRlZERpc3BsYXlDb250ZW50c1N0eWxlSWZOZWVkZWQpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6cmVzb2x2ZUNvbXBvc2VkVHJlZSk6CisgICAg
ICAgICogc3ZnL1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHR0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHR0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisK
IDIwMTgtMDUtMjMgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAg
ICAgQXZvaWQga2VlcGluZyBGb3JtU3RhdGUgYWxpdmUgbG9uZ2VyIHRoYW4gbmVjZXNzYXJ5Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAJ
KHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Niw3ICsyODYsNyBAQCBib29sIEFYT2Jq
ZWN0Q2FjaGU6OmlzTm9kZVZpc2libGUoTm9kZSogCiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHJlbmRlcmVy
LT5zdHlsZSgpOwotICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gTk9ORSB8fCBzdHlsZS52aXNp
YmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAoc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlU
eXBlOjpOb25lIHx8IHN0eWxlLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgLy8gV2UgYWxzbyBuZWVkIHRvIGNvbnNp
ZGVyIGFyaWEgaGlkZGVuIHN0YXR1cy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3QuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTYzLDcgKzE2Myw3IEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxp
dHlMaXN0OjpkZXQKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gUmVuZGVyZWQgbGlzdCBp
dGVtcyBhbHdheXMgY291bnQuCiAgICAgICAgICAgICBpZiAobGlzdEl0ZW0tPmlzTGlzdEl0ZW0o
KSkgewotICAgICAgICAgICAgICAgIGlmICghaGFzVmlzaWJsZU1hcmtlcnMgJiYgKGxpc3RJdGVt
LT5zdHlsZSgpLmxpc3RTdHlsZVR5cGUoKSAhPSBOb25lTGlzdFN0eWxlIHx8IGxpc3RJdGVtLT5z
dHlsZSgpLmxpc3RTdHlsZUltYWdlKCkgfHwgY2hpbGRIYXNQc2V1ZG9WaXNpYmxlTGlzdEl0ZW1N
YXJrZXJzKGxpc3RJdGVtKSkpCisgICAgICAgICAgICAgICAgaWYgKCFoYXNWaXNpYmxlTWFya2Vy
cyAmJiAobGlzdEl0ZW0tPnN0eWxlKCkubGlzdFN0eWxlVHlwZSgpICE9IExpc3RTdHlsZVR5cGU6
Ok5vbmUgfHwgbGlzdEl0ZW0tPnN0eWxlKCkubGlzdFN0eWxlSW1hZ2UoKSB8fCBjaGlsZEhhc1Bz
ZXVkb1Zpc2libGVMaXN0SXRlbU1hcmtlcnMobGlzdEl0ZW0pKSkKICAgICAgICAgICAgICAgICAg
ICAgaGFzVmlzaWJsZU1hcmtlcnMgPSB0cnVlOwogICAgICAgICAgICAgICAgIGxpc3RJdGVtQ291
bnQrKzsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobGlzdEl0ZW0tPm5vZGUoKSAmJiBsaXN0SXRl
bS0+bm9kZSgpLT5oYXNUYWdOYW1lKGxpVGFnKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5j
cHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYsNyArMTc2
LDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2w6OmhlbHBUZQogCiBib29sIEFj
Y2Vzc2liaWxpdHlNZWRpYUNvbnRyb2w6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkg
Y29uc3QKIHsKLSAgICBpZiAoIW1fcmVuZGVyZXIgfHwgbV9yZW5kZXJlci0+c3R5bGUoKS52aXNp
YmlsaXR5KCkgIT0gVklTSUJMRSB8fCBjb250cm9sVHlwZSgpID09IE1lZGlhVGltZWxpbmVDb250
YWluZXIpCisgICAgaWYgKCFtX3JlbmRlcmVyIHx8IG1fcmVuZGVyZXItPnN0eWxlKCkudmlzaWJp
bGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgfHwgY29udHJvbFR5cGUoKSA9PSBNZWRpYVRp
bWVsaW5lQ29udGFpbmVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBhY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkQnlEZWZhdWx0KCk7CkBAIC0zMDIsNyArMzAyLDcgQEAgUmVmPEFj
Y2Vzc2liaWxpdHlPYmplY3Q+IEFjY2Vzc2liaWxpdHlNZQogCiBib29sIEFjY2Vzc2liaWxpdHlN
ZWRpYVRpbWVEaXNwbGF5Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiB7
Ci0gICAgaWYgKCFtX3JlbmRlcmVyIHx8IG1fcmVuZGVyZXItPnN0eWxlKCkudmlzaWJpbGl0eSgp
ICE9IFZJU0lCTEUpCisgICAgaWYgKCFtX3JlbmRlcmVyIHx8IG1fcmVuZGVyZXItPnN0eWxlKCku
dmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgaWYgKCFtX3JlbmRlcmVyLT5zdHlsZSgpLndpZHRoKCkudmFsdWUoKSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI3NSw3ICszMjc1
LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0RPTUhpZGRlbigpIAogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSByZW5kZXJl
ci0+c3R5bGUoKTsKLSAgICByZXR1cm4gc3R5bGUuZGlzcGxheSgpID09IE5PTkUgfHwgc3R5bGUu
dmlzaWJpbGl0eSgpICE9IFZJU0lCTEU7CisgICAgcmV0dXJuIHN0eWxlLmRpc3BsYXkoKSA9PSBE
aXNwbGF5VHlwZTo6Tm9uZSB8fCBzdHlsZS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6Vmlz
aWJsZTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1Nob3dpbmdWYWxpZGF0aW9u
TWVzc2FnZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDIzMjE0
MykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNDQsNyArMTE0NCw3IEBAIEFjY2Vzc2liaWxp
dHlPYmplY3RJbmNsdXNpb24gQWNjZXNzaWJpbGkKICAgICBpZiAoIW1fcmVuZGVyZXIpCiAgICAg
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3Q7CiAK
LSAgICBpZiAobV9yZW5kZXJlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkgewor
ICAgIGlmIChtX3JlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpW
aXNpYmxlKSB7CiAgICAgICAgIC8vIGFyaWEtaGlkZGVuIGlzIG1lYW50IHRvIG92ZXJyaWRlIHZp
c2liaWxpdHkgYXMgdGhlIGRldGVybWluYW50IGluIEFYIGhpZXJhcmNoeSBpbmNsdXNpb24uCiAg
ICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShnZXRBdHRyaWJ1dGUoYXJp
YV9oaWRkZW5BdHRyKSwgImZhbHNlIikpCiAgICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eU9iamVjdEluY2x1c2lvbjo6RGVmYXVsdEJlaGF2aW9yOwpAQCAtMTU5Niw3ICsxNTk2LDcgQEAg
Ym9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc1VudmlzaQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAogICAgIC8vIEZJWE1FOiBJcyBpdCBhIHByaXZhY3kgdmlvbGF0aW9uIHRvIGV4cG9z
ZSB1bnZpc2l0ZWQgaW5mb3JtYXRpb24gdG8gYWNjZXNzaWJpbGl0eSBBUElzPwotICAgIHJldHVy
biBtX3JlbmRlcmVyLT5zdHlsZSgpLmlzTGluaygpICYmIG1fcmVuZGVyZXItPnN0eWxlKCkuaW5z
aWRlTGluaygpID09IEluc2lkZVVudmlzaXRlZExpbms7CisgICAgcmV0dXJuIG1fcmVuZGVyZXIt
PnN0eWxlKCkuaXNMaW5rKCkgJiYgbV9yZW5kZXJlci0+c3R5bGUoKS5pbnNpZGVMaW5rKCkgPT0g
SW5zaWRlTGluazo6SW5zaWRlVW52aXNpdGVkOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmlzVmlzaXRlZCgpIGNvbnN0CkBAIC0xNjA1LDcgKzE2MDUsNyBAQCBib29sIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzVmlzaXRlCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIC8vIEZJWE1FOiBJcyBpdCBhIHByaXZhY3kgdmlvbGF0aW9uIHRvIGV4cG9zZSB2aXNp
dGVkIGluZm9ybWF0aW9uIHRvIGFjY2Vzc2liaWxpdHkgQVBJcz8KLSAgICByZXR1cm4gbV9yZW5k
ZXJlci0+c3R5bGUoKS5pc0xpbmsoKSAmJiBtX3JlbmRlcmVyLT5zdHlsZSgpLmluc2lkZUxpbmso
KSA9PSBJbnNpZGVWaXNpdGVkTGluazsKKyAgICByZXR1cm4gbV9yZW5kZXJlci0+c3R5bGUoKS5p
c0xpbmsoKSAmJiBtX3JlbmRlcmVyLT5zdHlsZSgpLmluc2lkZUxpbmsoKSA9PSBJbnNpZGVMaW5r
OjpJbnNpZGVWaXNpdGVkOwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNl
dEVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
LCBib29sIHZhbHVlKQpAQCAtMTc4Myw3ICsxNzgzLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjpzZXRWYWx1ZQogICAgICAgICAgICAgUmVuZGVyRWxlbWVudCYgcmVuZGVyRWxl
bWVudCA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVyKTsKICAgICAgICAgICAgIGF1
dG8gc3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBzdHlsZS5pbmhl
cml0RnJvbShyZW5kZXJFbGVtZW50LnN0eWxlKCkpOwotICAgICAgICAgICAgc3R5bGUuc2V0V2hp
dGVTcGFjZShQUkUpOworICAgICAgICAgICAgc3R5bGUuc2V0V2hpdGVTcGFjZShXaGl0ZVNwYWNl
OjpQcmUpOwogICAgICAgICAgICAgcmVuZGVyRWxlbWVudC5zZXRTdHlsZUludGVybmFsKFdURk1v
dmUoc3R5bGUpKTsKICAgICAgICAgfQogICAgICAgICBkb3duY2FzdDxIVE1MRWxlbWVudD4oZWxl
bWVudCkuc2V0SW5uZXJUZXh0KHN0cmluZyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCShyZXZpc2lvbiAyMzIxNDMp
CisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2Miw3ICsyNjIsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlUYWJs
ZTo6aXNEYXRhVGFibGUoKSBjCiAgICAgICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgcmVuZGVy
U3R5bGUgPSBjZWxsLT5zdHlsZSgpOwogCiAgICAgICAgICAgICAvLyBJZiB0aGUgZW1wdHktY2Vs
bHMgc3R5bGUgaXMgc2V0LCB3ZSdsbCBjYWxsIGl0IGEgZGF0YSB0YWJsZS4KLSAgICAgICAgICAg
IGlmIChyZW5kZXJTdHlsZS5lbXB0eUNlbGxzKCkgPT0gSElERSkKKyAgICAgICAgICAgIGlmIChy
ZW5kZXJTdHlsZS5lbXB0eUNlbGxzKCkgPT0gRW1wdHlDZWxsOjpIaWRlKQogICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgICAgICAvLyBJZiBhIGNlbGwgaGFzIG1hdGNoaW5n
IGJvcmRlcmVkIHNpZGVzLCBjYWxsIGl0IGEgKGZ1bGx5KSBib3JkZXJlZCBjZWxsLgpJbmRleDog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFj
ZVRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysg
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFj
ZVRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsMjIgKzE0MywyMiBAQCBzdGF0aWMgQXRr
QXR0cmlidXRlU2V0KiBnZXRBdHRyaWJ1dGVTZXRGCiAgICAgfQogCiAgICAgc3dpdGNoIChzdHls
ZS0+dGV4dEFsaWduKCkpIHsKLSAgICBjYXNlIFRBU1RBUlQ6Ci0gICAgY2FzZSBUQUVORDoKKyAg
ICBjYXNlIFRleHRBbGlnbk1vZGU6OlN0YXJ0OgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6RW5k
OgogICAgICAgICBicmVhazsKLSAgICBjYXNlIExFRlQ6Ci0gICAgY2FzZSBXRUJLSVRfTEVGVDoK
KyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpX
ZWJLaXRMZWZ0OgogICAgICAgICByZXN1bHQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChyZXN1bHQs
IGF0a190ZXh0X2F0dHJpYnV0ZV9nZXRfbmFtZShBVEtfVEVYVF9BVFRSX0pVU1RJRklDQVRJT04p
LCAibGVmdCIpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFJJR0hUOgotICAgIGNhc2UgV0VC
S0lUX1JJR0hUOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CisgICAgY2FzZSBUZXh0
QWxpZ25Nb2RlOjpXZWJLaXRSaWdodDoKICAgICAgICAgcmVzdWx0ID0gYWRkVG9BdGtBdHRyaWJ1
dGVTZXQocmVzdWx0LCBhdGtfdGV4dF9hdHRyaWJ1dGVfZ2V0X25hbWUoQVRLX1RFWFRfQVRUUl9K
VVNUSUZJQ0FUSU9OKSwgInJpZ2h0Iik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ0VOVEVS
OgotICAgIGNhc2UgV0VCS0lUX0NFTlRFUjoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRl
cjoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoKICAgICAgICAgcmVzdWx0
ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQocmVzdWx0LCBhdGtfdGV4dF9hdHRyaWJ1dGVfZ2V0X25h
bWUoQVRLX1RFWFRfQVRUUl9KVVNUSUZJQ0FUSU9OKSwgImNlbnRlciIpOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIEpVU1RJRlk6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5Ogog
ICAgICAgICByZXN1bHQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChyZXN1bHQsIGF0a190ZXh0X2F0
dHJpYnV0ZV9nZXRfbmFtZShBVEtfVEVYVF9BVFRSX0pVU1RJRklDQVRJT04pLCAiZmlsbCIpOwog
ICAgIH0KIApAQCAtMTY4LDcgKzE2OCw3IEBAIHN0YXRpYyBBdGtBdHRyaWJ1dGVTZXQqIGdldEF0
dHJpYnV0ZVNldEYKIAogICAgIHJlc3VsdCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KHJlc3VsdCwg
YXRrX3RleHRfYXR0cmlidXRlX2dldF9uYW1lKEFUS19URVhUX0FUVFJfU1RSSUtFVEhST1VHSCks
IChzdHlsZS0+dGV4dERlY29yYXRpb24oKSAmIFRleHREZWNvcmF0aW9uTGluZVRocm91Z2gpID8g
InRydWUiIDogImZhbHNlIik7CiAKLSAgICByZXN1bHQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChy
ZXN1bHQsIGF0a190ZXh0X2F0dHJpYnV0ZV9nZXRfbmFtZShBVEtfVEVYVF9BVFRSX0lOVklTSUJM
RSksIChzdHlsZS0+dmlzaWJpbGl0eSgpID09IEhJRERFTikgPyAidHJ1ZSIgOiAiZmFsc2UiKTsK
KyAgICByZXN1bHQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChyZXN1bHQsIGF0a190ZXh0X2F0dHJp
YnV0ZV9nZXRfbmFtZShBVEtfVEVYVF9BVFRSX0lOVklTSUJMRSksIChzdHlsZS0+dmlzaWJpbGl0
eSgpID09IFZpc2liaWxpdHk6OkhpZGRlbikgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKIAogICAgIHJl
c3VsdCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KHJlc3VsdCwgYXRrX3RleHRfYXR0cmlidXRlX2dl
dF9uYW1lKEFUS19URVhUX0FUVFJfRURJVEFCTEUpLCBvYmplY3QtPmNhblNldFZhbHVlQXR0cmli
dXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTQW5p
bWF0aQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBJbiBjYXNlIHRoaXMgZWxlbWVudCBpcyBu
ZXdseSBnZXR0aW5nIGEgImRpc3BsYXk6IG5vbmUiIHdlIG5lZWQgdG8gY2FuY2VsIGFsbCBvZiBp
dHMgYW5pbWF0aW9ucyBhbmQgZGlzcmVnYXJkIG5ldyBvbmVzLgotICAgIGlmIChvbGRTdHlsZSAm
JiBvbGRTdHlsZS0+aGFzQW5pbWF0aW9ucygpICYmIG9sZFN0eWxlLT5kaXNwbGF5KCkgIT0gTk9O
RSAmJiBuZXdTdHlsZS5kaXNwbGF5KCkgPT0gTk9ORSkgeworICAgIGlmIChvbGRTdHlsZSAmJiBv
bGRTdHlsZS0+aGFzQW5pbWF0aW9ucygpICYmIG9sZFN0eWxlLT5kaXNwbGF5KCkgIT0gRGlzcGxh
eVR5cGU6Ok5vbmUgJiYgbmV3U3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpOb25lKSB7
CiAgICAgICAgIGlmIChtX2VsZW1lbnRUb0NTU0FuaW1hdGlvbkJ5TmFtZS5jb250YWlucygmZWxl
bWVudCkpIHsKICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgY3NzQW5pbWF0aW9uc0J5TmFt
ZU1hcEl0ZW0gOiBtX2VsZW1lbnRUb0NTU0FuaW1hdGlvbkJ5TmFtZS50YWtlKCZlbGVtZW50KSkK
ICAgICAgICAgICAgICAgICBjYW5jZWxPclJlbW92ZURlY2xhcmF0aXZlQW5pbWF0aW9uKGNzc0Fu
aW1hdGlvbnNCeU5hbWVNYXBJdGVtLnZhbHVlKTsKQEAgLTIyOSw3ICsyMjksNyBAQCB2b2lkIEFu
aW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0CiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIEluIGNhc2UgdGhpcyBlbGVtZW50IGlzIG5ld2x5IGdldHRpbmcgYSAiZGlzcGxheTogbm9u
ZSIgd2UgbmVlZCB0byBjYW5jZWwgYWxsIG9mIGl0cyBhbmltYXRpb25zIGFuZCBkaXNyZWdhcmQg
bmV3IG9uZXMuCi0gICAgaWYgKG9sZFN0eWxlICYmIG9sZFN0eWxlLT5oYXNUcmFuc2l0aW9ucygp
ICYmIG9sZFN0eWxlLT5kaXNwbGF5KCkgIT0gTk9ORSAmJiBuZXdTdHlsZS5kaXNwbGF5KCkgPT0g
Tk9ORSkgeworICAgIGlmIChvbGRTdHlsZSAmJiBvbGRTdHlsZS0+aGFzVHJhbnNpdGlvbnMoKSAm
JiBvbGRTdHlsZS0+ZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpOb25lICYmIG5ld1N0eWxlLmRp
c3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSkgewogICAgICAgICBpZiAobV9lbGVtZW50VG9D
U1NUcmFuc2l0aW9uQnlDU1NQcm9wZXJ0eUlELmNvbnRhaW5zKCZlbGVtZW50KSkgewogICAgICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBjc3NUcmFuc2l0aW9uc0J5Q1NTUHJvcGVydHlJRE1hcEl0
ZW0gOiBtX2VsZW1lbnRUb0NTU1RyYW5zaXRpb25CeUNTU1Byb3BlcnR5SUQudGFrZSgmZWxlbWVu
dCkpCiAgICAgICAgICAgICAgICAgY2FuY2VsT3JSZW1vdmVEZWNsYXJhdGl2ZUFuaW1hdGlvbihj
c3NUcmFuc2l0aW9uc0J5Q1NTUHJvcGVydHlJRE1hcEl0ZW0udmFsdWUpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysr
IFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NBbmltYXRpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01NSwxNiArNTUsMTYgQEAgdm9pZCBDU1NBbmltYXRpb246OnN5bmNQcm9wZXJ0aWVzV2l0
aEJhYwogICAgIGF1dG8qIHRpbWluZyA9IGVmZmVjdCgpLT50aW1pbmcoKTsKIAogICAgIHN3aXRj
aCAoYW5pbWF0aW9uLmZpbGxNb2RlKCkpIHsKLSAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlTm9u
ZToKKyAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlOjpOb25lOgogICAgICAgICB0aW1pbmctPnNl
dEZpbGwoRmlsbE1vZGU6Ok5vbmUpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEFuaW1hdGlv
bkZpbGxNb2RlQmFja3dhcmRzOgorICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGU6OkJhY2t3YXJk
czoKICAgICAgICAgdGltaW5nLT5zZXRGaWxsKEZpbGxNb2RlOjpCYWNrd2FyZHMpOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlRm9yd2FyZHM6CisgICAgY2FzZSBB
bmltYXRpb25GaWxsTW9kZTo6Rm9yd2FyZHM6CiAgICAgICAgIHRpbWluZy0+c2V0RmlsbChGaWxs
TW9kZTo6Rm9yd2FyZHMpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEFuaW1hdGlvbkZpbGxN
b2RlQm90aDoKKyAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlOjpCb3RoOgogICAgICAgICB0aW1p
bmctPnNldEZpbGwoRmlsbE1vZGU6OkJvdGgpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC04
OCw5ICs4OCw5IEBAIHZvaWQgQ1NTQW5pbWF0aW9uOjpzeW5jUHJvcGVydGllc1dpdGhCYWMKICAg
ICB0aW1pbmctPnNldEl0ZXJhdGlvbnMoaXRlcmF0aW9uQ291bnQgPT0gQW5pbWF0aW9uOjpJdGVy
YXRpb25Db3VudEluZmluaXRlID8gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0
eSgpIDogaXRlcmF0aW9uQ291bnQpOwogCiAgICAgLy8gU3luY2hyb25pemUgdGhlIHBsYXkgc3Rh
dGUKLSAgICBpZiAoYmFja2luZ0FuaW1hdGlvbigpLnBsYXlTdGF0ZSgpID09IEFuaW1QbGF5U3Rh
dGVQbGF5aW5nICYmIHBsYXlTdGF0ZSgpID09IFdlYkFuaW1hdGlvbjo6UGxheVN0YXRlOjpQYXVz
ZWQpCisgICAgaWYgKGJhY2tpbmdBbmltYXRpb24oKS5wbGF5U3RhdGUoKSA9PSBBbmltYXRpb25Q
bGF5U3RhdGU6OlBsYXlpbmcgJiYgcGxheVN0YXRlKCkgPT0gV2ViQW5pbWF0aW9uOjpQbGF5U3Rh
dGU6OlBhdXNlZCkKICAgICAgICAgcGxheSgpOwotICAgIGVsc2UgaWYgKGJhY2tpbmdBbmltYXRp
b24oKS5wbGF5U3RhdGUoKSA9PSBBbmltUGxheVN0YXRlUGF1c2VkICYmIHBsYXlTdGF0ZSgpID09
IFdlYkFuaW1hdGlvbjo6UGxheVN0YXRlOjpSdW5uaW5nKQorICAgIGVsc2UgaWYgKGJhY2tpbmdB
bmltYXRpb24oKS5wbGF5U3RhdGUoKSA9PSBBbmltYXRpb25QbGF5U3RhdGU6OlBhdXNlZCAmJiBw
bGF5U3RhdGUoKSA9PSBXZWJBbmltYXRpb246OlBsYXlTdGF0ZTo6UnVubmluZykKICAgICAgICAg
cGF1c2UoKTsKIAogICAgIHVuc3VzcGVuZEVmZmVjdEludmFsaWRhdGlvbigpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwCShy
ZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVB
bmltYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgRGVjbGFy
YXRpdmVBbmltYXRpb246OmluaXRpYWxpemUoY28KICAgICBzZXRUaW1lbGluZSgmdGFyZ2V0LmRv
Y3VtZW50KCkudGltZWxpbmUoKSk7CiAgICAgZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3RSZWFkT25s
eT4oZWZmZWN0KCkpLT5jb21wdXRlRGVjbGFyYXRpdmVBbmltYXRpb25CbGVuZGluZ0tleWZyYW1l
cyhvbGRTdHlsZSwgbmV3U3R5bGUpOwogICAgIHN5bmNQcm9wZXJ0aWVzV2l0aEJhY2tpbmdBbmlt
YXRpb24oKTsKLSAgICBpZiAoYmFja2luZ0FuaW1hdGlvbigpLnBsYXlTdGF0ZSgpID09IEFuaW1Q
bGF5U3RhdGVQbGF5aW5nKQorICAgIGlmIChiYWNraW5nQW5pbWF0aW9uKCkucGxheVN0YXRlKCkg
PT0gQW5pbWF0aW9uUGxheVN0YXRlOjpQbGF5aW5nKQogICAgICAgICBwbGF5KCk7CiAgICAgZWxz
ZQogICAgICAgICBwYXVzZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZy
YW1lRWZmZWN0UmVhZE9ubHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9LZXlmcmFtZUVmZmVjdFJlYWRPbmx5LmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0UmVhZE9ubHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjY1LDE2ICsxMjY1LDE2IEBAIFJlZjxjb25zdCBBbmltYXRpb24+IEtleWZy
YW1lRWZmZWN0UmVhZE8KICAgICBzd2l0Y2ggKGVmZmVjdFRpbWluZy0+ZmlsbCgpKSB7CiAgICAg
Y2FzZSBGaWxsTW9kZTo6Tm9uZToKICAgICBjYXNlIEZpbGxNb2RlOjpBdXRvOgotICAgICAgICBh
bmltYXRpb24tPnNldEZpbGxNb2RlKEFuaW1hdGlvbkZpbGxNb2RlTm9uZSk7CisgICAgICAgIGFu
aW1hdGlvbi0+c2V0RmlsbE1vZGUoQW5pbWF0aW9uRmlsbE1vZGU6Ok5vbmUpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEZpbGxNb2RlOjpCYWNrd2FyZHM6Ci0gICAgICAgIGFuaW1hdGlvbi0+
c2V0RmlsbE1vZGUoQW5pbWF0aW9uRmlsbE1vZGVCYWNrd2FyZHMpOworICAgICAgICBhbmltYXRp
b24tPnNldEZpbGxNb2RlKEFuaW1hdGlvbkZpbGxNb2RlOjpCYWNrd2FyZHMpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEZpbGxNb2RlOjpGb3J3YXJkczoKLSAgICAgICAgYW5pbWF0aW9uLT5z
ZXRGaWxsTW9kZShBbmltYXRpb25GaWxsTW9kZUZvcndhcmRzKTsKKyAgICAgICAgYW5pbWF0aW9u
LT5zZXRGaWxsTW9kZShBbmltYXRpb25GaWxsTW9kZTo6Rm9yd2FyZHMpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEZpbGxNb2RlOjpCb3RoOgotICAgICAgICBhbmltYXRpb24tPnNldEZpbGxN
b2RlKEFuaW1hdGlvbkZpbGxNb2RlQm90aCk7CisgICAgICAgIGFuaW1hdGlvbi0+c2V0RmlsbE1v
ZGUoQW5pbWF0aW9uRmlsbE1vZGU6OkJvdGgpOwogICAgICAgICBicmVhazsKICAgICB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc4MCwxNSArMTc4MCwx
NSBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiByZW5kZXJUZXh0RGVjb3JhdGlvCiBzdGF0aWMgUmVm
PENTU1ZhbHVlPiByZW5kZXJUZXh0RGVjb3JhdGlvblN0eWxlRmxhZ3NUb0NTU1ZhbHVlKFRleHRE
ZWNvcmF0aW9uU3R5bGUgdGV4dERlY29yYXRpb25TdHlsZSkKIHsKICAgICBzd2l0Y2ggKHRleHRE
ZWNvcmF0aW9uU3R5bGUpIHsKLSAgICBjYXNlIFRleHREZWNvcmF0aW9uU3R5bGVTb2xpZDoKKyAg
ICBjYXNlIFRleHREZWNvcmF0aW9uU3R5bGU6OlNvbGlkOgogICAgICAgICByZXR1cm4gQ1NTVmFs
dWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTb2xpZCk7
Ci0gICAgY2FzZSBUZXh0RGVjb3JhdGlvblN0eWxlRG91YmxlOgorICAgIGNhc2UgVGV4dERlY29y
YXRpb25TdHlsZTo6RG91YmxlOgogICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0
b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVEb3VibGUpOwotICAgIGNhc2UgVGV4
dERlY29yYXRpb25TdHlsZURvdHRlZDoKKyAgICBjYXNlIFRleHREZWNvcmF0aW9uU3R5bGU6OkRv
dHRlZDoKICAgICAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlRG90dGVkKTsKLSAgICBjYXNlIFRleHREZWNvcmF0aW9uU3R5
bGVEYXNoZWQ6CisgICAgY2FzZSBUZXh0RGVjb3JhdGlvblN0eWxlOjpEYXNoZWQ6CiAgICAgICAg
IHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZURhc2hlZCk7Ci0gICAgY2FzZSBUZXh0RGVjb3JhdGlvblN0eWxlV2F2eToKKyAgICBj
YXNlIFRleHREZWNvcmF0aW9uU3R5bGU6Oldhdnk6CiAgICAgICAgIHJldHVybiBDU1NWYWx1ZVBv
b2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVdhdnkpOwogICAg
IH0KIApAQCAtMjI3MiwzMyArMjI3MiwzMyBAQCBzdGF0aWMgYm9vbCBwb3NpdGlvbk9mZnNldFZh
bHVlSXNSZW5kZXJlCiAKIHN0YXRpYyBDU1NWYWx1ZUlEIGNvbnZlcnRUb1BhZ2VCcmVhayhCcmVh
a0JldHdlZW4gdmFsdWUpCiB7Ci0gICAgaWYgKHZhbHVlID09IFBhZ2VCcmVha0JldHdlZW4gfHwg
dmFsdWUgPT0gTGVmdFBhZ2VCcmVha0JldHdlZW4gfHwgdmFsdWUgPT0gUmlnaHRQYWdlQnJlYWtC
ZXR3ZWVuCi0gICAgICAgIHx8IHZhbHVlID09IFJlY3RvUGFnZUJyZWFrQmV0d2VlbiB8fCB2YWx1
ZSA9PSBWZXJzb1BhZ2VCcmVha0JldHdlZW4pCisgICAgaWYgKHZhbHVlID09IEJyZWFrQmV0d2Vl
bjo6UGFnZSB8fCB2YWx1ZSA9PSBCcmVha0JldHdlZW46OkxlZnRQYWdlIHx8IHZhbHVlID09IEJy
ZWFrQmV0d2Vlbjo6UmlnaHRQYWdlCisgICAgICAgIHx8IHZhbHVlID09IEJyZWFrQmV0d2Vlbjo6
UmVjdG9QYWdlIHx8IHZhbHVlID09IEJyZWFrQmV0d2Vlbjo6VmVyc29QYWdlKQogICAgICAgICBy
ZXR1cm4gQ1NTVmFsdWVBbHdheXM7IC8vIENTUyAyLjEgYWxsb3dzIHVzIHRvIG1hcCB0aGVzZSB0
byBhbHdheXMuCi0gICAgaWYgKHZhbHVlID09IEF2b2lkQnJlYWtCZXR3ZWVuIHx8IHZhbHVlID09
IEF2b2lkUGFnZUJyZWFrQmV0d2VlbikKKyAgICBpZiAodmFsdWUgPT0gQnJlYWtCZXR3ZWVuOjpB
dm9pZCB8fCB2YWx1ZSA9PSBCcmVha0JldHdlZW46OkF2b2lkUGFnZSkKICAgICAgICAgcmV0dXJu
IENTU1ZhbHVlQXZvaWQ7CiAgICAgcmV0dXJuIENTU1ZhbHVlQXV0bzsKIH0KIAogc3RhdGljIENT
U1ZhbHVlSUQgY29udmVydFRvQ29sdW1uQnJlYWsoQnJlYWtCZXR3ZWVuIHZhbHVlKQogewotICAg
IGlmICh2YWx1ZSA9PSBDb2x1bW5CcmVha0JldHdlZW4pCisgICAgaWYgKHZhbHVlID09IEJyZWFr
QmV0d2Vlbjo6Q29sdW1uKQogICAgICAgICByZXR1cm4gQ1NTVmFsdWVBbHdheXM7Ci0gICAgaWYg
KHZhbHVlID09IEF2b2lkQnJlYWtCZXR3ZWVuIHx8IHZhbHVlID09IEF2b2lkQ29sdW1uQnJlYWtC
ZXR3ZWVuKQorICAgIGlmICh2YWx1ZSA9PSBCcmVha0JldHdlZW46OkF2b2lkIHx8IHZhbHVlID09
IEJyZWFrQmV0d2Vlbjo6QXZvaWRDb2x1bW4pCiAgICAgICAgIHJldHVybiBDU1NWYWx1ZUF2b2lk
OwogICAgIHJldHVybiBDU1NWYWx1ZUF1dG87CiB9CiAKIHN0YXRpYyBDU1NWYWx1ZUlEIGNvbnZl
cnRUb1BhZ2VCcmVhayhCcmVha0luc2lkZSB2YWx1ZSkKIHsKLSAgICBpZiAodmFsdWUgPT0gQXZv
aWRCcmVha0luc2lkZSB8fCB2YWx1ZSA9PSBBdm9pZFBhZ2VCcmVha0luc2lkZSkKKyAgICBpZiAo
dmFsdWUgPT0gQnJlYWtJbnNpZGU6OkF2b2lkIHx8IHZhbHVlID09IEJyZWFrSW5zaWRlOjpBdm9p
ZFBhZ2UpCiAgICAgICAgIHJldHVybiBDU1NWYWx1ZUF2b2lkOwogICAgIHJldHVybiBDU1NWYWx1
ZUF1dG87CiB9CiAKIHN0YXRpYyBDU1NWYWx1ZUlEIGNvbnZlcnRUb0NvbHVtbkJyZWFrKEJyZWFr
SW5zaWRlIHZhbHVlKQogewotICAgIGlmICh2YWx1ZSA9PSBBdm9pZEJyZWFrSW5zaWRlIHx8IHZh
bHVlID09IEF2b2lkQ29sdW1uQnJlYWtJbnNpZGUpCisgICAgaWYgKHZhbHVlID09IEJyZWFrSW5z
aWRlOjpBdm9pZCB8fCB2YWx1ZSA9PSBCcmVha0luc2lkZTo6QXZvaWRDb2x1bW4pCiAgICAgICAg
IHJldHVybiBDU1NWYWx1ZUF2b2lkOwogICAgIHJldHVybiBDU1NWYWx1ZUF1dG87CiB9CkBAIC0y
MzcwLDIwICsyMzcwLDE5IEBAIEVsZW1lbnQqIENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnN0eWxl
ZEUKICAgICBpZiAoIW1fZWxlbWVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgUHNl
dWRvRWxlbWVudCogcHNldWRvRWxlbWVudDsKLSAgICBpZiAobV9wc2V1ZG9FbGVtZW50U3BlY2lm
aWVyID09IEJFRk9SRSAmJiAocHNldWRvRWxlbWVudCA9IG1fZWxlbWVudC0+YmVmb3JlUHNldWRv
RWxlbWVudCgpKSkKKyAgICBpZiAobV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyID09IFBzZXVkb0lk
OjpCZWZvcmUgJiYgKHBzZXVkb0VsZW1lbnQgPSBtX2VsZW1lbnQtPmJlZm9yZVBzZXVkb0VsZW1l
bnQoKSkpCiAgICAgICAgIHJldHVybiBwc2V1ZG9FbGVtZW50OwotICAgIGlmIChtX3BzZXVkb0Vs
ZW1lbnRTcGVjaWZpZXIgPT0gQUZURVIgJiYgKHBzZXVkb0VsZW1lbnQgPSBtX2VsZW1lbnQtPmFm
dGVyUHNldWRvRWxlbWVudCgpKSkKKyAgICBpZiAobV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyID09
IFBzZXVkb0lkOjpBZnRlciAmJiAocHNldWRvRWxlbWVudCA9IG1fZWxlbWVudC0+YWZ0ZXJQc2V1
ZG9FbGVtZW50KCkpKQogICAgICAgICByZXR1cm4gcHNldWRvRWxlbWVudDsKICAgICByZXR1cm4g
bV9lbGVtZW50LmdldCgpOwogfQogCi0KIFJlbmRlckVsZW1lbnQqIENvbXB1dGVkU3R5bGVFeHRy
YWN0b3I6OnN0eWxlZFJlbmRlcmVyKCkgY29uc3QKIHsKICAgICBhdXRvKiBlbGVtZW50ID0gc3R5
bGVkRWxlbWVudCgpOwogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgaWYgKG1fcHNldWRvRWxlbWVudFNwZWNpZmllciAhPSBOT1BTRVVETyAmJiBlbGVtZW50
ID09IG1fZWxlbWVudC5nZXQoKSkKKyAgICBpZiAobV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyICE9
IFBzZXVkb0lkOjpOb25lICYmIGVsZW1lbnQgPT0gbV9lbGVtZW50LmdldCgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoZWxlbWVudC0+aGFzRGlzcGxheUNvbnRlbnRzKCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjQ3OCwxNCArMjQ3NywxNCBAQCBzdGF0aWMgaW5s
aW5lIGNvbnN0IFJlbmRlclN0eWxlKiBjb21wdXRlCiAgICAgICAgICAgICBvd25lZFN0eWxlID0g
dGltZWxpbmUtPmFuaW1hdGVkU3R5bGVGb3JSZW5kZXJlcigqcmVuZGVyZXIpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBvd25lZFN0eWxlID0gcmVuZGVyZXItPmFuaW1hdGlvbigpLmFuaW1h
dGVkU3R5bGVGb3JSZW5kZXJlcigqcmVuZGVyZXIpOwotICAgICAgICBpZiAocHNldWRvRWxlbWVu
dFNwZWNpZmllciAmJiAhZWxlbWVudC5pc1BzZXVkb0VsZW1lbnQoKSkgeworICAgICAgICBpZiAo
cHNldWRvRWxlbWVudFNwZWNpZmllciAhPSBQc2V1ZG9JZDo6Tm9uZSAmJiAhZWxlbWVudC5pc1Bz
ZXVkb0VsZW1lbnQoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgY2FjaGVkIHBzZXVk
byBzdHlsZSB3aWxsIG9ubHkgZXhpc3QgaWYgdGhlIGFuaW1hdGlvbiBoYXMgYmVlbiBydW4gYXQg
bGVhc3Qgb25jZS4KICAgICAgICAgICAgIHJldHVybiBvd25lZFN0eWxlLT5nZXRDYWNoZWRQc2V1
ZG9TdHlsZShwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKTsKICAgICAgICAgfQogICAgICAgICByZXR1
cm4gb3duZWRTdHlsZS5nZXQoKTsKICAgICB9CiAKLSAgICByZXR1cm4gZWxlbWVudC5jb21wdXRl
ZFN0eWxlKGVsZW1lbnQuaXNQc2V1ZG9FbGVtZW50KCkgPyBOT1BTRVVETyA6IHBzZXVkb0VsZW1l
bnRTcGVjaWZpZXIpOworICAgIHJldHVybiBlbGVtZW50LmNvbXB1dGVkU3R5bGUoZWxlbWVudC5p
c1BzZXVkb0VsZW1lbnQoKSA/IFBzZXVkb0lkOjpOb25lIDogcHNldWRvRWxlbWVudFNwZWNpZmll
cik7CiB9CiAKIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHNoYXBlUHJvcGVydHlWYWx1ZShjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IFNoYXBlVmFsdWUqIHNoYXBlVmFsdWUpCkBAIC0yNTA2
LDcgKzI1MDUsNyBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiBzaGFwZVByb3BlcnR5VmFsdWUoCiAK
ICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAg
ICAgbGlzdC0+YXBwZW5kKHZhbHVlRm9yQmFzaWNTaGFwZShzdHlsZSwgKnNoYXBlVmFsdWUtPnNo
YXBlKCkpKTsKLSAgICBpZiAoc2hhcGVWYWx1ZS0+Y3NzQm94KCkgIT0gQm94TWlzc2luZykKKyAg
ICBpZiAoc2hhcGVWYWx1ZS0+Y3NzQm94KCkgIT0gQ1NTQm94VHlwZTo6Qm94TWlzc2luZykKICAg
ICAgICAgbGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUo
c2hhcGVWYWx1ZS0+Y3NzQm94KCkpKTsKICAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKIH0KQEAg
LTMwMTYsNyArMzAxNSw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rv
cjoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU9yZGVyOgogICAgICAgICAgICAgcmV0dXJuIGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS5vcmRlcigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX05VTUJFUik7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGbG9hdDoKLSAgICAgICAgICAg
IGlmIChzdHlsZS5kaXNwbGF5KCkgIT0gTk9ORSAmJiBzdHlsZS5oYXNPdXRPZkZsb3dQb3NpdGlv
bigpKQorICAgICAgICAgICAgaWYgKHN0eWxlLmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Tm9u
ZSAmJiBzdHlsZS5oYXNPdXRPZkZsb3dQb3NpdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7CiAgICAg
ICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLmZsb2F0aW5nKCkp
OwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udDogewpAQCAtMzE0NSw3ICszMTQ0LDcgQEAg
UmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOgogICAgICAgICAgICAgICAg
IHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vTGlt
aXQpOwogICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUu
aHlwaGVuYXRpb25MaW1pdExpbmVzKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckZpdDoKLSAgICAgICAgICAgIGlm
IChzdHlsZS5ib3JkZXJGaXQoKSA9PSBCb3JkZXJGaXRCb3JkZXIpCisgICAgICAgICAgICBpZiAo
c3R5bGUuYm9yZGVyRml0KCkgPT0gQm9yZGVyRml0OjpCb3JkZXIpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVCb3JkZXIp
OwogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
Q1NTVmFsdWVMaW5lcyk7CiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKQEAgLTMy
MDAsNyArMzE5OSw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcjoK
ICAgICAgICAgICAgIGZsb2F0IHZhbHVlOwogICAgICAgICAgICAgaWYgKG1hcmdpblJpZ2h0Lmlz
UGVyY2VudE9yQ2FsY3VsYXRlZCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gUmVuZGVyQm94IGdp
dmVzIGEgbWFyZ2luUmlnaHQoKSB0aGF0IGlzIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSByaWdo
dC1lZGdlIG9mIHRoZSBjaGlsZCBib3gKLSAgICAgICAgICAgICAgICAvLyBhbmQgdGhlIHJpZ2h0
LWVkZ2Ugb2YgdGhlIGNvbnRhaW5pbmcgYm94LCB3aGVuIGRpc3BsYXkgPT0gQkxPQ0suIExldCdz
IGNhbGN1bGF0ZSB0aGUgYWJzb2x1dGUKKyAgICAgICAgICAgICAgICAvLyBhbmQgdGhlIHJpZ2h0
LWVkZ2Ugb2YgdGhlIGNvbnRhaW5pbmcgYm94LCB3aGVuIGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6
OkJsb2NrLiBMZXQncyBjYWxjdWxhdGUgdGhlIGFic29sdXRlCiAgICAgICAgICAgICAgICAgLy8g
dmFsdWUgb2YgdGhlIHNwZWNpZmllZCBtYXJnaW4tcmlnaHQgJSBpbnN0ZWFkIG9mIHJlbHlpbmcg
b24gUmVuZGVyQm94J3MgbWFyZ2luUmlnaHQoKSB2YWx1ZS4KICAgICAgICAgICAgICAgICB2YWx1
ZSA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChtYXJnaW5SaWdodCwgZG93bmNhc3Q8UmVuZGVyQm94
PigqcmVuZGVyZXIpLmNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvckNvbnRlbnQoKSk7CiAg
ICAgICAgICAgICB9IGVsc2UKQEAgLTMzNDUsMjAgKzMzNDQsMjAgQEAgUmVmUHRyPENTU1ZhbHVl
PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOgogICAgICAgICAgICAgcmV0dXJuIHJlbmRlckVtcGhh
c2lzUG9zaXRpb25GbGFnc1RvQ1NTVmFsdWUoc3R5bGUudGV4dEVtcGhhc2lzUG9zaXRpb24oKSk7
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZToKICAgICAg
ICAgICAgIHN3aXRjaCAoc3R5bGUudGV4dEVtcGhhc2lzTWFyaygpKSB7Ci0gICAgICAgICAgICBj
YXNlIFRleHRFbXBoYXNpc01hcmtOb25lOgorICAgICAgICAgICAgY2FzZSBUZXh0RW1waGFzaXNN
YXJrOjpOb25lOgogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7Ci0gICAgICAgICAgICBjYXNlIFRleHRFbXBoYXNp
c01hcmtDdXN0b206CisgICAgICAgICAgICBjYXNlIFRleHRFbXBoYXNpc01hcms6OkN1c3RvbToK
ICAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLnRl
eHRFbXBoYXNpc0N1c3RvbU1hcmsoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOwot
ICAgICAgICAgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrQXV0bzoKKyAgICAgICAgICAgIGNhc2Ug
VGV4dEVtcGhhc2lzTWFyazo6QXV0bzoKICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICNpZiBBU1NFUlRfRElTQUJMRUQKICAgICAgICAgICAgICAgICBGQUxMVEhST1VHSDsK
ICNlbmRpZgotICAgICAgICAgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrRG90OgotICAgICAgICAg
ICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrQ2lyY2xlOgotICAgICAgICAgICAgY2FzZSBUZXh0RW1w
aGFzaXNNYXJrRG91YmxlQ2lyY2xlOgotICAgICAgICAgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJr
VHJpYW5nbGU6Ci0gICAgICAgICAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtTZXNhbWU6CisgICAg
ICAgICAgICBjYXNlIFRleHRFbXBoYXNpc01hcms6OkRvdDoKKyAgICAgICAgICAgIGNhc2UgVGV4
dEVtcGhhc2lzTWFyazo6Q2lyY2xlOgorICAgICAgICAgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJr
OjpEb3VibGVDaXJjbGU6CisgICAgICAgICAgICBjYXNlIFRleHRFbXBoYXNpc01hcms6OlRyaWFu
Z2xlOgorICAgICAgICAgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrOjpTZXNhbWU6CiAgICAgICAg
ICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgp
OwogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
c3R5bGUudGV4dEVtcGhhc2lzRmlsbCgpKSk7CiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5k
KGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS50ZXh0RW1waGFzaXNNYXJrKCkpKTsKQEAg
LTM1NjAsMTYgKzM1NTksMTYgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOgogICAgICAgICAgICAgaWYgKHQpIHsKICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHQtPnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAo
dC0+YW5pbWF0aW9uKGkpLmZpbGxNb2RlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBB
bmltYXRpb25GaWxsTW9kZU5vbmU6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQW5pbWF0aW9u
RmlsbE1vZGU6Ok5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3Nz
VmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIEFuaW1hdGlv
bkZpbGxNb2RlRm9yd2FyZHM6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQW5pbWF0aW9uRmls
bE1vZGU6OkZvcndhcmRzOgogICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNz
c1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVGb3J3YXJkcykpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQW5p
bWF0aW9uRmlsbE1vZGVCYWNrd2FyZHM6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQW5pbWF0
aW9uRmlsbE1vZGU6OkJhY2t3YXJkczoKICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFw
cGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQmFja3dhcmRz
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSBBbmltYXRpb25GaWxsTW9kZUJvdGg6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQW5p
bWF0aW9uRmlsbE1vZGU6OkJvdGg6CiAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUJvdGgpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0z
NjA4LDExICszNjA3LDE0IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rv
cjoKICAgICAgICAgICAgIGNvbnN0IEFuaW1hdGlvbkxpc3QqIHQgPSBzdHlsZS5hbmltYXRpb25z
KCk7CiAgICAgICAgICAgICBpZiAodCkgewogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgdC0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgaW50IHByb3Ag
PSB0LT5hbmltYXRpb24oaSkucGxheVN0YXRlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChw
cm9wID09IEFuaW1QbGF5U3RhdGVQbGF5aW5nKQorICAgICAgICAgICAgICAgICAgICBzd2l0Y2gg
KHQtPmFuaW1hdGlvbihpKS5wbGF5U3RhdGUoKSkgeworICAgICAgICAgICAgICAgICAgICBjYXNl
IEFuaW1hdGlvblBsYXlTdGF0ZTo6UGxheWluZzoKICAgICAgICAgICAgICAgICAgICAgICAgIGxp
c3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlUnVu
bmluZykpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBbmltYXRpb25QbGF5U3RhdGU6OlBh
dXNlZDoKICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wu
Y3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlUGF1c2VkKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1
ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlUnVubmluZykpOwpAQCAtMzcwNSw3
ICszNzA3LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOgogICAg
ICAgICAgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nOgotICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoc3R5bGUucnRsT3JkZXJpbmcoKSA/IENTU1ZhbHVl
VmlzdWFsIDogQ1NTVmFsdWVMb2dpY2FsKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBv
b2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKHN0eWxlLnJ0bE9yZGVyaW5nKCkgPT0gT3JkZXI6OlZp
c3VhbCA/IENTU1ZhbHVlVmlzdWFsIDogQ1NTVmFsdWVMb2dpY2FsKTsKICNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGFwSGlnaGxpZ2h0Q29s
b3I6CiAgICAgICAgICAgICByZXR1cm4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKCZzdHlsZSwg
c3R5bGUudGFwSGlnaGxpZ2h0Q29sb3IoKSk7CkBAIC0zODMzLDcgKzM4MzUsNyBAQCBSZWZQdHI8
Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6CiAgICAgICAgICAgICBpZiAoaXM8U2hh
cGVDbGlwUGF0aE9wZXJhdGlvbj4oKm9wZXJhdGlvbikpIHsKICAgICAgICAgICAgICAgICBhdXRv
JiBzaGFwZU9wZXJhdGlvbiA9IGRvd25jYXN0PFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24+KCpvcGVy
YXRpb24pOwogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh2YWx1ZUZvckJhc2ljU2hhcGUo
c3R5bGUsIHNoYXBlT3BlcmF0aW9uLmJhc2ljU2hhcGUoKSkpOwotICAgICAgICAgICAgICAgIGlm
IChzaGFwZU9wZXJhdGlvbi5yZWZlcmVuY2VCb3goKSAhPSBCb3hNaXNzaW5nKQorICAgICAgICAg
ICAgICAgIGlmIChzaGFwZU9wZXJhdGlvbi5yZWZlcmVuY2VCb3goKSAhPSBDU1NCb3hUeXBlOjpC
b3hNaXNzaW5nKQogICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29s
LmNyZWF0ZVZhbHVlKHNoYXBlT3BlcmF0aW9uLnJlZmVyZW5jZUJveCgpKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBpZiAoaXM8Qm94Q2xpcFBhdGhPcGVyYXRpb24+KCpvcGVyYXRpb24p
KQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uaAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw4ICs1MSw4IEBAIGVu
dW0gQWRqdXN0UGl4ZWxWYWx1ZXNGb3JDb21wdXRlZFN0eWxlIHsKIAogY2xhc3MgQ29tcHV0ZWRT
dHlsZUV4dHJhY3RvciB7CiBwdWJsaWM6Ci0gICAgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcihOb2Rl
KiwgYm9vbCBhbGxvd1Zpc2l0ZWRTdHlsZSA9IGZhbHNlLCBQc2V1ZG9JZCA9IE5PUFNFVURPKTsK
LSAgICBDb21wdXRlZFN0eWxlRXh0cmFjdG9yKEVsZW1lbnQqLCBib29sIGFsbG93VmlzaXRlZFN0
eWxlID0gZmFsc2UsIFBzZXVkb0lkID0gTk9QU0VVRE8pOworICAgIENvbXB1dGVkU3R5bGVFeHRy
YWN0b3IoTm9kZSosIGJvb2wgYWxsb3dWaXNpdGVkU3R5bGUgPSBmYWxzZSwgUHNldWRvSWQgPSBQ
c2V1ZG9JZDo6Tm9uZSk7CisgICAgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcihFbGVtZW50KiwgYm9v
bCBhbGxvd1Zpc2l0ZWRTdHlsZSA9IGZhbHNlLCBQc2V1ZG9JZCA9IFBzZXVkb0lkOjpOb25lKTsK
IAogICAgIFJlZlB0cjxDU1NWYWx1ZT4gcHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlELCBFVXBk
YXRlTGF5b3V0ID0gVXBkYXRlTGF5b3V0KTsKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlRm9y
UHJvcGVydHlpblN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgQ1NTUHJvcGVydHlJRCwgUmVuZGVy
RWxlbWVudCogPSBudWxscHRyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRp
dmVWYWx1ZU1hcHBpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTA3
Myw0NSArMTA3Myw0NSBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3Bl
CiAgICAgcmV0dXJuIEJveE9yaWVudDo6SG9yaXpvbnRhbDsKIH0KIAotdGVtcGxhdGU8PiBpbmxp
bmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVDYXB0aW9uU2lkZSBlKQor
dGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKENh
cHRpb25TaWRlIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKICAgICBtX3By
aW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAoZSkgewotICAgIGNh
c2UgQ0FQTEVGVDoKKyAgICBjYXNlIENhcHRpb25TaWRlOjpMZWZ0OgogICAgICAgICBtX3ZhbHVl
LnZhbHVlSUQgPSBDU1NWYWx1ZUxlZnQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ0FQUklH
SFQ6CisgICAgY2FzZSBDYXB0aW9uU2lkZTo6UmlnaHQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlUmlnaHQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ0FQVE9QOgorICAg
IGNhc2UgQ2FwdGlvblNpZGU6OlRvcDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFs
dWVUb3A7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ0FQQk9UVE9NOgorICAgIGNhc2UgQ2Fw
dGlvblNpZGU6OkJvdHRvbToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVCb3R0
b207CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVDYXB0aW9uU2lkZSgpIGNvbnN0Cit0ZW1wbGF0ZTw+IGlu
bGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQ2FwdGlvblNpZGUoKSBjb25zdAogewog
ICAgIEFTU0VSVChpc1ZhbHVlSUQoKSk7CiAKICAgICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkg
ewogICAgIGNhc2UgQ1NTVmFsdWVMZWZ0OgotICAgICAgICByZXR1cm4gQ0FQTEVGVDsKKyAgICAg
ICAgcmV0dXJuIENhcHRpb25TaWRlOjpMZWZ0OwogICAgIGNhc2UgQ1NTVmFsdWVSaWdodDoKLSAg
ICAgICAgcmV0dXJuIENBUFJJR0hUOworICAgICAgICByZXR1cm4gQ2FwdGlvblNpZGU6OlJpZ2h0
OwogICAgIGNhc2UgQ1NTVmFsdWVUb3A6Ci0gICAgICAgIHJldHVybiBDQVBUT1A7CisgICAgICAg
IHJldHVybiBDYXB0aW9uU2lkZTo6VG9wOwogICAgIGNhc2UgQ1NTVmFsdWVCb3R0b206Ci0gICAg
ICAgIHJldHVybiBDQVBCT1RUT007CisgICAgICAgIHJldHVybiBDYXB0aW9uU2lkZTo6Qm90dG9t
OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBDQVBUT1A7CisgICAgcmV0dXJuIENhcHRpb25TaWRlOjpU
b3A7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRp
dmVWYWx1ZShDbGVhciBlKQpAQCAtMTE1NSwxNDAgKzExNTUsMTQwIEBAIHRlbXBsYXRlPD4gaW5s
aW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGUKICAgICByZXR1cm4gQ2xlYXI6Ok5vbmU7CiB9CiAK
LXRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShF
Q3Vyc29yIGUpCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0
aXZlVmFsdWUoQ3Vyc29yVHlwZSBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7
CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsKICAgICBzd2l0Y2ggKGUp
IHsKLSAgICBjYXNlIEN1cnNvckF1dG86CisgICAgY2FzZSBDdXJzb3JUeXBlOjpBdXRvOgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUF1dG87CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgQ3Vyc29yRGVmYXVsdDoKKyAgICBjYXNlIEN1cnNvclR5cGU6OkRlZmF1bHQ6CiAgICAg
ICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRGVmYXVsdDsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBDdXJzb3JOb25lOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6Tm9uZToKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb25lOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEN1cnNvckNvbnRleHRNZW51OgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6Q29udGV4dE1lbnU6CiAg
ICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQ29udGV4dE1lbnU7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQ3Vyc29ySGVscDoKKyAgICBjYXNlIEN1cnNvclR5cGU6OkhlbHA6CiAg
ICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlSGVscDsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBDdXJzb3JQb2ludGVyOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6UG9pbnRlcjoKICAg
ICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVQb2ludGVyOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIEN1cnNvclByb2dyZXNzOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6UHJvZ3Jlc3M6
CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlUHJvZ3Jlc3M7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQ3Vyc29yV2FpdDoKKyAgICBjYXNlIEN1cnNvclR5cGU6OldhaXQ6CiAg
ICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlV2FpdDsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBDdXJzb3JDZWxsOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6Q2VsbDoKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVDZWxsOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEN1cnNvckNyb3NzaGFpcjoKKyAgICBjYXNlIEN1cnNvclR5cGU6OkNyb3NzaGFpcjoKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVDcm9zc2hhaXI7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQ3Vyc29yVGV4dDoKKyAgICBjYXNlIEN1cnNvclR5cGU6OlRleHQ6CiAgICAgICAg
IG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVGV4dDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBDdXJzb3JWZXJ0aWNhbFRleHQ6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpWZXJ0aWNhbFRleHQ6
CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVmVydGljYWxUZXh0OwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEN1cnNvckFsaWFzOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6QWxp
YXM6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQWxpYXM7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQ3Vyc29yQ29weToKKyAgICBjYXNlIEN1cnNvclR5cGU6OkNvcHk6CiAg
ICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQ29weTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBDdXJzb3JNb3ZlOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6TW92ZToKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVNb3ZlOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEN1cnNvck5vRHJvcDoKKyAgICBjYXNlIEN1cnNvclR5cGU6Ok5vRHJvcDoKICAgICAgICAgbV92
YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb0Ryb3A7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
Q3Vyc29yTm90QWxsb3dlZDoKKyAgICBjYXNlIEN1cnNvclR5cGU6Ok5vdEFsbG93ZWQ6CiAgICAg
ICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTm90QWxsb3dlZDsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBDdXJzb3JHcmFiOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6R3JhYjoKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVHcmFiOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIEN1cnNvckdyYWJiaW5nOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6R3JhYmJpbmc6CiAgICAg
ICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlR3JhYmJpbmc7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQ3Vyc29yRVJlc2l6ZToKKyAgICBjYXNlIEN1cnNvclR5cGU6OkVSZXNpemU6CiAg
ICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRVJlc2l6ZTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBDdXJzb3JOUmVzaXplOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6TlJlc2l6ZToK
ICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOUmVzaXplOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIEN1cnNvck5lUmVzaXplOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6TkVSZXNp
emU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTmVSZXNpemU7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yTndSZXNpemU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpO
V1Jlc2l6ZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOd1Jlc2l6ZTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JTUmVzaXplOgorICAgIGNhc2UgQ3Vyc29yVHlw
ZTo6U1Jlc2l6ZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVTUmVzaXplOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNvclNlUmVzaXplOgorICAgIGNhc2UgQ3Vyc29y
VHlwZTo6U0VSZXNpemU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlU2VSZXNp
emU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yU3dSZXNpemU6CisgICAgY2FzZSBD
dXJzb3JUeXBlOjpTV1Jlc2l6ZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVT
d1Jlc2l6ZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JXUmVzaXplOgorICAgIGNh
c2UgQ3Vyc29yVHlwZTo6V1Jlc2l6ZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFs
dWVXUmVzaXplOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNvckV3UmVzaXplOgorICAg
IGNhc2UgQ3Vyc29yVHlwZTo6RVdSZXNpemU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlRXdSZXNpemU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yTnNSZXNpemU6
CisgICAgY2FzZSBDdXJzb3JUeXBlOjpOU1Jlc2l6ZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVOc1Jlc2l6ZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JOZXN3
UmVzaXplOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6TkVTV1Jlc2l6ZToKICAgICAgICAgbV92YWx1
ZS52YWx1ZUlEID0gQ1NTVmFsdWVOZXN3UmVzaXplOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEN1cnNvck53c2VSZXNpemU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpOV1NFUmVzaXplOgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU53c2VSZXNpemU7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQ3Vyc29yQ29sUmVzaXplOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6Q29sdW1u
UmVzaXplOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUNvbFJlc2l6ZTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3JSb3dSZXNpemU6CisgICAgY2FzZSBDdXJzb3JU
eXBlOjpSb3dSZXNpemU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlUm93UmVz
aXplOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNvckFsbFNjcm9sbDoKKyAgICBjYXNl
IEN1cnNvclR5cGU6OkFsbFNjcm9sbDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFs
dWVBbGxTY3JvbGw7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc29yWm9vbUluOgorICAg
IGNhc2UgQ3Vyc29yVHlwZTo6Wm9vbUluOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NW
YWx1ZVpvb21JbjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzb3Jab29tT3V0OgorICAg
IGNhc2UgQ3Vyc29yVHlwZTo6Wm9vbU91dDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NT
VmFsdWVab29tT3V0OwogICAgICAgICBicmVhazsKICAgICB9CiB9CiAKLXRlbXBsYXRlPD4gaW5s
aW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFQ3Vyc29yKCkgY29uc3QKK3RlbXBsYXRl
PD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBDdXJzb3JUeXBlKCkgY29uc3QK
IHsKICAgICBBU1NFUlQoaXNWYWx1ZUlEKCkpOwogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlE
KSB7CiAgICAgY2FzZSBDU1NWYWx1ZUNvcHk6Ci0gICAgICAgIHJldHVybiBDdXJzb3JDb3B5Owor
ICAgICAgICByZXR1cm4gQ3Vyc29yVHlwZTo6Q29weTsKICAgICBjYXNlIENTU1ZhbHVlV2Via2l0
R3JhYjoKLSAgICAgICAgcmV0dXJuIEN1cnNvckdyYWI7CisgICAgICAgIHJldHVybiBDdXJzb3JU
eXBlOjpHcmFiOwogICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRHcmFiYmluZzoKLSAgICAgICAgcmV0
dXJuIEN1cnNvckdyYWJiaW5nOworICAgICAgICByZXR1cm4gQ3Vyc29yVHlwZTo6R3JhYmJpbmc7
CiAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdFpvb21JbjoKLSAgICAgICAgcmV0dXJuIEN1cnNvclpv
b21JbjsKKyAgICAgICAgcmV0dXJuIEN1cnNvclR5cGU6Olpvb21JbjsKICAgICBjYXNlIENTU1Zh
bHVlV2Via2l0Wm9vbU91dDoKLSAgICAgICAgcmV0dXJuIEN1cnNvclpvb21PdXQ7CisgICAgICAg
IHJldHVybiBDdXJzb3JUeXBlOjpab29tT3V0OwogICAgIGNhc2UgQ1NTVmFsdWVOb25lOgotICAg
ICAgICByZXR1cm4gQ3Vyc29yTm9uZTsKKyAgICAgICAgcmV0dXJuIEN1cnNvclR5cGU6Ok5vbmU7
CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVDdXJzb3I+KG1fdmFs
dWUudmFsdWVJRCAtIENTU1ZhbHVlQXV0byk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxD
dXJzb3JUeXBlPihtX3ZhbHVlLnZhbHVlSUQgLSBDU1NWYWx1ZUF1dG8pOwogICAgIH0KIH0KIApA
QCAtMTI5OCwxMCArMTI5OCwxMCBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTCiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsKICAgICBz
d2l0Y2ggKGUpIHsKLSAgICBjYXNlIEN1cnNvclZpc2liaWxpdHlBdXRvOgorICAgIGNhc2UgQ3Vy
c29yVmlzaWJpbGl0eTo6QXV0bzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVB
dXRvOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEN1cnNvclZpc2liaWxpdHlBdXRvSGlkZToK
KyAgICBjYXNlIEN1cnNvclZpc2liaWxpdHk6OkF1dG9IaWRlOgogICAgICAgICBtX3ZhbHVlLnZh
bHVlSUQgPSBDU1NWYWx1ZUF1dG9IaWRlOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xMzEy
LDEzOSArMTMxMiwxMzkgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9w
ZQogICAgIEFTU0VSVChpc1ZhbHVlSUQoKSk7CiAKICAgICBpZiAobV92YWx1ZS52YWx1ZUlEID09
IENTU1ZhbHVlQXV0bykKLSAgICAgICAgcmV0dXJuIEN1cnNvclZpc2liaWxpdHlBdXRvOworICAg
ICAgICByZXR1cm4gQ3Vyc29yVmlzaWJpbGl0eTo6QXV0bzsKICAgICBpZiAobV92YWx1ZS52YWx1
ZUlEID09IENTU1ZhbHVlQXV0b0hpZGUpCi0gICAgICAgIHJldHVybiBDdXJzb3JWaXNpYmlsaXR5
QXV0b0hpZGU7CisgICAgICAgIHJldHVybiBDdXJzb3JWaXNpYmlsaXR5OjpBdXRvSGlkZTsKIAog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBDdXJzb3JWaXNpYmlsaXR5QXV0
bzsKKyAgICByZXR1cm4gQ3Vyc29yVmlzaWJpbGl0eTo6QXV0bzsKIH0KICNlbmRpZgogCi10ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRURpc3Bs
YXkgZSkKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVW
YWx1ZShEaXNwbGF5VHlwZSBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7CiAg
ICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsKICAgICBzd2l0Y2ggKGUpIHsK
LSAgICBjYXNlIElOTElORToKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpJbmxpbmU6CiAgICAgICAg
IG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlSW5saW5lOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIEJMT0NLOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OkJsb2NrOgogICAgICAgICBtX3ZhbHVl
LnZhbHVlSUQgPSBDU1NWYWx1ZUJsb2NrOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExJU1Rf
SVRFTToKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpMaXN0SXRlbToKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVMaXN0SXRlbTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDT01Q
QUNUOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OkNvbXBhY3Q6CiAgICAgICAgIG1fdmFsdWUudmFs
dWVJRCA9IENTU1ZhbHVlQ29tcGFjdDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJTkxJTkVf
QkxPQ0s6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6SW5saW5lQmxvY2s6CiAgICAgICAgIG1fdmFs
dWUudmFsdWVJRCA9IENTU1ZhbHVlSW5saW5lQmxvY2s7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgVEFCTEU6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFibGU6CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlVGFibGU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSU5MSU5F
X1RBQkxFOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OklubGluZVRhYmxlOgogICAgICAgICBtX3Zh
bHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUlubGluZVRhYmxlOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFRBQkxFX1JPV19HUk9VUDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZVJvd0dyb3Vw
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVRhYmxlUm93R3JvdXA7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgVEFCTEVfSEVBREVSX0dST1VQOgorICAgIGNhc2UgRGlzcGxh
eVR5cGU6OlRhYmxlSGVhZGVyR3JvdXA6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlVGFibGVIZWFkZXJHcm91cDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUQUJMRV9GT09U
RVJfR1JPVVA6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFibGVGb290ZXJHcm91cDoKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVUYWJsZUZvb3Rlckdyb3VwOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFRBQkxFX1JPVzoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZVJv
dzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVUYWJsZVJvdzsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBUQUJMRV9DT0xVTU5fR1JPVVA6CisgICAgY2FzZSBEaXNwbGF5VHlw
ZTo6VGFibGVDb2x1bW5Hcm91cDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVU
YWJsZUNvbHVtbkdyb3VwOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRBQkxFX0NPTFVNTjoK
KyAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZUNvbHVtbjoKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVUYWJsZUNvbHVtbjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUQUJM
RV9DRUxMOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlQ2VsbDoKICAgICAgICAgbV92YWx1
ZS52YWx1ZUlEID0gQ1NTVmFsdWVUYWJsZUNlbGw7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
VEFCTEVfQ0FQVElPTjoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZUNhcHRpb246CiAgICAg
ICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVGFibGVDYXB0aW9uOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIEJPWDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpCb3g6CiAgICAgICAgIG1f
dmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlV2Via2l0Qm94OwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIElOTElORV9CT1g6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6SW5saW5lQm94OgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVdlYmtpdElubGluZUJveDsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBGTEVYOgotICAgIGNhc2UgV0VCS0lUX0ZMRVg6CisgICAgY2FzZSBEaXNw
bGF5VHlwZTo6RmxleDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpXZWJLaXRGbGV4OgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUZsZXg7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgSU5MSU5FX0ZMRVg6Ci0gICAgY2FzZSBXRUJLSVRfSU5MSU5FX0ZMRVg6CisgICAgY2FzZSBE
aXNwbGF5VHlwZTo6SW5saW5lRmxleDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpXZWJLaXRJbmxp
bmVGbGV4OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUlubGluZUZsZXg7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgR1JJRDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpHcmlk
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUdyaWQ7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSU5MSU5FX0dSSUQ6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6SW5saW5lR3Jp
ZDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVJbmxpbmVHcmlkOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIE5PTkU6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6Tm9uZToKICAg
ICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb25lOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIENPTlRFTlRTOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OkNvbnRlbnRzOgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUNvbnRlbnRzOwogICAgICAgICBicmVhazsKICAg
ICB9CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBF
RGlzcGxheSgpIGNvbnN0Cit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3Bl
cmF0b3IgRGlzcGxheVR5cGUoKSBjb25zdAogewogICAgIEFTU0VSVChpc1ZhbHVlSUQoKSk7CiAK
ICAgICBpZiAobV92YWx1ZS52YWx1ZUlEID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgcmV0dXJu
IE5PTkU7CisgICAgICAgIHJldHVybiBEaXNwbGF5VHlwZTo6Tm9uZTsKIAotICAgIEVEaXNwbGF5
IGRpc3BsYXkgPSBzdGF0aWNfY2FzdDxFRGlzcGxheT4obV92YWx1ZS52YWx1ZUlEIC0gQ1NTVmFs
dWVJbmxpbmUpOwotICAgIEFTU0VSVChkaXNwbGF5ID49IElOTElORSAmJiBkaXNwbGF5IDw9IE5P
TkUpOwotICAgIGlmIChkaXNwbGF5ID09IFdFQktJVF9GTEVYKQotICAgICAgICByZXR1cm4gRkxF
WDsKLSAgICBpZiAoZGlzcGxheSA9PSBXRUJLSVRfSU5MSU5FX0ZMRVgpCi0gICAgICAgIHJldHVy
biBJTkxJTkVfRkxFWDsKKyAgICBEaXNwbGF5VHlwZSBkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8RGlz
cGxheVR5cGU+KG1fdmFsdWUudmFsdWVJRCAtIENTU1ZhbHVlSW5saW5lKTsKKyAgICBBU1NFUlQo
ZGlzcGxheSA+PSBEaXNwbGF5VHlwZTo6SW5saW5lICYmIGRpc3BsYXkgPD0gRGlzcGxheVR5cGU6
Ok5vbmUpOworICAgIGlmIChkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpXZWJLaXRGbGV4KQorICAg
ICAgICByZXR1cm4gRGlzcGxheVR5cGU6OkZsZXg7CisgICAgaWYgKGRpc3BsYXkgPT0gRGlzcGxh
eVR5cGU6OldlYktpdElubGluZUZsZXgpCisgICAgICAgIHJldHVybiBEaXNwbGF5VHlwZTo6SW5s
aW5lRmxleDsKICAgICByZXR1cm4gZGlzcGxheTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVFbXB0eUNlbGwgZSkKK3RlbXBsYXRl
PD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShFbXB0eUNlbGwg
ZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewogICAgIG1fcHJpbWl0aXZlVW5p
dFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoIChlKSB7Ci0gICAgY2FzZSBTSE9XOgor
ICAgIGNhc2UgRW1wdHlDZWxsOjpTaG93OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NW
YWx1ZVNob3c7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSElERToKKyAgICBjYXNlIEVtcHR5
Q2VsbDo6SGlkZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVIaWRlOwogICAg
ICAgICBicmVhazsKICAgICB9CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpvcGVyYXRvciBFRW1wdHlDZWxsKCkgY29uc3QKK3RlbXBsYXRlPD4gaW5saW5lIENTU1By
aW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFbXB0eUNlbGwoKSBjb25zdAogewogICAgIEFTU0VSVChp
c1ZhbHVlSUQoKSk7CiAKICAgICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkgewogICAgIGNhc2Ug
Q1NTVmFsdWVTaG93OgotICAgICAgICByZXR1cm4gU0hPVzsKKyAgICAgICAgcmV0dXJuIEVtcHR5
Q2VsbDo6U2hvdzsKICAgICBjYXNlIENTU1ZhbHVlSGlkZToKLSAgICAgICAgcmV0dXJuIEhJREU7
CisgICAgICAgIHJldHVybiBFbXB0eUNlbGw6OkhpZGU7CiAgICAgZGVmYXVsdDoKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFNI
T1c7CisgICAgcmV0dXJuIEVtcHR5Q2VsbDo6U2hvdzsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEZsZXhEaXJlY3Rpb24gZSkKQEAg
LTE2ODEsMjk3ICsxNjgxLDI5NyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6b3BlCiAgICAgcmV0dXJuIExpbmVCcmVhazo6QXV0bzsKIH0KIAotdGVtcGxhdGU8PiBpbmxp
bmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVMaXN0U3R5bGVQb3NpdGlv
biBlKQordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZh
bHVlKExpc3RTdHlsZVBvc2l0aW9uIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykK
IHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAo
ZSkgewotICAgIGNhc2UgT1VUU0lERToKKyAgICBjYXNlIExpc3RTdHlsZVBvc2l0aW9uOjpPdXRz
aWRlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU91dHNpZGU7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgSU5TSURFOgorICAgIGNhc2UgTGlzdFN0eWxlUG9zaXRpb246Oklu
c2lkZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVJbnNpZGU7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6
Om9wZXJhdG9yIEVMaXN0U3R5bGVQb3NpdGlvbigpIGNvbnN0Cit0ZW1wbGF0ZTw+IGlubGluZSBD
U1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgTGlzdFN0eWxlUG9zaXRpb24oKSBjb25zdAogewog
ICAgIEFTU0VSVChpc1ZhbHVlSUQoKSk7CiAKICAgICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkg
ewogICAgIGNhc2UgQ1NTVmFsdWVPdXRzaWRlOgotICAgICAgICByZXR1cm4gT1VUU0lERTsKKyAg
ICAgICAgcmV0dXJuIExpc3RTdHlsZVBvc2l0aW9uOjpPdXRzaWRlOwogICAgIGNhc2UgQ1NTVmFs
dWVJbnNpZGU6Ci0gICAgICAgIHJldHVybiBJTlNJREU7CisgICAgICAgIHJldHVybiBMaXN0U3R5
bGVQb3NpdGlvbjo6SW5zaWRlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBPVVRTSURFOworICAgIHJl
dHVybiBMaXN0U3R5bGVQb3NpdGlvbjo6T3V0c2lkZTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVMaXN0U3R5bGVUeXBlIGUpCit0
ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoTGlz
dFN0eWxlVHlwZSBlKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCiB7CiAgICAgbV9w
cmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsKICAgICBzd2l0Y2ggKGUpIHsKLSAgICBj
YXNlIEFmYXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBZmFyOgogICAgICAgICBtX3ZhbHVl
LnZhbHVlSUQgPSBDU1NWYWx1ZUFmYXI7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQW1oYXJp
YzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFtaGFyaWM6CiAgICAgICAgIG1fdmFsdWUudmFs
dWVJRCA9IENTU1ZhbHVlQW1oYXJpYzsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBbWhhcmlj
QWJlZ2VkZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFtaGFyaWNBYmVnZWRlOgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUFtaGFyaWNBYmVnZWRlOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIEFyYWJpY0luZGljOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QXJhYmlj
SW5kaWM6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXJhYmljSW5kaWM7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQXJtZW5pYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpBcm1lbmlhbjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBcm1lbmlhbjsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBc3Rlcmlza3M6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpBc3Rlcmlza3M6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXN0ZXJp
c2tzOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJpbmFyeUxpc3RTdHlsZToKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OkJpbmFyeToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFs
dWVCaW5hcnk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQmVuZ2FsaToKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkJlbmdhbGk6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVl
QmVuZ2FsaTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDYW1ib2RpYW46CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpDYW1ib2RpYW46CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlQ2FtYm9kaWFuOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENpcmNsZToKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OkNpcmNsZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFs
dWVDaXJjbGU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ2prRWFydGhseUJyYW5jaDoKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OkNqa0VhcnRobHlCcmFuY2g6CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlQ2prRWFydGhseUJyYW5jaDsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBDamtIZWF2ZW5seVN0ZW06CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDamtIZWF2ZW5s
eVN0ZW06CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQ2prSGVhdmVubHlTdGVt
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENKS0lkZW9ncmFwaGljOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6Q0pLSWRlb2dyYXBoaWM6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlQ2prSWRlb2dyYXBoaWM7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGVjaW1hbExl
YWRpbmdaZXJvOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGVjaW1hbExlYWRpbmdaZXJvOgog
ICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZURlY2ltYWxMZWFkaW5nWmVybzsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEZWNpbWFsTGlzdFN0eWxlOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6RGVjaW1hbDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVEZWNp
bWFsOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERldmFuYWdhcmk6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpEZXZhbmFnYXJpOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1
ZURldmFuYWdhcmk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGlzYzoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkRpc2M6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRGlz
YzsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFdGhpb3BpYzoKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OkV0aGlvcGljOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUV0aGlv
cGljOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZToKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVFdGhpb3BpY0FiZWdlZGU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXRo
aW9waWNBYmVnZWRlQW1FdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2Vk
ZUFtRXQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRXRoaW9waWNBYmVnZWRl
QW1FdDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVHZXo6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGVHZXo6CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlRXRoaW9waWNBYmVnZWRlR2V6OwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEV0aGlvcGljQWJlZ2VkZVRpRXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhp
b3BpY0FiZWdlZGVUaUVyOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUV0aGlv
cGljQWJlZ2VkZVRpRXI7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXRoaW9waWNBYmVnZWRl
VGlFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZVRpRXQ6CiAgICAg
ICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRXRoaW9waWNBYmVnZWRlVGlFdDsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lQWFFcjoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVBYUVyOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQg
PSBDU1NWYWx1ZUV0aGlvcGljSGFsZWhhbWVBYUVyOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEV0aGlvcGljSGFsZWhhbWVBYUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNI
YWxlaGFtZUFhRXQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRXRoaW9waWNI
YWxlaGFtZUFhRXQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUFt
RXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lQW1FdDoKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVFdGhpb3BpY0hhbGVoYW1lQW1FdDsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lR2V6OgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUdlejoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0g
Q1NTVmFsdWVFdGhpb3BpY0hhbGVoYW1lR2V6OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEV0
aGlvcGljSGFsZWhhbWVPbUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxl
aGFtZU9tRXQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRXRoaW9waWNIYWxl
aGFtZU9tRXQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVNpZEV0
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVNpZEV0OgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUV0aGlvcGljSGFsZWhhbWVTaWRFdDsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lU29FdDoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVTb0V0OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQg
PSBDU1NWYWx1ZUV0aGlvcGljSGFsZWhhbWVTb0V0OwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEV0aGlvcGljSGFsZWhhbWVUaUVyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNI
YWxlaGFtZVRpRXI6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRXRoaW9waWNI
YWxlaGFtZVRpRXI7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVRp
RXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lVGlFdDoKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVFdGhpb3BpY0hhbGVoYW1lVGlFdDsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lVGlnOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVRpZzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0g
Q1NTVmFsdWVFdGhpb3BpY0hhbGVoYW1lVGlnOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEZv
b3Rub3RlczoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkZvb3Rub3RlczoKICAgICAgICAgbV92
YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVGb290bm90ZXM7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgR2VvcmdpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpHZW9yZ2lhbjoKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVHZW9yZ2lhbjsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBHdWphcmF0aToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okd1amFyYXRpOgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUd1amFyYXRpOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEd1cm11a2hpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6R3VybXVraGk6CiAgICAg
ICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlR3VybXVraGk7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgSGFuZ3VsOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGFuZ3VsOgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUhhbmd1bDsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBIYW5ndWxDb25zb25hbnQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIYW5ndWxDb25z
b25hbnQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlSGFuZ3VsQ29uc29uYW50
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEhlYnJldzoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkhlYnJldzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVIZWJyZXc7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgSGlyYWdhbmE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpIaXJhZ2FuYToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVIaXJhZ2FuYTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIaXJhZ2FuYUlyb2hhOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6SGlyYWdhbmFJcm9oYToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFs
dWVIaXJhZ2FuYUlyb2hhOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEthbm5hZGE6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpLYW5uYWRhOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZUthbm5hZGE7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgS2F0YWthbmE6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpLYXRha2FuYToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0g
Q1NTVmFsdWVLYXRha2FuYTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBLYXRha2FuYUlyb2hh
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6S2F0YWthbmFJcm9oYToKICAgICAgICAgbV92YWx1
ZS52YWx1ZUlEID0gQ1NTVmFsdWVLYXRha2FuYUlyb2hhOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIEtobWVyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6S2htZXI6CiAgICAgICAgIG1fdmFs
dWUudmFsdWVJRCA9IENTU1ZhbHVlS2htZXI7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGFv
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TGFvOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQg
PSBDU1NWYWx1ZUxhbzsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMb3dlckFscGhhOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJBbHBoYToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVMb3dlckFscGhhOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExvd2VyQXJt
ZW5pYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckFybWVuaWFuOgogICAgICAgICBt
X3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUxvd2VyQXJtZW5pYW47CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgTG93ZXJHcmVlazoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyR3JlZWs6
CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTG93ZXJHcmVlazsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBMb3dlckhleGFkZWNpbWFsOgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6TG93ZXJIZXhhZGVjaW1hbDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVM
b3dlckhleGFkZWNpbWFsOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExvd2VyTGF0aW46Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckxhdGluOgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZUxvd2VyTGF0aW47CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTG93ZXJO
b3J3ZWdpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlck5vcndlZ2lhbjoKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVMb3dlck5vcndlZ2lhbjsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBMb3dlclJvbWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJS
b21hbjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVMb3dlclJvbWFuOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIE1hbGF5YWxhbToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
Ok1hbGF5YWxhbToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVNYWxheWFsYW07
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTW9uZ29saWFuOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6TW9uZ29saWFuOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU1vbmdv
bGlhbjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNeWFubWFyOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6TXlhbm1hcjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVNeWFu
bWFyOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE5vbmVMaXN0U3R5bGU6CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpOb25lOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5v
bmU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgT2N0YWw6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpPY3RhbDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVPY3RhbDsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPcml5YToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok9y
aXlhOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU9yaXlhOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIE9yb21vOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6T3JvbW86CiAg
ICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlT3JvbW87CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgUGVyc2lhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlBlcnNpYW46CiAgICAg
ICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlUGVyc2lhbjsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBTaWRhbWE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpTaWRhbWE6CiAgICAgICAg
IG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlU2lkYW1hOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFNvbWFsaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlNvbWFsaToKICAgICAgICAgbV92
YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVTb21hbGk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
U3F1YXJlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6U3F1YXJlOgogICAgICAgICBtX3ZhbHVl
LnZhbHVlSUQgPSBDU1NWYWx1ZVNxdWFyZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUZWx1
Z3U6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUZWx1Z3U6CiAgICAgICAgIG1fdmFsdWUudmFs
dWVJRCA9IENTU1ZhbHVlVGVsdWd1OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRoYWk6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaGFpOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZVRoYWk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVGliZXRhbjoKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OlRpYmV0YW46CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlVGliZXRhbjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUaWdyZToKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OlRpZ3JlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVRp
Z3JlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRpZ3JpbnlhRXI6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpUaWdyaW55YUVyOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1
ZVRpZ3JpbnlhRXI7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVGlncmlueWFFckFiZWdlZGU6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55YUVyQWJlZ2VkZToKICAgICAgICAgbV92
YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVUaWdyaW55YUVyQWJlZ2VkZTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBUaWdyaW55YUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmlueWFF
dDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVUaWdyaW55YUV0OwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFRpZ3JpbnlhRXRBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6VGlncmlueWFFdEFiZWdlZGU6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlVGlncmlueWFFdEFiZWdlZGU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVXBwZXJBbHBo
YToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyQWxwaGE6CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlVXBwZXJBbHBoYTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBV
cHBlckFybWVuaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJBcm1lbmlhbjoKICAg
ICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVVcHBlckFybWVuaWFuOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFVwcGVyR3JlZWs6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBl
ckdyZWVrOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVVwcGVyR3JlZWs7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgVXBwZXJIZXhhZGVjaW1hbDoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OlVwcGVySGV4YWRlY2ltYWw6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlVXBwZXJIZXhhZGVjaW1hbDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBVcHBlckxh
dGluOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJMYXRpbjoKICAgICAgICAgbV92YWx1
ZS52YWx1ZUlEID0gQ1NTVmFsdWVVcHBlckxhdGluOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IFVwcGVyTm9yd2VnaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJOb3J3ZWdpYW46
CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVXBwZXJOb3J3ZWdpYW47CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgVXBwZXJSb21hbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
OlVwcGVyUm9tYW46CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVXBwZXJSb21h
bjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBVcmR1OgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6VXJkdToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVVcmR1OwogICAgICAg
ICBicmVhazsKICAgICB9CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVl
OjpvcGVyYXRvciBFTGlzdFN0eWxlVHlwZSgpIGNvbnN0Cit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgTGlzdFN0eWxlVHlwZSgpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKGlzVmFsdWVJRCgpKTsKIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAg
Y2FzZSBDU1NWYWx1ZU5vbmU6Ci0gICAgICAgIHJldHVybiBOb25lTGlzdFN0eWxlOworICAgICAg
ICByZXR1cm4gTGlzdFN0eWxlVHlwZTo6Tm9uZTsKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RUxpc3RTdHlsZVR5cGU+KG1fdmFsdWUudmFsdWVJRCAtIENTU1ZhbHVl
RGlzYyk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxMaXN0U3R5bGVUeXBlPihtX3ZhbHVl
LnZhbHVlSUQgLSBDU1NWYWx1ZURpc2MpOwogICAgIH0KIH0KIApAQCAtMjIwMiwzNCArMjIwMiwz
NCBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTCiB7CiAgICAgbV9w
cmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsKICAgICBzd2l0Y2ggKGUpIHsKLSAgICBj
YXNlIEF1dG9CcmVha0JldHdlZW46CisgICAgY2FzZSBCcmVha0JldHdlZW46OkF1dG86CiAgICAg
ICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXV0bzsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBBdm9pZEJyZWFrQmV0d2VlbjoKKyAgICBjYXNlIEJyZWFrQmV0d2Vlbjo6QXZvaWQ6CiAg
ICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXZvaWQ7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQXZvaWRDb2x1bW5CcmVha0JldHdlZW46CisgICAgY2FzZSBCcmVha0JldHdlZW46
OkF2b2lkQ29sdW1uOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUF2b2lkQ29s
dW1uOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEF2b2lkUGFnZUJyZWFrQmV0d2VlbjoKKyAg
ICBjYXNlIEJyZWFrQmV0d2Vlbjo6QXZvaWRQYWdlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQg
PSBDU1NWYWx1ZUF2b2lkUGFnZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDb2x1bW5CcmVh
a0JldHdlZW46CisgICAgY2FzZSBCcmVha0JldHdlZW46OkNvbHVtbjoKICAgICAgICAgbV92YWx1
ZS52YWx1ZUlEID0gQ1NTVmFsdWVDb2x1bW47CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGFn
ZUJyZWFrQmV0d2VlbjoKKyAgICBjYXNlIEJyZWFrQmV0d2Vlbjo6UGFnZToKICAgICAgICAgbV92
YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVQYWdlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExl
ZnRQYWdlQnJlYWtCZXR3ZWVuOgorICAgIGNhc2UgQnJlYWtCZXR3ZWVuOjpMZWZ0UGFnZToKICAg
ICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVMZWZ0OwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFJpZ2h0UGFnZUJyZWFrQmV0d2VlbjoKKyAgICBjYXNlIEJyZWFrQmV0d2Vlbjo6Umln
aHRQYWdlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVJpZ2h0OwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFJlY3RvUGFnZUJyZWFrQmV0d2VlbjoKKyAgICBjYXNlIEJyZWFr
QmV0d2Vlbjo6UmVjdG9QYWdlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVJl
Y3RvOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFZlcnNvUGFnZUJyZWFrQmV0d2VlbjoKKyAg
ICBjYXNlIEJyZWFrQmV0d2Vlbjo6VmVyc29QYWdlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQg
PSBDU1NWYWx1ZVZlcnNvOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yMjQxLDMxICsyMjQx
LDMxIEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGUKIAogICAgIHN3
aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUF1dG86Ci0gICAgICAg
IHJldHVybiBBdXRvQnJlYWtCZXR3ZWVuOworICAgICAgICByZXR1cm4gQnJlYWtCZXR3ZWVuOjpB
dXRvOwogICAgIGNhc2UgQ1NTVmFsdWVBdm9pZDoKLSAgICAgICAgcmV0dXJuIEF2b2lkQnJlYWtC
ZXR3ZWVuOworICAgICAgICByZXR1cm4gQnJlYWtCZXR3ZWVuOjpBdm9pZDsKICAgICBjYXNlIENT
U1ZhbHVlQXZvaWRDb2x1bW46Ci0gICAgICAgIHJldHVybiBBdm9pZENvbHVtbkJyZWFrQmV0d2Vl
bjsKKyAgICAgICAgcmV0dXJuIEJyZWFrQmV0d2Vlbjo6QXZvaWRDb2x1bW47CiAgICAgY2FzZSBD
U1NWYWx1ZUF2b2lkUGFnZToKLSAgICAgICAgcmV0dXJuIEF2b2lkUGFnZUJyZWFrQmV0d2VlbjsK
KyAgICAgICAgcmV0dXJuIEJyZWFrQmV0d2Vlbjo6QXZvaWRQYWdlOwogICAgIGNhc2UgQ1NTVmFs
dWVDb2x1bW46Ci0gICAgICAgIHJldHVybiBDb2x1bW5CcmVha0JldHdlZW47CisgICAgICAgIHJl
dHVybiBCcmVha0JldHdlZW46OkNvbHVtbjsKICAgICBjYXNlIENTU1ZhbHVlUGFnZToKLSAgICAg
ICAgcmV0dXJuIFBhZ2VCcmVha0JldHdlZW47CisgICAgICAgIHJldHVybiBCcmVha0JldHdlZW46
OlBhZ2U7CiAgICAgY2FzZSBDU1NWYWx1ZUxlZnQ6Ci0gICAgICAgIHJldHVybiBMZWZ0UGFnZUJy
ZWFrQmV0d2VlbjsKKyAgICAgICAgcmV0dXJuIEJyZWFrQmV0d2Vlbjo6TGVmdFBhZ2U7CiAgICAg
Y2FzZSBDU1NWYWx1ZVJpZ2h0OgotICAgICAgICByZXR1cm4gUmlnaHRQYWdlQnJlYWtCZXR3ZWVu
OworICAgICAgICByZXR1cm4gQnJlYWtCZXR3ZWVuOjpSaWdodFBhZ2U7CiAgICAgY2FzZSBDU1NW
YWx1ZVJlY3RvOgotICAgICAgICByZXR1cm4gUmVjdG9QYWdlQnJlYWtCZXR3ZWVuOworICAgICAg
ICByZXR1cm4gQnJlYWtCZXR3ZWVuOjpSZWN0b1BhZ2U7CiAgICAgY2FzZSBDU1NWYWx1ZVZlcnNv
OgotICAgICAgICByZXR1cm4gVmVyc29QYWdlQnJlYWtCZXR3ZWVuOworICAgICAgICByZXR1cm4g
QnJlYWtCZXR3ZWVuOjpWZXJzb1BhZ2U7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEF1dG9CcmVha0Jl
dHdlZW47CisgICAgcmV0dXJuIEJyZWFrQmV0d2Vlbjo6QXV0bzsKIH0KIAogdGVtcGxhdGU8PiBp
bmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEJyZWFrSW5zaWRlIGUp
CkBAIC0yMjczLDE2ICsyMjczLDE2IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1MKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAg
IHN3aXRjaCAoZSkgewotICAgIGNhc2UgQXV0b0JyZWFrSW5zaWRlOgorICAgIGNhc2UgQnJlYWtJ
bnNpZGU6OkF1dG86CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXV0bzsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBdm9pZEJyZWFrSW5zaWRlOgorICAgIGNhc2UgQnJlYWtJ
bnNpZGU6OkF2b2lkOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUF2b2lkOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEF2b2lkQ29sdW1uQnJlYWtJbnNpZGU6CisgICAgY2Fz
ZSBCcmVha0luc2lkZTo6QXZvaWRDb2x1bW46CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlQXZvaWRDb2x1bW47CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQXZvaWRQYWdlQnJl
YWtJbnNpZGU6CisgICAgY2FzZSBCcmVha0luc2lkZTo6QXZvaWRQYWdlOgogICAgICAgICBtX3Zh
bHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUF2b2lkUGFnZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpA
QCAtMjI5NCwxOSArMjI5NCwxOSBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6b3BlCiAgICAgCiAgICAgc3dpdGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENT
U1ZhbHVlQXV0bzoKLSAgICAgICAgcmV0dXJuIEF1dG9CcmVha0luc2lkZTsKKyAgICAgICAgcmV0
dXJuIEJyZWFrSW5zaWRlOjpBdXRvOwogICAgIGNhc2UgQ1NTVmFsdWVBdm9pZDoKLSAgICAgICAg
cmV0dXJuIEF2b2lkQnJlYWtJbnNpZGU7CisgICAgICAgIHJldHVybiBCcmVha0luc2lkZTo6QXZv
aWQ7CiAgICAgY2FzZSBDU1NWYWx1ZUF2b2lkQ29sdW1uOgotICAgICAgICByZXR1cm4gQXZvaWRD
b2x1bW5CcmVha0luc2lkZTsKKyAgICAgICAgcmV0dXJuIEJyZWFrSW5zaWRlOjpBdm9pZENvbHVt
bjsKICAgICBjYXNlIENTU1ZhbHVlQXZvaWRQYWdlOgotICAgICAgICByZXR1cm4gQXZvaWRQYWdl
QnJlYWtJbnNpZGU7CisgICAgICAgIHJldHVybiBCcmVha0luc2lkZTo6QXZvaWRQYWdlOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiBBdXRvQnJlYWtJbnNpZGU7CisgICAgcmV0dXJuIEJyZWFrSW5zaWRl
OjpBdXRvOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJp
bWl0aXZlVmFsdWUoUG9zaXRpb25UeXBlIGUpCkBAIC0yNDMwLDUzICsyNDMwLDUzIEBAIHRlbXBs
YXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGUKICAgICByZXR1cm4gVGFibGVMYXlv
dXRUeXBlOjpBdXRvOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTUHJpbWl0aXZlVmFsdWUoRVRleHRBbGlnbiBlKQordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFRleHRBbGlnbk1vZGUgZSkKICAgICA6IENT
U1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1Nf
VkFMVUVfSUQ7CiAgICAgc3dpdGNoIChlKSB7Ci0gICAgY2FzZSBUQVNUQVJUOgorICAgIGNhc2Ug
VGV4dEFsaWduTW9kZTo6U3RhcnQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVl
U3RhcnQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVEFFTkQ6CisgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpFbmQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRW5kOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIExFRlQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUxlZnQ7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgUklHSFQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpSaWdodDoKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVSaWdodDsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBDRU5URVI6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpDZW50ZXI6CiAgICAgICAgIG1f
dmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQ2VudGVyOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEpVU1RJRlk6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5OgogICAgICAgICBtX3Zh
bHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUp1c3RpZnk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
V0VCS0lUX0xFRlQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVdlYmtpdExlZnQ7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgV0VCS0lUX1JJR0hUOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0Umln
aHQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlV2Via2l0UmlnaHQ7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgV0VCS0lUX0NFTlRFUjoKKyAgICBjYXNlIFRleHRBbGlnbk1v
ZGU6OldlYktpdENlbnRlcjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVXZWJr
aXRDZW50ZXI7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIEVUZXh0QWxpZ24oKSBjb25zdAordGVtcGxhdGU8
PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRleHRBbGlnbk1vZGUoKSBjb25z
dAogewogICAgIEFTU0VSVChpc1ZhbHVlSUQoKSk7CiAKICAgICBzd2l0Y2ggKG1fdmFsdWUudmFs
dWVJRCkgewogICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRBdXRvOiAvLyBMZWdhY3kgLXdlYmtpdC1h
dXRvLiBFcWl1dmFsZW50IHRvIHN0YXJ0LgogICAgIGNhc2UgQ1NTVmFsdWVTdGFydDoKLSAgICAg
ICAgcmV0dXJuIFRBU1RBUlQ7CisgICAgICAgIHJldHVybiBUZXh0QWxpZ25Nb2RlOjpTdGFydDsK
ICAgICBjYXNlIENTU1ZhbHVlRW5kOgotICAgICAgICByZXR1cm4gVEFFTkQ7CisgICAgICAgIHJl
dHVybiBUZXh0QWxpZ25Nb2RlOjpFbmQ7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEVUZXh0QWxpZ24+KG1fdmFsdWUudmFsdWVJRCAtIENTU1ZhbHVlTGVmdCk7Cisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXh0QWxpZ25Nb2RlPihtX3ZhbHVlLnZhbHVlSUQg
LSBDU1NWYWx1ZUxlZnQpOwogICAgIH0KIH0KIApAQCAtMjQ4NiwyNSArMjQ4NiwyNSBAQCB0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTCiB7CiAgICAgbV9wcmltaXRpdmVV
bml0VHlwZSA9IENTU19WQUxVRV9JRDsKICAgICBzd2l0Y2ggKGUpIHsKLSAgICBjYXNlIFRleHRB
bGlnbkxhc3RTdGFydDoKKyAgICBjYXNlIFRleHRBbGlnbkxhc3Q6OlN0YXJ0OgogICAgICAgICBt
X3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVN0YXJ0OwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IFRleHRBbGlnbkxhc3RFbmQ6CisgICAgY2FzZSBUZXh0QWxpZ25MYXN0OjpFbmQ6CiAgICAgICAg
IG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRW5kOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IFRleHRBbGlnbkxhc3RMZWZ0OgorICAgIGNhc2UgVGV4dEFsaWduTGFzdDo6TGVmdDoKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVMZWZ0OwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFRleHRBbGlnbkxhc3RSaWdodDoKKyAgICBjYXNlIFRleHRBbGlnbkxhc3Q6OlJpZ2h0Ogog
ICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVJpZ2h0OwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIFRleHRBbGlnbkxhc3RDZW50ZXI6CisgICAgY2FzZSBUZXh0QWxpZ25MYXN0OjpD
ZW50ZXI6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQ2VudGVyOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFRleHRBbGlnbkxhc3RKdXN0aWZ5OgorICAgIGNhc2UgVGV4dEFs
aWduTGFzdDo6SnVzdGlmeToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVKdXN0
aWZ5OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRleHRBbGlnbkxhc3RBdXRvOgorICAgIGNh
c2UgVGV4dEFsaWduTGFzdDo6QXV0bzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFs
dWVBdXRvOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yNTE2LDI1ICsyNTE2LDI1IEBAIHRl
bXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGUKIAogICAgIHN3aXRjaCAobV92
YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUF1dG86Ci0gICAgICAgIHJldHVybiBU
ZXh0QWxpZ25MYXN0QXV0bzsKKyAgICAgICAgcmV0dXJuIFRleHRBbGlnbkxhc3Q6OkF1dG87CiAg
ICAgY2FzZSBDU1NWYWx1ZVN0YXJ0OgotICAgICAgICByZXR1cm4gVGV4dEFsaWduTGFzdFN0YXJ0
OworICAgICAgICByZXR1cm4gVGV4dEFsaWduTGFzdDo6U3RhcnQ7CiAgICAgY2FzZSBDU1NWYWx1
ZUVuZDoKLSAgICAgICAgcmV0dXJuIFRleHRBbGlnbkxhc3RFbmQ7CisgICAgICAgIHJldHVybiBU
ZXh0QWxpZ25MYXN0OjpFbmQ7CiAgICAgY2FzZSBDU1NWYWx1ZUxlZnQ6Ci0gICAgICAgIHJldHVy
biBUZXh0QWxpZ25MYXN0TGVmdDsKKyAgICAgICAgcmV0dXJuIFRleHRBbGlnbkxhc3Q6OkxlZnQ7
CiAgICAgY2FzZSBDU1NWYWx1ZVJpZ2h0OgotICAgICAgICByZXR1cm4gVGV4dEFsaWduTGFzdFJp
Z2h0OworICAgICAgICByZXR1cm4gVGV4dEFsaWduTGFzdDo6UmlnaHQ7CiAgICAgY2FzZSBDU1NW
YWx1ZUNlbnRlcjoKLSAgICAgICAgcmV0dXJuIFRleHRBbGlnbkxhc3RDZW50ZXI7CisgICAgICAg
IHJldHVybiBUZXh0QWxpZ25MYXN0OjpDZW50ZXI7CiAgICAgY2FzZSBDU1NWYWx1ZUp1c3RpZnk6
Ci0gICAgICAgIHJldHVybiBUZXh0QWxpZ25MYXN0SnVzdGlmeTsKKyAgICAgICAgcmV0dXJuIFRl
eHRBbGlnbkxhc3Q6Okp1c3RpZnk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRleHRBbGlnbkxhc3RB
dXRvOworICAgIHJldHVybiBUZXh0QWxpZ25MYXN0OjpBdXRvOwogfQogCiB0ZW1wbGF0ZTw+IGlu
bGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoVGV4dEp1c3RpZnkgZSkK
QEAgLTI1NDIsMTYgKzI1NDIsMTYgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTUwogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAg
c3dpdGNoIChlKSB7Ci0gICAgY2FzZSBUZXh0SnVzdGlmeUF1dG86CisgICAgY2FzZSBUZXh0SnVz
dGlmeTo6QXV0bzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBdXRvOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFRleHRKdXN0aWZ5Tm9uZToKKyAgICBjYXNlIFRleHRKdXN0
aWZ5OjpOb25lOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5vbmU7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgVGV4dEp1c3RpZnlJbnRlcldvcmQ6CisgICAgY2FzZSBUZXh0
SnVzdGlmeTo6SW50ZXJXb3JkOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUlu
dGVyV29yZDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUZXh0SnVzdGlmeURpc3RyaWJ1dGU6
CisgICAgY2FzZSBUZXh0SnVzdGlmeTo6RGlzdHJpYnV0ZToKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVEaXN0cmlidXRlOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yNTYz
LDE5ICsyNTYzLDE5IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGUK
IAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUF1dG86
Ci0gICAgICAgIHJldHVybiBUZXh0SnVzdGlmeUF1dG87CisgICAgICAgIHJldHVybiBUZXh0SnVz
dGlmeTo6QXV0bzsKICAgICBjYXNlIENTU1ZhbHVlTm9uZToKLSAgICAgICAgcmV0dXJuIFRleHRK
dXN0aWZ5Tm9uZTsKKyAgICAgICAgcmV0dXJuIFRleHRKdXN0aWZ5OjpOb25lOwogICAgIGNhc2Ug
Q1NTVmFsdWVJbnRlcldvcmQ6Ci0gICAgICAgIHJldHVybiBUZXh0SnVzdGlmeUludGVyV29yZDsK
KyAgICAgICAgcmV0dXJuIFRleHRKdXN0aWZ5OjpJbnRlcldvcmQ7CiAgICAgY2FzZSBDU1NWYWx1
ZURpc3RyaWJ1dGU6Ci0gICAgICAgIHJldHVybiBUZXh0SnVzdGlmeURpc3RyaWJ1dGU7CisgICAg
ICAgIHJldHVybiBUZXh0SnVzdGlmeTo6RGlzdHJpYnV0ZTsKICAgICBkZWZhdWx0OgogICAgICAg
ICBicmVhazsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
VGV4dEp1c3RpZnlBdXRvOworICAgIHJldHVybiBUZXh0SnVzdGlmeTo6QXV0bzsKIH0KICNlbmRp
ZiAvLyBDU1MzX1RFWFQKIApAQCAtMjYxMiwyMSArMjYxMiwyMSBAQCB0ZW1wbGF0ZTw+IGlubGlu
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlCiAKICAgICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkg
ewogICAgIGNhc2UgQ1NTVmFsdWVTb2xpZDoKLSAgICAgICAgcmV0dXJuIFRleHREZWNvcmF0aW9u
U3R5bGVTb2xpZDsKKyAgICAgICAgcmV0dXJuIFRleHREZWNvcmF0aW9uU3R5bGU6OlNvbGlkOwog
ICAgIGNhc2UgQ1NTVmFsdWVEb3VibGU6Ci0gICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlvblN0
eWxlRG91YmxlOworICAgICAgICByZXR1cm4gVGV4dERlY29yYXRpb25TdHlsZTo6RG91YmxlOwog
ICAgIGNhc2UgQ1NTVmFsdWVEb3R0ZWQ6Ci0gICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlvblN0
eWxlRG90dGVkOworICAgICAgICByZXR1cm4gVGV4dERlY29yYXRpb25TdHlsZTo6RG90dGVkOwog
ICAgIGNhc2UgQ1NTVmFsdWVEYXNoZWQ6Ci0gICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlvblN0
eWxlRGFzaGVkOworICAgICAgICByZXR1cm4gVGV4dERlY29yYXRpb25TdHlsZTo6RGFzaGVkOwog
ICAgIGNhc2UgQ1NTVmFsdWVXYXZ5OgotICAgICAgICByZXR1cm4gVGV4dERlY29yYXRpb25TdHls
ZVdhdnk7CisgICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5OwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIHJldHVybiBUZXh0RGVjb3JhdGlvblN0eWxlU29saWQ7CisgICAgcmV0dXJuIFRleHRE
ZWNvcmF0aW9uU3R5bGU6OlNvbGlkOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoVGV4dFVuZGVybGluZVBvc2l0aW9uIGUpCkBAIC0y
NzEwLDQ1ICsyNzEwLDQ1IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpv
cGUKICAgICByZXR1cm4gVGV4dFNlY3VyaXR5OjpOb25lOwogfQogCi10ZW1wbGF0ZTw+IGlubGlu
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRVRleHRUcmFuc2Zvcm0gZSkK
K3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShU
ZXh0VHJhbnNmb3JtIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKICAgICBt
X3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAoZSkgewotICAg
IGNhc2UgQ0FQSVRBTElaRToKKyAgICBjYXNlIFRleHRUcmFuc2Zvcm06OkNhcGl0YWxpemU6CiAg
ICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQ2FwaXRhbGl6ZTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBVUFBFUkNBU0U6CisgICAgY2FzZSBUZXh0VHJhbnNmb3JtOjpVcHBlcmNh
c2U6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlVXBwZXJjYXNlOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIExPV0VSQ0FTRToKKyAgICBjYXNlIFRleHRUcmFuc2Zvcm06Okxv
d2VyY2FzZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVMb3dlcmNhc2U7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgVFROT05FOgorICAgIGNhc2UgVGV4dFRyYW5zZm9ybTo6
Tm9uZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb25lOwogICAgICAgICBi
cmVhazsKICAgICB9CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpv
cGVyYXRvciBFVGV4dFRyYW5zZm9ybSgpIGNvbnN0Cit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6b3BlcmF0b3IgVGV4dFRyYW5zZm9ybSgpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KGlzVmFsdWVJRCgpKTsKIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2Fz
ZSBDU1NWYWx1ZUNhcGl0YWxpemU6Ci0gICAgICAgIHJldHVybiBDQVBJVEFMSVpFOworICAgICAg
ICByZXR1cm4gVGV4dFRyYW5zZm9ybTo6Q2FwaXRhbGl6ZTsKICAgICBjYXNlIENTU1ZhbHVlVXBw
ZXJjYXNlOgotICAgICAgICByZXR1cm4gVVBQRVJDQVNFOworICAgICAgICByZXR1cm4gVGV4dFRy
YW5zZm9ybTo6VXBwZXJjYXNlOwogICAgIGNhc2UgQ1NTVmFsdWVMb3dlcmNhc2U6Ci0gICAgICAg
IHJldHVybiBMT1dFUkNBU0U7CisgICAgICAgIHJldHVybiBUZXh0VHJhbnNmb3JtOjpMb3dlcmNh
c2U7CiAgICAgY2FzZSBDU1NWYWx1ZU5vbmU6Ci0gICAgICAgIHJldHVybiBUVE5PTkU7CisgICAg
ICAgIHJldHVybiBUZXh0VHJhbnNmb3JtOjpOb25lOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBUVE5P
TkU7CisgICAgcmV0dXJuIFRleHRUcmFuc2Zvcm06Ok5vbmU7CiB9CiAKIHRlbXBsYXRlPD4gaW5s
aW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShFVW5pY29kZUJpZGkgZSkK
QEAgLTI5ODUsOTEgKzI5ODUsOTEgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFs
dWU6Om9wZQogICAgIHJldHVybiBWZXJ0aWNhbEFsaWduOjpUb3A7CiB9CiAKLXRlbXBsYXRlPD4g
aW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShFVmlzaWJpbGl0eSBl
KQordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVl
KFZpc2liaWxpdHkgZSkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewogICAgIG1f
cHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoIChlKSB7Ci0gICAg
Y2FzZSBWSVNJQkxFOgorICAgIGNhc2UgVmlzaWJpbGl0eTo6VmlzaWJsZToKICAgICAgICAgbV92
YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVWaXNpYmxlOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEhJRERFTjoKKyAgICBjYXNlIFZpc2liaWxpdHk6OkhpZGRlbjoKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVIaWRkZW47CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ09MTEFQ
U0U6CisgICAgY2FzZSBWaXNpYmlsaXR5OjpDb2xsYXBzZToKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVDb2xsYXBzZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCi10ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRVZpc2liaWxpdHkoKSBj
b25zdAordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFZpc2li
aWxpdHkoKSBjb25zdAogewogICAgIEFTU0VSVChpc1ZhbHVlSUQoKSk7CiAKICAgICBzd2l0Y2gg
KG1fdmFsdWUudmFsdWVJRCkgewogICAgIGNhc2UgQ1NTVmFsdWVIaWRkZW46Ci0gICAgICAgIHJl
dHVybiBISURERU47CisgICAgICAgIHJldHVybiBWaXNpYmlsaXR5OjpIaWRkZW47CiAgICAgY2Fz
ZSBDU1NWYWx1ZVZpc2libGU6Ci0gICAgICAgIHJldHVybiBWSVNJQkxFOworICAgICAgICByZXR1
cm4gVmlzaWJpbGl0eTo6VmlzaWJsZTsKICAgICBjYXNlIENTU1ZhbHVlQ29sbGFwc2U6Ci0gICAg
ICAgIHJldHVybiBDT0xMQVBTRTsKKyAgICAgICAgcmV0dXJuIFZpc2liaWxpdHk6OkNvbGxhcHNl
OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBWSVNJQkxFOworICAgIHJldHVybiBWaXNpYmlsaXR5OjpW
aXNpYmxlOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJp
bWl0aXZlVmFsdWUoRVdoaXRlU3BhY2UgZSkKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShXaGl0ZVNwYWNlIGUpCiAgICAgOiBDU1NWYWx1ZShQ
cmltaXRpdmVDbGFzcykKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lE
OwogICAgIHN3aXRjaCAoZSkgewotICAgIGNhc2UgTk9STUFMOgorICAgIGNhc2UgV2hpdGVTcGFj
ZTo6Tm9ybWFsOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5vcm1hbDsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUkU6CisgICAgY2FzZSBXaGl0ZVNwYWNlOjpQcmU6CiAg
ICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlUHJlOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFBSRV9XUkFQOgorICAgIGNhc2UgV2hpdGVTcGFjZTo6UHJlV3JhcDoKICAgICAgICAg
bV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVQcmVXcmFwOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFBSRV9MSU5FOgorICAgIGNhc2UgV2hpdGVTcGFjZTo6UHJlTGluZToKICAgICAgICAgbV92
YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVQcmVMaW5lOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IE5PV1JBUDoKKyAgICBjYXNlIFdoaXRlU3BhY2U6Ok5vV3JhcDoKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVOb3dyYXA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgS0hUTUxf
Tk9XUkFQOgorICAgIGNhc2UgV2hpdGVTcGFjZTo6S0hUTUxOb1dyYXA6CiAgICAgICAgIG1fdmFs
dWUudmFsdWVJRCA9IENTU1ZhbHVlV2Via2l0Tm93cmFwOwogICAgICAgICBicmVhazsKICAgICB9
CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFV2hp
dGVTcGFjZSgpIGNvbnN0Cit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3Bl
cmF0b3IgV2hpdGVTcGFjZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzVmFsdWVJRCgpKTsKIAog
ICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdE5v
d3JhcDoKLSAgICAgICAgcmV0dXJuIEtIVE1MX05PV1JBUDsKKyAgICAgICAgcmV0dXJuIFdoaXRl
U3BhY2U6OktIVE1MTm9XcmFwOwogICAgIGNhc2UgQ1NTVmFsdWVOb3dyYXA6Ci0gICAgICAgIHJl
dHVybiBOT1dSQVA7CisgICAgICAgIHJldHVybiBXaGl0ZVNwYWNlOjpOb1dyYXA7CiAgICAgY2Fz
ZSBDU1NWYWx1ZVByZToKLSAgICAgICAgcmV0dXJuIFBSRTsKKyAgICAgICAgcmV0dXJuIFdoaXRl
U3BhY2U6OlByZTsKICAgICBjYXNlIENTU1ZhbHVlUHJlV3JhcDoKLSAgICAgICAgcmV0dXJuIFBS
RV9XUkFQOworICAgICAgICByZXR1cm4gV2hpdGVTcGFjZTo6UHJlV3JhcDsKICAgICBjYXNlIENT
U1ZhbHVlUHJlTGluZToKLSAgICAgICAgcmV0dXJuIFBSRV9MSU5FOworICAgICAgICByZXR1cm4g
V2hpdGVTcGFjZTo6UHJlTGluZTsKICAgICBjYXNlIENTU1ZhbHVlTm9ybWFsOgotICAgICAgICBy
ZXR1cm4gTk9STUFMOworICAgICAgICByZXR1cm4gV2hpdGVTcGFjZTo6Tm9ybWFsOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIHJldHVybiBOT1JNQUw7CisgICAgcmV0dXJuIFdoaXRlU3BhY2U6Ok5vcm1hbDsKIH0K
IAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVl
KFdvcmRCcmVhayBlKQpAQCAtMzI1OCwxMyArMzI1OCwxMyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTCiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19W
QUxVRV9JRDsKICAgICBzd2l0Y2ggKHBvc2l0aW9uKSB7Ci0gICAgY2FzZSBSdWJ5UG9zaXRpb25C
ZWZvcmU6CisgICAgY2FzZSBSdWJ5UG9zaXRpb246OkJlZm9yZToKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVCZWZvcmU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUnVieVBv
c2l0aW9uQWZ0ZXI6CisgICAgY2FzZSBSdWJ5UG9zaXRpb246OkFmdGVyOgogICAgICAgICBtX3Zh
bHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUFmdGVyOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFJ1
YnlQb3NpdGlvbkludGVyQ2hhcmFjdGVyOgorICAgIGNhc2UgUnVieVBvc2l0aW9uOjpJbnRlckNo
YXJhY3RlcjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVJbnRlckNoYXJhY3Rl
cjsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzI3NiwxNyArMzI3NiwxNyBAQCB0ZW1wbGF0
ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlCiAKICAgICBzd2l0Y2ggKG1fdmFsdWUu
dmFsdWVJRCkgewogICAgIGNhc2UgQ1NTVmFsdWVCZWZvcmU6Ci0gICAgICAgIHJldHVybiBSdWJ5
UG9zaXRpb25CZWZvcmU7CisgICAgICAgIHJldHVybiBSdWJ5UG9zaXRpb246OkJlZm9yZTsKICAg
ICBjYXNlIENTU1ZhbHVlQWZ0ZXI6Ci0gICAgICAgIHJldHVybiBSdWJ5UG9zaXRpb25BZnRlcjsK
KyAgICAgICAgcmV0dXJuIFJ1YnlQb3NpdGlvbjo6QWZ0ZXI7CiAgICAgY2FzZSBDU1NWYWx1ZUlu
dGVyQ2hhcmFjdGVyOgotICAgICAgICByZXR1cm4gUnVieVBvc2l0aW9uSW50ZXJDaGFyYWN0ZXI7
CisgICAgICAgIHJldHVybiBSdWJ5UG9zaXRpb246OkludGVyQ2hhcmFjdGVyOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiBSdWJ5UG9zaXRpb25CZWZvcmU7CisgICAgcmV0dXJuIFJ1YnlQb3NpdGlvbjo6
QmVmb3JlOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJp
bWl0aXZlVmFsdWUoVGV4dE92ZXJmbG93IG92ZXJmbG93KQpAQCAtMzMyNSwxMCArMzMyNSwxMCBA
QCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTCiB7CiAgICAgbV9wcmlt
aXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsKICAgICBzd2l0Y2ggKGZpbGwpIHsKLSAgICBj
YXNlIFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQ6CisgICAgY2FzZSBUZXh0RW1waGFzaXNGaWxsOjpG
aWxsZWQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRmlsbGVkOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFRleHRFbXBoYXNpc0ZpbGxPcGVuOgorICAgIGNhc2UgVGV4dEVt
cGhhc2lzRmlsbDo6T3BlbjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVPcGVu
OwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0zMzQwLDE1ICszMzQwLDE1IEBAIHRlbXBsYXRl
PD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGUKIAogICAgIHN3aXRjaCAobV92YWx1ZS52
YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUZpbGxlZDoKLSAgICAgICAgcmV0dXJuIFRleHRF
bXBoYXNpc0ZpbGxGaWxsZWQ7CisgICAgICAgIHJldHVybiBUZXh0RW1waGFzaXNGaWxsOjpGaWxs
ZWQ7CiAgICAgY2FzZSBDU1NWYWx1ZU9wZW46Ci0gICAgICAgIHJldHVybiBUZXh0RW1waGFzaXNG
aWxsT3BlbjsKKyAgICAgICAgcmV0dXJuIFRleHRFbXBoYXNpc0ZpbGw6Ok9wZW47CiAgICAgZGVm
YXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgcmV0dXJuIFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQ7CisgICAgcmV0dXJuIFRleHRFbXBo
YXNpc0ZpbGw6OkZpbGxlZDsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFRleHRFbXBoYXNpc01hcmsgbWFyaykKQEAgLTMzNTYsMjQg
KzMzNTYsMjQgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTUwogewog
ICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoIChtYXJr
KSB7Ci0gICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrRG90OgorICAgIGNhc2UgVGV4dEVtcGhhc2lz
TWFyazo6RG90OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZURvdDsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrQ2lyY2xlOgorICAgIGNhc2UgVGV4
dEVtcGhhc2lzTWFyazo6Q2lyY2xlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1
ZUNpcmNsZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrRG91Ymxl
Q2lyY2xlOgorICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFyazo6RG91YmxlQ2lyY2xlOgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZURvdWJsZUNpcmNsZTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrVHJpYW5nbGU6CisgICAgY2FzZSBUZXh0RW1waGFz
aXNNYXJrOjpUcmlhbmdsZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVUcmlh
bmdsZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrU2VzYW1lOgor
ICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFyazo6U2VzYW1lOgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZVNlc2FtZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUZXh0RW1waGFz
aXNNYXJrTm9uZToKLSAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtBdXRvOgotICAgIGNhc2UgVGV4
dEVtcGhhc2lzTWFya0N1c3RvbToKKyAgICBjYXNlIFRleHRFbXBoYXNpc01hcms6Ok5vbmU6Cisg
ICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrOjpBdXRvOgorICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFy
azo6Q3VzdG9tOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgbV92YWx1
ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb25lOwogICAgICAgICBicmVhazsKQEAgLTMzODYsMjMgKzMz
ODYsMjMgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZQogCiAgICAg
c3dpdGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlTm9uZToKLSAgICAg
ICAgcmV0dXJuIFRleHRFbXBoYXNpc01hcmtOb25lOworICAgICAgICByZXR1cm4gVGV4dEVtcGhh
c2lzTWFyazo6Tm9uZTsKICAgICBjYXNlIENTU1ZhbHVlRG90OgotICAgICAgICByZXR1cm4gVGV4
dEVtcGhhc2lzTWFya0RvdDsKKyAgICAgICAgcmV0dXJuIFRleHRFbXBoYXNpc01hcms6OkRvdDsK
ICAgICBjYXNlIENTU1ZhbHVlQ2lyY2xlOgotICAgICAgICByZXR1cm4gVGV4dEVtcGhhc2lzTWFy
a0NpcmNsZTsKKyAgICAgICAgcmV0dXJuIFRleHRFbXBoYXNpc01hcms6OkNpcmNsZTsKICAgICBj
YXNlIENTU1ZhbHVlRG91YmxlQ2lyY2xlOgotICAgICAgICByZXR1cm4gVGV4dEVtcGhhc2lzTWFy
a0RvdWJsZUNpcmNsZTsKKyAgICAgICAgcmV0dXJuIFRleHRFbXBoYXNpc01hcms6OkRvdWJsZUNp
cmNsZTsKICAgICBjYXNlIENTU1ZhbHVlVHJpYW5nbGU6Ci0gICAgICAgIHJldHVybiBUZXh0RW1w
aGFzaXNNYXJrVHJpYW5nbGU7CisgICAgICAgIHJldHVybiBUZXh0RW1waGFzaXNNYXJrOjpUcmlh
bmdsZTsKICAgICBjYXNlIENTU1ZhbHVlU2VzYW1lOgotICAgICAgICByZXR1cm4gVGV4dEVtcGhh
c2lzTWFya1Nlc2FtZTsKKyAgICAgICAgcmV0dXJuIFRleHRFbXBoYXNpc01hcms6OlNlc2FtZTsK
ICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICByZXR1cm4gVGV4dEVtcGhhc2lzTWFya05vbmU7CisgICAgcmV0dXJuIFRl
eHRFbXBoYXNpc01hcms6Ok5vbmU7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShUZXh0T3JpZW50YXRpb24gZSkKQEAgLTM0NDUsNzUg
KzM0NDUsNzUgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZQogICAg
IHJldHVybiBUZXh0T3JpZW50YXRpb246Ok1peGVkOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRVBvaW50ZXJFdmVudHMgZSkKK3Rl
bXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShQb2lu
dGVyRXZlbnRzIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKICAgICBtX3By
aW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAoZSkgewotICAgIGNh
c2UgUEVfTk9ORToKKyAgICBjYXNlIFBvaW50ZXJFdmVudHM6Ok5vbmU6CiAgICAgICAgIG1fdmFs
dWUudmFsdWVJRCA9IENTU1ZhbHVlTm9uZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQRV9T
VFJPS0U6CisgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpTdHJva2U6CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlU3Ryb2tlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBFX0ZJ
TEw6CisgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpGaWxsOgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZUZpbGw7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUEVfUEFJTlRFRDoK
KyAgICBjYXNlIFBvaW50ZXJFdmVudHM6OlBhaW50ZWQ6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlUGFpbnRlZDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQRV9WSVNJQkxF
OgorICAgIGNhc2UgUG9pbnRlckV2ZW50czo6VmlzaWJsZToKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVWaXNpYmxlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBFX1ZJU0lC
TEVfU1RST0tFOgorICAgIGNhc2UgUG9pbnRlckV2ZW50czo6VmlzaWJsZVN0cm9rZToKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVWaXNpYmxlU3Ryb2tlOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIFBFX1ZJU0lCTEVfRklMTDoKKyAgICBjYXNlIFBvaW50ZXJFdmVudHM6OlZp
c2libGVGaWxsOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVZpc2libGVGaWxs
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBFX1ZJU0lCTEVfUEFJTlRFRDoKKyAgICBjYXNl
IFBvaW50ZXJFdmVudHM6OlZpc2libGVQYWludGVkOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQg
PSBDU1NWYWx1ZVZpc2libGVQYWludGVkOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBFX0FV
VE86CisgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpBdXRvOgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZUF1dG87CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUEVfQUxMOgorICAg
IGNhc2UgUG9pbnRlckV2ZW50czo6QWxsOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NW
YWx1ZUFsbDsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBD
U1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRVBvaW50ZXJFdmVudHMoKSBjb25zdAordGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFBvaW50ZXJFdmVudHMoKSBj
b25zdAogewogICAgIEFTU0VSVChpc1ZhbHVlSUQoKSk7CiAKICAgICBzd2l0Y2ggKG1fdmFsdWUu
dmFsdWVJRCkgewogICAgIGNhc2UgQ1NTVmFsdWVBbGw6Ci0gICAgICAgIHJldHVybiBQRV9BTEw7
CisgICAgICAgIHJldHVybiBQb2ludGVyRXZlbnRzOjpBbGw7CiAgICAgY2FzZSBDU1NWYWx1ZUF1
dG86Ci0gICAgICAgIHJldHVybiBQRV9BVVRPOworICAgICAgICByZXR1cm4gUG9pbnRlckV2ZW50
czo6QXV0bzsKICAgICBjYXNlIENTU1ZhbHVlTm9uZToKLSAgICAgICAgcmV0dXJuIFBFX05PTkU7
CisgICAgICAgIHJldHVybiBQb2ludGVyRXZlbnRzOjpOb25lOwogICAgIGNhc2UgQ1NTVmFsdWVW
aXNpYmxlUGFpbnRlZDoKLSAgICAgICAgcmV0dXJuIFBFX1ZJU0lCTEVfUEFJTlRFRDsKKyAgICAg
ICAgcmV0dXJuIFBvaW50ZXJFdmVudHM6OlZpc2libGVQYWludGVkOwogICAgIGNhc2UgQ1NTVmFs
dWVWaXNpYmxlRmlsbDoKLSAgICAgICAgcmV0dXJuIFBFX1ZJU0lCTEVfRklMTDsKKyAgICAgICAg
cmV0dXJuIFBvaW50ZXJFdmVudHM6OlZpc2libGVGaWxsOwogICAgIGNhc2UgQ1NTVmFsdWVWaXNp
YmxlU3Ryb2tlOgotICAgICAgICByZXR1cm4gUEVfVklTSUJMRV9TVFJPS0U7CisgICAgICAgIHJl
dHVybiBQb2ludGVyRXZlbnRzOjpWaXNpYmxlU3Ryb2tlOwogICAgIGNhc2UgQ1NTVmFsdWVWaXNp
YmxlOgotICAgICAgICByZXR1cm4gUEVfVklTSUJMRTsKKyAgICAgICAgcmV0dXJuIFBvaW50ZXJF
dmVudHM6OlZpc2libGU7CiAgICAgY2FzZSBDU1NWYWx1ZVBhaW50ZWQ6Ci0gICAgICAgIHJldHVy
biBQRV9QQUlOVEVEOworICAgICAgICByZXR1cm4gUG9pbnRlckV2ZW50czo6UGFpbnRlZDsKICAg
ICBjYXNlIENTU1ZhbHVlRmlsbDoKLSAgICAgICAgcmV0dXJuIFBFX0ZJTEw7CisgICAgICAgIHJl
dHVybiBQb2ludGVyRXZlbnRzOjpGaWxsOwogICAgIGNhc2UgQ1NTVmFsdWVTdHJva2U6Ci0gICAg
ICAgIHJldHVybiBQRV9TVFJPS0U7CisgICAgICAgIHJldHVybiBQb2ludGVyRXZlbnRzOjpTdHJv
a2U7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFBFX0FMTDsKKyAgICByZXR1cm4gUG9pbnRlckV2ZW50
czo6QWxsOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJp
bWl0aXZlVmFsdWUoS2VybmluZyBrZXJuaW5nKQpAQCAtMzcyMiwxMyArMzcyMiwxMyBAQCB0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTCiB7CiAgICAgbV9wcmltaXRpdmVV
bml0VHlwZSA9IENTU19WQUxVRV9JRDsKICAgICBzd2l0Y2ggKGh5cGhlbnMpIHsKLSAgICBjYXNl
IEh5cGhlbnNOb25lOgorICAgIGNhc2UgSHlwaGVuczo6Tm9uZToKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVOb25lOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEh5cGhlbnNN
YW51YWw6CisgICAgY2FzZSBIeXBoZW5zOjpNYW51YWw6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlTWFudWFsOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEh5cGhlbnNBdXRv
OgorICAgIGNhc2UgSHlwaGVuczo6QXV0bzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NT
VmFsdWVBdXRvOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0zNzQwLDE3ICszNzQwLDE3IEBA
IHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGUKIAogICAgIHN3aXRjaCAo
bV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZU5vbmU6Ci0gICAgICAgIHJldHVy
biBIeXBoZW5zTm9uZTsKKyAgICAgICAgcmV0dXJuIEh5cGhlbnM6Ok5vbmU7CiAgICAgY2FzZSBD
U1NWYWx1ZU1hbnVhbDoKLSAgICAgICAgcmV0dXJuIEh5cGhlbnNNYW51YWw7CisgICAgICAgIHJl
dHVybiBIeXBoZW5zOjpNYW51YWw7CiAgICAgY2FzZSBDU1NWYWx1ZUF1dG86Ci0gICAgICAgIHJl
dHVybiBIeXBoZW5zQXV0bzsKKyAgICAgICAgcmV0dXJuIEh5cGhlbnM6OkF1dG87CiAgICAgZGVm
YXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgcmV0dXJuIEh5cGhlbnNBdXRvOworICAgIHJldHVybiBIeXBoZW5zOjpBdXRvOwogfQog
CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUo
TGluZVNuYXAgZ3JpZFNuYXApCkBAIC0zNzU4LDEzICszNzU4LDEzIEBAIHRlbXBsYXRlPD4gaW5s
aW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1MKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0g
Q1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAoZ3JpZFNuYXApIHsKLSAgICBjYXNlIExpbmVTbmFw
Tm9uZToKKyAgICBjYXNlIExpbmVTbmFwOjpOb25lOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQg
PSBDU1NWYWx1ZU5vbmU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZVNuYXBCYXNlbGlu
ZToKKyAgICBjYXNlIExpbmVTbmFwOjpCYXNlbGluZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVCYXNlbGluZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMaW5lU25hcENv
bnRhaW46CisgICAgY2FzZSBMaW5lU25hcDo6Q29udGFpbjoKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVDb250YWluOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0zNzc2LDE3
ICszNzc2LDE3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGUKIAog
ICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZU5vbmU6Ci0g
ICAgICAgIHJldHVybiBMaW5lU25hcE5vbmU7CisgICAgICAgIHJldHVybiBMaW5lU25hcDo6Tm9u
ZTsKICAgICBjYXNlIENTU1ZhbHVlQmFzZWxpbmU6Ci0gICAgICAgIHJldHVybiBMaW5lU25hcEJh
c2VsaW5lOworICAgICAgICByZXR1cm4gTGluZVNuYXA6OkJhc2VsaW5lOwogICAgIGNhc2UgQ1NT
VmFsdWVDb250YWluOgotICAgICAgICByZXR1cm4gTGluZVNuYXBDb250YWluOworICAgICAgICBy
ZXR1cm4gTGluZVNuYXA6OkNvbnRhaW47CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIExpbmVTbmFwTm9u
ZTsKKyAgICByZXR1cm4gTGluZVNuYXA6Ok5vbmU7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShMaW5lQWxpZ24gbGluZUFsaWduKQpA
QCAtMzc5NCwxMCArMzc5NCwxMCBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTCiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsKICAgICBz
d2l0Y2ggKGxpbmVBbGlnbikgewotICAgIGNhc2UgTGluZUFsaWduTm9uZToKKyAgICBjYXNlIExp
bmVBbGlnbjo6Tm9uZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb25lOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVBbGlnbkVkZ2VzOgorICAgIGNhc2UgTGluZUFs
aWduOjpFZGdlczoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVFZGdlczsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzgwOSwxNSArMzgwOSwxNSBAQCB0ZW1wbGF0ZTw+IGlu
bGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlCiAKICAgICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJ
RCkgewogICAgIGNhc2UgQ1NTVmFsdWVOb25lOgotICAgICAgICByZXR1cm4gTGluZUFsaWduTm9u
ZTsKKyAgICAgICAgcmV0dXJuIExpbmVBbGlnbjo6Tm9uZTsKICAgICBjYXNlIENTU1ZhbHVlRWRn
ZXM6Ci0gICAgICAgIHJldHVybiBMaW5lQWxpZ25FZGdlczsKKyAgICAgICAgcmV0dXJuIExpbmVB
bGlnbjo6RWRnZXM7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIExpbmVBbGlnbk5vbmU7CisgICAgcmV0
dXJuIExpbmVBbGlnbjo6Tm9uZTsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEVTcGVha0FzIGUpCkBAIC0zODQ5LDE1ICszODQ5LDE1
IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGUKIAogICAgIHN3aXRj
aCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUxvZ2ljYWw6Ci0gICAgICAg
IHJldHVybiBMb2dpY2FsT3JkZXI7CisgICAgICAgIHJldHVybiBPcmRlcjo6TG9naWNhbDsKICAg
ICBjYXNlIENTU1ZhbHVlVmlzdWFsOgotICAgICAgICByZXR1cm4gVmlzdWFsT3JkZXI7CisgICAg
ICAgIHJldHVybiBPcmRlcjo6VmlzdWFsOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBMb2dpY2FsT3Jk
ZXI7CisgICAgcmV0dXJuIE9yZGVyOjpMb2dpY2FsOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoT3JkZXIgZSkKQEAgLTM4NjUsMTAg
KzM4NjUsMTAgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTUwogewog
ICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoIChlKSB7
Ci0gICAgY2FzZSBMb2dpY2FsT3JkZXI6CisgICAgY2FzZSBPcmRlcjo6TG9naWNhbDoKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVMb2dpY2FsOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFZpc3VhbE9yZGVyOgorICAgIGNhc2UgT3JkZXI6OlZpc3VhbDoKICAgICAgICAgbV92
YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVWaXN1YWw7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAg
LTQyNTYsMzUgKzQyNTYsMzUgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6
Om9wZQogICAgIHJldHVybiBCb3JkZXJDb2xsYXBzZTo6U2VwYXJhdGU7CiB9CiAKLXRlbXBsYXRl
PD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShFQm9yZGVyRml0
IGUpCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFs
dWUoQm9yZGVyRml0IGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKIHsKICAgICBt
X3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAoZSkgewotICAg
IGNhc2UgQm9yZGVyRml0Qm9yZGVyOgorICAgIGNhc2UgQm9yZGVyRml0OjpCb3JkZXI6CiAgICAg
ICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQm9yZGVyOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEJvcmRlckZpdExpbmVzOgorICAgIGNhc2UgQm9yZGVyRml0OjpMaW5lczoKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVMaW5lczsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRUJv
cmRlckZpdCgpIGNvbnN0Cit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3Bl
cmF0b3IgQm9yZGVyRml0KCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNWYWx1ZUlEKCkpOwogCiAg
ICAgc3dpdGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlQm9yZGVyOgot
ICAgICAgICByZXR1cm4gQm9yZGVyRml0Qm9yZGVyOworICAgICAgICByZXR1cm4gQm9yZGVyRml0
OjpCb3JkZXI7CiAgICAgY2FzZSBDU1NWYWx1ZUxpbmVzOgotICAgICAgICByZXR1cm4gQm9yZGVy
Rml0TGluZXM7CisgICAgICAgIHJldHVybiBCb3JkZXJGaXQ6OkxpbmVzOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiBCb3JkZXJGaXRMaW5lczsKKyAgICByZXR1cm4gQm9yZGVyRml0OjpMaW5lczsKIH0K
IAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVl
KEltYWdlUmVuZGVyaW5nIGltYWdlUmVuZGVyaW5nKQpAQCAtNDQwNywxMyArNDQwNywxMyBAQCB0
ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTCiB7CiAgICAgbV9wcmltaXRp
dmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsKICAgICBzd2l0Y2ggKGUpIHsKLSAgICBjYXNlIEhv
cml6b250YWxDb2x1bW5BeGlzOgorICAgIGNhc2UgQ29sdW1uQXhpczo6SG9yaXpvbnRhbDoKICAg
ICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVIb3Jpem9udGFsOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIFZlcnRpY2FsQ29sdW1uQXhpczoKKyAgICBjYXNlIENvbHVtbkF4aXM6OlZl
cnRpY2FsOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVZlcnRpY2FsOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEF1dG9Db2x1bW5BeGlzOgorICAgIGNhc2UgQ29sdW1uQXhp
czo6QXV0bzoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBdXRvOwogICAgICAg
ICBicmVhazsKICAgICB9CkBAIC00NDI1LDE3ICs0NDI1LDE3IEBAIHRlbXBsYXRlPD4gaW5saW5l
IENTU1ByaW1pdGl2ZVZhbHVlOjpvcGUKIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7
CiAgICAgY2FzZSBDU1NWYWx1ZUhvcml6b250YWw6Ci0gICAgICAgIHJldHVybiBIb3Jpem9udGFs
Q29sdW1uQXhpczsKKyAgICAgICAgcmV0dXJuIENvbHVtbkF4aXM6Okhvcml6b250YWw7CiAgICAg
Y2FzZSBDU1NWYWx1ZVZlcnRpY2FsOgotICAgICAgICByZXR1cm4gVmVydGljYWxDb2x1bW5BeGlz
OworICAgICAgICByZXR1cm4gQ29sdW1uQXhpczo6VmVydGljYWw7CiAgICAgY2FzZSBDU1NWYWx1
ZUF1dG86Ci0gICAgICAgIHJldHVybiBBdXRvQ29sdW1uQXhpczsKKyAgICAgICAgcmV0dXJuIENv
bHVtbkF4aXM6OkF1dG87CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEF1dG9Db2x1bW5BeGlzOworICAg
IHJldHVybiBDb2x1bW5BeGlzOjpBdXRvOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoQ29sdW1uUHJvZ3Jlc3Npb24gZSkKQEAgLTQ0
NDMsMTAgKzQ0NDMsMTAgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
UwogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNo
IChlKSB7Ci0gICAgY2FzZSBOb3JtYWxDb2x1bW5Qcm9ncmVzc2lvbjoKKyAgICBjYXNlIENvbHVt
blByb2dyZXNzaW9uOjpOb3JtYWw6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVl
Tm9ybWFsOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFJldmVyc2VDb2x1bW5Qcm9ncmVzc2lv
bjoKKyAgICBjYXNlIENvbHVtblByb2dyZXNzaW9uOjpSZXZlcnNlOgogICAgICAgICBtX3ZhbHVl
LnZhbHVlSUQgPSBDU1NWYWx1ZVJldmVyc2U7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTQ0
NTgsMTUgKzQ0NTgsMTUgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9w
ZQogCiAgICAgc3dpdGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlTm9y
bWFsOgotICAgICAgICByZXR1cm4gTm9ybWFsQ29sdW1uUHJvZ3Jlc3Npb247CisgICAgICAgIHJl
dHVybiBDb2x1bW5Qcm9ncmVzc2lvbjo6Tm9ybWFsOwogICAgIGNhc2UgQ1NTVmFsdWVSZXZlcnNl
OgotICAgICAgICByZXR1cm4gUmV2ZXJzZUNvbHVtblByb2dyZXNzaW9uOworICAgICAgICByZXR1
cm4gQ29sdW1uUHJvZ3Jlc3Npb246OlJldmVyc2U7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIE5vcm1h
bENvbHVtblByb2dyZXNzaW9uOworICAgIHJldHVybiBDb2x1bW5Qcm9ncmVzc2lvbjo6Tm9ybWFs
OwogfQogCiBlbnVtIExlbmd0aENvbnZlcnNpb24gewpAQCAtNDkwNSwyOCArNDkwNSwyOCBAQCB0
ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTCiB7CiAgICAgbV9wcmltaXRp
dmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsKICAgICBzd2l0Y2ggKGNzc0JveCkgewotICAgIGNh
c2UgTWFyZ2luQm94OgorICAgIGNhc2UgQ1NTQm94VHlwZTo6TWFyZ2luQm94OgogICAgICAgICBt
X3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU1hcmdpbkJveDsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBCb3JkZXJCb3g6CisgICAgY2FzZSBDU1NCb3hUeXBlOjpCb3JkZXJCb3g6CiAgICAgICAg
IG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQm9yZGVyQm94OwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFBhZGRpbmdCb3g6CisgICAgY2FzZSBDU1NCb3hUeXBlOjpQYWRkaW5nQm94OgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVBhZGRpbmdCb3g7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQ29udGVudEJveDoKKyAgICBjYXNlIENTU0JveFR5cGU6OkNvbnRlbnRCb3g6
CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQ29udGVudEJveDsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBGaWxsOgorICAgIGNhc2UgQ1NTQm94VHlwZTo6RmlsbDoKICAgICAg
ICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVGaWxsOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFN0cm9rZToKKyAgICBjYXNlIENTU0JveFR5cGU6OlN0cm9rZToKICAgICAgICAgbV92YWx1
ZS52YWx1ZUlEID0gQ1NTVmFsdWVTdHJva2U7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVmll
d0JveDoKKyAgICBjYXNlIENTU0JveFR5cGU6OlZpZXdCb3g6CiAgICAgICAgIG1fdmFsdWUudmFs
dWVJRCA9IENTU1ZhbHVlVmlld0JveDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBCb3hNaXNz
aW5nOgorICAgIGNhc2UgQ1NTQm94VHlwZTo6Qm94TWlzc2luZzoKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTm9uZTsKICAg
ICAgICAgYnJlYWs7CkBAIC00OTM3LDI1ICs0OTM3LDI1IEBAIHRlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpvcGUKIHsKICAgICBzd2l0Y2ggKHZhbHVlSUQoKSkgewogICAgIGNh
c2UgQ1NTVmFsdWVNYXJnaW5Cb3g6Ci0gICAgICAgIHJldHVybiBNYXJnaW5Cb3g7CisgICAgICAg
IHJldHVybiBDU1NCb3hUeXBlOjpNYXJnaW5Cb3g7CiAgICAgY2FzZSBDU1NWYWx1ZUJvcmRlckJv
eDoKLSAgICAgICAgcmV0dXJuIEJvcmRlckJveDsKKyAgICAgICAgcmV0dXJuIENTU0JveFR5cGU6
OkJvcmRlckJveDsKICAgICBjYXNlIENTU1ZhbHVlUGFkZGluZ0JveDoKLSAgICAgICAgcmV0dXJu
IFBhZGRpbmdCb3g7CisgICAgICAgIHJldHVybiBDU1NCb3hUeXBlOjpQYWRkaW5nQm94OwogICAg
IGNhc2UgQ1NTVmFsdWVDb250ZW50Qm94OgotICAgICAgICByZXR1cm4gQ29udGVudEJveDsKKyAg
ICAgICAgcmV0dXJuIENTU0JveFR5cGU6OkNvbnRlbnRCb3g7CiAgICAgLy8gVGhlIGZvbGxvd2lu
ZyBhcmUgdXNlZCBpbiBhbiBTVkcgY29udGV4dC4KICAgICBjYXNlIENTU1ZhbHVlRmlsbDoKLSAg
ICAgICAgcmV0dXJuIEZpbGw7CisgICAgICAgIHJldHVybiBDU1NCb3hUeXBlOjpGaWxsOwogICAg
IGNhc2UgQ1NTVmFsdWVTdHJva2U6Ci0gICAgICAgIHJldHVybiBTdHJva2U7CisgICAgICAgIHJl
dHVybiBDU1NCb3hUeXBlOjpTdHJva2U7CiAgICAgY2FzZSBDU1NWYWx1ZVZpZXdCb3g6Ci0gICAg
ICAgIHJldHVybiBWaWV3Qm94OworICAgICAgICByZXR1cm4gQ1NTQm94VHlwZTo6Vmlld0JveDsK
ICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIEJveE1pc3Npbmc7CisgICAgcmV0dXJuIENTU0JveFR5cGU6OkJv
eE1pc3Npbmc7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQ
cmltaXRpdmVWYWx1ZShJdGVtUG9zaXRpb24gaXRlbVBvc2l0aW9uKQpAQCAtNTIwMSwxNSArNTIw
MSwxNSBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlCiAKICAgICBz
d2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkgewogICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6Ci0gICAg
ICAgIHJldHVybiBUZXh0Wm9vbU5vcm1hbDsKKyAgICAgICAgcmV0dXJuIFRleHRab29tOjpOb3Jt
YWw7CiAgICAgY2FzZSBDU1NWYWx1ZVJlc2V0OgotICAgICAgICByZXR1cm4gVGV4dFpvb21SZXNl
dDsKKyAgICAgICAgcmV0dXJuIFRleHRab29tOjpSZXNldDsKICAgICBkZWZhdWx0OgogICAgICAg
ICBicmVhazsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
VGV4dFpvb21Ob3JtYWw7CisgICAgcmV0dXJuIFRleHRab29tOjpOb3JtYWw7CiB9CiAKIHRlbXBs
YXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShUZXh0Wm9v
bSB0ZXh0Wm9vbSkKQEAgLTUyMTcsMTAgKzUyMTcsMTAgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTUwogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFM
VUVfSUQ7CiAgICAgc3dpdGNoICh0ZXh0Wm9vbSkgewotICAgIGNhc2UgVGV4dFpvb21Ob3JtYWw6
CisgICAgY2FzZSBUZXh0Wm9vbTo6Tm9ybWFsOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZU5vcm1hbDsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgVGV4dFpvb21SZXNldDoK
KyAgICBjYXNlIFRleHRab29tOjpSZXNldDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NT
VmFsdWVSZXNldDsKICAgICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NT
U1NlbGVjdG9yLmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NT
U1NlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcwLDMxICsyNzAsMzEgQEAgUHNldWRv
SWQgQ1NTU2VsZWN0b3I6OnBzZXVkb0lkKFBzZXVkb0VsZQogewogICAgIHN3aXRjaCAodHlwZSkg
ewogICAgIGNhc2UgUHNldWRvRWxlbWVudEZpcnN0TGluZToKLSAgICAgICAgcmV0dXJuIEZJUlNU
X0xJTkU7CisgICAgICAgIHJldHVybiBQc2V1ZG9JZDo6Rmlyc3RMaW5lOwogICAgIGNhc2UgUHNl
dWRvRWxlbWVudEZpcnN0TGV0dGVyOgotICAgICAgICByZXR1cm4gRklSU1RfTEVUVEVSOworICAg
ICAgICByZXR1cm4gUHNldWRvSWQ6OkZpcnN0TGV0dGVyOwogICAgIGNhc2UgUHNldWRvRWxlbWVu
dFNlbGVjdGlvbjoKLSAgICAgICAgcmV0dXJuIFNFTEVDVElPTjsKKyAgICAgICAgcmV0dXJuIFBz
ZXVkb0lkOjpTZWxlY3Rpb247CiAgICAgY2FzZSBQc2V1ZG9FbGVtZW50TWFya2VyOgotICAgICAg
ICByZXR1cm4gTUFSS0VSOworICAgICAgICByZXR1cm4gUHNldWRvSWQ6Ok1hcmtlcjsKICAgICBj
YXNlIFBzZXVkb0VsZW1lbnRCZWZvcmU6Ci0gICAgICAgIHJldHVybiBCRUZPUkU7CisgICAgICAg
IHJldHVybiBQc2V1ZG9JZDo6QmVmb3JlOwogICAgIGNhc2UgUHNldWRvRWxlbWVudEFmdGVyOgot
ICAgICAgICByZXR1cm4gQUZURVI7CisgICAgICAgIHJldHVybiBQc2V1ZG9JZDo6QWZ0ZXI7CiAg
ICAgY2FzZSBQc2V1ZG9FbGVtZW50U2Nyb2xsYmFyOgotICAgICAgICByZXR1cm4gU0NST0xMQkFS
OworICAgICAgICByZXR1cm4gUHNldWRvSWQ6OlNjcm9sbGJhcjsKICAgICBjYXNlIFBzZXVkb0Vs
ZW1lbnRTY3JvbGxiYXJCdXR0b246Ci0gICAgICAgIHJldHVybiBTQ1JPTExCQVJfQlVUVE9OOwor
ICAgICAgICByZXR1cm4gUHNldWRvSWQ6OlNjcm9sbGJhckJ1dHRvbjsKICAgICBjYXNlIFBzZXVk
b0VsZW1lbnRTY3JvbGxiYXJDb3JuZXI6Ci0gICAgICAgIHJldHVybiBTQ1JPTExCQVJfQ09STkVS
OworICAgICAgICByZXR1cm4gUHNldWRvSWQ6OlNjcm9sbGJhckNvcm5lcjsKICAgICBjYXNlIFBz
ZXVkb0VsZW1lbnRTY3JvbGxiYXJUaHVtYjoKLSAgICAgICAgcmV0dXJuIFNDUk9MTEJBUl9USFVN
QjsKKyAgICAgICAgcmV0dXJuIFBzZXVkb0lkOjpTY3JvbGxiYXJUaHVtYjsKICAgICBjYXNlIFBz
ZXVkb0VsZW1lbnRTY3JvbGxiYXJUcmFjazoKLSAgICAgICAgcmV0dXJuIFNDUk9MTEJBUl9UUkFD
SzsKKyAgICAgICAgcmV0dXJuIFBzZXVkb0lkOjpTY3JvbGxiYXJUcmFjazsKICAgICBjYXNlIFBz
ZXVkb0VsZW1lbnRTY3JvbGxiYXJUcmFja1BpZWNlOgotICAgICAgICByZXR1cm4gU0NST0xMQkFS
X1RSQUNLX1BJRUNFOworICAgICAgICByZXR1cm4gUHNldWRvSWQ6OlNjcm9sbGJhclRyYWNrUGll
Y2U7CiAgICAgY2FzZSBQc2V1ZG9FbGVtZW50UmVzaXplcjoKLSAgICAgICAgcmV0dXJuIFJFU0la
RVI7CisgICAgICAgIHJldHVybiBQc2V1ZG9JZDo6UmVzaXplcjsKICNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCiAgICAgY2FzZSBQc2V1ZG9FbGVtZW50Q3VlOgogI2VuZGlmCkBAIC0zMDMsMTEgKzMw
MywxMSBAQCBQc2V1ZG9JZCBDU1NTZWxlY3Rvcjo6cHNldWRvSWQoUHNldWRvRWxlCiAgICAgY2Fz
ZSBQc2V1ZG9FbGVtZW50VXNlckFnZW50Q3VzdG9tOgogICAgIGNhc2UgUHNldWRvRWxlbWVudFdl
YktpdEN1c3RvbToKICAgICBjYXNlIFBzZXVkb0VsZW1lbnRXZWJLaXRDdXN0b21MZWdhY3lQcmVm
aXhlZDoKLSAgICAgICAgcmV0dXJuIE5PUFNFVURPOworICAgICAgICByZXR1cm4gUHNldWRvSWQ6
Ok5vbmU7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIE5P
UFNFVURPOworICAgIHJldHVybiBQc2V1ZG9JZDo6Tm9uZTsKIH0KIAogQ1NTU2VsZWN0b3I6OlBz
ZXVkb0VsZW1lbnRUeXBlIENTU1NlbGVjdG9yOjpwYXJzZVBzZXVkb0VsZW1lbnRUeXBlKGNvbnN0
IFN0cmluZyYgbmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAJKHJl
dmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzYzLDE2ICszNjMsMTYgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjpt
YXBBbmltYXRpb25GaWxsTW9kZQogCiAgICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpLnZhbHVlSUQoKSkgewogICAgIGNhc2UgQ1NTVmFsdWVOb25lOgotICAgICAg
ICBsYXllci5zZXRGaWxsTW9kZShBbmltYXRpb25GaWxsTW9kZU5vbmUpOworICAgICAgICBsYXll
ci5zZXRGaWxsTW9kZShBbmltYXRpb25GaWxsTW9kZTo6Tm9uZSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQ1NTVmFsdWVGb3J3YXJkczoKLSAgICAgICAgbGF5ZXIuc2V0RmlsbE1vZGUoQW5p
bWF0aW9uRmlsbE1vZGVGb3J3YXJkcyk7CisgICAgICAgIGxheWVyLnNldEZpbGxNb2RlKEFuaW1h
dGlvbkZpbGxNb2RlOjpGb3J3YXJkcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFs
dWVCYWNrd2FyZHM6Ci0gICAgICAgIGxheWVyLnNldEZpbGxNb2RlKEFuaW1hdGlvbkZpbGxNb2Rl
QmFja3dhcmRzKTsKKyAgICAgICAgbGF5ZXIuc2V0RmlsbE1vZGUoQW5pbWF0aW9uRmlsbE1vZGU6
OkJhY2t3YXJkcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVCb3RoOgotICAg
ICAgICBsYXllci5zZXRGaWxsTW9kZShBbmltYXRpb25GaWxsTW9kZUJvdGgpOworICAgICAgICBs
YXllci5zZXRGaWxsTW9kZShBbmltYXRpb25GaWxsTW9kZTo6Qm90aCk7CiAgICAgICAgIGJyZWFr
OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQg
Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uUGxheVN0YXQKICAgICBpZiAoIWlzPENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEVBbmltUGxheVN0YXRl
IHBsYXlTdGF0ZSA9IChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQo
KSA9PSBDU1NWYWx1ZVBhdXNlZCkgPyBBbmltUGxheVN0YXRlUGF1c2VkIDogQW5pbVBsYXlTdGF0
ZVBsYXlpbmc7CisgICAgQW5pbWF0aW9uUGxheVN0YXRlIHBsYXlTdGF0ZSA9IChkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZVBhdXNlZCkgPyBB
bmltYXRpb25QbGF5U3RhdGU6OlBhdXNlZCA6IEFuaW1hdGlvblBsYXlTdGF0ZTo6UGxheWluZzsK
ICAgICBsYXllci5zZXRQbGF5U3RhdGUocGxheVN0YXRlKTsKIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4JKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yODcsNyAr
Mjg3LDcgQEAgYm90dG9tCiAtd2Via2l0LWJhc2VsaW5lLW1pZGRsZQogLy8KIC8vIENTU19QUk9Q
X1RFWFRfQUxJR046Ci0vLyBUaGUgb3JkZXIgaGVyZSBtdXN0IG1hdGNoIHRoZSBvcmRlciBvZiB0
aGUgRVRleHRBbGlnbiBlbnVtIGluIFJlbmRlclN0eWxlQ29uc3RhbnRzLmguCisvLyBUaGUgb3Jk
ZXIgaGVyZSBtdXN0IG1hdGNoIHRoZSBvcmRlciBvZiB0aGUgVGV4dEFsaWduTW9kZSBlbnVtIGlu
IFJlbmRlclN0eWxlQ29uc3RhbnRzLmguCiAvLwogLXdlYmtpdC1hdXRvCiBsZWZ0CkBAIC0zMTIs
NyArMzEyLDcgQEAgb3V0c2lkZQogaW5zaWRlCiAvLwogLy8gQ1NTX1BST1BfTElTVF9TVFlMRV9U
WVBFOgotLy8gVGhlIG9yZGVyIGhlcmUgbXVzdCBtYXRjaCB0aGUgb3JkZXIgb2YgdGhlIEVMaXN0
U3R5bGVUeXBlIGVudW0gaW4gUmVuZGVyU3R5bGVDb25zdGFudHMuaC4KKy8vIFRoZSBvcmRlciBo
ZXJlIG11c3QgbWF0Y2ggdGhlIG9yZGVyIG9mIHRoZSBMaXN0U3R5bGVUeXBlIGVudW0gaW4gUmVu
ZGVyU3R5bGVDb25zdGFudHMuaC4KIC8vCiBkaXNjCiBjaXJjbGUKQEAgLTM5Nyw3ICszOTcsNyBA
QCBrYXRha2FuYS1pcm9oYQogLy9ub25lCiAvLwogLy8gQ1NTX1BST1BfRElTUExBWToKLS8vIFRo
ZSBvcmRlciBoZXJlIG11c3QgbWF0Y2ggdGhlIG9yZGVyIG9mIHRoZSBFRGlzcGxheSBlbnVtIGlu
IFJlbmRlclN0eWxlQ29uc3RhbnRzLmguCisvLyBUaGUgb3JkZXIgaGVyZSBtdXN0IG1hdGNoIHRo
ZSBvcmRlciBvZiB0aGUgRGlzcGxheVR5cGUgZW51bSBpbiBSZW5kZXJTdHlsZUNvbnN0YW50cy5o
LgogLy8KIGlubGluZQogYmxvY2sKQEAgLTQyNiw3ICs0MjYsNyBAQCBpbmxpbmUtZ3JpZAogLy9u
b25lCiAvLwogLy8gQ1NTX1BST1BfQ1VSU09SOgotLy8gVGhlIG9yZGVyIGhlcmUgbXVzdCBtYXRj
aCB0aGUgb3JkZXIgb2YgdGhlIEVDdXJzb3IgZW51bSBpbiBSZW5kZXJTdHlsZUNvbnN0YW50cy5o
LgorLy8gVGhlIG9yZGVyIGhlcmUgbXVzdCBtYXRjaCB0aGUgb3JkZXIgb2YgdGhlIEN1cnNvclR5
cGUgZW51bSBpbiBSZW5kZXJTdHlsZUNvbnN0YW50cy5oLgogLy8KIGF1dG8KIGRlZmF1bHQKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAkocmV2aXNp
b24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDcgKzE0MCw3IEBAIGlubGluZSB2b2lkIEVsZW1lbnRS
dWxlQ29sbGVjdG9yOjphZGRFbGUKIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RN
YXRjaGluZ1J1bGVzKGNvbnN0IE1hdGNoUmVxdWVzdCYgbWF0Y2hSZXF1ZXN0LCBTdHlsZVJlc29s
dmVyOjpSdWxlUmFuZ2UmIHJ1bGVSYW5nZSkKIHsKICAgICBBU1NFUlQobWF0Y2hSZXF1ZXN0LnJ1
bGVTZXQpOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIShtX21vZGUgPT0gU2VsZWN0b3JDaGVj
a2VyOjpNb2RlOjpDb2xsZWN0aW5nUnVsZXNJZ25vcmluZ1ZpcnR1YWxQc2V1ZG9FbGVtZW50cyAm
JiBtX3BzZXVkb1N0eWxlUmVxdWVzdC5wc2V1ZG9JZCAhPSBOT1BTRVVETyksICJXaGVuIGluIFN0
eWxlSW52YWxpZGF0aW9uIG9yIFNoYXJpbmdSdWxlcywgU2VsZWN0b3JDaGVja2VyIGRvZXMgbm90
IHRyeSB0byBtYXRjaCB0aGUgcHNldWRvIElELiBXaGlsZSBFbGVtZW50UnVsZUNvbGxlY3RvciBz
dXBwb3J0cyBtYXRjaGluZyBhIHBhcnRpY3VsYXIgcHNldWRvSWQgaW4gdGhpcyBjYXNlLCB0aGlz
IHdvdWxkIGluZGljYXRlIGEgZXJyb3IgYXQgdGhlIGNhbGwgc2l0ZSBzaW5jZSBtYXRjaGluZyBh
IHBhcnRpY3VsYXIgZWxlbWVudCBzaG91bGQgYmUgdW5uZWNlc3NhcnkuIik7CisgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghKG1fbW9kZSA9PSBTZWxlY3RvckNoZWNrZXI6Ok1vZGU6OkNvbGxlY3Rp
bmdSdWxlc0lnbm9yaW5nVmlydHVhbFBzZXVkb0VsZW1lbnRzICYmIG1fcHNldWRvU3R5bGVSZXF1
ZXN0LnBzZXVkb0lkICE9IFBzZXVkb0lkOjpOb25lKSwgIldoZW4gaW4gU3R5bGVJbnZhbGlkYXRp
b24gb3IgU2hhcmluZ1J1bGVzLCBTZWxlY3RvckNoZWNrZXIgZG9lcyBub3QgdHJ5IHRvIG1hdGNo
IHRoZSBwc2V1ZG8gSUQuIFdoaWxlIEVsZW1lbnRSdWxlQ29sbGVjdG9yIHN1cHBvcnRzIG1hdGNo
aW5nIGEgcGFydGljdWxhciBwc2V1ZG9JZCBpbiB0aGlzIGNhc2UsIHRoaXMgd291bGQgaW5kaWNh
dGUgYSBlcnJvciBhdCB0aGUgY2FsbCBzaXRlIHNpbmNlIG1hdGNoaW5nIGEgcGFydGljdWxhciBl
bGVtZW50IHNob3VsZCBiZSB1bm5lY2Vzc2FyeS4iKTsKIAogICAgIGF1dG8qIHNoYWRvd1Jvb3Qg
PSBtX2VsZW1lbnQuY29udGFpbmluZ1NoYWRvd1Jvb3QoKTsKICAgICBpZiAoc2hhZG93Um9vdCAm
JiBzaGFkb3dSb290LT5tb2RlKCkgPT0gU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudCkKQEAgLTM2
MCw3ICszNjAsNyBAQCBpbmxpbmUgYm9vbCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6cnVsZU1hCiAg
ICAgLy8gVGhpcyBpcyBsaW1pdGVkIHRvIEhUTUwgb25seSBzbyB3ZSBkb24ndCBuZWVkIHRvIGNo
ZWNrIHRoZSBuYW1lc3BhY2UgKGJlY2F1c2Ugb2YgdGFnIG5hbWUgbWF0Y2gpLgogICAgIE1hdGNo
QmFzZWRPblJ1bGVIYXNoIG1hdGNoQmFzZWRPblJ1bGVIYXNoID0gcnVsZURhdGEubWF0Y2hCYXNl
ZE9uUnVsZUhhc2goKTsKICAgICBpZiAobWF0Y2hCYXNlZE9uUnVsZUhhc2ggIT0gTWF0Y2hCYXNl
ZE9uUnVsZUhhc2g6Ok5vbmUgJiYgbV9lbGVtZW50LmlzSFRNTEVsZW1lbnQoKSkgewotICAgICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fcHNldWRvU3R5bGVSZXF1ZXN0LnBzZXVkb0lkID09IE5P
UFNFVURPLCAiSWYgd2UgbWF0Y2ggYmFzZWQgb24gdGhlIHJ1bGUgaGFzaCB3aGlsZSBjb2xsZWN0
aW5nIGZvciBhIHBhcnRpY3VsYXIgcHNldWRvIGVsZW1lbnQgSUQsIHdlIHdvdWxkIGFkZCBpbmNv
cnJlY3QgcnVsZXMgZm9yIHRoYXQgcHNldWRvIGVsZW1lbnQgSUQuIFdlIHNob3VsZCBuZXZlciBl
bmQgaW4gcnVsZU1hdGNoZXMoKSB3aXRoIGEgcHNldWRvIGVsZW1lbnQgaWYgdGhlIHJ1bGVEYXRh
IGNhbm5vdCBtYXRjaCBhbnkgcHNldWRvIGVsZW1lbnQuIik7CisgICAgICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UobV9wc2V1ZG9TdHlsZVJlcXVlc3QucHNldWRvSWQgPT0gUHNldWRvSWQ6Ok5vbmUs
ICJJZiB3ZSBtYXRjaCBiYXNlZCBvbiB0aGUgcnVsZSBoYXNoIHdoaWxlIGNvbGxlY3RpbmcgZm9y
IGEgcGFydGljdWxhciBwc2V1ZG8gZWxlbWVudCBJRCwgd2Ugd291bGQgYWRkIGluY29ycmVjdCBy
dWxlcyBmb3IgdGhhdCBwc2V1ZG8gZWxlbWVudCBJRC4gV2Ugc2hvdWxkIG5ldmVyIGVuZCBpbiBy
dWxlTWF0Y2hlcygpIHdpdGggYSBwc2V1ZG8gZWxlbWVudCBpZiB0aGUgcnVsZURhdGEgY2Fubm90
IG1hdGNoIGFueSBwc2V1ZG8gZWxlbWVudC4iKTsKIAogICAgICAgICBzd2l0Y2ggKG1hdGNoQmFz
ZWRPblJ1bGVIYXNoKSB7CiAgICAgICAgIGNhc2UgTWF0Y2hCYXNlZE9uUnVsZUhhc2g6Ok5vbmU6
CkBAIC0zOTUsNyArMzk1LDcgQEAgaW5saW5lIGJvb2wgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OnJ1
bGVNYQogICAgICAgICBhdXRvIHNlbGVjdG9yQ2hlY2tlciA9IFNlbGVjdG9yQ29tcGlsZXI6OnJ1
bGVDb2xsZWN0b3JTaW1wbGVTZWxlY3RvckNoZWNrZXJGdW5jdGlvbihjb21waWxlZFNlbGVjdG9y
Q2hlY2tlciwgY29tcGlsZWRTZWxlY3Rvci5zdGF0dXMpOwogI2lmICFBU1NFUlRfTVNHX0RJU0FC
TEVECiAgICAgICAgIHVuc2lnbmVkIGlnbm9yZVNwZWNpZmljaXR5OwotICAgICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKCFzZWxlY3RvckNoZWNrZXIoJm1fZWxlbWVudCwgJmlnbm9yZVNwZWNpZmlj
aXR5KSB8fCBtX3BzZXVkb1N0eWxlUmVxdWVzdC5wc2V1ZG9JZCA9PSBOT1BTRVVETywgIldoZW4g
bWF0Y2hpbmcgcHNldWRvIGVsZW1lbnRzLCB3ZSBzaG91bGQgbmV2ZXIgY29tcGlsZSBhIHNlbGVj
dG9yIGNoZWNrZXIgd2l0aG91dCBjb250ZXh0IHVubGVzcyBpdCBjYW5ub3QgbWF0Y2ggYW55dGhp
bmcuIik7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXNlbGVjdG9yQ2hlY2tlcigmbV9l
bGVtZW50LCAmaWdub3JlU3BlY2lmaWNpdHkpIHx8IG1fcHNldWRvU3R5bGVSZXF1ZXN0LnBzZXVk
b0lkID09IFBzZXVkb0lkOjpOb25lLCAiV2hlbiBtYXRjaGluZyBwc2V1ZG8gZWxlbWVudHMsIHdl
IHNob3VsZCBuZXZlciBjb21waWxlIGEgc2VsZWN0b3IgY2hlY2tlciB3aXRob3V0IGNvbnRleHQg
dW5sZXNzIGl0IGNhbm5vdCBtYXRjaCBhbnl0aGluZy4iKTsKICNlbmRpZgogI2lmIENTU19TRUxF
Q1RPUl9KSVRfUFJPRklMSU5HCiAgICAgICAgIHJ1bGVEYXRhLmNvbXBpbGVkU2VsZWN0b3JVc2Vk
KCk7CkBAIC00NTgsNyArNDU4LDcgQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVj
dE1hdGNoaQogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBydWxlcy0+c2l6ZSgpOyBp
IDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSA9IHJ1bGVz
LT5kYXRhKClbaV07CiAKLSAgICAgICAgaWYgKCFydWxlRGF0YS5jYW5NYXRjaFBzZXVkb0VsZW1l
bnQoKSAmJiBtX3BzZXVkb1N0eWxlUmVxdWVzdC5wc2V1ZG9JZCAhPSBOT1BTRVVETykKKyAgICAg
ICAgaWYgKCFydWxlRGF0YS5jYW5NYXRjaFBzZXVkb0VsZW1lbnQoKSAmJiBtX3BzZXVkb1N0eWxl
UmVxdWVzdC5wc2V1ZG9JZCAhPSBQc2V1ZG9JZDo6Tm9uZSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgIGlmIChtX3NlbGVjdG9yRmlsdGVyICYmIG1fc2VsZWN0b3JGaWx0ZXItPmZh
c3RSZWplY3RTZWxlY3RvcihydWxlRGF0YS5kZXNjZW5kYW50U2VsZWN0b3JJZGVudGlmaWVySGFz
aGVzKCkpKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgJ
KHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxl
Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgY29u
c3QgU2VsZWN0b3JGaWx0ZXIqIG1fc2VsZWN0b3JGaWx0ZXIgeyBudWxscHRyIH07CiAKICAgICBi
b29sIG1faXNQcmludFN0eWxlIHsgZmFsc2UgfTsKLSAgICBQc2V1ZG9TdHlsZVJlcXVlc3QgbV9w
c2V1ZG9TdHlsZVJlcXVlc3QgeyBOT1BTRVVETyB9OworICAgIFBzZXVkb1N0eWxlUmVxdWVzdCBt
X3BzZXVkb1N0eWxlUmVxdWVzdCB7IFBzZXVkb0lkOjpOb25lIH07CiAgICAgU2VsZWN0b3JDaGVj
a2VyOjpNb2RlIG1fbW9kZSB7IFNlbGVjdG9yQ2hlY2tlcjo6TW9kZTo6UmVzb2x2aW5nU3R5bGUg
fTsKICAgICBib29sIG1faXNNYXRjaGluZ1Nsb3R0ZWRQc2V1ZG9FbGVtZW50cyB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX2lzTWF0Y2hpbmdIb3N0UHNldWRvQ2xhc3MgeyBmYWxzZSB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODUsMTUgKzE4NSwxNSBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6bWF0Y2goY29uc3QgQ1NT
U2VsCiAgICAgTWF0Y2hSZXN1bHQgcmVzdWx0ID0gbWF0Y2hSZWN1cnNpdmVseShjaGVja2luZ0Nv
bnRleHQsIGNvbnRleHQsIHBzZXVkb0lkU2V0LCBzcGVjaWZpY2l0eSk7CiAgICAgaWYgKHJlc3Vs
dC5tYXRjaCAhPSBNYXRjaDo6U2VsZWN0b3JNYXRjaGVzKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgaWYgKGNoZWNraW5nQ29udGV4dC5wc2V1ZG9JZCAhPSBOT1BTRVVETyAmJiAhcHNldWRv
SWRTZXQuaGFzKGNoZWNraW5nQ29udGV4dC5wc2V1ZG9JZCkpCisgICAgaWYgKGNoZWNraW5nQ29u
dGV4dC5wc2V1ZG9JZCAhPSBQc2V1ZG9JZDo6Tm9uZSAmJiAhcHNldWRvSWRTZXQuaGFzKGNoZWNr
aW5nQ29udGV4dC5wc2V1ZG9JZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChj
aGVja2luZ0NvbnRleHQucHNldWRvSWQgPT0gTk9QU0VVRE8gJiYgcHNldWRvSWRTZXQpIHsKLSAg
ICAgICAgUHNldWRvSWRTZXQgcHVibGljUHNldWRvSWRTZXQgPSBwc2V1ZG9JZFNldCAmIFBzZXVk
b0lkU2V0Ojpmcm9tTWFzayhQVUJMSUNfUFNFVURPSURfTUFTSyk7CisgICAgaWYgKGNoZWNraW5n
Q29udGV4dC5wc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6Tm9uZSAmJiBwc2V1ZG9JZFNldCkgeworICAg
ICAgICBQc2V1ZG9JZFNldCBwdWJsaWNQc2V1ZG9JZFNldCA9IHBzZXVkb0lkU2V0ICYgUHNldWRv
SWRTZXQ6OmZyb21NYXNrKHN0YXRpY19jYXN0PHVuc2lnbmVkPihQc2V1ZG9JZDo6UHVibGljUHNl
dWRvSWRNYXNrKSk7CiAgICAgICAgIGlmIChjaGVja2luZ0NvbnRleHQucmVzb2x2aW5nTW9kZSA9
PSBNb2RlOjpSZXNvbHZpbmdTdHlsZSAmJiBwdWJsaWNQc2V1ZG9JZFNldCkKICAgICAgICAgICAg
IGNoZWNraW5nQ29udGV4dC5wc2V1ZG9JRFNldCA9IHB1YmxpY1BzZXVkb0lkU2V0OwogCi0gICAg
ICAgIC8vIFdoZW4gaWdub3JpbmcgdmlydHVhbCBwc2V1ZG8gZWxlbWVudHMsIHRoZSBjb250ZXh0
J3MgcHNldWRvIHNob3VsZCBhbHNvIGJlIE5PUFNFVURPIGJ1dCB0aGF0IGRvZXMKKyAgICAgICAg
Ly8gV2hlbiBpZ25vcmluZyB2aXJ0dWFsIHBzZXVkbyBlbGVtZW50cywgdGhlIGNvbnRleHQncyBw
c2V1ZG8gc2hvdWxkIGFsc28gYmUgUHNldWRvSWQ6Ok5vbmUgYnV0IHRoYXQgZG9lcwogICAgICAg
ICAvLyBub3QgY2F1c2UgYSBmYWlsdXJlLgogICAgICAgICByZXR1cm4gY2hlY2tpbmdDb250ZXh0
LnJlc29sdmluZ01vZGUgPT0gTW9kZTo6Q29sbGVjdGluZ1J1bGVzSWdub3JpbmdWaXJ0dWFsUHNl
dWRvRWxlbWVudHMgfHwgcmVzdWx0Lm1hdGNoVHlwZSA9PSBNYXRjaFR5cGU6OkVsZW1lbnQ7CiAg
ICAgfQpAQCAtMjA4LDcgKzIwOCw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjptYXRjaEhvc3RQ
c2V1ZG9DbGEKICAgICBzcGVjaWZpY2l0eSA9IHNlbGVjdG9yLnNpbXBsZVNlbGVjdG9yU3BlY2lm
aWNpdHkoKTsKIAogICAgIGlmIChhdXRvKiBzZWxlY3Rvckxpc3QgPSBzZWxlY3Rvci5zZWxlY3Rv
ckxpc3QoKSkgewotICAgICAgICBMb2NhbENvbnRleHQgY29udGV4dCgqc2VsZWN0b3JMaXN0LT5m
aXJzdCgpLCBlbGVtZW50LCBWaXNpdGVkTWF0Y2hUeXBlOjpFbmFibGVkLCBOT1BTRVVETyk7Cisg
ICAgICAgIExvY2FsQ29udGV4dCBjb250ZXh0KCpzZWxlY3Rvckxpc3QtPmZpcnN0KCksIGVsZW1l
bnQsIFZpc2l0ZWRNYXRjaFR5cGU6OkVuYWJsZWQsIFBzZXVkb0lkOjpOb25lKTsKICAgICAgICAg
Y29udGV4dC5pbkZ1bmN0aW9uYWxQc2V1ZG9DbGFzcyA9IHRydWU7CiAgICAgICAgIGNvbnRleHQu
cHNldWRvRWxlbWVudEVmZmVjdGl2ZSA9IGZhbHNlOwogICAgICAgICBQc2V1ZG9JZFNldCBpZ25v
cmVEeW5hbWljUHNldWRvOwpAQCAtMjIyLDEzICsyMjIsMTMgQEAgYm9vbCBTZWxlY3RvckNoZWNr
ZXI6Om1hdGNoSG9zdFBzZXVkb0NsYQogCiBpbmxpbmUgc3RhdGljIGJvb2wgaGFzU2Nyb2xsYmFy
UHNldWRvRWxlbWVudChjb25zdCBQc2V1ZG9JZFNldCYgZHluYW1pY1BzZXVkb0lkU2V0KQogewot
ICAgIFBzZXVkb0lkU2V0IHNjcm9sbGJhcklkU2V0ID0geyBTQ1JPTExCQVIsIFNDUk9MTEJBUl9U
SFVNQiwgU0NST0xMQkFSX0JVVFRPTiwgU0NST0xMQkFSX1RSQUNLLCBTQ1JPTExCQVJfVFJBQ0tf
UElFQ0UsIFNDUk9MTEJBUl9DT1JORVIgfTsKKyAgICBQc2V1ZG9JZFNldCBzY3JvbGxiYXJJZFNl
dCA9IHsgUHNldWRvSWQ6OlNjcm9sbGJhciwgUHNldWRvSWQ6OlNjcm9sbGJhclRodW1iLCBQc2V1
ZG9JZDo6U2Nyb2xsYmFyQnV0dG9uLCBQc2V1ZG9JZDo6U2Nyb2xsYmFyVHJhY2ssIFBzZXVkb0lk
OjpTY3JvbGxiYXJUcmFja1BpZWNlLCBQc2V1ZG9JZDo6U2Nyb2xsYmFyQ29ybmVyIH07CiAgICAg
aWYgKGR5bmFtaWNQc2V1ZG9JZFNldCAmIHNjcm9sbGJhcklkU2V0KQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIC8vIFJFU0laRVIgZG9lcyBub3QgYWx3YXlzIGhhdmUgYSBzY3JvbGxiYXIg
YnV0IGl0IGlzIGEgc2Nyb2xsYmFyLWxpa2UgcHNldWRvIGVsZW1lbnQKKyAgICAvLyBQc2V1ZG9J
ZDo6UmVzaXplciBkb2VzIG5vdCBhbHdheXMgaGF2ZSBhIHNjcm9sbGJhciBidXQgaXQgaXMgYSBz
Y3JvbGxiYXItbGlrZSBwc2V1ZG8gZWxlbWVudAogICAgIC8vIGJlY2F1c2UgaXQgY2FuIGhhdmUg
bW9yZSB0aGFuIG9uZSBwc2V1ZG8gZWxlbWVudC4KLSAgICByZXR1cm4gZHluYW1pY1BzZXVkb0lk
U2V0LmhhcyhSRVNJWkVSKTsKKyAgICByZXR1cm4gZHluYW1pY1BzZXVkb0lkU2V0LmhhcyhQc2V1
ZG9JZDo6UmVzaXplcik7CiB9CiAKIHN0YXRpYyBTZWxlY3RvckNoZWNrZXI6OkxvY2FsQ29udGV4
dCBsb2NhbENvbnRleHRGb3JQYXJlbnQoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpMb2NhbENvbnRl
eHQmIGNvbnRleHQpCkBAIC0yOTMsNyArMjkzLDcgQEAgU2VsZWN0b3JDaGVja2VyOjpNYXRjaFJl
c3VsdCBTZWxlY3RvckNoZQogICAgICAgICAgICAgICAgIHJldHVybiBNYXRjaFJlc3VsdDo6ZmFp
bHMoTWF0Y2g6OlNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5KTsKIAogICAgICAgICAgICAgUHNldWRv
SWQgcHNldWRvSWQgPSBDU1NTZWxlY3Rvcjo6cHNldWRvSWQoY29udGV4dC5zZWxlY3Rvci0+cHNl
dWRvRWxlbWVudFR5cGUoKSk7Ci0gICAgICAgICAgICBpZiAocHNldWRvSWQgIT0gTk9QU0VVRE8p
CisgICAgICAgICAgICBpZiAocHNldWRvSWQgIT0gUHNldWRvSWQ6Ok5vbmUpCiAgICAgICAgICAg
ICAgICAgZHluYW1pY1BzZXVkb0lkU2V0LmFkZChwc2V1ZG9JZCk7CiAgICAgICAgICAgICBtYXRj
aFR5cGUgPSBNYXRjaFR5cGU6OlZpcnR1YWxQc2V1ZG9FbGVtZW50T25seTsKICAgICAgICAgfQpA
QCAtMzEyLDE0ICszMTIsMTQgQEAgU2VsZWN0b3JDaGVja2VyOjpNYXRjaFJlc3VsdCBTZWxlY3Rv
ckNoZQogCiAgICAgaWYgKHJlbGF0aW9uICE9IENTU1NlbGVjdG9yOjpTdWJzZWxlY3Rvcikgewog
ICAgICAgICAvLyBCYWlsLW91dCBpZiB0aGlzIHNlbGVjdG9yIGlzIGlycmVsZXZhbnQgZm9yIHRo
ZSBwc2V1ZG9JZAotICAgICAgICBpZiAoY29udGV4dC5wc2V1ZG9JZCAhPSBOT1BTRVVETyAmJiAh
ZHluYW1pY1BzZXVkb0lkU2V0Lmhhcyhjb250ZXh0LnBzZXVkb0lkKSkKKyAgICAgICAgaWYgKGNv
bnRleHQucHNldWRvSWQgIT0gUHNldWRvSWQ6Ok5vbmUgJiYgIWR5bmFtaWNQc2V1ZG9JZFNldC5o
YXMoY29udGV4dC5wc2V1ZG9JZCkpCiAgICAgICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQ6OmZh
aWxzKE1hdGNoOjpTZWxlY3RvckZhaWxzQ29tcGxldGVseSk7CiAKICAgICAgICAgLy8gRGlzYWJs
ZSA6dmlzaXRlZCBtYXRjaGluZyB3aGVuIHdlIHRyeSB0byBtYXRjaCBhbnl0aGluZyBlbHNlIHRo
YW4gYW4gYW5jZXN0b3JzLgogICAgICAgICBpZiAoIWNvbnRleHQuc2VsZWN0b3ItPmhhc0Rlc2Nl
bmRhbnRPckNoaWxkUmVsYXRpb24oKSkKICAgICAgICAgICAgIG5leHRDb250ZXh0LnZpc2l0ZWRN
YXRjaFR5cGUgPSBWaXNpdGVkTWF0Y2hUeXBlOjpEaXNhYmxlZDsKIAotICAgICAgICBuZXh0Q29u
dGV4dC5wc2V1ZG9JZCA9IE5PUFNFVURPOworICAgICAgICBuZXh0Q29udGV4dC5wc2V1ZG9JZCA9
IFBzZXVkb0lkOjpOb25lOwogICAgICAgICAvLyBWaXJ0dWFsIHBzZXVkbyBlbGVtZW50IGlzIG9u
bHkgZWZmZWN0aXZlIGluIHRoZSByaWdodG1vc3QgZnJhZ21lbnQuCiAgICAgICAgIG5leHRDb250
ZXh0LnBzZXVkb0VsZW1lbnRFZmZlY3RpdmUgPSBmYWxzZTsKICAgICAgICAgbmV4dENvbnRleHQu
aXNNYXRjaEVsZW1lbnQgPSBmYWxzZTsKQEAgLTQxMyw3ICs0MTMsNyBAQCBTZWxlY3RvckNoZWNr
ZXI6Ok1hdGNoUmVzdWx0IFNlbGVjdG9yQ2hlCiAgICAgICAgICAgICAvLyBXZSBtYWtlIGFuIGV4
Y2VwdGlvbiBmb3Igc2Nyb2xsYmFyIHBzZXVkbyBlbGVtZW50cyBhbmQgYWxsb3cgYSBzZXQgb2Yg
cHNldWRvIGNsYXNzZXMgKGJ1dCBub3RoaW5nIGVsc2UpCiAgICAgICAgICAgICAvLyB0byBmb2xs
b3cgdGhlIHBzZXVkbyBlbGVtZW50cy4KICAgICAgICAgICAgIG5leHRDb250ZXh0Lmhhc1Njcm9s
bGJhclBzZXVkbyA9IGhhc1Njcm9sbGJhclBzZXVkb0VsZW1lbnQoZHluYW1pY1BzZXVkb0lkU2V0
KTsKLSAgICAgICAgICAgIG5leHRDb250ZXh0Lmhhc1NlbGVjdGlvblBzZXVkbyA9IGR5bmFtaWNQ
c2V1ZG9JZFNldC5oYXMoU0VMRUNUSU9OKTsKKyAgICAgICAgICAgIG5leHRDb250ZXh0Lmhhc1Nl
bGVjdGlvblBzZXVkbyA9IGR5bmFtaWNQc2V1ZG9JZFNldC5oYXMoUHNldWRvSWQ6OlNlbGVjdGlv
bik7CiAgICAgICAgICAgICBpZiAoKGNvbnRleHQuaXNNYXRjaEVsZW1lbnQgfHwgY2hlY2tpbmdD
b250ZXh0LnJlc29sdmluZ01vZGUgPT0gTW9kZTo6Q29sbGVjdGluZ1J1bGVzKSAmJiBkeW5hbWlj
UHNldWRvSWRTZXQKICAgICAgICAgICAgICAgICAmJiAhbmV4dENvbnRleHQuaGFzU2VsZWN0aW9u
UHNldWRvCiAgICAgICAgICAgICAgICAgJiYgIShuZXh0Q29udGV4dC5oYXNTY3JvbGxiYXJQc2V1
ZG8gJiYgbmV4dENvbnRleHQuc2VsZWN0b3ItPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgJKHJldmlzaW9u
IDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgICAgIHsgfQogCiAgICAgICAg
IGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6TW9kZSByZXNvbHZpbmdNb2RlOwotICAgICAgICBQc2V1
ZG9JZCBwc2V1ZG9JZCB7IE5PUFNFVURPIH07CisgICAgICAgIFBzZXVkb0lkIHBzZXVkb0lkIHsg
UHNldWRvSWQ6Ok5vbmUgfTsKICAgICAgICAgUmVuZGVyU2Nyb2xsYmFyKiBzY3JvbGxiYXIgeyBu
dWxscHRyIH07CiAgICAgICAgIFNjcm9sbGJhclBhcnQgc2Nyb2xsYmFyUGFydCB7IE5vUGFydCB9
OwogICAgICAgICBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSB7IG51bGxwdHIgfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgJKHJldmlzaW9uIDIz
MjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBj
b252ZXJ0U3RyaW5nT3JBdXRvKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogICAg
IHN0YXRpYyBTdHJpbmcgY29udmVydFN0cmluZ09yTm9uZShTdHlsZVJlc29sdmVyJiwgY29uc3Qg
Q1NTVmFsdWUmKTsKICAgICBzdGF0aWMgVGV4dEVtcGhhc2lzUG9zaXRpb24gY29udmVydFRleHRF
bXBoYXNpc1Bvc2l0aW9uKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0
YXRpYyBFVGV4dEFsaWduIGNvbnZlcnRUZXh0QWxpZ24oU3R5bGVSZXNvbHZlciYsIGNvbnN0IENT
U1ZhbHVlJik7CisgICAgc3RhdGljIFRleHRBbGlnbk1vZGUgY29udmVydFRleHRBbGlnbihTdHls
ZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgUmVmUHRyPENsaXBQYXRo
T3BlcmF0aW9uPiBjb252ZXJ0Q2xpcFBhdGgoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVl
Jik7CiAgICAgc3RhdGljIFJlc2l6ZSBjb252ZXJ0UmVzaXplKFN0eWxlUmVzb2x2ZXImLCBjb25z
dCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBpbnQgY29udmVydE1hcnF1ZWVSZXBldGl0aW9uKFN0
eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwpAQCAtNTAyLDcgKzUwMiw3IEBAIGlubGlu
ZSBUZXh0RW1waGFzaXNQb3NpdGlvbiBTdHlsZUJ1aWxkZXIKICAgICByZXR1cm4gcG9zaXRpb247
CiB9CiAKLWlubGluZSBFVGV4dEFsaWduIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRl
eHRBbGlnbihTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBDU1NWYWx1ZSYgdmFs
dWUpCitpbmxpbmUgVGV4dEFsaWduTW9kZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRU
ZXh0QWxpZ24oU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgY29uc3QgQ1NTVmFsdWUmIHZh
bHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KHZhbHVlKTsKICAgICBBU1NFUlQocHJpbWl0aXZlVmFsdWUuaXNWYWx1ZUlEKCkpOwpA
QCAtNTExLDEwICs1MTEsMTAgQEAgaW5saW5lIEVUZXh0QWxpZ24gU3R5bGVCdWlsZGVyQ29udmVy
dGVyOgogICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWU7CiAKICAgICBhdXRvKiBwYXJlbnRT
dHlsZSA9IHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKTsKLSAgICBpZiAocGFyZW50U3R5bGUt
PnRleHRBbGlnbigpID09IFRBU1RBUlQpCi0gICAgICAgIHJldHVybiBwYXJlbnRTdHlsZS0+aXNM
ZWZ0VG9SaWdodERpcmVjdGlvbigpID8gTEVGVCA6IFJJR0hUOwotICAgIGlmIChwYXJlbnRTdHls
ZS0+dGV4dEFsaWduKCkgPT0gVEFFTkQpCi0gICAgICAgIHJldHVybiBwYXJlbnRTdHlsZS0+aXNM
ZWZ0VG9SaWdodERpcmVjdGlvbigpID8gUklHSFQgOiBMRUZUOworICAgIGlmIChwYXJlbnRTdHls
ZS0+dGV4dEFsaWduKCkgPT0gVGV4dEFsaWduTW9kZTo6U3RhcnQpCisgICAgICAgIHJldHVybiBw
YXJlbnRTdHlsZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gVGV4dEFsaWduTW9kZTo6TGVm
dCA6IFRleHRBbGlnbk1vZGU6OlJpZ2h0OworICAgIGlmIChwYXJlbnRTdHlsZS0+dGV4dEFsaWdu
KCkgPT0gVGV4dEFsaWduTW9kZTo6RW5kKQorICAgICAgICByZXR1cm4gcGFyZW50U3R5bGUtPmlz
TGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IFRleHRBbGlnbk1vZGU6OlJpZ2h0IDogVGV4dEFsaWdu
TW9kZTo6TGVmdDsKICAgICByZXR1cm4gcGFyZW50U3R5bGUtPnRleHRBbGlnbigpOwogfQogCkBA
IC01MzIsNyArNTMyLDcgQEAgaW5saW5lIFJlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4gU3R5bGVC
dQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBDU1NCb3hUeXBlIHJlZmVy
ZW5jZUJveCA9IEJveE1pc3Npbmc7CisgICAgQ1NTQm94VHlwZSByZWZlcmVuY2VCb3ggPSBDU1NC
b3hUeXBlOjpCb3hNaXNzaW5nOwogICAgIFJlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4gb3BlcmF0
aW9uOwogCiAgICAgZm9yIChhdXRvJiBjdXJyZW50VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxp
c3Q+KHZhbHVlKSkgewpAQCAtNTQ4LDE0ICs1NDgsMTQgQEAgaW5saW5lIFJlZlB0cjxDbGlwUGF0
aE9wZXJhdGlvbj4gU3R5bGVCdQogICAgICAgICAgICAgICAgIHx8IHByaW1pdGl2ZVZhbHVlLnZh
bHVlSUQoKSA9PSBDU1NWYWx1ZUZpbGwKICAgICAgICAgICAgICAgICB8fCBwcmltaXRpdmVWYWx1
ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVTdHJva2UKICAgICAgICAgICAgICAgICB8fCBwcmltaXRp
dmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVWaWV3Qm94KTsKLSAgICAgICAgICAgIEFTU0VS
VChyZWZlcmVuY2VCb3ggPT0gQm94TWlzc2luZyk7CisgICAgICAgICAgICBBU1NFUlQocmVmZXJl
bmNlQm94ID09IENTU0JveFR5cGU6OkJveE1pc3NpbmcpOwogICAgICAgICAgICAgcmVmZXJlbmNl
Qm94ID0gcHJpbWl0aXZlVmFsdWU7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKG9wZXJhdGlv
bikKICAgICAgICAgZG93bmNhc3Q8U2hhcGVDbGlwUGF0aE9wZXJhdGlvbj4oKm9wZXJhdGlvbiku
c2V0UmVmZXJlbmNlQm94KHJlZmVyZW5jZUJveCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIEFTU0VS
VChyZWZlcmVuY2VCb3ggIT0gQm94TWlzc2luZyk7CisgICAgICAgIEFTU0VSVChyZWZlcmVuY2VC
b3ggIT0gQ1NTQm94VHlwZTo6Qm94TWlzc2luZyk7CiAgICAgICAgIG9wZXJhdGlvbiA9IEJveENs
aXBQYXRoT3BlcmF0aW9uOjpjcmVhdGUocmVmZXJlbmNlQm94KTsKICAgICB9CiAKQEAgLTc3NSw3
ICs3NzUsNyBAQCBpbmxpbmUgUmVmUHRyPFNoYXBlVmFsdWU+IFN0eWxlQnVpbGRlckNvCiAgICAg
ICAgIHJldHVybiBTaGFwZVZhbHVlOjpjcmVhdGUoc3R5bGVSZXNvbHZlci5zdHlsZUltYWdlKHZh
bHVlKS5yZWxlYXNlTm9uTnVsbCgpKTsKIAogICAgIFJlZlB0cjxCYXNpY1NoYXBlPiBzaGFwZTsK
LSAgICBDU1NCb3hUeXBlIHJlZmVyZW5jZUJveCA9IEJveE1pc3Npbmc7CisgICAgQ1NTQm94VHlw
ZSByZWZlcmVuY2VCb3ggPSBDU1NCb3hUeXBlOjpCb3hNaXNzaW5nOwogICAgIGZvciAoYXV0byYg
Y3VycmVudFZhbHVlIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKICAgICAgICAg
YXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oY3VycmVu
dFZhbHVlLmdldCgpKTsKICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzU2hhcGUoKSkKQEAg
LTc5NCw3ICs3OTQsNyBAQCBpbmxpbmUgUmVmUHRyPFNoYXBlVmFsdWU+IFN0eWxlQnVpbGRlckNv
CiAgICAgaWYgKHNoYXBlKQogICAgICAgICByZXR1cm4gU2hhcGVWYWx1ZTo6Y3JlYXRlKHNoYXBl
LnJlbGVhc2VOb25OdWxsKCksIHJlZmVyZW5jZUJveCk7CiAKLSAgICBpZiAocmVmZXJlbmNlQm94
ICE9IEJveE1pc3NpbmcpCisgICAgaWYgKHJlZmVyZW5jZUJveCAhPSBDU1NCb3hUeXBlOjpCb3hN
aXNzaW5nKQogICAgICAgICByZXR1cm4gU2hhcGVWYWx1ZTo6Y3JlYXRlKHJlZmVyZW5jZUJveCk7
CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTkyMyw3ICs5MjMsNyBAQCBpbmxpbmUg
Ym9vbCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0CiAgICAgICAgICAgICB1bnNpZ25lZCBh
dXRvUmVwZWF0SW5kZXggPSAwOwogICAgICAgICAgICAgQ1NTVmFsdWVJRCBhdXRvUmVwZWF0SUQg
PSBkb3duY2FzdDxDU1NHcmlkQXV0b1JlcGVhdFZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpLmF1
dG9SZXBlYXRJRCgpOwogICAgICAgICAgICAgQVNTRVJUKGF1dG9SZXBlYXRJRCA9PSBDU1NWYWx1
ZUF1dG9GaWxsIHx8IGF1dG9SZXBlYXRJRCA9PSBDU1NWYWx1ZUF1dG9GaXQpOwotICAgICAgICAg
ICAgdHJhY2tzRGF0YS5tX2F1dG9SZXBlYXRUeXBlID0gYXV0b1JlcGVhdElEID09IENTU1ZhbHVl
QXV0b0ZpbGwgPyBBdXRvRmlsbCA6IEF1dG9GaXQ7CisgICAgICAgICAgICB0cmFja3NEYXRhLm1f
YXV0b1JlcGVhdFR5cGUgPSBhdXRvUmVwZWF0SUQgPT0gQ1NTVmFsdWVBdXRvRmlsbCA/IEF1dG9S
ZXBlYXRUeXBlOjpGaWxsIDogQXV0b1JlcGVhdFR5cGU6OkZpdDsKICAgICAgICAgICAgIGZvciAo
YXV0byYgYXV0b1JlcGVhdFZhbHVlIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0PihjdXJyZW50VmFs
dWUuZ2V0KCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGlzPENTU0dyaWRMaW5lTmFtZXNWYWx1
ZT4oYXV0b1JlcGVhdFZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICBjcmVhdGVHcmlkTGlu
ZU5hbWVzTGlzdChhdXRvUmVwZWF0VmFsdWUuZ2V0KCksIGF1dG9SZXBlYXRJbmRleCwgdHJhY2tz
RGF0YS5tX2F1dG9SZXBlYXROYW1lZEdyaWRMaW5lcywgdHJhY2tzRGF0YS5tX2F1dG9SZXBlYXRP
cmRlcmVkTmFtZWRHcmlkTGluZXMpOwpAQCAtMTA3OCw3ICsxMDc4LDcgQEAgaW5saW5lIEdyaWRB
dXRvRmxvdyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZQogaW5saW5lIENTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjc3N0b0xlbmd0aENvbnZlcnNpb25EYXRhV2l0
aFRleHRab29tRmFjdG9yKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCiB7CiAgICAgaWYg
KGF1dG8qIGZyYW1lID0gc3R5bGVSZXNvbHZlci5kb2N1bWVudCgpLmZyYW1lKCkpIHsKLSAgICAg
ICAgZmxvYXQgdGV4dFpvb21GYWN0b3IgPSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnRleHRab29t
KCkgIT0gVGV4dFpvb21SZXNldCA/IGZyYW1lLT50ZXh0Wm9vbUZhY3RvcigpIDogMS4wZjsKKyAg
ICAgICAgZmxvYXQgdGV4dFpvb21GYWN0b3IgPSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnRleHRa
b29tKCkgIT0gVGV4dFpvb206OlJlc2V0ID8gZnJhbWUtPnRleHRab29tRmFjdG9yKCkgOiAxLjBm
OwogICAgICAgICByZXR1cm4gc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNzc1RvTGVuZ3RoQ29udmVy
c2lvbkRhdGEoKS5jb3B5V2l0aEFkanVzdGVkWm9vbShzdHlsZVJlc29sdmVyLnN0eWxlKCktPmVm
ZmVjdGl2ZVpvb20oKSAqIHRleHRab29tRmFjdG9yKTsKICAgICB9CiAgICAgcmV0dXJuIHN0eWxl
UmVzb2x2ZXIuc3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCk7CkBAIC0xNDY4LDkg
KzE0NjgsOSBAQCBpbmxpbmUgQnJlYWtCZXR3ZWVuIFN0eWxlQnVpbGRlckNvbnZlcnRlCiB7CiAg
ICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFs
dWUpOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBbHdheXMp
Ci0gICAgICAgIHJldHVybiBQYWdlQnJlYWtCZXR3ZWVuOworICAgICAgICByZXR1cm4gQnJlYWtC
ZXR3ZWVuOjpQYWdlOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFs
dWVBdm9pZCkKLSAgICAgICAgcmV0dXJuIEF2b2lkUGFnZUJyZWFrQmV0d2VlbjsKKyAgICAgICAg
cmV0dXJuIEJyZWFrQmV0d2Vlbjo6QXZvaWRQYWdlOwogICAgIHJldHVybiBwcmltaXRpdmVWYWx1
ZTsKIH0KIApAQCAtMTQ3OCw3ICsxNDc4LDcgQEAgaW5saW5lIEJyZWFrSW5zaWRlIFN0eWxlQnVp
bGRlckNvbnZlcnRlcgogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgp
ID09IENTU1ZhbHVlQXZvaWQpCi0gICAgICAgIHJldHVybiBBdm9pZFBhZ2VCcmVha0luc2lkZTsK
KyAgICAgICAgcmV0dXJuIEJyZWFrSW5zaWRlOjpBdm9pZFBhZ2U7CiAgICAgcmV0dXJuIHByaW1p
dGl2ZVZhbHVlOwogfQogCkBAIC0xNDg2LDkgKzE0ODYsOSBAQCBpbmxpbmUgQnJlYWtCZXR3ZWVu
IFN0eWxlQnVpbGRlckNvbnZlcnRlCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS52
YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBbHdheXMpCi0gICAgICAgIHJldHVybiBDb2x1bW5CcmVha0Jl
dHdlZW47CisgICAgICAgIHJldHVybiBCcmVha0JldHdlZW46OkNvbHVtbjsKICAgICBpZiAocHJp
bWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlQXZvaWQpCi0gICAgICAgIHJldHVybiBB
dm9pZENvbHVtbkJyZWFrQmV0d2VlbjsKKyAgICAgICAgcmV0dXJuIEJyZWFrQmV0d2Vlbjo6QXZv
aWRDb2x1bW47CiAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlOwogfQogCkBAIC0xNDk2LDcgKzE0
OTYsNyBAQCBpbmxpbmUgQnJlYWtJbnNpZGUgU3R5bGVCdWlsZGVyQ29udmVydGVyCiB7CiAgICAg
YXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUp
OwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdm9pZCkKLSAg
ICAgICAgcmV0dXJuIEF2b2lkQ29sdW1uQnJlYWtJbnNpZGU7CisgICAgICAgIHJldHVybiBCcmVh
a0luc2lkZTo6QXZvaWRDb2x1bW47CiAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlOwogfQogICAg
IApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaAkocmV2aXNpb24g
MjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTYsNyArMTU2LDcgQEAgcHJpdmF0ZToKIAogICAgIHRlbXBsYXRlIDxD
U1NQcm9wZXJ0eUlEIGlkPgogICAgIHN0YXRpYyB2b2lkIGFwcGx5VGV4dE9yQm94U2hhZG93VmFs
dWUoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIGJvb2wgaXNWYWxpZERp
c3BsYXlWYWx1ZShTdHlsZVJlc29sdmVyJiwgRURpc3BsYXkpOworICAgIHN0YXRpYyBib29sIGlz
VmFsaWREaXNwbGF5VmFsdWUoU3R5bGVSZXNvbHZlciYsIERpc3BsYXlUeXBlKTsKIAogICAgIGVu
dW0gQ291bnRlckJlaGF2aW9yIHtJbmNyZW1lbnQgPSAwLCBSZXNldH07CiAgICAgdGVtcGxhdGUg
PENvdW50ZXJCZWhhdmlvciBjb3VudGVyQmVoYXZpb3I+CkBAIC0zOTQsOSArMzk0LDkgQEAgaW5s
aW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbAogICAgIGZvciAoYXV0byYgaXRl
bSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CiAgICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihpdGVt
LmdldCgpKTsKICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1
ZUZyb21JbWFnZSkKLSAgICAgICAgICAgIHNvdXJjZSA9IEltYWdlUmVzb2x1dGlvbkZyb21JbWFn
ZTsKKyAgICAgICAgICAgIHNvdXJjZSA9IEltYWdlUmVzb2x1dGlvblNvdXJjZTo6RnJvbUltYWdl
OwogICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVT
bmFwKQotICAgICAgICAgICAgc25hcCA9IEltYWdlUmVzb2x1dGlvblNuYXBQaXhlbHM7CisgICAg
ICAgICAgICBzbmFwID0gSW1hZ2VSZXNvbHV0aW9uU25hcDo6UGl4ZWxzOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICByZXNvbHV0aW9uID0gcHJpbWl0aXZlVmFsdWUuZG91YmxlVmFsdWUoQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19EUFBYKTsKICAgICB9CkBAIC02NTYsNyArNjU2LDcgQEAgc3Rh
dGljIGlubGluZSBmbG9hdCBjb21wdXRlQmFzZVNwZWNpZmllZAogewogICAgIGZsb2F0IHJlc3Vs
dCA9IHN0eWxlLnNwZWNpZmllZEZvbnRTaXplKCk7CiAgICAgYXV0byogZnJhbWUgPSBkb2N1bWVu
dC5mcmFtZSgpOwotICAgIGlmIChmcmFtZSAmJiBzdHlsZS50ZXh0Wm9vbSgpICE9IFRleHRab29t
UmVzZXQpCisgICAgaWYgKGZyYW1lICYmIHN0eWxlLnRleHRab29tKCkgIT0gVGV4dFpvb206OlJl
c2V0KQogICAgICAgICByZXN1bHQgKj0gZnJhbWUtPnRleHRab29tRmFjdG9yKCk7CiAgICAgcmVz
dWx0ICo9IHN0eWxlLmVmZmVjdGl2ZVpvb20oKTsKICAgICBpZiAocGVyY2VudGFnZUF1dG9zaXpp
bmdFbmFibGVkKQpAQCAtODE1LDkgKzgxNSw5IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlWYWwKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQo
KSA9PSBDU1NWYWx1ZU5vcm1hbCkKLSAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRU
ZXh0Wm9vbShUZXh0Wm9vbU5vcm1hbCk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+
c2V0VGV4dFpvb20oVGV4dFpvb206Ok5vcm1hbCk7CiAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFs
dWUudmFsdWVJRCgpID09IENTU1ZhbHVlUmVzZXQpCi0gICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5
bGUoKS0+c2V0VGV4dFpvb20oVGV4dFpvb21SZXNldCk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXIu
c3R5bGUoKS0+c2V0VGV4dFpvb20oVGV4dFpvb206OlJlc2V0KTsKICAgICBzdHlsZVJlc29sdmVy
LnN0YXRlKCkuc2V0Rm9udERpcnR5KHRydWUpOwogfQogCkBAIC0xMDA0LDIzICsxMDA0LDIzIEBA
IGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWwKICAgICBzdHlsZVJlc29s
dmVyLnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwogfQogCi1pbmxpbmUgYm9v
bCBTdHlsZUJ1aWxkZXJDdXN0b206OmlzVmFsaWREaXNwbGF5VmFsdWUoU3R5bGVSZXNvbHZlciYg
c3R5bGVSZXNvbHZlciwgRURpc3BsYXkgZGlzcGxheSkKK2lubGluZSBib29sIFN0eWxlQnVpbGRl
ckN1c3RvbTo6aXNWYWxpZERpc3BsYXlWYWx1ZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVy
LCBEaXNwbGF5VHlwZSBkaXNwbGF5KQogewotICAgIGlmIChpczxTVkdFbGVtZW50PihzdHlsZVJl
c29sdmVyLmVsZW1lbnQoKSkgJiYgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zdHlsZVR5cGUoKSA9
PSBOT1BTRVVETykKLSAgICAgICAgcmV0dXJuIGRpc3BsYXkgPT0gSU5MSU5FIHx8IGRpc3BsYXkg
PT0gQkxPQ0sgfHwgZGlzcGxheSA9PSBOT05FOworICAgIGlmIChpczxTVkdFbGVtZW50PihzdHls
ZVJlc29sdmVyLmVsZW1lbnQoKSkgJiYgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zdHlsZVR5cGUo
KSA9PSBQc2V1ZG9JZDo6Tm9uZSkKKyAgICAgICAgcmV0dXJuIGRpc3BsYXkgPT0gRGlzcGxheVR5
cGU6OklubGluZSB8fCBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpCbG9jayB8fCBkaXNwbGF5ID09
IERpc3BsYXlUeXBlOjpOb25lOwogICAgIHJldHVybiB0cnVlOwogfQogCiBpbmxpbmUgdm9pZCBT
dHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdERpc3BsYXkoU3R5bGVSZXNvbHZlciYgc3R5
bGVSZXNvbHZlcikKIHsKLSAgICBFRGlzcGxheSBkaXNwbGF5ID0gc3R5bGVSZXNvbHZlci5wYXJl
bnRTdHlsZSgpLT5kaXNwbGF5KCk7CisgICAgRGlzcGxheVR5cGUgZGlzcGxheSA9IHN0eWxlUmVz
b2x2ZXIucGFyZW50U3R5bGUoKS0+ZGlzcGxheSgpOwogICAgIGlmIChpc1ZhbGlkRGlzcGxheVZh
bHVlKHN0eWxlUmVzb2x2ZXIsIGRpc3BsYXkpKQogICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxl
KCktPnNldERpc3BsYXkoZGlzcGxheSk7CiB9CiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZURpc3BsYXkoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NT
VmFsdWUmIHZhbHVlKQogewotICAgIEVEaXNwbGF5IGRpc3BsYXkgPSBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4odmFsdWUpOworICAgIERpc3BsYXlUeXBlIGRpc3BsYXkgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGlmIChpc1ZhbGlkRGlzcGxheVZhbHVlKHN0
eWxlUmVzb2x2ZXIsIGRpc3BsYXkpKQogICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNl
dERpc3BsYXkoZGlzcGxheSk7CiB9CkBAIC0xMTE4LDggKzExMTgsOCBAQCBpbmxpbmUgdm9pZCBT
dHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsCiAKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9
IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgaWYgKHByaW1pdGl2ZVZh
bHVlLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0
RW1waGFzaXNGaWxsKFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQpOwotICAgICAgICBzdHlsZVJlc29s
dmVyLnN0eWxlKCktPnNldFRleHRFbXBoYXNpc01hcmsoVGV4dEVtcGhhc2lzTWFya0N1c3RvbSk7
CisgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzRmlsbChUZXh0
RW1waGFzaXNGaWxsOjpGaWxsZWQpOworICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNl
dFRleHRFbXBoYXNpc01hcmsoVGV4dEVtcGhhc2lzTWFyazo6Q3VzdG9tKTsKICAgICAgICAgc3R5
bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNDdXN0b21NYXJrKHByaW1pdGl2ZVZh
bHVlLnN0cmluZ1ZhbHVlKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTEyOCw5ICsx
MTI4LDkgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbAogCiAgICAg
aWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUZpbGxlZCB8fCBwcmltaXRp
dmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVPcGVuKSB7CiAgICAgICAgIHN0eWxlUmVzb2x2
ZXIuc3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzRmlsbChwcmltaXRpdmVWYWx1ZSk7Ci0gICAgICAg
IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzTWFyayhUZXh0RW1waGFzaXNN
YXJrQXV0byk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lz
TWFyayhUZXh0RW1waGFzaXNNYXJrOjpBdXRvKTsKICAgICB9IGVsc2UgewotICAgICAgICBzdHls
ZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRFbXBoYXNpc0ZpbGwoVGV4dEVtcGhhc2lzRmlsbEZp
bGxlZCk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzRmls
bChUZXh0RW1waGFzaXNGaWxsOjpGaWxsZWQpOwogICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxl
KCktPnNldFRleHRFbXBoYXNpc01hcmsocHJpbWl0aXZlVmFsdWUpOwogICAgIH0KIH0KQEAgLTEy
MTksMTMgKzEyMTksMTMgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZh
bAogewogICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+Y2xlYXJDdXJzb3JMaXN0KCk7CiAgICAg
aWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKLSAgICAgICAgRUN1cnNvciBjdXJz
b3IgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOworICAgICAgICBDdXJzb3JU
eXBlIGN1cnNvciA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgICAg
IGlmIChzdHlsZVJlc29sdmVyLnN0eWxlKCktPmN1cnNvcigpICE9IGN1cnNvcikKICAgICAgICAg
ICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Q3Vyc29yKGN1cnNvcik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEN1cnNvcihDdXJz
b3JBdXRvKTsKKyAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEN1cnNvcihDdXJzb3JUeXBl
OjpBdXRvKTsKICAgICBhdXRvJiBsaXN0ID0gZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSk7
CiAgICAgZm9yIChhdXRvJiBpdGVtIDogbGlzdCkgewogICAgICAgICBpZiAoaXM8Q1NTQ3Vyc29y
SW1hZ2VWYWx1ZT4oaXRlbSkpIHsKQEAgLTE0MTQsNyArMTQxNCw3IEBAIGlubGluZSB2b2lkIFN0
eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWwKICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7CiAg
ICAgICAgIH0gZWxzZSBpZiAoY29udGVudFZhbHVlLmlzQXR0cigpKSB7CiAgICAgICAgICAgICAv
LyBGSVhNRTogQ2FuIGEgbmFtZXNwYWNlIGJlIHNwZWNpZmllZCBmb3IgYW4gYXR0cihmb28pPwot
ICAgICAgICAgICAgaWYgKHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c3R5bGVUeXBlKCkgPT0gTk9Q
U0VVRE8pCisgICAgICAgICAgICBpZiAoc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zdHlsZVR5cGUo
KSA9PSBQc2V1ZG9JZDo6Tm9uZSkKICAgICAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxl
KCktPnNldEhhc0F0dHJDb250ZW50KCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgY29uc3RfY2FzdDxSZW5kZXJTdHlsZSo+KHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKSkt
PnNldEhhc0F0dHJDb250ZW50KCk7CkBAIC0xNDI2LDEwICsxNDI2LDEwIEBAIGlubGluZSB2b2lk
IFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWwKICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXIu
cnVsZVNldHMoKS5tdXRhYmxlRmVhdHVyZXMoKS5yZWdpc3RlckNvbnRlbnRBdHRyaWJ1dGUoYXR0
ci5sb2NhbE5hbWUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY29udGVudFZhbHVlLmlzQ291bnRl
cigpKSB7CiAgICAgICAgICAgICBhdXRvKiBjb3VudGVyVmFsdWUgPSBjb250ZW50VmFsdWUuY291
bnRlclZhbHVlKCk7Ci0gICAgICAgICAgICBFTGlzdFN0eWxlVHlwZSBsaXN0U3R5bGVUeXBlID0g
Tm9uZUxpc3RTdHlsZTsKKyAgICAgICAgICAgIExpc3RTdHlsZVR5cGUgbGlzdFN0eWxlVHlwZSA9
IExpc3RTdHlsZVR5cGU6Ok5vbmU7CiAgICAgICAgICAgICBDU1NWYWx1ZUlEIGxpc3RTdHlsZUlk
ZW50ID0gY291bnRlclZhbHVlLT5saXN0U3R5bGVJZGVudCgpOwogICAgICAgICAgICAgaWYgKGxp
c3RTdHlsZUlkZW50ICE9IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAgICAgICBsaXN0U3R5bGVU
eXBlID0gc3RhdGljX2Nhc3Q8RUxpc3RTdHlsZVR5cGU+KGxpc3RTdHlsZUlkZW50IC0gQ1NTVmFs
dWVEaXNjKTsKKyAgICAgICAgICAgICAgICBsaXN0U3R5bGVUeXBlID0gc3RhdGljX2Nhc3Q8TGlz
dFN0eWxlVHlwZT4obGlzdFN0eWxlSWRlbnQgLSBDU1NWYWx1ZURpc2MpOwogICAgICAgICAgICAg
YXV0byBjb3VudGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyQ29udGVudD4oY291bnRlclZh
bHVlLT5pZGVudGlmaWVyKCksIGxpc3RTdHlsZVR5cGUsIGNvdW50ZXJWYWx1ZS0+c2VwYXJhdG9y
KCkpOwogICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRDb250ZW50KFdURk1v
dmUoY291bnRlciksIGRpZFNldCk7CiAgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOwpAQCAtMTYw
MCw3ICsxNjAwLDcgQEAgaW5saW5lIGZsb2F0IFN0eWxlQnVpbGRlckN1c3RvbTo6c21hbGxlcgog
CiBpbmxpbmUgZmxvYXQgU3R5bGVCdWlsZGVyQ3VzdG9tOjpkZXRlcm1pbmVSdWJ5VGV4dFNpemVN
dWx0aXBsaWVyKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCiB7Ci0gICAgaWYgKHN0eWxl
UmVzb2x2ZXIuc3R5bGUoKS0+cnVieVBvc2l0aW9uKCkgIT0gUnVieVBvc2l0aW9uSW50ZXJDaGFy
YWN0ZXIpCisgICAgaWYgKHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+cnVieVBvc2l0aW9uKCkgIT0g
UnVieVBvc2l0aW9uOjpJbnRlckNoYXJhY3RlcikKICAgICAgICAgcmV0dXJuIDAuNWY7CiAKICAg
ICAvLyBGSVhNRTogVGhpcyBoYWNrIGlzIHRvIGVuc3VyZSB0b25lIG1hcmtzIGFyZSB0aGUgc2Ft
ZSBzaXplIGFzCkBAIC0xODEwLDcgKzE4MTAsNyBAQCB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6
YXBwbHlWYWx1ZUFsdChTCiAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Q29udGVu
dEFsdFRleHQocHJpbWl0aXZlVmFsdWUuc3RyaW5nVmFsdWUoKSk7CiAgICAgZWxzZSBpZiAocHJp
bWl0aXZlVmFsdWUuaXNBdHRyKCkpIHsKICAgICAgICAgLy8gRklYTUU6IENhbiBhIG5hbWVzcGFj
ZSBiZSBzcGVjaWZpZWQgZm9yIGFuIGF0dHIoZm9vKT8KLSAgICAgICAgaWYgKHN0eWxlUmVzb2x2
ZXIuc3R5bGUoKS0+c3R5bGVUeXBlKCkgPT0gTk9QU0VVRE8pCisgICAgICAgIGlmIChzdHlsZVJl
c29sdmVyLnN0eWxlKCktPnN0eWxlVHlwZSgpID09IFBzZXVkb0lkOjpOb25lKQogICAgICAgICAg
ICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRVbmlxdWUoKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgY29uc3RfY2FzdDxSZW5kZXJTdHlsZSo+KHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5
bGUoKSktPnNldFVuaXF1ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTksMTEgKzM1OSwxMSBAQCBFbGVtZW50U3R5bGUgU3R5
bGVSZXNvbHZlcjo6c3R5bGVGb3JFbGVtCiAKICAgICBpZiAoZWxlbWVudC5pc0xpbmsoKSkgewog
ICAgICAgICBzdHlsZS5zZXRJc0xpbmsodHJ1ZSk7Ci0gICAgICAgIEVJbnNpZGVMaW5rIGxpbmtT
dGF0ZSA9IHN0YXRlLmVsZW1lbnRMaW5rU3RhdGUoKTsKLSAgICAgICAgaWYgKGxpbmtTdGF0ZSAh
PSBOb3RJbnNpZGVMaW5rKSB7CisgICAgICAgIEluc2lkZUxpbmsgbGlua1N0YXRlID0gc3RhdGUu
ZWxlbWVudExpbmtTdGF0ZSgpOworICAgICAgICBpZiAobGlua1N0YXRlICE9IEluc2lkZUxpbms6
Ok5vdEluc2lkZSkgewogICAgICAgICAgICAgYm9vbCBmb3JjZVZpc2l0ZWQgPSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmZvcmNlUHNldWRvU3RhdGUoZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBz
ZXVkb0NsYXNzVmlzaXRlZCk7CiAgICAgICAgICAgICBpZiAoZm9yY2VWaXNpdGVkKQotICAgICAg
ICAgICAgICAgIGxpbmtTdGF0ZSA9IEluc2lkZVZpc2l0ZWRMaW5rOworICAgICAgICAgICAgICAg
IGxpbmtTdGF0ZSA9IEluc2lkZUxpbms6Okluc2lkZVZpc2l0ZWQ7CiAgICAgICAgIH0KICAgICAg
ICAgc3R5bGUuc2V0SW5zaWRlTGluayhsaW5rU3RhdGUpOwogICAgIH0KQEAgLTY3Myw1MyArNjcz
LDUzIEBAIHN0YXRpYyB2b2lkIGFkZEludHJpbnNpY01hcmdpbnMoUmVuZGVyU3QKICAgICB9CiB9
CiAKLXN0YXRpYyBFRGlzcGxheSBlcXVpdmFsZW50QmxvY2tEaXNwbGF5KGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSwgY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQorc3RhdGljIERpc3BsYXlUeXBl
IGVxdWl2YWxlbnRCbG9ja0Rpc3BsYXkoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBE
b2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgc3dpdGNoIChhdXRvIGRpc3BsYXkgPSBzdHlsZS5k
aXNwbGF5KCkpIHsKLSAgICBjYXNlIEJMT0NLOgotICAgIGNhc2UgVEFCTEU6Ci0gICAgY2FzZSBC
T1g6Ci0gICAgY2FzZSBGTEVYOgotICAgIGNhc2UgV0VCS0lUX0ZMRVg6Ci0gICAgY2FzZSBHUklE
OgorICAgIGNhc2UgRGlzcGxheVR5cGU6OkJsb2NrOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OlRh
YmxlOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OkJveDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpG
bGV4OgorICAgIGNhc2UgRGlzcGxheVR5cGU6OldlYktpdEZsZXg6CisgICAgY2FzZSBEaXNwbGF5
VHlwZTo6R3JpZDoKICAgICAgICAgcmV0dXJuIGRpc3BsYXk7CiAKLSAgICBjYXNlIExJU1RfSVRF
TToKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpMaXN0SXRlbToKICAgICAgICAgLy8gSXQgaXMgYSBX
aW5JRSBidWcgdGhhdCBmbG9hdGVkIGxpc3QgaXRlbXMgbG9zZSB0aGVpciBidWxsZXRzLCBzbyB3
ZSdsbCBlbXVsYXRlIHRoZSBxdWlyaywgYnV0IG9ubHkgaW4gcXVpcmtzIG1vZGUuCiAgICAgICAg
IGlmIChkb2N1bWVudC5pblF1aXJrc01vZGUoKSAmJiBzdHlsZS5pc0Zsb2F0aW5nKCkpCi0gICAg
ICAgICAgICByZXR1cm4gQkxPQ0s7CisgICAgICAgICAgICByZXR1cm4gRGlzcGxheVR5cGU6OkJs
b2NrOwogICAgICAgICByZXR1cm4gZGlzcGxheTsKLSAgICBjYXNlIElOTElORV9UQUJMRToKLSAg
ICAgICAgcmV0dXJuIFRBQkxFOwotICAgIGNhc2UgSU5MSU5FX0JPWDoKLSAgICAgICAgcmV0dXJu
IEJPWDsKLSAgICBjYXNlIElOTElORV9GTEVYOgotICAgIGNhc2UgV0VCS0lUX0lOTElORV9GTEVY
OgotICAgICAgICByZXR1cm4gRkxFWDsKLSAgICBjYXNlIElOTElORV9HUklEOgotICAgICAgICBy
ZXR1cm4gR1JJRDsKLQotICAgIGNhc2UgSU5MSU5FOgotICAgIGNhc2UgQ09NUEFDVDoKLSAgICBj
YXNlIElOTElORV9CTE9DSzoKLSAgICBjYXNlIFRBQkxFX1JPV19HUk9VUDoKLSAgICBjYXNlIFRB
QkxFX0hFQURFUl9HUk9VUDoKLSAgICBjYXNlIFRBQkxFX0ZPT1RFUl9HUk9VUDoKLSAgICBjYXNl
IFRBQkxFX1JPVzoKLSAgICBjYXNlIFRBQkxFX0NPTFVNTl9HUk9VUDoKLSAgICBjYXNlIFRBQkxF
X0NPTFVNTjoKLSAgICBjYXNlIFRBQkxFX0NFTEw6Ci0gICAgY2FzZSBUQUJMRV9DQVBUSU9OOgot
ICAgICAgICByZXR1cm4gQkxPQ0s7Ci0gICAgY2FzZSBDT05URU5UUzoKKyAgICBjYXNlIERpc3Bs
YXlUeXBlOjpJbmxpbmVUYWJsZToKKyAgICAgICAgcmV0dXJuIERpc3BsYXlUeXBlOjpUYWJsZTsK
KyAgICBjYXNlIERpc3BsYXlUeXBlOjpJbmxpbmVCb3g6CisgICAgICAgIHJldHVybiBEaXNwbGF5
VHlwZTo6Qm94OworICAgIGNhc2UgRGlzcGxheVR5cGU6OklubGluZUZsZXg6CisgICAgY2FzZSBE
aXNwbGF5VHlwZTo6V2ViS2l0SW5saW5lRmxleDoKKyAgICAgICAgcmV0dXJuIERpc3BsYXlUeXBl
OjpGbGV4OworICAgIGNhc2UgRGlzcGxheVR5cGU6OklubGluZUdyaWQ6CisgICAgICAgIHJldHVy
biBEaXNwbGF5VHlwZTo6R3JpZDsKKworICAgIGNhc2UgRGlzcGxheVR5cGU6OklubGluZToKKyAg
ICBjYXNlIERpc3BsYXlUeXBlOjpDb21wYWN0OgorICAgIGNhc2UgRGlzcGxheVR5cGU6OklubGlu
ZUJsb2NrOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlUm93R3JvdXA6CisgICAgY2FzZSBE
aXNwbGF5VHlwZTo6VGFibGVIZWFkZXJHcm91cDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJs
ZUZvb3Rlckdyb3VwOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlUm93OgorICAgIGNhc2Ug
RGlzcGxheVR5cGU6OlRhYmxlQ29sdW1uR3JvdXA6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFi
bGVDb2x1bW46CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFibGVDZWxsOgorICAgIGNhc2UgRGlz
cGxheVR5cGU6OlRhYmxlQ2FwdGlvbjoKKyAgICAgICAgcmV0dXJuIERpc3BsYXlUeXBlOjpCbG9j
azsKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpDb250ZW50czoKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBDT05URU5UUzsKLSAgICBjYXNlIE5PTkU6CisgICAg
ICAgIHJldHVybiBEaXNwbGF5VHlwZTo6Q29udGVudHM7CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6
Tm9uZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBOT05F
OworICAgICAgICByZXR1cm4gRGlzcGxheVR5cGU6Ok5vbmU7CiAgICAgfQogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBCTE9DSzsKKyAgICByZXR1cm4gRGlzcGxheVR5cGU6
OkJsb2NrOwogfQogCiAvLyBDU1MgcmVxdWlyZXMgdGV4dC1kZWNvcmF0aW9uIHRvIGJlIHJlc2V0
IGF0IGVhY2ggRE9NIGVsZW1lbnQgZm9yIHRhYmxlcywgCkBAIC03MjcsOCArNzI3LDggQEAgc3Rh
dGljIEVEaXNwbGF5IGVxdWl2YWxlbnRCbG9ja0Rpc3BsYXkoYwogLy8gYW5kIGFic29sdXRlIG9y
IHJlbGF0aXZlbHkgcG9zaXRpb25lZCBlbGVtZW50cy4KIHN0YXRpYyBib29sIGRvZXNOb3RJbmhl
cml0VGV4dERlY29yYXRpb24oY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBFbGVtZW50
KiBlbGVtZW50KQogewotICAgIHJldHVybiBzdHlsZS5kaXNwbGF5KCkgPT0gVEFCTEUgfHwgc3R5
bGUuZGlzcGxheSgpID09IElOTElORV9UQUJMRQotICAgICAgICB8fCBzdHlsZS5kaXNwbGF5KCkg
PT0gSU5MSU5FX0JMT0NLIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBJTkxJTkVfQk9YIHx8IChlbGVt
ZW50ICYmIGlzQXRTaGFkb3dCb3VuZGFyeSgqZWxlbWVudCkpCisgICAgcmV0dXJuIHN0eWxlLmRp
c3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGUgfHwgc3R5bGUuZGlzcGxheSgpID09IERpc3Bs
YXlUeXBlOjpJbmxpbmVUYWJsZQorICAgICAgICB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxh
eVR5cGU6OklubGluZUJsb2NrIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5s
aW5lQm94IHx8IChlbGVtZW50ICYmIGlzQXRTaGFkb3dCb3VuZGFyeSgqZWxlbWVudCkpCiAgICAg
ICAgIHx8IHN0eWxlLmlzRmxvYXRpbmcoKSB8fCBzdHlsZS5oYXNPdXRPZkZsb3dQb3NpdGlvbigp
OwogfQogCkBAIC03NDIsOSArNzQyLDkgQEAgc3RhdGljIGJvb2wgaXNTY3JvbGxhYmxlT3ZlcmZs
b3coT3ZlcmZsbwogdm9pZCBTdHlsZVJlc29sdmVyOjphZGp1c3RTdHlsZUZvckludGVyQ2hhcmFj
dGVyUnVieSgpCiB7CiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gbV9zdGF0ZS5zdHlsZSgpOwot
ICAgIGlmIChzdHlsZS0+cnVieVBvc2l0aW9uKCkgIT0gUnVieVBvc2l0aW9uSW50ZXJDaGFyYWN0
ZXIgfHwgIW1fc3RhdGUuZWxlbWVudCgpIHx8ICFtX3N0YXRlLmVsZW1lbnQoKS0+aGFzVGFnTmFt
ZShydFRhZykpCisgICAgaWYgKHN0eWxlLT5ydWJ5UG9zaXRpb24oKSAhPSBSdWJ5UG9zaXRpb246
OkludGVyQ2hhcmFjdGVyIHx8ICFtX3N0YXRlLmVsZW1lbnQoKSB8fCAhbV9zdGF0ZS5lbGVtZW50
KCktPmhhc1RhZ05hbWUocnRUYWcpKQogICAgICAgICByZXR1cm47Ci0gICAgc3R5bGUtPnNldFRl
eHRBbGlnbihDRU5URVIpOworICAgIHN0eWxlLT5zZXRUZXh0QWxpZ24oVGV4dEFsaWduTW9kZTo6
Q2VudGVyKTsKICAgICBpZiAoc3R5bGUtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCiAgICAg
ICAgIHN0eWxlLT5zZXRXcml0aW5nTW9kZShMZWZ0VG9SaWdodFdyaXRpbmdNb2RlKTsKIH0KQEAg
LTc5NiwyMCArNzk2LDIwIEBAIHN0YXRpYyB2b2lkIGFkanVzdERpc3BsYXlDb250ZW50c1N0eWxl
KFIKIHsKICAgICBib29sIGRpc3BsYXlDb250ZW50c0VuYWJsZWQgPSBpczxIVE1MU2xvdEVsZW1l
bnQ+KGVsZW1lbnQpIHx8IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
ZGlzcGxheUNvbnRlbnRzRW5hYmxlZCgpOwogICAgIGlmICghZGlzcGxheUNvbnRlbnRzRW5hYmxl
ZCkgewotICAgICAgICBzdHlsZS5zZXREaXNwbGF5KElOTElORSk7CisgICAgICAgIHN0eWxlLnNl
dERpc3BsYXkoRGlzcGxheVR5cGU6OklubGluZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgaWYgKCFlbGVtZW50KSB7Ci0gICAgICAgIGlmIChzdHlsZS5zdHlsZVR5cGUoKSAhPSBCRUZP
UkUgJiYgc3R5bGUuc3R5bGVUeXBlKCkgIT0gQUZURVIpCi0gICAgICAgICAgICBzdHlsZS5zZXRE
aXNwbGF5KE5PTkUpOworICAgICAgICBpZiAoc3R5bGUuc3R5bGVUeXBlKCkgIT0gUHNldWRvSWQ6
OkJlZm9yZSAmJiBzdHlsZS5zdHlsZVR5cGUoKSAhPSBQc2V1ZG9JZDo6QWZ0ZXIpCisgICAgICAg
ICAgICBzdHlsZS5zZXREaXNwbGF5KERpc3BsYXlUeXBlOjpOb25lKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBpZiAoZWxlbWVudC0+ZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKSA9
PSBlbGVtZW50KSB7Ci0gICAgICAgIHN0eWxlLnNldERpc3BsYXkoQkxPQ0spOworICAgICAgICBz
dHlsZS5zZXREaXNwbGF5KERpc3BsYXlUeXBlOjpCbG9jayk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgaWYgKGhhc0VmZmVjdGl2ZURpc3BsYXlOb25lRm9yRGlzcGxheUNvbnRlbnRzKCpl
bGVtZW50KSkKLSAgICAgICAgc3R5bGUuc2V0RGlzcGxheShOT05FKTsKKyAgICAgICAgc3R5bGUu
c2V0RGlzcGxheShEaXNwbGF5VHlwZTo6Tm9uZSk7CiB9CiAKIHZvaWQgU3R5bGVSZXNvbHZlcjo6
YWRqdXN0U1ZHRWxlbWVudFN0eWxlKGNvbnN0IFNWR0VsZW1lbnQmIHN2Z0VsZW1lbnQsIFJlbmRl
clN0eWxlJiBzdHlsZSkKQEAgLTgyNiw3ICs4MjYsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFk
anVzdFNWR0VsZW1lbnRTdHlsCiAKICAgICAvLyBTVkcgdGV4dCBsYXlvdXQgY29kZSBleHBlY3Rz
IHVzIHRvIGJlIGEgYmxvY2stbGV2ZWwgc3R5bGUgZWxlbWVudC4KICAgICBpZiAoKHN2Z0VsZW1l
bnQuaGFzVGFnTmFtZShTVkdOYW1lczo6Zm9yZWlnbk9iamVjdFRhZykgfHwgc3ZnRWxlbWVudC5o
YXNUYWdOYW1lKFNWR05hbWVzOjp0ZXh0VGFnKSkgJiYgc3R5bGUuaXNEaXNwbGF5SW5saW5lVHlw
ZSgpKQotICAgICAgICBzdHlsZS5zZXREaXNwbGF5KEJMT0NLKTsKKyAgICAgICAgc3R5bGUuc2V0
RGlzcGxheShEaXNwbGF5VHlwZTo6QmxvY2spOwogfQogCiB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFk
anVzdFJlbmRlclN0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIHBh
cmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50Qm94U3R5bGUsIGNvbnN0IEVsZW1l
bnQqIGVsZW1lbnQpCkBAIC04MzksMTAgKzgzOSwxMCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFk
anVzdFJlbmRlclN0eWxlKFJlCiAgICAgLy8gQ2FjaGUgb3VyIG9yaWdpbmFsIGRpc3BsYXkuCiAg
ICAgc3R5bGUuc2V0T3JpZ2luYWxEaXNwbGF5KHN0eWxlLmRpc3BsYXkoKSk7CiAKLSAgICBpZiAo
c3R5bGUuZGlzcGxheSgpID09IENPTlRFTlRTKQorICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0g
RGlzcGxheVR5cGU6OkNvbnRlbnRzKQogICAgICAgICBhZGp1c3REaXNwbGF5Q29udGVudHNTdHls
ZShzdHlsZSwgZWxlbWVudCk7CiAKLSAgICBpZiAoc3R5bGUuZGlzcGxheSgpICE9IE5PTkUgJiYg
c3R5bGUuZGlzcGxheSgpICE9IENPTlRFTlRTKSB7CisgICAgaWYgKHN0eWxlLmRpc3BsYXkoKSAh
PSBEaXNwbGF5VHlwZTo6Tm9uZSAmJiBzdHlsZS5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6OkNv
bnRlbnRzKSB7CiAgICAgICAgIGlmIChlbGVtZW50KSB7CiAgICAgICAgICAgICAvLyBJZiB3ZSBo
YXZlIGEgPHRkPiB0aGF0IHNwZWNpZmllcyBhIGZsb2F0IHByb3BlcnR5LCBpbiBxdWlya3MgbW9k
ZSB3ZSBqdXN0IGRyb3AgdGhlIGZsb2F0CiAgICAgICAgICAgICAvLyBwcm9wZXJ0eS4KQEAgLTg1
MCwzMyArODUwLDMzIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRqdXN0UmVuZGVyU3R5bGUoUmUK
ICAgICAgICAgICAgIC8vIHRoZXNlIHRhZ3MgdG8gcmV0YWluIHRoZWlyIGRpc3BsYXkgdHlwZXMu
CiAgICAgICAgICAgICBpZiAoZG9jdW1lbnQoKS5pblF1aXJrc01vZGUoKSkgewogICAgICAgICAg
ICAgICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKHRkVGFnKSkgewotICAgICAgICAgICAgICAg
ICAgICBzdHlsZS5zZXREaXNwbGF5KFRBQkxFX0NFTEwpOworICAgICAgICAgICAgICAgICAgICBz
dHlsZS5zZXREaXNwbGF5KERpc3BsYXlUeXBlOjpUYWJsZUNlbGwpOwogICAgICAgICAgICAgICAg
ICAgICBzdHlsZS5zZXRGbG9hdGluZyhGbG9hdDo6Tm8pOwogICAgICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoaXM8SFRNTFRhYmxlRWxlbWVudD4oKmVsZW1lbnQpKQotICAgICAgICAgICAgICAgICAg
ICBzdHlsZS5zZXREaXNwbGF5KHN0eWxlLmlzRGlzcGxheUlubGluZVR5cGUoKSA/IElOTElORV9U
QUJMRSA6IFRBQkxFKTsKKyAgICAgICAgICAgICAgICAgICAgc3R5bGUuc2V0RGlzcGxheShzdHls
ZS5pc0Rpc3BsYXlJbmxpbmVUeXBlKCkgPyBEaXNwbGF5VHlwZTo6SW5saW5lVGFibGUgOiBEaXNw
bGF5VHlwZTo6VGFibGUpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoZWxlbWVu
dC0+aGFzVGFnTmFtZSh0ZFRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZSh0aFRhZykpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoc3R5bGUud2hpdGVTcGFjZSgpID09IEtIVE1MX05PV1JBUCkgewor
ICAgICAgICAgICAgICAgIGlmIChzdHlsZS53aGl0ZVNwYWNlKCkgPT0gV2hpdGVTcGFjZTo6S0hU
TUxOb1dyYXApIHsKICAgICAgICAgICAgICAgICAgICAgLy8gRmlndXJlIG91dCBpZiB3ZSBhcmUg
cmVhbGx5IG5vd3JhcHBpbmcgb3IgaWYgd2Ugc2hvdWxkIGp1c3QKICAgICAgICAgICAgICAgICAg
ICAgLy8gdXNlIG5vcm1hbCBpbnN0ZWFkLiBJZiB0aGUgd2lkdGggb2YgdGhlIGNlbGwgaXMgZml4
ZWQsIHRoZW4KLSAgICAgICAgICAgICAgICAgICAgLy8gd2UgZG9uJ3QgYWN0dWFsbHkgdXNlIE5P
V1JBUC4KKyAgICAgICAgICAgICAgICAgICAgLy8gd2UgZG9uJ3QgYWN0dWFsbHkgdXNlIFdoaXRl
U3BhY2U6Ok5vV3JhcC4KICAgICAgICAgICAgICAgICAgICAgaWYgKHN0eWxlLndpZHRoKCkuaXNG
aXhlZCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUuc2V0V2hpdGVTcGFjZShOT1JN
QUwpOworICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUuc2V0V2hpdGVTcGFjZShXaGl0ZVNw
YWNlOjpOb3JtYWwpOwogICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgICAgICBzdHlsZS5zZXRXaGl0ZVNwYWNlKE5PV1JBUCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzdHlsZS5zZXRXaGl0ZVNwYWNlKFdoaXRlU3BhY2U6Ok5vV3JhcCk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBUYWJsZXMgbmV2ZXIgc3Vw
cG9ydCB0aGUgLXdlYmtpdC0qIHZhbHVlcyBmb3IgdGV4dC1hbGlnbiBhbmQgd2lsbCByZXNldCBi
YWNrIHRvIHRoZSBkZWZhdWx0LgotICAgICAgICAgICAgaWYgKGlzPEhUTUxUYWJsZUVsZW1lbnQ+
KCplbGVtZW50KSAmJiAoc3R5bGUudGV4dEFsaWduKCkgPT0gV0VCS0lUX0xFRlQgfHwgc3R5bGUu
dGV4dEFsaWduKCkgPT0gV0VCS0lUX0NFTlRFUiB8fCBzdHlsZS50ZXh0QWxpZ24oKSA9PSBXRUJL
SVRfUklHSFQpKQotICAgICAgICAgICAgICAgIHN0eWxlLnNldFRleHRBbGlnbihUQVNUQVJUKTsK
KyAgICAgICAgICAgIGlmIChpczxIVE1MVGFibGVFbGVtZW50PigqZWxlbWVudCkgJiYgKHN0eWxl
LnRleHRBbGlnbigpID09IFRleHRBbGlnbk1vZGU6OldlYktpdExlZnQgfHwgc3R5bGUudGV4dEFs
aWduKCkgPT0gVGV4dEFsaWduTW9kZTo6V2ViS2l0Q2VudGVyIHx8IHN0eWxlLnRleHRBbGlnbigp
ID09IFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0KSkKKyAgICAgICAgICAgICAgICBzdHlsZS5z
ZXRUZXh0QWxpZ24oVGV4dEFsaWduTW9kZTo6U3RhcnQpOwogCiAgICAgICAgICAgICAvLyBGcmFt
ZXMgYW5kIGZyYW1lc2V0cyBuZXZlciBob25vciBwb3NpdGlvbjpyZWxhdGl2ZSBvciBwb3NpdGlv
bjphYnNvbHV0ZS4gVGhpcyBpcyBuZWNlc3NhcnkgdG8KICAgICAgICAgICAgIC8vIGZpeCBhIGNy
YXNoIHdoZXJlIGEgc2l0ZSB0cmllcyB0byBwb3NpdGlvbiB0aGVzZSBvYmplY3RzLiBUaGV5IGFs
c28gbmV2ZXIgaG9ub3IgZGlzcGxheS4KICAgICAgICAgICAgIGlmIChlbGVtZW50LT5oYXNUYWdO
YW1lKGZyYW1lVGFnKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKGZyYW1lc2V0VGFnKSkgewogICAg
ICAgICAgICAgICAgIHN0eWxlLnNldFBvc2l0aW9uKFBvc2l0aW9uVHlwZTo6U3RhdGljKTsKLSAg
ICAgICAgICAgICAgICBzdHlsZS5zZXREaXNwbGF5KEJMT0NLKTsKKyAgICAgICAgICAgICAgICBz
dHlsZS5zZXREaXNwbGF5KERpc3BsYXlUeXBlOjpCbG9jayk7CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIC8vIFJ1YnkgdGV4dCBkb2VzIG5vdCBzdXBwb3J0IGZsb2F0IG9yIHBvc2l0aW9u
LiBUaGlzIG1pZ2h0IGNoYW5nZSB3aXRoIGV2b2x1dGlvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbi4K
QEAgLTg5MCwxMCArODkwLDEwIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRqdXN0UmVuZGVyU3R5
bGUoUmUKICAgICAgICAgICAgIC8vIGp1c3QgYSBzaW5nbGUgZGVjbGFyYXRpb24gdGhhdCBzZXRz
IHRoZSAndGV4dC1hbGlnbicgcHJvcGVydHkgdG8gdGhlIHZhbHVlICdjZW50ZXInLgogICAgICAg
ICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvcmVuZGVyaW5n
Lmh0bWwjcmVuZGVyaW5nCiAgICAgICAgICAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZSh0aFRh
ZykgJiYgIXN0eWxlLmhhc0V4cGxpY2l0bHlTZXRUZXh0QWxpZ24oKSAmJiBwYXJlbnRTdHlsZS50
ZXh0QWxpZ24oKSA9PSBSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRBbGlnbigpKQotICAgICAgICAg
ICAgICAgIHN0eWxlLnNldFRleHRBbGlnbihDRU5URVIpOworICAgICAgICAgICAgICAgIHN0eWxl
LnNldFRleHRBbGlnbihUZXh0QWxpZ25Nb2RlOjpDZW50ZXIpOwogCiAgICAgICAgICAgICBpZiAo
ZWxlbWVudC0+aGFzVGFnTmFtZShsZWdlbmRUYWcpKQotICAgICAgICAgICAgICAgIHN0eWxlLnNl
dERpc3BsYXkoQkxPQ0spOworICAgICAgICAgICAgICAgIHN0eWxlLnNldERpc3BsYXkoRGlzcGxh
eVR5cGU6OkJsb2NrKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEFic29sdXRlL2ZpeGVkIHBv
c2l0aW9uZWQgZWxlbWVudHMsIGZsb2F0aW5nIGVsZW1lbnRzIGFuZCB0aGUgZG9jdW1lbnQgZWxl
bWVudCBuZWVkIGJsb2NrLWxpa2Ugb3V0c2lkZSBkaXNwbGF5LgpAQCAtOTAyLDI4ICs5MDIsMjgg
QEAgdm9pZCBTdHlsZVJlc29sdmVyOjphZGp1c3RSZW5kZXJTdHlsZShSZQogCiAgICAgICAgIC8v
IEZJWE1FOiBEb24ndCBzdXBwb3J0IHRoaXMgbXV0YXRpb24gZm9yIHBzZXVkbyBzdHlsZXMgbGlr
ZSBmaXJzdC1sZXR0ZXIgb3IgZmlyc3QtbGluZSwgc2luY2UgaXQncyBub3QgY29tcGxldGVseQog
ICAgICAgICAvLyBjbGVhciBob3cgdGhhdCBzaG91bGQgd29yay4KLSAgICAgICAgaWYgKHN0eWxl
LmRpc3BsYXkoKSA9PSBJTkxJTkUgJiYgc3R5bGUuc3R5bGVUeXBlKCkgPT0gTk9QU0VVRE8gJiYg
c3R5bGUud3JpdGluZ01vZGUoKSAhPSBwYXJlbnRTdHlsZS53cml0aW5nTW9kZSgpKQotICAgICAg
ICAgICAgc3R5bGUuc2V0RGlzcGxheShJTkxJTkVfQkxPQ0spOworICAgICAgICBpZiAoc3R5bGUu
ZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpJbmxpbmUgJiYgc3R5bGUuc3R5bGVUeXBlKCkgPT0g
UHNldWRvSWQ6Ok5vbmUgJiYgc3R5bGUud3JpdGluZ01vZGUoKSAhPSBwYXJlbnRTdHlsZS53cml0
aW5nTW9kZSgpKQorICAgICAgICAgICAgc3R5bGUuc2V0RGlzcGxheShEaXNwbGF5VHlwZTo6SW5s
aW5lQmxvY2spOwogCiAgICAgICAgIC8vIEFmdGVyIHBlcmZvcm1pbmcgdGhlIGRpc3BsYXkgbXV0
YXRpb24sIGNoZWNrIHRhYmxlIHJvd3MuIFdlIGRvIG5vdCBob25vciBwb3NpdGlvbjpyZWxhdGl2
ZSBvciBwb3NpdGlvbjpzdGlja3kgb24KICAgICAgICAgLy8gdGFibGUgcm93cyBvciBjZWxscy4g
VGhpcyBoYXMgYmVlbiBlc3RhYmxpc2hlZCBmb3IgcG9zaXRpb246cmVsYXRpdmUgaW4gQ1NTMi4x
IChhbmQgY2F1c2VkIGEgY3Jhc2ggaW4gY29udGFpbmluZ0Jsb2NrKCkKICAgICAgICAgLy8gb24g
c29tZSBzaXRlcykuCi0gICAgICAgIGlmICgoc3R5bGUuZGlzcGxheSgpID09IFRBQkxFX0hFQURF
Ul9HUk9VUCB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gVEFCTEVfUk9XX0dST1VQCi0gICAgICAgICAg
ICB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gVEFCTEVfRk9PVEVSX0dST1VQIHx8IHN0eWxlLmRpc3Bs
YXkoKSA9PSBUQUJMRV9ST1cpCisgICAgICAgIGlmICgoc3R5bGUuZGlzcGxheSgpID09IERpc3Bs
YXlUeXBlOjpUYWJsZUhlYWRlckdyb3VwIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlw
ZTo6VGFibGVSb3dHcm91cAorICAgICAgICAgICAgfHwgc3R5bGUuZGlzcGxheSgpID09IERpc3Bs
YXlUeXBlOjpUYWJsZUZvb3Rlckdyb3VwIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlw
ZTo6VGFibGVSb3cpCiAgICAgICAgICAgICAmJiBzdHlsZS5wb3NpdGlvbigpID09IFBvc2l0aW9u
VHlwZTo6UmVsYXRpdmUpCiAgICAgICAgICAgICBzdHlsZS5zZXRQb3NpdGlvbihQb3NpdGlvblR5
cGU6OlN0YXRpYyk7CiAKICAgICAgICAgLy8gd3JpdGluZy1tb2RlIGRvZXMgbm90IGFwcGx5IHRv
IHRhYmxlIHJvdyBncm91cHMsIHRhYmxlIGNvbHVtbiBncm91cHMsIHRhYmxlIHJvd3MsIGFuZCB0
YWJsZSBjb2x1bW5zLgogICAgICAgICAvLyBGSVhNRTogVGFibGUgY2VsbHMgc2hvdWxkIGJlIGFs
bG93ZWQgdG8gYmUgcGVycGVuZGljdWxhciBvciBmbGlwcGVkIHdpdGggcmVzcGVjdCB0byB0aGUg
dGFibGUsIHRob3VnaC4KLSAgICAgICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBUQUJMRV9DT0xV
TU4gfHwgc3R5bGUuZGlzcGxheSgpID09IFRBQkxFX0NPTFVNTl9HUk9VUCB8fCBzdHlsZS5kaXNw
bGF5KCkgPT0gVEFCTEVfRk9PVEVSX0dST1VQCi0gICAgICAgICAgICB8fCBzdHlsZS5kaXNwbGF5
KCkgPT0gVEFCTEVfSEVBREVSX0dST1VQIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBUQUJMRV9ST1cg
fHwgc3R5bGUuZGlzcGxheSgpID09IFRBQkxFX1JPV19HUk9VUAotICAgICAgICAgICAgfHwgc3R5
bGUuZGlzcGxheSgpID09IFRBQkxFX0NFTEwpCisgICAgICAgIGlmIChzdHlsZS5kaXNwbGF5KCkg
PT0gRGlzcGxheVR5cGU6OlRhYmxlQ29sdW1uIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5
VHlwZTo6VGFibGVDb2x1bW5Hcm91cCB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6
OlRhYmxlRm9vdGVyR3JvdXAKKyAgICAgICAgICAgIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNw
bGF5VHlwZTo6VGFibGVIZWFkZXJHcm91cCB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5
cGU6OlRhYmxlUm93IHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGVSb3dH
cm91cAorICAgICAgICAgICAgfHwgc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpUYWJs
ZUNlbGwpCiAgICAgICAgICAgICBzdHlsZS5zZXRXcml0aW5nTW9kZShwYXJlbnRTdHlsZS53cml0
aW5nTW9kZSgpKTsKIAogICAgICAgICAvLyBGSVhNRTogU2luY2Ugd2UgZG9uJ3Qgc3VwcG9ydCBi
bG9jay1mbG93IG9uIGZsZXhpYmxlIGJveGVzIHlldCwgZGlzYWxsb3cgc2V0dGluZwogICAgICAg
ICAvLyBvZiBibG9jay1mbG93IHRvIGFueXRoaW5nIG90aGVyIHRoYW4gVG9wVG9Cb3R0b21Xcml0
aW5nTW9kZS4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ2NDE4IC0gRmxleGlibGUgYm94IHN1cHBvcnQuCi0gICAgICAgIGlmIChzdHlsZS53cml0
aW5nTW9kZSgpICE9IFRvcFRvQm90dG9tV3JpdGluZ01vZGUgJiYgKHN0eWxlLmRpc3BsYXkoKSA9
PSBCT1ggfHwgc3R5bGUuZGlzcGxheSgpID09IElOTElORV9CT1gpKQorICAgICAgICBpZiAoc3R5
bGUud3JpdGluZ01vZGUoKSAhPSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlICYmIChzdHlsZS5kaXNw
bGF5KCkgPT0gRGlzcGxheVR5cGU6OkJveCB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5
cGU6OklubGluZUJveCkpCiAgICAgICAgICAgICBzdHlsZS5zZXRXcml0aW5nTW9kZShUb3BUb0Jv
dHRvbVdyaXRpbmdNb2RlKTsKIAogICAgICAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvY3Nz
LWRpc3BsYXkvI3RyYW5zZm9ybWF0aW9ucwpAQCAtOTc5LDggKzk3OSw4IEBAIHZvaWQgU3R5bGVS
ZXNvbHZlcjo6YWRqdXN0UmVuZGVyU3R5bGUoUmUKICAgICAgICAgICAgIGJvb2wgaXNWZXJ0aWNh
bCA9IHN0eWxlLm1hcnF1ZWVEaXJlY3Rpb24oKSA9PSBNYXJxdWVlRGlyZWN0aW9uOjpVcCB8fCBz
dHlsZS5tYXJxdWVlRGlyZWN0aW9uKCkgPT0gTWFycXVlZURpcmVjdGlvbjo6RG93bjsKICAgICAg
ICAgICAgIC8vIE1ha2UgaG9yaXpvbnRhbCBtYXJxdWVlcyBub3Qgd3JhcC4KICAgICAgICAgICAg
IGlmICghaXNWZXJ0aWNhbCkgewotICAgICAgICAgICAgICAgIHN0eWxlLnNldFdoaXRlU3BhY2Uo
Tk9XUkFQKTsKLSAgICAgICAgICAgICAgICBzdHlsZS5zZXRUZXh0QWxpZ24oVEFTVEFSVCk7Cisg
ICAgICAgICAgICAgICAgc3R5bGUuc2V0V2hpdGVTcGFjZShXaGl0ZVNwYWNlOjpOb1dyYXApOwor
ICAgICAgICAgICAgICAgIHN0eWxlLnNldFRleHRBbGlnbihUZXh0QWxpZ25Nb2RlOjpTdGFydCk7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBBcHBhcmVudGx5IHRoaXMgaXMgdGhlIGV4
cGVjdGVkIGxlZ2FjeSBiZWhhdmlvci4KICAgICAgICAgICAgIGlmIChpc1ZlcnRpY2FsICYmIHN0
eWxlLmhlaWdodCgpLmlzQXV0bygpKQpAQCAtMTAxMCw4ICsxMDEwLDggQEAgdm9pZCBTdHlsZVJl
c29sdmVyOjphZGp1c3RSZW5kZXJTdHlsZShSZQogCiAgICAgLy8gVGFibGUgcm93cywgc2VjdGlv
bnMgYW5kIHRoZSB0YWJsZSBpdHNlbGYgd2lsbCBzdXBwb3J0IG92ZXJmbG93OmhpZGRlbiBhbmQg
d2lsbCBpZ25vcmUgc2Nyb2xsL2F1dG8uCiAgICAgLy8gRklYTUU6IEV2ZW50dWFsbHkgdGFibGUg
c2VjdGlvbnMgd2lsbCBzdXBwb3J0IGF1dG8gYW5kIHNjcm9sbC4KLSAgICBpZiAoc3R5bGUuZGlz
cGxheSgpID09IFRBQkxFIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBJTkxJTkVfVEFCTEUKLSAgICAg
ICAgfHwgc3R5bGUuZGlzcGxheSgpID09IFRBQkxFX1JPV19HUk9VUCB8fCBzdHlsZS5kaXNwbGF5
KCkgPT0gVEFCTEVfUk9XKSB7CisgICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlw
ZTo6VGFibGUgfHwgc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpJbmxpbmVUYWJsZQor
ICAgICAgICB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxlUm93R3JvdXAg
fHwgc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpUYWJsZVJvdykgewogICAgICAgICBp
ZiAoc3R5bGUub3ZlcmZsb3dYKCkgIT0gT3ZlcmZsb3c6OlZpc2libGUgJiYgc3R5bGUub3ZlcmZs
b3dYKCkgIT0gT3ZlcmZsb3c6OkhpZGRlbikKICAgICAgICAgICAgIHN0eWxlLnNldE92ZXJmbG93
WChPdmVyZmxvdzo6VmlzaWJsZSk7CiAgICAgICAgIGlmIChzdHlsZS5vdmVyZmxvd1koKSAhPSBP
dmVyZmxvdzo6VmlzaWJsZSAmJiBzdHlsZS5vdmVyZmxvd1koKSAhPSBPdmVyZmxvdzo6SGlkZGVu
KQpAQCAtMTA1Miw3ICsxMDUyLDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphZGp1c3RSZW5kZXJT
dHlsZShSZQogICAgICAgICBSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkuYWRqdXN0U3R5bGUoKnRo
aXMsIHN0eWxlLCBlbGVtZW50LCBtX3N0YXRlLmhhc1VBQXBwZWFyYW5jZSgpLCBtX3N0YXRlLmJv
cmRlckRhdGEoKSwgbV9zdGF0ZS5iYWNrZ3JvdW5kRGF0YSgpLCBtX3N0YXRlLmJhY2tncm91bmRD
b2xvcigpKTsKIAogICAgIC8vIElmIHdlIGhhdmUgZmlyc3QtbGV0dGVyIHBzZXVkbyBzdHlsZSwg
ZG8gbm90IHNoYXJlIHRoaXMgc3R5bGUuCi0gICAgaWYgKHN0eWxlLmhhc1BzZXVkb1N0eWxlKEZJ
UlNUX0xFVFRFUikpCisgICAgaWYgKHN0eWxlLmhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkOjpGaXJz
dExldHRlcikpCiAgICAgICAgIHN0eWxlLnNldFVuaXF1ZSgpOwogCiAgICAgLy8gRklYTUU6IHdo
ZW4gZHJvcHBpbmcgdGhlIC13ZWJraXQgcHJlZml4IG9uIHRyYW5zZm9ybS1zdHlsZSwgd2Ugc2hv
dWxkIGFsc28gaGF2ZSBvcGFjaXR5IDwgMSBjYXVzZSBmbGF0dGVuaW5nLgpAQCAtMTExMiw3ICsx
MTEyLDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjp1cGRhdGVGb250KCkKIAogVmVjdG9yPFJlZlB0
cjxTdHlsZVJ1bGU+PiBTdHlsZVJlc29sdmVyOjpzdHlsZVJ1bGVzRm9yRWxlbWVudChjb25zdCBF
bGVtZW50KiBlbGVtZW50LCB1bnNpZ25lZCBydWxlc1RvSW5jbHVkZSkKIHsKLSAgICByZXR1cm4g
cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgTk9QU0VVRE8sIHJ1bGVzVG9JbmNs
dWRlKTsKKyAgICByZXR1cm4gcHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgUHNl
dWRvSWQ6Ok5vbmUsIHJ1bGVzVG9JbmNsdWRlKTsKIH0KIAogVmVjdG9yPFJlZlB0cjxTdHlsZVJ1
bGU+PiBTdHlsZVJlc29sdmVyOjpwc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChjb25zdCBFbGVt
ZW50KiBlbGVtZW50LCBQc2V1ZG9JZCBwc2V1ZG9JZCwgdW5zaWduZWQgcnVsZXNUb0luY2x1ZGUp
CkBAIC0xMjc5LDcgKzEyNzksNyBAQCBzdGF0aWMgYm9vbCBpc0NhY2hlYWJsZUluTWF0Y2hlZFBy
b3BlcnRpCiAgICAgaWYgKCZlbGVtZW50ID09IGVsZW1lbnQuZG9jdW1lbnQoKS5kb2N1bWVudEVs
ZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIC8vIGNvbnRlbnQ6YXR0cigpIHZh
bHVlIGRlcGVuZHMgb24gdGhlIGVsZW1lbnQgaXQgaXMgYmVpbmcgYXBwbGllZCB0by4KLSAgICBp
ZiAoc3R5bGUtPmhhc0F0dHJDb250ZW50KCkgfHwgKHN0eWxlLT5zdHlsZVR5cGUoKSAhPSBOT1BT
RVVETyAmJiBwYXJlbnRTdHlsZS0+aGFzQXR0ckNvbnRlbnQoKSkpCisgICAgaWYgKHN0eWxlLT5o
YXNBdHRyQ29udGVudCgpIHx8IChzdHlsZS0+c3R5bGVUeXBlKCkgIT0gUHNldWRvSWQ6Ok5vbmUg
JiYgcGFyZW50U3R5bGUtPmhhc0F0dHJDb250ZW50KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaWYgKHN0eWxlLT5oYXNBcHBlYXJhbmNlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTEzMzksNyArMTMzOSw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJv
cGVydGkKICAgICAgICAgLy8gZWxlbWVudCBjb250ZXh0LiBUaGlzIGlzIGZhc3QgYW5kIHNhdmVz
IG1lbW9yeSBieSByZXVzaW5nIHRoZSBzdHlsZSBkYXRhIHN0cnVjdHVyZXMuCiAgICAgICAgIHN0
YXRlLnN0eWxlKCktPmNvcHlOb25Jbmhlcml0ZWRGcm9tKCpjYWNoZUl0ZW0tPnJlbmRlclN0eWxl
KTsKICAgICAgICAgaWYgKHN0YXRlLnBhcmVudFN0eWxlKCktPmluaGVyaXRlZERhdGFTaGFyZWQo
Y2FjaGVJdGVtLT5wYXJlbnRSZW5kZXJTdHlsZS5nZXQoKSkgJiYgIWlzQXRTaGFkb3dCb3VuZGFy
eShlbGVtZW50KSkgewotICAgICAgICAgICAgRUluc2lkZUxpbmsgbGlua1N0YXR1cyA9IHN0YXRl
LnN0eWxlKCktPmluc2lkZUxpbmsoKTsKKyAgICAgICAgICAgIEluc2lkZUxpbmsgbGlua1N0YXR1
cyA9IHN0YXRlLnN0eWxlKCktPmluc2lkZUxpbmsoKTsKICAgICAgICAgICAgIC8vIElmIHRoZSBj
YWNoZSBpdGVtIHBhcmVudCBzdHlsZSBoYXMgaWRlbnRpY2FsIGluaGVyaXRlZCBwcm9wZXJ0aWVz
IHRvIHRoZSBjdXJyZW50IHBhcmVudCBzdHlsZSB0aGVuIHRoZQogICAgICAgICAgICAgLy8gcmVz
dWx0aW5nIHN0eWxlIHdpbGwgYmUgaWRlbnRpY2FsIHRvby4gV2UgY29weSB0aGUgaW5oZXJpdGVk
IHByb3BlcnRpZXMgb3ZlciBmcm9tIHRoZSBjYWNoZSBhbmQgYXJlIGRvbmUuCiAgICAgICAgICAg
ICBzdGF0ZS5zdHlsZSgpLT5pbmhlcml0RnJvbSgqY2FjaGVJdGVtLT5yZW5kZXJTdHlsZSk7CkBA
IC0yMjM3LDcgKzIyMzcsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGll
czo6CiAgICAgICAgIHJlc29sdmVyLmFwcGx5UHJvcGVydHkoaWQsIGNzc1ZhbHVlW1NlbGVjdG9y
Q2hlY2tlcjo6TWF0Y2hEZWZhdWx0XSwgU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHQsIG1h
dGNoUmVzdWx0KTsKICAgICB9CiAKLSAgICBpZiAoc3RhdGUuc3R5bGUoKS0+aW5zaWRlTGluaygp
ID09IE5vdEluc2lkZUxpbmspCisgICAgaWYgKHN0YXRlLnN0eWxlKCktPmluc2lkZUxpbmsoKSA9
PSBJbnNpZGVMaW5rOjpOb3RJbnNpZGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChjc3NW
YWx1ZVtTZWxlY3RvckNoZWNrZXI6Ok1hdGNoTGlua10pIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuaAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzU3LDcgKzM1Nyw3IEBAIHB1YmxpYzoK
ICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKCkgY29uc3QgeyByZXR1cm4g
bV9wYXJlbnRTdHlsZTsgfQogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSogcm9vdEVsZW1lbnRT
dHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdEVsZW1lbnRTdHlsZTsgfQogCi0gICAgICAgIEVJ
bnNpZGVMaW5rIGVsZW1lbnRMaW5rU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRMaW5r
U3RhdGU7IH0KKyAgICAgICAgSW5zaWRlTGluayBlbGVtZW50TGlua1N0YXRlKCkgY29uc3QgeyBy
ZXR1cm4gbV9lbGVtZW50TGlua1N0YXRlOyB9CiAKICAgICAgICAgdm9pZCBzZXRBcHBseVByb3Bl
cnR5VG9SZWd1bGFyU3R5bGUoYm9vbCBpc0FwcGx5KSB7IG1fYXBwbHlQcm9wZXJ0eVRvUmVndWxh
clN0eWxlID0gaXNBcHBseTsgfQogICAgICAgICB2b2lkIHNldEFwcGx5UHJvcGVydHlUb1Zpc2l0
ZWRMaW5rU3R5bGUoYm9vbCBpc0FwcGx5KSB7IG1fYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtT
dHlsZSA9IGlzQXBwbHk7IH0KQEAgLTQwOSw3ICs0MDksNyBAQCBwdWJsaWM6CiAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gbV9vd25lZFBhcmVudFN0eWxlOwogICAgICAgICBj
b25zdCBSZW5kZXJTdHlsZSogbV9yb290RWxlbWVudFN0eWxlIHsgbnVsbHB0ciB9OwogCi0gICAg
ICAgIEVJbnNpZGVMaW5rIG1fZWxlbWVudExpbmtTdGF0ZSB7IE5vdEluc2lkZUxpbmsgfTsKKyAg
ICAgICAgSW5zaWRlTGluayBtX2VsZW1lbnRMaW5rU3RhdGUgeyBJbnNpZGVMaW5rOjpOb3RJbnNp
ZGUgfTsKIAogICAgICAgICBib29sIG1fYXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlIHsgdHJ1
ZSB9OwogICAgICAgICBib29sIG1fYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSB7IGZh
bHNlIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3Bw
CShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21w
aWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2MCw3ICs5NjAsNyBAQCBzdGF0aWMgRnVuY3Rp
b25UeXBlIGNvbnN0cnVjdEZyYWdtZW50c0luCiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9y
OjpQc2V1ZG9FbGVtZW50VW5rbm93bjoKICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gRnVuY3Rpb25UeXBlOjpDYW5ub3RNYXRjaEFu
eXRoaW5nOwotICAgICAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgUkVTSVpFUiwgU0VMRUNUSU9O
IGV0Yy4KKyAgICAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IFBzZXVkb0lkOjpSZXNpemVyLCBQ
c2V1ZG9JZDo6U2VsZWN0aW9uIGV0Yy4KICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICAgICAgLy8gVGhpcyBicmFuY2ggaW5jbHVkZXMgY3VzdG9tIHBzZXVkbyBlbGVtZW50cy4KICAg
ICAgICAgICAgICAgICByZXR1cm4gRnVuY3Rpb25UeXBlOjpDYW5ub3RDb21waWxlOwpAQCAtMzc2
MiwxNCArMzc2MiwxNCBAQCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVSZXF1
CiAgICAgQVNTRVJUKG1fc2VsZWN0b3JDb250ZXh0ICE9IFNlbGVjdG9yQ29udGV4dDo6UXVlcnlT
ZWxlY3Rvcik7CiAKICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgcmVxdWVzdGVkIHBzZXVkb0lk
IGVxdWFscyB0byB0aGUgcHNldWRvIGVsZW1lbnQgb2YgdGhlIHJpZ2h0bW9zdCBmcmFnbWVudC4K
LSAgICAvLyBJZiB0aGUgcmlnaHRtb3N0IGZyYWdtZW50IGRvZXNuJ3QgaGF2ZSBhIHBzZXVkbyBl
bGVtZW50LCB0aGUgcmVxdWVzdGVkIHBzZXVkb0lkIG5lZWQgdG8gYmUgTk9QU0VVRE8gdG8gc3Vj
Y2VlZCB0aGUgbWF0Y2hpbmcuCi0gICAgLy8gT3RoZXJ3aXNlLCBpZiB0aGUgcmVxdWVzdGVkIHBz
ZXVkb0lkIGlzIG5vdCBOT1BTRVVETywgdGhlIHJlcXVlc3RlZCBwc2V1ZG9JZCBuZWVkIHRvIGVx
dWFsIHRvIHRoZSBwc2V1ZG8gZWxlbWVudCBvZiB0aGUgcmlnaHRtb3N0IGZyYWdtZW50LgorICAg
IC8vIElmIHRoZSByaWdodG1vc3QgZnJhZ21lbnQgZG9lc24ndCBoYXZlIGEgcHNldWRvIGVsZW1l
bnQsIHRoZSByZXF1ZXN0ZWQgcHNldWRvSWQgbmVlZCB0byBiZSBQc2V1ZG9JZDo6Tm9uZSB0byBz
dWNjZWVkIHRoZSBtYXRjaGluZy4KKyAgICAvLyBPdGhlcndpc2UsIGlmIHRoZSByZXF1ZXN0ZWQg
cHNldWRvSWQgaXMgbm90IFBzZXVkb0lkOjpOb25lLCB0aGUgcmVxdWVzdGVkIHBzZXVkb0lkIG5l
ZWQgdG8gZXF1YWwgdG8gdGhlIHBzZXVkbyBlbGVtZW50IG9mIHRoZSByaWdodG1vc3QgZnJhZ21l
bnQuCiAgICAgaWYgKGZyYWdtZW50TWF0Y2hlc1RoZVJpZ2h0bW9zdEVsZW1lbnQoZnJhZ21lbnQp
KSB7CiAgICAgICAgIGlmICghZnJhZ21lbnQucHNldWRvRWxlbWVudFNlbGVjdG9yKQotICAgICAg
ICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChtX2Fzc2VtYmxlci5icmFuY2g4KEFzc2VtYmxlcjo6
Tm90RXF1YWwsIEFzc2VtYmxlcjo6QWRkcmVzcyhjaGVja2luZ0NvbnRleHQsIE9CSkVDVF9PRkZT
RVRPRihTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5nQ29udGV4dCwgcHNldWRvSWQpKSwgQXNzZW1i
bGVyOjpUcnVzdGVkSW1tMzIoTk9QU0VVRE8pKSk7CisgICAgICAgICAgICBmYWlsdXJlQ2FzZXMu
YXBwZW5kKG1fYXNzZW1ibGVyLmJyYW5jaDgoQXNzZW1ibGVyOjpOb3RFcXVhbCwgQXNzZW1ibGVy
OjpBZGRyZXNzKGNoZWNraW5nQ29udGV4dCwgT0JKRUNUX09GRlNFVE9GKFNlbGVjdG9yQ2hlY2tl
cjo6Q2hlY2tpbmdDb250ZXh0LCBwc2V1ZG9JZCkpLCBBc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHNldWRvSWQ6Ok5vbmUpKSkpOwogICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIEFzc2VtYmxlcjo6SnVtcCBza2lwID0gbV9hc3NlbWJsZXIuYnJhbmNoOChB
c3NlbWJsZXI6OkVxdWFsLCBBc3NlbWJsZXI6OkFkZHJlc3MoY2hlY2tpbmdDb250ZXh0LCBPQkpF
Q1RfT0ZGU0VUT0YoU2VsZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRleHQsIHBzZXVkb0lkKSks
IEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE5PUFNFVURPKSk7Ci0gICAgICAgICAgICBmYWlsdXJl
Q2FzZXMuYXBwZW5kKG1fYXNzZW1ibGVyLmJyYW5jaDgoQXNzZW1ibGVyOjpOb3RFcXVhbCwgQXNz
ZW1ibGVyOjpBZGRyZXNzKGNoZWNraW5nQ29udGV4dCwgT0JKRUNUX09GRlNFVE9GKFNlbGVjdG9y
Q2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0LCBwc2V1ZG9JZCkpLCBBc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMihDU1NTZWxlY3Rvcjo6cHNldWRvSWQoZnJhZ21lbnQucHNldWRvRWxlbWVudFNlbGVjdG9y
LT5wc2V1ZG9FbGVtZW50VHlwZSgpKSkpKTsKKyAgICAgICAgICAgIEFzc2VtYmxlcjo6SnVtcCBz
a2lwID0gbV9hc3NlbWJsZXIuYnJhbmNoOChBc3NlbWJsZXI6OkVxdWFsLCBBc3NlbWJsZXI6OkFk
ZHJlc3MoY2hlY2tpbmdDb250ZXh0LCBPQkpFQ1RfT0ZGU0VUT0YoU2VsZWN0b3JDaGVja2VyOjpD
aGVja2luZ0NvbnRleHQsIHBzZXVkb0lkKSksIEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQc2V1ZG9JZDo6Tm9uZSkpKTsKKyAgICAgICAgICAgIGZhaWx1cmVD
YXNlcy5hcHBlbmQobV9hc3NlbWJsZXIuYnJhbmNoOChBc3NlbWJsZXI6Ok5vdEVxdWFsLCBBc3Nl
bWJsZXI6OkFkZHJlc3MoY2hlY2tpbmdDb250ZXh0LCBPQkpFQ1RfT0ZGU0VUT0YoU2VsZWN0b3JD
aGVja2VyOjpDaGVja2luZ0NvbnRleHQsIHBzZXVkb0lkKSksIEFzc2VtYmxlcjo6VHJ1c3RlZElt
bTMyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NTZWxlY3Rvcjo6cHNldWRvSWQoZnJhZ21lbnQu
cHNldWRvRWxlbWVudFNlbGVjdG9yLT5wc2V1ZG9FbGVtZW50VHlwZSgpKSkpKSk7CiAgICAgICAg
ICAgICBza2lwLmxpbmsoJm1fYXNzZW1ibGVyKTsKICAgICAgICAgfQogICAgIH0KQEAgLTM4NTIs
MTUgKzM4NTIsMTUgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlTWFyawog
CiAgICAgQXNzZW1ibGVyOjpKdW1wTGlzdCBzdWNjZXNzQ2FzZXM7CiAKLSAgICAvLyBXaGVuIHRo
ZSByZXF1ZXN0ZWQgcHNldWRvSWQgaXNuJ3QgTk9QU0VVRE8sIHRoZXJlJ3Mgbm8gbmVlZCB0byBt
YXJrIHRoZSBwc2V1ZG8gZWxlbWVudCBzdHlsZS4KLSAgICBzdWNjZXNzQ2FzZXMuYXBwZW5kKG1f
YXNzZW1ibGVyLmJyYW5jaDgoQXNzZW1ibGVyOjpOb3RFcXVhbCwgQXNzZW1ibGVyOjpBZGRyZXNz
KGNoZWNraW5nQ29udGV4dCwgT0JKRUNUX09GRlNFVE9GKFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tp
bmdDb250ZXh0LCBwc2V1ZG9JZCkpLCBBc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihOT1BTRVVETykp
KTsKKyAgICAvLyBXaGVuIHRoZSByZXF1ZXN0ZWQgcHNldWRvSWQgaXNuJ3QgUHNldWRvSWQ6Ok5v
bmUsIHRoZXJlJ3Mgbm8gbmVlZCB0byBtYXJrIHRoZSBwc2V1ZG8gZWxlbWVudCBzdHlsZS4KKyAg
ICBzdWNjZXNzQ2FzZXMuYXBwZW5kKG1fYXNzZW1ibGVyLmJyYW5jaDgoQXNzZW1ibGVyOjpOb3RF
cXVhbCwgQXNzZW1ibGVyOjpBZGRyZXNzKGNoZWNraW5nQ29udGV4dCwgT0JKRUNUX09GRlNFVE9G
KFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0LCBwc2V1ZG9JZCkpLCBBc3NlbWJsZXI6
OlRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHNldWRvSWQ6Ok5vbmUpKSkpOwog
CiAgICAgLy8gV2hlbiByZXNvbHZpbmcgbW9kZSBpcyBDb2xsZWN0aW5nUnVsZXNJZ25vcmluZ1Zp
cnR1YWxQc2V1ZG9FbGVtZW50cywgdGhlcmUncyBubyBuZWVkIHRvIG1hcmsgdGhlIHBzZXVkbyBl
bGVtZW50IHN0eWxlLgogICAgIHN1Y2Nlc3NDYXNlcy5hcHBlbmQoYnJhbmNoT25SZXNvbHZpbmdN
b2RlV2l0aENoZWNraW5nQ29udGV4dChBc3NlbWJsZXI6OkVxdWFsLCBTZWxlY3RvckNoZWNrZXI6
Ok1vZGU6OkNvbGxlY3RpbmdSdWxlc0lnbm9yaW5nVmlydHVhbFBzZXVkb0VsZW1lbnRzLCBjaGVj
a2luZ0NvbnRleHQpKTsKIAogICAgIC8vIFdoZW4gcmVzb2x2aW5nIG1vZGUgaXMgUmVzb2x2aW5n
U3R5bGUsIG1hcmsgdGhlIHBzZXVkbyBzdHlsZSBmb3IgcHNldWRvIGVsZW1lbnQuCiAgICAgUHNl
dWRvSWQgZHluYW1pY1BzZXVkbyA9IENTU1NlbGVjdG9yOjpwc2V1ZG9JZChmcmFnbWVudC5wc2V1
ZG9FbGVtZW50U2VsZWN0b3ItPnBzZXVkb0VsZW1lbnRUeXBlKCkpOwotICAgIGlmIChkeW5hbWlj
UHNldWRvIDwgRklSU1RfSU5URVJOQUxfUFNFVURPSUQpIHsKKyAgICBpZiAoZHluYW1pY1BzZXVk
byA8IFBzZXVkb0lkOjpGaXJzdEludGVybmFsUHNldWRvSWQpIHsKICAgICAgICAgZmFpbHVyZUNh
c2VzLmFwcGVuZChicmFuY2hPblJlc29sdmluZ01vZGVXaXRoQ2hlY2tpbmdDb250ZXh0KEFzc2Vt
Ymxlcjo6Tm90RXF1YWwsIFNlbGVjdG9yQ2hlY2tlcjo6TW9kZTo6UmVzb2x2aW5nU3R5bGUsIGNo
ZWNraW5nQ29udGV4dCkpOwogCiAgICAgICAgIEFzc2VtYmxlcjo6QWRkcmVzcyBwc2V1ZG9JRFNl
dEFkZHJlc3MoY2hlY2tpbmdDb250ZXh0LCBPQkpFQ1RfT0ZGU0VUT0YoU2VsZWN0b3JDaGVja2Vy
OjpDaGVja2luZ0NvbnRleHQsIHBzZXVkb0lEU2V0KSk7CkBAIC0zODcwLDcgKzM4NzAsNyBAQCB2
b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVNYXJrCiAgICAgfQogCiAgICAgLy8g
V2UgaGF2ZSBhIHBzZXVkb0VsZW1lbnRTZWxlY3Rvciwgd2UgYXJlIG5vdCBpbiBDb2xsZWN0aW5n
UnVsZXNJZ25vcmluZ1ZpcnR1YWxQc2V1ZG9FbGVtZW50cyBzbwotICAgIC8vIHdlIG11c3QgbWF0
Y2ggdGhhdCBwc2V1ZG8gZWxlbWVudC4gU2luY2UgdGhlIGNvbnRleHQncyBwc2V1ZG8gc2VsZWN0
b3IgaXMgTk9QU0VVRE8sIHdlIGZhaWwgbWF0Y2hpbmcKKyAgICAvLyB3ZSBtdXN0IG1hdGNoIHRo
YXQgcHNldWRvIGVsZW1lbnQuIFNpbmNlIHRoZSBjb250ZXh0J3MgcHNldWRvIHNlbGVjdG9yIGlz
IFBzZXVkb0lkOjpOb25lLCB3ZSBmYWlsIG1hdGNoaW5nCiAgICAgLy8gYWZ0ZXIgdGhlIG1hcmtp
bmcuCiAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChtX2Fzc2VtYmxlci5qdW1wKCkpOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMDYsOCArMjAwNiw4IEBA
IHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmcKIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gRG9jdW1lbnQ6OnN0eWxlRm9yRWxlbWVudElnbm9yaW5nUGVuZGluZ1N0
eWxlc2hlZXRzKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHls
ZSwgUHNldWRvSWQgcHNldWRvRWxlbWVudFNwZWNpZmllcikKIHsKICAgICBBU1NFUlQoJmVsZW1l
bnQuZG9jdW1lbnQoKSA9PSB0aGlzKTsKLSAgICBBU1NFUlQoIWVsZW1lbnQuaXNQc2V1ZG9FbGVt
ZW50KCkgfHwgIXBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpOwotICAgIEFTU0VSVCghcHNldWRvRWxl
bWVudFNwZWNpZmllciB8fCBwYXJlbnRTdHlsZSk7CisgICAgQVNTRVJUKCFlbGVtZW50LmlzUHNl
dWRvRWxlbWVudCgpIHx8IHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIgPT0gUHNldWRvSWQ6Ok5vbmUp
OworICAgIEFTU0VSVChwc2V1ZG9FbGVtZW50U3BlY2lmaWVyID09IFBzZXVkb0lkOjpOb25lIHx8
IHBhcmVudFN0eWxlKTsKIAogICAgIC8vIE9uIGlPUyByZXF1ZXN0IGRlbGVnYXRlcyBjYWxsZWQg
ZHVyaW5nIHN0eWxlRm9yRWxlbWVudCBtYXkgcmVzdWx0IGluIHJlLWVudGVyaW5nIFdlYktpdCBh
bmQga2lsbGluZyB0aGUgc3R5bGUgcmVzb2x2ZXIuCiAgICAgU3R5bGU6OlBvc3RSZXNvbHV0aW9u
Q2FsbGJhY2tEaXNhYmxlciBkaXNhYmxlcigqdGhpcyk7CkBAIC0yMDE1LDcgKzIwMTUsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IERvY3VtZW50OjpzCiAgICAgU2V0Rm9yU2NvcGU8
Ym9vbD4gY2hhbmdlKG1faWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzLCB0cnVlKTsKICAgICBhdXRv
JiByZXNvbHZlciA9IGVsZW1lbnQuc3R5bGVSZXNvbHZlcigpOwogCi0gICAgaWYgKHBzZXVkb0Vs
ZW1lbnRTcGVjaWZpZXIpCisgICAgaWYgKHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIgIT0gUHNldWRv
SWQ6Ok5vbmUpCiAgICAgICAgIHJldHVybiByZXNvbHZlci5wc2V1ZG9TdHlsZUZvckVsZW1lbnQo
ZWxlbWVudCwgUHNldWRvU3R5bGVSZXF1ZXN0KHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpLCAqcGFy
ZW50U3R5bGUpOwogCiAgICAgYXV0byBlbGVtZW50U3R5bGUgPSByZXNvbHZlci5zdHlsZUZvckVs
ZW1lbnQoZWxlbWVudCwgcGFyZW50U3R5bGUpOwpAQCAtMjEzMyw3ICsyMTMzLDcgQEAgYm9vbCBE
b2N1bWVudDo6aXNQYWdlQm94VmlzaWJsZShpbnQgcGFnZQogewogICAgIHVwZGF0ZVN0eWxlSWZO
ZWVkZWQoKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHBhZ2VTdHlsZShzdHls
ZVNjb3BlKCkucmVzb2x2ZXIoKS5zdHlsZUZvclBhZ2UocGFnZUluZGV4KSk7Ci0gICAgcmV0dXJu
IHBhZ2VTdHlsZS0+dmlzaWJpbGl0eSgpICE9IEhJRERFTjsgLy8gZGlzcGxheSBwcm9wZXJ0eSBk
b2Vzbid0IGFwcGx5IHRvIEBwYWdlLgorICAgIHJldHVybiBwYWdlU3R5bGUtPnZpc2liaWxpdHko
KSAhPSBWaXNpYmlsaXR5OjpIaWRkZW47IC8vIGRpc3BsYXkgcHJvcGVydHkgZG9lc24ndCBhcHBs
eSB0byBAcGFnZS4KIH0KIAogdm9pZCBEb2N1bWVudDo6cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhl
bHMoaW50IHBhZ2VJbmRleCwgSW50U2l6ZSYgcGFnZVNpemUsIGludCYgbWFyZ2luVG9wLCBpbnQm
IG1hcmdpblJpZ2h0LCBpbnQmIG1hcmdpbkJvdHRvbSwgaW50JiBtYXJnaW5MZWZ0KQpAQCAtMjU2
Niw3ICsyNTY2LDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0VmlzdWFsbHlPcmRlcmVkKCkKIHsKICAg
ICBtX3Zpc3VhbGx5T3JkZXJlZCA9IHRydWU7CiAgICAgaWYgKHJlbmRlclZpZXcoKSkKLSAgICAg
ICAgcmVuZGVyVmlldygpLT5tdXRhYmxlU3R5bGUoKS5zZXRSVExPcmRlcmluZyhWaXN1YWxPcmRl
cik7CisgICAgICAgIHJlbmRlclZpZXcoKS0+bXV0YWJsZVN0eWxlKCkuc2V0UlRMT3JkZXJpbmco
T3JkZXI6OlZpc3VhbCk7CiB9CiAKIFJlZjxEb2N1bWVudFBhcnNlcj4gRG9jdW1lbnQ6OmNyZWF0
ZVBhcnNlcigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gMjMyMTQzKQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU3OSw3ICs1
NzksNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUxh
eW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyhSdW5Qb3N0TGF5b3V0VGFza3MgPSBSdW5Qb3N0
TGF5b3V0VGFza3M6OkFzeW5jaHJvbm91c2x5KTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gc3R5bGVGb3JFbGVtZW50SWdub3JpbmdQZW5kaW5nU3R5bGVzaGVldHMoRWxlbWVu
dCYsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgUHNldWRvSWQgPSBOT1BTRVVETyk7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZUZvckVsZW1lbnRJZ25vcmlu
Z1BlbmRpbmdTdHlsZXNoZWV0cyhFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0
eWxlLCBQc2V1ZG9JZCA9IFBzZXVkb0lkOjpOb25lKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBp
ZiBwYWdlIGJveCAobWFyZ2luIGJveGVzIGFuZCBwYWdlIGJvcmRlcnMpIGlzIHZpc2libGUuCiAg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1BhZ2VCb3hWaXNpYmxlKGludCBwYWdlSW5kZXgpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjIsMTIgKzUyMiwxMiBA
QCBib29sIEVsZW1lbnQ6OmlzRm9jdXNhYmxlKCkgY29uc3QKICAgICAgICAgLy8gRWxlbWVudHMg
aW4gY2FudmFzIGZhbGxiYWNrIGNvbnRlbnQgYXJlIG5vdCByZW5kZXJlZCwgYnV0IHRoZXkgYXJl
IGFsbG93ZWQgdG8gYmUKICAgICAgICAgLy8gZm9jdXNhYmxlIGFzIGxvbmcgYXMgdGhlaXIgY2Fu
dmFzIGlzIGRpc3BsYXllZCBhbmQgdmlzaWJsZS4KICAgICAgICAgaWYgKGF1dG8qIGNhbnZhcyA9
IGFuY2VzdG9yc09mVHlwZTxIVE1MQ2FudmFzRWxlbWVudD4oKnRoaXMpLmZpcnN0KCkpCi0gICAg
ICAgICAgICByZXR1cm4gY2FudmFzLT5yZW5kZXJlcigpICYmIGNhbnZhcy0+cmVuZGVyZXIoKS0+
c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRTsKKyAgICAgICAgICAgIHJldHVybiBjYW52
YXMtPnJlbmRlcmVyKCkgJiYgY2FudmFzLT5yZW5kZXJlcigpLT5zdHlsZSgpLnZpc2liaWxpdHko
KSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBFdmVuIGlm
IHdlIGFyZSBub3QgdmlzaWJsZSwgd2UgbWlnaHQgaGF2ZSBhIGNoaWxkIHRoYXQgaXMgdmlzaWJs
ZS4KICAgICAvLyBIeWF0dCB3YW50cyB0byBmaXggdGhhdCBzb21lIGRheSB3aXRoIGEgImhhcyB2
aXNpYmxlIGNvbnRlbnQiIGZsYWcgb3IgdGhlIGxpa2UuCi0gICAgaWYgKCFyZW5kZXJlcigpIHx8
IHJlbmRlcmVyKCktPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKCFy
ZW5kZXJlcigpIHx8IHJlbmRlcmVyKCktPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxp
dHk6OlZpc2libGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0cnVlOwpA
QCAtMTU0OCwxMiArMTU0OCwxMiBAQCBib29sIEVsZW1lbnQ6Omhhc0Rpc3BsYXlDb250ZW50cygp
IGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNvbnN0IFJlbmRlclN0eWxlKiBz
dHlsZSA9IGVsZW1lbnRSYXJlRGF0YSgpLT5jb21wdXRlZFN0eWxlKCk7Ci0gICAgcmV0dXJuIHN0
eWxlICYmIHN0eWxlLT5kaXNwbGF5KCkgPT0gQ09OVEVOVFM7CisgICAgcmV0dXJuIHN0eWxlICYm
IHN0eWxlLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OkNvbnRlbnRzOwogfQogCiB2b2lkIEVs
ZW1lbnQ6OnN0b3JlRGlzcGxheUNvbnRlbnRzU3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBzdHlsZSkKIHsKLSAgICBBU1NFUlQoc3R5bGUgJiYgc3R5bGUtPmRpc3BsYXkoKSA9PSBD
T05URU5UUyk7CisgICAgQVNTRVJUKHN0eWxlICYmIHN0eWxlLT5kaXNwbGF5KCkgPT0gRGlzcGxh
eVR5cGU6OkNvbnRlbnRzKTsKICAgICBBU1NFUlQoIXJlbmRlcmVyKCkgfHwgaXNQc2V1ZG9FbGVt
ZW50KCkpOwogICAgIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLnNldENvbXB1dGVkU3R5bGUoV1RG
TW92ZShzdHlsZSkpOwogfQpAQCAtMTY2OSw3ICsxNjY5LDcgQEAgY29uc3QgQXRvbWljU3RyaW5n
JiBFbGVtZW50OjppbWFnZVNvdXJjZQogCiBib29sIEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQo
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewotICAgIHJldHVybiBzdHlsZS5kaXNwbGF5KCkg
IT0gTk9ORSAmJiBzdHlsZS5kaXNwbGF5KCkgIT0gQ09OVEVOVFM7CisgICAgcmV0dXJuIHN0eWxl
LmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Tm9uZSAmJiBzdHlsZS5kaXNwbGF5KCkgIT0gRGlz
cGxheVR5cGU6OkNvbnRlbnRzOwogfQogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gRWxlbWVu
dDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYpCkBAIC0yNzIyLDkgKzI3MjIsOSBAQCB2b2lkIEVsZW1lbnQ6OndpbGxC
ZWNvbWVGdWxsc2NyZWVuRWxlbWVuCiBzdGF0aWMgUHNldWRvRWxlbWVudCogYmVmb3JlT3JBZnRl
clBzZXVkb0VsZW1lbnQoRWxlbWVudCYgaG9zdCwgUHNldWRvSWQgcHNldWRvRWxlbWVudFNwZWNp
ZmllcikKIHsKICAgICBzd2l0Y2ggKHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpIHsKLSAgICBjYXNl
IEJFRk9SRToKKyAgICBjYXNlIFBzZXVkb0lkOjpCZWZvcmU6CiAgICAgICAgIHJldHVybiBob3N0
LmJlZm9yZVBzZXVkb0VsZW1lbnQoKTsKLSAgICBjYXNlIEFGVEVSOgorICAgIGNhc2UgUHNldWRv
SWQ6OkFmdGVyOgogICAgICAgICByZXR1cm4gaG9zdC5hZnRlclBzZXVkb0VsZW1lbnQoKTsKICAg
ICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI4MDIsNyArMjgwMiw3IEBA
IGNvbnN0IFJlbmRlclN0eWxlKiBFbGVtZW50Ojpjb21wdXRlZFN0eWwKICAgICBpZiAoIXN0eWxl
KQogICAgICAgICBzdHlsZSA9ICZyZXNvbHZlQ29tcHV0ZWRTdHlsZSgpOwogCi0gICAgaWYgKHBz
ZXVkb0VsZW1lbnRTcGVjaWZpZXIpIHsKKyAgICBpZiAocHNldWRvRWxlbWVudFNwZWNpZmllciAh
PSBQc2V1ZG9JZDo6Tm9uZSkgewogICAgICAgICBpZiAoYXV0byogY2FjaGVkUHNldWRvU3R5bGUg
PSBzdHlsZS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUocHNldWRvRWxlbWVudFNwZWNpZmllcikpCiAg
ICAgICAgICAgICByZXR1cm4gY2FjaGVkUHNldWRvU3R5bGU7CiAgICAgICAgIHJldHVybiAmcmVz
b2x2ZVBzZXVkb0VsZW1lbnRTdHlsZShwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIwLDcgKzMyMCw3IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBpbnNlcnRBZGphY2VudEhUTUwoY29uc3Qg
U3RyaW5nJiB3aGVyZSwgY29uc3QgU3RyaW5nJiBodG1sKTsKICAgICBXRUJDT1JFX0VYUE9SVCBF
eGNlcHRpb25Pcjx2b2lkPiBpbnNlcnRBZGphY2VudFRleHQoY29uc3QgU3RyaW5nJiB3aGVyZSwg
Y29uc3QgU3RyaW5nJiB0ZXh0KTsKIAotICAgIGNvbnN0IFJlbmRlclN0eWxlKiBjb21wdXRlZFN0
eWxlKFBzZXVkb0lkID0gTk9QU0VVRE8pIG92ZXJyaWRlOworICAgIGNvbnN0IFJlbmRlclN0eWxl
KiBjb21wdXRlZFN0eWxlKFBzZXVkb0lkID0gUHNldWRvSWQ6Ok5vbmUpIG92ZXJyaWRlOwogCiAg
ICAgYm9vbCBuZWVkc1N0eWxlSW52YWxpZGF0aW9uKCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjgwLDcgKzY4MCw3IEBAIHN0YXRpYyBOb2RlOjpFZGl0YWJpbGl0
eSBjb21wdXRlRWRpdGFiaWwKICAgICAgICAgYXV0byogc3R5bGUgPSBub2RlLT5pc0RvY3VtZW50
Tm9kZSgpID8gbm9kZS0+cmVuZGVyU3R5bGUoKSA6IGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpLT5j
b21wdXRlZFN0eWxlKCk7CiAgICAgICAgIGlmICghc3R5bGUpCiAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgaWYgKHN0eWxlLT5kaXNwbGF5KCkgPT0gTk9ORSkKKyAgICAgICAgaWYgKHN0
eWxlLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUpCiAgICAgICAgICAgICBjb250aW51
ZTsKICNpZiBFTkFCTEUoVVNFUlNFTEVDVF9BTEwpCiAgICAgICAgIC8vIEVsZW1lbnRzIHdpdGgg
dXNlci1zZWxlY3Q6IGFsbCBzdHlsZSBhcmUgY29uc2lkZXJlZCBhdG9taWMKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuaAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMjAyLDEwICsyMDIsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaXNTVkdF
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJc1NWR0ZsYWcpOyB9CiAgICAgYm9vbCBp
c01hdGhNTEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElzTWF0aE1MRmxhZyk7IH0K
IAotICAgIGJvb2wgaXNQc2V1ZG9FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gcHNldWRvSWQoKSAh
PSBOT1BTRVVETzsgfQotICAgIGJvb2wgaXNCZWZvcmVQc2V1ZG9FbGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gcHNldWRvSWQoKSA9PSBCRUZPUkU7IH0KLSAgICBib29sIGlzQWZ0ZXJQc2V1ZG9FbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gcHNldWRvSWQoKSA9PSBBRlRFUjsgfQotICAgIFBzZXVkb0lk
IHBzZXVkb0lkKCkgY29uc3QgeyByZXR1cm4gKGlzRWxlbWVudE5vZGUoKSAmJiBoYXNDdXN0b21T
dHlsZVJlc29sdmVDYWxsYmFja3MoKSkgPyBjdXN0b21Qc2V1ZG9JZCgpIDogTk9QU0VVRE87IH0K
KyAgICBib29sIGlzUHNldWRvRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHBzZXVkb0lkKCkgIT0g
UHNldWRvSWQ6Ok5vbmU7IH0KKyAgICBib29sIGlzQmVmb3JlUHNldWRvRWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIHBzZXVkb0lkKCkgPT0gUHNldWRvSWQ6OkJlZm9yZTsgfQorICAgIGJvb2wgaXNB
ZnRlclBzZXVkb0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBwc2V1ZG9JZCgpID09IFBzZXVkb0lk
OjpBZnRlcjsgfQorICAgIFBzZXVkb0lkIHBzZXVkb0lkKCkgY29uc3QgeyByZXR1cm4gKGlzRWxl
bWVudE5vZGUoKSAmJiBoYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKSkgPyBjdXN0b21Q
c2V1ZG9JZCgpIDogUHNldWRvSWQ6Ok5vbmU7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc01lZGlh
Q29udHJvbEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9v
bCBpc01lZGlhQ29udHJvbHMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtNDMyLDcgKzQz
Miw3IEBAIHB1YmxpYzoKICAgICAvLyBXcmFwcGVyIGZvciBub2RlcyB0aGF0IGRvbid0IGhhdmUg
YSByZW5kZXJlciwgYnV0IHN0aWxsIGNhY2hlIHRoZSBzdHlsZSAobGlrZSBIVE1MT3B0aW9uRWxl
bWVudCkuCiAgICAgY29uc3QgUmVuZGVyU3R5bGUqIHJlbmRlclN0eWxlKCkgY29uc3Q7CiAKLSAg
ICB2aXJ0dWFsIGNvbnN0IFJlbmRlclN0eWxlKiBjb21wdXRlZFN0eWxlKFBzZXVkb0lkIHBzZXVk
b0VsZW1lbnRTcGVjaWZpZXIgPSBOT1BTRVVETyk7CisgICAgdmlydHVhbCBjb25zdCBSZW5kZXJT
dHlsZSogY29tcHV0ZWRTdHlsZShQc2V1ZG9JZCBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyID0gUHNl
dWRvSWQ6Ok5vbmUpOwogCiAgICAgZW51bSBjbGFzcyBJbnNlcnRlZEludG9BbmNlc3RvclJlc3Vs
dCB7CiAgICAgICAgIERvbmUsCkBAIC02NDMsNyArNjQzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIFBzZXVkb0lkIGN1c3RvbVBzZXVkb0lkKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VS
VChoYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKSk7Ci0gICAgICAgIHJldHVybiBOT1BT
RVVETzsKKyAgICAgICAgcmV0dXJuIFBzZXVkb0lkOjpOb25lOwogICAgIH0KIAogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVtb3ZlZExhc3RSZWYoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3NpdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9u
LmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjg1LDcgKzY4NSw3IEBAIFBvc2l0aW9uIFBvc2l0aW9uOjp1
cHN0cmVhbShFZGl0aW5nQm91bmQKIAogICAgICAgICAvLyBza2lwIHBvc2l0aW9uIGluIHVucmVu
ZGVyZWQgb3IgaW52aXNpYmxlIG5vZGUKICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IGN1cnJlbnROb2RlLnJlbmRlcmVyKCk7Ci0gICAgICAgIGlmICghcmVuZGVyZXIgfHwgcmVuZGVy
ZXItPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgICAgIGlmICghcmVuZGVy
ZXIgfHwgcmVuZGVyZXItPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2li
bGUpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgZW5zdXJlTGluZUJveGVzSWZOZWVk
ZWQoKnJlbmRlcmVyKTsKICAgICAgICAgaWYgKHJ1bGUgPT0gQ2FuQ3Jvc3NFZGl0aW5nQm91bmRh
cnkgJiYgYm91bmRhcnlDcm9zc2VkKSB7CkBAIC04MjAsNyArODIwLDcgQEAgUG9zaXRpb24gUG9z
aXRpb246OmRvd25zdHJlYW0oRWRpdGluZ0JvdQogCiAgICAgICAgIC8vIHNraXAgcG9zaXRpb24g
aW4gdW5yZW5kZXJlZCBvciBpbnZpc2libGUgbm9kZQogICAgICAgICBhdXRvKiByZW5kZXJlciA9
IGN1cnJlbnROb2RlLnJlbmRlcmVyKCk7Ci0gICAgICAgIGlmICghcmVuZGVyZXIgfHwgcmVuZGVy
ZXItPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgICAgIGlmICghcmVuZGVy
ZXIgfHwgcmVuZGVyZXItPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2li
bGUpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgZW5zdXJlTGluZUJveGVzSWZOZWVk
ZWQoKnJlbmRlcmVyKTsKICAgICAgICAgaWYgKHJ1bGUgPT0gQ2FuQ3Jvc3NFZGl0aW5nQm91bmRh
cnkgJiYgYm91bmRhcnlDcm9zc2VkKSB7CkBAIC05OTUsNyArOTk1LDcgQEAgYm9vbCBQb3NpdGlv
bjo6aXNDYW5kaWRhdGUoKSBjb25zdAogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklT
SUJMRSkKKyAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxp
dHk6OlZpc2libGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChyZW5kZXJlci0+
aXNCUigpKSB7CkBAIC0xMDU4LDcgKzEwNTgsNyBAQCBib29sIFBvc2l0aW9uOjpyZW5kZXJzSW5E
aWZmZXJlbnRQb3NpdGlvCiAgICAgaWYgKCFwb3NpdGlvblJlbmRlcmVyKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJ
U0lCTEUgfHwgcG9zaXRpb25SZW5kZXJlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJM
RSkKKyAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6
OlZpc2libGUgfHwgcG9zaXRpb25SZW5kZXJlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlz
aWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGlmIChk
ZXByZWNhdGVkTm9kZSgpID09IHBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCkpIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbkl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vUG9zaXRpb25JdGVyYXRvci5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbkl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTUyLDcgKzE1Miw3IEBAIGJvb2wgUG9zaXRpb25JdGVyYXRvcjo6aXNDYW5kaWRhdGUoKSBj
b24KICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAg
aWYgKHJlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChy
ZW5kZXJlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKHJlbmRlcmVyLT5pc0JSKCkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDkg
KzU0LDkgQEAgU3RyaW5nIFBzZXVkb0VsZW1lbnQ6OnBzZXVkb0VsZW1lbnROYW1lRgogICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGFmdGVyKE1BS0VfU1RBVElDX1NUUklO
R19JTVBMKCI6OmFmdGVyIikpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJp
bmc+IGJlZm9yZShNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiOjpiZWZvcmUiKSk7CiAgICAgc3dp
dGNoIChwc2V1ZG9JZCkgewotICAgIGNhc2UgQUZURVI6CisgICAgY2FzZSBQc2V1ZG9JZDo6QWZ0
ZXI6CiAgICAgICAgIHJldHVybiBhZnRlcjsKLSAgICBjYXNlIEJFRk9SRToKKyAgICBjYXNlIFBz
ZXVkb0lkOjpCZWZvcmU6CiAgICAgICAgIHJldHVybiBiZWZvcmU7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkBAIC02OCw3ICs2OCw3IEBAIFBzZXVkb0VsZW1l
bnQ6OlBzZXVkb0VsZW1lbnQoRWxlbWVudCYgaG8KICAgICAsIG1faG9zdEVsZW1lbnQoJmhvc3Qp
CiAgICAgLCBtX3BzZXVkb0lkKHBzZXVkb0lkKQogewotICAgIEFTU0VSVChwc2V1ZG9JZCA9PSBC
RUZPUkUgfHwgcHNldWRvSWQgPT0gQUZURVIpOworICAgIEFTU0VSVChwc2V1ZG9JZCA9PSBQc2V1
ZG9JZDo6QmVmb3JlIHx8IHBzZXVkb0lkID09IFBzZXVkb0lkOjpBZnRlcik7CiAgICAgc2V0SGFz
Q3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9WaXNpdGVkTGlua1N0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vVmlzaXRlZExpbmtTdGF0ZS5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9WaXNpdGVkTGlua1N0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsMTggKzg1
LDE4IEBAIHZvaWQgVmlzaXRlZExpbmtTdGF0ZTo6aW52YWxpZGF0ZVN0eWxlRm8KICAgICB9CiB9
CiAKLUVJbnNpZGVMaW5rIFZpc2l0ZWRMaW5rU3RhdGU6OmRldGVybWluZUxpbmtTdGF0ZVNsb3dD
YXNlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCitJbnNpZGVMaW5rIFZpc2l0ZWRMaW5rU3RhdGU6
OmRldGVybWluZUxpbmtTdGF0ZVNsb3dDYXNlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAg
ICAgQVNTRVJUKGVsZW1lbnQuaXNMaW5rKCkpOwogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nKiBh
dHRyaWJ1dGUgPSBsaW5rQXR0cmlidXRlKGVsZW1lbnQpOwogICAgIGlmICghYXR0cmlidXRlIHx8
IGF0dHJpYnV0ZS0+aXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBOb3RJbnNpZGVMaW5rOworICAg
ICAgICByZXR1cm4gSW5zaWRlTGluazo6Tm90SW5zaWRlOwogCiAgICAgLy8gQW4gZW1wdHkgaHJl
ZiByZWZlcnMgdG8gdGhlIGRvY3VtZW50IGl0c2VsZiB3aGljaCBpcyBhbHdheXMgdmlzaXRlZC4g
SXQgaXMgdXNlZnVsIHRvIGNoZWNrIHRoaXMgZXhwbGljaXRseSBzbwogICAgIC8vIHRoYXQgdmlz
aXRlZCBsaW5rcyBjYW4gYmUgdGVzdGVkIGluIHBsYXRmb3JtIGluZGVwZW5kZW50IG1hbm5lciwg
d2l0aG91dCBleHBsaWNpdCBzdXBwb3J0IGluIHRoZSB0ZXN0IGhhcm5lc3MuCiAgICAgaWYgKGF0
dHJpYnV0ZS0+aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gSW5zaWRlVmlzaXRlZExpbms7Cisg
ICAgICAgIHJldHVybiBJbnNpZGVMaW5rOjpJbnNpZGVWaXNpdGVkOwogCiAgICAgU2hhcmVkU3Ry
aW5nSGFzaCBoYXNoOwogICAgIGlmIChpczxIVE1MQW5jaG9yRWxlbWVudD4oZWxlbWVudCkpCkBA
IC0xMDUsMjIgKzEwNSwyMiBAQCBFSW5zaWRlTGluayBWaXNpdGVkTGlua1N0YXRlOjpkZXRlcm1p
bmVMCiAgICAgICAgIGhhc2ggPSBjb21wdXRlVmlzaXRlZExpbmtIYXNoKGVsZW1lbnQuZG9jdW1l
bnQoKS5iYXNlVVJMKCksICphdHRyaWJ1dGUpOwogCiAgICAgaWYgKCFoYXNoKQotICAgICAgICBy
ZXR1cm4gSW5zaWRlVW52aXNpdGVkTGluazsKKyAgICAgICAgcmV0dXJuIEluc2lkZUxpbms6Oklu
c2lkZVVudmlzaXRlZDsKIAogICAgIEZyYW1lKiBmcmFtZSA9IGVsZW1lbnQuZG9jdW1lbnQoKS5m
cmFtZSgpOwogICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBJbnNpZGVVbnZpc2l0ZWRM
aW5rOworICAgICAgICByZXR1cm4gSW5zaWRlTGluazo6SW5zaWRlVW52aXNpdGVkOwogCiAgICAg
UGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1
cm4gSW5zaWRlVW52aXNpdGVkTGluazsKKyAgICAgICAgcmV0dXJuIEluc2lkZUxpbms6Okluc2lk
ZVVudmlzaXRlZDsKIAogICAgIG1fbGlua3NDaGVja2VkRm9yVmlzaXRlZFN0YXRlLmFkZChoYXNo
KTsKIAogICAgIGlmICghcGFnZS0+dmlzaXRlZExpbmtTdG9yZSgpLmlzTGlua1Zpc2l0ZWQoKnBh
Z2UsIGhhc2gsIGVsZW1lbnQuZG9jdW1lbnQoKS5iYXNlVVJMKCksICphdHRyaWJ1dGUpKQotICAg
ICAgICByZXR1cm4gSW5zaWRlVW52aXNpdGVkTGluazsKKyAgICAgICAgcmV0dXJuIEluc2lkZUxp
bms6Okluc2lkZVVudmlzaXRlZDsKIAotICAgIHJldHVybiBJbnNpZGVWaXNpdGVkTGluazsKKyAg
ICByZXR1cm4gSW5zaWRlTGluazo6SW5zaWRlVmlzaXRlZDsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Zpc2l0ZWRMaW5rU3RhdGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVmlzaXRlZExpbmtTdGF0ZS5oCShyZXZpc2lv
biAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVmlzaXRlZExpbmtTdGF0ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCwxOSArNDQsMTkgQEAgcHVibGljOgogCiAgICAgdm9pZCBpbnZhbGlk
YXRlU3R5bGVGb3JBbGxMaW5rcygpOwogICAgIHZvaWQgaW52YWxpZGF0ZVN0eWxlRm9yTGluayhT
aGFyZWRTdHJpbmdIYXNoKTsKLSAgICBFSW5zaWRlTGluayBkZXRlcm1pbmVMaW5rU3RhdGUoY29u
c3QgRWxlbWVudCYpOworICAgIEluc2lkZUxpbmsgZGV0ZXJtaW5lTGlua1N0YXRlKGNvbnN0IEVs
ZW1lbnQmKTsKIAogcHJpdmF0ZToKLSAgICBFSW5zaWRlTGluayBkZXRlcm1pbmVMaW5rU3RhdGVT
bG93Q2FzZShjb25zdCBFbGVtZW50Jik7CisgICAgSW5zaWRlTGluayBkZXRlcm1pbmVMaW5rU3Rh
dGVTbG93Q2FzZShjb25zdCBFbGVtZW50Jik7CiAKICAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsK
ICAgICBIYXNoU2V0PFNoYXJlZFN0cmluZ0hhc2gsIFNoYXJlZFN0cmluZ0hhc2hIYXNoPiBtX2xp
bmtzQ2hlY2tlZEZvclZpc2l0ZWRTdGF0ZTsKIH07CiAKLWlubGluZSBFSW5zaWRlTGluayBWaXNp
dGVkTGlua1N0YXRlOjpkZXRlcm1pbmVMaW5rU3RhdGUoY29uc3QgRWxlbWVudCYgZWxlbWVudCkK
K2lubGluZSBJbnNpZGVMaW5rIFZpc2l0ZWRMaW5rU3RhdGU6OmRldGVybWluZUxpbmtTdGF0ZShj
b25zdCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmICghZWxlbWVudC5pc0xpbmsoKSkKLSAg
ICAgICAgcmV0dXJuIE5vdEluc2lkZUxpbms7CisgICAgICAgIHJldHVybiBJbnNpZGVMaW5rOjpO
b3RJbnNpZGU7CiAgICAgcmV0dXJuIGRldGVybWluZUxpbmtTdGF0ZVNsb3dDYXNlKGVsZW1lbnQp
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAJKHJldmlzaW9uIDIzMjE0
MykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ1Niw3ICs0NTYsNyBAQCBzdGF0aWMgYm9vbCBpc1NwZWNpYWxIVE1MRWxlbWVudChjb25z
dCBOCiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYg
KHJlbmRlcmVyLT5zdHlsZSgpLmRpc3BsYXkoKSA9PSBUQUJMRSB8fCByZW5kZXJlci0+c3R5bGUo
KS5kaXNwbGF5KCkgPT0gSU5MSU5FX1RBQkxFKQorICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS5k
aXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxlIHx8IHJlbmRlcmVyLT5zdHlsZSgpLmRpc3Bs
YXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lVGFibGUpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLmlzRmxvYXRpbmcoKSkKQEAgLTkzMyw3ICs5MzMs
NyBAQCBSZWY8RWxlbWVudD4gY3JlYXRlVGFiU3BhbkVsZW1lbnQoRG9jdW1lCiBib29sIGlzTm9k
ZVJlbmRlcmVkKGNvbnN0IE5vZGUmIG5vZGUpCiB7CiAgICAgYXV0byogcmVuZGVyZXIgPSBub2Rl
LnJlbmRlcmVyKCk7Ci0gICAgcmV0dXJuIHJlbmRlcmVyICYmIHJlbmRlcmVyLT5zdHlsZSgpLnZp
c2liaWxpdHkoKSA9PSBWSVNJQkxFOworICAgIHJldHVybiByZW5kZXJlciAmJiByZW5kZXJlci0+
c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZTsKIH0KIAogdW5zaWdu
ZWQgbnVtRW5jbG9zaW5nTWFpbEJsb2NrcXVvdGVzKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAJKHJldmlzaW9uIDIz
MjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTYwLDExICs1NjAsMTEgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmFkdmFuY2Uo
KQogCiBzdGF0aWMgYm9vbCBoYXNWaXNpYmxlVGV4dE5vZGUoUmVuZGVyVGV4dCYgcmVuZGVyZXIp
CiB7Ci0gICAgaWYgKHJlbmRlcmVyLnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUpCisg
ICAgaWYgKHJlbmRlcmVyLnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2li
bGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChpczxSZW5kZXJUZXh0RnJhZ21lbnQ+
KHJlbmRlcmVyKSkgewogICAgICAgICBpZiAoYXV0byBmaXJzdExldHRlciA9IGRvd25jYXN0PFJl
bmRlclRleHRGcmFnbWVudD4ocmVuZGVyZXIpLmZpcnN0TGV0dGVyKCkpIHsKLSAgICAgICAgICAg
IGlmIChmaXJzdExldHRlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkKKyAgICAg
ICAgICAgIGlmIChmaXJzdExldHRlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0
eTo6VmlzaWJsZSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAg
IH0KQEAgLTYxOCw3ICs2MTgsNyBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUo
KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQotICAgICAgICBpZiAocmVuZGVyZXIuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSAm
JiAhKG1fYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JJZ25vcmVzU3R5bGVWaXNpYmlsaXR5KSkKKyAg
ICAgICAgaWYgKHJlbmRlcmVyLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZp
c2libGUgJiYgIShtX2JlaGF2aW9yICYgVGV4dEl0ZXJhdG9ySWdub3Jlc1N0eWxlVmlzaWJpbGl0
eSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGludCByZW5kZXJlclRleHRM
ZW5ndGggPSByZW5kZXJlclRleHQubGVuZ3RoKCk7CiAgICAgICAgIGludCBlbmQgPSAoJnRleHRO
b2RlID09IG1fZW5kQ29udGFpbmVyKSA/IG1fZW5kT2Zmc2V0IDogSU5UX01BWDsKQEAgLTYzMiw3
ICs2MzIsNyBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogICAgIH0KIAog
ICAgIGlmIChjb25zdCBhdXRvKiBsYXlvdXQgPSByZW5kZXJlci5zaW1wbGVMaW5lTGF5b3V0KCkp
IHsKLSAgICAgICAgaWYgKHJlbmRlcmVyLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUg
JiYgIShtX2JlaGF2aW9yICYgVGV4dEl0ZXJhdG9ySWdub3Jlc1N0eWxlVmlzaWJpbGl0eSkpCisg
ICAgICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpW
aXNpYmxlICYmICEobV9iZWhhdmlvciAmIFRleHRJdGVyYXRvcklnbm9yZXNTdHlsZVZpc2liaWxp
dHkpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIEFTU0VSVChyZW5kZXJlci5w
YXJlbnQoKSk7CiAgICAgICAgIEFTU0VSVChpczxSZW5kZXJCbG9ja0Zsb3c+KCpyZW5kZXJlci5w
YXJlbnQoKSkpOwpAQCAtNzI3LDcgKzcyNyw3IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVU
ZXh0Tm9kZSgpCiAgICAgICAgIGhhbmRsZVRleHROb2RlRmlyc3RMZXR0ZXIoZG93bmNhc3Q8UmVu
ZGVyVGV4dEZyYWdtZW50PihyZW5kZXJlcikpOwogCiAgICAgaWYgKCFyZW5kZXJlci5maXJzdFRl
eHRCb3goKSAmJiByZW5kZXJlclRleHQubGVuZ3RoKCkgJiYgIXNob3VsZEhhbmRsZUZpcnN0TGV0
dGVyKSB7Ci0gICAgICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJ
QkxFICYmICEobV9iZWhhdmlvciAmIFRleHRJdGVyYXRvcklnbm9yZXNTdHlsZVZpc2liaWxpdHkp
KQorICAgICAgICBpZiAocmVuZGVyZXIuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0
eTo6VmlzaWJsZSAmJiAhKG1fYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JJZ25vcmVzU3R5bGVWaXNp
YmlsaXR5KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgbV9sYXN0VGV4dE5v
ZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFjZSA9IHRydWU7IC8vIGVudGlyZSBibG9jayBpcyBjb2xs
YXBzZWQgc3BhY2UKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC03NTMsNyArNzUzLDcgQEAgdm9p
ZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRCb3goKQogICAgIFRleHQmIHRleHROb2RlID0gZG93
bmNhc3Q8VGV4dD4oKm1fbm9kZSk7CiAKICAgICBhdXRvJiByZW5kZXJlciA9IG1fZmlyc3RMZXR0
ZXJUZXh0ID8gKm1fZmlyc3RMZXR0ZXJUZXh0IDogKnRleHROb2RlLnJlbmRlcmVyKCk7Ci0gICAg
aWYgKHJlbmRlcmVyLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgJiYgIShtX2JlaGF2
aW9yICYgVGV4dEl0ZXJhdG9ySWdub3Jlc1N0eWxlVmlzaWJpbGl0eSkpIHsKKyAgICBpZiAocmVu
ZGVyZXIuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhKG1f
YmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JJZ25vcmVzU3R5bGVWaXNpYmlsaXR5KSkgewogICAgICAg
ICBtX3RleHRCb3ggPSBudWxscHRyOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtODQ4LDcg
Kzg0OCw3IEBAIHN0YXRpYyBpbmxpbmUgUmVuZGVyVGV4dCogZmlyc3RSZW5kZXJUZXgKIHZvaWQg
VGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKFJlbmRlclRleHRGcmFnbWVu
dCYgcmVuZGVyZXIpCiB7CiAgICAgaWYgKGF1dG8qIGZpcnN0TGV0dGVyID0gcmVuZGVyZXIuZmly
c3RMZXR0ZXIoKSkgewotICAgICAgICBpZiAoZmlyc3RMZXR0ZXItPnN0eWxlKCkudmlzaWJpbGl0
eSgpICE9IFZJU0lCTEUgJiYgIShtX2JlaGF2aW9yICYgVGV4dEl0ZXJhdG9ySWdub3Jlc1N0eWxl
VmlzaWJpbGl0eSkpCisgICAgICAgIGlmIChmaXJzdExldHRlci0+c3R5bGUoKS52aXNpYmlsaXR5
KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhKG1fYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JJ
Z25vcmVzU3R5bGVWaXNpYmlsaXR5KSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYg
KGF1dG8qIGZpcnN0TGV0dGVyVGV4dCA9IGZpcnN0UmVuZGVyVGV4dEluRmlyc3RMZXR0ZXIoZmly
c3RMZXR0ZXIpKSB7CiAgICAgICAgICAgICBtX2hhbmRsZWRGaXJzdExldHRlciA9IHRydWU7CkBA
IC04NjcsNyArODY3LDcgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVJlcGxhY2VkRWxlbWVu
dAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvJiByZW5kZXJlciA9ICptX25vZGUt
PnJlbmRlcmVyKCk7Ci0gICAgaWYgKHJlbmRlcmVyLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJ
U0lCTEUgJiYgIShtX2JlaGF2aW9yICYgVGV4dEl0ZXJhdG9ySWdub3Jlc1N0eWxlVmlzaWJpbGl0
eSkpCisgICAgaWYgKHJlbmRlcmVyLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6
OlZpc2libGUgJiYgIShtX2JlaGF2aW9yICYgVGV4dEl0ZXJhdG9ySWdub3Jlc1N0eWxlVmlzaWJp
bGl0eSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChtX2xhc3RUZXh0Tm9kZUVu
ZGVkV2l0aENvbGxhcHNlZFNwYWNlKSB7CkBAIC0xMTE1LDcgKzExMTUsNyBAQCBib29sIFRleHRJ
dGVyYXRvcjo6c2hvdWxkUmVwcmVzZW50Tm9kZU9mCiAgICAgLy8gSWYgdGhpcyBub2RlIGlzIHVu
cmVuZGVyZWQgb3IgaW52aXNpYmxlIHRoZSBWaXNpYmxlUG9zaXRpb24gY2hlY2tzIGJlbG93IHdv
bid0IGhhdmUgbXVjaCBtZWFuaW5nLgogICAgIC8vIEFkZGl0aW9uYWxseSwgaWYgdGhlIHJhbmdl
IHdlIGFyZSBpdGVyYXRpbmcgb3ZlciBjb250YWlucyBodWdlIHNlY3Rpb25zIG9mIHVucmVuZGVy
ZWQgY29udGVudCwgCiAgICAgLy8gd2Ugd291bGQgY3JlYXRlIFZpc2libGVQb3NpdGlvbnMgb24g
ZXZlcnkgY2FsbCB0byB0aGlzIGZ1bmN0aW9uIHdpdGhvdXQgdGhpcyBjaGVjay4KLSAgICBpZiAo
IW1fbm9kZS0+cmVuZGVyZXIoKSB8fCBtX25vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCkudmlzaWJp
bGl0eSgpICE9IFZJU0lCTEUKKyAgICBpZiAoIW1fbm9kZS0+cmVuZGVyZXIoKSB8fCBtX25vZGUt
PnJlbmRlcmVyKCktPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUK
ICAgICAgICAgfHwgKGlzPFJlbmRlckJsb2NrRmxvdz4oKm1fbm9kZS0+cmVuZGVyZXIoKSkgJiYg
IWRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKm1fbm9kZS0+cmVuZGVyZXIoKSkuaGVpZ2h0KCkg
JiYgIWlzPEhUTUxCb2R5RWxlbWVudD4oKm1fbm9kZSkpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKQEAgLTEzMzEsMTAgKzEzMzEsMTAgQEAgdm9pZCBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0
ZXJhdG9yOjphZAogICAgICAgICBpZiAoIW1faGFuZGxlZE5vZGUgJiYgIShtX25vZGUgPT0gbV9l
bmRDb250YWluZXIgJiYgIW1fZW5kT2Zmc2V0KSkgewogICAgICAgICAgICAgYXV0byogcmVuZGVy
ZXIgPSBtX25vZGUtPnJlbmRlcmVyKCk7CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIgJiYgcmVu
ZGVyZXItPmlzVGV4dCgpICYmIG1fbm9kZS0+aXNUZXh0Tm9kZSgpKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFICYmIG1fb2Zm
c2V0ID4gMCkKKyAgICAgICAgICAgICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkudmlzaWJpbGl0
eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUgJiYgbV9vZmZzZXQgPiAwKQogICAgICAgICAgICAg
ICAgICAgICBtX2hhbmRsZWROb2RlID0gaGFuZGxlVGV4dE5vZGUoKTsKICAgICAgICAgICAgIH0g
ZWxzZSBpZiAocmVuZGVyZXIgJiYgKHJlbmRlcmVyLT5pc0ltYWdlKCkgfHwgcmVuZGVyZXItPmlz
V2lkZ2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLnZpc2li
aWxpdHkoKSA9PSBWSVNJQkxFICYmIG1fb2Zmc2V0ID4gMCkKKyAgICAgICAgICAgICAgICBpZiAo
cmVuZGVyZXItPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUgJiYg
bV9vZmZzZXQgPiAwKQogICAgICAgICAgICAgICAgICAgICBtX2hhbmRsZWROb2RlID0gaGFuZGxl
UmVwbGFjZWRFbGVtZW50KCk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBt
X2hhbmRsZWROb2RlID0gaGFuZGxlTm9uVGV4dE5vZGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1Zpc2libGVVbml0cy5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4MSw3ICsx
MTgxLDcgQEAgTm9kZSogZmluZFN0YXJ0T2ZQYXJhZ3JhcGgoTm9kZSogc3RhcnRObwogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlID0gci0+c3R5bGUoKTsKLSAgICAgICAgaWYgKHN0eWxlLnZpc2liaWxpdHkoKSAhPSBWSVNJ
QkxFKSB7CisgICAgICAgIGlmIChzdHlsZS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6Vmlz
aWJsZSkgewogICAgICAgICAgICAgbiA9IE5vZGVUcmF2ZXJzYWw6OnByZXZpb3VzUG9zdE9yZGVy
KCpuLCBzdGFydEJsb2NrKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBAIC0x
MjQzLDcgKzEyNDMsNyBAQCBOb2RlKiBmaW5kRW5kT2ZQYXJhZ3JhcGgoTm9kZSogc3RhcnROb2Rl
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUgPSByLT5zdHlsZSgpOwotICAgICAgICBpZiAoc3R5bGUudmlzaWJpbGl0eSgp
ICE9IFZJU0lCTEUpIHsKKyAgICAgICAgaWYgKHN0eWxlLnZpc2liaWxpdHkoKSAhPSBWaXNpYmls
aXR5OjpWaXNpYmxlKSB7CiAgICAgICAgICAgICBuID0gTm9kZVRyYXZlcnNhbDo6bmV4dCgqbiwg
c3RheUluc2lkZUJsb2NrKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCShyZXZpc2lvbiAyMzIxNDMp
CisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTkyLDM3ICs5MiwzNiBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNo
YW5nZWRCCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgY29uc3QgY2hhciAqbmV3VmFs
dWUgPSBudWxscHRyOwotICAgIEVUZXh0QWxpZ24gdGV4dEFsaWduID0gKnZhbHVlOworICAgIFRl
eHRBbGlnbk1vZGUgdGV4dEFsaWduID0gKnZhbHVlOwogICAgIHN3aXRjaCAodGV4dEFsaWduKSB7
Ci0gICAgICAgIGNhc2UgVEFTVEFSVDoKLSAgICAgICAgY2FzZSBUQUVORDoKLSAgICAgICAgewot
ICAgICAgICAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICAgICAgICAgICAgICBjYXNlIE5h
dHVyYWxXcml0aW5nRGlyZWN0aW9uOgotICAgICAgICAgICAgICAgICAgICAvLyBuby1vcAotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIExlZnRUb1JpZ2h0
V3JpdGluZ0RpcmVjdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWUgPSAibGVmdCI7
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgUmlnaHRU
b0xlZnRXcml0aW5nRGlyZWN0aW9uOgotICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9ICJy
aWdodCI7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBMRUZUOgotICAgICAgICBjYXNl
IFdFQktJVF9MRUZUOgotICAgICAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgIGNhc2Ug
VGV4dEFsaWduTW9kZTo6U3RhcnQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpFbmQ6IHsKKyAg
ICAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKKyAgICAgICAgY2FzZSBOYXR1cmFsV3JpdGluZ0Rp
cmVjdGlvbjoKKyAgICAgICAgICAgIC8vIG5vLW9wCiAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBSSUdIVDoKLSAgICAgICAgY2FzZSBXRUJLSVRfUklHSFQ6CisgICAgICAgIGNhc2Ug
TGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uOgogICAgICAgICAgICAgbmV3VmFsdWUgPSAibGVm
dCI7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDRU5URVI6Ci0gICAgICAgIGNh
c2UgV0VCS0lUX0NFTlRFUjoKLSAgICAgICAgY2FzZSBKVVNUSUZZOgotICAgICAgICAgICAgLy8g
bm8tb3AKKyAgICAgICAgY2FzZSBSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb246CisgICAgICAg
ICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgorICAg
IGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0TGVmdDoKKyAgICAgICAgbmV3VmFsdWUgPSAicmln
aHQiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlJpZ2h0OgorICAg
IGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQ6CisgICAgICAgIG5ld1ZhbHVlID0gImxl
ZnQiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKKyAg
ICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoKKyAgICBjYXNlIFRleHRBbGlnbk1v
ZGU6Okp1c3RpZnk6CisgICAgICAgIC8vIG5vLW9wCisgICAgICAgIGJyZWFrOwogICAgIH0KIAog
ICAgIGlmICghbmV3VmFsdWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1l
bnQuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVh
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMCw3ICsyMTAsNyBAQCBib29sIEhUTUxB
cmVhRWxlbWVudDo6aXNNb3VzZUZvY3VzYWJsZSgpCiBib29sIEhUTUxBcmVhRWxlbWVudDo6aXNG
b2N1c2FibGUoKSBjb25zdAogewogICAgIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBpbWFnZSA9
IGltYWdlRWxlbWVudCgpOwotICAgIGlmICghaW1hZ2UgfHwgIWltYWdlLT5yZW5kZXJlcigpIHx8
IGltYWdlLT5yZW5kZXJlcigpLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAg
IGlmICghaW1hZ2UgfHwgIWltYWdlLT5yZW5kZXJlcigpIHx8IGltYWdlLT5yZW5kZXJlcigpLT5z
dHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICByZXR1cm4gc3VwcG9ydHNGb2N1cygpICYmIEVsZW1lbnQ6OnRhYklu
ZGV4KCkgPj0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDExICsxMTYsMTEgQEAgYm9vbCBIVE1MRm9ybUVs
ZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoYwogICAgIGlmICghcGFyZW50SXNUYWJsZUVsZW1lbnRQ
YXJ0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIEVEaXNwbGF5IGRpc3BsYXkgPSBzdHls
ZS5kaXNwbGF5KCk7Ci0gICAgYm9vbCBmb3JtSXNUYWJsZVBhcnQgPSBkaXNwbGF5ID09IFRBQkxF
IHx8IGRpc3BsYXkgPT0gSU5MSU5FX1RBQkxFIHx8IGRpc3BsYXkgPT0gVEFCTEVfUk9XX0dST1VQ
Ci0gICAgICAgIHx8IGRpc3BsYXkgPT0gVEFCTEVfSEVBREVSX0dST1VQIHx8IGRpc3BsYXkgPT0g
VEFCTEVfRk9PVEVSX0dST1VQIHx8IGRpc3BsYXkgPT0gVEFCTEVfUk9XCi0gICAgICAgIHx8IGRp
c3BsYXkgPT0gVEFCTEVfQ09MVU1OX0dST1VQIHx8IGRpc3BsYXkgPT0gVEFCTEVfQ09MVU1OIHx8
IGRpc3BsYXkgPT0gVEFCTEVfQ0VMTAotICAgICAgICB8fCBkaXNwbGF5ID09IFRBQkxFX0NBUFRJ
T047CisgICAgRGlzcGxheVR5cGUgZGlzcGxheSA9IHN0eWxlLmRpc3BsYXkoKTsKKyAgICBib29s
IGZvcm1Jc1RhYmxlUGFydCA9IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OlRhYmxlIHx8IGRpc3Bs
YXkgPT0gRGlzcGxheVR5cGU6OklubGluZVRhYmxlIHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6
OlRhYmxlUm93R3JvdXAKKyAgICAgICAgfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6VGFibGVI
ZWFkZXJHcm91cCB8fCBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpUYWJsZUZvb3Rlckdyb3VwIHx8
IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OlRhYmxlUm93CisgICAgICAgIHx8IGRpc3BsYXkgPT0g
RGlzcGxheVR5cGU6OlRhYmxlQ29sdW1uR3JvdXAgfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6
VGFibGVDb2x1bW4gfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDZWxsCisgICAgICAg
IHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OlRhYmxlQ2FwdGlvbjsKIAogICAgIHJldHVybiBm
b3JtSXNUYWJsZVBhcnQ7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVF
bGVtZW50LmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SUZyYW1lRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lk
IEhUTUxJRnJhbWVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjCiAKIGJvb2wgSFRNTElGcmFtZUVs
ZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewotICAg
IHJldHVybiBpc1VSTEFsbG93ZWQoKSAmJiBzdHlsZS5kaXNwbGF5KCkgIT0gTk9ORTsKKyAgICBy
ZXR1cm4gaXNVUkxBbGxvd2VkKCkgJiYgc3R5bGUuZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpO
b25lOwogfQogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTElGcmFtZUVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDYwLDEzICsyMDYwLDEzIEBAIFJlbmRlclN0eWxl
IEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZUlubmUKICAgICB0ZXh0QmxvY2tTdHlsZS5pbmhlcml0
RnJvbShzdHlsZSk7CiAgICAgYWRqdXN0SW5uZXJUZXh0U3R5bGUoc3R5bGUsIHRleHRCbG9ja1N0
eWxlKTsKIAotICAgIHRleHRCbG9ja1N0eWxlLnNldFdoaXRlU3BhY2UoUFJFKTsKKyAgICB0ZXh0
QmxvY2tTdHlsZS5zZXRXaGl0ZVNwYWNlKFdoaXRlU3BhY2U6OlByZSk7CiAgICAgdGV4dEJsb2Nr
U3R5bGUuc2V0T3ZlcmZsb3dXcmFwKE92ZXJmbG93V3JhcDo6Tm9ybWFsKTsKICAgICB0ZXh0Qmxv
Y2tTdHlsZS5zZXRPdmVyZmxvd1goT3ZlcmZsb3c6OkhpZGRlbik7CiAgICAgdGV4dEJsb2NrU3R5
bGUuc2V0T3ZlcmZsb3dZKE92ZXJmbG93OjpIaWRkZW4pOwogICAgIHRleHRCbG9ja1N0eWxlLnNl
dFRleHRPdmVyZmxvdyhzaG91bGRUcnVuY2F0ZVRleHQoc3R5bGUpID8gVGV4dE92ZXJmbG93OjpF
bGxpcHNpcyA6IFRleHRPdmVyZmxvdzo6Q2xpcCk7CiAKLSAgICB0ZXh0QmxvY2tTdHlsZS5zZXRE
aXNwbGF5KEJMT0NLKTsKKyAgICB0ZXh0QmxvY2tTdHlsZS5zZXREaXNwbGF5KERpc3BsYXlUeXBl
OjpCbG9jayk7CiAKICAgICBpZiAoaGFzQXV0b0ZpbGxTdHJvbmdQYXNzd29yZEJ1dHRvbigpKSB7
CiAgICAgICAgIHRleHRCbG9ja1N0eWxlLnNldENvbG9yKHsgMC4wZiwgMC4wZiwgMC4wZiwgMC42
ZiB9KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNw
cAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBib29sIEhUTUxPcHRH
cm91cEVsZW1lbnQ6OmlzRm9jdXNhYmxlKCkgCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAv
LyBPcHRncm91cCBlbGVtZW50cyBkbyBub3QgaGF2ZSBhIHJlbmRlcmVyLgogICAgIGF1dG8qIHN0
eWxlID0gY29uc3RfY2FzdDxIVE1MT3B0R3JvdXBFbGVtZW50Jj4oKnRoaXMpLmNvbXB1dGVkU3R5
bGUoKTsKLSAgICByZXR1cm4gc3R5bGUgJiYgc3R5bGUtPmRpc3BsYXkoKSAhPSBOT05FOworICAg
IHJldHVybiBzdHlsZSAmJiBzdHlsZS0+ZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpOb25lOwog
fQogCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxPcHRHcm91cEVsZW1lbnQ6OmZvcm1Db250cm9s
VHlwZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50
LmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9u
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDcgQEAgYm9vbCBIVE1MT3B0
aW9uRWxlbWVudDo6aXNGb2N1c2FibGUoKSBjbwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
Ly8gT3B0aW9uIGVsZW1lbnRzIGRvIG5vdCBoYXZlIGEgcmVuZGVyZXIuCiAgICAgYXV0byogc3R5
bGUgPSBjb25zdF9jYXN0PEhUTUxPcHRpb25FbGVtZW50Jj4oKnRoaXMpLmNvbXB1dGVkU3R5bGUo
KTsKLSAgICByZXR1cm4gc3R5bGUgJiYgc3R5bGUtPmRpc3BsYXkoKSAhPSBOT05FOworICAgIHJl
dHVybiBzdHlsZSAmJiBzdHlsZS0+ZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpOb25lOwogfQog
CiBib29sIEhUTUxPcHRpb25FbGVtZW50OjptYXRjaGVzRGVmYXVsdFBzZXVkb0NsYXNzKCkgY29u
c3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAko
cmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUxLDcgKzU1MSw3IEBAIFJlbmRlclN0eWxlIEhU
TUxUZXh0QXJlYUVsZW1lbnQ6OmNyZWF0ZUkKICAgICBhdXRvIHRleHRCbG9ja1N0eWxlID0gUmVu
ZGVyU3R5bGU6OmNyZWF0ZSgpOwogICAgIHRleHRCbG9ja1N0eWxlLmluaGVyaXRGcm9tKHN0eWxl
KTsKICAgICBhZGp1c3RJbm5lclRleHRTdHlsZShzdHlsZSwgdGV4dEJsb2NrU3R5bGUpOwotICAg
IHRleHRCbG9ja1N0eWxlLnNldERpc3BsYXkoQkxPQ0spOworICAgIHRleHRCbG9ja1N0eWxlLnNl
dERpc3BsYXkoRGlzcGxheVR5cGU6OkJsb2NrKTsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICAv
LyBXZSdyZSBhZGRpbmcgdGhyZWUgZXh0cmEgcGl4ZWxzIG9mIHBhZGRpbmcgdG8gbGluZSB0ZXh0
YXJlYXMgdXAgd2l0aCB0ZXh0IGZpZWxkcy4gIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzMjE0MykK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMDQsNyArMzA0LDcgQEAgdm9pZCBIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudDo6c2V0U2VsZQogICAgICAgICBhdXRvKiByZW5kZXJlclRleHRDb250cm9sID0gcmVu
ZGVyZXIoKTsKIAogICAgICAgICBpZiAoaW5uZXJUZXh0ICYmIHJlbmRlcmVyVGV4dENvbnRyb2wp
IHsKLSAgICAgICAgICAgIGlmIChyZW5kZXJlclRleHRDb250cm9sLT5zdHlsZSgpLnZpc2liaWxp
dHkoKSA9PSBISURERU4gfHwgIWlubmVyVGV4dC0+cmVuZGVyQm94KCkgfHwgIWlubmVyVGV4dC0+
cmVuZGVyQm94KCktPmhlaWdodCgpKSB7CisgICAgICAgICAgICBpZiAocmVuZGVyZXJUZXh0Q29u
dHJvbC0+c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6SGlkZGVuIHx8ICFpbm5l
clRleHQtPnJlbmRlckJveCgpIHx8ICFpbm5lclRleHQtPnJlbmRlckJveCgpLT5oZWlnaHQoKSkg
ewogICAgICAgICAgICAgICAgIGNhY2hlU2VsZWN0aW9uKHN0YXJ0LCBlbmQsIGRpcmVjdGlvbik7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtODIxLDE5ICs4MjEs
MTkgQEAgdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6YWRqdXN0SQogICAgICAgICAv
LyAod2hpY2ggY2Fubm90IGhhdmUgUlRMIGRpcmVjdGlvbmFsaXR5KSB3aWxsIGFwcGVhciB0byB0
aGUgcmlnaHQgb2YgdGhlIG1hc2tlZCBjaGFyYWN0ZXJzLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzcw
MjQzNzU+LgogICAgICAgICAKICAgICAgICAgc3dpdGNoICh0ZXh0QmxvY2tTdHlsZS50ZXh0QWxp
Z24oKSkgewotICAgICAgICBjYXNlIFRBU1RBUlQ6Ci0gICAgICAgIGNhc2UgSlVTVElGWToKLSAg
ICAgICAgICAgIHRleHRCbG9ja1N0eWxlLnNldFRleHRBbGlnbihSSUdIVCk7CisgICAgICAgIGNh
c2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CisgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVz
dGlmeToKKyAgICAgICAgICAgIHRleHRCbG9ja1N0eWxlLnNldFRleHRBbGlnbihUZXh0QWxpZ25N
b2RlOjpSaWdodCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUQUVORDoKLSAg
ICAgICAgICAgIHRleHRCbG9ja1N0eWxlLnNldFRleHRBbGlnbihMRUZUKTsKKyAgICAgICAgY2Fz
ZSBUZXh0QWxpZ25Nb2RlOjpFbmQ6CisgICAgICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXRUZXh0
QWxpZ24oVGV4dEFsaWduTW9kZTo6TGVmdCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBMRUZUOgotICAgICAgICBjYXNlIFJJR0hUOgotICAgICAgICBjYXNlIENFTlRFUjoKLSAg
ICAgICAgY2FzZSBXRUJLSVRfTEVGVDoKLSAgICAgICAgY2FzZSBXRUJLSVRfUklHSFQ6Ci0gICAg
ICAgIGNhc2UgV0VCS0lUX0NFTlRFUjoKKyAgICAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0
OgorICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlJpZ2h0OgorICAgICAgICBjYXNlIFRleHRB
bGlnbk1vZGU6OkNlbnRlcjoKKyAgICAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0
OgorICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0OgorICAgICAgICBjYXNl
IFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNw
cAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRT
ZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI5LDcgKzMyOSw3IEBAIGJvb2wgTWVkaWFF
bGVtZW50U2Vzc2lvbjo6YXV0b3BsYXlQZXJtaXQKICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCAiUmV0dXJuaW5nIEZBTFNFIGJlY2F1c2UgZWxlbWVudCBoYXMgbm8gcmVuZGVyZXIi
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBpZiAocmVuZGVyZXItPnN0eWxl
KCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpIHsKKyAgICBpZiAocmVuZGVyZXItPnN0eWxlKCku
dmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpIHsKICAgICAgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCAiUmV0dXJuaW5nIEZBTFNFIGJlY2F1c2UgZWxlbWVudCBpcyBub3Qg
dmlzaWJsZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtODExLDcgKzgxMSw3
IEBAIHN0YXRpYyBib29sIGlzTWFpbkNvbnRlbnRGb3JQdXJwb3Nlc09mQXUKICAgICAvLyBFbGVt
ZW50cyB3aGljaCBhcmUgaGlkZGVuIGJ5IHN0eWxlLCBvciBoYXZlIGJlZW4gc2Nyb2xsZWQgb3V0
IG9mIHZpZXcsIGNhbm5vdCBiZSBtYWluIGNvbnRlbnQuCiAgICAgLy8gQnV0IGVsZW1lbnRzIHdo
aWNoIGhhdmUgYXVkaW8gJiB2aWRlbyBhbmQgYXJlIGFscmVhZHkgcGxheWluZyBzaG91bGQgbm90
IHN0b3AgcGxheWluZyBiZWNhdXNlCiAgICAgLy8gdGhleSBhcmUgc2Nyb2xsZWQgb2ZmIHRoZSBw
YWdlLgotICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkK
KyAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZp
c2libGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAocmVuZGVyZXItPnZpc2libGVJ
blZpZXdwb3J0U3RhdGUoKSAhPSBWaXNpYmxlSW5WaWV3cG9ydFN0YXRlOjpZZXMgJiYgIWVsZW1l
bnQuaXNQbGF5aW5nKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvUnVieUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvUnVieUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL1J1YnlFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsOSArNTMsOSBAQCBSZWY8
UnVieUVsZW1lbnQ+IFJ1YnlFbGVtZW50OjpjcmVhdGUoRG9jCiAKIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBSdWJ5RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYg
c3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYgaW5zZXJ0aW9uUG9zaXRpb24pCiB7Ci0g
ICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBJTkxJTkUpCisgICAgaWYgKHN0eWxlLmRpc3BsYXko
KSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lKQogICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8
UmVuZGVyUnVieUFzSW5saW5lPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwotICAgIGlmIChzdHls
ZS5kaXNwbGF5KCkgPT0gQkxPQ0sgfHwgc3R5bGUuZGlzcGxheSgpID09IElOTElORV9CTE9DSykK
KyAgICBpZiAoc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpCbG9jayB8fCBzdHlsZS5k
aXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OklubGluZUJsb2NrKQogICAgICAgICByZXR1cm4gY3Jl
YXRlUmVuZGVyZXI8UmVuZGVyUnVieUFzQmxvY2s+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiAg
ICAgcmV0dXJuIEhUTUxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoV1RGTW92ZShzdHls
ZSksIGluc2VydGlvblBvc2l0aW9uKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvUnVi
eVRleHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1J1YnlU
ZXh0RWxlbWVudC5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
UnVieVRleHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBSZWY8
UnVieVRleHRFbGVtZW50PiBSdWJ5VGV4dEVsZW1lbnQ6OmNyCiBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gUnVieVRleHRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUm
JiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikKIHsK
ICAgICAvLyBSZW5kZXJSdWJ5VGV4dCByZXF1aXJlcyBpdHMgcGFyZW50IHRvIGJlIFJlbmRlclJ1
YnlSdW4uCi0gICAgaWYgKGlzUnVieShpbnNlcnRpb25Qb3NpdGlvbi5wYXJlbnQoKSkgJiYgc3R5
bGUuZGlzcGxheSgpID09IEJMT0NLKQorICAgIGlmIChpc1J1YnkoaW5zZXJ0aW9uUG9zaXRpb24u
cGFyZW50KCkpICYmIHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6QmxvY2spCiAgICAg
ICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJSdWJ5VGV4dD4oKnRoaXMsIFdURk1vdmUo
c3R5bGUpKTsKICAgICByZXR1cm4gSFRNTEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihX
VEZNb3ZlKHN0eWxlKSwgaW5zZXJ0aW9uUG9zaXRpb24pOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3Bw
CShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4LDcgQEAg
c3RkOjpvcHRpb25hbDxFbGVtZW50U3R5bGU+IFRleHRDb250cm9sSQogICAgIG5ld1N0eWxlLT5p
bmhlcml0RnJvbSgqc2hhZG93SG9zdFN0eWxlKTsKICAgICBuZXdTdHlsZS0+c2V0RmxleEdyb3co
MSk7CiAgICAgbmV3U3R5bGUtPnNldE1pbldpZHRoKExlbmd0aCB7IDAsIEZpeGVkIH0pOyAvLyBO
ZWVkZWQgZm9yIGNvcnJlY3Qgc2hyaW5raW5nLgotICAgIG5ld1N0eWxlLT5zZXREaXNwbGF5KEJM
T0NLKTsKKyAgICBuZXdTdHlsZS0+c2V0RGlzcGxheShEaXNwbGF5VHlwZTo6QmxvY2spOwogICAg
IG5ld1N0eWxlLT5zZXREaXJlY3Rpb24oTFRSKTsKICAgICAvLyBXZSBkb24ndCB3YW50IHRoZSBz
aGFkb3cgRE9NIHRvIGJlIGVkaXRhYmxlLCBzbyB3ZSBzZXQgdGhpcyBibG9jayB0byByZWFkLW9u
bHkgaW4gY2FzZSB0aGUgaW5wdXQgaXRzZWxmIGlzIGVkaXRhYmxlLgogICAgIG5ld1N0eWxlLT5z
ZXRVc2VyTW9kaWZ5KFVzZXJNb2RpZnk6OlJlYWRPbmx5KTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCBz
dGQ6Om9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xQCiAgICAgYXV0byBzdHlsZSA9
IHJlc29sdmVTdHlsZSgmcGFyZW50U3R5bGUpOwogCiAgICAgYXV0byYgY29udHJvbEVsZW1lbnQg
PSBkb3duY2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oKmNvbnRhaW5pbmdTaGFkb3dS
b290KCktPmhvc3QoKSk7Ci0gICAgc3R5bGUucmVuZGVyU3R5bGUtPnNldERpc3BsYXkoY29udHJv
bEVsZW1lbnQuaXNQbGFjZWhvbGRlclZpc2libGUoKSA/IEJMT0NLIDogTk9ORSk7CisgICAgc3R5
bGUucmVuZGVyU3R5bGUtPnNldERpc3BsYXkoY29udHJvbEVsZW1lbnQuaXNQbGFjZWhvbGRlclZp
c2libGUoKSA/IERpc3BsYXlUeXBlOjpCbG9jayA6IERpc3BsYXlUeXBlOjpOb25lKTsKIAogICAg
IGlmIChpczxIVE1MSW5wdXRFbGVtZW50Pihjb250cm9sRWxlbWVudCkpIHsKICAgICAgICAgYXV0
byYgaW5wdXRFbGVtZW50ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oY29udHJvbEVsZW1l
bnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5
LmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvck92ZXJsYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODYsOSArNTg2LDkgQEAgc3RhdGlj
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybAogICAgIH0KIAogICAgIGlmIChub2Rl
LT5pc1BzZXVkb0VsZW1lbnQoKSkgewotICAgICAgICBpZiAobm9kZS0+cHNldWRvSWQoKSA9PSBC
RUZPUkUpCisgICAgICAgIGlmIChub2RlLT5wc2V1ZG9JZCgpID09IFBzZXVkb0lkOjpCZWZvcmUp
CiAgICAgICAgICAgICBlbGVtZW50RGF0YS0+c2V0UHNldWRvRWxlbWVudCgiYmVmb3JlIik7Ci0g
ICAgICAgIGVsc2UgaWYgKG5vZGUtPnBzZXVkb0lkKCkgPT0gQUZURVIpCisgICAgICAgIGVsc2Ug
aWYgKG5vZGUtPnBzZXVkb0lkKCkgPT0gUHNldWRvSWQ6OkFmdGVyKQogICAgICAgICAgICAgZWxl
bWVudERhdGEtPnNldFBzZXVkb0VsZW1lbnQoImFmdGVyIik7CiAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50
LmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzOCw3ICs0MzgsNyBA
QCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzCiAKICAgICBFbGVtZW50
KiBvcmlnaW5hbEVsZW1lbnQgPSBlbGVtZW50OwogICAgIFBzZXVkb0lkIGVsZW1lbnRQc2V1ZG9J
ZCA9IGVsZW1lbnQtPnBzZXVkb0lkKCk7Ci0gICAgaWYgKGVsZW1lbnRQc2V1ZG9JZCkgeworICAg
IGlmIChlbGVtZW50UHNldWRvSWQgIT0gUHNldWRvSWQ6Ok5vbmUpIHsKICAgICAgICAgZWxlbWVu
dCA9IGRvd25jYXN0PFBzZXVkb0VsZW1lbnQ+KCplbGVtZW50KS5ob3N0RWxlbWVudCgpOwogICAg
ICAgICBpZiAoIWVsZW1lbnQpIHsKICAgICAgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRl
cmFsKCJQc2V1ZG8gZWxlbWVudCBoYXMgbm8gcGFyZW50Iik7CkBAIC00NTUsNyArNDU1LDcgQEAg
dm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlcwogICAgICAgICAvLyBQc2V1
ZG8gZWxlbWVudHMuCiAgICAgICAgIGlmICghaW5jbHVkZVBzZXVkbyB8fCAqaW5jbHVkZVBzZXVk
bykgewogICAgICAgICAgICAgYXV0byBwc2V1ZG9FbGVtZW50cyA9IEpTT046OkFycmF5T2Y8SW5z
cGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+OjpjcmVhdGUoKTsKLSAgICAg
ICAgICAgIGZvciAoUHNldWRvSWQgcHNldWRvSWQgPSBGSVJTVF9QVUJMSUNfUFNFVURPSUQ7IHBz
ZXVkb0lkIDwgQUZURVJfTEFTVF9JTlRFUk5BTF9QU0VVRE9JRDsgcHNldWRvSWQgPSBzdGF0aWNf
Y2FzdDxQc2V1ZG9JZD4ocHNldWRvSWQgKyAxKSkgeworICAgICAgICAgICAgZm9yIChQc2V1ZG9J
ZCBwc2V1ZG9JZCA9IFBzZXVkb0lkOjpGaXJzdFB1YmxpY1BzZXVkb0lkOyBwc2V1ZG9JZCA8IFBz
ZXVkb0lkOjpBZnRlckxhc3RJbnRlcm5hbFBzZXVkb0lkOyBwc2V1ZG9JZCA9IHN0YXRpY19jYXN0
PFBzZXVkb0lkPihzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHNldWRvSWQpICsgMSkpIHsKICAgICAg
ICAgICAgICAgICBhdXRvIG1hdGNoZWRSdWxlcyA9IHN0eWxlUmVzb2x2ZXIucHNldWRvU3R5bGVS
dWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgcHNldWRvSWQsIFN0eWxlUmVzb2x2ZXI6OkFsbENTU1J1
bGVzKTsKICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoZWRSdWxlcy5pc0VtcHR5KCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgYXV0byBtYXRjaGVzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpQc2V1ZG9JZE1hdGNoZXM6OmNyZWF0ZSgpCkBAIC00NzcsNyArNDc3LDcgQEAgdm9pZCBJbnNw
ZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlcwogICAgICAgICAgICAgICAgIFN0eWxlUmVz
b2x2ZXImIHBhcmVudFN0eWxlUmVzb2x2ZXIgPSBwYXJlbnRFbGVtZW50LT5zdHlsZVJlc29sdmVy
KCk7CiAgICAgICAgICAgICAgICAgYXV0byBwYXJlbnRNYXRjaGVkUnVsZXMgPSBwYXJlbnRTdHls
ZVJlc29sdmVyLnN0eWxlUnVsZXNGb3JFbGVtZW50KHBhcmVudEVsZW1lbnQsIFN0eWxlUmVzb2x2
ZXI6OkFsbENTU1J1bGVzKTsKICAgICAgICAgICAgICAgICBhdXRvIGVudHJ5ID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5OjpjcmVhdGUoKQotICAgICAgICAg
ICAgICAgICAgICAuc2V0TWF0Y2hlZENTU1J1bGVzKGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxp
c3QocGFyZW50TWF0Y2hlZFJ1bGVzLCBzdHlsZVJlc29sdmVyLCAqcGFyZW50RWxlbWVudCwgTk9Q
U0VVRE8pKQorICAgICAgICAgICAgICAgICAgICAuc2V0TWF0Y2hlZENTU1J1bGVzKGJ1aWxkQXJy
YXlGb3JNYXRjaGVkUnVsZUxpc3QocGFyZW50TWF0Y2hlZFJ1bGVzLCBzdHlsZVJlc29sdmVyLCAq
cGFyZW50RWxlbWVudCwgUHNldWRvSWQ6Ok5vbmUpKQogICAgICAgICAgICAgICAgICAgICAucmVs
ZWFzZSgpOwogICAgICAgICAgICAgICAgIGlmIChpczxTdHlsZWRFbGVtZW50PigqcGFyZW50RWxl
bWVudCkgJiYgZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oKnBhcmVudEVsZW1lbnQpLmNzc29tU3R5
bGUoKS5sZW5ndGgoKSkgewogICAgICAgICAgICAgICAgICAgICBhdXRvJiBzdHlsZVNoZWV0ID0g
YXNJbnNwZWN0b3JTdHlsZVNoZWV0KGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KCpwYXJlbnRFbGVt
ZW50KSk7CkBAIC04OTMsNyArODkzLDcgQEAgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9y
OjpQcm90b2NvbAogICAgIGF1dG8gcmVzdWx0ID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OlJ1bGVNYXRjaD46OmNyZWF0ZSgpOwogCiAgICAgU2VsZWN0b3JDaGVja2Vy
OjpDaGVja2luZ0NvbnRleHQgY29udGV4dChTZWxlY3RvckNoZWNrZXI6Ok1vZGU6OkNvbGxlY3Rp
bmdSdWxlcyk7Ci0gICAgY29udGV4dC5wc2V1ZG9JZCA9IHBzZXVkb0lkID8gcHNldWRvSWQgOiBl
bGVtZW50LnBzZXVkb0lkKCk7CisgICAgY29udGV4dC5wc2V1ZG9JZCA9IHBzZXVkb0lkICE9IFBz
ZXVkb0lkOjpOb25lID8gcHNldWRvSWQgOiBlbGVtZW50LnBzZXVkb0lkKCk7CiAgICAgU2VsZWN0
b3JDaGVja2VyIHNlbGVjdG9yQ2hlY2tlcihlbGVtZW50LmRvY3VtZW50KCkpOwogCiAgICAgZm9y
IChhdXRvJiBtYXRjaGVkUnVsZSA6IG1hdGNoZWRSdWxlcykgewpJbmRleDogU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAJKHJl
dmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcyLDEwICsxMzcyLDEwIEBAIHN0
YXRpYyBTdHJpbmcgZG9jdW1lbnRCYXNlVVJMU3RyaW5nKERvY3UKIHN0YXRpYyBib29sIHBzZXVk
b0VsZW1lbnRUeXBlKFBzZXVkb0lkIHBzZXVkb0lkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpET006
OlBzZXVkb1R5cGUqIHR5cGUpCiB7CiAgICAgc3dpdGNoIChwc2V1ZG9JZCkgewotICAgIGNhc2Ug
QkVGT1JFOgorICAgIGNhc2UgUHNldWRvSWQ6OkJlZm9yZToKICAgICAgICAgKnR5cGUgPSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpET006OlBzZXVkb1R5cGU6OkJlZm9yZTsKICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgY2FzZSBBRlRFUjoKKyAgICBjYXNlIFBzZXVkb0lkOjpBZnRlcjoKICAgICAg
ICAgKnR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpET006OlBzZXVkb1R5cGU6OkFmdGVyOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgpAQCAtMTUwMCw3ICsxNTAwLDcgQEAg
UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4gSW5zcAogICAgICAgICBpZiAoc3Rh
dGUgIT0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpDdXN0b21FbGVtZW50U3RhdGU6OkJ1aWx0
aW4pCiAgICAgICAgICAgICB2YWx1ZS0+c2V0Q3VzdG9tRWxlbWVudFN0YXRlKHN0YXRlKTsKIAot
ICAgICAgICBpZiAoZWxlbWVudC5wc2V1ZG9JZCgpKSB7CisgICAgICAgIGlmIChlbGVtZW50LnBz
ZXVkb0lkKCkgIT0gUHNldWRvSWQ6Ok5vbmUpIHsKICAgICAgICAgICAgIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRPTTo6UHNldWRvVHlwZSBwc2V1ZG9UeXBlOwogICAgICAgICAgICAgaWYgKHBzZXVk
b0VsZW1lbnRUeXBlKGVsZW1lbnQucHNldWRvSWQoKSwgJnBzZXVkb1R5cGUpKQogICAgICAgICAg
ICAgICAgIHZhbHVlLT5zZXRQc2V1ZG9UeXBlKHBzZXVkb1R5cGUpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRy
ZWVBZ2VudC5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTEsOSArMTkxLDkgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkxheWVyVHJlZTo6TGF5ZQog
ICAgIGlmIChpc0Fub255bW91cyAmJiAhcmVuZGVyZXItPmlzUmVuZGVyVmlldygpKSB7CiAgICAg
ICAgIGxheWVyT2JqZWN0LT5zZXRJc0Fub255bW91cyh0cnVlKTsKICAgICAgICAgY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7Ci0gICAgICAgIGlmIChzdHlsZS5z
dHlsZVR5cGUoKSA9PSBGSVJTVF9MRVRURVIpCisgICAgICAgIGlmIChzdHlsZS5zdHlsZVR5cGUo
KSA9PSBQc2V1ZG9JZDo6Rmlyc3RMZXR0ZXIpCiAgICAgICAgICAgICBsYXllck9iamVjdC0+c2V0
UHNldWRvRWxlbWVudCgiZmlyc3QtbGV0dGVyIik7Ci0gICAgICAgIGVsc2UgaWYgKHN0eWxlLnN0
eWxlVHlwZSgpID09IEZJUlNUX0xJTkUpCisgICAgICAgIGVsc2UgaWYgKHN0eWxlLnN0eWxlVHlw
ZSgpID09IFBzZXVkb0lkOjpGaXJzdExpbmUpCiAgICAgICAgICAgICBsYXllck9iamVjdC0+c2V0
UHNldWRvRWxlbWVudCgiZmlyc3QtbGluZSIpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCShyZXZpc2lvbiAyMzIxNDMp
CisrKyBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTIsMjggKzE1MiwyOCBAQCBib29sIEJveDo6aXNEZXNjZW5kYW50T2Yo
Q29udGFpbmVyJiBjb250CiAKIGJvb2wgQm94Ojppc0lubGluZUJsb2NrQm94KCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9zdHlsZS5kaXNwbGF5KCkgPT0gSU5MSU5FX0JMT0NLOworICAgIHJldHVy
biBtX3N0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lQmxvY2s7CiB9CiAKIGJv
b2wgQm94Ojppc0Jsb2NrTGV2ZWxCb3goKSBjb25zdAogewogICAgIC8vIEJsb2NrIGxldmVsIGVs
ZW1lbnRzIGdlbmVyYXRlIGJsb2NrIGxldmVsIGJveGVzLgogICAgIGF1dG8gZGlzcGxheSA9IG1f
c3R5bGUuZGlzcGxheSgpOwotICAgIHJldHVybiBkaXNwbGF5ID09IEJMT0NLIHx8IGRpc3BsYXkg
PT0gTElTVF9JVEVNIHx8IGRpc3BsYXkgPT0gVEFCTEU7CisgICAgcmV0dXJuIGRpc3BsYXkgPT0g
RGlzcGxheVR5cGU6OkJsb2NrIHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6Okxpc3RJdGVtIHx8
IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OlRhYmxlOwogfQogCiBib29sIEJveDo6aXNJbmxpbmVM
ZXZlbEJveCgpIGNvbnN0CiB7CiAgICAgLy8gSW5saW5lIGxldmVsIGVsZW1lbnRzIGdlbmVyYXRl
IGlubGluZSBsZXZlbCBib3hlcy4KICAgICBhdXRvIGRpc3BsYXkgPSBtX3N0eWxlLmRpc3BsYXko
KTsKLSAgICByZXR1cm4gZGlzcGxheSA9PSBJTkxJTkUgfHwgZGlzcGxheSA9PSBJTkxJTkVfQkxP
Q0sgfHwgZGlzcGxheSA9PSBJTkxJTkVfVEFCTEU7CisgICAgcmV0dXJuIGRpc3BsYXkgPT0gRGlz
cGxheVR5cGU6OklubGluZSB8fCBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpJbmxpbmVCbG9jayB8
fCBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpJbmxpbmVUYWJsZTsKIH0KIAogYm9vbCBCb3g6Omlz
QmxvY2tDb250YWluZXJCb3goKSBjb25zdAogewogICAgIC8vIElubGluZSBsZXZlbCBlbGVtZW50
cyBnZW5lcmF0ZSBpbmxpbmUgbGV2ZWwgYm94ZXMuCiAgICAgYXV0byBkaXNwbGF5ID0gbV9zdHls
ZS5kaXNwbGF5KCk7Ci0gICAgcmV0dXJuIGRpc3BsYXkgPT0gQkxPQ0sgfHwgZGlzcGxheSA9PSBM
SVNUX0lURU0gfHwgZGlzcGxheSA9PSBJTkxJTkVfQkxPQ0sgfHwgZGlzcGxheSA9PSBUQUJMRV9D
RUxMIHx8IGRpc3BsYXkgPT0gVEFCTEVfQ0FQVElPTjsgLy8gVE9ETyAmJiAhcmVwbGFjZWQgZWxl
bWVudAorICAgIHJldHVybiBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpCbG9jayB8fCBkaXNwbGF5
ID09IERpc3BsYXlUeXBlOjpMaXN0SXRlbSB8fCBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpJbmxp
bmVCbG9jayB8fCBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpUYWJsZUNlbGwgfHwgZGlzcGxheSA9
PSBEaXNwbGF5VHlwZTo6VGFibGVDYXB0aW9uOyAvLyBUT0RPICYmICFyZXBsYWNlZCBlbGVtZW50
CiB9CiAKIGJvb2wgQm94Ojppc0luaXRpYWxDb250YWluaW5nQmxvY2soKSBjb25zdApJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEw
LDcgKzE0MTAsNyBAQCBzdGQ6Om9wdGlvbmFsPEN1cnNvcj4gRXZlbnRIYW5kbGVyOjpzZWxlCiAg
ICAgY29uc3QgQ3Vyc29yJiBpQmVhbSA9IGhvcml6b250YWxUZXh0ID8gaUJlYW1DdXJzb3IoKSA6
IHZlcnRpY2FsVGV4dEN1cnNvcigpOwogCiAjaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQot
ICAgIGlmIChzdHlsZSAmJiBzdHlsZS0+Y3Vyc29yVmlzaWJpbGl0eSgpID09IEN1cnNvclZpc2li
aWxpdHlBdXRvSGlkZSkKKyAgICBpZiAoc3R5bGUgJiYgc3R5bGUtPmN1cnNvclZpc2liaWxpdHko
KSA9PSBDdXJzb3JWaXNpYmlsaXR5OjpBdXRvSGlkZSkKICAgICAgICAgc3RhcnRBdXRvSGlkZUN1
cnNvclRpbWVyKCk7CiAgICAgZWxzZQogICAgICAgICBjYW5jZWxBdXRvSGlkZUN1cnNvclRpbWVy
KCk7CkBAIC0xNDczLDggKzE0NzMsOCBAQCBzdGQ6Om9wdGlvbmFsPEN1cnNvcj4gRXZlbnRIYW5k
bGVyOjpzZWxlCiAgICAgICAgICYmICFtX2NhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudCkKICAg
ICAgICAgcmV0dXJuIGlCZWFtOwogCi0gICAgc3dpdGNoIChzdHlsZSA/IHN0eWxlLT5jdXJzb3Io
KSA6IEN1cnNvckF1dG8pIHsKLSAgICBjYXNlIEN1cnNvckF1dG86IHsKKyAgICBzd2l0Y2ggKHN0
eWxlID8gc3R5bGUtPmN1cnNvcigpIDogQ3Vyc29yVHlwZTo6QXV0bykgeworICAgIGNhc2UgQ3Vy
c29yVHlwZTo6QXV0bzogewogICAgICAgICBib29sIGVkaXRhYmxlID0gbm9kZS0+aGFzRWRpdGFi
bGVTdHlsZSgpOwogCiAgICAgICAgIGlmICh1c2VIYW5kQ3Vyc29yKG5vZGUsIHJlc3VsdC5pc092
ZXJMaW5rKCksIHNoaWZ0S2V5KSkKQEAgLTE0OTIsNzUgKzE0OTIsNzUgQEAgc3RkOjpvcHRpb25h
bDxDdXJzb3I+IEV2ZW50SGFuZGxlcjo6c2VsZQogICAgICAgICAgICAgcmV0dXJuIGlCZWFtOwog
ICAgICAgICByZXR1cm4gcG9pbnRlckN1cnNvcigpOwogICAgIH0KLSAgICBjYXNlIEN1cnNvckRl
ZmF1bHQ6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpEZWZhdWx0OgogICAgICAgICByZXR1cm4gcG9p
bnRlckN1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29yTm9uZToKKyAgICBjYXNlIEN1cnNvclR5cGU6
Ok5vbmU6CiAgICAgICAgIHJldHVybiBub25lQ3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JDb250
ZXh0TWVudToKKyAgICBjYXNlIEN1cnNvclR5cGU6OkNvbnRleHRNZW51OgogICAgICAgICByZXR1
cm4gY29udGV4dE1lbnVDdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNvckhlbHA6CisgICAgY2FzZSBD
dXJzb3JUeXBlOjpIZWxwOgogICAgICAgICByZXR1cm4gaGVscEN1cnNvcigpOwotICAgIGNhc2Ug
Q3Vyc29yUG9pbnRlcjoKKyAgICBjYXNlIEN1cnNvclR5cGU6OlBvaW50ZXI6CiAgICAgICAgIHJl
dHVybiBoYW5kQ3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JQcm9ncmVzczoKKyAgICBjYXNlIEN1
cnNvclR5cGU6OlByb2dyZXNzOgogICAgICAgICByZXR1cm4gcHJvZ3Jlc3NDdXJzb3IoKTsKLSAg
ICBjYXNlIEN1cnNvcldhaXQ6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpXYWl0OgogICAgICAgICBy
ZXR1cm4gd2FpdEN1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29yQ2VsbDoKKyAgICBjYXNlIEN1cnNv
clR5cGU6OkNlbGw6CiAgICAgICAgIHJldHVybiBjZWxsQ3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJz
b3JDcm9zc2hhaXI6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpDcm9zc2hhaXI6CiAgICAgICAgIHJl
dHVybiBjcm9zc0N1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29yVGV4dDoKKyAgICBjYXNlIEN1cnNv
clR5cGU6OlRleHQ6CiAgICAgICAgIHJldHVybiBpQmVhbUN1cnNvcigpOwotICAgIGNhc2UgQ3Vy
c29yVmVydGljYWxUZXh0OgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6VmVydGljYWxUZXh0OgogICAg
ICAgICByZXR1cm4gdmVydGljYWxUZXh0Q3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JBbGlhczoK
KyAgICBjYXNlIEN1cnNvclR5cGU6OkFsaWFzOgogICAgICAgICByZXR1cm4gYWxpYXNDdXJzb3Io
KTsKLSAgICBjYXNlIEN1cnNvckNvcHk6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpDb3B5OgogICAg
ICAgICByZXR1cm4gY29weUN1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29yTW92ZToKKyAgICBjYXNl
IEN1cnNvclR5cGU6Ok1vdmU6CiAgICAgICAgIHJldHVybiBtb3ZlQ3Vyc29yKCk7Ci0gICAgY2Fz
ZSBDdXJzb3JOb0Ryb3A6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpOb0Ryb3A6CiAgICAgICAgIHJl
dHVybiBub0Ryb3BDdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNvck5vdEFsbG93ZWQ6CisgICAgY2Fz
ZSBDdXJzb3JUeXBlOjpOb3RBbGxvd2VkOgogICAgICAgICByZXR1cm4gbm90QWxsb3dlZEN1cnNv
cigpOwotICAgIGNhc2UgQ3Vyc29yR3JhYjoKKyAgICBjYXNlIEN1cnNvclR5cGU6OkdyYWI6CiAg
ICAgICAgIHJldHVybiBncmFiQ3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JHcmFiYmluZzoKKyAg
ICBjYXNlIEN1cnNvclR5cGU6OkdyYWJiaW5nOgogICAgICAgICByZXR1cm4gZ3JhYmJpbmdDdXJz
b3IoKTsKLSAgICBjYXNlIEN1cnNvckVSZXNpemU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpFUmVz
aXplOgogICAgICAgICByZXR1cm4gZWFzdFJlc2l6ZUN1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29y
TlJlc2l6ZToKKyAgICBjYXNlIEN1cnNvclR5cGU6Ok5SZXNpemU6CiAgICAgICAgIHJldHVybiBu
b3J0aFJlc2l6ZUN1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29yTmVSZXNpemU6CisgICAgY2FzZSBD
dXJzb3JUeXBlOjpORVJlc2l6ZToKICAgICAgICAgcmV0dXJuIG5vcnRoRWFzdFJlc2l6ZUN1cnNv
cigpOwotICAgIGNhc2UgQ3Vyc29yTndSZXNpemU6CisgICAgY2FzZSBDdXJzb3JUeXBlOjpOV1Jl
c2l6ZToKICAgICAgICAgcmV0dXJuIG5vcnRoV2VzdFJlc2l6ZUN1cnNvcigpOwotICAgIGNhc2Ug
Q3Vyc29yU1Jlc2l6ZToKKyAgICBjYXNlIEN1cnNvclR5cGU6OlNSZXNpemU6CiAgICAgICAgIHJl
dHVybiBzb3V0aFJlc2l6ZUN1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29yU2VSZXNpemU6CisgICAg
Y2FzZSBDdXJzb3JUeXBlOjpTRVJlc2l6ZToKICAgICAgICAgcmV0dXJuIHNvdXRoRWFzdFJlc2l6
ZUN1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29yU3dSZXNpemU6CisgICAgY2FzZSBDdXJzb3JUeXBl
OjpTV1Jlc2l6ZToKICAgICAgICAgcmV0dXJuIHNvdXRoV2VzdFJlc2l6ZUN1cnNvcigpOwotICAg
IGNhc2UgQ3Vyc29yV1Jlc2l6ZToKKyAgICBjYXNlIEN1cnNvclR5cGU6OldSZXNpemU6CiAgICAg
ICAgIHJldHVybiB3ZXN0UmVzaXplQ3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JFd1Jlc2l6ZToK
KyAgICBjYXNlIEN1cnNvclR5cGU6OkVXUmVzaXplOgogICAgICAgICByZXR1cm4gZWFzdFdlc3RS
ZXNpemVDdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNvck5zUmVzaXplOgorICAgIGNhc2UgQ3Vyc29y
VHlwZTo6TlNSZXNpemU6CiAgICAgICAgIHJldHVybiBub3J0aFNvdXRoUmVzaXplQ3Vyc29yKCk7
Ci0gICAgY2FzZSBDdXJzb3JOZXN3UmVzaXplOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6TkVTV1Jl
c2l6ZToKICAgICAgICAgcmV0dXJuIG5vcnRoRWFzdFNvdXRoV2VzdFJlc2l6ZUN1cnNvcigpOwot
ICAgIGNhc2UgQ3Vyc29yTndzZVJlc2l6ZToKKyAgICBjYXNlIEN1cnNvclR5cGU6Ok5XU0VSZXNp
emU6CiAgICAgICAgIHJldHVybiBub3J0aFdlc3RTb3V0aEVhc3RSZXNpemVDdXJzb3IoKTsKLSAg
ICBjYXNlIEN1cnNvckNvbFJlc2l6ZToKKyAgICBjYXNlIEN1cnNvclR5cGU6OkNvbHVtblJlc2l6
ZToKICAgICAgICAgcmV0dXJuIGNvbHVtblJlc2l6ZUN1cnNvcigpOwotICAgIGNhc2UgQ3Vyc29y
Um93UmVzaXplOgorICAgIGNhc2UgQ3Vyc29yVHlwZTo6Um93UmVzaXplOgogICAgICAgICByZXR1
cm4gcm93UmVzaXplQ3Vyc29yKCk7Ci0gICAgY2FzZSBDdXJzb3JBbGxTY3JvbGw6CisgICAgY2Fz
ZSBDdXJzb3JUeXBlOjpBbGxTY3JvbGw6CiAgICAgICAgIHJldHVybiBtb3ZlQ3Vyc29yKCk7Ci0g
ICAgY2FzZSBDdXJzb3Jab29tSW46CisgICAgY2FzZSBDdXJzb3JUeXBlOjpab29tSW46CiAgICAg
ICAgIHJldHVybiB6b29tSW5DdXJzb3IoKTsKLSAgICBjYXNlIEN1cnNvclpvb21PdXQ6CisgICAg
Y2FzZSBDdXJzb3JUeXBlOjpab29tT3V0OgogICAgICAgICByZXR1cm4gem9vbU91dEN1cnNvcigp
OwogICAgIH0KICAgICByZXR1cm4gcG9pbnRlckN1cnNvcigpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zODQsNyArMzg0LDcgQEAgU3RyaW5nIEZyYW1lOjpzZWFyY2hG
b3JMYWJlbHNBYm92ZUNlbGwoYwogICAgICAgICAvLyBzZWFyY2ggd2l0aGluIHRoZSBhYm92ZSBj
ZWxsIHdlIGZvdW5kIGZvciBhIG1hdGNoCiAgICAgICAgIHNpemVfdCBsZW5ndGhTZWFyY2hlZCA9
IDA7ICAgIAogICAgICAgICBmb3IgKFRleHQqIHRleHROb2RlID0gVGV4dE5vZGVUcmF2ZXJzYWw6
OmZpcnN0V2l0aGluKCphYm92ZUNlbGwpOyB0ZXh0Tm9kZTsgdGV4dE5vZGUgPSBUZXh0Tm9kZVRy
YXZlcnNhbDo6bmV4dCgqdGV4dE5vZGUsIGFib3ZlQ2VsbCkpIHsKLSAgICAgICAgICAgIGlmICgh
dGV4dE5vZGUtPnJlbmRlcmVyKCkgfHwgdGV4dE5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCkudmlz
aWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgICAgICAgICBpZiAoIXRleHROb2RlLT5yZW5kZXJl
cigpIHx8IHRleHROb2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNp
YmlsaXR5OjpWaXNpYmxlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
Ly8gRm9yIGVhY2ggdGV4dCBjaHVuaywgcnVuIHRoZSByZWdleHAKICAgICAgICAgICAgIFN0cmlu
ZyBub2RlU3RyaW5nID0gdGV4dE5vZGUtPmRhdGEoKTsKQEAgLTQ0MSw3ICs0NDEsNyBAQCBTdHJp
bmcgRnJhbWU6OnNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNlYXJjaGVkQ2VsbEFib3Zl
ID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlmIChuLT5pc1RleHROb2RlKCkgJiYgbi0+cmVuZGVy
ZXIoKSAmJiBuLT5yZW5kZXJlcigpLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKSB7
CisgICAgICAgIH0gZWxzZSBpZiAobi0+aXNUZXh0Tm9kZSgpICYmIG4tPnJlbmRlcmVyKCkgJiYg
bi0+cmVuZGVyZXIoKS0+c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJs
ZSkgewogICAgICAgICAgICAgLy8gRm9yIGVhY2ggdGV4dCBjaHVuaywgcnVuIHRoZSByZWdleHAK
ICAgICAgICAgICAgIFN0cmluZyBub2RlU3RyaW5nID0gbi0+bm9kZVZhbHVlKCk7CiAgICAgICAg
ICAgICAvLyBhZGQgMTAwIGZvciBzbG9wLCB0byBtYWtlIGl0IG1vcmUgbGlrZWx5IHRoYXQgd2Un
bGwgc2VhcmNoIHdob2xlIG5vZGVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShy
ZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU0NywxNyArNTQ3LDE3IEBAIFJlZjxTY3JvbGxiYXI+IEZyYW1lVmll
dzo6Y3JlYXRlU2Nyb2xsYmEKIAogICAgIC8vIFRyeSB0aGUgPGJvZHk+IGVsZW1lbnQgZmlyc3Qg
YXMgYSBzY3JvbGxiYXIgc291cmNlLgogICAgIEhUTUxFbGVtZW50KiBib2R5ID0gZG9jID8gZG9j
LT5ib2R5T3JGcmFtZXNldCgpIDogbnVsbHB0cjsKLSAgICBpZiAoYm9keSAmJiBib2R5LT5yZW5k
ZXJlcigpICYmIGJvZHktPnJlbmRlcmVyKCktPnN0eWxlKCkuaGFzUHNldWRvU3R5bGUoU0NST0xM
QkFSKSkKKyAgICBpZiAoYm9keSAmJiBib2R5LT5yZW5kZXJlcigpICYmIGJvZHktPnJlbmRlcmVy
KCktPnN0eWxlKCkuaGFzUHNldWRvU3R5bGUoUHNldWRvSWQ6OlNjcm9sbGJhcikpCiAgICAgICAg
IHJldHVybiBSZW5kZXJTY3JvbGxiYXI6OmNyZWF0ZUN1c3RvbVNjcm9sbGJhcigqdGhpcywgb3Jp
ZW50YXRpb24sIGJvZHkpOwogICAgIAogICAgIC8vIElmIHRoZSA8Ym9keT4gZGlkbid0IGhhdmUg
YSBjdXN0b20gc3R5bGUsIHRoZW4gdGhlIHJvb3QgZWxlbWVudCBtaWdodC4KICAgICBFbGVtZW50
KiBkb2NFbGVtZW50ID0gZG9jID8gZG9jLT5kb2N1bWVudEVsZW1lbnQoKSA6IG51bGxwdHI7Ci0g
ICAgaWYgKGRvY0VsZW1lbnQgJiYgZG9jRWxlbWVudC0+cmVuZGVyZXIoKSAmJiBkb2NFbGVtZW50
LT5yZW5kZXJlcigpLT5zdHlsZSgpLmhhc1BzZXVkb1N0eWxlKFNDUk9MTEJBUikpCisgICAgaWYg
KGRvY0VsZW1lbnQgJiYgZG9jRWxlbWVudC0+cmVuZGVyZXIoKSAmJiBkb2NFbGVtZW50LT5yZW5k
ZXJlcigpLT5zdHlsZSgpLmhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkOjpTY3JvbGxiYXIpKQogICAg
ICAgICByZXR1cm4gUmVuZGVyU2Nyb2xsYmFyOjpjcmVhdGVDdXN0b21TY3JvbGxiYXIoKnRoaXMs
IG9yaWVudGF0aW9uLCBkb2NFbGVtZW50KTsKLSAgICAgICAgCisKICAgICAvLyBJZiB3ZSBoYXZl
IGFuIG93bmluZyBpZnJhbWUvZnJhbWUgZWxlbWVudCwgdGhlbiBpdCBjYW4gc2V0IHRoZSBjdXN0
b20gc2Nyb2xsYmFyIGFsc28uCiAgICAgUmVuZGVyV2lkZ2V0KiBmcmFtZVJlbmRlcmVyID0gZnJh
bWUoKS5vd25lclJlbmRlcmVyKCk7Ci0gICAgaWYgKGZyYW1lUmVuZGVyZXIgJiYgZnJhbWVSZW5k
ZXJlci0+c3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShTQ1JPTExCQVIpKQorICAgIGlmIChmcmFtZVJl
bmRlcmVyICYmIGZyYW1lUmVuZGVyZXItPnN0eWxlKCkuaGFzUHNldWRvU3R5bGUoUHNldWRvSWQ6
OlNjcm9sbGJhcikpCiAgICAgICAgIHJldHVybiBSZW5kZXJTY3JvbGxiYXI6OmNyZWF0ZUN1c3Rv
bVNjcm9sbGJhcigqdGhpcywgb3JpZW50YXRpb24sIG51bGxwdHIsICZmcmFtZSgpKTsKICAgICAK
ICAgICAvLyBOb2JvZHkgc2V0IGEgY3VzdG9tIHN0eWxlLCBzbyB3ZSBqdXN0IHVzZSBhIG5hdGl2
ZSBzY3JvbGxiYXIuCkBAIC0zNjE5LDcgKzM2MTksNyBAQCBmbG9hdCBGcmFtZVZpZXc6OmFkanVz
dFNjcm9sbFN0ZXBGb3JGaXhlCiAgICAgZmxvYXQgYm90dG9tT2JzY3VyZWRBcmVhID0gMDsKICAg
ICBmb3IgKGNvbnN0IGF1dG8mIHBvc2l0aW9uZWRPYmplY3QgOiAqcG9zaXRpb25lZE9iamVjdHMp
IHsKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gcG9zaXRpb25lZE9iamVjdC0+
c3R5bGUoKTsKLSAgICAgICAgaWYgKHN0eWxlLnBvc2l0aW9uKCkgIT0gUG9zaXRpb25UeXBlOjpG
aXhlZCB8fCBzdHlsZS52aXNpYmlsaXR5KCkgPT0gSElEREVOIHx8ICFzdHlsZS5vcGFjaXR5KCkp
CisgICAgICAgIGlmIChzdHlsZS5wb3NpdGlvbigpICE9IFBvc2l0aW9uVHlwZTo6Rml4ZWQgfHwg
c3R5bGUudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OkhpZGRlbiB8fCAhc3R5bGUub3BhY2l0
eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgRmxvYXRRdWFkIGNvbnRlbnRR
dWFkID0gcG9zaXRpb25lZE9iamVjdC0+YWJzb2x1dGVDb250ZW50UXVhZCgpOwpAQCAtMzgyOCw3
ICszODI4LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZVNjcm9sbENvcm5lcigpCiAgICAgICAg
IEVsZW1lbnQqIGJvZHkgPSBkb2MgPyBkb2MtPmJvZHlPckZyYW1lc2V0KCkgOiBudWxscHRyOwog
ICAgICAgICBpZiAoYm9keSAmJiBib2R5LT5yZW5kZXJlcigpKSB7CiAgICAgICAgICAgICByZW5k
ZXJlciA9IGJvZHktPnJlbmRlcmVyKCk7Ci0gICAgICAgICAgICBjb3JuZXJTdHlsZSA9IHJlbmRl
cmVyLT5nZXRVbmNhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb1N0eWxlUmVxdWVzdChTQ1JPTExCQVJf
Q09STkVSKSwgJnJlbmRlcmVyLT5zdHlsZSgpKTsKKyAgICAgICAgICAgIGNvcm5lclN0eWxlID0g
cmVuZGVyZXItPmdldFVuY2FjaGVkUHNldWRvU3R5bGUoUHNldWRvU3R5bGVSZXF1ZXN0KFBzZXVk
b0lkOjpTY3JvbGxiYXJDb3JuZXIpLCAmcmVuZGVyZXItPnN0eWxlKCkpOwogICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICBpZiAoIWNvcm5lclN0eWxlKSB7CkBAIC0zODM2LDE0ICszODM2LDE0
IEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIoKQogICAgICAgICAgICAgRWxl
bWVudCogZG9jRWxlbWVudCA9IGRvYyA/IGRvYy0+ZG9jdW1lbnRFbGVtZW50KCkgOiBudWxscHRy
OwogICAgICAgICAgICAgaWYgKGRvY0VsZW1lbnQgJiYgZG9jRWxlbWVudC0+cmVuZGVyZXIoKSkg
ewogICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gZG9jRWxlbWVudC0+cmVuZGVyZXIoKTsKLSAg
ICAgICAgICAgICAgICBjb3JuZXJTdHlsZSA9IHJlbmRlcmVyLT5nZXRVbmNhY2hlZFBzZXVkb1N0
eWxlKFBzZXVkb1N0eWxlUmVxdWVzdChTQ1JPTExCQVJfQ09STkVSKSwgJnJlbmRlcmVyLT5zdHls
ZSgpKTsKKyAgICAgICAgICAgICAgICBjb3JuZXJTdHlsZSA9IHJlbmRlcmVyLT5nZXRVbmNhY2hl
ZFBzZXVkb1N0eWxlKFBzZXVkb1N0eWxlUmVxdWVzdChQc2V1ZG9JZDo6U2Nyb2xsYmFyQ29ybmVy
KSwgJnJlbmRlcmVyLT5zdHlsZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgaWYgKCFjb3JuZXJTdHlsZSkgewogICAgICAgICAgICAgLy8gSWYgd2UgaGF2
ZSBhbiBvd25pbmcgaWZyYW1lL2ZyYW1lIGVsZW1lbnQsIHRoZW4gaXQgY2FuIHNldCB0aGUgY3Vz
dG9tIHNjcm9sbGJhciBhbHNvLgogICAgICAgICAgICAgaWYgKFJlbmRlcldpZGdldCogcmVuZGVy
ZXIgPSBmcmFtZSgpLm93bmVyUmVuZGVyZXIoKSkKLSAgICAgICAgICAgICAgICBjb3JuZXJTdHls
ZSA9IHJlbmRlcmVyLT5nZXRVbmNhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb1N0eWxlUmVxdWVzdChT
Q1JPTExCQVJfQ09STkVSKSwgJnJlbmRlcmVyLT5zdHlsZSgpKTsKKyAgICAgICAgICAgICAgICBj
b3JuZXJTdHlsZSA9IHJlbmRlcmVyLT5nZXRVbmNhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb1N0eWxl
UmVxdWVzdChQc2V1ZG9JZDo6U2Nyb2xsYmFyQ29ybmVyKSwgJnJlbmRlcmVyLT5zdHlsZSgpKTsK
ICAgICAgICAgfQogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
QW5pbWF0aW9uQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vQW5pbWF0aW9uQmFzZS5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDAsNyArMTAwLDcgQEAgZG91YmxlIEFuaW1hdGlvbkJhc2U6OmR1cmF0aW9uKCkgY29uc3QKIAog
Ym9vbCBBbmltYXRpb25CYXNlOjpwbGF5U3RhdGVQbGF5aW5nKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9hbmltYXRpb24tPnBsYXlTdGF0ZSgpID09IEFuaW1QbGF5U3RhdGVQbGF5aW5nOworICAg
IHJldHVybiBtX2FuaW1hdGlvbi0+cGxheVN0YXRlKCkgPT0gQW5pbWF0aW9uUGxheVN0YXRlOjpQ
bGF5aW5nOwogfQogCiBib29sIEFuaW1hdGlvbkJhc2U6OmFuaW1hdGlvbnNNYXRjaChjb25zdCBB
bmltYXRpb24mIGFuaW1hdGlvbikgY29uc3QKQEAgLTU1Miw3ICs1NTIsNyBAQCB2b2lkIEFuaW1h
dGlvbkJhc2U6OmZpcmVBbmltYXRpb25FdmVudHNJCiAgICAgfQogfQogCi12b2lkIEFuaW1hdGlv
bkJhc2U6OnVwZGF0ZVBsYXlTdGF0ZShFQW5pbVBsYXlTdGF0ZSBwbGF5U3RhdGUpCit2b2lkIEFu
aW1hdGlvbkJhc2U6OnVwZGF0ZVBsYXlTdGF0ZShBbmltYXRpb25QbGF5U3RhdGUgcGxheVN0YXRl
KQogewogICAgIGlmICghbV9jb21wb3NpdGVBbmltYXRpb24pCiAgICAgICAgIHJldHVybjsKQEAg
LTU2MCw3ICs1NjAsNyBAQCB2b2lkIEFuaW1hdGlvbkJhc2U6OnVwZGF0ZVBsYXlTdGF0ZShFQW5p
CiAgICAgLy8gV2hlbiB3ZSBnZXQgaGVyZSwgd2UgY2FuIGhhdmUgb25lIG9mIDQgZGVzaXJlZCBz
dGF0ZXM6IHJ1bm5pbmcsIHBhdXNlZCwgc3VzcGVuZGVkLCBwYXVzZWQgJiBzdXNwZW5kZWQuCiAg
ICAgLy8gVGhlIHN0YXRlIG1hY2hpbmUgY2FuIGJlIGluIG9uZSBvZiB0d28gc3RhdGVzOiBydW5u
aW5nLCBwYXVzZWQuCiAgICAgLy8gU2V0IHRoZSBzdGF0ZSBtYWNoaW5lIHRvIHRoZSBkZXNpcmVk
IHN0YXRlLgotICAgIGJvb2wgcGF1c2UgPSBwbGF5U3RhdGUgPT0gQW5pbVBsYXlTdGF0ZVBhdXNl
ZCB8fCBtX2NvbXBvc2l0ZUFuaW1hdGlvbi0+aXNTdXNwZW5kZWQoKTsKKyAgICBib29sIHBhdXNl
ID0gcGxheVN0YXRlID09IEFuaW1hdGlvblBsYXlTdGF0ZTo6UGF1c2VkIHx8IG1fY29tcG9zaXRl
QW5pbWF0aW9uLT5pc1N1c3BlbmRlZCgpOwogCiAgICAgaWYgKHBhdXNlID09IHBhdXNlZCgpICYm
ICFpc05ldygpKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9BbmltYXRpb25CYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5oCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gQ2FsbGVkIHRvIGNoYW5n
ZSB0byBvciBmcm9tIHBhdXNlZCBzdGF0ZQotICAgIHZvaWQgdXBkYXRlUGxheVN0YXRlKEVBbmlt
UGxheVN0YXRlKTsKKyAgICB2b2lkIHVwZGF0ZVBsYXlTdGF0ZShBbmltYXRpb25QbGF5U3RhdGUp
OwogICAgIGJvb2wgcGxheVN0YXRlUGxheWluZygpIGNvbnN0OwogCiAgICAgYm9vbCB3YWl0aW5n
VG9TdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0aW9uU3RhdGUgPT0gQW5pbWF0aW9uU3Rh
dGU6Ok5ldyB8fCBtX2FuaW1hdGlvblN0YXRlID09IEFuaW1hdGlvblN0YXRlOjpTdGFydFdhaXRU
aW1lciB8fCBtX2FuaW1hdGlvblN0YXRlID09IEFuaW1hdGlvblN0YXRlOjpQYXVzZWROZXc7IH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9w
ZXJ0eUFuaW1hdGlvbi5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjQ3LDE2ICsyNDcsMTYgQEAgc3RhdGljIGlubGluZSBSZWZQdHI8U3R5bGVJbWFnZT4gYmxlbmRG
aQogICAgIHJldHVybiBTdHlsZUdlbmVyYXRlZEltYWdlOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQp
KTsKIH0KIAotc3RhdGljIGlubGluZSBFVmlzaWJpbGl0eSBibGVuZEZ1bmMoY29uc3QgQ1NTUHJv
cGVydHlCbGVuZGluZ0NsaWVudCogYW5pbSwgRVZpc2liaWxpdHkgZnJvbSwgRVZpc2liaWxpdHkg
dG8sIGRvdWJsZSBwcm9ncmVzcykKK3N0YXRpYyBpbmxpbmUgVmlzaWJpbGl0eSBibGVuZEZ1bmMo
Y29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsaWVudCogYW5pbSwgVmlzaWJpbGl0eSBmcm9tLCBW
aXNpYmlsaXR5IHRvLCBkb3VibGUgcHJvZ3Jlc3MpCiB7CiAgICAgLy8gQW55IG5vbi16ZXJvIHJl
c3VsdCBtZWFucyB3ZSBjb25zaWRlciB0aGUgb2JqZWN0IHRvIGJlIHZpc2libGUuIE9ubHkgYXQg
MCBkbyB3ZSBjb25zaWRlciB0aGUgb2JqZWN0IHRvIGJlCi0gICAgLy8gaW52aXNpYmxlLiBUaGUg
aW52aXNpYmxlIHZhbHVlIHdlIHVzZSAoSElEREVOIHZzLiBDT0xMQVBTRSkgZGVwZW5kcyBvbiB0
aGUgc3BlY2lmaWVkIGZyb20vdG8gdmFsdWVzLgotICAgIGRvdWJsZSBmcm9tVmFsID0gZnJvbSA9
PSBWSVNJQkxFID8gMS4gOiAwLjsKLSAgICBkb3VibGUgdG9WYWwgPSB0byA9PSBWSVNJQkxFID8g
MS4gOiAwLjsKKyAgICAvLyBpbnZpc2libGUuIFRoZSBpbnZpc2libGUgdmFsdWUgd2UgdXNlIChW
aXNpYmlsaXR5OjpIaWRkZW4gdnMuIFZpc2liaWxpdHk6OkNvbGxhcHNlKSBkZXBlbmRzIG9uIHRo
ZSBzcGVjaWZpZWQgZnJvbS90byB2YWx1ZXMuCisgICAgZG91YmxlIGZyb21WYWwgPSBmcm9tID09
IFZpc2liaWxpdHk6OlZpc2libGUgPyAxLiA6IDAuOworICAgIGRvdWJsZSB0b1ZhbCA9IHRvID09
IFZpc2liaWxpdHk6OlZpc2libGUgPyAxLiA6IDAuOwogICAgIGlmIChmcm9tVmFsID09IHRvVmFs
KQogICAgICAgICByZXR1cm4gdG87CiAgICAgZG91YmxlIHJlc3VsdCA9IGJsZW5kRnVuYyhhbmlt
LCBmcm9tVmFsLCB0b1ZhbCwgcHJvZ3Jlc3MpOwotICAgIHJldHVybiByZXN1bHQgPiAwLiA/IFZJ
U0lCTEUgOiAodG8gIT0gVklTSUJMRSA/IHRvIDogZnJvbSk7CisgICAgcmV0dXJuIHJlc3VsdCA+
IDAuID8gVmlzaWJpbGl0eTo6VmlzaWJsZSA6ICh0byAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlID8g
dG8gOiBmcm9tKTsKIH0KIAogc3RhdGljIGlubGluZSBMZW5ndGhCb3ggYmxlbmRGdW5jKGNvbnN0
IENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQqIGFuaW0sIGNvbnN0IExlbmd0aEJveCYgZnJvbSwg
Y29uc3QgTGVuZ3RoQm94JiB0bywgZG91YmxlIHByb2dyZXNzKQpAQCAtMTU1Miw3ICsxNTUyLDcg
QEAgQ1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwOjpDU1NQcm9wZQogICAgICAgICBuZXcg
TGVuZ3RoUHJvcGVydHlXcmFwcGVyPExlbmd0aFNpemU+KENTU1Byb3BlcnR5Qm9yZGVyVG9wUmln
aHRSYWRpdXMsICZSZW5kZXJTdHlsZTo6Ym9yZGVyVG9wUmlnaHRSYWRpdXMsICZSZW5kZXJTdHls
ZTo6c2V0Qm9yZGVyVG9wUmlnaHRSYWRpdXMpLAogICAgICAgICBuZXcgTGVuZ3RoUHJvcGVydHlX
cmFwcGVyPExlbmd0aFNpemU+KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1cywgJlJl
bmRlclN0eWxlOjpib3JkZXJCb3R0b21MZWZ0UmFkaXVzLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRl
ckJvdHRvbUxlZnRSYWRpdXMpLAogICAgICAgICBuZXcgTGVuZ3RoUHJvcGVydHlXcmFwcGVyPExl
bmd0aFNpemU+KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMsICZSZW5kZXJTdHls
ZTo6Ym9yZGVyQm90dG9tUmlnaHRSYWRpdXMsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyQm90dG9t
UmlnaHRSYWRpdXMpLAotICAgICAgICBuZXcgUHJvcGVydHlXcmFwcGVyPEVWaXNpYmlsaXR5PihD
U1NQcm9wZXJ0eVZpc2liaWxpdHksICZSZW5kZXJTdHlsZTo6dmlzaWJpbGl0eSwgJlJlbmRlclN0
eWxlOjpzZXRWaXNpYmlsaXR5KSwKKyAgICAgICAgbmV3IFByb3BlcnR5V3JhcHBlcjxWaXNpYmls
aXR5PihDU1NQcm9wZXJ0eVZpc2liaWxpdHksICZSZW5kZXJTdHlsZTo6dmlzaWJpbGl0eSwgJlJl
bmRlclN0eWxlOjpzZXRWaXNpYmlsaXR5KSwKICAgICAgICAgbmV3IFByb3BlcnR5V3JhcHBlcjxm
bG9hdD4oQ1NTUHJvcGVydHlab29tLCAmUmVuZGVyU3R5bGU6Onpvb20sICZSZW5kZXJTdHlsZTo6
c2V0Wm9vbVdpdGhvdXRSZXR1cm5WYWx1ZSksCiAKICAgICAgICAgbmV3IExlbmd0aFByb3BlcnR5
V3JhcHBlcjxMZW5ndGhCb3g+KENTU1Byb3BlcnR5Q2xpcCwgJlJlbmRlclN0eWxlOjpjbGlwLCAm
UmVuZGVyU3R5bGU6OnNldENsaXApLApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwCShyZXZpc2lvbiAyMzIxNDMpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBDb21wb3NpdGVBbmltYXRpb246
OnVwZGF0ZVRyYW5zaXRpbwogICAgICAgICAgICAgICAgICAgICAvLyBBZGQgdGhlIG5ldyB0cmFu
c2l0aW9uCiAgICAgICAgICAgICAgICAgICAgIGF1dG8gaW1wbGljaXRBbmltYXRpb24gPSBJbXBs
aWNpdEFuaW1hdGlvbjo6Y3JlYXRlKGFuaW1hdGlvbiwgcHJvcCwgZWxlbWVudCwgKnRoaXMsIG1v
ZGlmaWVkQ3VycmVudFN0eWxlID8gKm1vZGlmaWVkQ3VycmVudFN0eWxlIDogKmZyb21TdHlsZSk7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX3N1c3BlbmRlZCAmJiBpbXBsaWNpdEFuaW1hdGlv
bi0+aGFzU3R5bGUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGltcGxpY2l0QW5pbWF0aW9u
LT51cGRhdGVQbGF5U3RhdGUoQW5pbVBsYXlTdGF0ZVBhdXNlZCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpbXBsaWNpdEFuaW1hdGlvbi0+dXBkYXRlUGxheVN0YXRlKEFuaW1hdGlvblBsYXlT
dGF0ZTo6UGF1c2VkKTsKIAogICAgICAgICAgICAgICAgICAgICBMT0coQW5pbWF0aW9ucywgIkNy
ZWF0ZWQgSW1wbGljaXRBbmltYXRpb24gJXAgb24gZWxlbWVudCAlcCBmb3IgcHJvcGVydHkgJXMg
ZHVyYXRpb24gJS4yZiBkZWxheSAlLjJmIiwgaW1wbGljaXRBbmltYXRpb24ucHRyKCksICZlbGVt
ZW50LCBnZXRQcm9wZXJ0eU5hbWUocHJvcCksIGFuaW1hdGlvbi5kdXJhdGlvbigpLCBhbmltYXRp
b24uZGVsYXkoKSk7CiAgICAgICAgICAgICAgICAgICAgIG1fdHJhbnNpdGlvbnMuc2V0KHByb3As
IFdURk1vdmUoaW1wbGljaXRBbmltYXRpb24pKTsKQEAgLTI1Myw3ICsyNTMsNyBAQCB2b2lkIENv
bXBvc2l0ZUFuaW1hdGlvbjo6dXBkYXRlS2V5ZnJhbWVBCiAgICAgICAgICAgICAgICAgTE9HKEFu
aW1hdGlvbnMsICJDcmVhdGluZyBLZXlmcmFtZUFuaW1hdGlvbiAlcCBvbiBlbGVtZW50ICVwIHdp
dGgga2V5ZnJhbWVzICVzLCBkdXJhdGlvbiAlLjJmLCBkZWxheSAlLjJmLCBpdGVyYXRpb25zICUu
MmYiLCBrZXlmcmFtZUFuaW0uZ2V0KCksICZlbGVtZW50LCBhbmltYXRpb24ubmFtZSgpLnV0Zjgo
KS5kYXRhKCksIGFuaW1hdGlvbi5kdXJhdGlvbigpLCBhbmltYXRpb24uZGVsYXkoKSwgYW5pbWF0
aW9uLml0ZXJhdGlvbkNvdW50KCkpOwogCiAgICAgICAgICAgICAgICAgaWYgKG1fc3VzcGVuZGVk
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGtleWZyYW1lQW5pbS0+dXBkYXRlUGxheVN0YXRlKEFu
aW1QbGF5U3RhdGVQYXVzZWQpOworICAgICAgICAgICAgICAgICAgICBrZXlmcmFtZUFuaW0tPnVw
ZGF0ZVBsYXlTdGF0ZShBbmltYXRpb25QbGF5U3RhdGU6OlBhdXNlZCk7CiAgICAgICAgICAgICAg
ICAgICAgIExPRyhBbmltYXRpb25zLCAiICAoY3JlYXRlZCBpbiBzdXNwZW5kZWQvcGF1c2VkIHN0
YXRlKSIpOwogICAgICAgICAgICAgICAgIH0KICNpZiAhTE9HX0RJU0FCTEVECkBAIC00NjQsMTMg
KzQ2NCwxMyBAQCB2b2lkIENvbXBvc2l0ZUFuaW1hdGlvbjo6c3VzcGVuZEFuaW1hdGlvCiAgICAg
aWYgKCFtX2tleWZyYW1lQW5pbWF0aW9ucy5pc0VtcHR5KCkpIHsKICAgICAgICAgbV9rZXlmcmFt
ZUFuaW1hdGlvbnMuY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgICAgICBmb3IgKGF1dG8mIGFuaW1h
dGlvbiA6IG1fa2V5ZnJhbWVBbmltYXRpb25zLnZhbHVlcygpKQotICAgICAgICAgICAgYW5pbWF0
aW9uLT51cGRhdGVQbGF5U3RhdGUoQW5pbVBsYXlTdGF0ZVBhdXNlZCk7CisgICAgICAgICAgICBh
bmltYXRpb24tPnVwZGF0ZVBsYXlTdGF0ZShBbmltYXRpb25QbGF5U3RhdGU6OlBhdXNlZCk7CiAg
ICAgfQogCiAgICAgaWYgKCFtX3RyYW5zaXRpb25zLmlzRW1wdHkoKSkgewogICAgICAgICBmb3Ig
KGF1dG8mIHRyYW5zaXRpb24gOiBtX3RyYW5zaXRpb25zLnZhbHVlcygpKSB7CiAgICAgICAgICAg
ICBpZiAodHJhbnNpdGlvbi0+aGFzU3R5bGUoKSkKLSAgICAgICAgICAgICAgICB0cmFuc2l0aW9u
LT51cGRhdGVQbGF5U3RhdGUoQW5pbVBsYXlTdGF0ZVBhdXNlZCk7CisgICAgICAgICAgICAgICAg
dHJhbnNpdGlvbi0+dXBkYXRlUGxheVN0YXRlKEFuaW1hdGlvblBsYXlTdGF0ZTo6UGF1c2VkKTsK
ICAgICAgICAgfQogICAgIH0KIH0KQEAgLTQ4NiwxNCArNDg2LDE0IEBAIHZvaWQgQ29tcG9zaXRl
QW5pbWF0aW9uOjpyZXN1bWVBbmltYXRpb24KICAgICAgICAgbV9rZXlmcmFtZUFuaW1hdGlvbnMu
Y2hlY2tDb25zaXN0ZW5jeSgpOwogICAgICAgICBmb3IgKGF1dG8mIGFuaW1hdGlvbiA6IG1fa2V5
ZnJhbWVBbmltYXRpb25zLnZhbHVlcygpKSB7CiAgICAgICAgICAgICBpZiAoYW5pbWF0aW9uLT5w
bGF5U3RhdGVQbGF5aW5nKCkpCi0gICAgICAgICAgICAgICAgYW5pbWF0aW9uLT51cGRhdGVQbGF5
U3RhdGUoQW5pbVBsYXlTdGF0ZVBsYXlpbmcpOworICAgICAgICAgICAgICAgIGFuaW1hdGlvbi0+
dXBkYXRlUGxheVN0YXRlKEFuaW1hdGlvblBsYXlTdGF0ZTo6UGxheWluZyk7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBpZiAoIW1fdHJhbnNpdGlvbnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGZv
ciAoYXV0byYgdHJhbnNpdGlvbiA6IG1fdHJhbnNpdGlvbnMudmFsdWVzKCkpIHsKICAgICAgICAg
ICAgIGlmICh0cmFuc2l0aW9uLT5oYXNTdHlsZSgpKQotICAgICAgICAgICAgICAgIHRyYW5zaXRp
b24tPnVwZGF0ZVBsYXlTdGF0ZShBbmltUGxheVN0YXRlUGxheWluZyk7CisgICAgICAgICAgICAg
ICAgdHJhbnNpdGlvbi0+dXBkYXRlUGxheVN0YXRlKEFuaW1hdGlvblBsYXlTdGF0ZTo6UGxheWlu
Zyk7CiAgICAgICAgIH0KICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwCShyZXZpc2lvbiAyMzIxNDMpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE2Myw5ICsxNjMsOSBAQCBib29sIEtleWZyYW1lQW5pbWF0aW9uOjph
bmltYXRlKENvbXBvc2l0CiAgICAgCiAgICAgLy8gSWYgd2UgaGF2ZSBub3QgeWV0IHN0YXJ0ZWQs
IHdlIHdpbGwgbm90IGhhdmUgYSB2YWxpZCBzdGFydCB0aW1lLCBzbyBqdXN0IHN0YXJ0IHRoZSBh
bmltYXRpb24gaWYgbmVlZGVkLgogICAgIGlmIChpc05ldygpKSB7Ci0gICAgICAgIGlmIChtX2Fu
aW1hdGlvbi0+cGxheVN0YXRlKCkgPT0gQW5pbVBsYXlTdGF0ZVBsYXlpbmcgJiYgIWNvbXBvc2l0
ZUFuaW1hdGlvbi5pc1N1c3BlbmRlZCgpKQorICAgICAgICBpZiAobV9hbmltYXRpb24tPnBsYXlT
dGF0ZSgpID09IEFuaW1hdGlvblBsYXlTdGF0ZTo6UGxheWluZyAmJiAhY29tcG9zaXRlQW5pbWF0
aW9uLmlzU3VzcGVuZGVkKCkpCiAgICAgICAgICAgICB1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbWF0
aW9uU3RhdGVJbnB1dDo6U3RhcnRBbmltYXRpb24sIC0xKTsKLSAgICAgICAgZWxzZSBpZiAobV9h
bmltYXRpb24tPnBsYXlTdGF0ZSgpID09IEFuaW1QbGF5U3RhdGVQYXVzZWQpCisgICAgICAgIGVs
c2UgaWYgKG1fYW5pbWF0aW9uLT5wbGF5U3RhdGUoKSA9PSBBbmltYXRpb25QbGF5U3RhdGU6OlBh
dXNlZCkKICAgICAgICAgICAgIHVwZGF0ZVN0YXRlTWFjaGluZShBbmltYXRpb25TdGF0ZUlucHV0
OjpQbGF5U3RhdGVQYXVzZWQsIC0xKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvaW9zL0ZyYW1lSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvaW9z
L0ZyYW1lSU9TLm1tCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2lv
cy9GcmFtZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDE4LDcgKzQxOCw3IEBAIE5vZGUqIEZy
YW1lOjpub2RlUmVzcG9uZGluZ1RvQ2xpY2tFdmVudHMKICAgICAgICAgICAgICAgICBwb2ludGVy
Q3Vyc29yU3RpbGxWYWxpZCA9IGZhbHNlOwogCiAgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlbid0
IHJlYWNoZWQgdGhlIGJvZHksIGFuZCB3ZSBhcmUgc3RpbGwgcGF5aW5nIGF0dGVudGlvbiB0byBw
b2ludGVyIGN1cnNvcnMsIGFuZCB0aGUgbm9kZSBoYXMgYSBwb2ludGVyIGN1cnNvci4uLgotICAg
ICAgICAgICAgaWYgKHBvaW50ZXJDdXJzb3JTdGlsbFZhbGlkICYmIG5vZGUtPnJlbmRlclN0eWxl
KCkgJiYgbm9kZS0+cmVuZGVyU3R5bGUoKS0+Y3Vyc29yKCkgPT0gQ3Vyc29yUG9pbnRlcikKKyAg
ICAgICAgICAgIGlmIChwb2ludGVyQ3Vyc29yU3RpbGxWYWxpZCAmJiBub2RlLT5yZW5kZXJTdHls
ZSgpICYmIG5vZGUtPnJlbmRlclN0eWxlKCktPmN1cnNvcigpID09IEN1cnNvclR5cGU6OlBvaW50
ZXIpCiAgICAgICAgICAgICAgICAgcG9pbnRlckN1cnNvck5vZGUgPSBub2RlOwogICAgICAgICAg
ICAgLy8gV2Ugd2FudCB0aGUgbG93ZXN0IHVuYnJva2VuIGNoYWluIG9mIHBvaW50ZXIgY3Vyc29y
cy4KICAgICAgICAgICAgIGVsc2UgaWYgKHBvaW50ZXJDdXJzb3JOb2RlKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5jcHAJKHJldmlzaW9u
IDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw4ICszOCw4IEBAIEFuaW1hdGlvbjo6QW5pbWF0aW9u
KCkKICAgICAsIG1fdHJpZ2dlcihpbml0aWFsVHJpZ2dlcigpKQogI2VuZGlmCiAgICAgLCBtX2Rp
cmVjdGlvbihpbml0aWFsRGlyZWN0aW9uKCkpCi0gICAgLCBtX2ZpbGxNb2RlKGluaXRpYWxGaWxs
TW9kZSgpKQotICAgICwgbV9wbGF5U3RhdGUoaW5pdGlhbFBsYXlTdGF0ZSgpKQorICAgICwgbV9m
aWxsTW9kZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbEZpbGxNb2RlKCkpKQorICAgICwg
bV9wbGF5U3RhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxQbGF5U3RhdGUoKSkpCiAg
ICAgLCBtX2RlbGF5U2V0KGZhbHNlKQogICAgICwgbV9kaXJlY3Rpb25TZXQoZmFsc2UpCiAgICAg
LCBtX2R1cmF0aW9uU2V0KGZhbHNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5p
bWF0aW9uL0FuaW1hdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2FuaW1hdGlvbi9BbmltYXRpb24uaAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3
ICs4NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyRmlsbE1vZGUoKSB7IG1fZmlsbE1vZGVT
ZXQgPSBmYWxzZTsgfQogICAgIHZvaWQgY2xlYXJJdGVyYXRpb25Db3VudCgpIHsgbV9pdGVyYXRp
b25Db3VudFNldCA9IGZhbHNlOyB9CiAgICAgdm9pZCBjbGVhck5hbWUoKSB7IG1fbmFtZVNldCA9
IGZhbHNlOyB9Ci0gICAgdm9pZCBjbGVhclBsYXlTdGF0ZSgpIHsgbV9wbGF5U3RhdGVTZXQgPSBB
bmltUGxheVN0YXRlUGxheWluZzsgfQorICAgIHZvaWQgY2xlYXJQbGF5U3RhdGUoKSB7IG1fcGxh
eVN0YXRlU2V0ID0gZmFsc2U7IH0KICAgICB2b2lkIGNsZWFyUHJvcGVydHkoKSB7IG1fcHJvcGVy
dHlTZXQgPSBmYWxzZTsgfQogICAgIHZvaWQgY2xlYXJUaW1pbmdGdW5jdGlvbigpIHsgbV90aW1p
bmdGdW5jdGlvblNldCA9IGZhbHNlOyB9CiAjaWYgRU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVM
XzIpCkBAIC0xMDksNyArMTA5LDEyIEBAIHB1YmxpYzoKIAogICAgIGRvdWJsZSBkZWxheSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGVsYXk7IH0KIAotICAgIGVudW0gQW5pbWF0aW9uTW9kZSB7IEFuaW1h
dGVBbGwsIEFuaW1hdGVOb25lLCBBbmltYXRlU2luZ2xlUHJvcGVydHksIEFuaW1hdGVVbmtub3du
UHJvcGVydHkgfTsKKyAgICBlbnVtIEFuaW1hdGlvbk1vZGUgeworICAgICAgICBBbmltYXRlQWxs
LAorICAgICAgICBBbmltYXRlTm9uZSwKKyAgICAgICAgQW5pbWF0ZVNpbmdsZVByb3BlcnR5LAor
ICAgICAgICBBbmltYXRlVW5rbm93blByb3BlcnR5CisgICAgfTsKIAogICAgIGVudW0gQW5pbWF0
aW9uRGlyZWN0aW9uIHsKICAgICAgICAgQW5pbWF0aW9uRGlyZWN0aW9uTm9ybWFsLApAQCAtMTE3
LDEwICsxMjIsMTEgQEAgcHVibGljOgogICAgICAgICBBbmltYXRpb25EaXJlY3Rpb25SZXZlcnNl
LAogICAgICAgICBBbmltYXRpb25EaXJlY3Rpb25BbHRlcm5hdGVSZXZlcnNlCiAgICAgfTsKKwog
ICAgIEFuaW1hdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxBbmltYXRpb25EaXJlY3Rpb24+KG1fZGlyZWN0aW9uKTsgfQogICAgIGJvb2wgZGlyZWN0
aW9uSXNGb3J3YXJkcygpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0aW9uID09IEFuaW1hdGlvbkRp
cmVjdGlvbk5vcm1hbCB8fCBtX2RpcmVjdGlvbiA9PSBBbmltYXRpb25EaXJlY3Rpb25BbHRlcm5h
dGU7IH0KIAotICAgIHVuc2lnbmVkIGZpbGxNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9maWxsTW9k
ZTsgfQorICAgIEFuaW1hdGlvbkZpbGxNb2RlIGZpbGxNb2RlKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8QW5pbWF0aW9uRmlsbE1vZGU+KG1fZmlsbE1vZGUpOyB9CiAKICAgICBkb3VibGUg
ZHVyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2R1cmF0aW9uOyB9CiAKQEAgLTEyOCw3ICsxMzQs
NyBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGl0ZXJhdGlvbkNvdW50KCkgY29uc3QgeyByZXR1cm4g
bV9pdGVyYXRpb25Db3VudDsgfQogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbmFtZTsgfQogICAgIFN0eWxlOjpTY29wZU9yZGluYWwgbmFtZVN0eWxlU2NvcGVPcmRp
bmFsKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lU3R5bGVTY29wZU9yZGluYWw7IH0KLSAgICBFQW5p
bVBsYXlTdGF0ZSBwbGF5U3RhdGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQW5pbVBs
YXlTdGF0ZT4obV9wbGF5U3RhdGUpOyB9CisgICAgQW5pbWF0aW9uUGxheVN0YXRlIHBsYXlTdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFuaW1hdGlvblBsYXlTdGF0ZT4obV9wbGF5
U3RhdGUpOyB9CiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvcGVydHk7IH0KICAgICBjb25zdCBTdHJpbmcmIHVua25vd25Qcm9wZXJ0eSgpIGNvbnN0IHsg
cmV0dXJuIG1fdW5rbm93blByb3BlcnR5OyB9CiAgICAgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90aW1pbmdGdW5jdGlvbi5nZXQoKTsgfQpAQCAtMTQw
LDcgKzE0Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERlbGF5KGRvdWJsZSBjKSB7IG1fZGVs
YXkgPSBjOyBtX2RlbGF5U2V0ID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0RGlyZWN0aW9uKEFuaW1h
dGlvbkRpcmVjdGlvbiBkKSB7IG1fZGlyZWN0aW9uID0gZDsgbV9kaXJlY3Rpb25TZXQgPSB0cnVl
OyB9CiAgICAgdm9pZCBzZXREdXJhdGlvbihkb3VibGUgZCkgeyBBU1NFUlQoZCA+PSAwKTsgbV9k
dXJhdGlvbiA9IGQ7IG1fZHVyYXRpb25TZXQgPSB0cnVlOyB9Ci0gICAgdm9pZCBzZXRGaWxsTW9k
ZSh1bnNpZ25lZCBmKSB7IG1fZmlsbE1vZGUgPSBmOyBtX2ZpbGxNb2RlU2V0ID0gdHJ1ZTsgfQor
ICAgIHZvaWQgc2V0RmlsbE1vZGUoQW5pbWF0aW9uRmlsbE1vZGUgZikgeyBtX2ZpbGxNb2RlID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGYpOyBtX2ZpbGxNb2RlU2V0ID0gdHJ1ZTsgfQogICAgIHZv
aWQgc2V0SXRlcmF0aW9uQ291bnQoZG91YmxlIGMpIHsgbV9pdGVyYXRpb25Db3VudCA9IGM7IG1f
aXRlcmF0aW9uQ291bnRTZXQgPSB0cnVlOyB9CiAgICAgdm9pZCBzZXROYW1lKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgU3R5bGU6OlNjb3BlT3JkaW5hbCBzY29wZSA9IFN0eWxlOjpTY29wZU9yZGluYWw6
OkVsZW1lbnQpCiAgICAgewpAQCAtMTQ4LDcgKzE1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9u
YW1lU3R5bGVTY29wZU9yZGluYWwgPSBzY29wZTsKICAgICAgICAgbV9uYW1lU2V0ID0gdHJ1ZTsK
ICAgICB9Ci0gICAgdm9pZCBzZXRQbGF5U3RhdGUoRUFuaW1QbGF5U3RhdGUgZCkgeyBtX3BsYXlT
dGF0ZSA9IGQ7IG1fcGxheVN0YXRlU2V0ID0gdHJ1ZTsgfQorICAgIHZvaWQgc2V0UGxheVN0YXRl
KEFuaW1hdGlvblBsYXlTdGF0ZSBkKSB7IG1fcGxheVN0YXRlID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGQpOyBtX3BsYXlTdGF0ZVNldCA9IHRydWU7IH0KICAgICB2b2lkIHNldFByb3BlcnR5KENT
U1Byb3BlcnR5SUQgdCkgeyBtX3Byb3BlcnR5ID0gdDsgbV9wcm9wZXJ0eVNldCA9IHRydWU7IH0K
ICAgICB2b2lkIHNldFVua25vd25Qcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5KSB7IG1f
dW5rbm93blByb3BlcnR5ID0gcHJvcGVydHk7IH0KICAgICB2b2lkIHNldFRpbWluZ0Z1bmN0aW9u
KFJlZlB0cjxUaW1pbmdGdW5jdGlvbj4mJiBmdW5jdGlvbikgeyBtX3RpbWluZ0Z1bmN0aW9uID0g
V1RGTW92ZShmdW5jdGlvbik7IG1fdGltaW5nRnVuY3Rpb25TZXQgPSB0cnVlOyB9CkBAIC0xNjgs
OCArMTc0LDggQEAgcHVibGljOgogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBbmltYXRpb24m
IG8pIGNvbnN0IHsgcmV0dXJuIGFuaW1hdGlvbnNNYXRjaChvKTsgfQogICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBBbmltYXRpb24mIG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0K
IAotICAgIGJvb2wgZmlsbHNCYWNrd2FyZHMoKSBjb25zdCB7IHJldHVybiBtX2ZpbGxNb2RlU2V0
ICYmIChtX2ZpbGxNb2RlID09IEFuaW1hdGlvbkZpbGxNb2RlQmFja3dhcmRzIHx8IG1fZmlsbE1v
ZGUgPT0gQW5pbWF0aW9uRmlsbE1vZGVCb3RoKTsgfQotICAgIGJvb2wgZmlsbHNGb3J3YXJkcygp
IGNvbnN0IHsgcmV0dXJuIG1fZmlsbE1vZGVTZXQgJiYgKG1fZmlsbE1vZGUgPT0gQW5pbWF0aW9u
RmlsbE1vZGVGb3J3YXJkcyB8fCBtX2ZpbGxNb2RlID09IEFuaW1hdGlvbkZpbGxNb2RlQm90aCk7
IH0KKyAgICBib29sIGZpbGxzQmFja3dhcmRzKCkgY29uc3QgeyByZXR1cm4gbV9maWxsTW9kZVNl
dCAmJiAoZmlsbE1vZGUoKSA9PSBBbmltYXRpb25GaWxsTW9kZTo6QmFja3dhcmRzIHx8IGZpbGxN
b2RlKCkgPT0gQW5pbWF0aW9uRmlsbE1vZGU6OkJvdGgpOyB9CisgICAgYm9vbCBmaWxsc0Zvcndh
cmRzKCkgY29uc3QgeyByZXR1cm4gbV9maWxsTW9kZVNldCAmJiAoZmlsbE1vZGUoKSA9PSBBbmlt
YXRpb25GaWxsTW9kZTo6Rm9yd2FyZHMgfHwgZmlsbE1vZGUoKSA9PSBBbmltYXRpb25GaWxsTW9k
ZTo6Qm90aCk7IH0KIAogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBBbmltYXRpb24oKTsK
QEAgLTIxMiwxMCArMjE4LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgZG91YmxlIGluaXRpYWxE
ZWxheSgpIHsgcmV0dXJuIDA7IH0KICAgICBzdGF0aWMgQW5pbWF0aW9uRGlyZWN0aW9uIGluaXRp
YWxEaXJlY3Rpb24oKSB7IHJldHVybiBBbmltYXRpb25EaXJlY3Rpb25Ob3JtYWw7IH0KICAgICBz
dGF0aWMgZG91YmxlIGluaXRpYWxEdXJhdGlvbigpIHsgcmV0dXJuIDA7IH0KLSAgICBzdGF0aWMg
dW5zaWduZWQgaW5pdGlhbEZpbGxNb2RlKCkgeyByZXR1cm4gQW5pbWF0aW9uRmlsbE1vZGVOb25l
OyB9CisgICAgc3RhdGljIEFuaW1hdGlvbkZpbGxNb2RlIGluaXRpYWxGaWxsTW9kZSgpIHsgcmV0
dXJuIEFuaW1hdGlvbkZpbGxNb2RlOjpOb25lOyB9CiAgICAgc3RhdGljIGRvdWJsZSBpbml0aWFs
SXRlcmF0aW9uQ291bnQoKSB7IHJldHVybiAxLjA7IH0KICAgICBzdGF0aWMgY29uc3QgU3RyaW5n
JiBpbml0aWFsTmFtZSgpOwotICAgIHN0YXRpYyBFQW5pbVBsYXlTdGF0ZSBpbml0aWFsUGxheVN0
YXRlKCkgeyByZXR1cm4gQW5pbVBsYXlTdGF0ZVBsYXlpbmc7IH0KKyAgICBzdGF0aWMgQW5pbWF0
aW9uUGxheVN0YXRlIGluaXRpYWxQbGF5U3RhdGUoKSB7IHJldHVybiBBbmltYXRpb25QbGF5U3Rh
dGU6OlBsYXlpbmc7IH0KICAgICBzdGF0aWMgQ1NTUHJvcGVydHlJRCBpbml0aWFsUHJvcGVydHko
KSB7IHJldHVybiBDU1NQcm9wZXJ0eUludmFsaWQ7IH0KICAgICBzdGF0aWMgUmVmPFRpbWluZ0Z1
bmN0aW9uPiBpbml0aWFsVGltaW5nRnVuY3Rpb24oKSB7IHJldHVybiBDdWJpY0JlemllclRpbWlu
Z0Z1bmN0aW9uOjpjcmVhdGUoKTsgfQogI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8y
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
VHlwZXMuaAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC04NiwxNSArODYsNDAgQEAg
ZW51bSBJbnRlcnBvbGF0aW9uUXVhbGl0eSB7CiAgICAgSW50ZXJwb2xhdGlvbkhpZ2gKIH07CiAK
LWVudW0gTGluZUNhcCB7IEJ1dHRDYXAsIFJvdW5kQ2FwLCBTcXVhcmVDYXAgfTsKK2VudW0gTGlu
ZUNhcCB7CisgICAgQnV0dENhcCwKKyAgICBSb3VuZENhcCwKKyAgICBTcXVhcmVDYXAKK307CiAK
LWVudW0gTGluZUpvaW4geyBNaXRlckpvaW4sIFJvdW5kSm9pbiwgQmV2ZWxKb2luIH07CitlbnVt
IExpbmVKb2luIHsKKyAgICBNaXRlckpvaW4sCisgICAgUm91bmRKb2luLAorICAgIEJldmVsSm9p
bgorfTsKIAotZW51bSBIb3Jpem9udGFsQWxpZ25tZW50IHsgQWxpZ25MZWZ0LCBBbGlnblJpZ2h0
LCBBbGlnbkhDZW50ZXIgfTsKK2VudW0gSG9yaXpvbnRhbEFsaWdubWVudCB7CisgICAgQWxpZ25M
ZWZ0LAorICAgIEFsaWduUmlnaHQsCisgICAgQWxpZ25IQ2VudGVyCit9OwogCi1lbnVtIFRleHRC
YXNlbGluZSB7IEFscGhhYmV0aWNUZXh0QmFzZWxpbmUsIFRvcFRleHRCYXNlbGluZSwgTWlkZGxl
VGV4dEJhc2VsaW5lLCBCb3R0b21UZXh0QmFzZWxpbmUsIElkZW9ncmFwaGljVGV4dEJhc2VsaW5l
LCBIYW5naW5nVGV4dEJhc2VsaW5lIH07CitlbnVtIFRleHRCYXNlbGluZSB7CisgICAgQWxwaGFi
ZXRpY1RleHRCYXNlbGluZSwKKyAgICBUb3BUZXh0QmFzZWxpbmUsCisgICAgTWlkZGxlVGV4dEJh
c2VsaW5lLAorICAgIEJvdHRvbVRleHRCYXNlbGluZSwKKyAgICBJZGVvZ3JhcGhpY1RleHRCYXNl
bGluZSwKKyAgICBIYW5naW5nVGV4dEJhc2VsaW5lCit9OwogCi1lbnVtIFRleHRBbGlnbiB7IFN0
YXJ0VGV4dEFsaWduLCBFbmRUZXh0QWxpZ24sIExlZnRUZXh0QWxpZ24sIENlbnRlclRleHRBbGln
biwgUmlnaHRUZXh0QWxpZ24gfTsKK2VudW0gVGV4dEFsaWduIHsKKyAgICBTdGFydFRleHRBbGln
biwKKyAgICBFbmRUZXh0QWxpZ24sCisgICAgTGVmdFRleHRBbGlnbiwKKyAgICBDZW50ZXJUZXh0
QWxpZ24sCisgICAgUmlnaHRUZXh0QWxpZ24KK307CiAKIGVudW0gUmVuZGVyaW5nTW9kZSB7CiAg
ICAgVW5hY2NlbGVyYXRlZCwKQEAgLTExMiwxMiArMTM3LDYgQEAgU3RyaW5nIGJsZW5kTW9kZU5h
bWUoQmxlbmRNb2RlKTsKIGJvb2wgcGFyc2VCbGVuZE1vZGUoY29uc3QgU3RyaW5nJiwgQmxlbmRN
b2RlJik7CiBib29sIHBhcnNlQ29tcG9zaXRlQW5kQmxlbmRPcGVyYXRvcihjb25zdCBTdHJpbmcm
LCBDb21wb3NpdGVPcGVyYXRvciYsIEJsZW5kTW9kZSYpOwogCi1TdHJpbmcgdGV4dEFsaWduTmFt
ZShUZXh0QWxpZ24pOwotYm9vbCBwYXJzZVRleHRBbGlnbihjb25zdCBTdHJpbmcmLCBUZXh0QWxp
Z24mKTsKLQotU3RyaW5nIHRleHRCYXNlbGluZU5hbWUoVGV4dEJhc2VsaW5lKTsKLWJvb2wgcGFy
c2VUZXh0QmFzZWxpbmUoY29uc3QgU3RyaW5nJiwgVGV4dEJhc2VsaW5lJik7Ci0KIFdFQkNPUkVf
RVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBCbGVu
ZE1vZGUpOwogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6
VGV4dFN0cmVhbSYsIENvbXBvc2l0ZU9wZXJhdG9yKTsKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBXaW5kUnVsZSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNz
TGF5ZXJDQS5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxODcs
MTYgKzMxODcsMTYgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQW5pbWF0aW9uKFBsYQog
CiAgICAgUGxhdGZvcm1DQUFuaW1hdGlvbjo6RmlsbE1vZGVUeXBlIGZpbGxNb2RlID0gUGxhdGZv
cm1DQUFuaW1hdGlvbjo6Tm9GaWxsTW9kZTsKICAgICBzd2l0Y2ggKGFuaW0tPmZpbGxNb2RlKCkp
IHsKLSAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlTm9uZToKKyAgICBjYXNlIEFuaW1hdGlvbkZp
bGxNb2RlOjpOb25lOgogICAgICAgICBmaWxsTW9kZSA9IFBsYXRmb3JtQ0FBbmltYXRpb246OkZv
cndhcmRzOyAvLyBVc2UgImZvcndhcmRzIiByYXRoZXIgdGhhbiAicmVtb3ZlZCIgYmVjYXVzZSB0
aGUgc3R5bGUgc3lzdGVtIHdpbGwgcmVtb3ZlIHRoZSBhbmltYXRpb24gd2hlbiBpdCBpcyBmaW5p
c2hlZC4gVGhpcyBhdm9pZHMgYSBmbGFzaC4KICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBbmlt
YXRpb25GaWxsTW9kZUJhY2t3YXJkczoKKyAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlOjpCYWNr
d2FyZHM6CiAgICAgICAgIGZpbGxNb2RlID0gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Qm90aDsgLy8g
VXNlICJib3RoIiByYXRoZXIgdGhhbiAiYmFja3dhcmRzIiBiZWNhdXNlIHRoZSBzdHlsZSBzeXN0
ZW0gd2lsbCByZW1vdmUgdGhlIGFuaW1hdGlvbiB3aGVuIGl0IGlzIGZpbmlzaGVkLiBUaGlzIGF2
b2lkcyBhIGZsYXNoLgogICAgICAgICBicmVhazsKLSAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2Rl
Rm9yd2FyZHM6CisgICAgY2FzZSBBbmltYXRpb25GaWxsTW9kZTo6Rm9yd2FyZHM6CiAgICAgICAg
IGZpbGxNb2RlID0gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Rm9yd2FyZHM7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGVCb3RoOgorICAgIGNhc2UgQW5pbWF0aW9uRmls
bE1vZGU6OkJvdGg6CiAgICAgICAgIGZpbGxNb2RlID0gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Qm90
aDsKICAgICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL3dhay9XQUtXaW5kb3cubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL3dhay9XQUtXaW5kb3cubW0JKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02ODIs
NyArNjgyLDcgQEAgLSAodm9pZClkdW1wVGlsZXMKICAgICBDR1JlY3Qgc2F2ZWRGcm96ZW5WaXNp
YmxlUmVjdCA9IF9mcm96ZW5WaXNpYmxlUmVjdDsKICAgICBOU0xvZyhAIj09PT09PT09PT09PT09
PT09Iik7CiAgICAgaWYgKCFDR1JlY3RJc051bGwoX2Zyb3plblZpc2libGVSZWN0KSkgewotICAg
ICAgICBOU0xvZyhAIlZJU0lCTEUgUkVDVCBJUyBDQUNIRUQ6IFslNi4xZiAlNi4xZiAlNi4xZiAl
Ni4xZl0iLCBfZnJvemVuVmlzaWJsZVJlY3Qub3JpZ2luLngsIF9mcm96ZW5WaXNpYmxlUmVjdC5v
cmlnaW4ueSwgX2Zyb3plblZpc2libGVSZWN0LnNpemUud2lkdGgsIF9mcm96ZW5WaXNpYmxlUmVj
dC5zaXplLmhlaWdodCk7CisgICAgICAgIE5TTG9nKEAiVmlzaWJpbGl0eTo6VmlzaWJsZSBSRUNU
IElTIENBQ0hFRDogWyU2LjFmICU2LjFmICU2LjFmICU2LjFmXSIsIF9mcm96ZW5WaXNpYmxlUmVj
dC5vcmlnaW4ueCwgX2Zyb3plblZpc2libGVSZWN0Lm9yaWdpbi55LCBfZnJvemVuVmlzaWJsZVJl
Y3Quc2l6ZS53aWR0aCwgX2Zyb3plblZpc2libGVSZWN0LnNpemUuaGVpZ2h0KTsKICAgICAgICAg
X2Zyb3plblZpc2libGVSZWN0ID0gQ0dSZWN0TnVsbDsKICAgICB9CiAgICAgQ0dSZWN0IHZpc2li
bGVSZWN0ID0gW3NlbGYgdmlzaWJsZVJlY3RdOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tCShyZXZpc2lvbiAyMzIxNDMpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzcsOCArMTc3LDggQEAgc3RhdGljIEJPT0wgaXNMb29rYWxpa2VDaGFy
YWN0ZXIoc3RkOjpvcAogICAgICAgICBjYXNlIDB4MjMzRjogLyogQVBMIEZVTkNUSU9OQUwgU1lN
Qk9MIFNMQVNIIEJBUiAqLwogICAgICAgICBjYXNlIDB4MjNBRTogLyogSU5URUdSQUwgRVhURU5T
SU9OICovCiAgICAgICAgIGNhc2UgMHgyNDRBOiAvKiBPQ1IgRE9VQkxFIEJBQ0tTTEFTSCAqLwot
ICAgICAgICBjYXNlIDB4MjU3MTogLyogQk9YIERSQVdJTkdTIExJR0hUIERJQUdPTkFMIFVQUEVS
IFJJR0hUIFRPIExPV0VSIExFRlQgKi8KLSAgICAgICAgY2FzZSAweDI1NzI6IC8qIEJPWCBEUkFX
SU5HUyBMSUdIVCBESUFHT05BTCBVUFBFUiBMRUZUIFRPIExPV0VSIFJJR0hUICovCisgICAgICAg
IGNhc2UgMHgyNTcxOiAvKiBEaXNwbGF5VHlwZTo6Qm94IERSQVdJTkdTIExJR0hUIERJQUdPTkFM
IFVQUEVSIFJJR0hUIFRPIExPV0VSIExFRlQgKi8KKyAgICAgICAgY2FzZSAweDI1NzI6IC8qIERp
c3BsYXlUeXBlOjpCb3ggRFJBV0lOR1MgTElHSFQgRElBR09OQUwgVVBQRVIgTEVGVCBUTyBMT1dF
UiBSSUdIVCAqLwogICAgICAgICBjYXNlIDB4MjlGNjogLyogU09MSURVUyBXSVRIIE9WRVJCQVIg
Ki8KICAgICAgICAgY2FzZSAweDI5Rjg6IC8qIEJJRyBTT0xJRFVTICovCiAgICAgICAgIGNhc2Ug
MHgyQUZCOiAvKiBUUklQTEUgU09MSURVUyBCSU5BUlkgUkVMQVRJT04gKi8KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9DbGlwUGF0aE9wZXJhdGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DbGlwUGF0aE9wZXJhdGlvbi5oCShyZXZpc2lvbiAyMzIx
NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU2hh
cGVDbGlwUGF0aE9wZXJhdGlvbihSZWY8QmFzaWNTaGFwZT4mJiBzaGFwZSkKICAgICAgICAgOiBD
bGlwUGF0aE9wZXJhdGlvbihTaGFwZSkKICAgICAgICAgLCBtX3NoYXBlKFdURk1vdmUoc2hhcGUp
KQotICAgICAgICAsIG1fcmVmZXJlbmNlQm94KEJveE1pc3NpbmcpCisgICAgICAgICwgbV9yZWZl
cmVuY2VCb3goQ1NTQm94VHlwZTo6Qm94TWlzc2luZykKICAgICB7CiAgICAgfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5oCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0MSw3
ICsyNDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlUGFyZW50Q2hpbGRMaXN0KCk7
CiAjZW5kaWYKIAotICAgIGJvb2wgdmlzaWJsZVRvSGl0VGVzdGluZygpIGNvbnN0IHsgcmV0dXJu
IHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSAmJiByZW5kZXJlcigp
LnN0eWxlKCkucG9pbnRlckV2ZW50cygpICE9IFBFX05PTkU7IH0KKyAgICBib29sIHZpc2libGVU
b0hpdFRlc3RpbmcoKSBjb25zdCB7IHJldHVybiByZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0
eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUgJiYgcmVuZGVyZXIoKS5zdHlsZSgpLnBvaW50ZXJF
dmVudHMoKSAhPSBQb2ludGVyRXZlbnRzOjpOb25lOyB9CiAKICAgICBjb25zdCBSZW5kZXJTdHls
ZSYgbGluZVN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuZmlyc3RMaW5lKCkgPyBy
ZW5kZXJlcigpLmZpcnN0TGluZVN0eWxlKCkgOiByZW5kZXJlcigpLnN0eWxlKCk7IH0KICAgICAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAJKHJldmlz
aW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6
YWRkVG9MaW5lKElubGluZUJveCoKICAgICAgICAgICAgICAgICAgICAgfHwgKHBhcmVudFN0eWxl
LnZlcnRpY2FsQWxpZ24oKSAhPSBWZXJ0aWNhbEFsaWduOjpCYXNlbGluZSAmJiAhaXNSb290SW5s
aW5lQm94KCkpIHx8IGNoaWxkU3R5bGUudmVydGljYWxBbGlnbigpICE9IFZlcnRpY2FsQWxpZ246
OkJhc2VsaW5lKQogICAgICAgICAgICAgICAgICAgICBzaG91bGRDbGVhckRlc2NlbmRhbnRzSGF2
ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUgPSB0cnVlOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaWYgKGNoaWxkU3R5bGUuaGFzVGV4dENvbWJpbmUoKSB8fCBjaGlsZFN0eWxlLnRleHRF
bXBoYXNpc01hcmsoKSAhPSBUZXh0RW1waGFzaXNNYXJrTm9uZSkKKyAgICAgICAgICAgIGlmIChj
aGlsZFN0eWxlLmhhc1RleHRDb21iaW5lKCkgfHwgY2hpbGRTdHlsZS50ZXh0RW1waGFzaXNNYXJr
KCkgIT0gVGV4dEVtcGhhc2lzTWFyazo6Tm9uZSkKICAgICAgICAgICAgICAgICBzaG91bGRDbGVh
ckRlc2NlbmRhbnRzSGF2ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUgPSB0cnVlOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKGNoaWxkLT5yZW5kZXJlcigpLmlzTGluZUJyZWFr
KCkpIHsKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OmFkZFRvTGluZShJ
bmxpbmVCb3gqCiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBjaGlsZFN0eWxlID0gY2hpbGQt
PmxpbmVTdHlsZSgpOwogICAgICAgICBpZiAoY2hpbGQtPmJlaGF2ZXNMaWtlVGV4dCgpKSB7CiAg
ICAgICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSogY2hpbGRTdHlsZSA9ICZjaGlsZC0+bGluZVN0
eWxlKCk7Ci0gICAgICAgICAgICBpZiAoY2hpbGRTdHlsZS0+bGV0dGVyU3BhY2luZygpIDwgMCB8
fCBjaGlsZFN0eWxlLT50ZXh0U2hhZG93KCkgfHwgY2hpbGRTdHlsZS0+dGV4dEVtcGhhc2lzTWFy
aygpICE9IFRleHRFbXBoYXNpc01hcmtOb25lIHx8IGNoaWxkU3R5bGUtPmhhc1Bvc2l0aXZlU3Ry
b2tlV2lkdGgoKSkKKyAgICAgICAgICAgIGlmIChjaGlsZFN0eWxlLT5sZXR0ZXJTcGFjaW5nKCkg
PCAwIHx8IGNoaWxkU3R5bGUtPnRleHRTaGFkb3coKSB8fCBjaGlsZFN0eWxlLT50ZXh0RW1waGFz
aXNNYXJrKCkgIT0gVGV4dEVtcGhhc2lzTWFyazo6Tm9uZSB8fCBjaGlsZFN0eWxlLT5oYXNQb3Np
dGl2ZVN0cm9rZVdpZHRoKCkpCiAgICAgICAgICAgICAgICAgY2hpbGQtPmNsZWFyS25vd25Ub0hh
dmVOb092ZXJmbG93KCk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2hpbGQtPnJlbmRlcmVyKCkuaXNS
ZXBsYWNlZCgpKSB7CiAgICAgICAgICAgICBjb25zdCBSZW5kZXJCb3gmIGJveCA9IGRvd25jYXN0
PFJlbmRlckJveD4oY2hpbGQtPnJlbmRlcmVyKCkpOwpAQCAtNjg0LDcgKzY4NCw3IEBAIHZvaWQg
SW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXIKICAgICAgICAgICAgICAgICAvLyBU
cmVhdCB0aGUgbGVhZGluZyBvbiB0aGUgZmlyc3QgYW5kIGxhc3QgbGluZXMgb2YgcnVieSBydW5z
IGFzIG5vdCBiZWluZyBwYXJ0IG9mIHRoZSBvdmVyYWxsIGxpbmVUb3AvbGluZUJvdHRvbS4KICAg
ICAgICAgICAgICAgICAvLyBSZWFsbHkgdGhpcyBpcyBhIHdvcmthcm91bmQgaGFjayBmb3IgdGhl
IGZhY3QgdGhhdCBydWJ5IHNob3VsZCBoYXZlIGJlZW4gZG9uZSBhcyBsaW5lIGxheW91dCBhbmQg
bm90IGRvbmUgdXNpbmcKICAgICAgICAgICAgICAgICAvLyBpbmxpbmUtYmxvY2suCi0gICAgICAg
ICAgICAgICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2Rl
KCkgPT0gKGNoaWxkLT5yZW5kZXJlcigpLnN0eWxlKCkucnVieVBvc2l0aW9uKCkgPT0gUnVieVBv
c2l0aW9uQWZ0ZXIpKQorICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCkuaXNG
bGlwcGVkTGluZXNXcml0aW5nTW9kZSgpID09IChjaGlsZC0+cmVuZGVyZXIoKS5zdHlsZSgpLnJ1
YnlQb3NpdGlvbigpID09IFJ1YnlQb3NpdGlvbjo6QWZ0ZXIpKQogICAgICAgICAgICAgICAgICAg
ICBoYXNBbm5vdGF0aW9uc0JlZm9yZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgICAgICBoYXNBbm5vdGF0aW9uc0FmdGVyID0gdHJ1ZTsKQEAgLTg5NSw3ICs4
OTUsNyBAQCBpbmxpbmUgdm9pZCBJbmxpbmVGbG93Qm94OjphZGRUZXh0Qm94VmlzCiAgICAgaW50
IHJpZ2h0R2x5cGhPdmVyZmxvdyA9IHN0cm9rZU92ZXJmbG93ICsgcmlnaHRHbHlwaEVkZ2U7CiAK
ICAgICBib29sIGVtcGhhc2lzTWFya0lzQWJvdmU7Ci0gICAgaWYgKGxpbmVTdHlsZS50ZXh0RW1w
aGFzaXNNYXJrKCkgIT0gVGV4dEVtcGhhc2lzTWFya05vbmUgJiYgdGV4dEJveC5lbXBoYXNpc01h
cmtFeGlzdHNBbmRJc0Fib3ZlKGxpbmVTdHlsZSwgZW1waGFzaXNNYXJrSXNBYm92ZSkpIHsKKyAg
ICBpZiAobGluZVN0eWxlLnRleHRFbXBoYXNpc01hcmsoKSAhPSBUZXh0RW1waGFzaXNNYXJrOjpO
b25lICYmIHRleHRCb3guZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92ZShsaW5lU3R5bGUsIGVt
cGhhc2lzTWFya0lzQWJvdmUpKSB7CiAgICAgICAgIGludCBlbXBoYXNpc01hcmtIZWlnaHQgPSBs
aW5lU3R5bGUuZm9udENhc2NhZGUoKS5lbXBoYXNpc01hcmtIZWlnaHQobGluZVN0eWxlLnRleHRF
bXBoYXNpc01hcmtTdHJpbmcoKSk7CiAgICAgICAgIGlmIChlbXBoYXNpc01hcmtJc0Fib3ZlID09
ICFsaW5lU3R5bGUuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpKQogICAgICAgICAgICAgdG9w
R2x5cGhPdmVyZmxvdyA9IHN0ZDo6bWluKHRvcEdseXBoT3ZlcmZsb3csIC1lbXBoYXNpc01hcmtI
ZWlnaHQpOwpAQCAtMTE1NSw3ICsxMTU1LDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludChQ
YWludEluZm8mIHBhaQogICAgICAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VP
dXRsaW5lIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZk91dGxpbmUpIHsKICAg
ICAgICAgICAgIC8vIEFkZCBvdXJzZWx2ZXMgdG8gdGhlIHBhaW50IGluZm8gc3RydWN0J3MgbGlz
dCBvZiBpbmxpbmVzIHRoYXQgbmVlZCB0byBwYWludCB0aGVpcgogICAgICAgICAgICAgLy8gb3V0
bGluZXMuCi0gICAgICAgICAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHkoKSA9
PSBWSVNJQkxFICYmIHJlbmRlcmVyKCkuaGFzT3V0bGluZSgpICYmICFpc1Jvb3RJbmxpbmVCb3go
KSkgeworICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0g
VmlzaWJpbGl0eTo6VmlzaWJsZSAmJiByZW5kZXJlcigpLmhhc091dGxpbmUoKSAmJiAhaXNSb290
SW5saW5lQm94KCkpIHsKICAgICAgICAgICAgICAgICBSZW5kZXJJbmxpbmUmIGlubGluZUZsb3cg
PSBkb3duY2FzdDxSZW5kZXJJbmxpbmU+KHJlbmRlcmVyKCkpOwogCiAgICAgICAgICAgICAgICAg
UmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jayA9IG51bGxwdHI7CkBAIC0xMzM1LDcgKzEzMzUs
NyBAQCBzdGF0aWMgTGF5b3V0UmVjdCBjbGlwUmVjdEZvck5pbmVQaWVjZUltCiAKIHZvaWQgSW5s
aW5lRmxvd0JveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewotICAgIGlmICghcGFpbnRJbmZvLnNob3Vs
ZFBhaW50V2l0aGluUm9vdChyZW5kZXJlcigpKSB8fCByZW5kZXJlcigpLnN0eWxlKCkudmlzaWJp
bGl0eSgpICE9IFZJU0lCTEUgfHwgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3Jv
dW5kKQorICAgIGlmICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdChyZW5kZXJlcigp
KSB8fCByZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2li
bGUgfHwgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBMYXlvdXRSZWN0IGZyYW1lUmVjdCh0aGlzLT5mcmFtZVJlY3QoKSk7CkBA
IC0xNDA3LDcgKzE0MDcsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50Qm94RGVjb3JhdGlv
bnMoCiAKIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRNYXNrKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7Ci0gICAgaWYgKCFwYWludEluZm8u
c2hvdWxkUGFpbnRXaXRoaW5Sb290KHJlbmRlcmVyKCkpIHx8IHJlbmRlcmVyKCkuc3R5bGUoKS52
aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZU1h
c2spCisgICAgaWYgKCFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KHJlbmRlcmVyKCkp
IHx8IHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJs
ZSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZU1hc2spCiAgICAgICAgIHJldHVybjsK
IAogICAgIExheW91dFJlY3QgZnJhbWVSZWN0KHRoaXMtPmZyYW1lUmVjdCgpKTsKQEAgLTE1NTIs
NyArMTU1Miw3IEBAIExheW91dFVuaXQgSW5saW5lRmxvd0JveDo6Y29tcHV0ZU92ZXJBbm4KICAg
ICAgICAgaWYgKGlzPElubGluZUZsb3dCb3g+KCpjaGlsZCkpCiAgICAgICAgICAgICByZXN1bHQg
PSBzdGQ6Om1heChyZXN1bHQsIGRvd25jYXN0PElubGluZUZsb3dCb3g+KCpjaGlsZCkuY29tcHV0
ZU92ZXJBbm5vdGF0aW9uQWRqdXN0bWVudChhbGxvd2VkUG9zaXRpb24pKTsKICAgICAgICAgCi0g
ICAgICAgIGlmIChjaGlsZC0+cmVuZGVyZXIoKS5pc1JlcGxhY2VkKCkgJiYgaXM8UmVuZGVyUnVi
eVJ1bj4oY2hpbGQtPnJlbmRlcmVyKCkpICYmIGNoaWxkLT5yZW5kZXJlcigpLnN0eWxlKCkucnVi
eVBvc2l0aW9uKCkgPT0gUnVieVBvc2l0aW9uQmVmb3JlKSB7CisgICAgICAgIGlmIChjaGlsZC0+
cmVuZGVyZXIoKS5pc1JlcGxhY2VkKCkgJiYgaXM8UmVuZGVyUnVieVJ1bj4oY2hpbGQtPnJlbmRl
cmVyKCkpICYmIGNoaWxkLT5yZW5kZXJlcigpLnN0eWxlKCkucnVieVBvc2l0aW9uKCkgPT0gUnVi
eVBvc2l0aW9uOjpCZWZvcmUpIHsKICAgICAgICAgICAgIGF1dG8mIHJ1YnlSdW4gPSBkb3duY2Fz
dDxSZW5kZXJSdWJ5UnVuPihjaGlsZC0+cmVuZGVyZXIoKSk7CiAgICAgICAgICAgICBSZW5kZXJS
dWJ5VGV4dCogcnVieVRleHQgPSBydWJ5UnVuLnJ1YnlUZXh0KCk7CiAgICAgICAgICAgICBpZiAo
IXJ1YnlUZXh0KQpAQCAtMTU3Niw3ICsxNTc2LDcgQEAgTGF5b3V0VW5pdCBJbmxpbmVGbG93Qm94
Ojpjb21wdXRlT3ZlckFubgogICAgICAgICBpZiAoaXM8SW5saW5lVGV4dEJveD4oKmNoaWxkKSkg
ewogICAgICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGNoaWxkTGluZVN0eWxlID0gY2hpbGQt
PmxpbmVTdHlsZSgpOwogICAgICAgICAgICAgYm9vbCBlbXBoYXNpc01hcmtJc0Fib3ZlOwotICAg
ICAgICAgICAgaWYgKGNoaWxkTGluZVN0eWxlLnRleHRFbXBoYXNpc01hcmsoKSAhPSBUZXh0RW1w
aGFzaXNNYXJrTm9uZSAmJiBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PigqY2hpbGQpLmVtcGhhc2lz
TWFya0V4aXN0c0FuZElzQWJvdmUoY2hpbGRMaW5lU3R5bGUsIGVtcGhhc2lzTWFya0lzQWJvdmUp
ICYmIGVtcGhhc2lzTWFya0lzQWJvdmUpIHsKKyAgICAgICAgICAgIGlmIChjaGlsZExpbmVTdHls
ZS50ZXh0RW1waGFzaXNNYXJrKCkgIT0gVGV4dEVtcGhhc2lzTWFyazo6Tm9uZSAmJiBkb3duY2Fz
dDxJbmxpbmVUZXh0Qm94PigqY2hpbGQpLmVtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUoY2hp
bGRMaW5lU3R5bGUsIGVtcGhhc2lzTWFya0lzQWJvdmUpICYmIGVtcGhhc2lzTWFya0lzQWJvdmUp
IHsKICAgICAgICAgICAgICAgICBpZiAoIWNoaWxkTGluZVN0eWxlLmlzRmxpcHBlZExpbmVzV3Jp
dGluZ01vZGUoKSkgewogICAgICAgICAgICAgICAgICAgICBpbnQgdG9wT2ZFbXBoYXNpc01hcmsg
PSBjaGlsZC0+bG9naWNhbFRvcCgpIC0gY2hpbGRMaW5lU3R5bGUuZm9udENhc2NhZGUoKS5lbXBo
YXNpc01hcmtIZWlnaHQoY2hpbGRMaW5lU3R5bGUudGV4dEVtcGhhc2lzTWFya1N0cmluZygpKTsK
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYXgocmVzdWx0LCBhbGxvd2VkUG9z
aXRpb24gLSB0b3BPZkVtcGhhc2lzTWFyayk7CkBAIC0xNjAwLDcgKzE2MDAsNyBAQCBMYXlvdXRV
bml0IElubGluZUZsb3dCb3g6OmNvbXB1dGVVbmRlckFuCiAgICAgICAgIGlmIChpczxJbmxpbmVG
bG93Qm94PigqY2hpbGQpKQogICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYXgocmVzdWx0LCBk
b3duY2FzdDxJbmxpbmVGbG93Qm94PigqY2hpbGQpLmNvbXB1dGVVbmRlckFubm90YXRpb25BZGp1
c3RtZW50KGFsbG93ZWRQb3NpdGlvbikpOwogCi0gICAgICAgIGlmIChjaGlsZC0+cmVuZGVyZXIo
KS5pc1JlcGxhY2VkKCkgJiYgaXM8UmVuZGVyUnVieVJ1bj4oY2hpbGQtPnJlbmRlcmVyKCkpICYm
IGNoaWxkLT5yZW5kZXJlcigpLnN0eWxlKCkucnVieVBvc2l0aW9uKCkgPT0gUnVieVBvc2l0aW9u
QWZ0ZXIpIHsKKyAgICAgICAgaWYgKGNoaWxkLT5yZW5kZXJlcigpLmlzUmVwbGFjZWQoKSAmJiBp
czxSZW5kZXJSdWJ5UnVuPihjaGlsZC0+cmVuZGVyZXIoKSkgJiYgY2hpbGQtPnJlbmRlcmVyKCku
c3R5bGUoKS5ydWJ5UG9zaXRpb24oKSA9PSBSdWJ5UG9zaXRpb246OkFmdGVyKSB7CiAgICAgICAg
ICAgICBhdXRvJiBydWJ5UnVuID0gZG93bmNhc3Q8UmVuZGVyUnVieVJ1bj4oY2hpbGQtPnJlbmRl
cmVyKCkpOwogICAgICAgICAgICAgUmVuZGVyUnVieVRleHQqIHJ1YnlUZXh0ID0gcnVieVJ1bi5y
dWJ5VGV4dCgpOwogICAgICAgICAgICAgaWYgKCFydWJ5VGV4dCkKQEAgLTE2MjUsNyArMTYyNSw3
IEBAIExheW91dFVuaXQgSW5saW5lRmxvd0JveDo6Y29tcHV0ZVVuZGVyQW4KICAgICAgICAgICAg
IGNvbnN0IFJlbmRlclN0eWxlJiBjaGlsZExpbmVTdHlsZSA9IGNoaWxkLT5saW5lU3R5bGUoKTsK
ICAgICAgICAgICAgIGJvb2wgZW1waGFzaXNNYXJrSXNBYm92ZTsKICAgICAgICAgICAgIGRvd25j
YXN0PElubGluZVRleHRCb3g+KCpjaGlsZCkuZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92ZShj
aGlsZExpbmVTdHlsZSwgZW1waGFzaXNNYXJrSXNBYm92ZSk7Ci0gICAgICAgICAgICBpZiAoY2hp
bGRMaW5lU3R5bGUudGV4dEVtcGhhc2lzTWFyaygpICE9IFRleHRFbXBoYXNpc01hcmtOb25lICYm
ICFlbXBoYXNpc01hcmtJc0Fib3ZlKSB7CisgICAgICAgICAgICBpZiAoY2hpbGRMaW5lU3R5bGUu
dGV4dEVtcGhhc2lzTWFyaygpICE9IFRleHRFbXBoYXNpc01hcms6Ok5vbmUgJiYgIWVtcGhhc2lz
TWFya0lzQWJvdmUpIHsKICAgICAgICAgICAgICAgICBpZiAoIWNoaWxkTGluZVN0eWxlLmlzRmxp
cHBlZExpbmVzV3JpdGluZ01vZGUoKSkgewogICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0
IGJvdHRvbU9mRW1waGFzaXNNYXJrID0gY2hpbGQtPmxvZ2ljYWxCb3R0b20oKSArIGNoaWxkTGlu
ZVN0eWxlLmZvbnRDYXNjYWRlKCkuZW1waGFzaXNNYXJrSGVpZ2h0KGNoaWxkTGluZVN0eWxlLnRl
eHRFbXBoYXNpc01hcmtTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHN0
ZDo6bWF4KHJlc3VsdCwgYm90dG9tT2ZFbXBoYXNpc01hcmsgLSBhbGxvd2VkUG9zaXRpb24pOwpA
QCAtMTY1NSw3ICsxNjU1LDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94Ojpjb2xsZWN0TGVhZkJveGVz
SW5MbwogICAgICAgICBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlci5hcHBlbmQobGVhZik7CiAgICAg
fQogCi0gICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS5ydGxPcmRlcmluZygpID09IFZpc3VhbE9y
ZGVyKQorICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCkucnRsT3JkZXJpbmcoKSA9PSBPcmRlcjo6
VmlzdWFsKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBSZXZlcnNlIG9mIHJlb3JkZXJpbmcg
b2YgdGhlIGxpbmUgKEwyIGFjY29yZGluZyB0byBCaWRpIHNwZWMpOgpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCSh3b3JraW5nIGNvcHkpCkBAIC02
Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gYW4gaW52aXNpYmxlIG1hcmtlciBleGlz
dHMuICBUaGUgc2lkZSBlZmZlY3Qgb2YgaGF2aW5nIGFuIGludmlzaWJsZSBtYXJrZXIgaXMgdGhh
dCB0aGUgcXVpcmtzIG1vZGUgYmVoYXZpb3Igb2Ygc2hyaW5raW5nIGxpbmVzIHdpdGggbm8KICAg
ICAgICAgLy8gdGV4dCBjaGlsZHJlbiBtdXN0IG5vdCBhcHBseS4gIFRoaXMgY2hhbmdlIGFsc28g
bWVhbnMgdGhhdCBnYXBzIHdpbGwgZXhpc3QgYmV0d2VlbiBpbWFnZSBidWxsZXQgbGlzdCBpdGVt
cy4gIEV2ZW4gd2hlbiB0aGUgbGlzdCBidWxsZXQKICAgICAgICAgLy8gaXMgYW4gaW1hZ2UsIHRo
ZSBsaW5lIGlzIHN0aWxsIGNvbnNpZGVyZWQgdG8gYmUgaW1tdW5lIGZyb20gdGhlIHF1aXJrLgot
ICAgICAgICBtX2hhc1RleHRDaGlsZHJlbiA9IHJlbmRlcmVyLnN0eWxlKCkuZGlzcGxheSgpID09
IExJU1RfSVRFTTsKKyAgICAgICAgbV9oYXNUZXh0Q2hpbGRyZW4gPSByZW5kZXJlci5zdHlsZSgp
LmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6TGlzdEl0ZW07CiAgICAgICAgIG1faGFzVGV4dERl
c2NlbmRhbnRzID0gbV9oYXNUZXh0Q2hpbGRyZW47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2MSw3ICszNjEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZW1waGFzaXNQb3NpdGlvbkhh
c05lCiBib29sIElubGluZVRleHRCb3g6OmVtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJvdmUoY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBib29sJiBhYm92ZSkgY29uc3QKIHsKICAgICAvLyBUaGlz
IGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBpZiB0aGVyZSBhcmUgdGV4dCBlbXBoYXNpcyBtYXJrcyBh
bmQgdGhleSBhcmUgc3VwcHJlc3NlZCBieSBydWJ5IHRleHQuCi0gICAgaWYgKHN0eWxlLnRleHRF
bXBoYXNpc01hcmsoKSA9PSBUZXh0RW1waGFzaXNNYXJrTm9uZSkKKyAgICBpZiAoc3R5bGUudGV4
dEVtcGhhc2lzTWFyaygpID09IFRleHRFbXBoYXNpc01hcms6Ok5vbmUpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIFRleHRFbXBoYXNpc1Bvc2l0aW9uIGVtcGhhc2lzUG9zaXRpb24gPSBz
dHlsZS50ZXh0RW1waGFzaXNQb3NpdGlvbigpOwpAQCAtNDM0LDcgKzQzNCw3IEBAIHN0YXRpYyBN
YXJrZWRUZXh0IGNyZWF0ZU1hcmtlZFRleHRGcm9tU2UKIAogdm9pZCBJbmxpbmVUZXh0Qm94Ojpw
YWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
LCBMYXlvdXRVbml0IC8qbGluZVRvcCovLCBMYXlvdXRVbml0IC8qbGluZUJvdHRvbSovKQogewot
ICAgIGlmIChpc0xpbmVCcmVhaygpIHx8ICFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290
KHJlbmRlcmVyKCkpIHx8IHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJM
RQorICAgIGlmIChpc0xpbmVCcmVhaygpIHx8ICFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5S
b290KHJlbmRlcmVyKCkpIHx8IHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlz
aWJpbGl0eTo6VmlzaWJsZQogICAgICAgICB8fCBtX3RydW5jYXRpb24gPT0gY0Z1bGxUcnVuY2F0
aW9uIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlT3V0bGluZSB8fCAhbV9sZW4pCiAg
ICAgICAgIHJldHVybjsKIApAQCAtMTIzNSw3ICsxMjM1LDcgQEAgZmxvYXQgSW5saW5lVGV4dEJv
eDo6cG9zaXRpb25Gb3JPZmZzZXQodQogVGV4dFJ1biBJbmxpbmVUZXh0Qm94OjpjcmVhdGVUZXh0
UnVuKGJvb2wgaWdub3JlQ29tYmluZWRUZXh0LCBib29sIGlnbm9yZUh5cGhlbikgY29uc3QKIHsK
ICAgICBjb25zdCBhdXRvJiBzdHlsZSA9IGxpbmVTdHlsZSgpOwotICAgIFRleHRSdW4gdGV4dFJ1
biB7IHRleHQoaWdub3JlQ29tYmluZWRUZXh0LCBpZ25vcmVIeXBoZW4pLCB0ZXh0UG9zKCksIGV4
cGFuc2lvbigpLCBleHBhbnNpb25CZWhhdmlvcigpLCBkaXJlY3Rpb24oKSwgZGlyT3ZlcnJpZGUo
KSB8fCBzdHlsZS5ydGxPcmRlcmluZygpID09IFZpc3VhbE9yZGVyLCAhcmVuZGVyZXIoKS5jYW5V
c2VTaW1wbGVGb250Q29kZVBhdGgoKSB9OworICAgIFRleHRSdW4gdGV4dFJ1biB7IHRleHQoaWdu
b3JlQ29tYmluZWRUZXh0LCBpZ25vcmVIeXBoZW4pLCB0ZXh0UG9zKCksIGV4cGFuc2lvbigpLCBl
eHBhbnNpb25CZWhhdmlvcigpLCBkaXJlY3Rpb24oKSwgZGlyT3ZlcnJpZGUoKSB8fCBzdHlsZS5y
dGxPcmRlcmluZygpID09IE9yZGVyOjpWaXN1YWwsICFyZW5kZXJlcigpLmNhblVzZVNpbXBsZUZv
bnRDb2RlUGF0aCgpIH07CiAgICAgdGV4dFJ1bi5zZXRUYWJTaXplKCFzdHlsZS5jb2xsYXBzZVdo
aXRlU3BhY2UoKSwgc3R5bGUudGFiU2l6ZSgpKTsKICAgICByZXR1cm4gdGV4dFJ1bjsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Qb2ludGVyRXZlbnRzSGl0UnVsZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Qb2ludGVyRXZlbnRzSGl0UnVs
ZXMuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUG9p
bnRlckV2ZW50c0hpdFJ1bGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBvaW50ZXJFdmVudHNIaXRSdWxlczo6UG9pbnRlckV2
ZW50c0hpdFJ1bGVzKEVIaXRUZXN0aW5nIGhpdFRlc3RpbmcsIGNvbnN0IEhpdFRlc3RSZXF1ZXN0
JiByZXF1ZXN0LCBFUG9pbnRlckV2ZW50cyBwb2ludGVyRXZlbnRzKQorUG9pbnRlckV2ZW50c0hp
dFJ1bGVzOjpQb2ludGVyRXZlbnRzSGl0UnVsZXMoRUhpdFRlc3RpbmcgaGl0VGVzdGluZywgY29u
c3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIFBvaW50ZXJFdmVudHMgcG9pbnRlckV2ZW50cykK
ICAgICA6IHJlcXVpcmVWaXNpYmxlKGZhbHNlKQogICAgICwgcmVxdWlyZUZpbGwoZmFsc2UpCiAg
ICAgLCByZXF1aXJlU3Ryb2tlKGZhbHNlKQpAQCAtMzAsNzggKzMwLDc4IEBAIFBvaW50ZXJFdmVu
dHNIaXRSdWxlczo6UG9pbnRlckV2ZW50c0hpdFIKICAgICAsIGNhbkhpdEZpbGwoZmFsc2UpCiB7
CiAgICAgaWYgKHJlcXVlc3Quc3ZnQ2xpcENvbnRlbnQoKSkKLSAgICAgICAgcG9pbnRlckV2ZW50
cyA9IFBFX0ZJTEw7CisgICAgICAgIHBvaW50ZXJFdmVudHMgPSBQb2ludGVyRXZlbnRzOjpGaWxs
OwogCiAgICAgaWYgKGhpdFRlc3RpbmcgPT0gU1ZHX1BBVEhfSElUVEVTVElORykgewogICAgICAg
ICBzd2l0Y2ggKHBvaW50ZXJFdmVudHMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNhc2UgUEVf
VklTSUJMRV9QQUlOVEVEOgotICAgICAgICAgICAgY2FzZSBQRV9BVVRPOiAvLyAiYXV0byIgaXMg
bGlrZSAidmlzaWJsZVBhaW50ZWQiIHdoZW4gaW4gU1ZHIGNvbnRlbnQKKyAgICAgICAgICAgIGNh
c2UgUG9pbnRlckV2ZW50czo6VmlzaWJsZVBhaW50ZWQ6CisgICAgICAgICAgICBjYXNlIFBvaW50
ZXJFdmVudHM6OkF1dG86IC8vICJhdXRvIiBpcyBsaWtlICJ2aXNpYmxlUGFpbnRlZCIgd2hlbiBp
biBTVkcgY29udGVudAogICAgICAgICAgICAgICAgIHJlcXVpcmVGaWxsID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICByZXF1aXJlU3Ryb2tlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBGQUxMVEhS
T1VHSDsKLSAgICAgICAgICAgIGNhc2UgUEVfVklTSUJMRToKKyAgICAgICAgICAgIGNhc2UgUG9p
bnRlckV2ZW50czo6VmlzaWJsZToKICAgICAgICAgICAgICAgICByZXF1aXJlVmlzaWJsZSA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgY2FuSGl0RmlsbCA9IHRydWU7CiAgICAgICAgICAgICAgICAg
Y2FuSGl0U3Ryb2tlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGNhc2UgUEVfVklTSUJMRV9GSUxMOgorICAgICAgICAgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpW
aXNpYmxlRmlsbDoKICAgICAgICAgICAgICAgICByZXF1aXJlVmlzaWJsZSA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgY2FuSGl0RmlsbCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBjYXNlIFBFX1ZJU0lCTEVfU1RST0tFOgorICAgICAgICAgICAgY2FzZSBQb2lu
dGVyRXZlbnRzOjpWaXNpYmxlU3Ryb2tlOgogICAgICAgICAgICAgICAgIHJlcXVpcmVWaXNpYmxl
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBjYW5IaXRTdHJva2UgPSB0cnVlOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBQRV9QQUlOVEVEOgorICAgICAgICAgICAg
Y2FzZSBQb2ludGVyRXZlbnRzOjpQYWludGVkOgogICAgICAgICAgICAgICAgIHJlcXVpcmVGaWxs
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICByZXF1aXJlU3Ryb2tlID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICBGQUxMVEhST1VHSDsKLSAgICAgICAgICAgIGNhc2UgUEVfQUxMOgorICAgICAgICAg
ICAgY2FzZSBQb2ludGVyRXZlbnRzOjpBbGw6CiAgICAgICAgICAgICAgICAgY2FuSGl0RmlsbCA9
IHRydWU7CiAgICAgICAgICAgICAgICAgY2FuSGl0U3Ryb2tlID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgUEVfRklMTDoKKyAgICAgICAgICAgIGNhc2Ug
UG9pbnRlckV2ZW50czo6RmlsbDoKICAgICAgICAgICAgICAgICBjYW5IaXRGaWxsID0gdHJ1ZTsK
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgUEVfU1RST0tFOgorICAg
ICAgICAgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpTdHJva2U6CiAgICAgICAgICAgICAgICAgY2Fu
SGl0U3Ryb2tlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgUEVfTk9ORToKKyAgICAgICAgICAgIGNhc2UgUG9pbnRlckV2ZW50czo6Tm9uZToKICAgICAg
ICAgICAgICAgICAvLyBub3RoaW5nIHRvIGRvIGhlcmUsIGRlZmF1bHRzIGFyZSBhbGwgZmFsc2Uu
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAg
ICBzd2l0Y2ggKHBvaW50ZXJFdmVudHMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNhc2UgUEVf
VklTSUJMRV9QQUlOVEVEOgotICAgICAgICAgICAgY2FzZSBQRV9BVVRPOiAvLyAiYXV0byIgaXMg
bGlrZSAidmlzaWJsZVBhaW50ZWQiIHdoZW4gaW4gU1ZHIGNvbnRlbnQKKyAgICAgICAgICAgIGNh
c2UgUG9pbnRlckV2ZW50czo6VmlzaWJsZVBhaW50ZWQ6CisgICAgICAgICAgICBjYXNlIFBvaW50
ZXJFdmVudHM6OkF1dG86IC8vICJhdXRvIiBpcyBsaWtlICJ2aXNpYmxlUGFpbnRlZCIgd2hlbiBp
biBTVkcgY29udGVudAogICAgICAgICAgICAgICAgIHJlcXVpcmVWaXNpYmxlID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICByZXF1aXJlRmlsbCA9IHRydWU7CiAgICAgICAgICAgICAgICAgcmVxdWly
ZVN0cm9rZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgY2FuSGl0RmlsbCA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgY2FuSGl0U3Ryb2tlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgUEVfVklTSUJMRV9GSUxMOgotICAgICAgICAgICAgY2FzZSBQRV9W
SVNJQkxFX1NUUk9LRToKLSAgICAgICAgICAgIGNhc2UgUEVfVklTSUJMRToKKyAgICAgICAgICAg
IGNhc2UgUG9pbnRlckV2ZW50czo6VmlzaWJsZUZpbGw6CisgICAgICAgICAgICBjYXNlIFBvaW50
ZXJFdmVudHM6OlZpc2libGVTdHJva2U6CisgICAgICAgICAgICBjYXNlIFBvaW50ZXJFdmVudHM6
OlZpc2libGU6CiAgICAgICAgICAgICAgICAgcmVxdWlyZVZpc2libGUgPSB0cnVlOwogICAgICAg
ICAgICAgICAgIGNhbkhpdEZpbGwgPSB0cnVlOwogICAgICAgICAgICAgICAgIGNhbkhpdFN0cm9r
ZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFBFX1BB
SU5URUQ6CisgICAgICAgICAgICBjYXNlIFBvaW50ZXJFdmVudHM6OlBhaW50ZWQ6CiAgICAgICAg
ICAgICAgICAgcmVxdWlyZUZpbGwgPSB0cnVlOwogICAgICAgICAgICAgICAgIHJlcXVpcmVTdHJv
a2UgPSB0cnVlOwogICAgICAgICAgICAgICAgIGNhbkhpdEZpbGwgPSB0cnVlOwogICAgICAgICAg
ICAgICAgIGNhbkhpdFN0cm9rZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBjYXNlIFBFX0ZJTEw6Ci0gICAgICAgICAgICBjYXNlIFBFX1NUUk9LRToKLSAgICAg
ICAgICAgIGNhc2UgUEVfQUxMOgorICAgICAgICAgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpGaWxs
OgorICAgICAgICAgICAgY2FzZSBQb2ludGVyRXZlbnRzOjpTdHJva2U6CisgICAgICAgICAgICBj
YXNlIFBvaW50ZXJFdmVudHM6OkFsbDoKICAgICAgICAgICAgICAgICBjYW5IaXRGaWxsID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICBjYW5IaXRTdHJva2UgPSB0cnVlOwogICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBQRV9OT05FOgorICAgICAgICAgICAgY2FzZSBQb2lu
dGVyRXZlbnRzOjpOb25lOgogICAgICAgICAgICAgICAgIC8vIG5vdGhpbmcgdG8gZG8gaGVyZSwg
ZGVmYXVsdHMgYXJlIGFsbCBmYWxzZS4KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BvaW50ZXJFdmVudHNIaXRSdWxlcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Qb2ludGVyRXZlbnRzSGl0
UnVsZXMuaAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Bv
aW50ZXJFdmVudHNIaXRSdWxlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIHB1
YmxpYzoKICAgICAgICAgU1ZHX1RFWFRfSElUVEVTVElORwogICAgIH07CiAKLSAgICBQb2ludGVy
RXZlbnRzSGl0UnVsZXMoRUhpdFRlc3RpbmcsIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgRVBvaW50
ZXJFdmVudHMpOworICAgIFBvaW50ZXJFdmVudHNIaXRSdWxlcyhFSGl0VGVzdGluZywgY29uc3Qg
SGl0VGVzdFJlcXVlc3QmLCBQb2ludGVyRXZlbnRzKTsKIAogICAgIGJvb2wgcmVxdWlyZVZpc2li
bGU7CiAgICAgYm9vbCByZXF1aXJlRmlsbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYwLDcgKzc2MCw3IEBA
IExheW91dFVuaXQgUmVuZGVyQmxvY2s6OmNvbXB1dGVTdGFydFBvc2kKIAogICAgIExheW91dFVu
aXQgc3RhcnRPZmYgPSBzdGFydE9mZnNldEZvckxpbmVJbkZyYWdtZW50KGJsb2NrT2Zmc2V0LCBE
b05vdEluZGVudFRleHQsIGZyYWdtZW50LCBsb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoY2hpbGQpKTsK
IAotICAgIGlmIChzdHlsZSgpLnRleHRBbGlnbigpICE9IFdFQktJVF9DRU5URVIgJiYgIWNoaWxk
LnN0eWxlKCkubWFyZ2luU3RhcnRVc2luZygmc3R5bGUoKSkuaXNBdXRvKCkpIHsKKyAgICBpZiAo
c3R5bGUoKS50ZXh0QWxpZ24oKSAhPSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRDZW50ZXIgJiYgIWNo
aWxkLnN0eWxlKCkubWFyZ2luU3RhcnRVc2luZygmc3R5bGUoKSkuaXNBdXRvKCkpIHsKICAgICAg
ICAgaWYgKGNoaWxkTWFyZ2luU3RhcnQgPCAwKQogICAgICAgICAgICAgc3RhcnRPZmYgKz0gY2hp
bGRNYXJnaW5TdGFydDsKICAgICAgICAgbmV3UG9zaXRpb24gPSBzdGQ6Om1heChuZXdQb3NpdGlv
biwgc3RhcnRPZmYpOyAvLyBMZXQgdGhlIGZsb2F0IHNpdCBpbiB0aGUgY2hpbGQncyBtYXJnaW4g
aWYgaXQgY2FuIGZpdC4KQEAgLTExMDksNyArMTEwOSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBh
aW50KFBhaW50SW5mbyYgcGFpbnQKICAgICAvLyB6LWluZGV4LiBXZSBwYWludCBhZnRlciB3ZSBw
YWludGVkIHRoZSBiYWNrZ3JvdW5kL2JvcmRlciwgc28gdGhhdCB0aGUgc2Nyb2xsYmFycyB3aWxs
CiAgICAgLy8gc2l0IGFib3ZlIHRoZSBiYWNrZ3JvdW5kL2JvcmRlci4KICAgICBpZiAoKHBoYXNl
ID09IFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQgfHwgcGhhc2UgPT0gUGFpbnRQaGFzZUNoaWxk
QmxvY2tCYWNrZ3JvdW5kKSAmJiBoYXNPdmVyZmxvd0NsaXAoKSAmJiBsYXllcigpCi0gICAgICAg
ICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUgJiYgcGFpbnRJbmZvLnNob3VsZFBh
aW50V2l0aGluUm9vdCgqdGhpcykgJiYgIXBhaW50SW5mby5wYWludFJvb3RCYWNrZ3JvdW5kT25s
eSgpKQorICAgICAgICAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNp
YmxlICYmIHBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QoKnRoaXMpICYmICFwYWludElu
Zm8ucGFpbnRSb290QmFja2dyb3VuZE9ubHkoKSkKICAgICAgICAgbGF5ZXIoKS0+cGFpbnRPdmVy
Zmxvd0NvbnRyb2xzKHBhaW50SW5mby5jb250ZXh0KCksIHJvdW5kZWRJbnRQb2ludChhZGp1c3Rl
ZFBhaW50T2Zmc2V0KSwgc25hcHBlZEludFJlY3QocGFpbnRJbmZvLnJlY3QpKTsKIH0KIApAQCAt
MTIxOSw3ICsxMjE5LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRPYmplY3QoUGFpbnRJbmZv
JgogICAgIFBhaW50UGhhc2UgcGFpbnRQaGFzZSA9IHBhaW50SW5mby5waGFzZTsKIAogICAgIC8v
IDEuIHBhaW50IGJhY2tncm91bmQsIGJvcmRlcnMgZXRjCi0gICAgaWYgKChwYWludFBoYXNlID09
IFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQgfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlQ2hp
bGRCbG9ja0JhY2tncm91bmQpICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUpIHsK
KyAgICBpZiAoKHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZUJsb2NrQmFja2dyb3VuZCB8fCBwYWlu
dFBoYXNlID09IFBhaW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZCkgJiYgc3R5bGUoKS52aXNp
YmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkgewogICAgICAgICBpZiAoaGFzVmlzaWJs
ZUJveERlY29yYXRpb25zKCkpCiAgICAgICAgICAgICBwYWludEJveERlY29yYXRpb25zKHBhaW50
SW5mbywgcGFpbnRPZmZzZXQpOwogICAgIH0KQEAgLTEyMjgsMTIgKzEyMjgsMTIgQEAgdm9pZCBS
ZW5kZXJCbG9jazo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJgogICAgIGlmIChwYWludFBoYXNlID09
IFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQgfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlQ2hp
bGRCbG9ja0JhY2tncm91bmQgfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlU2VsZWN0aW9uKQog
ICAgICAgICBwYWludEV4Y2x1ZGVkQ2hpbGRyZW5JbkJvcmRlcihwYWludEluZm8sIHBhaW50T2Zm
c2V0KTsKICAgICAKLSAgICBpZiAocGFpbnRQaGFzZSA9PSBQYWludFBoYXNlTWFzayAmJiBzdHls
ZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKSB7CisgICAgaWYgKHBhaW50UGhhc2UgPT0gUGFp
bnRQaGFzZU1hc2sgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJs
ZSkgewogICAgICAgICBwYWludE1hc2socGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBpZiAocGFpbnRQaGFzZSA9PSBQYWludFBoYXNlQ2xpcHBp
bmdNYXNrICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUpIHsKKyAgICBpZiAocGFp
bnRQaGFzZSA9PSBQYWludFBoYXNlQ2xpcHBpbmdNYXNrICYmIHN0eWxlKCkudmlzaWJpbGl0eSgp
ID09IFZpc2liaWxpdHk6OlZpc2libGUpIHsKICAgICAgICAgcGFpbnRDbGlwcGluZ01hc2socGFp
bnRJbmZvLCBwYWludE9mZnNldCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjQ5LDcg
KzEyNDksNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludE9iamVjdChQYWludEluZm8mCiAgICAg
Ly8gQ29sdW1uIHJ1bGVzIG5lZWQgdG8gYWNjb3VudCBmb3Igc2Nyb2xsaW5nIGFuZCBjbGlwcGlu
Zy4KICAgICAvLyBGSVhNRTogQ2xpcHBpbmcgb2YgY29sdW1uIHJ1bGVzIGRvZXMgbm90IHdvcmsu
IFdlIHdpbGwgbmVlZCBhIHNlcGFyYXRlIHBhaW50IHBoYXNlIGZvciBjb2x1bW4gcnVsZXMgSSBz
dXNwZWN0IGluIG9yZGVyIHRvIGdldAogICAgIC8vIGNsaXBwaW5nIGNvcnJlY3QgKHNpbmNlIGl0
IGhhcyB0byBwYWludCBhcyBiYWNrZ3JvdW5kIGJ1dCBpcyBzdGlsbCBjb25zaWRlcmVkICJjb250
ZW50cyIpLgotICAgIGlmICgocGFpbnRQaGFzZSA9PSBQYWludFBoYXNlQmxvY2tCYWNrZ3JvdW5k
IHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZUNoaWxkQmxvY2tCYWNrZ3JvdW5kKSAmJiBzdHls
ZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKQorICAgIGlmICgocGFpbnRQaGFzZSA9PSBQYWlu
dFBoYXNlQmxvY2tCYWNrZ3JvdW5kIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZUNoaWxkQmxv
Y2tCYWNrZ3JvdW5kKSAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNp
YmxlKQogICAgICAgICBwYWludENvbHVtblJ1bGVzKHBhaW50SW5mbywgc2Nyb2xsZWRPZmZzZXQp
OwogCiAgICAgLy8gRG9uZSB3aXRoIGJhY2tncm91bmRzLCBib3JkZXJzIGFuZCBjb2x1bW4gcnVs
ZXMuCkBAIC0xMjcxLDEzICsxMjcxLDEzIEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50T2JqZWN0
KFBhaW50SW5mbyYKICAgICAgICAgcGFpbnRGbG9hdHMocGFpbnRJbmZvLCBzY3JvbGxlZE9mZnNl
dCwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlU2VsZWN0aW9uIHx8IHBhaW50UGhhc2UgPT0gUGFp
bnRQaGFzZVRleHRDbGlwKTsKIAogICAgIC8vIDUuIHBhaW50IG91dGxpbmUuCi0gICAgaWYgKChw
YWludFBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFz
ZVNlbGZPdXRsaW5lKSAmJiBoYXNPdXRsaW5lKCkgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0g
VklTSUJMRSkKKyAgICBpZiAoKHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZU91dGxpbmUgfHwgcGFp
bnRQaGFzZSA9PSBQYWludFBoYXNlU2VsZk91dGxpbmUpICYmIGhhc091dGxpbmUoKSAmJiBzdHls
ZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICBwYWludE91
dGxpbmUocGFpbnRJbmZvLCBMYXlvdXRSZWN0KHBhaW50T2Zmc2V0LCBzaXplKCkpKTsKIAogICAg
IC8vIDYuIHBhaW50IGNvbnRpbnVhdGlvbiBvdXRsaW5lcy4KICAgICBpZiAoKHBhaW50UGhhc2Ug
PT0gUGFpbnRQaGFzZU91dGxpbmUgfHwgcGFpbnRQaGFzZSA9PSBQYWludFBoYXNlQ2hpbGRPdXRs
aW5lcykpIHsKICAgICAgICAgUmVuZGVySW5saW5lKiBpbmxpbmVDb250ID0gaW5saW5lQ29udGlu
dWF0aW9uKCk7Ci0gICAgICAgIGlmIChpbmxpbmVDb250ICYmIGlubGluZUNvbnQtPmhhc091dGxp
bmUoKSAmJiBpbmxpbmVDb250LT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKSB7Cisg
ICAgICAgIGlmIChpbmxpbmVDb250ICYmIGlubGluZUNvbnQtPmhhc091dGxpbmUoKSAmJiBpbmxp
bmVDb250LT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlKSB7CiAg
ICAgICAgICAgICBSZW5kZXJJbmxpbmUqIGlubGluZVJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVy
SW5saW5lPihpbmxpbmVDb250LT5lbGVtZW50KCktPnJlbmRlcmVyKCkpOwogICAgICAgICAgICAg
UmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jayA9IHRoaXMtPmNvbnRhaW5pbmdCbG9jaygpOwog
CkBAIC0xMzczLDcgKzEzNzMsNyBAQCBib29sIFJlbmRlckJsb2NrOjpzaG91bGRQYWludFNlbGVj
dGlvbkdhCiAgICAgaWYgKHNldHRpbmdzKCkuc2VsZWN0aW9uUGFpbnRpbmdXaXRob3V0U2VsZWN0
aW9uR2Fwc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHNl
bGVjdGlvblN0YXRlKCkgIT0gU2VsZWN0aW9uTm9uZSAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9
PSBWSVNJQkxFICYmIGlzU2VsZWN0aW9uUm9vdCgpOworICAgIHJldHVybiBzZWxlY3Rpb25TdGF0
ZSgpICE9IFNlbGVjdGlvbk5vbmUgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0
eTo6VmlzaWJsZSAmJiBpc1NlbGVjdGlvblJvb3QoKTsKIH0KIAogYm9vbCBSZW5kZXJCbG9jazo6
aXNTZWxlY3Rpb25Sb290KCkgY29uc3QKQEAgLTE4NjYsNyArMTg2Niw3IEBAIExheW91dFVuaXQg
UmVuZGVyQmxvY2s6OmFkanVzdExvZ2ljYWxMZWYKICAgICBpZiAoYXBwbHlUZXh0SW5kZW50ICYm
IHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQogICAgICAgICBsZWZ0ICs9IHRleHRJ
bmRlbnRPZmZzZXQoKTsKIAotICAgIGlmIChzdHlsZSgpLmxpbmVBbGlnbigpID09IExpbmVBbGln
bk5vbmUpCisgICAgaWYgKHN0eWxlKCkubGluZUFsaWduKCkgPT0gTGluZUFsaWduOjpOb25lKQog
ICAgICAgICByZXR1cm4gbGVmdDsKICAgICAKICAgICAvLyBQdXNoIGluIG91ciBsZWZ0IG9mZnNl
dCBzbyB0aGF0IGl0IGlzIGFsaWduZWQgd2l0aCB0aGUgY2hhcmFjdGVyIGdyaWQuCkBAIC0xOTA2
LDcgKzE5MDYsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjphZGp1c3RMb2dpY2FsUmlnCiAg
ICAgaWYgKGFwcGx5VGV4dEluZGVudCAmJiAhc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9u
KCkpCiAgICAgICAgIHJpZ2h0IC09IHRleHRJbmRlbnRPZmZzZXQoKTsKICAgICAKLSAgICBpZiAo
c3R5bGUoKS5saW5lQWxpZ24oKSA9PSBMaW5lQWxpZ25Ob25lKQorICAgIGlmIChzdHlsZSgpLmxp
bmVBbGlnbigpID09IExpbmVBbGlnbjo6Tm9uZSkKICAgICAgICAgcmV0dXJuIHJpZ2h0OwogICAg
IAogICAgIC8vIFB1c2ggaW4gb3VyIHJpZ2h0IG9mZnNldCBzbyB0aGF0IGl0IGlzIGFsaWduZWQg
d2l0aCB0aGUgY2hhcmFjdGVyIGdyaWQuCkBAIC0yMTM0LDcgKzIxMzQsNyBAQCBWaXNpYmxlUG9z
aXRpb24gUmVuZGVyQmxvY2s6OnBvc2l0aW9uRm9yCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0No
aWxkSGl0VGVzdENhbmRpZGF0ZShjb25zdCBSZW5kZXJCb3gmIGJveCkKIHsKLSAgICByZXR1cm4g
Ym94LmhlaWdodCgpICYmIGJveC5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFICYmICFi
b3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIWJveC5pc0luRmxvd1JlbmRlckZyYWdtZW50
ZWRGbG93KCk7CisgICAgcmV0dXJuIGJveC5oZWlnaHQoKSAmJiBib3guc3R5bGUoKS52aXNpYmls
aXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhYm94LmlzT3V0T2ZGbG93UG9zaXRpb25l
ZCgpICYmICFib3guaXNJbkZsb3dSZW5kZXJGcmFnbWVudGVkRmxvdygpOwogfQogCiAvLyBWYWxp
ZCBjYW5kaWRhdGVzIGluIGEgRnJhZ21lbnRlZEZsb3cgbXVzdCBiZSByZW5kZXJlZCBieSB0aGUg
ZnJhZ21lbnQuCkBAIC0yMjU4LDcgKzIyNTgsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpjb21wdXRl
UHJlZmVycmVkTG9naWNhCiB2b2lkIFJlbmRlckJsb2NrOjpjb21wdXRlQmxvY2tQcmVmZXJyZWRM
b2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4
TG9naWNhbFdpZHRoKSBjb25zdAogewogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZVRvVXNl
ID0gc3R5bGUoKTsKLSAgICBib29sIG5vd3JhcCA9IHN0eWxlVG9Vc2Uud2hpdGVTcGFjZSgpID09
IE5PV1JBUDsKKyAgICBib29sIG5vd3JhcCA9IHN0eWxlVG9Vc2Uud2hpdGVTcGFjZSgpID09IFdo
aXRlU3BhY2U6Ok5vV3JhcDsKIAogICAgIFJlbmRlck9iamVjdCogY2hpbGQgPSBmaXJzdENoaWxk
KCk7CiAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jayA9IHRoaXMtPmNvbnRhaW5pbmdC
bG9jaygpOwpAQCAtMjU1MCw3ICsyNTUwLDcgQEAgUmVuZGVyQmxvY2sqIFJlbmRlckJsb2NrOjpm
aXJzdExpbmVCbG9jawogICAgIFJlbmRlckJsb2NrKiBmaXJzdExpbmVCbG9jayA9IGNvbnN0X2Nh
c3Q8UmVuZGVyQmxvY2sqPih0aGlzKTsKICAgICBib29sIGhhc1BzZXVkbyA9IGZhbHNlOwogICAg
IHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGhhc1BzZXVkbyA9IGZpcnN0TGluZUJsb2NrLT5zdHls
ZSgpLmhhc1BzZXVkb1N0eWxlKEZJUlNUX0xJTkUpOworICAgICAgICBoYXNQc2V1ZG8gPSBmaXJz
dExpbmVCbG9jay0+c3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKTsK
ICAgICAgICAgaWYgKGhhc1BzZXVkbykKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBSZW5k
ZXJFbGVtZW50KiBwYXJlbnRCbG9jayA9IGZpcnN0TGluZUJsb2NrLT5wYXJlbnQoKTsKQEAgLTI1
NzAsNyArMjU3MCw3IEBAIHN0YXRpYyBpbmxpbmUgUmVuZGVyQmxvY2sqIGZpbmRGaXJzdExldHQK
IHsKICAgICBSZW5kZXJCbG9jayogZmlyc3RMZXR0ZXJCbG9jayA9IHN0YXJ0OwogICAgIHdoaWxl
ICh0cnVlKSB7Ci0gICAgICAgIGJvb2wgY2FuSGF2ZUZpcnN0TGV0dGVyUmVuZGVyZXIgPSBmaXJz
dExldHRlckJsb2NrLT5zdHlsZSgpLmhhc1BzZXVkb1N0eWxlKEZJUlNUX0xFVFRFUikKKyAgICAg
ICAgYm9vbCBjYW5IYXZlRmlyc3RMZXR0ZXJSZW5kZXJlciA9IGZpcnN0TGV0dGVyQmxvY2stPnN0
eWxlKCkuaGFzUHNldWRvU3R5bGUoUHNldWRvSWQ6OkZpcnN0TGV0dGVyKQogICAgICAgICAgICAg
JiYgZmlyc3RMZXR0ZXJCbG9jay0+Y2FuSGF2ZUdlbmVyYXRlZENoaWxkcmVuKCkKICAgICAgICAg
ICAgICYmIGlzUmVuZGVyQmxvY2tGbG93T3JSZW5kZXJCdXR0b24oKmZpcnN0TGV0dGVyQmxvY2sp
OwogICAgICAgICBpZiAoY2FuSGF2ZUZpcnN0TGV0dGVyUmVuZGVyZXIpCkBAIC0yNTk1LDcgKzI1
OTUsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpnZXRGaXJzdExldHRlcihSZW5kZXJPCiAgICAgICAg
IHJldHVybjsKIAogICAgIC8vIERvbid0IHJlY3VyCi0gICAgaWYgKHN0eWxlKCkuc3R5bGVUeXBl
KCkgPT0gRklSU1RfTEVUVEVSKQorICAgIGlmIChzdHlsZSgpLnN0eWxlVHlwZSgpID09IFBzZXVk
b0lkOjpGaXJzdExldHRlcikKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIEZJWE1FOiBX
ZSBuZWVkIHRvIGRlc3Ryb3kgdGhlIGZpcnN0LWxldHRlciBvYmplY3QgaWYgaXQgaXMgbm8gbG9u
Z2VyIHRoZSBmaXJzdCBjaGlsZC4gTmVlZCB0byBmaW5kCkBAIC0yNjIwLDcgKzI2MjAsNyBAQCB2
b2lkIFJlbmRlckJsb2NrOjpnZXRGaXJzdExldHRlcihSZW5kZXJPCiAgICAgICAgIGlmIChpczxS
ZW5kZXJMaXN0TWFya2VyPihjdXJyZW50KSkKICAgICAgICAgICAgIGZpcnN0TGV0dGVyID0gY3Vy
cmVudC5uZXh0U2libGluZygpOwogICAgICAgICBlbHNlIGlmIChjdXJyZW50LmlzRmxvYXRpbmdP
ck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewotICAgICAgICAgICAgaWYgKGN1cnJlbnQuc3R5bGUo
KS5zdHlsZVR5cGUoKSA9PSBGSVJTVF9MRVRURVIpIHsKKyAgICAgICAgICAgIGlmIChjdXJyZW50
LnN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6OkZpcnN0TGV0dGVyKSB7CiAgICAgICAg
ICAgICAgICAgZmlyc3RMZXR0ZXIgPSBjdXJyZW50LmZpcnN0Q2hpbGQoKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTI2MjksNyArMjYyOSw3IEBAIHZvaWQgUmVu
ZGVyQmxvY2s6OmdldEZpcnN0TGV0dGVyKFJlbmRlck8KICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBlbHNlIGlmIChjdXJyZW50LmlzRmxleGlibGVCb3hJbmNsdWRpbmdEZXByZWNhdGVkKCkg
fHwgY3VycmVudC5pc1JlbmRlckdyaWQoKSkKICAgICAgICAgICAgIGZpcnN0TGV0dGVyID0gY3Vy
cmVudC5uZXh0U2libGluZygpOwotICAgICAgICBlbHNlIGlmIChjdXJyZW50LnN0eWxlKCkuaGFz
UHNldWRvU3R5bGUoRklSU1RfTEVUVEVSKSAmJiBjdXJyZW50LmNhbkhhdmVHZW5lcmF0ZWRDaGls
ZHJlbigpKSAgeworICAgICAgICBlbHNlIGlmIChjdXJyZW50LnN0eWxlKCkuaGFzUHNldWRvU3R5
bGUoUHNldWRvSWQ6OkZpcnN0TGV0dGVyKSAmJiBjdXJyZW50LmNhbkhhdmVHZW5lcmF0ZWRDaGls
ZHJlbigpKSAgewogICAgICAgICAgICAgLy8gV2UgZm91bmQgYSBsb3dlci1sZXZlbCBub2RlIHdp
dGggZmlyc3QtbGV0dGVyLCB3aGljaCBzdXBlcnNlZGVzIHRoZSBoaWdoZXItbGV2ZWwgc3R5bGUK
ICAgICAgICAgICAgIGZpcnN0TGV0dGVyQ29udGFpbmVyID0gJmN1cnJlbnQ7CiAgICAgICAgICAg
ICBmaXJzdExldHRlciA9IGN1cnJlbnQuZmlyc3RDaGlsZCgpOwpAQCAtMjg2OCwxNCArMjg2OCwx
NCBAQCB2b2lkIFJlbmRlckJsb2NrOjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0CiAgICAgICAgIGlu
bGluZUNvbnRpbnVhdGlvbi0+YWRkRm9jdXNSaW5nUmVjdHMocmVjdHMsIGZsb29yZWRMYXlvdXRQ
b2ludChMYXlvdXRQb2ludChhZGRpdGlvbmFsT2Zmc2V0ICsgaW5saW5lQ29udGludWF0aW9uLT5j
b250YWluaW5nQmxvY2soKS0+bG9jYXRpb24oKSAtIGxvY2F0aW9uKCkpKSwgcGFpbnRDb250YWlu
ZXIpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyQmxvY2s+IFJlbmRlckJsb2NrOjpjcmVhdGVBbm9u
eW1vdXNCbG9ja1dpdGhTdHlsZUFuZERpc3BsYXkoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUsIEVEaXNwbGF5IGRpc3BsYXkpCitSZW5kZXJQdHI8UmVuZGVyQmxv
Y2s+IFJlbmRlckJsb2NrOjpjcmVhdGVBbm9ueW1vdXNCbG9ja1dpdGhTdHlsZUFuZERpc3BsYXko
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIERpc3BsYXlUeXBl
IGRpc3BsYXkpCiB7CiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gY29udmVydCBhbGwgb3Vy
IGlubGluZSBkaXNwbGF5cyB0byBibG9jay10eXBlIGluIHRoZSBhbm9ueW1vdXMgbG9naWMgPwog
ICAgIFJlbmRlclB0cjxSZW5kZXJCbG9jaz4gbmV3Qm94OwotICAgIGlmIChkaXNwbGF5ID09IEZM
RVggfHwgZGlzcGxheSA9PSBJTkxJTkVfRkxFWCkKLSAgICAgICAgbmV3Qm94ID0gY3JlYXRlUmVu
ZGVyZXI8UmVuZGVyRmxleGlibGVCb3g+KGRvY3VtZW50LCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5v
bnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSwgRkxFWCkpOworICAgIGlmIChkaXNwbGF5ID09
IERpc3BsYXlUeXBlOjpGbGV4IHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OklubGluZUZsZXgp
CisgICAgICAgIG5ld0JveCA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlckZsZXhpYmxlQm94Pihkb2N1
bWVudCwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUs
IERpc3BsYXlUeXBlOjpGbGV4KSk7CiAgICAgZWxzZQotICAgICAgICBuZXdCb3ggPSBjcmVhdGVS
ZW5kZXJlcjxSZW5kZXJCbG9ja0Zsb3c+KGRvY3VtZW50LCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5v
bnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSwgQkxPQ0spKTsKKyAgICAgICAgbmV3Qm94ID0g
Y3JlYXRlUmVuZGVyZXI8UmVuZGVyQmxvY2tGbG93Pihkb2N1bWVudCwgUmVuZGVyU3R5bGU6OmNy
ZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUsIERpc3BsYXlUeXBlOjpCbG9jaykp
OwogICAgIAogICAgIG5ld0JveC0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAgcmV0dXJuIG5ld0Jv
eDsKQEAgLTI5MzAsOSArMjkzMCw5IEBAIGJvb2wgUmVuZGVyQmxvY2s6OmNoaWxkQm94SXNVbnNw
bGl0dGFibGUKICAgICBSZW5kZXJGcmFnbWVudGVkRmxvdyogZnJhZ21lbnRlZEZsb3cgPSBlbmNs
b3NpbmdGcmFnbWVudGVkRmxvdygpOwogICAgIGJvb2wgY2hlY2tDb2x1bW5CcmVha3MgPSBmcmFn
bWVudGVkRmxvdyAmJiBmcmFnbWVudGVkRmxvdy0+c2hvdWxkQ2hlY2tDb2x1bW5CcmVha3MoKTsK
ICAgICBib29sIGNoZWNrUGFnZUJyZWFrcyA9ICFjaGVja0NvbHVtbkJyZWFrcyAmJiB2aWV3KCku
ZnJhbWVWaWV3KCkubGF5b3V0Q29udGV4dCgpLmxheW91dFN0YXRlKCktPnBhZ2VMb2dpY2FsSGVp
Z2h0KCk7Ci0gICAgcmV0dXJuIGNoaWxkLmlzVW5zcGxpdHRhYmxlRm9yUGFnaW5hdGlvbigpIHx8
IGNoaWxkLnN0eWxlKCkuYnJlYWtJbnNpZGUoKSA9PSBBdm9pZEJyZWFrSW5zaWRlCi0gICAgICAg
IHx8IChjaGVja0NvbHVtbkJyZWFrcyAmJiBjaGlsZC5zdHlsZSgpLmJyZWFrSW5zaWRlKCkgPT0g
QXZvaWRDb2x1bW5CcmVha0luc2lkZSkKLSAgICAgICAgfHwgKGNoZWNrUGFnZUJyZWFrcyAmJiBj
aGlsZC5zdHlsZSgpLmJyZWFrSW5zaWRlKCkgPT0gQXZvaWRQYWdlQnJlYWtJbnNpZGUpOworICAg
IHJldHVybiBjaGlsZC5pc1Vuc3BsaXR0YWJsZUZvclBhZ2luYXRpb24oKSB8fCBjaGlsZC5zdHls
ZSgpLmJyZWFrSW5zaWRlKCkgPT0gQnJlYWtJbnNpZGU6OkF2b2lkCisgICAgICAgIHx8IChjaGVj
a0NvbHVtbkJyZWFrcyAmJiBjaGlsZC5zdHlsZSgpLmJyZWFrSW5zaWRlKCkgPT0gQnJlYWtJbnNp
ZGU6OkF2b2lkQ29sdW1uKQorICAgICAgICB8fCAoY2hlY2tQYWdlQnJlYWtzICYmIGNoaWxkLnN0
eWxlKCkuYnJlYWtJbnNpZGUoKSA9PSBCcmVha0luc2lkZTo6QXZvaWRQYWdlKTsKIH0KIAogdm9p
ZCBSZW5kZXJCbG9jazo6Y29tcHV0ZUZyYWdtZW50UmFuZ2VGb3JCb3hDaGlsZChjb25zdCBSZW5k
ZXJCb3gmIGJveCkgY29uc3QKQEAgLTMwOTYsNyArMzA5Niw3IEBAIGNvbnN0IGNoYXIqIFJlbmRl
ckJsb2NrOjpyZW5kZXJOYW1lKCkgY28KIFRleHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRl
eHRSdW4oU3RyaW5nVmlldyBzdHJpbmdWaWV3LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEV4
cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbiwgVGV4dFJ1bkZsYWdzIGZsYWdzKQogewogICAgIFRl
eHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiA9IExUUjsKLSAgICBib29sIGRpcmVjdGlvbmFsT3Zl
cnJpZGUgPSBzdHlsZS5ydGxPcmRlcmluZygpID09IFZpc3VhbE9yZGVyOworICAgIGJvb2wgZGly
ZWN0aW9uYWxPdmVycmlkZSA9IHN0eWxlLnJ0bE9yZGVyaW5nKCkgPT0gT3JkZXI6OlZpc3VhbDsK
ICAgICBpZiAoZmxhZ3MgIT0gRGVmYXVsdFRleHRSdW5GbGFncykgewogICAgICAgICBpZiAoZmxh
Z3MgJiBSZXNwZWN0RGlyZWN0aW9uKQogICAgICAgICAgICAgdGV4dERpcmVjdGlvbiA9IHN0eWxl
LmRpcmVjdGlvbigpOwpAQCAtMzIzMSwxMCArMzIzMSwxMCBAQCB2b2lkIFJlbmRlckJsb2NrOjps
YXlvdXRFeGNsdWRlZENoaWxkcmVuCiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdDsKICAgICBp
ZiAoc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpIHsKICAgICAgICAgc3dpdGNoIChs
ZWdlbmQuc3R5bGUoKS50ZXh0QWxpZ24oKSkgewotICAgICAgICBjYXNlIENFTlRFUjoKKyAgICAg
ICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpDZW50ZXI6CiAgICAgICAgICAgICBsb2dpY2FsTGVmdCA9
IChsb2dpY2FsV2lkdGgoKSAtIGxvZ2ljYWxXaWR0aEZvckNoaWxkKGxlZ2VuZCkpIC8gMjsKICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFJJR0hUOgorICAgICAgICBjYXNlIFRleHRB
bGlnbk1vZGU6OlJpZ2h0OgogICAgICAgICAgICAgbG9naWNhbExlZnQgPSBsb2dpY2FsV2lkdGgo
KSAtIGJvcmRlckVuZCgpIC0gcGFkZGluZ0VuZCgpIC0gbG9naWNhbFdpZHRoRm9yQ2hpbGQobGVn
ZW5kKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpAQCAtMzI0MywxMCAr
MzI0MywxMCBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRFeGNsdWRlZENoaWxkcmVuCiAgICAg
ICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBzd2l0Y2ggKGxlZ2VuZC5zdHlsZSgpLnRleHRB
bGlnbigpKSB7Ci0gICAgICAgIGNhc2UgTEVGVDoKKyAgICAgICAgY2FzZSBUZXh0QWxpZ25Nb2Rl
OjpMZWZ0OgogICAgICAgICAgICAgbG9naWNhbExlZnQgPSBib3JkZXJTdGFydCgpICsgcGFkZGlu
Z1N0YXJ0KCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDRU5URVI6IHsKKyAg
ICAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpDZW50ZXI6IHsKICAgICAgICAgICAgIC8vIE1ha2Ug
c3VyZSB0aGF0IHRoZSBleHRyYSBwaXhlbCBnb2VzIHRvIHRoZSBlbmQgc2lkZSBpbiBSVEwgKHNp
bmNlIGl0IHdlbnQgdG8gdGhlIGVuZCBzaWRlCiAgICAgICAgICAgICAvLyBpbiBMVFIpLgogICAg
ICAgICAgICAgTGF5b3V0VW5pdCBjZW50ZXJlZFdpZHRoID0gbG9naWNhbFdpZHRoKCkgLSBsb2dp
Y2FsV2lkdGhGb3JDaGlsZChsZWdlbmQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmgJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODYsOCArMTg2LDggQEAgcHVibGlj
OgogICAgIHZvaWQgYWRkQ29udGludWF0aW9uV2l0aE91dGxpbmUoUmVuZGVySW5saW5lKik7CiAg
ICAgYm9vbCBwYWludHNDb250aW51YXRpb25PdXRsaW5lKFJlbmRlcklubGluZSopOwogCi0gICAg
c3RhdGljIFJlbmRlclB0cjxSZW5kZXJCbG9jaz4gY3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJl
bmRlcmVyQW5kRGlzcGxheShjb25zdCBSZW5kZXJCb3gmIHBhcmVudCwgRURpc3BsYXkgPSBCTE9D
Syk7Ci0gICAgUmVuZGVyUHRyPFJlbmRlckJsb2NrPiBjcmVhdGVBbm9ueW1vdXNCbG9jayhFRGlz
cGxheSA9IEJMT0NLKSBjb25zdDsKKyAgICBzdGF0aWMgUmVuZGVyUHRyPFJlbmRlckJsb2NrPiBj
cmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXJBbmREaXNwbGF5KGNvbnN0IFJlbmRlckJv
eCYgcGFyZW50LCBEaXNwbGF5VHlwZSA9IERpc3BsYXlUeXBlOjpCbG9jayk7CisgICAgUmVuZGVy
UHRyPFJlbmRlckJsb2NrPiBjcmVhdGVBbm9ueW1vdXNCbG9jayhEaXNwbGF5VHlwZSA9IERpc3Bs
YXlUeXBlOjpCbG9jaykgY29uc3Q7CiAKICAgICBSZW5kZXJQdHI8UmVuZGVyQm94PiBjcmVhdGVB
bm9ueW1vdXNCb3hXaXRoU2FtZVR5cGVBcyhjb25zdCBSZW5kZXJCb3gmKSBjb25zdCBvdmVycmlk
ZTsKIApAQCAtNDE4LDcgKzQxOCw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGJsb2NrV2lsbEJl
RGVzdHJveWVkKCk7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIFJlbmRlclB0cjxSZW5kZXJCbG9j
az4gY3JlYXRlQW5vbnltb3VzQmxvY2tXaXRoU3R5bGVBbmREaXNwbGF5KERvY3VtZW50JiwgY29u
c3QgUmVuZGVyU3R5bGUmLCBFRGlzcGxheSk7CisgICAgc3RhdGljIFJlbmRlclB0cjxSZW5kZXJC
bG9jaz4gY3JlYXRlQW5vbnltb3VzQmxvY2tXaXRoU3R5bGVBbmREaXNwbGF5KERvY3VtZW50Jiwg
Y29uc3QgUmVuZGVyU3R5bGUmLCBEaXNwbGF5VHlwZSk7CiAKICAgICAvLyBGSVhNRS1CTE9DS0ZM
T1c6IFJlbW92ZSB2aXJ0dWFsaXphaW9uIHdoZW4gYWxsIGNhbGxlcnMgaGF2ZSBtb3ZlZCB0byBS
ZW5kZXJCbG9ja0Zsb3cKICAgICB2aXJ0dWFsIExheW91dFVuaXQgbG9naWNhbFJpZ2h0RmxvYXRP
ZmZzZXRGb3JMaW5lKExheW91dFVuaXQsIExheW91dFVuaXQgZml4ZWRPZmZzZXQsIExheW91dFVu
aXQpIGNvbnN0IHsgcmV0dXJuIGZpeGVkT2Zmc2V0OyB9OwpAQCAtNTI1LDcgKzUyNSw3IEBAIExh
eW91dFVuaXQgYmxvY2tEaXJlY3Rpb25PZmZzZXQoUmVuZGVyQmwKIExheW91dFVuaXQgaW5saW5l
RGlyZWN0aW9uT2Zmc2V0KFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0IExheW91dFNpemUm
IG9mZnNldEZyb21Sb290QmxvY2spOwogVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnRS
ZXNwZWN0aW5nRWRpdGluZ0JvdW5kYXJpZXMoUmVuZGVyQmxvY2smLCBSZW5kZXJCb3gmLCBjb25z
dCBMYXlvdXRQb2ludCYpOwogCi1pbmxpbmUgUmVuZGVyUHRyPFJlbmRlckJsb2NrPiBSZW5kZXJC
bG9jazo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyQW5kRGlzcGxheShjb25zdCBS
ZW5kZXJCb3gmIHBhcmVudCwgRURpc3BsYXkgZGlzcGxheSkKK2lubGluZSBSZW5kZXJQdHI8UmVu
ZGVyQmxvY2s+IFJlbmRlckJsb2NrOjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXJB
bmREaXNwbGF5KGNvbnN0IFJlbmRlckJveCYgcGFyZW50LCBEaXNwbGF5VHlwZSBkaXNwbGF5KQog
ewogICAgIHJldHVybiBjcmVhdGVBbm9ueW1vdXNCbG9ja1dpdGhTdHlsZUFuZERpc3BsYXkocGFy
ZW50LmRvY3VtZW50KCksIHBhcmVudC5zdHlsZSgpLCBkaXNwbGF5KTsKIH0KQEAgLTUzNSw3ICs1
MzUsNyBAQCBpbmxpbmUgUmVuZGVyUHRyPFJlbmRlckJveD4gUmVuZGVyQmxvY2s6CiAgICAgcmV0
dXJuIGNyZWF0ZUFub255bW91c0Jsb2NrV2l0aFN0eWxlQW5kRGlzcGxheShkb2N1bWVudCgpLCBy
ZW5kZXJlci5zdHlsZSgpLCBzdHlsZSgpLmRpc3BsYXkoKSk7CiB9CiAKLWlubGluZSBSZW5kZXJQ
dHI8UmVuZGVyQmxvY2s+IFJlbmRlckJsb2NrOjpjcmVhdGVBbm9ueW1vdXNCbG9jayhFRGlzcGxh
eSBkaXNwbGF5KSBjb25zdAoraW5saW5lIFJlbmRlclB0cjxSZW5kZXJCbG9jaz4gUmVuZGVyQmxv
Y2s6OmNyZWF0ZUFub255bW91c0Jsb2NrKERpc3BsYXlUeXBlIGRpc3BsYXkpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGNyZWF0ZUFub255bW91c0Jsb2NrV2l0aFN0eWxlQW5kRGlzcGxheShkb2N1bWVu
dCgpLCBzdHlsZSgpLCBkaXNwbGF5KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDE4
LDcgKzQxOCw3IEBAIGJvb2wgUmVuZGVyQmxvY2tGbG93Ojp3aWxsQ3JlYXRlQ29sdW1ucygKICAg
ICBpZiAoIWZpcnN0Q2hpbGQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKHN0
eWxlKCkuc3R5bGVUeXBlKCkgIT0gTk9QU0VVRE8pCisgICAgaWYgKHN0eWxlKCkuc3R5bGVUeXBl
KCkgIT0gUHNldWRvSWQ6Ok5vbmUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIElm
IG92ZXJmbG93LXkgaXMgc2V0IHRvIHBhZ2VkLXggb3IgcGFnZWQteSBvbiB0aGUgYm9keSBvciBo
dG1sIGVsZW1lbnQsIHdlJ2xsIGhhbmRsZSB0aGUgcGFnaW5hdGluZyBpbiB0aGUgUmVuZGVyVmll
dyBpbnN0ZWFkLgpAQCAtNTY4LDcgKzU2OCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlv
dXRCbG9jayhib29sIHIKICAgICAvLyBGSVhNRTogVGhpcyByZXBhaW50IGxvZ2ljIHNob3VsZCBi
ZSBtb3ZlZCBpbnRvIGEgc2VwYXJhdGUgaGVscGVyIGZ1bmN0aW9uIQogICAgIC8vIFJlcGFpbnQg
d2l0aCBvdXIgbmV3IGJvdW5kcyBpZiB0aGV5IGFyZSBkaWZmZXJlbnQgZnJvbSBvdXIgb2xkIGJv
dW5kcy4KICAgICBib29sIGRpZEZ1bGxSZXBhaW50ID0gcmVwYWludGVyLnJlcGFpbnRBZnRlckxh
eW91dCgpOwotICAgIGlmICghZGlkRnVsbFJlcGFpbnQgJiYgcmVwYWludExvZ2ljYWxUb3AgIT0g
cmVwYWludExvZ2ljYWxCb3R0b20gJiYgKHN0eWxlVG9Vc2UudmlzaWJpbGl0eSgpID09IFZJU0lC
TEUgfHwgZW5jbG9zaW5nTGF5ZXIoKS0+aGFzVmlzaWJsZUNvbnRlbnQoKSkpIHsKKyAgICBpZiAo
IWRpZEZ1bGxSZXBhaW50ICYmIHJlcGFpbnRMb2dpY2FsVG9wICE9IHJlcGFpbnRMb2dpY2FsQm90
dG9tICYmIChzdHlsZVRvVXNlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlIHx8
IGVuY2xvc2luZ0xheWVyKCktPmhhc1Zpc2libGVDb250ZW50KCkpKSB7CiAgICAgICAgIC8vIEZJ
WE1FOiBXZSBjb3VsZCB0aWdodGVuIHVwIHRoZSBsZWZ0IGFuZCByaWdodCBpbnZhbGlkYXRpb24g
cG9pbnRzIGlmIHdlIGxldCBsYXlvdXRJbmxpbmVDaGlsZHJlbiBmaWxsIHRoZW0gaW4gYmFzZWQg
b2ZmIHRoZSBwYXJ0aWN1bGFyIGxpbmVzCiAgICAgICAgIC8vIGl0IGhhZCB0byBsYXkgb3V0LiBX
ZSB3b3VsZG4ndCBuZWVkIHRoZSBoYXNPdmVyZmxvd0NsaXAoKSBoYWNrIGluIHRoYXQgY2FzZSBl
aXRoZXIuCiAgICAgICAgIExheW91dFVuaXQgcmVwYWludExvZ2ljYWxMZWZ0ID0gbG9naWNhbExl
ZnRWaXN1YWxPdmVyZmxvdygpOwpAQCAtMTUwMSw3ICsxNTAxLDcgQEAgTGF5b3V0VW5pdCBSZW5k
ZXJCbG9ja0Zsb3c6OmFwcGx5QmVmb3JlQgogICAgIGJvb2wgY2hlY2tDb2x1bW5CcmVha3MgPSBm
cmFnbWVudGVkRmxvdyAmJiBmcmFnbWVudGVkRmxvdy0+c2hvdWxkQ2hlY2tDb2x1bW5CcmVha3Mo
KTsKICAgICBib29sIGNoZWNrUGFnZUJyZWFrcyA9ICFjaGVja0NvbHVtbkJyZWFrcyAmJiB2aWV3
KCkuZnJhbWVWaWV3KCkubGF5b3V0Q29udGV4dCgpLmxheW91dFN0YXRlKCktPnBhZ2VMb2dpY2Fs
SGVpZ2h0KCk7IC8vIEZJWE1FOiBPbmNlIGNvbHVtbnMgY2FuIHByaW50IHdlIGhhdmUgdG8gY2hl
Y2sgdGhpcy4KICAgICBib29sIGNoZWNrRnJhZ21lbnRCcmVha3MgPSBmYWxzZTsKLSAgICBib29s
IGNoZWNrQmVmb3JlQWx3YXlzID0gKGNoZWNrQ29sdW1uQnJlYWtzICYmIGNoaWxkLnN0eWxlKCku
YnJlYWtCZWZvcmUoKSA9PSBDb2x1bW5CcmVha0JldHdlZW4pCisgICAgYm9vbCBjaGVja0JlZm9y
ZUFsd2F5cyA9IChjaGVja0NvbHVtbkJyZWFrcyAmJiBjaGlsZC5zdHlsZSgpLmJyZWFrQmVmb3Jl
KCkgPT0gQnJlYWtCZXR3ZWVuOjpDb2x1bW4pCiAgICAgICAgIHx8IChjaGVja1BhZ2VCcmVha3Mg
JiYgYWx3YXlzUGFnZUJyZWFrKGNoaWxkLnN0eWxlKCkuYnJlYWtCZWZvcmUoKSkpOwogICAgIGlm
IChjaGVja0JlZm9yZUFsd2F5cyAmJiBpbk5vcm1hbEZsb3coY2hpbGQpICYmIGhhc05leHRQYWdl
KGxvZ2ljYWxPZmZzZXQsIEluY2x1ZGVQYWdlQm91bmRhcnkpKSB7CiAgICAgICAgIGlmIChjaGVj
a0NvbHVtbkJyZWFrcykgewpAQCAtMTUyNiw3ICsxNTI2LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJC
bG9ja0Zsb3c6OmFwcGx5QWZ0ZXJCcgogICAgIGJvb2wgY2hlY2tDb2x1bW5CcmVha3MgPSBmcmFn
bWVudGVkRmxvdyAmJiBmcmFnbWVudGVkRmxvdy0+c2hvdWxkQ2hlY2tDb2x1bW5CcmVha3MoKTsK
ICAgICBib29sIGNoZWNrUGFnZUJyZWFrcyA9ICFjaGVja0NvbHVtbkJyZWFrcyAmJiB2aWV3KCku
ZnJhbWVWaWV3KCkubGF5b3V0Q29udGV4dCgpLmxheW91dFN0YXRlKCktPnBhZ2VMb2dpY2FsSGVp
Z2h0KCk7IC8vIEZJWE1FOiBPbmNlIGNvbHVtbnMgY2FuIHByaW50IHdlIGhhdmUgdG8gY2hlY2sg
dGhpcy4KICAgICBib29sIGNoZWNrRnJhZ21lbnRCcmVha3MgPSBmYWxzZTsKLSAgICBib29sIGNo
ZWNrQWZ0ZXJBbHdheXMgPSAoY2hlY2tDb2x1bW5CcmVha3MgJiYgY2hpbGQuc3R5bGUoKS5icmVh
a0FmdGVyKCkgPT0gQ29sdW1uQnJlYWtCZXR3ZWVuKQorICAgIGJvb2wgY2hlY2tBZnRlckFsd2F5
cyA9IChjaGVja0NvbHVtbkJyZWFrcyAmJiBjaGlsZC5zdHlsZSgpLmJyZWFrQWZ0ZXIoKSA9PSBC
cmVha0JldHdlZW46OkNvbHVtbikKICAgICAgICAgfHwgKGNoZWNrUGFnZUJyZWFrcyAmJiBhbHdh
eXNQYWdlQnJlYWsoY2hpbGQuc3R5bGUoKS5icmVha0FmdGVyKCkpKTsKICAgICBpZiAoY2hlY2tB
ZnRlckFsd2F5cyAmJiBpbk5vcm1hbEZsb3coY2hpbGQpICYmIGhhc05leHRQYWdlKGxvZ2ljYWxP
ZmZzZXQsIEluY2x1ZGVQYWdlQm91bmRhcnkpKSB7CiAgICAgICAgIExheW91dFVuaXQgbWFyZ2lu
T2Zmc2V0ID0gbWFyZ2luSW5mby5jYW5Db2xsYXBzZVdpdGhNYXJnaW5CZWZvcmUoKSA/IExheW91
dFVuaXQoKSA6IG1hcmdpbkluZm8ubWFyZ2luKCk7CkBAIC0xODU0LDcgKzE4NTQsNyBAQCBMYXlv
dXRVbml0IFJlbmRlckJsb2NrRmxvdzo6YWRqdXN0Rm9yVW5zCiAgICAgICAgIGlmICghaGFzVW5p
Zm9ybVBhZ2VMb2dpY2FsSGVpZ2h0ICYmICFwdXNoVG9OZXh0UGFnZVdpdGhNaW5pbXVtTG9naWNh
bEhlaWdodChyZW1haW5pbmdMb2dpY2FsSGVpZ2h0LCBsb2dpY2FsT2Zmc2V0LCBjaGlsZExvZ2lj
YWxIZWlnaHQpKQogICAgICAgICAgICAgcmV0dXJuIGxvZ2ljYWxPZmZzZXQ7CiAgICAgICAgIGF1
dG8gcmVzdWx0ID0gbG9naWNhbE9mZnNldCArIHJlbWFpbmluZ0xvZ2ljYWxIZWlnaHQ7Ci0gICAg
ICAgIGJvb2wgaXNJbml0aWFsTGV0dGVyID0gY2hpbGQuaXNGbG9hdGluZygpICYmIGNoaWxkLnN0
eWxlKCkuc3R5bGVUeXBlKCkgPT0gRklSU1RfTEVUVEVSICYmIGNoaWxkLnN0eWxlKCkuaW5pdGlh
bExldHRlckRyb3AoKSA+IDA7CisgICAgICAgIGJvb2wgaXNJbml0aWFsTGV0dGVyID0gY2hpbGQu
aXNGbG9hdGluZygpICYmIGNoaWxkLnN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6OkZp
cnN0TGV0dGVyICYmIGNoaWxkLnN0eWxlKCkuaW5pdGlhbExldHRlckRyb3AoKSA+IDA7CiAgICAg
ICAgIGlmIChpc0luaXRpYWxMZXR0ZXIpIHsKICAgICAgICAgICAgIC8vIEluY3JlYXNlIG91ciBs
b2dpY2FsIGhlaWdodCB0byBlbnN1cmUgdGhhdCBsaW5lcyBhbGwgZ2V0IHB1c2hlZCBhbG9uZyB3
aXRoIHRoZSBsZXR0ZXIuCiAgICAgICAgICAgICBzZXRMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxPZmZz
ZXQgKyByZW1haW5pbmdMb2dpY2FsSGVpZ2h0KTsKQEAgLTIwMzUsNyArMjAzNSw3IEBAIHZvaWQg
UmVuZGVyQmxvY2tGbG93OjpzdHlsZURpZENoYW5nZShTdHkKIHZvaWQgUmVuZGVyQmxvY2tGbG93
Ojp1cGRhdGVTdHlsZXNGb3JDb2x1bW5DaGlsZHJlbigpCiB7CiAgICAgZm9yIChhdXRvKiBjaGls
ZCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hpbGQgJiYgKGNoaWxkLT5pc0luRmxvd1JlbmRlckZyYWdt
ZW50ZWRGbG93KCkgfHwgY2hpbGQtPmlzUmVuZGVyTXVsdGlDb2x1bW5TZXQoKSk7IGNoaWxkID0g
Y2hpbGQtPm5leHRTaWJsaW5nQm94KCkpCi0gICAgICAgIGNoaWxkLT5zZXRTdHlsZShSZW5kZXJT
dHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSgpLCBCTE9DSykpOwor
ICAgICAgICBjaGlsZC0+c2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxl
V2l0aERpc3BsYXkoc3R5bGUoKSwgRGlzcGxheVR5cGU6OkJsb2NrKSk7CiB9CiAKIHZvaWQgUmVu
ZGVyQmxvY2tGbG93OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0
IFJlbmRlclN0eWxlJiBuZXdTdHlsZSkKQEAgLTIzNDUsNyArMjM0NSw3IEBAIHZvaWQgUmVuZGVy
QmxvY2tGbG93Ojpjb21wdXRlTG9naWNhbExvY2EKICAgICBMYXlvdXRVbml0IGZsb2F0TG9naWNh
bExlZnQ7CiAKICAgICBib29sIGluc2lkZUZyYWdtZW50ZWRGbG93ID0gZW5jbG9zaW5nRnJhZ21l
bnRlZEZsb3coKTsKLSAgICBib29sIGlzSW5pdGlhbExldHRlciA9IGNoaWxkQm94LnN0eWxlKCku
c3R5bGVUeXBlKCkgPT0gRklSU1RfTEVUVEVSICYmIGNoaWxkQm94LnN0eWxlKCkuaW5pdGlhbExl
dHRlckRyb3AoKSA+IDA7CisgICAgYm9vbCBpc0luaXRpYWxMZXR0ZXIgPSBjaGlsZEJveC5zdHls
ZSgpLnN0eWxlVHlwZSgpID09IFBzZXVkb0lkOjpGaXJzdExldHRlciAmJiBjaGlsZEJveC5zdHls
ZSgpLmluaXRpYWxMZXR0ZXJEcm9wKCkgPiAwOwogICAgIAogICAgIGlmIChpc0luaXRpYWxMZXR0
ZXIpIHsKICAgICAgICAgaW50IGxldHRlckNsZWFyYW5jZSA9IGxvd2VzdEluaXRpYWxMZXR0ZXJM
b2dpY2FsQm90dG9tKCkgLSBsb2dpY2FsVG9wT2Zmc2V0OwpAQCAtMjYxNSw3ICsyNjE1LDcgQEAg
TGF5b3V0VW5pdCBSZW5kZXJCbG9ja0Zsb3c6Omxvd2VzdEluaXRpYQogICAgIGF1dG8gZW5kID0g
ZmxvYXRpbmdPYmplY3RTZXQuZW5kKCk7CiAgICAgZm9yIChhdXRvIGl0ID0gZmxvYXRpbmdPYmpl
Y3RTZXQuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIGNvbnN0IGF1dG8mIGZs
b2F0aW5nT2JqZWN0ID0gKml0LT5nZXQoKTsKLSAgICAgICAgaWYgKGZsb2F0aW5nT2JqZWN0Lmlz
UGxhY2VkKCkgJiYgZmxvYXRpbmdPYmplY3QucmVuZGVyZXIoKS5zdHlsZSgpLnN0eWxlVHlwZSgp
ID09IEZJUlNUX0xFVFRFUiAmJiBmbG9hdGluZ09iamVjdC5yZW5kZXJlcigpLnN0eWxlKCkuaW5p
dGlhbExldHRlckRyb3AoKSA+IDApCisgICAgICAgIGlmIChmbG9hdGluZ09iamVjdC5pc1BsYWNl
ZCgpICYmIGZsb2F0aW5nT2JqZWN0LnJlbmRlcmVyKCkuc3R5bGUoKS5zdHlsZVR5cGUoKSA9PSBQ
c2V1ZG9JZDo6Rmlyc3RMZXR0ZXIgJiYgZmxvYXRpbmdPYmplY3QucmVuZGVyZXIoKS5zdHlsZSgp
LmluaXRpYWxMZXR0ZXJEcm9wKCkgPiAwKQogICAgICAgICAgICAgbG93ZXN0RmxvYXRCb3R0b20g
PSBzdGQ6Om1heChsb3dlc3RGbG9hdEJvdHRvbSwgbG9naWNhbEJvdHRvbUZvckZsb2F0KGZsb2F0
aW5nT2JqZWN0KSk7CiAgICAgfQogICAgIHJldHVybiBsb3dlc3RGbG9hdEJvdHRvbTsKQEAgLTI5
MDcsNyArMjkwNyw3IEBAIGJvb2wgUmVuZGVyQmxvY2tGbG93OjpoaXRUZXN0SW5saW5lQ2hpbGQK
IAogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmFkanVzdEZvckJvcmRlckZpdChMYXlvdXRVbml0IHgs
IExheW91dFVuaXQmIGxlZnQsIExheW91dFVuaXQmIHJpZ2h0KSBjb25zdAogewotICAgIGlmIChz
dHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChzdHlsZSgpLnZpc2liaWxp
dHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBX
ZSBkb24ndCBkZWFsIHdpdGggcmVsYXRpdmUgcG9zaXRpb25pbmcuICBPdXIgYXNzdW1wdGlvbiBp
cyB0aGF0IHlvdSBzaHJpbmsgdG8gZml0IHRoZSBsaW5lcyB3aXRob3V0IGFjY291bnRpbmcKQEAg
LTI5MjYsNyArMjkyNiw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjphZGp1c3RGb3JCb3JkZXJG
aXQKICAgICAgICAgICAgIGlmICghb2JqLT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVk
KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoaXM8UmVuZGVyQmxvY2tGbG93Pigqb2JqKSAmJiAh
b2JqLT5oYXNPdmVyZmxvd0NsaXAoKSkKICAgICAgICAgICAgICAgICAgICAgZG93bmNhc3Q8UmVu
ZGVyQmxvY2tGbG93Pigqb2JqKS5hZGp1c3RGb3JCb3JkZXJGaXQoeCArIG9iai0+eCgpLCBsZWZ0
LCByaWdodCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAob2JqLT5zdHlsZSgpLnZpc2liaWxp
dHkoKSA9PSBWSVNJQkxFKSB7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAob2JqLT5zdHlsZSgp
LnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlKSB7CiAgICAgICAgICAgICAgICAg
ICAgIC8vIFdlIGFyZSBhIHJlcGxhY2VkIGVsZW1lbnQgb3Igc29tZSBraW5kIG9mIG5vbi1ibG9j
ay1mbG93IG9iamVjdC4KICAgICAgICAgICAgICAgICAgICAgbGVmdCA9IHN0ZDo6bWluKGxlZnQs
IHggKyBvYmotPngoKSk7CiAgICAgICAgICAgICAgICAgICAgIHJpZ2h0ID0gc3RkOjptYXgocmln
aHQsIHggKyBvYmotPngoKSArIG9iai0+d2lkdGgoKSk7CkBAIC0yOTUzLDcgKzI5NTMsNyBAQCB2
b2lkIFJlbmRlckJsb2NrRmxvdzo6YWRqdXN0Rm9yQm9yZGVyRml0CiAKIHZvaWQgUmVuZGVyQmxv
Y2tGbG93OjpmaXRCb3JkZXJUb0xpbmVzSWZOZWVkZWQoKQogewotICAgIGlmIChzdHlsZSgpLmJv
cmRlckZpdCgpID09IEJvcmRlckZpdEJvcmRlciB8fCBoYXNPdmVycmlkZUNvbnRlbnRMb2dpY2Fs
V2lkdGgoKSkKKyAgICBpZiAoc3R5bGUoKS5ib3JkZXJGaXQoKSA9PSBCb3JkZXJGaXQ6OkJvcmRl
ciB8fCBoYXNPdmVycmlkZUNvbnRlbnRMb2dpY2FsV2lkdGgoKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gV2FsayBhbnkgbm9ybWFsIGZsb3cgbGluZXMgdG8gc251Z2x5IGZpdC4KQEAgLTMx
NTMsNyArMzE1Myw3IEBAIFJvb3RJbmxpbmVCb3gqIFJlbmRlckJsb2NrRmxvdzo6bGluZUF0SW4K
IHsKICAgICBBU1NFUlQoaSA+PSAwKTsKIAotICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAh
PSBWSVNJQkxFKQorICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpW
aXNpYmxlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmIChjaGlsZHJlbklubGlu
ZSgpKSB7CkBAIC0zMTc2LDcgKzMxNzYsNyBAQCBSb290SW5saW5lQm94KiBSZW5kZXJCbG9ja0Zs
b3c6OmxpbmVBdEluCiAKIGludCBSZW5kZXJCbG9ja0Zsb3c6OmxpbmVDb3VudChjb25zdCBSb290
SW5saW5lQm94KiBzdG9wUm9vdElubGluZUJveCwgYm9vbCogZm91bmQpIGNvbnN0CiB7Ci0gICAg
aWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKHN0eWxlKCkudmlz
aWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgIHJldHVybiAwOwogCiAg
ICAgaW50IGNvdW50ID0gMDsKQEAgLTMyMTQsNyArMzIxNCw3IEBAIGludCBSZW5kZXJCbG9ja0Zs
b3c6OmxpbmVDb3VudChjb25zdCBSb28KIAogc3RhdGljIGludCBnZXRIZWlnaHRGb3JMaW5lQ291
bnQoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBibG9jaywgaW50IGxpbmVDb3VudCwgYm9vbCBpbmNs
dWRlRWRnZUJvcmRlclBhZGRpbmcsIGJvb2wgZm9yd2FyZCwgaW50JiBjb3VudCkKIHsKLSAgICBp
ZiAoYmxvY2suc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAoYmxvY2su
c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0
dXJuIC0xOwogCiAgICAgLy8gRklYTUU6IE9ydGhvZ29uYWwgd3JpdGluZyBtb2RlcyBkb24ndCB3
b3JrIGhlcmUsIGJ1dCBpdCdzIG5vdCBldmVuIGNsZWFyIGhvdyB0aGV5IHNob3VsZCBiZWhhdmUg
YW55d2F5LgpAQCAtMzI2NCw3ICszMjY0LDcgQEAgaW50IFJlbmRlckJsb2NrRmxvdzo6bG9naWNh
bEhlaWdodEV4Y2x1ZAogCiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y2xlYXJUcnVuY2F0aW9uKCkK
IHsKLSAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAoc3R5
bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKGNoaWxkcmVuSW5saW5lKCkgJiYgaGFzTWFya3VwVHJ1bmNhdGlvbigpKSB7
CkBAIC0zMzIzLDcgKzMzMjMsNyBAQCBSZW5kZXJUZXh0KiBSZW5kZXJCbG9ja0Zsb3c6OmZpbmRD
bG9zZXN0CiAgICAgaWYgKCFibG9jay0+Y2hpbGRyZW5JbmxpbmUoKSkgewogICAgICAgICAvLyBM
b29rIGFtb25nIG91ciBpbW1lZGlhdGUgY2hpbGRyZW4gZm9yIGFuIGFsdGVybmF0ZSBib3ggdGhh
dCBjb250YWlucyB0aGUgcG9pbnQuCiAgICAgICAgIGZvciAoUmVuZGVyQm94KiBjaGlsZCA9IGJs
b2NrLT5maXJzdENoaWxkQm94KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZ0Jv
eCgpKSB7Ci0gICAgICAgICAgICBpZiAoIWNoaWxkLT5oZWlnaHQoKSB8fCBjaGlsZC0+c3R5bGUo
KS52aXNpYmlsaXR5KCkgIT0gV2ViQ29yZTo6VklTSUJMRSB8fCBjaGlsZC0+aXNGbG9hdGluZ09y
T3V0T2ZGbG93UG9zaXRpb25lZCgpKQorICAgICAgICAgICAgaWYgKCFjaGlsZC0+aGVpZ2h0KCkg
fHwgY2hpbGQtPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFdlYkNvcmU6OlZpc2liaWxpdHk6OlZp
c2libGUgfHwgY2hpbGQtPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGZsb2F0IHRvcCA9IGNoaWxkLT55KCk7
CiAgICAgICAgICAgICAKQEAgLTM3MDcsNyArMzcwNyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBy
ZXNpemVUZXh0UGVybWl0dGVkKGMKIAogaW50IFJlbmRlckJsb2NrRmxvdzo6bGluZUNvdW50Rm9y
VGV4dEF1dG9zaXppbmcoKQogewotICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJ
QkxFKQorICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxl
KQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoY2hpbGRyZW5JbmxpbmUoKSkKICAgICAgICAg
cmV0dXJuIGxpbmVDb3VudCgpOwpAQCAtMzg4OCw3ICszODg4LDcgQEAgdm9pZCBSZW5kZXJCbG9j
a0Zsb3c6OnNldENvbXB1dGVkQ29sdW1uQwogICAgICAgICByZXR1cm47CiAgICAgbXVsdGlDb2x1
bW5GbG93KCktPnNldENvbHVtbkNvdW50QW5kV2lkdGgoY291bnQsIHdpZHRoKTsKICAgICBtdWx0
aUNvbHVtbkZsb3coKS0+c2V0UHJvZ3Jlc3Npb25Jc0lubGluZShzdHlsZSgpLmhhc0lubGluZUNv
bHVtbkF4aXMoKSk7Ci0gICAgbXVsdGlDb2x1bW5GbG93KCktPnNldFByb2dyZXNzaW9uSXNSZXZl
cnNlZChzdHlsZSgpLmNvbHVtblByb2dyZXNzaW9uKCkgPT0gUmV2ZXJzZUNvbHVtblByb2dyZXNz
aW9uKTsKKyAgICBtdWx0aUNvbHVtbkZsb3coKS0+c2V0UHJvZ3Jlc3Npb25Jc1JldmVyc2VkKHN0
eWxlKCkuY29sdW1uUHJvZ3Jlc3Npb24oKSA9PSBDb2x1bW5Qcm9ncmVzc2lvbjo6UmV2ZXJzZSk7
CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojp1cGRhdGVDb2x1bW5Qcm9ncmVzc2lvbkZyb21T
dHlsZShSZW5kZXJTdHlsZSYgc3R5bGUpCkBAIC0zOTA1LDcgKzM5MDUsNyBAQCB2b2lkIFJlbmRl
ckJsb2NrRmxvdzo6dXBkYXRlQ29sdW1uUHJvZ3JlCiAgICAgfQogCiAgICAgYm9vbCBvbGRQcm9n
cmVzc2lvbklzUmV2ZXJzZWQgPSBtdWx0aUNvbHVtbkZsb3coKS0+cHJvZ3Jlc3Npb25Jc1JldmVy
c2VkKCk7Ci0gICAgYm9vbCBuZXdQcm9ncmVzc2lvbklzUmV2ZXJzZWQgPSBzdHlsZS5jb2x1bW5Q
cm9ncmVzc2lvbigpID09IFJldmVyc2VDb2x1bW5Qcm9ncmVzc2lvbjsKKyAgICBib29sIG5ld1By
b2dyZXNzaW9uSXNSZXZlcnNlZCA9IHN0eWxlLmNvbHVtblByb2dyZXNzaW9uKCkgPT0gQ29sdW1u
UHJvZ3Jlc3Npb246OlJldmVyc2U7CiAgICAgaWYgKG9sZFByb2dyZXNzaW9uSXNSZXZlcnNlZCAh
PSBuZXdQcm9ncmVzc2lvbklzUmV2ZXJzZWQpIHsKICAgICAgICAgbXVsdGlDb2x1bW5GbG93KCkt
PnNldFByb2dyZXNzaW9uSXNSZXZlcnNlZChuZXdQcm9ncmVzc2lvbklzUmV2ZXJzZWQpOwogICAg
ICAgICBuZWVkc0xheW91dCA9IHRydWU7CkBAIC0zOTMzLDcgKzM5MzMsNyBAQCB1bnNpZ25lZCBS
ZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVkQ29sdW1uCiBib29sIFJlbmRlckJsb2NrRmxvdzo6aXNU
b3BMYXlvdXRPdmVyZmxvd0FsbG93ZWQoKSBjb25zdAogewogICAgIGJvb2wgaGFzVG9wT3ZlcmZs
b3cgPSBSZW5kZXJCbG9jazo6aXNUb3BMYXlvdXRPdmVyZmxvd0FsbG93ZWQoKTsKLSAgICBpZiAo
IW11bHRpQ29sdW1uRmxvdygpIHx8IHN0eWxlKCkuY29sdW1uUHJvZ3Jlc3Npb24oKSA9PSBOb3Jt
YWxDb2x1bW5Qcm9ncmVzc2lvbikKKyAgICBpZiAoIW11bHRpQ29sdW1uRmxvdygpIHx8IHN0eWxl
KCkuY29sdW1uUHJvZ3Jlc3Npb24oKSA9PSBDb2x1bW5Qcm9ncmVzc2lvbjo6Tm9ybWFsKQogICAg
ICAgICByZXR1cm4gaGFzVG9wT3ZlcmZsb3c7CiAgICAgCiAgICAgaWYgKCEoaXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSBeICFzdHlsZSgpLmhhc0lubGluZUNvbHVtbkF4aXMoKSkpCkBAIC0zOTQ1
LDcgKzM5NDUsNyBAQCBib29sIFJlbmRlckJsb2NrRmxvdzo6aXNUb3BMYXlvdXRPdmVyZmxvCiBi
b29sIFJlbmRlckJsb2NrRmxvdzo6aXNMZWZ0TGF5b3V0T3ZlcmZsb3dBbGxvd2VkKCkgY29uc3QK
IHsKICAgICBib29sIGhhc0xlZnRPdmVyZmxvdyA9IFJlbmRlckJsb2NrOjppc0xlZnRMYXlvdXRP
dmVyZmxvd0FsbG93ZWQoKTsKLSAgICBpZiAoIW11bHRpQ29sdW1uRmxvdygpIHx8IHN0eWxlKCku
Y29sdW1uUHJvZ3Jlc3Npb24oKSA9PSBOb3JtYWxDb2x1bW5Qcm9ncmVzc2lvbikKKyAgICBpZiAo
IW11bHRpQ29sdW1uRmxvdygpIHx8IHN0eWxlKCkuY29sdW1uUHJvZ3Jlc3Npb24oKSA9PSBDb2x1
bW5Qcm9ncmVzc2lvbjo6Tm9ybWFsKQogICAgICAgICByZXR1cm4gaGFzTGVmdE92ZXJmbG93Owog
ICAgIAogICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpIF4gIXN0eWxlKCkuaGFzSW5s
aW5lQ29sdW1uQXhpcygpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9ja0Zsb3cuaAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrRmxvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MzIsNyArNTMyLDcgQEAgcHVi
bGljOgogICAgIFJvb3RJbmxpbmVCb3gqIGNyZWF0ZUFuZEFwcGVuZFJvb3RJbmxpbmVCb3goKTsK
IAogICAgIExheW91dFVuaXQgc3RhcnRBbGlnbmVkT2Zmc2V0Rm9yTGluZShMYXlvdXRVbml0IHBv
c2l0aW9uLCBJbmRlbnRUZXh0T3JOb3Qgc2hvdWxkSW5kZW50VGV4dCk7Ci0gICAgdmlydHVhbCBF
VGV4dEFsaWduIHRleHRBbGlnbm1lbnRGb3JMaW5lKGJvb2wgZW5kc1dpdGhTb2Z0QnJlYWspIGNv
bnN0OworICAgIHZpcnR1YWwgVGV4dEFsaWduTW9kZSB0ZXh0QWxpZ25tZW50Rm9yTGluZShib29s
IGVuZHNXaXRoU29mdEJyZWFrKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0SW5saW5l
RGlyZWN0aW9uTGluZUJvdW5kcyhpbnQgLyogZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCAqLywg
ZmxvYXQmIC8qIGxvZ2ljYWxMZWZ0ICovLCBmbG9hdCYgLyogbG9naWNhbFdpZHRoICovKSBjb25z
dCB7IH0KICAgICBSb290SW5saW5lQm94KiBjb25zdHJ1Y3RMaW5lKEJpZGlSdW5MaXN0PEJpZGlS
dW4+JiwgY29uc3QgTGluZUluZm8mKTsKIApAQCAtNTQ4LDcgKzU0OCw3IEBAIHByaXZhdGU6ICAg
ICAgICAKICAgICB2b2lkIGNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKFJv
b3RJbmxpbmVCb3gqLCBjb25zdCBMaW5lSW5mbyYsIEJpZGlSdW4qIGZpcnN0UnVuLCBCaWRpUnVu
KiB0cmFpbGluZ1NwYWNlUnVuLCBib29sIHJlYWNoZWRFbmQsIEdseXBoT3ZlcmZsb3dBbmRGYWxs
YmFja0ZvbnRzTWFwJiwgVmVydGljYWxQb3NpdGlvbkNhY2hlJiwgV29yZE1lYXN1cmVtZW50cyYp
OwogICAgIHZvaWQgdXBkYXRlUnVieUZvckp1c3RpZmllZFRleHQoUmVuZGVyUnVieVJ1biYsIEJp
ZGlSdW4mLCBjb25zdCBWZWN0b3I8dW5zaWduZWQsIDE2PiYgZXhwYW5zaW9uT3Bwb3J0dW5pdGll
cywgdW5zaWduZWQmIGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQsIGZsb2F0JiB0b3RhbExvZ2lj
YWxXaWR0aCwgZmxvYXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBzaXplX3QmIGV4cGFuc2lvbklu
ZGV4KTsKICAgICB2b2lkIGNvbXB1dGVFeHBhbnNpb25Gb3JKdXN0aWZpZWRUZXh0KEJpZGlSdW4q
IGZpcnN0UnVuLCBCaWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVuLCBjb25zdCBWZWN0b3I8dW5zaWdu
ZWQsIDE2PiYgZXhwYW5zaW9uT3Bwb3J0dW5pdGllcywgdW5zaWduZWQgZXhwYW5zaW9uT3Bwb3J0
dW5pdHlDb3VudCwgZmxvYXQgdG90YWxMb2dpY2FsV2lkdGgsIGZsb2F0IGF2YWlsYWJsZUxvZ2lj
YWxXaWR0aCk7Ci0gICAgQmlkaVJ1biogY29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0Zv
clNlZ21lbnQoUm9vdElubGluZUJveCosIGNvbnN0IExpbmVJbmZvJiwgRVRleHRBbGlnbiwgZmxv
YXQmIGxvZ2ljYWxMZWZ0LAorICAgIEJpZGlSdW4qIGNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3Np
dGlvbnNGb3JTZWdtZW50KFJvb3RJbmxpbmVCb3gqLCBjb25zdCBMaW5lSW5mbyYsIFRleHRBbGln
bk1vZGUsIGZsb2F0JiBsb2dpY2FsTGVmdCwKICAgICAgICAgZmxvYXQmIGF2YWlsYWJsZUxvZ2lj
YWxXaWR0aCwgQmlkaVJ1biogZmlyc3RSdW4sIEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4sIEds
eXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiB0ZXh0Qm94RGF0YU1hcCwgVmVydGljYWxQ
b3NpdGlvbkNhY2hlJiwgV29yZE1lYXN1cmVtZW50cyYpOwogICAgIHZvaWQgY29tcHV0ZUJsb2Nr
RGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZShSb290SW5saW5lQm94KiwgQmlkaVJ1biosIEdseXBo
T3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiwgVmVydGljYWxQb3NpdGlvbkNhY2hlJik7CiAg
ICAgQmlkaVJ1biogaGFuZGxlVHJhaWxpbmdTcGFjZXMoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mLCBC
aWRpQ29udGV4dCopOwpAQCAtNTc1LDcgKzU3NSw3IEBAIHByaXZhdGU6ICAgICAgICAKICAgICAv
LyBwYWdlL2NvbHVtbiB0aGF0IGhhcyBhIGRpZmZlcmVudCBhdmFpbGFibGUgbGluZSB3aWR0aCB0
aGFuIHRoZSBvbGQgb25lLiBVc2VkIHRvIGtub3cgd2hlbiB5b3UgaGF2ZSB0byBkaXJ0eSBhCiAg
ICAgLy8gbGluZSwgaS5lLiwgdGhhdCBpdCBjYW4ndCBiZSByZS11c2VkLgogICAgIGJvb2wgbGlu
ZVdpZHRoRm9yUGFnaW5hdGVkTGluZUNoYW5nZWQoUm9vdElubGluZUJveCosIExheW91dFVuaXQg
bGluZURlbHRhLCBSZW5kZXJGcmFnbWVudGVkRmxvdyopIGNvbnN0OwotICAgIHZvaWQgdXBkYXRl
TG9naWNhbFdpZHRoRm9yQWxpZ25tZW50KGNvbnN0IEVUZXh0QWxpZ24mLCBjb25zdCBSb290SW5s
aW5lQm94KiwgQmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1biwgZmxvYXQmIGxvZ2ljYWxMZWZ0LCBm
bG9hdCYgdG90YWxMb2dpY2FsV2lkdGgsIGZsb2F0JiBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIGlu
dCBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KTsKKyAgICB2b2lkIHVwZGF0ZUxvZ2ljYWxXaWR0
aEZvckFsaWdubWVudChjb25zdCBUZXh0QWxpZ25Nb2RlJiwgY29uc3QgUm9vdElubGluZUJveCos
IEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4sIGZsb2F0JiBsb2dpY2FsTGVmdCwgZmxvYXQmIHRv
dGFsTG9naWNhbFdpZHRoLCBmbG9hdCYgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBpbnQgZXhwYW5z
aW9uT3Bwb3J0dW5pdHlDb3VudCk7CiAvLyBFTkQgTUVUSE9EUyBERUZJTkVEIElOIFJlbmRlckJs
b2NrTGluZUxheW91dAogCiAgICAgdm9pZCBjb21wdXRlSW5saW5lUHJlZmVycmVkTG9naWNhbFdp
ZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxX
aWR0aCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tM
aW5lTGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMwNiw3ICszMDYsNyBAQCBSb290SW5saW5lQm94KiBSZW5kZXJCbG9ja0Zsb3c6OmNvbnN0cnVj
CiAgICAgICAgICAgICBwYXJlbnRCb3gtPmFkZFRvTGluZShib3gpOwogICAgICAgICB9CiAKLSAg
ICAgICAgYm9vbCB2aXN1YWxseU9yZGVyZWQgPSByLT5yZW5kZXJlcigpLnN0eWxlKCkucnRsT3Jk
ZXJpbmcoKSA9PSBWaXN1YWxPcmRlcjsKKyAgICAgICAgYm9vbCB2aXN1YWxseU9yZGVyZWQgPSBy
LT5yZW5kZXJlcigpLnN0eWxlKCkucnRsT3JkZXJpbmcoKSA9PSBPcmRlcjo6VmlzdWFsOwogICAg
ICAgICBib3gtPnNldEJpZGlMZXZlbChyLT5sZXZlbCgpKTsKIAogICAgICAgICBpZiAoaXM8SW5s
aW5lVGV4dEJveD4oKmJveCkpIHsKQEAgLTM0Miw0MiArMzQyLDQyIEBAIFJvb3RJbmxpbmVCb3gq
IFJlbmRlckJsb2NrRmxvdzo6Y29uc3RydWMKICAgICByZXR1cm4gbGFzdFJvb3RCb3goKTsKIH0K
IAotRVRleHRBbGlnbiBSZW5kZXJCbG9ja0Zsb3c6OnRleHRBbGlnbm1lbnRGb3JMaW5lKGJvb2wg
ZW5kc1dpdGhTb2Z0QnJlYWspIGNvbnN0CitUZXh0QWxpZ25Nb2RlIFJlbmRlckJsb2NrRmxvdzo6
dGV4dEFsaWdubWVudEZvckxpbmUoYm9vbCBlbmRzV2l0aFNvZnRCcmVhaykgY29uc3QKIHsKLSAg
ICBFVGV4dEFsaWduIGFsaWdubWVudCA9IHN0eWxlKCkudGV4dEFsaWduKCk7CisgICAgVGV4dEFs
aWduTW9kZSBhbGlnbm1lbnQgPSBzdHlsZSgpLnRleHRBbGlnbigpOwogI2lmIEVOQUJMRShDU1Mz
X1RFWFQpCiAgICAgVGV4dEp1c3RpZnkgdGV4dEp1c3RpZnkgPSBzdHlsZSgpLnRleHRKdXN0aWZ5
KCk7Ci0gICAgaWYgKGFsaWdubWVudCA9PSBKVVNUSUZZICYmIHRleHRKdXN0aWZ5ID09IFRleHRK
dXN0aWZ5Tm9uZSkKLSAgICAgICAgcmV0dXJuIHN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gTFRSID8g
TEVGVCA6IFJJR0hUOworICAgIGlmIChhbGlnbm1lbnQgPT0gVGV4dEFsaWduTW9kZTo6SnVzdGlm
eSAmJiB0ZXh0SnVzdGlmeSA9PSBUZXh0SnVzdGlmeTo6Tm9uZSkKKyAgICAgICAgcmV0dXJuIHN0
eWxlKCkuZGlyZWN0aW9uKCkgPT0gTFRSID8gVGV4dEFsaWduTW9kZTo6TGVmdCA6IFRleHRBbGln
bk1vZGU6OlJpZ2h0OwogI2VuZGlmCiAKICAgICBpZiAoZW5kc1dpdGhTb2Z0QnJlYWspCiAgICAg
ICAgIHJldHVybiBhbGlnbm1lbnQ7CiAKICNpZiAhRU5BQkxFKENTUzNfVEVYVCkKLSAgICByZXR1
cm4gKGFsaWdubWVudCA9PSBKVVNUSUZZKSA/IFRBU1RBUlQgOiBhbGlnbm1lbnQ7CisgICAgcmV0
dXJuIChhbGlnbm1lbnQgPT0gVGV4dEFsaWduTW9kZTo6SnVzdGlmeSkgPyBUZXh0QWxpZ25Nb2Rl
OjpTdGFydCA6IGFsaWdubWVudDsKICNlbHNlCi0gICAgaWYgKGFsaWdubWVudCAhPSBKVVNUSUZZ
KQorICAgIGlmIChhbGlnbm1lbnQgIT0gVGV4dEFsaWduTW9kZTo6SnVzdGlmeSkKICAgICAgICAg
cmV0dXJuIGFsaWdubWVudDsKIAogICAgIFRleHRBbGlnbkxhc3QgYWxpZ25tZW50TGFzdCA9IHN0
eWxlKCkudGV4dEFsaWduTGFzdCgpOwogICAgIHN3aXRjaCAoYWxpZ25tZW50TGFzdCkgewotICAg
IGNhc2UgVGV4dEFsaWduTGFzdFN0YXJ0OgotICAgICAgICByZXR1cm4gVEFTVEFSVDsKLSAgICBj
YXNlIFRleHRBbGlnbkxhc3RFbmQ6Ci0gICAgICAgIHJldHVybiBUQUVORDsKLSAgICBjYXNlIFRl
eHRBbGlnbkxhc3RMZWZ0OgotICAgICAgICByZXR1cm4gTEVGVDsKLSAgICBjYXNlIFRleHRBbGln
bkxhc3RSaWdodDoKLSAgICAgICAgcmV0dXJuIFJJR0hUOwotICAgIGNhc2UgVGV4dEFsaWduTGFz
dENlbnRlcjoKLSAgICAgICAgcmV0dXJuIENFTlRFUjsKLSAgICBjYXNlIFRleHRBbGlnbkxhc3RK
dXN0aWZ5OgotICAgICAgICByZXR1cm4gSlVTVElGWTsKLSAgICBjYXNlIFRleHRBbGlnbkxhc3RB
dXRvOgotICAgICAgICBpZiAodGV4dEp1c3RpZnkgPT0gVGV4dEp1c3RpZnlEaXN0cmlidXRlKQot
ICAgICAgICAgICAgcmV0dXJuIEpVU1RJRlk7Ci0gICAgICAgIHJldHVybiBUQVNUQVJUOworICAg
IGNhc2UgVGV4dEFsaWduTGFzdDo6U3RhcnQ6CisgICAgICAgIHJldHVybiBUZXh0QWxpZ25Nb2Rl
OjpTdGFydDsKKyAgICBjYXNlIFRleHRBbGlnbkxhc3Q6OkVuZDoKKyAgICAgICAgcmV0dXJuIFRl
eHRBbGlnbk1vZGU6OkVuZDsKKyAgICBjYXNlIFRleHRBbGlnbkxhc3Q6OkxlZnQ6CisgICAgICAg
IHJldHVybiBUZXh0QWxpZ25Nb2RlOjpMZWZ0OworICAgIGNhc2UgVGV4dEFsaWduTGFzdDo6Umln
aHQ6CisgICAgICAgIHJldHVybiBUZXh0QWxpZ25Nb2RlOjpSaWdodDsKKyAgICBjYXNlIFRleHRB
bGlnbkxhc3Q6OkNlbnRlcjoKKyAgICAgICAgcmV0dXJuIFRleHRBbGlnbk1vZGU6OkNlbnRlcjsK
KyAgICBjYXNlIFRleHRBbGlnbkxhc3Q6Okp1c3RpZnk6CisgICAgICAgIHJldHVybiBUZXh0QWxp
Z25Nb2RlOjpKdXN0aWZ5OworICAgIGNhc2UgVGV4dEFsaWduTGFzdDo6QXV0bzoKKyAgICAgICAg
aWYgKHRleHRKdXN0aWZ5ID09IFRleHRKdXN0aWZ5OjpEaXN0cmlidXRlKQorICAgICAgICAgICAg
cmV0dXJuIFRleHRBbGlnbk1vZGU6Okp1c3RpZnk7CisgICAgICAgIHJldHVybiBUZXh0QWxpZ25N
b2RlOjpTdGFydDsKICAgICB9CiAgICAgcmV0dXJuIGFsaWdubWVudDsKICNlbmRpZgpAQCAtNjE0
LDcgKzYxNCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlRXhwYW5zaW9uRm8KICAg
ICB9CiB9CiAKLXZvaWQgUmVuZGVyQmxvY2tGbG93Ojp1cGRhdGVMb2dpY2FsV2lkdGhGb3JBbGln
bm1lbnQoY29uc3QgRVRleHRBbGlnbiYgdGV4dEFsaWduLCBjb25zdCBSb290SW5saW5lQm94KiBy
b290SW5saW5lQm94LCBCaWRpUnVuKiB0cmFpbGluZ1NwYWNlUnVuLCBmbG9hdCYgbG9naWNhbExl
ZnQsIGZsb2F0JiB0b3RhbExvZ2ljYWxXaWR0aCwgZmxvYXQmIGF2YWlsYWJsZUxvZ2ljYWxXaWR0
aCwgaW50IGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQpCit2b2lkIFJlbmRlckJsb2NrRmxvdzo6
dXBkYXRlTG9naWNhbFdpZHRoRm9yQWxpZ25tZW50KGNvbnN0IFRleHRBbGlnbk1vZGUmIHRleHRB
bGlnbiwgY29uc3QgUm9vdElubGluZUJveCogcm9vdElubGluZUJveCwgQmlkaVJ1biogdHJhaWxp
bmdTcGFjZVJ1biwgZmxvYXQmIGxvZ2ljYWxMZWZ0LCBmbG9hdCYgdG90YWxMb2dpY2FsV2lkdGgs
IGZsb2F0JiBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIGludCBleHBhbnNpb25PcHBvcnR1bml0eUNv
dW50KQogewogICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uOwogICAgIGlmIChyb290SW5saW5l
Qm94ICYmIHN0eWxlKCkudW5pY29kZUJpZGkoKSA9PSBQbGFpbnRleHQpCkBAIC02MjcsMTkgKzYy
NywxOSBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6dXBkYXRlTG9naWNhbFdpZHRoCiAgICAgLy8g
b2JqZWN0cyBob3Jpem9udGFsbHkuIFRoZSB0b3RhbCB3aWR0aCBvZiB0aGUgbGluZSBjYW4gYmUg
aW5jcmVhc2VkIGlmIHdlIGVuZCB1cAogICAgIC8vIGp1c3RpZnlpbmcgdGV4dC4KICAgICBzd2l0
Y2ggKHRleHRBbGlnbikgewotICAgIGNhc2UgTEVGVDoKLSAgICBjYXNlIFdFQktJVF9MRUZUOgor
ICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6Oldl
YktpdExlZnQ6CiAgICAgICAgIHVwZGF0ZUxvZ2ljYWxXaWR0aEZvckxlZnRBbGlnbmVkQmxvY2so
c3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCksIHRyYWlsaW5nU3BhY2VSdW4sIGxvZ2lj
YWxMZWZ0LCB0b3RhbExvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBSSUdIVDoKLSAgICBjYXNlIFdFQktJVF9SSUdIVDoKKyAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OlJpZ2h0OgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0
UmlnaHQ6CiAgICAgICAgIHVwZGF0ZUxvZ2ljYWxXaWR0aEZvclJpZ2h0QWxpZ25lZEJsb2NrKHN0
eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpLCB0cmFpbGluZ1NwYWNlUnVuLCBsb2dpY2Fs
TGVmdCwgdG90YWxMb2dpY2FsV2lkdGgsIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgQ0VOVEVSOgotICAgIGNhc2UgV0VCS0lUX0NFTlRFUjoKKyAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktp
dENlbnRlcjoKICAgICAgICAgdXBkYXRlTG9naWNhbFdpZHRoRm9yQ2VudGVyQWxpZ25lZEJsb2Nr
KHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpLCB0cmFpbGluZ1NwYWNlUnVuLCBsb2dp
Y2FsTGVmdCwgdG90YWxMb2dpY2FsV2lkdGgsIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSlVTVElGWToKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6Okp1
c3RpZnk6CiAgICAgICAgIGFkanVzdElubGluZURpcmVjdGlvbkxpbmVCb3VuZHMoZXhwYW5zaW9u
T3Bwb3J0dW5pdHlDb3VudCwgbG9naWNhbExlZnQsIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiAg
ICAgICAgIGlmIChleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KSB7CiAgICAgICAgICAgICBpZiAo
dHJhaWxpbmdTcGFjZVJ1bikgewpAQCAtNjQ5LDEzICs2NDksMTMgQEAgdm9pZCBSZW5kZXJCbG9j
a0Zsb3c6OnVwZGF0ZUxvZ2ljYWxXaWR0aAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBUQVNUQVJUOgorICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6U3RhcnQ6CiAgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gTFRSKQogICAgICAgICAg
ICAgdXBkYXRlTG9naWNhbFdpZHRoRm9yTGVmdEFsaWduZWRCbG9jayhzdHlsZSgpLmlzTGVmdFRv
UmlnaHREaXJlY3Rpb24oKSwgdHJhaWxpbmdTcGFjZVJ1biwgbG9naWNhbExlZnQsIHRvdGFsTG9n
aWNhbFdpZHRoLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICB1cGRhdGVMb2dpY2FsV2lkdGhGb3JSaWdodEFsaWduZWRCbG9jayhzdHlsZSgpLmlzTGVm
dFRvUmlnaHREaXJlY3Rpb24oKSwgdHJhaWxpbmdTcGFjZVJ1biwgbG9naWNhbExlZnQsIHRvdGFs
TG9naWNhbFdpZHRoLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgpOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFRBRU5EOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6RW5kOgogICAgICAgICBpZiAo
ZGlyZWN0aW9uID09IExUUikKICAgICAgICAgICAgIHVwZGF0ZUxvZ2ljYWxXaWR0aEZvclJpZ2h0
QWxpZ25lZEJsb2NrKHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpLCB0cmFpbGluZ1Nw
YWNlUnVuLCBsb2dpY2FsTGVmdCwgdG90YWxMb2dpY2FsV2lkdGgsIGF2YWlsYWJsZUxvZ2ljYWxX
aWR0aCk7CiAgICAgICAgIGVsc2UKQEAgLTY3NSw3ICs2NzUsNyBAQCBzdGF0aWMgdm9pZCB1cGRh
dGVMb2dpY2FsSW5saW5lUG9zaXRpb25zCiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRl
SW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZShSb290SW5saW5lQm94KiBsaW5lQm94LCBj
b25zdCBMaW5lSW5mbyYgbGluZUluZm8sIEJpZGlSdW4qIGZpcnN0UnVuLCBCaWRpUnVuKiB0cmFp
bGluZ1NwYWNlUnVuLCBib29sIHJlYWNoZWRFbmQsIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0Zv
bnRzTWFwJiB0ZXh0Qm94RGF0YU1hcCwgVmVydGljYWxQb3NpdGlvbkNhY2hlJiB2ZXJ0aWNhbFBv
c2l0aW9uQ2FjaGUsIFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVudHMpCiB7Ci0gICAg
RVRleHRBbGlnbiB0ZXh0QWxpZ24gPSB0ZXh0QWxpZ25tZW50Rm9yTGluZSghcmVhY2hlZEVuZCAm
JiAhbGluZUJveC0+ZW5kc1dpdGhCcmVhaygpKTsKKyAgICBUZXh0QWxpZ25Nb2RlIHRleHRBbGln
biA9IHRleHRBbGlnbm1lbnRGb3JMaW5lKCFyZWFjaGVkRW5kICYmICFsaW5lQm94LT5lbmRzV2l0
aEJyZWFrKCkpOwogICAgIAogICAgIC8vIENTUyAyLjE6ICInVGV4dC1pbmRlbnQnIG9ubHkgYWZm
ZWN0cyBhIGxpbmUgaWYgaXQgaXMgdGhlIGZpcnN0IGZvcm1hdHRlZCBsaW5lIG9mIGFuIGVsZW1l
bnQuIEZvciBleGFtcGxlLCB0aGUgZmlyc3QgbGluZSBvZiBhbiBhbm9ueW1vdXMgYmxvY2sgCiAg
ICAgLy8gYm94IGlzIG9ubHkgYWZmZWN0ZWQgaWYgaXQgaXMgdGhlIGZpcnN0IGNoaWxkIG9mIGl0
cyBwYXJlbnQgZWxlbWVudC4iCkBAIC03MDIsNyArNzAyLDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zs
b3c6OmNvbXB1dGVJbmxpbmVEaXJlYwogICAgIGxpbmVCb3gtPnBsYWNlQm94ZXNJbklubGluZURp
cmVjdGlvbihsaW5lTG9naWNhbExlZnQsIG5lZWRzV29yZFNwYWNpbmcpOwogfQogCi1zdGF0aWMg
aW5saW5lIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yRm9ySW5saW5lVGV4dEJv
eChSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrLCBJbmxpbmVUZXh0Qm94JiB0ZXh0Qm94LCBCaWRpUnVu
KiBwcmV2aW91c1J1biwgQmlkaVJ1biogbmV4dFJ1biwgRVRleHRBbGlnbiB0ZXh0QWxpZ24sIGJv
b2wgaXNBZnRlckV4cGFuc2lvbikKK3N0YXRpYyBpbmxpbmUgRXhwYW5zaW9uQmVoYXZpb3IgZXhw
YW5zaW9uQmVoYXZpb3JGb3JJbmxpbmVUZXh0Qm94KFJlbmRlckJsb2NrRmxvdyYgYmxvY2ssIElu
bGluZVRleHRCb3gmIHRleHRCb3gsIEJpZGlSdW4qIHByZXZpb3VzUnVuLCBCaWRpUnVuKiBuZXh0
UnVuLCBUZXh0QWxpZ25Nb2RlIHRleHRBbGlnbiwgYm9vbCBpc0FmdGVyRXhwYW5zaW9uKQogewog
ICAgIC8vIFRhdGVjaHV5b2tvIGlzIG1vZGVsZWQgYXMgdGhlIE9iamVjdCBSZXBsYWNlbWVudCBD
aGFyYWN0ZXIgKFUrRkZGQyksIHdoaWNoIGNhbiBuZXZlciBoYXZlIGV4cGFuc2lvbiBvcHBvcnR1
bml0aWVzIGluc2lkZSBub3IgaW50cmluc2ljYWxseSBhZGphY2VudCB0byBpdC4KICAgICBpZiAo
dGV4dEJveC5yZW5kZXJlcigpLnN0eWxlKCkudGV4dENvbWJpbmUoKSA9PSBUZXh0Q29tYmluZTo6
SG9yaXpvbnRhbCkKQEAgLTcxMSw3ICs3MTEsNyBAQCBzdGF0aWMgaW5saW5lIEV4cGFuc2lvbkJl
aGF2aW9yIGV4cGFuc2lvCiAgICAgRXhwYW5zaW9uQmVoYXZpb3IgcmVzdWx0ID0gMDsKICAgICBi
b29sIHNldExlYWRpbmdFeHBhbnNpb24gPSBmYWxzZTsKICAgICBib29sIHNldFRyYWlsaW5nRXhw
YW5zaW9uID0gZmFsc2U7Ci0gICAgaWYgKHRleHRBbGlnbiA9PSBKVVNUSUZZKSB7CisgICAgaWYg
KHRleHRBbGlnbiA9PSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5KSB7CiAgICAgICAgIC8vIElmIHRo
ZSBuZXh0IGJveCBpcyBydWJ5LCBhbmQgd2UncmUganVzdGlmeWluZywgYW5kIHRoZSBmaXJzdCBi
b3ggaW4gdGhlIHJ1YnkgYmFzZSBoYXMgYSBsZWFkaW5nIGV4cGFuc2lvbiwgYW5kIHdlIGFyZSBh
IHRleHQgYm94LCB0aGVuIGZvcmNlIGEgdHJhaWxpbmcgZXhwYW5zaW9uLgogICAgICAgICBpZiAo
bmV4dFJ1biAmJiBpczxSZW5kZXJSdWJ5UnVuPihuZXh0UnVuLT5yZW5kZXJlcigpKSAmJiBkb3du
Y2FzdDxSZW5kZXJSdWJ5UnVuPihuZXh0UnVuLT5yZW5kZXJlcigpKS5ydWJ5QmFzZSgpICYmIG5l
eHRSdW4tPnJlbmRlcmVyKCkuc3R5bGUoKS5jb2xsYXBzZVdoaXRlU3BhY2UoKSkgewogICAgICAg
ICAgICAgYXV0byYgcnVieUJhc2UgPSAqZG93bmNhc3Q8UmVuZGVyUnVieVJ1bj4obmV4dFJ1bi0+
cmVuZGVyZXIoKSkucnVieUJhc2UoKTsKQEAgLTgyNSw3ICs4MjUsNyBAQCBzdGF0aWMgYm9vbCBp
c0xhc3RJbkZsb3dSdW4oQmlkaVJ1biYgcnVuCiAgICAgcmV0dXJuIHRydWU7CiB9CiAgICAgCi1C
aWRpUnVuKiBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNG
b3JTZWdtZW50KFJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsIGNvbnN0IExpbmVJbmZvJiBsaW5lSW5m
bywgRVRleHRBbGlnbiB0ZXh0QWxpZ24sIGZsb2F0JiBsb2dpY2FsTGVmdCwgCitCaWRpUnVuKiBS
ZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JTZWdtZW50
KFJvb3RJbmxpbmVCb3gqIGxpbmVCb3gsIGNvbnN0IExpbmVJbmZvJiBsaW5lSW5mbywgVGV4dEFs
aWduTW9kZSB0ZXh0QWxpZ24sIGZsb2F0JiBsb2dpY2FsTGVmdCwgCiAgICAgZmxvYXQmIGF2YWls
YWJsZUxvZ2ljYWxXaWR0aCwgQmlkaVJ1biogZmlyc3RSdW4sIEJpZGlSdW4qIHRyYWlsaW5nU3Bh
Y2VSdW4sIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiB0ZXh0Qm94RGF0YU1hcCwg
VmVydGljYWxQb3NpdGlvbkNhY2hlJiB2ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUsCiAgICAgV29yZE1l
YXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cykKIHsKQEAgLTg4Miw3ICs4ODIsNyBAQCBCaWRp
UnVuKiBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbmxpbmVECiAgICAgICAgICAgICAgICAgY2Fu
SGFuZ1B1bmN0dWF0aW9uQXRFbmQgPSBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IAotICAgICAgICAgICAgaWYgKHRleHRBbGlnbiA9PSBKVVNUSUZZICYmIHJ1biAhPSB0cmFpbGlu
Z1NwYWNlUnVuKQorICAgICAgICAgICAgaWYgKHRleHRBbGlnbiA9PSBUZXh0QWxpZ25Nb2RlOjpK
dXN0aWZ5ICYmIHJ1biAhPSB0cmFpbGluZ1NwYWNlUnVuKQogICAgICAgICAgICAgICAgIGNvbXB1
dGVFeHBhbnNpb25PcHBvcnR1bml0aWVzKCp0aGlzLCB0ZXh0Qm94LCBwcmV2aW91c1J1biwgcnVu
LT5uZXh0KCksIHJlbmRlclRleHQuc3RyaW5nVmlldyhydW4tPm1fc3RhcnQsIHJ1bi0+bV9zdG9w
KSwgcnVuLT5ib3goKS0+ZGlyZWN0aW9uKCkpOwogCiAgICAgICAgICAgICBpZiAodW5zaWduZWQg
bGVuZ3RoID0gcmVuZGVyVGV4dC50ZXh0KCkubGVuZ3RoKCkpIHsKQEAgLTg5Nyw3ICs4OTcsNyBA
QCBCaWRpUnVuKiBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbmxpbmVECiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBjYW5IYW5nUHVuY3R1YXRpb25BdFN0YXJ0ID0gZmFsc2U7CiAgICAg
ICAgICAgICBib29sIGVuY291bnRlcmVkSnVzdGlmaWVkUnVieSA9IGZhbHNlOwotICAgICAgICAg
ICAgaWYgKGlzPFJlbmRlclJ1YnlSdW4+KHJ1bi0+cmVuZGVyZXIoKSkgJiYgdGV4dEFsaWduID09
IEpVU1RJRlkgJiYgcnVuICE9IHRyYWlsaW5nU3BhY2VSdW4gJiYgZG93bmNhc3Q8UmVuZGVyUnVi
eVJ1bj4ocnVuLT5yZW5kZXJlcigpKS5ydWJ5QmFzZSgpKSB7CisgICAgICAgICAgICBpZiAoaXM8
UmVuZGVyUnVieVJ1bj4ocnVuLT5yZW5kZXJlcigpKSAmJiB0ZXh0QWxpZ24gPT0gVGV4dEFsaWdu
TW9kZTo6SnVzdGlmeSAmJiBydW4gIT0gdHJhaWxpbmdTcGFjZVJ1biAmJiBkb3duY2FzdDxSZW5k
ZXJSdWJ5UnVuPihydW4tPnJlbmRlcmVyKCkpLnJ1YnlCYXNlKCkpIHsKICAgICAgICAgICAgICAg
ICBhdXRvKiBydWJ5QmFzZSA9IGRvd25jYXN0PFJlbmRlclJ1YnlSdW4+KHJ1bi0+cmVuZGVyZXIo
KSkucnVieUJhc2UoKTsKICAgICAgICAgICAgICAgICBpZiAocnVieUJhc2UtPmZpcnN0Um9vdEJv
eCgpICYmICFydWJ5QmFzZS0+Zmlyc3RSb290Qm94KCktPm5leHRSb290Qm94KCkgJiYgcnVuLT5y
ZW5kZXJlcigpLnN0eWxlKCkuY29sbGFwc2VXaGl0ZVNwYWNlKCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgcnVieUJhc2UtPnNldElzQWZ0ZXJFeHBhbnNpb24oaXNBZnRlckV4cGFuc2lvbik7CkBA
IC05NDAsNyArOTQwLDcgQEAgQmlkaVJ1biogUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5l
RAogICAgIH0KIAogICAgIGlmIChpczxSZW5kZXJSdWJ5QmFzZT4oKnRoaXMpICYmICFleHBhbnNp
b25PcHBvcnR1bml0eUNvdW50KQotICAgICAgICB0ZXh0QWxpZ24gPSBDRU5URVI7CisgICAgICAg
IHRleHRBbGlnbiA9IFRleHRBbGlnbk1vZGU6OkNlbnRlcjsKIAogICAgIHVwZGF0ZUxvZ2ljYWxX
aWR0aEZvckFsaWdubWVudCh0ZXh0QWxpZ24sIGxpbmVCb3gsIHRyYWlsaW5nU3BhY2VSdW4sIGxv
Z2ljYWxMZWZ0LCB0b3RhbExvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBleHBh
bnNpb25PcHBvcnR1bml0eUNvdW50KTsKIApAQCAtMTM3OCw3ICsxMzc4LDcgQEAgdm9pZCBSZW5k
ZXJCbG9ja0Zsb3c6OmxheW91dFJ1bnNBbmRGbG9hdAogICAgICAgICAgICAgaWYgKGxhc3RSb290
Qm94KCkpCiAgICAgICAgICAgICAgICAgbGFzdFJvb3RCb3goKS0+c2V0TGluZUJyZWFrSW5mbyhl
bmQucmVuZGVyZXIoKSwgZW5kLm9mZnNldCgpLCByZXNvbHZlci5zdGF0dXMoKSk7CiAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBWaXN1YWxEaXJlY3Rpb25PdmVycmlkZSBvdmVycmlkZSA9
IChzdHlsZVRvVXNlLnJ0bE9yZGVyaW5nKCkgPT0gVmlzdWFsT3JkZXIgPyAoc3R5bGVUb1VzZS5k
aXJlY3Rpb24oKSA9PSBMVFIgPyBWaXN1YWxMZWZ0VG9SaWdodE92ZXJyaWRlIDogVmlzdWFsUmln
aHRUb0xlZnRPdmVycmlkZSkgOiBOb1Zpc3VhbE92ZXJyaWRlKTsKKyAgICAgICAgICAgIFZpc3Vh
bERpcmVjdGlvbk92ZXJyaWRlIG92ZXJyaWRlID0gKHN0eWxlVG9Vc2UucnRsT3JkZXJpbmcoKSA9
PSBPcmRlcjo6VmlzdWFsID8gKHN0eWxlVG9Vc2UuZGlyZWN0aW9uKCkgPT0gTFRSID8gVmlzdWFs
TGVmdFRvUmlnaHRPdmVycmlkZSA6IFZpc3VhbFJpZ2h0VG9MZWZ0T3ZlcnJpZGUpIDogTm9WaXN1
YWxPdmVycmlkZSk7CiAKICAgICAgICAgICAgIGlmIChpc05ld1VCQVBhcmFncmFwaCAmJiBzdHls
ZVRvVXNlLnVuaWNvZGVCaWRpKCkgPT0gUGxhaW50ZXh0ICYmICFyZXNvbHZlci5jb250ZXh0KCkt
PnBhcmVudCgpKSB7CiAgICAgICAgICAgICAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBz
dHlsZVRvVXNlLmRpcmVjdGlvbigpOwpAQCAtMTc2Myw3ICsxNzYzLDcgQEAgdm9pZCBSZW5kZXJC
bG9ja0Zsb3c6OmNoZWNrRmxvYXRJbkNsZWFuTAogICAgICAgICBmbG9hdEJveE9uQ2xlYW5MaW5l
LmhlaWdodCgpICsgZmxvYXRCb3hPbkNsZWFuTGluZS52ZXJ0aWNhbE1hcmdpbkV4dGVudCgpKTsK
ICAgICAKICAgICAvLyBXZSBoYXZlIHRvIHJlc2V0IHRoZSBjYXAtaGVpZ2h0IGFsaWdubWVudCBk
b25lIGJ5IHRoZSBmaXJzdC1sZXR0ZXIgZmxvYXRzIHdoZW4gaW5pdGlhbC1sZXR0ZXIgaXMgc2V0
LCBzbyBqdXN0IGFsd2F5cyB0cmVhdCBmaXJzdC1sZXR0ZXIgZmxvYXRzIGFzIGRpcnR5LgotICAg
IGlmIChvcmlnaW5hbEZsb2F0UmVjdC5zaXplKCkgPT0gbmV3U2l6ZSAmJiAoZmxvYXRCb3hPbkNs
ZWFuTGluZS5zdHlsZSgpLnN0eWxlVHlwZSgpICE9IEZJUlNUX0xFVFRFUiB8fCAhZmxvYXRCb3hP
bkNsZWFuTGluZS5zdHlsZSgpLmluaXRpYWxMZXR0ZXJEcm9wKCkpKQorICAgIGlmIChvcmlnaW5h
bEZsb2F0UmVjdC5zaXplKCkgPT0gbmV3U2l6ZSAmJiAoZmxvYXRCb3hPbkNsZWFuTGluZS5zdHls
ZSgpLnN0eWxlVHlwZSgpICE9IFBzZXVkb0lkOjpGaXJzdExldHRlciB8fCAhZmxvYXRCb3hPbkNs
ZWFuTGluZS5zdHlsZSgpLmluaXRpYWxMZXR0ZXJEcm9wKCkpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBMYXlvdXRVbml0IGZsb2F0VG9wID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG9y
aWdpbmFsRmxvYXRSZWN0LnkoKSA6IG9yaWdpbmFsRmxvYXRSZWN0LngoKTsKQEAgLTIwODksNyAr
MjA4OSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjphZGRPdmVyZmxvd0Zyb21JbmwKIAogdm9p
ZCBSZW5kZXJCbG9ja0Zsb3c6OmRlbGV0ZUVsbGlwc2lzTGluZUJveGVzKCkKIHsKLSAgICBFVGV4
dEFsaWduIHRleHRBbGlnbiA9IHN0eWxlKCkudGV4dEFsaWduKCk7CisgICAgVGV4dEFsaWduTW9k
ZSB0ZXh0QWxpZ24gPSBzdHlsZSgpLnRleHRBbGlnbigpOwogICAgIGJvb2wgbHRyID0gc3R5bGUo
KS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CiAgICAgSW5kZW50VGV4dE9yTm90IHNob3VsZElu
ZGVudFRleHQgPSBJbmRlbnRUZXh0OwogICAgIGZvciAoUm9vdElubGluZUJveCogY3VyciA9IGZp
cnN0Um9vdEJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dFJvb3RCb3goKSkgewpAQCAtMjEy
Niw3ICsyMTI2LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNoZWNrTGluZXNGb3JUZXh0Twog
ICAgIC8vIGNoZWNrIHRoZSBsZWZ0IGVkZ2Ugb2YgdGhlIGxpbmUgYm94IHRvIHNlZSBpZiBpdCBp
cyBsZXNzCiAgICAgLy8gSW5jbHVkZSB0aGUgc2Nyb2xsYmFyIGZvciBvdmVyZmxvdyBibG9ja3Ms
IHdoaWNoIG1lYW5zIHdlIHdhbnQgdG8gdXNlICJjb250ZW50V2lkdGgoKSIKICAgICBib29sIGx0
ciA9IHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpOwotICAgIEVUZXh0QWxpZ24gdGV4
dEFsaWduID0gc3R5bGUoKS50ZXh0QWxpZ24oKTsKKyAgICBUZXh0QWxpZ25Nb2RlIHRleHRBbGln
biA9IHN0eWxlKCkudGV4dEFsaWduKCk7CiAgICAgYm9vbCBmaXJzdExpbmUgPSB0cnVlOwogICAg
IGZvciAoUm9vdElubGluZUJveCogY3VyciA9IGZpcnN0Um9vdEJveCgpOyBjdXJyOyBjdXJyID0g
Y3Vyci0+bmV4dFJvb3RCb3goKSkgewogICAgICAgICBJbmRlbnRUZXh0T3JOb3Qgc2hvdWxkSW5k
ZW50VGV4dCA9IGZpcnN0TGluZSA/IEluZGVudFRleHQgOiBEb05vdEluZGVudFRleHQ7CkBAIC0y
MjE0LDE4ICsyMjE0LDE4IEBAIGJvb2wgUmVuZGVyQmxvY2tGbG93Ojpwb3NpdGlvbk5ld0Zsb2F0
T24KIAogTGF5b3V0VW5pdCBSZW5kZXJCbG9ja0Zsb3c6OnN0YXJ0QWxpZ25lZE9mZnNldEZvckxp
bmUoTGF5b3V0VW5pdCBwb3NpdGlvbiwgSW5kZW50VGV4dE9yTm90IHNob3VsZEluZGVudFRleHQp
CiB7Ci0gICAgRVRleHRBbGlnbiB0ZXh0QWxpZ24gPSBzdHlsZSgpLnRleHRBbGlnbigpOworICAg
IFRleHRBbGlnbk1vZGUgdGV4dEFsaWduID0gc3R5bGUoKS50ZXh0QWxpZ24oKTsKICAgICBib29s
IHNob3VsZEFwcGx5SW5kZW50VGV4dCA9IGZhbHNlOwogICAgIHN3aXRjaCAodGV4dEFsaWduKSB7
Ci0gICAgY2FzZSBMRUZUOgotICAgIGNhc2UgV0VCS0lUX0xFRlQ6CisgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpMZWZ0OgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0TGVmdDoKICAgICAg
ICAgc2hvdWxkQXBwbHlJbmRlbnRUZXh0ID0gc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9u
KCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUklHSFQ6Ci0gICAgY2FzZSBXRUJLSVRfUklH
SFQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpSaWdodDoKKyAgICBjYXNlIFRleHRBbGlnbk1v
ZGU6OldlYktpdFJpZ2h0OgogICAgICAgICBzaG91bGRBcHBseUluZGVudFRleHQgPSAhc3R5bGUo
KS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVEFT
VEFSVDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlN0YXJ0OgogICAgICAgICBzaG91bGRBcHBs
eUluZGVudFRleHQgPSB0cnVlOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpAQCAtMjIz
NSw3ICsyMjM1LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9ja0Zsb3c6OnN0YXJ0QWxpZ25lZAog
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ1MjIKICAg
ICAvLyBUaGlzIHF1aXJrIGlzIGZvciBsZWdhY3kgY29udGVudCB0aGF0IGRvZXNuJ3Qgd29yayBw
cm9wZXJseSB3aXRoIHRoZSBjZW50ZXIgcG9zaXRpb25pbmcgc2NoZW1lCiAgICAgLy8gYmVpbmcg
aG9ub3JlZCAoZS5nLiwgZXB1YnMpLgotICAgIGlmIChzaG91bGRBcHBseUluZGVudFRleHQgfHwg
c2V0dGluZ3MoKS51c2VMZWdhY3lUZXh0QWxpZ25Qb3NpdGlvbmVkRWxlbWVudEJlaGF2aW9yKCkp
IC8vIEZJWE1FOiBIYW5kbGUgVEFFTkQgaGVyZQorICAgIGlmIChzaG91bGRBcHBseUluZGVudFRl
eHQgfHwgc2V0dGluZ3MoKS51c2VMZWdhY3lUZXh0QWxpZ25Qb3NpdGlvbmVkRWxlbWVudEJlaGF2
aW9yKCkpIC8vIEZJWE1FOiBIYW5kbGUgVGV4dEFsaWduTW9kZTo6RW5kIGhlcmUKICAgICAgICAg
cmV0dXJuIHN0YXJ0T2Zmc2V0Rm9yTGluZShwb3NpdGlvbiwgc2hvdWxkSW5kZW50VGV4dCk7CiAK
ICAgICAvLyB1cGRhdGVMb2dpY2FsV2lkdGhGb3JBbGlnbm1lbnQoKSBoYW5kbGVzIHRoZSBkaXJl
Y3Rpb24gb2YgdGhlIGJsb2NrIHNvIG5vIG5lZWQgdG8gY29uc2lkZXIgaXQgaGVyZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05NDAsMTMgKzk0MCwxMyBAQCB2b2lkIFJlbmRlckJveDo6cGFuU2Nyb2xsKGNvbnN0IEludFBv
aW50CiAKIGJvb2wgUmVuZGVyQm94OjpoYXNWZXJ0aWNhbFNjcm9sbGJhcldpdGhBdXRvQmVoYXZp
b3IoKSBjb25zdAogewotICAgIGJvb2wgb3ZlcmZsb3dTY3JvbGxBY3RzTGlrZUF1dG8gPSBzdHls
ZSgpLm92ZXJmbG93WSgpID09IE92ZXJmbG93OjpTY3JvbGwgJiYgIXN0eWxlKCkuaGFzUHNldWRv
U3R5bGUoU0NST0xMQkFSKSAmJiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS51c2VzT3ZlcmxheVNj
cm9sbGJhcnMoKTsKKyAgICBib29sIG92ZXJmbG93U2Nyb2xsQWN0c0xpa2VBdXRvID0gc3R5bGUo
KS5vdmVyZmxvd1koKSA9PSBPdmVyZmxvdzo6U2Nyb2xsICYmICFzdHlsZSgpLmhhc1BzZXVkb1N0
eWxlKFBzZXVkb0lkOjpTY3JvbGxiYXIpICYmIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLnVzZXNP
dmVybGF5U2Nyb2xsYmFycygpOwogICAgIHJldHVybiBoYXNPdmVyZmxvd0NsaXAoKSAmJiAoc3R5
bGUoKS5vdmVyZmxvd1koKSA9PSBPdmVyZmxvdzo6QXV0byB8fCBzdHlsZSgpLm92ZXJmbG93WSgp
ID09IE92ZXJmbG93OjpPdmVybGF5IHx8IG92ZXJmbG93U2Nyb2xsQWN0c0xpa2VBdXRvKTsKIH0K
IAogYm9vbCBSZW5kZXJCb3g6Omhhc0hvcml6b250YWxTY3JvbGxiYXJXaXRoQXV0b0JlaGF2aW9y
KCkgY29uc3QKIHsKLSAgICBib29sIG92ZXJmbG93U2Nyb2xsQWN0c0xpa2VBdXRvID0gc3R5bGUo
KS5vdmVyZmxvd1goKSA9PSBPdmVyZmxvdzo6U2Nyb2xsICYmICFzdHlsZSgpLmhhc1BzZXVkb1N0
eWxlKFNDUk9MTEJBUikgJiYgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkudXNlc092ZXJsYXlTY3Jv
bGxiYXJzKCk7CisgICAgYm9vbCBvdmVyZmxvd1Njcm9sbEFjdHNMaWtlQXV0byA9IHN0eWxlKCku
b3ZlcmZsb3dYKCkgPT0gT3ZlcmZsb3c6OlNjcm9sbCAmJiAhc3R5bGUoKS5oYXNQc2V1ZG9TdHls
ZShQc2V1ZG9JZDo6U2Nyb2xsYmFyKSAmJiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS51c2VzT3Zl
cmxheVNjcm9sbGJhcnMoKTsKICAgICByZXR1cm4gaGFzT3ZlcmZsb3dDbGlwKCkgJiYgKHN0eWxl
KCkub3ZlcmZsb3dYKCkgPT0gT3ZlcmZsb3c6OkF1dG8gfHwgc3R5bGUoKS5vdmVyZmxvd1goKSA9
PSBPdmVyZmxvdzo6T3ZlcmxheSB8fCBvdmVyZmxvd1Njcm9sbEFjdHNMaWtlQXV0byk7CiB9CiAK
QEAgLTEzOTgsNyArMTM5OCw3IEBAIHN0YXRpYyBib29sIGlzQ2FuZGlkYXRlRm9yT3BhcXVlbmVz
c1Rlc3QKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgY2hpbGRTdHlsZSA9IGNoaWxkQm94LnN0eWxl
KCk7CiAgICAgaWYgKGNoaWxkU3R5bGUucG9zaXRpb24oKSAhPSBQb3NpdGlvblR5cGU6OlN0YXRp
YyAmJiBjaGlsZEJveC5jb250YWluaW5nQmxvY2soKSAhPSBjaGlsZEJveC5wYXJlbnQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChjaGlsZFN0eWxlLnZpc2liaWxpdHkoKSAhPSBW
SVNJQkxFKQorICAgIGlmIChjaGlsZFN0eWxlLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpW
aXNpYmxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGNoaWxkU3R5bGUuc2hhcGVP
dXRzaWRlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE0OTIsNyArMTQ5Miw3IEBAIGJv
b2wgUmVuZGVyQm94OjpiYWNrZ3JvdW5kSGFzT3BhcXVlVG9wTGEKIAogdm9pZCBSZW5kZXJCb3g6
OnBhaW50TWFzayhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2V0KQogewotICAgIGlmICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdCgqdGhp
cykgfHwgc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBwYWludEluZm8ucGhhc2Ug
IT0gUGFpbnRQaGFzZU1hc2sgfHwgcGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVk
KCkpCisgICAgaWYgKCFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KCp0aGlzKSB8fCBz
dHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlIHx8IHBhaW50SW5mby5w
aGFzZSAhPSBQYWludFBoYXNlTWFzayB8fCBwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlz
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTGF5b3V0UmVjdCBwYWludFJlY3QgPSBM
YXlvdXRSZWN0KHBhaW50T2Zmc2V0LCBzaXplKCkpOwpAQCAtMTUwMiw3ICsxNTAyLDcgQEAgdm9p
ZCBSZW5kZXJCb3g6OnBhaW50TWFzayhQYWludEluZm8mIHBhaQogCiB2b2lkIFJlbmRlckJveDo6
cGFpbnRDbGlwcGluZ01hc2soUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mZnNldCkKIHsKLSAgICBpZiAoIXBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJv
b3QoKnRoaXMpIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgcGFpbnRJbmZv
LnBoYXNlICE9IFBhaW50UGhhc2VDbGlwcGluZ01hc2sgfHwgcGFpbnRJbmZvLmNvbnRleHQoKS5w
YWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKCFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5S
b290KCp0aGlzKSB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxl
IHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlQ2xpcHBpbmdNYXNrIHx8IHBhaW50SW5m
by5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBM
YXlvdXRSZWN0IHBhaW50UmVjdCA9IExheW91dFJlY3QocGFpbnRPZmZzZXQsIHNpemUoKSk7CkBA
IC0yMDY1LDcgKzIwNjUsNyBAQCB2b2lkIFJlbmRlckJveDo6ZGlydHlMaW5lQm94ZXMoYm9vbCBm
dWxsCiB2b2lkIFJlbmRlckJveDo6cG9zaXRpb25MaW5lQm94KElubGluZUVsZW1lbnRCb3gmIGJv
eCkKIHsKICAgICBpZiAoaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKLSAgICAgICAgLy8gQ2Fj
aGUgdGhlIHggcG9zaXRpb24gb25seSBpZiB3ZSB3ZXJlIGFuIElOTElORSB0eXBlIG9yaWdpbmFs
bHkuCisgICAgICAgIC8vIENhY2hlIHRoZSB4IHBvc2l0aW9uIG9ubHkgaWYgd2Ugd2VyZSBhbiBE
aXNwbGF5VHlwZTo6SW5saW5lIHR5cGUgb3JpZ2luYWxseS4KICAgICAgICAgYm9vbCB3YXNJbmxp
bmUgPSBzdHlsZSgpLmlzT3JpZ2luYWxEaXNwbGF5SW5saW5lVHlwZSgpOwogICAgICAgICBpZiAo
d2FzSW5saW5lKSB7CiAgICAgICAgICAgICAvLyBUaGUgdmFsdWUgaXMgY2FjaGVkIGluIHRoZSB4
UG9zIG9mIHRoZSBib3guICBXZSBvbmx5IG5lZWQgdGhpcyB2YWx1ZSBpZgpAQCAtMjEwNiw3ICsy
MTA2LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmRlbGV0ZUxpbmVCb3hXcmFwcGVyKCkKIAogTGF5b3V0
UmVjdCBSZW5kZXJCb3g6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRl
ckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7Ci0gICAgaWYgKHN0
eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgJiYgIWVuY2xvc2luZ0xheWVyKCktPmhhc1Zp
c2libGVDb250ZW50KCkpCisgICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxp
dHk6OlZpc2libGUgJiYgIWVuY2xvc2luZ0xheWVyKCktPmhhc1Zpc2libGVDb250ZW50KCkpCiAg
ICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CiAgICAgTGF5b3V0UmVjdCByID0gdmlzdWFsT3Zl
cmZsb3dSZWN0KCk7CiAgICAgLy8gRklYTUU6IGxheW91dERlbHRhIG5lZWRzIHRvIGJlIGFwcGxp
ZWQgaW4gcGFydHMgYmVmb3JlL2FmdGVyIHRyYW5zZm9ybXMgYW5kCkBAIC0yMzEyLDcgKzIzMTIs
NyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEluRnJhCiAgICAgLy8gd2lk
dGguICBVc2UgdGhlIHdpZHRoIGZyb20gdGhlIHN0eWxlIGNvbnRleHQuCiAgICAgLy8gRklYTUU6
IEFjY291bnQgZm9yIGJsb2NrLWZsb3cgaW4gZmxleGlibGUgYm94ZXMuCiAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2NDE4Ci0gICAgaWYgKGhhc092ZXJy
aWRlQ29udGVudExvZ2ljYWxXaWR0aCgpICYmIChpc1J1YnlSdW4oKSB8fCBzdHlsZSgpLmJvcmRl
ckZpdCgpID09IEJvcmRlckZpdExpbmVzIHx8IChwYXJlbnQoKS0+aXNGbGV4aWJsZUJveEluY2x1
ZGluZ0RlcHJlY2F0ZWQoKSkpKSB7CisgICAgaWYgKGhhc092ZXJyaWRlQ29udGVudExvZ2ljYWxX
aWR0aCgpICYmIChpc1J1YnlSdW4oKSB8fCBzdHlsZSgpLmJvcmRlckZpdCgpID09IEJvcmRlckZp
dDo6TGluZXMgfHwgKHBhcmVudCgpLT5pc0ZsZXhpYmxlQm94SW5jbHVkaW5nRGVwcmVjYXRlZCgp
KSkpIHsKICAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPSBvdmVycmlkZUNvbnRlbnRM
b2dpY2FsV2lkdGgoKSArIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTI1ODAsNyArMjU4MCw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21w
dXRlSW5saW5lRGlyZWN0aW9uTWEKIAogICAgIC8vIENhc2UgT25lOiBUaGUgb2JqZWN0IGlzIGJl
aW5nIGNlbnRlcmVkIGluIHRoZSBjb250YWluaW5nIGJsb2NrJ3MgYXZhaWxhYmxlIGxvZ2ljYWwg
d2lkdGguCiAgICAgaWYgKChtYXJnaW5TdGFydExlbmd0aC5pc0F1dG8oKSAmJiBtYXJnaW5FbmRM
ZW5ndGguaXNBdXRvKCkgJiYgY2hpbGRXaWR0aCA8IGNvbnRhaW5lcldpZHRoKQotICAgICAgICB8
fCAoIW1hcmdpblN0YXJ0TGVuZ3RoLmlzQXV0bygpICYmICFtYXJnaW5FbmRMZW5ndGguaXNBdXRv
KCkgJiYgY29udGFpbmluZ0Jsb2NrLnN0eWxlKCkudGV4dEFsaWduKCkgPT0gV0VCS0lUX0NFTlRF
UikpIHsKKyAgICAgICAgfHwgKCFtYXJnaW5TdGFydExlbmd0aC5pc0F1dG8oKSAmJiAhbWFyZ2lu
RW5kTGVuZ3RoLmlzQXV0bygpICYmIGNvbnRhaW5pbmdCbG9jay5zdHlsZSgpLnRleHRBbGlnbigp
ID09IFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcikpIHsKICAgICAgICAgLy8gT3RoZXIgYnJv
d3NlcnMgY2VudGVyIHRoZSBtYXJnaW4gYm94IGZvciBhbGlnbj1jZW50ZXIgZWxlbWVudHMgc28g
d2UgbWF0Y2ggdGhlbSBoZXJlLgogICAgICAgICBMYXlvdXRVbml0IG1hcmdpblN0YXJ0V2lkdGgg
PSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luU3RhcnRMZW5ndGgsIGNvbnRhaW5lcldpZHRo
KTsKICAgICAgICAgTGF5b3V0VW5pdCBtYXJnaW5FbmRXaWR0aCA9IG1pbmltdW1WYWx1ZUZvckxl
bmd0aChtYXJnaW5FbmRMZW5ndGgsIGNvbnRhaW5lcldpZHRoKTsKQEAgLTI1OTgsOCArMjU5OCw4
IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uTWEKICAgICB9IAogICAg
IAogICAgIC8vIENhc2UgVGhyZWU6IFRoZSBvYmplY3QgaXMgYmVpbmcgcHVzaGVkIHRvIHRoZSBl
bmQgb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2sncyBhdmFpbGFibGUgbG9naWNhbCB3aWR0aC4KLSAg
ICBib29sIHB1c2hUb0VuZEZyb21UZXh0QWxpZ24gPSAhbWFyZ2luRW5kTGVuZ3RoLmlzQXV0bygp
ICYmICgoIWNvbnRhaW5pbmdCbG9ja1N0eWxlLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSAmJiBj
b250YWluaW5nQmxvY2tTdHlsZS50ZXh0QWxpZ24oKSA9PSBXRUJLSVRfTEVGVCkKLSAgICAgICAg
fHwgKGNvbnRhaW5pbmdCbG9ja1N0eWxlLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSAmJiBjb250
YWluaW5nQmxvY2tTdHlsZS50ZXh0QWxpZ24oKSA9PSBXRUJLSVRfUklHSFQpKTsKKyAgICBib29s
IHB1c2hUb0VuZEZyb21UZXh0QWxpZ24gPSAhbWFyZ2luRW5kTGVuZ3RoLmlzQXV0bygpICYmICgo
IWNvbnRhaW5pbmdCbG9ja1N0eWxlLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSAmJiBjb250YWlu
aW5nQmxvY2tTdHlsZS50ZXh0QWxpZ24oKSA9PSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0KQor
ICAgICAgICB8fCAoY29udGFpbmluZ0Jsb2NrU3R5bGUuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
ICYmIGNvbnRhaW5pbmdCbG9ja1N0eWxlLnRleHRBbGlnbigpID09IFRleHRBbGlnbk1vZGU6Oldl
YktpdFJpZ2h0KSk7CiAgICAgaWYgKChtYXJnaW5TdGFydExlbmd0aC5pc0F1dG8oKSB8fCBwdXNo
VG9FbmRGcm9tVGV4dEFsaWduKSAmJiBjaGlsZFdpZHRoIDwgY29udGFpbmVyV2lkdGgpIHsKICAg
ICAgICAgbWFyZ2luRW5kID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luRW5kTGVuZ3RoLCBjb250YWlu
ZXJXaWR0aCk7CiAgICAgICAgIG1hcmdpblN0YXJ0ID0gY29udGFpbmVyV2lkdGggLSBjaGlsZFdp
ZHRoIC0gbWFyZ2luRW5kOwpAQCAtMjg1Nyw3ICsyODU3LDcgQEAgYm9vbCBSZW5kZXJCb3g6OnNr
aXBDb250YWluaW5nQmxvY2tGb3JQZQogICAgIC8vIG9iamVjdHMsIHN1Y2ggYXMgdGFibGUtY2Vs
bHMgYW5kIGZsZXhib3hlcywgd2lsbCBiZSB0cmVhdGVkIGFzIGlmIHRoZXkgd2VyZQogICAgIC8v
IG5vbi1hbm9ueW1vdXMuCiAgICAgaWYgKGNvbnRhaW5pbmdCbG9jay5pc0Fub255bW91cygpKQot
ICAgICAgICByZXR1cm4gY29udGFpbmluZ0Jsb2NrLnN0eWxlKCkuZGlzcGxheSgpID09IEJMT0NL
IHx8IGNvbnRhaW5pbmdCbG9jay5zdHlsZSgpLmRpc3BsYXkoKSA9PSBJTkxJTkVfQkxPQ0s7Cisg
ICAgICAgIHJldHVybiBjb250YWluaW5nQmxvY2suc3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxh
eVR5cGU6OkJsb2NrIHx8IGNvbnRhaW5pbmdCbG9jay5zdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNw
bGF5VHlwZTo6SW5saW5lQmxvY2s7CiAgICAgCiAgICAgLy8gRm9yIHF1aXJrcyBtb2RlLCB3ZSBz
a2lwIG1vc3QgYXV0by1oZWlnaHQgY29udGFpbmluZyBibG9ja3Mgd2hlbiBjb21wdXRpbmcKICAg
ICAvLyBwZXJjZW50YWdlcy4KQEAgLTQzODYsNyArNDM4Niw3IEBAIFZpc2libGVQb3NpdGlvbiBS
ZW5kZXJCb3g6OnBvc2l0aW9uRm9yUG8KICAgICAgICAgfQogCiAgICAgICAgIGlmICgoIXJlbmRl
cmVyLmZpcnN0Q2hpbGQoKSAmJiAhcmVuZGVyZXIuaXNJbmxpbmUoKSAmJiAhaXM8UmVuZGVyQmxv
Y2tGbG93PihyZW5kZXJlcikpCi0gICAgICAgICAgICB8fCByZW5kZXJlci5zdHlsZSgpLnZpc2li
aWxpdHkoKSAhPSBWSVNJQkxFKQorICAgICAgICAgICAgfHwgcmVuZGVyZXIuc3R5bGUoKS52aXNp
YmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
CiAgICAgICAgIExheW91dFVuaXQgdG9wID0gcmVuZGVyZXIuYm9yZGVyVG9wKCkgKyByZW5kZXJl
ci5wYWRkaW5nVG9wKCkgKyAoaXM8UmVuZGVyVGFibGVSb3c+KCp0aGlzKSA/IExheW91dFVuaXQo
KSA6IHJlbmRlcmVyLnkoKSk7CkBAIC00NjM0LDcgKzQ2MzQsNyBAQCBib29sIFJlbmRlckJveDo6
aXNVbnNwbGl0dGFibGVGb3JQYWdpbmF0CiAgICAgcmV0dXJuIGlzUmVwbGFjZWQoKQogICAgICAg
ICB8fCBoYXNVbnNwbGl0dGFibGVTY3JvbGxpbmdPdmVyZmxvdygpCiAgICAgICAgIHx8IChwYXJl
bnQoKSAmJiBpc1dyaXRpbmdNb2RlUm9vdCgpKQotICAgICAgICB8fCAoaXNGbG9hdGluZygpICYm
IHN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gRklSU1RfTEVUVEVSICYmIHN0eWxlKCkuaW5pdGlhbExl
dHRlckRyb3AoKSA+IDApOworICAgICAgICB8fCAoaXNGbG9hdGluZygpICYmIHN0eWxlKCkuc3R5
bGVUeXBlKCkgPT0gUHNldWRvSWQ6OkZpcnN0TGV0dGVyICYmIHN0eWxlKCkuaW5pdGlhbExldHRl
ckRyb3AoKSA+IDApOwogfQogCiBMYXlvdXRVbml0IFJlbmRlckJveDo6bGluZUhlaWdodChib29s
IC8qZmlyc3RMaW5lKi8sIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9u
TW9kZSAvKmxpbmVQb3NpdGlvbk1vZGUqLykgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkocmV2aXNpb24gMjMyMTQz
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjU4MCwyMyArMjU4MCwyMyBAQCBMYXlvdXRSZWN0IFJlbmRlckJv
eE1vZGVsT2JqZWN0Ojpsb2NhbENhCiAgICAgQ2FyZXRBbGlnbm1lbnQgYWxpZ25tZW50ID0gYWxp
Z25MZWZ0OwogCiAgICAgc3dpdGNoIChjdXJyZW50U3R5bGUudGV4dEFsaWduKCkpIHsKLSAgICBj
YXNlIExFRlQ6Ci0gICAgY2FzZSBXRUJLSVRfTEVGVDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6
OkxlZnQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgogICAgICAgICBicmVh
azsKLSAgICBjYXNlIENFTlRFUjoKLSAgICBjYXNlIFdFQktJVF9DRU5URVI6CisgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpDZW50ZXI6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRDZW50
ZXI6CiAgICAgICAgIGFsaWdubWVudCA9IGFsaWduQ2VudGVyOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFJJR0hUOgotICAgIGNhc2UgV0VCS0lUX1JJR0hUOgorICAgIGNhc2UgVGV4dEFsaWdu
TW9kZTo6UmlnaHQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRSaWdodDoKICAgICAg
ICAgYWxpZ25tZW50ID0gYWxpZ25SaWdodDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBKVVNU
SUZZOgotICAgIGNhc2UgVEFTVEFSVDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6Okp1c3RpZnk6
CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpTdGFydDoKICAgICAgICAgaWYgKCFjdXJyZW50U3R5
bGUuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQogICAgICAgICAgICAgYWxpZ25tZW50ID0gYWxp
Z25SaWdodDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUQUVORDoKKyAgICBjYXNlIFRleHRB
bGlnbk1vZGU6OkVuZDoKICAgICAgICAgaWYgKGN1cnJlbnRTdHlsZS5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkpCiAgICAgICAgICAgICBhbGlnbm1lbnQgPSBhbGlnblJpZ2h0OwogICAgICAgICBi
cmVhazsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5oCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjcxLDcgKzI3MSw3IEBA
IHByb3RlY3RlZDoKICAgICBEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlRm9ySW1hZ2VEcmF3KGNv
bnN0IEltYWdlJiwgY29uc3QgUGFpbnRJbmZvJikgY29uc3Q7CiAKIHB1YmxpYzoKLSAgICAvLyBG
b3IgUmVuZGVyQmxvY2tzIGFuZCBSZW5kZXJJbmxpbmVzIHdpdGggbV9zdHlsZS0+c3R5bGVUeXBl
KCkgPT0gRklSU1RfTEVUVEVSLCB0aGlzIHRyYWNrcyB0aGVpciByZW1haW5pbmcgdGV4dCBmcmFn
bWVudHMKKyAgICAvLyBGb3IgUmVuZGVyQmxvY2tzIGFuZCBSZW5kZXJJbmxpbmVzIHdpdGggbV9z
dHlsZS0+c3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6OkZpcnN0TGV0dGVyLCB0aGlzIHRyYWNrcyB0
aGVpciByZW1haW5pbmcgdGV4dCBmcmFnbWVudHMKICAgICBSZW5kZXJUZXh0RnJhZ21lbnQqIGZp
cnN0TGV0dGVyUmVtYWluaW5nVGV4dCgpIGNvbnN0OwogICAgIHZvaWQgc2V0Rmlyc3RMZXR0ZXJS
ZW1haW5pbmdUZXh0KFJlbmRlclRleHRGcmFnbWVudCYpOwogICAgIHZvaWQgY2xlYXJGaXJzdExl
dHRlclJlbWFpbmluZ1RleHQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJDb3VudGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQ291bnRlci5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJDb3VudGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDE0ICsxNDAsMTQg
QEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q291bnRlclBsYW4+IHBsYW5DbwogICAgIGF1dG8mIHN0
eWxlID0gcmVuZGVyZXIuc3R5bGUoKTsKIAogICAgIHN3aXRjaCAoc3R5bGUuc3R5bGVUeXBlKCkp
IHsKLSAgICBjYXNlIE5PUFNFVURPOgorICAgIGNhc2UgUHNldWRvSWQ6Ok5vbmU6CiAgICAgICAg
IC8vIFNvbWV0aW1lcyBlbGVtZW50cyBoYXZlIG1vcmUgdGhlbiBvbmUgcmVuZGVyZXIuIE9ubHkg
dGhlIGZpcnN0IG9uZSBnZXRzIHRoZSBjb3VudGVyCiAgICAgICAgIC8vIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvY3NzL2NvdW50ZXItY3Jhc2guaHRtbAogICAgICAgICBpZiAoZ2VuZXJhdGluZ0Vs
ZW1lbnQtPnJlbmRlcmVyKCkgIT0gJnJlbmRlcmVyKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBCRUZPUkU6Ci0gICAgY2FzZSBBRlRF
UjoKKyAgICBjYXNlIFBzZXVkb0lkOjpCZWZvcmU6CisgICAgY2FzZSBQc2V1ZG9JZDo6QWZ0ZXI6
CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7IC8vIENvdW50ZXJzIGFyZSBmb3JiaWRkZW4gZnJvbSBhbGwgb3RoZXIgcHNldWRvIGVsZW1l
bnRzLgpAQCAtMzg0LDcgKzM4NCw3IEBAIFN0cmluZyBSZW5kZXJDb3VudGVyOjpvcmlnaW5hbFRl
eHQoKSBjb24KICAgICAgICAgICAgIGlmICghYmVmb3JlQWZ0ZXJDb250YWluZXItPmlzQW5vbnlt
b3VzKCkgJiYgIWJlZm9yZUFmdGVyQ29udGFpbmVyLT5pc1BzZXVkb0VsZW1lbnQoKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7IC8vIFJlbmRlckNvdW50ZXJzIGFyZSByZXN0cmlj
dGVkIHRvIGJlZm9yZSBhbmQgYWZ0ZXIgcHNldWRvIGVsZW1lbnRzCiAgICAgICAgICAgICBQc2V1
ZG9JZCBjb250YWluZXJTdHlsZSA9IGJlZm9yZUFmdGVyQ29udGFpbmVyLT5zdHlsZSgpLnN0eWxl
VHlwZSgpOwotICAgICAgICAgICAgaWYgKChjb250YWluZXJTdHlsZSA9PSBCRUZPUkUpIHx8IChj
b250YWluZXJTdHlsZSA9PSBBRlRFUikpCisgICAgICAgICAgICBpZiAoKGNvbnRhaW5lclN0eWxl
ID09IFBzZXVkb0lkOjpCZWZvcmUpIHx8IChjb250YWluZXJTdHlsZSA9PSBQc2V1ZG9JZDo6QWZ0
ZXIpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgYmVmb3JlQWZ0ZXJDb250
YWluZXIgPSBiZWZvcmVBZnRlckNvbnRhaW5lci0+cGFyZW50KCk7CiAgICAgICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVk
RmxleGlibGVCb3guY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTQ3LDcgKzE0Nyw3IEBAIHN0YXRpYyBMYXlvdXRVbml0IG1hcmdpbldpZHRoRm9yQ2hpbGQoUmUK
IHN0YXRpYyBib29sIGNoaWxkRG9lc05vdEFmZmVjdFdpZHRoT3JGbGV4aW5nKFJlbmRlck9iamVj
dCogY2hpbGQpCiB7CiAgICAgLy8gUG9zaXRpb25lZCBjaGlsZHJlbiBhbmQgY29sbGFwc2VkIGNo
aWxkcmVuIGRvbid0IGFmZmVjdCB0aGUgbWluL21heCB3aWR0aC4KLSAgICByZXR1cm4gY2hpbGQt
PmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpIHx8IGNoaWxkLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9
PSBDT0xMQVBTRTsKKyAgICByZXR1cm4gY2hpbGQtPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpIHx8
IGNoaWxkLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpDb2xsYXBzZTsKIH0K
IAogc3RhdGljIExheW91dFVuaXQgY29udGVudFdpZHRoRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGls
ZCkKQEAgLTQ4Myw3ICs0ODMsNyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6
bGF5b3V0CiAgICAgICAgICAgICAKICAgICAgICAgICAgIExheW91dFNpemUmIGNoaWxkTGF5b3V0
RGVsdGEgPSBjaGlsZExheW91dERlbHRhc1tjaGlsZEluZGV4KytdOwogICAgICAgICAgICAgCi0g
ICAgICAgICAgICBpZiAoY2hpbGQtPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IENPTExBUFNFKSB7
CisgICAgICAgICAgICBpZiAoY2hpbGQtPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxp
dHk6OkNvbGxhcHNlKSB7CiAgICAgICAgICAgICAgICAgLy8gdmlzaWJpbGl0eTogY29sbGFwc2Vk
IGNoaWxkcmVuIGRvIG5vdCBwYXJ0aWNpcGF0ZSBpbiBvdXIgcG9zaXRpb25pbmcuCiAgICAgICAg
ICAgICAgICAgLy8gQnV0IHdlIG5lZWQgdG8gbGF5IHRoZW0gb3V0LgogICAgICAgICAgICAgICAg
IGxheW91dENoaWxkSWZOZWVkZWRBcHBseWluZ0RlbHRhKGNoaWxkLCBjaGlsZExheW91dERlbHRh
KTsKQEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6
bGF5b3V0CiAKICAgICAgICAgICAgICAgICAgICAgLy8gTm93IGRpc3RyaWJ1dGUgdGhlIHNwYWNl
IHRvIG9iamVjdHMuCiAgICAgICAgICAgICAgICAgICAgIGZvciAoUmVuZGVyQm94KiBjaGlsZCA9
IGl0ZXJhdG9yLmZpcnN0KCk7IGNoaWxkICYmIHNwYWNlQXZhaWxhYmxlVGhpc1Bhc3MgJiYgdG90
YWxGbGV4OyBjaGlsZCA9IGl0ZXJhdG9yLm5leHQoKSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGNoaWxkLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBDT0xMQVBTRSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChjaGlsZC0+c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJp
bGl0eTo6Q29sbGFwc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhbGxvd2VkQ2hpbGRGbGV4KGNoaWxkLCBleHBh
bmRpbmcsIGkpKSB7CkBAIC03MjcsNyArNzI3LDcgQEAgdm9pZCBSZW5kZXJEZXByZWNhdGVkRmxl
eGlibGVCb3g6OmxheW91dAogICAgICAgICAgICAgCiAgICAgICAgICAgICBMYXlvdXRTaXplJiBj
aGlsZExheW91dERlbHRhID0gY2hpbGRMYXlvdXREZWx0YXNbY2hpbGRJbmRleCsrXTsKIAotICAg
ICAgICAgICAgaWYgKGNoaWxkLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBDT0xMQVBTRSkgewor
ICAgICAgICAgICAgaWYgKGNoaWxkLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5
OjpDb2xsYXBzZSkgewogICAgICAgICAgICAgICAgIC8vIHZpc2liaWxpdHk6IGNvbGxhcHNlZCBj
aGlsZHJlbiBkbyBub3QgcGFydGljaXBhdGUgaW4gb3VyIHBvc2l0aW9uaW5nLgogICAgICAgICAg
ICAgICAgIC8vIEJ1dCB3ZSBuZWVkIHRvIGxheSB0aGVtIGRvd24uCiAgICAgICAgICAgICAgICAg
bGF5b3V0Q2hpbGRJZk5lZWRlZEFwcGx5aW5nRGVsdGEoY2hpbGQsIGNoaWxkTGF5b3V0RGVsdGEp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFy
a2VyLmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckRldGFpbHNNYXJrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNyArMTE4LDcgQEAg
UGF0aCBSZW5kZXJEZXRhaWxzTWFya2VyOjpnZXRQYXRoKGNvbnN0IAogCiB2b2lkIFJlbmRlckRl
dGFpbHNNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpbnRPZmZzZXQpCiB7Ci0gICAgaWYgKHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNl
Rm9yZWdyb3VuZCB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKSB7CisgICAgaWYg
KHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBzdHlsZSgpLnZpc2li
aWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKSB7CiAgICAgICAgIFJlbmRlckJsb2NrRmxv
dzo6cGFpbnQocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCShyZXZp
c2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw0OSArMTUxLDQ5IEBAIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBSZW5kZXJFbGVtZW50OjoKICAgICB9CiAKICAgICBzd2l0Y2ggKHN0eWxlLmRpc3Bs
YXkoKSkgewotICAgIGNhc2UgTk9ORToKLSAgICBjYXNlIENPTlRFTlRTOgorICAgIGNhc2UgRGlz
cGxheVR5cGU6Ok5vbmU6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6Q29udGVudHM6CiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIGNhc2UgSU5MSU5FOgorICAgIGNhc2UgRGlzcGxheVR5cGU6
OklubGluZToKICAgICAgICAgaWYgKGNyZWF0aW9uVHlwZSA9PSBDcmVhdGVBbGxSZW5kZXJlcnMp
CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVySW5saW5lPihlbGVtZW50
LCBXVEZNb3ZlKHN0eWxlKSk7CiAgICAgICAgIEZBTExUSFJPVUdIOyAvLyBGaWVsZHNldHMgc2hv
dWxkIG1ha2UgYSBibG9jayBmbG93IGlmIGRpc3BsYXk6aW5saW5lIGlzIHNldC4KLSAgICBjYXNl
IEJMT0NLOgotICAgIGNhc2UgSU5MSU5FX0JMT0NLOgotICAgIGNhc2UgQ09NUEFDVDoKKyAgICBj
YXNlIERpc3BsYXlUeXBlOjpCbG9jazoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpJbmxpbmVCbG9j
azoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpDb21wYWN0OgogICAgICAgICByZXR1cm4gY3JlYXRl
UmVuZGVyZXI8UmVuZGVyQmxvY2tGbG93PihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSk7Ci0gICAg
Y2FzZSBMSVNUX0lURU06CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6TGlzdEl0ZW06CiAgICAgICAg
IHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJMaXN0SXRlbT4oZWxlbWVudCwgV1RGTW92ZShz
dHlsZSkpOwotICAgIGNhc2UgRkxFWDoKLSAgICBjYXNlIElOTElORV9GTEVYOgotICAgIGNhc2Ug
V0VCS0lUX0ZMRVg6Ci0gICAgY2FzZSBXRUJLSVRfSU5MSU5FX0ZMRVg6CisgICAgY2FzZSBEaXNw
bGF5VHlwZTo6RmxleDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpJbmxpbmVGbGV4OgorICAgIGNh
c2UgRGlzcGxheVR5cGU6OldlYktpdEZsZXg6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6V2ViS2l0
SW5saW5lRmxleDoKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckZsZXhpYmxl
Qm94PihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSk7Ci0gICAgY2FzZSBHUklEOgotICAgIGNhc2Ug
SU5MSU5FX0dSSUQ6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6R3JpZDoKKyAgICBjYXNlIERpc3Bs
YXlUeXBlOjpJbmxpbmVHcmlkOgogICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVy
R3JpZD4oZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpOwotICAgIGNhc2UgQk9YOgotICAgIGNhc2Ug
SU5MSU5FX0JPWDoKKyAgICBjYXNlIERpc3BsYXlUeXBlOjpCb3g6CisgICAgY2FzZSBEaXNwbGF5
VHlwZTo6SW5saW5lQm94OgogICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyRGVw
cmVjYXRlZEZsZXhpYmxlQm94PihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSk7CiAgICAgZGVmYXVs
dDogewogICAgICAgICBpZiAoY3JlYXRpb25UeXBlID09IE9ubHlDcmVhdGVCbG9ja0FuZEZsZXhi
b3hSZW5kZXJlcnMpCiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyQmxv
Y2tGbG93PihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSk7CiAgICAgICAgIHN3aXRjaCAoc3R5bGUu
ZGlzcGxheSgpKSB7Ci0gICAgICAgIGNhc2UgVEFCTEU6Ci0gICAgICAgIGNhc2UgSU5MSU5FX1RB
QkxFOgorICAgICAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZToKKyAgICAgICAgY2FzZSBEaXNw
bGF5VHlwZTo6SW5saW5lVGFibGU6CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8
UmVuZGVyVGFibGU+KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKTsKLSAgICAgICAgY2FzZSBUQUJM
RV9DRUxMOgorICAgICAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZUNlbGw6CiAgICAgICAgICAg
ICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyVGFibGVDZWxsPihlbGVtZW50LCBXVEZNb3Zl
KHN0eWxlKSk7Ci0gICAgICAgIGNhc2UgVEFCTEVfQ0FQVElPTjoKKyAgICAgICAgY2FzZSBEaXNw
bGF5VHlwZTo6VGFibGVDYXB0aW9uOgogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVy
PFJlbmRlclRhYmxlQ2FwdGlvbj4oZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpOwotICAgICAgICBj
YXNlIFRBQkxFX1JPV19HUk9VUDoKLSAgICAgICAgY2FzZSBUQUJMRV9IRUFERVJfR1JPVVA6Ci0g
ICAgICAgIGNhc2UgVEFCTEVfRk9PVEVSX0dST1VQOgorICAgICAgICBjYXNlIERpc3BsYXlUeXBl
OjpUYWJsZVJvd0dyb3VwOgorICAgICAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZUhlYWRlckdy
b3VwOgorICAgICAgICBjYXNlIERpc3BsYXlUeXBlOjpUYWJsZUZvb3Rlckdyb3VwOgogICAgICAg
ICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclRhYmxlU2VjdGlvbj4oZWxlbWVudCwg
V1RGTW92ZShzdHlsZSkpOwotICAgICAgICBjYXNlIFRBQkxFX1JPVzoKKyAgICAgICAgY2FzZSBE
aXNwbGF5VHlwZTo6VGFibGVSb3c6CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8
UmVuZGVyVGFibGVSb3c+KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKTsKLSAgICAgICAgY2FzZSBU
QUJMRV9DT0xVTU5fR1JPVVA6Ci0gICAgICAgIGNhc2UgVEFCTEVfQ09MVU1OOgorICAgICAgICBj
YXNlIERpc3BsYXlUeXBlOjpUYWJsZUNvbHVtbkdyb3VwOgorICAgICAgICBjYXNlIERpc3BsYXlU
eXBlOjpUYWJsZUNvbHVtbjoKICAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5k
ZXJUYWJsZUNvbD4oZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpOwogICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgYnJlYWs7CkBAIC0yMTUsNyArMjE1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBSZW5kZXJFbGVtZQogICAgICAgICBSZW5kZXJCbG9jayogZmlyc3RMaW5lQmxv
Y2sgPSByZW5kZXJlckZvckZpcnN0TGluZVN0eWxlLmZpcnN0TGluZUJsb2NrKCk7CiAgICAgICAg
IGlmICghZmlyc3RMaW5lQmxvY2spCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAg
ICAgYXV0byogZmlyc3RMaW5lU3R5bGUgPSBmaXJzdExpbmVCbG9jay0+Z2V0Q2FjaGVkUHNldWRv
U3R5bGUoRklSU1RfTElORSwgJnN0eWxlKCkpOworICAgICAgICBhdXRvKiBmaXJzdExpbmVTdHls
ZSA9IGZpcnN0TGluZUJsb2NrLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RM
aW5lLCAmc3R5bGUoKSk7CiAgICAgICAgIGlmICghZmlyc3RMaW5lU3R5bGUpCiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIFJlbmRlclN0eWxlOjpjbG9uZVB0cigq
Zmlyc3RMaW5lU3R5bGUpOwpAQCAtMjM3LDcgKzIzNyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gUmVuZGVyRWxlbWUKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
ICAgIGF1dG8gc3R5bGUgPSBjb21wb3NlZFRyZWVQYXJlbnRFbGVtZW50LT5zdHlsZVJlc29sdmVy
KCkuc3R5bGVGb3JFbGVtZW50KCpjb21wb3NlZFRyZWVQYXJlbnRFbGVtZW50LCAmcGFyZW50U3R5
bGUpLnJlbmRlclN0eWxlOwotICAgICAgICBBU1NFUlQoc3R5bGUtPmRpc3BsYXkoKSA9PSBDT05U
RU5UUyk7CisgICAgICAgIEFTU0VSVChzdHlsZS0+ZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpD
b250ZW50cyk7CiAKICAgICAgICAgLy8gV2UgYWN0IGFzIGlmIHRoZXJlIHdhcyBhbiB1bnN0eWxl
ZCA8c3Bhbj4gYXJvdW5kIHRoZSB0ZXh0IG5vZGUuIE9ubHkgc3R5bGluZyBoYXBwZW5zIHZpYSBp
bmhlcml0YW5jZS4KICAgICAgICAgYXV0byBmaXJzdExpbmVTdHlsZSA9IFJlbmRlclN0eWxlOjpj
cmVhdGVQdHIoKTsKQEAgLTY1MCw3ICs2NTAsNyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OnByb3Bh
Z2F0ZVN0eWxlVG9Bbm9uCiB7CiAgICAgLy8gRklYTUU6IFdlIGNvdWxkIHNhdmUgdGhpcyBjYWxs
IHdoZW4gdGhlIGNoYW5nZSBvbmx5IGFmZmVjdGVkIG5vbi1pbmhlcml0ZWQgcHJvcGVydGllcy4K
ICAgICBmb3IgKGF1dG8mIGVsZW1lbnRDaGlsZCA6IGNoaWxkcmVuT2ZUeXBlPFJlbmRlckVsZW1l
bnQ+KCp0aGlzKSkgewotICAgICAgICBpZiAoIWVsZW1lbnRDaGlsZC5pc0Fub255bW91cygpIHx8
IGVsZW1lbnRDaGlsZC5zdHlsZSgpLnN0eWxlVHlwZSgpICE9IE5PUFNFVURPKQorICAgICAgICBp
ZiAoIWVsZW1lbnRDaGlsZC5pc0Fub255bW91cygpIHx8IGVsZW1lbnRDaGlsZC5zdHlsZSgpLnN0
eWxlVHlwZSgpICE9IFBzZXVkb0lkOjpOb25lKQogICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgaWYgKHByb3BhZ2F0aW9uVHlwZSA9PSBQcm9wYWdhdGVUb0Jsb2NrQ2hpbGRyZW5Pbmx5
ICYmICFpczxSZW5kZXJCbG9jaz4oZWxlbWVudENoaWxkKSkKQEAgLTcyNCw5ICs3MjQsOSBAQCB2
b2lkIFJlbmRlckVsZW1lbnQ6OnN0eWxlV2lsbENoYW5nZShTdHlsCiAgICAgICAgIC8vIEtlZXAg
bGF5ZXIgaGllcmFyY2h5IHZpc2liaWxpdHkgYml0cyB1cCB0byBkYXRlIGlmIHZpc2liaWxpdHkg
Y2hhbmdlcy4KICAgICAgICAgaWYgKG1fc3R5bGUudmlzaWJpbGl0eSgpICE9IG5ld1N0eWxlLnZp
c2liaWxpdHkoKSkgewogICAgICAgICAgICAgaWYgKFJlbmRlckxheWVyKiBsYXllciA9IGVuY2xv
c2luZ0xheWVyKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAobmV3U3R5bGUudmlzaWJpbGl0eSgp
ID09IFZJU0lCTEUpCisgICAgICAgICAgICAgICAgaWYgKG5ld1N0eWxlLnZpc2liaWxpdHkoKSA9
PSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICAgICAgICAgICAgICBsYXllci0+c2V0SGFz
VmlzaWJsZUNvbnRlbnQoKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChsYXllci0+aGFzVmlz
aWJsZUNvbnRlbnQoKSAmJiAodGhpcyA9PSAmbGF5ZXItPnJlbmRlcmVyKCkgfHwgbGF5ZXItPnJl
bmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkpIHsKKyAgICAgICAgICAg
ICAgICBlbHNlIGlmIChsYXllci0+aGFzVmlzaWJsZUNvbnRlbnQoKSAmJiAodGhpcyA9PSAmbGF5
ZXItPnJlbmRlcmVyKCkgfHwgbGF5ZXItPnJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkg
IT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkpIHsKICAgICAgICAgICAgICAgICAgICAgbGF5ZXItPmRp
cnR5VmlzaWJsZUNvbnRlbnRTdGF0dXMoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGRpZmYg
PiBTdHlsZURpZmZlcmVuY2U6OlJlcGFpbnRMYXllcikKICAgICAgICAgICAgICAgICAgICAgICAg
IHJlcGFpbnQoKTsKQEAgLTc1MSw3ICs3NTEsNyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OnN0eWxl
V2lsbENoYW5nZShTdHlsCiAgICAgICAgICAgICBzZXRGbG9hdGluZyhmYWxzZSk7CiAgICAgICAg
ICAgICBjbGVhclBvc2l0aW9uZWRTdGF0ZSgpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChuZXdT
dHlsZS5oYXNQc2V1ZG9TdHlsZShGSVJTVF9MSU5FKSB8fCBvbGRTdHlsZS0+aGFzUHNldWRvU3R5
bGUoRklSU1RfTElORSkpCisgICAgICAgIGlmIChuZXdTdHlsZS5oYXNQc2V1ZG9TdHlsZShQc2V1
ZG9JZDo6Rmlyc3RMaW5lKSB8fCBvbGRTdHlsZS0+aGFzUHNldWRvU3R5bGUoUHNldWRvSWQ6OkZp
cnN0TGluZSkpCiAgICAgICAgICAgICBpbnZhbGlkYXRlQ2FjaGVkRmlyc3RMaW5lU3R5bGUoKTsK
IAogICAgICAgICBzZXRIb3Jpem9udGFsV3JpdGluZ01vZGUodHJ1ZSk7CkBAIC04NTMsNyArODUz
LDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50OjppbnNlcnRlZEludG9UcmVlKCkKIAogICAgIC8vIElm
IHx0aGlzfCBpcyB2aXNpYmxlIGJ1dCB0aGlzIG9iamVjdCB3YXMgbm90LCB0ZWxsIHRoZSBsYXll
ciBpdCBoYXMgc29tZSB2aXNpYmxlIGNvbnRlbnQKICAgICAvLyB0aGF0IG5lZWRzIHRvIGJlIGRy
YXduIGFuZCBsYXllciB2aXNpYmlsaXR5IG9wdGltaXphdGlvbiBjYW4ndCBiZSB1c2VkCi0gICAg
aWYgKHBhcmVudCgpLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFICYmIHN0eWxlKCku
dmlzaWJpbGl0eSgpID09IFZJU0lCTEUgJiYgIWhhc0xheWVyKCkpIHsKKyAgICBpZiAocGFyZW50
KCktPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgJiYgc3R5bGUo
KS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhaGFzTGF5ZXIoKSkgewog
ICAgICAgICBpZiAoIWxheWVyKQogICAgICAgICAgICAgbGF5ZXIgPSBwYXJlbnQoKS0+ZW5jbG9z
aW5nTGF5ZXIoKTsKICAgICAgICAgaWYgKGxheWVyKQpAQCAtODY3LDcgKzg2Nyw3IEBAIHZvaWQg
UmVuZGVyRWxlbWVudDo6d2lsbEJlUmVtb3ZlZEZyb21UcmUKIHsKICAgICAvLyBJZiB3ZSByZW1v
dmUgYSB2aXNpYmxlIGNoaWxkIGZyb20gYW4gaW52aXNpYmxlIHBhcmVudCwgd2UgZG9uJ3Qga25v
dyB0aGUgbGF5ZXIgdmlzaWJpbGl0eSBhbnkgbW9yZS4KICAgICBSZW5kZXJMYXllciogbGF5ZXIg
PSBudWxscHRyOwotICAgIGlmIChwYXJlbnQoKS0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklT
SUJMRSAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFICYmICFoYXNMYXllcigpKSB7
CisgICAgaWYgKHBhcmVudCgpLT5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpW
aXNpYmxlICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUgJiYg
IWhhc0xheWVyKCkpIHsKICAgICAgICAgaWYgKChsYXllciA9IHBhcmVudCgpLT5lbmNsb3NpbmdM
YXllcigpKSkKICAgICAgICAgICAgIGxheWVyLT5kaXJ0eVZpc2libGVDb250ZW50U3RhdHVzKCk7
CiAgICAgfQpAQCAtMTA3OSw3ICsxMDc5LDcgQEAgYm9vbCBSZW5kZXJFbGVtZW50OjpyZXBhaW50
QWZ0ZXJMYXlvdXRJZgogCiAgICAgYm9vbCBmdWxsUmVwYWludCA9IHNlbGZOZWVkc0xheW91dCgp
OwogICAgIC8vIFByZXN1bWFibHkgYSBiYWNrZ3JvdW5kIG9yIGEgYm9yZGVyIGV4aXN0cyBpZiBi
b3JkZXItZml0OmxpbmVzIHdhcyBzcGVjaWZpZWQuCi0gICAgaWYgKCFmdWxsUmVwYWludCAmJiBz
dHlsZSgpLmJvcmRlckZpdCgpID09IEJvcmRlckZpdExpbmVzKQorICAgIGlmICghZnVsbFJlcGFp
bnQgJiYgc3R5bGUoKS5ib3JkZXJGaXQoKSA9PSBCb3JkZXJGaXQ6OkxpbmVzKQogICAgICAgICBm
dWxsUmVwYWludCA9IHRydWU7CiAgICAgaWYgKCFmdWxsUmVwYWludCkgewogICAgICAgICAvLyBU
aGlzIEFTU0VSVCBmYWlscyBkdWUgdG8gYW5pbWF0aW9ucy4gU2VlIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzA0OApAQCAtMTIwOCw3ICsxMjA4LDcgQEAgYm9vbCBS
ZW5kZXJFbGVtZW50Ojppc1Zpc2libGVJbkRvY3VtZW50UgogewogICAgIGlmIChkb2N1bWVudCgp
LmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChzdHlsZSgp
LnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKHZpZXcoKS5mcmFtZVZpZXcoKS5pc09mZnNjcmVlbigpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0xMzIwLDcgKzEzMjAsNyBAQCBib29sIFJlbmRlckVsZW1lbnQ6OnJl
cGFpbnRGb3JQYXVzZWRJbWFnCiAKIGNvbnN0IFJlbmRlclN0eWxlKiBSZW5kZXJFbGVtZW50Ojpn
ZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZCBwc2V1ZG8sIGNvbnN0IFJlbmRlclN0eWxlKiBw
YXJlbnRTdHlsZSkgY29uc3QKIHsKLSAgICBpZiAocHNldWRvIDwgRklSU1RfSU5URVJOQUxfUFNF
VURPSUQgJiYgIXN0eWxlKCkuaGFzUHNldWRvU3R5bGUocHNldWRvKSkKKyAgICBpZiAocHNldWRv
IDwgUHNldWRvSWQ6OkZpcnN0SW50ZXJuYWxQc2V1ZG9JZCAmJiAhc3R5bGUoKS5oYXNQc2V1ZG9T
dHlsZShwc2V1ZG8pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlbmRlclN0eWxl
KiBjYWNoZWRTdHlsZSA9IHN0eWxlKCkuZ2V0Q2FjaGVkUHNldWRvU3R5bGUocHNldWRvKTsKQEAg
LTEzMzUsNyArMTMzNSw3IEBAIGNvbnN0IFJlbmRlclN0eWxlKiBSZW5kZXJFbGVtZW50OjpnZXRD
YWMKIAogc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5kZXJFbGVtZW50OjpnZXRVbmNh
Y2hlZFBzZXVkb1N0eWxlKGNvbnN0IFBzZXVkb1N0eWxlUmVxdWVzdCYgcHNldWRvU3R5bGVSZXF1
ZXN0LCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBv
d25TdHlsZSkgY29uc3QKIHsKLSAgICBpZiAocHNldWRvU3R5bGVSZXF1ZXN0LnBzZXVkb0lkIDwg
RklSU1RfSU5URVJOQUxfUFNFVURPSUQgJiYgIW93blN0eWxlICYmICFzdHlsZSgpLmhhc1BzZXVk
b1N0eWxlKHBzZXVkb1N0eWxlUmVxdWVzdC5wc2V1ZG9JZCkpCisgICAgaWYgKHBzZXVkb1N0eWxl
UmVxdWVzdC5wc2V1ZG9JZCA8IFBzZXVkb0lkOjpGaXJzdEludGVybmFsUHNldWRvSWQgJiYgIW93
blN0eWxlICYmICFzdHlsZSgpLmhhc1BzZXVkb1N0eWxlKHBzZXVkb1N0eWxlUmVxdWVzdC5wc2V1
ZG9JZCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFwYXJlbnRTdHlsZSkg
ewpAQCAtMTM4NCwxMSArMTM4NCwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJl
bmRlckVsZW1lCiAgICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSBlbGVtZW50KCktPmNvbnRhaW5p
bmdTaGFkb3dSb290KCkpIHsKICAgICAgICAgaWYgKHJvb3QtPm1vZGUoKSA9PSBTaGFkb3dSb290
TW9kZTo6VXNlckFnZW50KSB7CiAgICAgICAgICAgICBpZiAoRWxlbWVudCogc2hhZG93SG9zdCA9
IGVsZW1lbnQoKS0+c2hhZG93SG9zdCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBzaGFkb3dI
b3N0LT5yZW5kZXJlcigpLT5nZXRVbmNhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb1N0eWxlUmVxdWVz
dChTRUxFQ1RJT04pKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc2hhZG93SG9zdC0+cmVuZGVy
ZXIoKS0+Z2V0VW5jYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9TdHlsZVJlcXVlc3QoUHNldWRvSWQ6
OlNlbGVjdGlvbikpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGdldFVuY2FjaGVk
UHNldWRvU3R5bGUoUHNldWRvU3R5bGVSZXF1ZXN0KFNFTEVDVElPTikpOworICAgIHJldHVybiBn
ZXRVbmNhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb1N0eWxlUmVxdWVzdChQc2V1ZG9JZDo6U2VsZWN0
aW9uKSk7CiB9CiAKIENvbG9yIFJlbmRlckVsZW1lbnQ6OnNlbGVjdGlvbkZvcmVncm91bmRDb2xv
cigpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgJ
KHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw3ICsxNDAsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS5vcGFjaXR5KCkgPCAxLjBm
OyB9CiAgICAgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCkub3BhY2l0eSgp
OyB9CiAKLSAgICBib29sIHZpc2libGVUb0hpdFRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBzdHls
ZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFICYmIHN0eWxlKCkucG9pbnRlckV2ZW50cygpICE9
IFBFX05PTkU7IH0KKyAgICBib29sIHZpc2libGVUb0hpdFRlc3RpbmcoKSBjb25zdCB7IHJldHVy
biBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmIHN0eWxlKCku
cG9pbnRlckV2ZW50cygpICE9IFBvaW50ZXJFdmVudHM6Ok5vbmU7IH0KIAogICAgIGJvb2wgaGFz
QmFja2dyb3VuZCgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCkuaGFzQmFja2dyb3VuZCgpOyB9CiAg
ICAgYm9vbCBoYXNNYXNrKCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS5oYXNNYXNrKCk7IH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRD
b250cm9sLmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDcgKzEx
NCw3IEBAIGludCBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6bWF4RmlsZW5hbWUKIAogdm9pZCBS
ZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKLSAgICBpZiAoc3R5bGUoKS52aXNp
YmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlz
aWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIFB1c2ggYSBj
bGlwLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVu
LmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZ1bGxTY3JlZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIHN0YXRpYyBS
ZW5kZXJTdHlsZSBjcmVhdGVGdWxsU2NyZWVuU3R5bGUKICAgICBmdWxsc2NyZWVuU3R5bGUuc2V0
Rm9udERlc2NyaXB0aW9uKHsgfSk7CiAgICAgZnVsbHNjcmVlblN0eWxlLmZvbnRDYXNjYWRlKCku
dXBkYXRlKG51bGxwdHIpOwogCi0gICAgZnVsbHNjcmVlblN0eWxlLnNldERpc3BsYXkoRkxFWCk7
CisgICAgZnVsbHNjcmVlblN0eWxlLnNldERpc3BsYXkoRGlzcGxheVR5cGU6OkZsZXgpOwogICAg
IGZ1bGxzY3JlZW5TdHlsZS5zZXRKdXN0aWZ5Q29udGVudFBvc2l0aW9uKENvbnRlbnRQb3NpdGlv
bjo6Q2VudGVyKTsKICAgICBmdWxsc2NyZWVuU3R5bGUuc2V0QWxpZ25JdGVtc1Bvc2l0aW9uKEl0
ZW1Qb3NpdGlvbjo6Q2VudGVyKTsKICAgICBmdWxsc2NyZWVuU3R5bGUuc2V0RmxleERpcmVjdGlv
bihGbGV4RGlyZWN0aW9uOjpDb2x1bW4pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckdyaWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHcmlkLmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckdyaWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjQsOCArNTI0LDggQEAgdW5z
aWduZWQgUmVuZGVyR3JpZDo6Y29tcHV0ZUF1dG9SZXBlYXRUcgogc3RkOjp1bmlxdWVfcHRyPE9y
ZGVyZWRUcmFja0luZGV4U2V0PiBSZW5kZXJHcmlkOjpjb21wdXRlRW1wdHlUcmFja3NGb3JBdXRv
UmVwZWF0KEdyaWQmIGdyaWQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNv
bnN0CiB7CiAgICAgYm9vbCBpc1Jvd0F4aXMgPSBkaXJlY3Rpb24gPT0gRm9yQ29sdW1uczsKLSAg
ICBpZiAoKGlzUm93QXhpcyAmJiBzdHlsZSgpLmdyaWRBdXRvUmVwZWF0Q29sdW1uc1R5cGUoKSAh
PSBBdXRvRml0KQotICAgICAgICB8fCAoIWlzUm93QXhpcyAmJiBzdHlsZSgpLmdyaWRBdXRvUmVw
ZWF0Um93c1R5cGUoKSAhPSBBdXRvRml0KSkKKyAgICBpZiAoKGlzUm93QXhpcyAmJiBzdHlsZSgp
LmdyaWRBdXRvUmVwZWF0Q29sdW1uc1R5cGUoKSAhPSBBdXRvUmVwZWF0VHlwZTo6Rml0KQorICAg
ICAgICB8fCAoIWlzUm93QXhpcyAmJiBzdHlsZSgpLmdyaWRBdXRvUmVwZWF0Um93c1R5cGUoKSAh
PSBBdXRvUmVwZWF0VHlwZTo6Rml0KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+IGVtcHR5VHJhY2tJbmRleGVzOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCShyZXZpc2lvbiAy
MzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOTcsNyArMjk3LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cmVwYWludE9y
TWFya0ZvckxheW91dAogewogI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElPTikKICAgICBk
b3VibGUgc2NhbGUgPSBzdHlsZSgpLmltYWdlUmVzb2x1dGlvbigpOwotICAgIGlmIChzdHlsZSgp
LmltYWdlUmVzb2x1dGlvblNuYXAoKSA9PSBJbWFnZVJlc29sdXRpb25TbmFwUGl4ZWxzKQorICAg
IGlmIChzdHlsZSgpLmltYWdlUmVzb2x1dGlvblNuYXAoKSA9PSBJbWFnZVJlc29sdXRpb25TbmFw
OjpQaXhlbHMpCiAgICAgICAgIHNjYWxlID0gcm91bmRGb3JJbXByZWNpc2VDb252ZXJzaW9uPGlu
dD4oc2NhbGUpOwogICAgIGlmIChzY2FsZSA8PSAwKQogICAgICAgICBzY2FsZSA9IDE7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAkocmV2aXNpb24gMjMy
MTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OndpbGxCZURlc3Ry
b3llZCgpCiB7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIC8vIE1ha2Ugc3VyZSB3ZSBkbyBu
b3QgcmV0YWluICJ0aGlzIiBpbiB0aGUgY29udGludWF0aW9uIG91dGxpbmUgdGFibGUgbWFwIG9m
IG91ciBjb250YWluaW5nIGJsb2Nrcy4KLSAgICBpZiAocGFyZW50KCkgJiYgc3R5bGUoKS52aXNp
YmlsaXR5KCkgPT0gVklTSUJMRSAmJiBoYXNPdXRsaW5lKCkpIHsKKyAgICBpZiAocGFyZW50KCkg
JiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiBoYXNPdXRs
aW5lKCkpIHsKICAgICAgICAgYm9vbCBjb250YWluaW5nQmxvY2tQYWludHNDb250aW51YXRpb25P
dXRsaW5lID0gY29udGludWF0aW9uKCkgfHwgaXNDb250aW51YXRpb24oKTsKICAgICAgICAgaWYg
KGNvbnRhaW5pbmdCbG9ja1BhaW50c0NvbnRpbnVhdGlvbk91dGxpbmUpIHsKICAgICAgICAgICAg
IGlmIChSZW5kZXJCbG9jayogY2IgPSBjb250YWluaW5nQmxvY2soKSkgewpAQCAtMTQ4LDcgKzE0
OCw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVN0eWxlT2ZBbm9ueW1vdXNCbG9ja0MKICAgICAgICAg
UmVuZGVySW5saW5lKiBjb250aW51YXRpb24gPSBibG9jay5pbmxpbmVDb250aW51YXRpb24oKTsK
ICAgICAgICAgaWYgKG9sZFN0eWxlLT5oYXNJbkZsb3dQb3NpdGlvbigpICYmIGluRmxvd1Bvc2l0
aW9uZWRJbmxpbmVBbmNlc3Rvcihjb250aW51YXRpb24pKQogICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIGF1dG8gYmxvY2tTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNT
dHlsZVdpdGhEaXNwbGF5KGJsb2NrLnN0eWxlKCksIEJMT0NLKTsKKyAgICAgICAgYXV0byBibG9j
a1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoYmxv
Y2suc3R5bGUoKSwgRGlzcGxheVR5cGU6OkJsb2NrKTsKICAgICAgICAgYmxvY2tTdHlsZS5zZXRQ
b3NpdGlvbihuZXdTdHlsZS0+cG9zaXRpb24oKSk7CiAgICAgICAgIGJsb2NrLnNldFN0eWxlKFdU
Rk1vdmUoYmxvY2tTdHlsZSkpOwogICAgIH0KQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIFJlbmRl
cklubGluZTo6dXBkYXRlQWx3YXlzQ3JlYXRlTGluCiAgICAgYm9vbCBhbHdheXNDcmVhdGVMaW5l
Qm94ZXMgPSAocGFyZW50UmVuZGVySW5saW5lICYmIHBhcmVudFJlbmRlcklubGluZS0+YWx3YXlz
Q3JlYXRlTGluZUJveGVzKCkpCiAgICAgICAgIHx8IChwYXJlbnRSZW5kZXJJbmxpbmUgJiYgcGFy
ZW50U3R5bGUtPnZlcnRpY2FsQWxpZ24oKSAhPSBWZXJ0aWNhbEFsaWduOjpCYXNlbGluZSkKICAg
ICAgICAgfHwgc3R5bGUoKS52ZXJ0aWNhbEFsaWduKCkgIT0gVmVydGljYWxBbGlnbjo6QmFzZWxp
bmUKLSAgICAgICAgfHwgc3R5bGUoKS50ZXh0RW1waGFzaXNNYXJrKCkgIT0gVGV4dEVtcGhhc2lz
TWFya05vbmUKKyAgICAgICAgfHwgc3R5bGUoKS50ZXh0RW1waGFzaXNNYXJrKCkgIT0gVGV4dEVt
cGhhc2lzTWFyazo6Tm9uZQogICAgICAgICB8fCAoY2hlY2tGb250cyAmJiAoIXBhcmVudFN0eWxl
LT5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzKCkuaGFzSWRlbnRpY2FsQXNjZW50RGVzY2VudEFu
ZExpbmVHYXAoc3R5bGUoKS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzKCkpCiAgICAgICAgIHx8
IHBhcmVudFN0eWxlLT5saW5lSGVpZ2h0KCkgIT0gc3R5bGUoKS5saW5lSGVpZ2h0KCkpKTsKIApA
QCAtODE4LDcgKzgxOCw3IEBAIExheW91dFJlY3QgUmVuZGVySW5saW5lOjpsaW5lc1Zpc3VhbE92
ZXIKIExheW91dFJlY3QgUmVuZGVySW5saW5lOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWlu
dChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAog
ewogICAgIC8vIE9ubHkgZmlyc3QtbGV0dGVyIHJlbmRlcmVycyBhcmUgYWxsb3dlZCBpbiBoZXJl
IGR1cmluZyBsYXlvdXQuIFRoZXkgbXV0YXRlIHRoZSB0cmVlIHRyaWdnZXJpbmcgcmVwYWludHMu
Ci0gICAgQVNTRVJUKCF2aWV3KCkuZnJhbWVWaWV3KCkubGF5b3V0Q29udGV4dCgpLmlzUGFpbnRP
ZmZzZXRDYWNoZUVuYWJsZWQoKSB8fCBzdHlsZSgpLnN0eWxlVHlwZSgpID09IEZJUlNUX0xFVFRF
UiB8fCBoYXNTZWxmUGFpbnRpbmdMYXllcigpKTsKKyAgICBBU1NFUlQoIXZpZXcoKS5mcmFtZVZp
ZXcoKS5sYXlvdXRDb250ZXh0KCkuaXNQYWludE9mZnNldENhY2hlRW5hYmxlZCgpIHx8IHN0eWxl
KCkuc3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6OkZpcnN0TGV0dGVyIHx8IGhhc1NlbGZQYWludGlu
Z0xheWVyKCkpOwogCiAgICAgaWYgKCFmaXJzdExpbmVCb3hJbmNsdWRpbmdDdWxsaW5nKCkgJiYg
IWNvbnRpbnVhdGlvbigpKQogICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwpAQCAtMTM4Nyw3
ICsxMzg3LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoRwogdm9p
ZCBSZW5kZXJJbmxpbmU6OmFkZEFubm90YXRlZFJlZ2lvbnMoVmVjdG9yPEFubm90YXRlZFJlZ2lv
blZhbHVlPiYgcmVnaW9ucykKIHsKICAgICAvLyBDb252ZXJ0IHRoZSBzdHlsZSByZWdpb25zIHRv
IGFic29sdXRlIGNvb3JkaW5hdGVzLgotICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBW
SVNJQkxFKQorICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNp
YmxlKQogICAgICAgICByZXR1cm47CiAKICAgICBjb25zdCBWZWN0b3I8U3R5bGVEYXNoYm9hcmRS
ZWdpb24+JiBzdHlsZVJlZ2lvbnMgPSBzdHlsZSgpLmRhc2hib2FyZFJlZ2lvbnMoKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNpb24gMjMyMTQz
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzM1LDcgKzMzNSw3IEBAIFJlbmRlckxheWVyOjpSZW5kZXJMYXllcihSZW5kZXJM
YXllck1vZGUKIAogICAgIGlmICghcmVuZGVyZXIoKS5maXJzdENoaWxkKCkpIHsKICAgICAgICAg
bV92aXNpYmxlQ29udGVudFN0YXR1c0RpcnR5ID0gZmFsc2U7Ci0gICAgICAgIG1faGFzVmlzaWJs
ZUNvbnRlbnQgPSByZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEU7Cisg
ICAgICAgIG1faGFzVmlzaWJsZUNvbnRlbnQgPSByZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0
eSgpID09IFZpc2liaWxpdHk6OlZpc2libGU7CiAgICAgfQogCiAgICAgaWYgKEVsZW1lbnQqIGVs
ZW1lbnQgPSByZW5kZXJlcigpLmVsZW1lbnQoKSkgewpAQCAtMTI2NCwxNCArMTI2NCwxNCBAQCB2
b2lkIFJlbmRlckxheWVyOjp1cGRhdGVEZXNjZW5kYW50RGVwZW5kCiAgICAgfQogCiAgICAgaWYg
KG1fdmlzaWJsZUNvbnRlbnRTdGF0dXNEaXJ0eSkgewotICAgICAgICBpZiAocmVuZGVyZXIoKS5z
dHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKQorICAgICAgICBpZiAocmVuZGVyZXIoKS5z
dHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICAgICAg
bV9oYXNWaXNpYmxlQ29udGVudCA9IHRydWU7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
Ly8gbGF5ZXIgbWF5IGJlIGhpZGRlbiBidXQgc3RpbGwgaGF2ZSBzb21lIHZpc2libGUgY29udGVu
dCwgY2hlY2sgZm9yIHRoaXMKICAgICAgICAgICAgIG1faGFzVmlzaWJsZUNvbnRlbnQgPSBmYWxz
ZTsKICAgICAgICAgICAgIFJlbmRlck9iamVjdCogciA9IHJlbmRlcmVyKCkuZmlyc3RDaGlsZCgp
OwogICAgICAgICAgICAgd2hpbGUgKHIpIHsKLSAgICAgICAgICAgICAgICBpZiAoci0+c3R5bGUo
KS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSAmJiAhci0+aGFzTGF5ZXIoKSkgeworICAgICAgICAg
ICAgICAgIGlmIChyLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxl
ICYmICFyLT5oYXNMYXllcigpKSB7CiAgICAgICAgICAgICAgICAgICAgIG1faGFzVmlzaWJsZUNv
bnRlbnQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICB9CkBAIC0zMTQ4LDcgKzMxNDgsNyBAQCBSZWY8U2Nyb2xsYmFyPiBSZW5kZXJMYXllcjo6Y3Jl
YXRlU2Nyb2xsCiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gd2lkZ2V0OwogICAgIEFTU0VSVChyZW5k
ZXJlckZvclNjcm9sbGJhcihyZW5kZXJlcigpKSk7CiAgICAgYXV0byYgYWN0dWFsUmVuZGVyZXIg
PSAqcmVuZGVyZXJGb3JTY3JvbGxiYXIocmVuZGVyZXIoKSk7Ci0gICAgYm9vbCBoYXNDdXN0b21T
Y3JvbGxiYXJTdHlsZSA9IGlzPFJlbmRlckJveD4oYWN0dWFsUmVuZGVyZXIpICYmIGRvd25jYXN0
PFJlbmRlckJveD4oYWN0dWFsUmVuZGVyZXIpLnN0eWxlKCkuaGFzUHNldWRvU3R5bGUoU0NST0xM
QkFSKTsKKyAgICBib29sIGhhc0N1c3RvbVNjcm9sbGJhclN0eWxlID0gaXM8UmVuZGVyQm94Pihh
Y3R1YWxSZW5kZXJlcikgJiYgZG93bmNhc3Q8UmVuZGVyQm94PihhY3R1YWxSZW5kZXJlcikuc3R5
bGUoKS5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6U2Nyb2xsYmFyKTsKICAgICBpZiAoaGFzQ3Vz
dG9tU2Nyb2xsYmFyU3R5bGUpCiAgICAgICAgIHdpZGdldCA9IFJlbmRlclNjcm9sbGJhcjo6Y3Jl
YXRlQ3VzdG9tU2Nyb2xsYmFyKCp0aGlzLCBvcmllbnRhdGlvbiwgZG93bmNhc3Q8UmVuZGVyQm94
PihhY3R1YWxSZW5kZXJlcikuZWxlbWVudCgpKTsKICAgICBlbHNlIHsKQEAgLTM0NjYsMTQgKzM0
NjYsMTQgQEAgYm9vbCBSZW5kZXJMYXllcjo6aGFzVmVydGljYWxPdmVyZmxvdygpIAogc3RhdGlj
IGJvb2wgc3R5bGVSZXF1aXJlc1Njcm9sbGJhcihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIFNj
cm9sbGJhck9yaWVudGF0aW9uIGF4aXMpCiB7CiAgICAgT3ZlcmZsb3cgb3ZlcmZsb3cgPSBheGlz
ID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsU2Nyb2xsYmFyID8gc3R5bGUub3Zl
cmZsb3dYKCkgOiBzdHlsZS5vdmVyZmxvd1koKTsKLSAgICBib29sIG92ZXJmbG93U2Nyb2xsQWN0
c0xpa2VBdXRvID0gb3ZlcmZsb3cgPT0gT3ZlcmZsb3c6OlNjcm9sbCAmJiAhc3R5bGUuaGFzUHNl
dWRvU3R5bGUoU0NST0xMQkFSKSAmJiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS51c2VzT3Zlcmxh
eVNjcm9sbGJhcnMoKTsKKyAgICBib29sIG92ZXJmbG93U2Nyb2xsQWN0c0xpa2VBdXRvID0gb3Zl
cmZsb3cgPT0gT3ZlcmZsb3c6OlNjcm9sbCAmJiAhc3R5bGUuaGFzUHNldWRvU3R5bGUoUHNldWRv
SWQ6OlNjcm9sbGJhcikgJiYgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkudXNlc092ZXJsYXlTY3Jv
bGxiYXJzKCk7CiAgICAgcmV0dXJuIG92ZXJmbG93ID09IE92ZXJmbG93OjpTY3JvbGwgJiYgIW92
ZXJmbG93U2Nyb2xsQWN0c0xpa2VBdXRvOwogfQogCiBzdGF0aWMgYm9vbCBzdHlsZURlZmluZXNB
dXRvbWF0aWNTY3JvbGxiYXIoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBTY3JvbGxiYXJPcmll
bnRhdGlvbiBheGlzKQogewogICAgIE92ZXJmbG93IG92ZXJmbG93ID0gYXhpcyA9PSBTY3JvbGxi
YXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbFNjcm9sbGJhciA/IHN0eWxlLm92ZXJmbG93WCgpIDog
c3R5bGUub3ZlcmZsb3dZKCk7Ci0gICAgYm9vbCBvdmVyZmxvd1Njcm9sbEFjdHNMaWtlQXV0byA9
IG92ZXJmbG93ID09IE92ZXJmbG93OjpTY3JvbGwgJiYgIXN0eWxlLmhhc1BzZXVkb1N0eWxlKFND
Uk9MTEJBUikgJiYgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkudXNlc092ZXJsYXlTY3JvbGxiYXJz
KCk7CisgICAgYm9vbCBvdmVyZmxvd1Njcm9sbEFjdHNMaWtlQXV0byA9IG92ZXJmbG93ID09IE92
ZXJmbG93OjpTY3JvbGwgJiYgIXN0eWxlLmhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkOjpTY3JvbGxi
YXIpICYmIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLnVzZXNPdmVybGF5U2Nyb2xsYmFycygpOwog
ICAgIHJldHVybiBvdmVyZmxvdyA9PSBPdmVyZmxvdzo6QXV0byB8fCBvdmVyZmxvdyA9PSBPdmVy
Zmxvdzo6T3ZlcmxheSB8fCBvdmVyZmxvd1Njcm9sbEFjdHNMaWtlQXV0bzsKIH0KIApAQCAtNDA5
NCwyMyArNDA5NCwyMyBAQCBzdGF0aWMgaW5saW5lIExheW91dFJlY3QgY29tcHV0ZVJlZmVyZW5j
CiAgICAgTGF5b3V0UmVjdCByZWZlcmVuY2VCb3g7CiAgICAgY29uc3QgYXV0byYgYm94ID0gZG93
bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlcik7CiAgICAgc3dpdGNoIChjbGlwcGluZ1BhdGgucmVm
ZXJlbmNlQm94KCkpIHsKLSAgICBjYXNlIENvbnRlbnRCb3g6CisgICAgY2FzZSBDU1NCb3hUeXBl
OjpDb250ZW50Qm94OgogICAgICAgICByZWZlcmVuY2VCb3ggPSBib3guY29udGVudEJveFJlY3Qo
KTsKICAgICAgICAgcmVmZXJlbmNlQm94Lm1vdmUob2Zmc2V0RnJvbVJvb3QpOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFBhZGRpbmdCb3g6CisgICAgY2FzZSBDU1NCb3hUeXBlOjpQYWRkaW5n
Qm94OgogICAgICAgICByZWZlcmVuY2VCb3ggPSBib3gucGFkZGluZ0JveFJlY3QoKTsKICAgICAg
ICAgcmVmZXJlbmNlQm94Lm1vdmUob2Zmc2V0RnJvbVJvb3QpOwogICAgICAgICBicmVhazsKICAg
ICAvLyBGSVhNRTogU3VwcG9ydCBtYXJnaW4tYm94LiBVc2UgYm91bmRpbmcgY2xpZW50IHJlY3Qg
Zm9yIG5vdy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTI3OTg0Ci0gICAgY2FzZSBNYXJnaW5Cb3g6CisgICAgY2FzZSBDU1NCb3hUeXBlOjpNYXJnaW5C
b3g6CiAgICAgLy8gZmlsbCwgc3Ryb2tlLCB2aWV3LWJveCBjb21wdXRlIHRvIGJvcmRlci1ib3gg
Zm9yIEhUTUwgZWxlbWVudHMuCi0gICAgY2FzZSBGaWxsOgotICAgIGNhc2UgU3Ryb2tlOgotICAg
IGNhc2UgVmlld0JveDoKLSAgICBjYXNlIEJvcmRlckJveDoKLSAgICBjYXNlIEJveE1pc3Npbmc6
CisgICAgY2FzZSBDU1NCb3hUeXBlOjpGaWxsOgorICAgIGNhc2UgQ1NTQm94VHlwZTo6U3Ryb2tl
OgorICAgIGNhc2UgQ1NTQm94VHlwZTo6Vmlld0JveDoKKyAgICBjYXNlIENTU0JveFR5cGU6OkJv
cmRlckJveDoKKyAgICBjYXNlIENTU0JveFR5cGU6OkJveE1pc3Npbmc6CiAgICAgICAgIHJlZmVy
ZW5jZUJveCA9IGJveC5ib3JkZXJCb3hSZWN0KCk7CiAgICAgICAgIHJlZmVyZW5jZUJveC5tb3Zl
KG9mZnNldEZyb21Sb290KTsKICAgICAgICAgYnJlYWs7CkBAIC02MDQxLDcgKzYwNDEsNyBAQCBi
b29sIFJlbmRlckxheWVyOjpiYWNrZ3JvdW5kSXNLbm93blRvQmVPCiAKICAgICAvLyBXZSBjYW4n
dCB1c2UgaGFzVmlzaWJsZUNvbnRlbnQoKSwgYmVjYXVzZSB0aGF0IHdpbGwgYmUgdHJ1ZSBpZiBv
dXIgcmVuZGVyZXIgaXMgaGlkZGVuLCBidXQgc29tZSBjaGlsZAogICAgIC8vIGlzIHZpc2libGUg
YW5kIHRoYXQgY2hpbGQgZG9lc24ndCBjb3ZlciB0aGUgZW50aXJlIHJlY3QuCi0gICAgaWYgKHJl
bmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAocmVuZGVy
ZXIoKS5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAocGFpbnRzV2l0aEZpbHRlcnMoKSAmJiByZW5kZXJl
cigpLnN0eWxlKCkuZmlsdGVyKCkuaGFzRmlsdGVyVGhhdEFmZmVjdHNPcGFjaXR5KCkpCkBAIC02
NzMwLDcgKzY3MzAsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVTY3JvbGxhYmxlQXJlYVNl
CiB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVTY3JvbGxDb3JuZXJTdHlsZSgpCiB7CiAgICAgUmVu
ZGVyRWxlbWVudCogYWN0dWFsUmVuZGVyZXIgPSByZW5kZXJlckZvclNjcm9sbGJhcihyZW5kZXJl
cigpKTsKLSAgICBhdXRvIGNvcm5lciA9IHJlbmRlcmVyKCkuaGFzT3ZlcmZsb3dDbGlwKCkgPyBh
Y3R1YWxSZW5kZXJlci0+Z2V0VW5jYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9TdHlsZVJlcXVlc3Qo
U0NST0xMQkFSX0NPUk5FUiksICZhY3R1YWxSZW5kZXJlci0+c3R5bGUoKSkgOiBudWxscHRyOwor
ICAgIGF1dG8gY29ybmVyID0gcmVuZGVyZXIoKS5oYXNPdmVyZmxvd0NsaXAoKSA/IGFjdHVhbFJl
bmRlcmVyLT5nZXRVbmNhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb1N0eWxlUmVxdWVzdChQc2V1ZG9J
ZDo6U2Nyb2xsYmFyQ29ybmVyKSwgJmFjdHVhbFJlbmRlcmVyLT5zdHlsZSgpKSA6IG51bGxwdHI7
CiAKICAgICBpZiAoIWNvcm5lcikgewogICAgICAgICBjbGVhclNjcm9sbENvcm5lcigpOwpAQCAt
Njc1Nyw3ICs2NzU3LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y2xlYXJTY3JvbGxDb3JuZXIoKQog
dm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlUmVzaXplclN0eWxlKCkKIHsKICAgICBSZW5kZXJFbGVt
ZW50KiBhY3R1YWxSZW5kZXJlciA9IHJlbmRlcmVyRm9yU2Nyb2xsYmFyKHJlbmRlcmVyKCkpOwot
ICAgIGF1dG8gcmVzaXplciA9IHJlbmRlcmVyKCkuaGFzT3ZlcmZsb3dDbGlwKCkgPyBhY3R1YWxS
ZW5kZXJlci0+Z2V0VW5jYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9TdHlsZVJlcXVlc3QoUkVTSVpF
UiksICZhY3R1YWxSZW5kZXJlci0+c3R5bGUoKSkgOiBudWxscHRyOworICAgIGF1dG8gcmVzaXpl
ciA9IHJlbmRlcmVyKCkuaGFzT3ZlcmZsb3dDbGlwKCkgPyBhY3R1YWxSZW5kZXJlci0+Z2V0VW5j
YWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9TdHlsZVJlcXVlc3QoUHNldWRvSWQ6OlJlc2l6ZXIpLCAm
YWN0dWFsUmVuZGVyZXItPnN0eWxlKCkpIDogbnVsbHB0cjsKIAogICAgIGlmICghcmVzaXplcikg
ewogICAgICAgICBjbGVhclJlc2l6ZXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTIzOSw4ICsxMjM5LDggQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUFm
dGVyRGVzYwogCiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1Zpc2libGUobV9vd25p
bmdMYXllci5oYXNWaXNpYmxlQ29udGVudCgpIHx8IGhhc1Zpc2libGVOb25Db21wb3NpdGVkRGVz
Y2VuZGFudHMoKSk7CiAgICAgaWYgKG1fc2Nyb2xsaW5nTGF5ZXIpIHsKLSAgICAgICAgbV9zY3Jv
bGxpbmdMYXllci0+c2V0Q29udGVudHNWaXNpYmxlKHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmls
aXR5KCkgPT0gVklTSUJMRSk7Ci0gICAgICAgIG1fc2Nyb2xsaW5nTGF5ZXItPnNldFVzZXJJbnRl
cmFjdGlvbkVuYWJsZWQocmVuZGVyZXIoKS5zdHlsZSgpLnBvaW50ZXJFdmVudHMoKSAhPSBQRV9O
T05FKTsKKyAgICAgICAgbV9zY3JvbGxpbmdMYXllci0+c2V0Q29udGVudHNWaXNpYmxlKHJlbmRl
cmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSk7CisgICAg
ICAgIG1fc2Nyb2xsaW5nTGF5ZXItPnNldFVzZXJJbnRlcmFjdGlvbkVuYWJsZWQocmVuZGVyZXIo
KS5zdHlsZSgpLnBvaW50ZXJFdmVudHMoKSAhPSBQb2ludGVyRXZlbnRzOjpOb25lKTsKICAgICB9
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEyLDgg
KzUxMiw4IEBAIHN0YXRpYyBib29sIHNjcm9sbGJhckhhc0Rpc3BsYXlOb25lKFNjcm8KICAgICBp
ZiAoIXNjcm9sbGJhciB8fCAhc2Nyb2xsYmFyLT5pc0N1c3RvbVNjcm9sbGJhcigpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHNjcm9s
bGJhclN0eWxlID0gc3RhdGljX2Nhc3Q8UmVuZGVyU2Nyb2xsYmFyKj4oc2Nyb2xsYmFyKS0+Z2V0
U2Nyb2xsYmFyUHNldWRvU3R5bGUoU2Nyb2xsYmFyQkdQYXJ0LCBTQ1JPTExCQVIpOwotICAgIHJl
dHVybiBzY3JvbGxiYXJTdHlsZSAmJiBzY3JvbGxiYXJTdHlsZS0+ZGlzcGxheSgpID09IE5PTkU7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzY3JvbGxiYXJTdHlsZSA9IHN0YXRp
Y19jYXN0PFJlbmRlclNjcm9sbGJhcio+KHNjcm9sbGJhciktPmdldFNjcm9sbGJhclBzZXVkb1N0
eWxlKFNjcm9sbGJhckJHUGFydCwgUHNldWRvSWQ6OlNjcm9sbGJhcik7CisgICAgcmV0dXJuIHNj
cm9sbGJhclN0eWxlICYmIHNjcm9sbGJhclN0eWxlLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6
Ok5vbmU7CiB9CiAKIC8vIEZJWE1FOiBDYW4gd2UgbWFrZSB8bGF5ZXJ8IGNvbnN0IFJlbmRlckxh
eWVyJj8KQEAgLTI0MzIsNyArMjQzMiw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpy
ZXF1aXJlc0NvbXAKICAgICBtX3JlZXZhbHVhdGVDb21wb3NpdGluZ0FmdGVyTGF5b3V0ID0gdHJ1
ZTsKICAgICAKICAgICBhdXRvJiBwbHVnaW5SZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlcldpZGdl
dD4ocmVuZGVyZXIpOwotICAgIGlmIChwbHVnaW5SZW5kZXJlci5zdHlsZSgpLnZpc2liaWxpdHko
KSAhPSBWSVNJQkxFKQorICAgIGlmIChwbHVnaW5SZW5kZXJlci5zdHlsZSgpLnZpc2liaWxpdHko
KSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAv
LyBJZiB3ZSBjYW4ndCByZWxpYWJseSBrbm93IHRoZSBzaXplIG9mIHRoZSBwbHVnaW4geWV0LCBk
b24ndCBjaGFuZ2UgY29tcG9zaXRpbmcgc3RhdGUuCkBAIC0yNDUwLDcgKzI0NTAsNyBAQCBib29s
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIGF1dG8mIGZyYW1lUmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJXaWRnZXQ+KHJl
bmRlcmVyKTsKLSAgICBpZiAoZnJhbWVSZW5kZXJlci5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBW
SVNJQkxFKQorICAgIGlmIChmcmFtZVJlbmRlcmVyLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZp
c2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghZnJh
bWVSZW5kZXJlci5yZXF1aXJlc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAJKHJldmlzaW9uIDIzMjE0MykK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzEwLDcgKzMxMCw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtKFBh
aW50SW5mbyYKIAogdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludE9iamVjdChQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewotICAgIGlmIChzdHls
ZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHko
KSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgaWYg
KHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCkgewpAQCAtMzg2LDE3ICsz
ODYsMTcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludFNjcm9sbGJhcihQYWludAogCiBzdGF0
aWMgTGF5b3V0U2l6ZSBpdGVtT2Zmc2V0Rm9yQWxpZ25tZW50KFRleHRSdW4gdGV4dFJ1biwgY29u
c3QgUmVuZGVyU3R5bGUqIGl0ZW1TdHlsZSwgRm9udENhc2NhZGUgaXRlbUZvbnQsIExheW91dFJl
Y3QgaXRlbUJvdWRpbmdCb3gpCiB7Ci0gICAgRVRleHRBbGlnbiBhY3R1YWxBbGlnbm1lbnQgPSBp
dGVtU3R5bGUtPnRleHRBbGlnbigpOwotICAgIC8vIEZJWE1FOiBGaXJlZm94IGRvZXNuJ3QgcmVz
cGVjdCBKVVNUSUZZLiBTaG91bGQgd2U/Ci0gICAgLy8gRklYTUU6IEhhbmRsZSBUQUVORCBoZXJl
Ci0gICAgaWYgKGFjdHVhbEFsaWdubWVudCA9PSBUQVNUQVJUIHx8IGFjdHVhbEFsaWdubWVudCA9
PSBKVVNUSUZZKQotICAgICAgYWN0dWFsQWxpZ25tZW50ID0gaXRlbVN0eWxlLT5pc0xlZnRUb1Jp
Z2h0RGlyZWN0aW9uKCkgPyBMRUZUIDogUklHSFQ7CisgICAgVGV4dEFsaWduTW9kZSBhY3R1YWxB
bGlnbm1lbnQgPSBpdGVtU3R5bGUtPnRleHRBbGlnbigpOworICAgIC8vIEZJWE1FOiBGaXJlZm94
IGRvZXNuJ3QgcmVzcGVjdCBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5LiBTaG91bGQgd2U/CisgICAg
Ly8gRklYTUU6IEhhbmRsZSBUZXh0QWxpZ25Nb2RlOjpFbmQgaGVyZQorICAgIGlmIChhY3R1YWxB
bGlnbm1lbnQgPT0gVGV4dEFsaWduTW9kZTo6U3RhcnQgfHwgYWN0dWFsQWxpZ25tZW50ID09IFRl
eHRBbGlnbk1vZGU6Okp1c3RpZnkpCisgICAgICAgIGFjdHVhbEFsaWdubWVudCA9IGl0ZW1TdHls
ZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gVGV4dEFsaWduTW9kZTo6TGVmdCA6IFRleHRB
bGlnbk1vZGU6OlJpZ2h0OwogCiAgICAgTGF5b3V0U2l6ZSBvZmZzZXQgPSBMYXlvdXRTaXplKDAs
IGl0ZW1Gb250LmZvbnRNZXRyaWNzKCkuYXNjZW50KCkpOwotICAgIGlmIChhY3R1YWxBbGlnbm1l
bnQgPT0gUklHSFQgfHwgYWN0dWFsQWxpZ25tZW50ID09IFdFQktJVF9SSUdIVCkgeworICAgIGlm
IChhY3R1YWxBbGlnbm1lbnQgPT0gVGV4dEFsaWduTW9kZTo6UmlnaHQgfHwgYWN0dWFsQWxpZ25t
ZW50ID09IFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0KSB7CiAgICAgICAgIGZsb2F0IHRleHRX
aWR0aCA9IGl0ZW1Gb250LndpZHRoKHRleHRSdW4pOwogICAgICAgICBvZmZzZXQuc2V0V2lkdGgo
aXRlbUJvdWRpbmdCb3gud2lkdGgoKSAtIHRleHRXaWR0aCAtIG9wdGlvbnNTcGFjaW5nSG9yaXpv
bnRhbCk7Ci0gICAgfSBlbHNlIGlmIChhY3R1YWxBbGlnbm1lbnQgPT0gQ0VOVEVSIHx8IGFjdHVh
bEFsaWdubWVudCA9PSBXRUJLSVRfQ0VOVEVSKSB7CisgICAgfSBlbHNlIGlmIChhY3R1YWxBbGln
bm1lbnQgPT0gVGV4dEFsaWduTW9kZTo6Q2VudGVyIHx8IGFjdHVhbEFsaWdubWVudCA9PSBUZXh0
QWxpZ25Nb2RlOjpXZWJLaXRDZW50ZXIpIHsKICAgICAgICAgZmxvYXQgdGV4dFdpZHRoID0gaXRl
bUZvbnQud2lkdGgodGV4dFJ1bik7CiAgICAgICAgIG9mZnNldC5zZXRXaWR0aCgoaXRlbUJvdWRp
bmdCb3gud2lkdGgoKSAtIHRleHRXaWR0aCkgLyAyKTsKICAgICB9IGVsc2UKQEAgLTQxMSw3ICs0
MTEsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUZvcmVncm91bmQoCiAKICAgICBh
dXRvJiBpdGVtU3R5bGUgPSAqbGlzdEl0ZW1FbGVtZW50LT5jb21wdXRlZFN0eWxlKCk7CiAKLSAg
ICBpZiAoaXRlbVN0eWxlLnZpc2liaWxpdHkoKSA9PSBISURERU4pCisgICAgaWYgKGl0ZW1TdHls
ZS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6SGlkZGVuKQogICAgICAgICByZXR1cm47CiAK
ICAgICBTdHJpbmcgaXRlbVRleHQ7CkBAIC00NjUsNyArNDY1LDcgQEAgdm9pZCBSZW5kZXJMaXN0
Qm94OjpwYWludEl0ZW1CYWNrZ3JvdW5kKAogICAgICAgICBiYWNrQ29sb3IgPSBpdGVtU3R5bGUu
dmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENvbG9yKTsKIAogICAgIC8vIERyYXcgdGhlIGJhY2tncm91bmQgZm9yIHRoaXMgbGlzdCBib3gg
aXRlbQotICAgIGlmIChpdGVtU3R5bGUudmlzaWJpbGl0eSgpID09IEhJRERFTikKKyAgICBpZiAo
aXRlbVN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4pCiAgICAgICAgIHJl
dHVybjsKIAogICAgIExheW91dFJlY3QgaXRlbVJlY3QgPSBpdGVtQm91bmRpbmdCb3hSZWN0KHBh
aW50T2Zmc2V0LCBsaXN0SW5kZXgpOwpAQCAtOTE0LDcgKzkxNCw3IEBAIHZvaWQgUmVuZGVyTGlz
dEJveDo6bG9nTW9ja1Njcm9sbEFuaW1hdG8KIFJlZjxTY3JvbGxiYXI+IFJlbmRlckxpc3RCb3g6
OmNyZWF0ZVNjcm9sbGJhcigpCiB7CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gd2lkZ2V0OwotICAg
IGJvb2wgaGFzQ3VzdG9tU2Nyb2xsYmFyU3R5bGUgPSBzdHlsZSgpLmhhc1BzZXVkb1N0eWxlKFND
Uk9MTEJBUik7CisgICAgYm9vbCBoYXNDdXN0b21TY3JvbGxiYXJTdHlsZSA9IHN0eWxlKCkuaGFz
UHNldWRvU3R5bGUoUHNldWRvSWQ6OlNjcm9sbGJhcik7CiAgICAgaWYgKGhhc0N1c3RvbVNjcm9s
bGJhclN0eWxlKQogICAgICAgICB3aWRnZXQgPSBSZW5kZXJTY3JvbGxiYXI6OmNyZWF0ZUN1c3Rv
bVNjcm9sbGJhcigqdGhpcywgVmVydGljYWxTY3JvbGxiYXIsICZzZWxlY3RFbGVtZW50KCkpOwog
ICAgIGVsc2UgewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVt
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0
ZW0uY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdEl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIFJlbmRlclN0
eWxlIFJlbmRlckxpc3RJdGVtOjpjb21wdXRlTWFya2UKICAgICBmb250RGVzY3JpcHRpb24uc2V0
VmFyaWFudE51bWVyaWNTcGFjaW5nKEZvbnRWYXJpYW50TnVtZXJpY1NwYWNpbmc6OlRhYnVsYXJO
dW1iZXJzKTsKICAgICBwYXJlbnRTdHlsZS5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0
aW9uKTsKICAgICBwYXJlbnRTdHlsZS5mb250Q2FzY2FkZSgpLnVwZGF0ZSgmZG9jdW1lbnQoKS5m
b250U2VsZWN0b3IoKSk7Ci0gICAgaWYgKGF1dG8gbWFya2VyU3R5bGUgPSBnZXRDYWNoZWRQc2V1
ZG9TdHlsZShNQVJLRVIsICZwYXJlbnRTdHlsZSkpCisgICAgaWYgKGF1dG8gbWFya2VyU3R5bGUg
PSBnZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6TWFya2VyLCAmcGFyZW50U3R5bGUpKQog
ICAgICAgICByZXR1cm4gUmVuZGVyU3R5bGU6OmNsb25lKCptYXJrZXJTdHlsZSk7CiAgICAgYXV0
byBtYXJrZXJTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKICAgICBtYXJrZXJTdHlsZS5p
bmhlcml0RnJvbShwYXJlbnRTdHlsZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdE1hcmtlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQw
NSwxOTcgKzQwNSwxOTcgQEAgc3RhdGljIE5FVkVSX0lOTElORSB2b2lkIHRvQ0pLSWRlb2dyYXBo
aQogICAgIGJ1aWxkZXIuYXBwZW5kKGNoYXJhY3RlcnMsIGxlbmd0aCk7CiB9CiAKLXN0YXRpYyBF
TGlzdFN0eWxlVHlwZSBlZmZlY3RpdmVMaXN0TWFya2VyVHlwZShFTGlzdFN0eWxlVHlwZSB0eXBl
LCBpbnQgdmFsdWUpCitzdGF0aWMgTGlzdFN0eWxlVHlwZSBlZmZlY3RpdmVMaXN0TWFya2VyVHlw
ZShMaXN0U3R5bGVUeXBlIHR5cGUsIGludCB2YWx1ZSkKIHsKICAgICAvLyBOb3RlLCB0aGUgZm9s
bG93aW5nIHN3aXRjaCBzdGF0ZW1lbnQgaGFzIGJlZW4gZXhwbGljaXRseSBncm91cGVkCiAgICAg
Ly8gYnkgbGlzdC1zdHlsZS10eXBlIG9yZGluYWwgcmFuZ2UuCiAgICAgc3dpdGNoICh0eXBlKSB7
Ci0gICAgY2FzZSBBcmFiaWNJbmRpYzoKLSAgICBjYXNlIEJlbmdhbGk6Ci0gICAgY2FzZSBCaW5h
cnlMaXN0U3R5bGU6Ci0gICAgY2FzZSBDYW1ib2RpYW46Ci0gICAgY2FzZSBDaXJjbGU6Ci0gICAg
Y2FzZSBEZWNpbWFsTGVhZGluZ1plcm86Ci0gICAgY2FzZSBEZWNpbWFsTGlzdFN0eWxlOgotICAg
IGNhc2UgRGV2YW5hZ2FyaToKLSAgICBjYXNlIERpc2M6Ci0gICAgY2FzZSBHdWphcmF0aToKLSAg
ICBjYXNlIEd1cm11a2hpOgotICAgIGNhc2UgS2FubmFkYToKLSAgICBjYXNlIEtobWVyOgotICAg
IGNhc2UgTGFvOgotICAgIGNhc2UgTG93ZXJIZXhhZGVjaW1hbDoKLSAgICBjYXNlIE1hbGF5YWxh
bToKLSAgICBjYXNlIE1vbmdvbGlhbjoKLSAgICBjYXNlIE15YW5tYXI6Ci0gICAgY2FzZSBOb25l
TGlzdFN0eWxlOgotICAgIGNhc2UgT2N0YWw6Ci0gICAgY2FzZSBPcml5YToKLSAgICBjYXNlIFBl
cnNpYW46Ci0gICAgY2FzZSBTcXVhcmU6Ci0gICAgY2FzZSBUZWx1Z3U6Ci0gICAgY2FzZSBUaGFp
OgotICAgIGNhc2UgVGliZXRhbjoKLSAgICBjYXNlIFVwcGVySGV4YWRlY2ltYWw6Ci0gICAgY2Fz
ZSBVcmR1OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QXJhYmljSW5kaWM6CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpCZW5nYWxpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QmluYXJ5Ogor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2FtYm9kaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6Q2lyY2xlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGVjaW1hbExlYWRpbmdaZXJvOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGVjaW1hbDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
OkRldmFuYWdhcmk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEaXNjOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6R3VqYXJhdGk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpHdXJtdWtoaToK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okthbm5hZGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpLaG1lcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkxhbzoKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6Okxvd2VySGV4YWRlY2ltYWw6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpNYWxheWFs
YW06CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpNb25nb2xpYW46CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpNeWFubWFyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Tm9uZToKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6Ok9jdGFsOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6T3JpeWE6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpQZXJzaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
U3F1YXJlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGVsdWd1OgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6VGhhaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpYmV0YW46CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpVcHBlckhleGFkZWNpbWFsOgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6VXJkdToKICAgICAgICAgcmV0dXJuIHR5cGU7IC8vIENhbiByZXByZXNlbnQgYWxsIG9yZGlu
YWxzLgotICAgIGNhc2UgQXJtZW5pYW46Ci0gICAgICAgIHJldHVybiAodmFsdWUgPCAxIHx8IHZh
bHVlID4gOTk5OTk5OTkpID8gRGVjaW1hbExpc3RTdHlsZSA6IHR5cGU7Ci0gICAgY2FzZSBDSktJ
ZGVvZ3JhcGhpYzoKLSAgICAgICAgcmV0dXJuICh2YWx1ZSA8IDApID8gRGVjaW1hbExpc3RTdHls
ZSA6IHR5cGU7Ci0gICAgY2FzZSBHZW9yZ2lhbjoKLSAgICAgICAgcmV0dXJuICh2YWx1ZSA8IDEg
fHwgdmFsdWUgPiAxOTk5OSkgPyBEZWNpbWFsTGlzdFN0eWxlIDogdHlwZTsKLSAgICBjYXNlIEhl
YnJldzoKLSAgICAgICAgcmV0dXJuICh2YWx1ZSA8IDAgfHwgdmFsdWUgPiA5OTk5OTkpID8gRGVj
aW1hbExpc3RTdHlsZSA6IHR5cGU7Ci0gICAgY2FzZSBMb3dlclJvbWFuOgotICAgIGNhc2UgVXBw
ZXJSb21hbjoKLSAgICAgICAgcmV0dXJuICh2YWx1ZSA8IDEgfHwgdmFsdWUgPiAzOTk5KSA/IERl
Y2ltYWxMaXN0U3R5bGUgOiB0eXBlOwotICAgIGNhc2UgQWZhcjoKLSAgICBjYXNlIEFtaGFyaWM6
Ci0gICAgY2FzZSBBbWhhcmljQWJlZ2VkZToKLSAgICBjYXNlIEFzdGVyaXNrczoKLSAgICBjYXNl
IENqa0VhcnRobHlCcmFuY2g6Ci0gICAgY2FzZSBDamtIZWF2ZW5seVN0ZW06Ci0gICAgY2FzZSBF
dGhpb3BpYzoKLSAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZToKLSAgICBjYXNlIEV0aGlvcGljQWJl
Z2VkZUFtRXQ6Ci0gICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVHZXo6Ci0gICAgY2FzZSBFdGhpb3Bp
Y0FiZWdlZGVUaUVyOgotICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlVGlFdDoKLSAgICBjYXNlIEV0
aGlvcGljSGFsZWhhbWVBYUVyOgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUFhRXQ6Ci0gICAg
Y2FzZSBFdGhpb3BpY0hhbGVoYW1lQW1FdDoKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVHZXo6
Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lT21FdDoKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhh
bWVTaWRFdDoKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVTb0V0OgotICAgIGNhc2UgRXRoaW9w
aWNIYWxlaGFtZVRpRXI6Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lVGlFdDoKLSAgICBjYXNl
IEV0aGlvcGljSGFsZWhhbWVUaWc6Ci0gICAgY2FzZSBGb290bm90ZXM6Ci0gICAgY2FzZSBIYW5n
dWw6Ci0gICAgY2FzZSBIYW5ndWxDb25zb25hbnQ6Ci0gICAgY2FzZSBIaXJhZ2FuYToKLSAgICBj
YXNlIEhpcmFnYW5hSXJvaGE6Ci0gICAgY2FzZSBLYXRha2FuYToKLSAgICBjYXNlIEthdGFrYW5h
SXJvaGE6Ci0gICAgY2FzZSBMb3dlckFscGhhOgotICAgIGNhc2UgTG93ZXJBcm1lbmlhbjoKLSAg
ICBjYXNlIExvd2VyR3JlZWs6Ci0gICAgY2FzZSBMb3dlckxhdGluOgotICAgIGNhc2UgTG93ZXJO
b3J3ZWdpYW46Ci0gICAgY2FzZSBPcm9tbzoKLSAgICBjYXNlIFNpZGFtYToKLSAgICBjYXNlIFNv
bWFsaToKLSAgICBjYXNlIFRpZ3JlOgotICAgIGNhc2UgVGlncmlueWFFcjoKLSAgICBjYXNlIFRp
Z3JpbnlhRXJBYmVnZWRlOgotICAgIGNhc2UgVGlncmlueWFFdDoKLSAgICBjYXNlIFRpZ3Jpbnlh
RXRBYmVnZWRlOgotICAgIGNhc2UgVXBwZXJBbHBoYToKLSAgICBjYXNlIFVwcGVyQXJtZW5pYW46
Ci0gICAgY2FzZSBVcHBlckdyZWVrOgotICAgIGNhc2UgVXBwZXJMYXRpbjoKLSAgICBjYXNlIFVw
cGVyTm9yd2VnaWFuOgotICAgICAgICByZXR1cm4gKHZhbHVlIDwgMSkgPyBEZWNpbWFsTGlzdFN0
eWxlIDogdHlwZTsKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFybWVuaWFuOgorICAgICAgICBy
ZXR1cm4gKHZhbHVlIDwgMSB8fCB2YWx1ZSA+IDk5OTk5OTk5KSA/IExpc3RTdHlsZVR5cGU6OkRl
Y2ltYWwgOiB0eXBlOworICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q0pLSWRlb2dyYXBoaWM6Cisg
ICAgICAgIHJldHVybiAodmFsdWUgPCAwKSA/IExpc3RTdHlsZVR5cGU6OkRlY2ltYWwgOiB0eXBl
OworICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6R2VvcmdpYW46CisgICAgICAgIHJldHVybiAodmFs
dWUgPCAxIHx8IHZhbHVlID4gMTk5OTkpID8gTGlzdFN0eWxlVHlwZTo6RGVjaW1hbCA6IHR5cGU7
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIZWJyZXc6CisgICAgICAgIHJldHVybiAodmFsdWUg
PCAwIHx8IHZhbHVlID4gOTk5OTk5KSA/IExpc3RTdHlsZVR5cGU6OkRlY2ltYWwgOiB0eXBlOwor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJSb21hbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OlVwcGVyUm9tYW46CisgICAgICAgIHJldHVybiAodmFsdWUgPCAxIHx8IHZhbHVlID4gMzk5
OSkgPyBMaXN0U3R5bGVUeXBlOjpEZWNpbWFsIDogdHlwZTsKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkFmYXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBbWhhcmljOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6QW1oYXJpY0FiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBc3Rl
cmlza3M6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDamtFYXJ0aGx5QnJhbmNoOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6Q2prSGVhdmVubHlTdGVtOgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6RXRoaW9waWM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGU6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGVBbUV0OgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlR2V6OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
RXRoaW9waWNBYmVnZWRlVGlFcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJl
Z2VkZVRpRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lQWFFcjoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVBYUV0OgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUFtRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpFdGhpb3BpY0hhbGVoYW1lR2V6OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9w
aWNIYWxlaGFtZU9tRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1l
U2lkRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lU29FdDoKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVUaUVyOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVRpRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpFdGhpb3BpY0hhbGVoYW1lVGlnOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Rm9vdG5vdGVz
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGFuZ3VsOgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6SGFuZ3VsQ29uc29uYW50OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGlyYWdhbmE6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIaXJhZ2FuYUlyb2hhOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6S2F0YWthbmE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLYXRha2FuYUlyb2hhOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJBbHBoYToKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6Okxvd2VyQXJtZW5pYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckdyZWVrOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJMYXRpbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6Okxvd2VyTm9yd2VnaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6T3JvbW86CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpTaWRhbWE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpTb21h
bGk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyZToKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OlRpZ3JpbnlhRXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55YUVyQWJlZ2Vk
ZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXQ6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpUaWdyaW55YUV0QWJlZ2VkZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVy
QWxwaGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckFybWVuaWFuOgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6VXBwZXJHcmVlazoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVy
TGF0aW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlck5vcndlZ2lhbjoKKyAgICAgICAg
cmV0dXJuICh2YWx1ZSA8IDEpID8gTGlzdFN0eWxlVHlwZTo6RGVjaW1hbCA6IHR5cGU7CiAgICAg
fQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIHR5cGU7CiB9CiAKLXN0
YXRpYyBVQ2hhciBsaXN0TWFya2VyU3VmZml4KEVMaXN0U3R5bGVUeXBlIHR5cGUsIGludCB2YWx1
ZSkKK3N0YXRpYyBVQ2hhciBsaXN0TWFya2VyU3VmZml4KExpc3RTdHlsZVR5cGUgdHlwZSwgaW50
IHZhbHVlKQogewogICAgIC8vIElmIHRoZSBsaXN0LXN0eWxlLXR5cGUgY2Fubm90IHJlcHJlc2Vu
dCB8dmFsdWV8IGJlY2F1c2UgaXQncyBvdXRzaWRlIGl0cwogICAgIC8vIG9yZGluYWwgcmFuZ2Ug
dGhlbiB3ZSBmYWxsIGJhY2sgdG8gc29tZSBsaXN0IHN0eWxlIHRoYXQgY2FuIHJlcHJlc2VudCB8
dmFsdWV8LgotICAgIEVMaXN0U3R5bGVUeXBlIGVmZmVjdGl2ZVR5cGUgPSBlZmZlY3RpdmVMaXN0
TWFya2VyVHlwZSh0eXBlLCB2YWx1ZSk7CisgICAgTGlzdFN0eWxlVHlwZSBlZmZlY3RpdmVUeXBl
ID0gZWZmZWN0aXZlTGlzdE1hcmtlclR5cGUodHlwZSwgdmFsdWUpOwogCiAgICAgLy8gTm90ZSwg
dGhlIGZvbGxvd2luZyBzd2l0Y2ggc3RhdGVtZW50IGhhcyBiZWVuIGV4cGxpY2l0bHkKICAgICAv
LyBncm91cGVkIGJ5IGxpc3Qtc3R5bGUtdHlwZSBzdWZmaXguCiAgICAgc3dpdGNoIChlZmZlY3Rp
dmVUeXBlKSB7Ci0gICAgY2FzZSBBc3Rlcmlza3M6Ci0gICAgY2FzZSBDaXJjbGU6Ci0gICAgY2Fz
ZSBEaXNjOgotICAgIGNhc2UgRm9vdG5vdGVzOgotICAgIGNhc2UgTm9uZUxpc3RTdHlsZToKLSAg
ICBjYXNlIFNxdWFyZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFzdGVyaXNrczoKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OkNpcmNsZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRpc2M6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpGb290bm90ZXM6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpOb25lOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6U3F1YXJlOgogICAgICAgICByZXR1
cm4gJyAnOwotICAgIGNhc2UgQWZhcjoKLSAgICBjYXNlIEFtaGFyaWM6Ci0gICAgY2FzZSBBbWhh
cmljQWJlZ2VkZToKLSAgICBjYXNlIEV0aGlvcGljOgotICAgIGNhc2UgRXRoaW9waWNBYmVnZWRl
OgotICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlQW1FdDoKLSAgICBjYXNlIEV0aGlvcGljQWJlZ2Vk
ZUdlejoKLSAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZVRpRXI6Ci0gICAgY2FzZSBFdGhpb3BpY0Fi
ZWdlZGVUaUV0OgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUFhRXI6Ci0gICAgY2FzZSBFdGhp
b3BpY0hhbGVoYW1lQWFFdDoKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVBbUV0OgotICAgIGNh
c2UgRXRoaW9waWNIYWxlaGFtZUdlejoKLSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVPbUV0Ogot
ICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVNpZEV0OgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFt
ZVNvRXQ6Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lVGlFcjoKLSAgICBjYXNlIEV0aGlvcGlj
SGFsZWhhbWVUaUV0OgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVRpZzoKLSAgICBjYXNlIE9y
b21vOgotICAgIGNhc2UgU2lkYW1hOgotICAgIGNhc2UgU29tYWxpOgotICAgIGNhc2UgVGlncmU6
Ci0gICAgY2FzZSBUaWdyaW55YUVyOgotICAgIGNhc2UgVGlncmlueWFFckFiZWdlZGU6Ci0gICAg
Y2FzZSBUaWdyaW55YUV0OgotICAgIGNhc2UgVGlncmlueWFFdEFiZWdlZGU6CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpBZmFyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QW1oYXJpYzoKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OkFtaGFyaWNBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6RXRoaW9waWM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGU6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGVBbUV0OgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlR2V6OgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6RXRoaW9waWNBYmVnZWRlVGlFcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGlj
QWJlZ2VkZVRpRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lQWFF
cjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVBYUV0OgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUFtRXQ6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lR2V6OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRo
aW9waWNIYWxlaGFtZU9tRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVo
YW1lU2lkRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lU29FdDoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVUaUVyOgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVRpRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpFdGhpb3BpY0hhbGVoYW1lVGlnOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6T3JvbW86
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpTaWRhbWE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpTb21hbGk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyZToKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OlRpZ3JpbnlhRXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55YUVy
QWJlZ2VkZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXQ6CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpUaWdyaW55YUV0QWJlZ2VkZToKICAgICAgICAgcmV0dXJuIGV0aGlvcGlj
UHJlZmFjZUNvbG9uOwotICAgIGNhc2UgQXJtZW5pYW46Ci0gICAgY2FzZSBBcmFiaWNJbmRpYzoK
LSAgICBjYXNlIEJlbmdhbGk6Ci0gICAgY2FzZSBCaW5hcnlMaXN0U3R5bGU6Ci0gICAgY2FzZSBD
YW1ib2RpYW46Ci0gICAgY2FzZSBDSktJZGVvZ3JhcGhpYzoKLSAgICBjYXNlIENqa0VhcnRobHlC
cmFuY2g6Ci0gICAgY2FzZSBDamtIZWF2ZW5seVN0ZW06Ci0gICAgY2FzZSBEZWNpbWFsTGVhZGlu
Z1plcm86Ci0gICAgY2FzZSBEZWNpbWFsTGlzdFN0eWxlOgotICAgIGNhc2UgRGV2YW5hZ2FyaToK
LSAgICBjYXNlIEdlb3JnaWFuOgotICAgIGNhc2UgR3VqYXJhdGk6Ci0gICAgY2FzZSBHdXJtdWto
aToKLSAgICBjYXNlIEhhbmd1bDoKLSAgICBjYXNlIEhhbmd1bENvbnNvbmFudDoKLSAgICBjYXNl
IEhlYnJldzoKLSAgICBjYXNlIEhpcmFnYW5hOgotICAgIGNhc2UgSGlyYWdhbmFJcm9oYToKLSAg
ICBjYXNlIEthbm5hZGE6Ci0gICAgY2FzZSBLYXRha2FuYToKLSAgICBjYXNlIEthdGFrYW5hSXJv
aGE6Ci0gICAgY2FzZSBLaG1lcjoKLSAgICBjYXNlIExhbzoKLSAgICBjYXNlIExvd2VyQWxwaGE6
Ci0gICAgY2FzZSBMb3dlckFybWVuaWFuOgotICAgIGNhc2UgTG93ZXJHcmVlazoKLSAgICBjYXNl
IExvd2VySGV4YWRlY2ltYWw6Ci0gICAgY2FzZSBMb3dlckxhdGluOgotICAgIGNhc2UgTG93ZXJO
b3J3ZWdpYW46Ci0gICAgY2FzZSBMb3dlclJvbWFuOgotICAgIGNhc2UgTWFsYXlhbGFtOgotICAg
IGNhc2UgTW9uZ29saWFuOgotICAgIGNhc2UgTXlhbm1hcjoKLSAgICBjYXNlIE9jdGFsOgotICAg
IGNhc2UgT3JpeWE6Ci0gICAgY2FzZSBQZXJzaWFuOgotICAgIGNhc2UgVGVsdWd1OgotICAgIGNh
c2UgVGhhaToKLSAgICBjYXNlIFRpYmV0YW46Ci0gICAgY2FzZSBVcHBlckFscGhhOgotICAgIGNh
c2UgVXBwZXJBcm1lbmlhbjoKLSAgICBjYXNlIFVwcGVyR3JlZWs6Ci0gICAgY2FzZSBVcHBlckhl
eGFkZWNpbWFsOgotICAgIGNhc2UgVXBwZXJMYXRpbjoKLSAgICBjYXNlIFVwcGVyTm9yd2VnaWFu
OgotICAgIGNhc2UgVXBwZXJSb21hbjoKLSAgICBjYXNlIFVyZHU6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpBcm1lbmlhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFyYWJpY0luZGljOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QmVuZ2FsaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
OkJpbmFyeToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNhbWJvZGlhbjoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkNKS0lkZW9ncmFwaGljOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2pr
RWFydGhseUJyYW5jaDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNqa0hlYXZlbmx5U3RlbToK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkRlY2ltYWxMZWFkaW5nWmVybzoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkRlY2ltYWw6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEZXZhbmFnYXJp
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6R2VvcmdpYW46CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpHdWphcmF0aToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okd1cm11a2hpOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6SGFuZ3VsOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGFuZ3Vs
Q29uc29uYW50OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGVicmV3OgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6SGlyYWdhbmE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIaXJhZ2FuYUly
b2hhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6S2FubmFkYToKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OkthdGFrYW5hOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6S2F0YWthbmFJcm9oYToK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OktobWVyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
TGFvOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJBbHBoYToKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6Okxvd2VyQXJtZW5pYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckdy
ZWVrOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJIZXhhZGVjaW1hbDoKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6Okxvd2VyTGF0aW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dl
ck5vcndlZ2lhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyUm9tYW46CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpNYWxheWFsYW06CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpNb25n
b2xpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpNeWFubWFyOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6T2N0YWw6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpPcml5YToKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OlBlcnNpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUZWx1Z3U6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaGFpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
VGliZXRhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyQWxwaGE6CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpVcHBlckFybWVuaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBw
ZXJHcmVlazoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVySGV4YWRlY2ltYWw6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckxhdGluOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
VXBwZXJOb3J3ZWdpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlclJvbWFuOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6VXJkdToKICAgICAgICAgcmV0dXJuICcuJzsKICAgICB9CiAK
QEAgLTYwMyw1MTggKzYwMyw1MTggQEAgc3RhdGljIFVDaGFyIGxpc3RNYXJrZXJTdWZmaXgoRUxp
c3RTdHlsZQogICAgIHJldHVybiAnLic7CiB9CiAKLVN0cmluZyBsaXN0TWFya2VyVGV4dChFTGlz
dFN0eWxlVHlwZSB0eXBlLCBpbnQgdmFsdWUpCitTdHJpbmcgbGlzdE1hcmtlclRleHQoTGlzdFN0
eWxlVHlwZSB0eXBlLCBpbnQgdmFsdWUpCiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwog
CiAgICAgLy8gSWYgdGhlIGxpc3Qtc3R5bGUtdHlwZSwgc2F5IGhlYnJldywgY2Fubm90IHJlcHJl
c2VudCB8dmFsdWV8IGJlY2F1c2UgaXQncyBvdXRzaWRlCiAgICAgLy8gaXRzIG9yZGluYWwgcmFu
Z2UgdGhlbiB3ZSBmYWxsYmFjayB0byBzb21lIGxpc3Qgc3R5bGUgdGhhdCBjYW4gcmVwcmVzZW50
IHx2YWx1ZXwuCiAgICAgc3dpdGNoIChlZmZlY3RpdmVMaXN0TWFya2VyVHlwZSh0eXBlLCB2YWx1
ZSkpIHsKLSAgICAgICAgY2FzZSBOb25lTGlzdFN0eWxlOgotICAgICAgICAgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpOb25lOgorICAgICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgICAgICBjYXNlIEFzdGVyaXNrczogewotICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IExDaGFyIGFzdGVyaXNrc1N5bWJvbHNbMV0gPSB7IDB4MkEgfTsKLSAg
ICAgICAgICAgIHRvU3ltYm9saWMoYnVpbGRlciwgdmFsdWUsIGFzdGVyaXNrc1N5bWJvbHMpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gV2UgdXNlIHRoZSBzYW1l
IGNoYXJhY3RlcnMgZm9yIHRleHQgc2VjdXJpdHkuCi0gICAgICAgIC8vIFNlZSBSZW5kZXJUZXh0
OjpzZXRJbnRlcm5hbFN0cmluZy4KLSAgICAgICAgY2FzZSBDaXJjbGU6Ci0gICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCh3aGl0ZUJ1bGxldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBEaXNjOgotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoYnVsbGV0KTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZvb3Rub3RlczogewotICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IFVDaGFyIGZvb3Rub3Rlc1N5bWJvbHNbNF0gPSB7IDB4MDAyQSwgMHgyMDUxLCAweDIw
MjAsIDB4MjAyMSB9OwotICAgICAgICAgICAgdG9TeW1ib2xpYyhidWlsZGVyLCB2YWx1ZSwgZm9v
dG5vdGVzU3ltYm9scyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIFNxdWFyZToKLSAgICAgICAgICAgIC8vIFRoZSBDU1MgMi4xIHRlc3Qgc3VpdGUgdXNlcyBV
KzI1RUUgQkxBQ0sgTUVESVVNIFNNQUxMIFNRVUFSRQotICAgICAgICAgICAgLy8gaW5zdGVhZCwg
YnV0IEkgdGhpbmsgdGhpcyBsb29rcyBiZXR0ZXIuCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZChibGFja1NxdWFyZSk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIERlY2lt
YWxMaXN0U3R5bGU6Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcih2YWx1ZSk7Ci0g
ICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFzdGVyaXNrczogewor
ICAgICAgICBzdGF0aWMgY29uc3QgTENoYXIgYXN0ZXJpc2tzU3ltYm9sc1sxXSA9IHsgMHgyQSB9
OworICAgICAgICB0b1N5bWJvbGljKGJ1aWxkZXIsIHZhbHVlLCBhc3Rlcmlza3NTeW1ib2xzKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIC8vIFdlIHVzZSB0aGUgc2FtZSBjaGFyYWN0ZXJz
IGZvciB0ZXh0IHNlY3VyaXR5LgorICAgIC8vIFNlZSBSZW5kZXJUZXh0OjpzZXRJbnRlcm5hbFN0
cmluZy4KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNpcmNsZToKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQod2hpdGVCdWxsZXQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkRpc2M6CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGJ1bGxldCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Rm9vdG5vdGVzOiB7CisgICAgICAgIHN0YXRpYyBj
b25zdCBVQ2hhciBmb290bm90ZXNTeW1ib2xzWzRdID0geyAweDAwMkEsIDB4MjA1MSwgMHgyMDIw
LCAweDIwMjEgfTsKKyAgICAgICAgdG9TeW1ib2xpYyhidWlsZGVyLCB2YWx1ZSwgZm9vdG5vdGVz
U3ltYm9scyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
OlNxdWFyZToKKyAgICAgICAgLy8gVGhlIENTUyAyLjEgdGVzdCBzdWl0ZSB1c2VzIFUrMjVFRSBC
TEFDSyBNRURJVU0gU01BTEwgU1FVQVJFCisgICAgICAgIC8vIGluc3RlYWQsIGJ1dCBJIHRoaW5r
IHRoaXMgbG9va3MgYmV0dGVyLgorICAgICAgICBidWlsZGVyLmFwcGVuZChibGFja1NxdWFyZSk7
CisgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGNhc2UgRGVjaW1hbExlYWRpbmdaZXJvOgotICAg
ICAgICAgICAgaWYgKHZhbHVlIDwgLTkgfHwgdmFsdWUgPiA5KSB7Ci0gICAgICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmROdW1iZXIodmFsdWUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHZhbHVlIDwgMCkgewotICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLTAiKTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZE51bWJlcigtdmFsdWUpOyAvLyAtMDEgdG8gLTA5Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnMCcpOwotICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIodmFsdWUpOyAvLyAwMCB0byAwOQotICAgICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEZWNpbWFsOgorICAgICAgICBidWls
ZGVyLmFwcGVuZE51bWJlcih2YWx1ZSk7CisgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGNhc2Ug
QXJhYmljSW5kaWM6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBhcmFiaWNJbmRp
Y051bWVyYWxzWzEwXSA9IHsKLSAgICAgICAgICAgICAgICAweDA2NjAsIDB4MDY2MSwgMHgwNjYy
LCAweDA2NjMsIDB4MDY2NCwgMHgwNjY1LCAweDA2NjYsIDB4MDY2NywgMHgwNjY4LCAweDA2NjkK
LSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIGFy
YWJpY0luZGljTnVtZXJhbHMpOworICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGVjaW1hbExlYWRp
bmdaZXJvOgorICAgICAgICBpZiAodmFsdWUgPCAtOSB8fCB2YWx1ZSA+IDkpIHsKKyAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKHZhbHVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9Ci0KLSAgICAgICAgY2FzZSBCaW5hcnlMaXN0U3R5bGU6IHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBMQ2hhciBiaW5hcnlOdW1lcmFsc1syXSA9IHsgJzAnLCAnMScgfTsKLSAgICAg
ICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgYmluYXJ5TnVtZXJhbHMpOworICAgICAg
ICBpZiAodmFsdWUgPCAwKSB7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIi0w
Iik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcigtdmFsdWUpOyAvLyAtMDEgdG8g
LTA5CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnMCcpOworICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcih2YWx1ZSk7IC8vIDAwIHRvIDA5
CisgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGNhc2UgQmVuZ2FsaTogewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IFVDaGFyIGJlbmdhbGlOdW1lcmFsc1sxMF0gPSB7Ci0gICAgICAgICAgICAg
ICAgMHgwOUU2LCAweDA5RTcsIDB4MDlFOCwgMHgwOUU5LCAweDA5RUEsIDB4MDlFQiwgMHgwOUVD
LCAweDA5RUQsIDB4MDlFRSwgMHgwOUVGCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9O
dW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBiZW5nYWxpTnVtZXJhbHMpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFyYWJpY0luZGljOiB7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBhcmFiaWNJbmRpY051bWVyYWxzWzEwXSA9IHsKKyAg
ICAgICAgICAgIDB4MDY2MCwgMHgwNjYxLCAweDA2NjIsIDB4MDY2MywgMHgwNjY0LCAweDA2NjUs
IDB4MDY2NiwgMHgwNjY3LCAweDA2NjgsIDB4MDY2OQorICAgICAgICB9OworICAgICAgICB0b051
bWVyaWMoYnVpbGRlciwgdmFsdWUsIGFyYWJpY0luZGljTnVtZXJhbHMpOworICAgICAgICBicmVh
azsKKyAgICB9CiAKLSAgICAgICAgY2FzZSBDYW1ib2RpYW46Ci0gICAgICAgIGNhc2UgS2htZXI6
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBraG1lck51bWVyYWxzWzEwXSA9IHsK
LSAgICAgICAgICAgICAgICAweDE3RTAsIDB4MTdFMSwgMHgxN0UyLCAweDE3RTMsIDB4MTdFNCwg
MHgxN0U1LCAweDE3RTYsIDB4MTdFNywgMHgxN0U4LCAweDE3RTkKLSAgICAgICAgICAgIH07Ci0g
ICAgICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIGtobWVyTnVtZXJhbHMpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBEZXZhbmFnYXJpOiB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZGV2YW5hZ2FyaU51bWVyYWxzWzEwXSA9IHsK
LSAgICAgICAgICAgICAgICAweDA5NjYsIDB4MDk2NywgMHgwOTY4LCAweDA5NjksIDB4MDk2QSwg
MHgwOTZCLCAweDA5NkMsIDB4MDk2RCwgMHgwOTZFLCAweDA5NkYKLSAgICAgICAgICAgIH07Ci0g
ICAgICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIGRldmFuYWdhcmlOdW1lcmFscyk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEd1amFyYXRpOiB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZ3VqYXJhdGlOdW1lcmFsc1sxMF0gPSB7
Ci0gICAgICAgICAgICAgICAgMHgwQUU2LCAweDBBRTcsIDB4MEFFOCwgMHgwQUU5LCAweDBBRUEs
IDB4MEFFQiwgMHgwQUVDLCAweDBBRUQsIDB4MEFFRSwgMHgwQUVGCi0gICAgICAgICAgICB9Owot
ICAgICAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBndWphcmF0aU51bWVyYWxzKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR3VybXVraGk6IHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBndXJtdWtoaU51bWVyYWxzWzEwXSA9IHsK
LSAgICAgICAgICAgICAgICAweDBBNjYsIDB4MEE2NywgMHgwQTY4LCAweDBBNjksIDB4MEE2QSwg
MHgwQTZCLCAweDBBNkMsIDB4MEE2RCwgMHgwQTZFLCAweDBBNkYKLSAgICAgICAgICAgIH07Ci0g
ICAgICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIGd1cm11a2hpTnVtZXJhbHMpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBLYW5uYWRhOiB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIga2FubmFkYU51bWVyYWxzWzEwXSA9IHsKLSAg
ICAgICAgICAgICAgICAweDBDRTYsIDB4MENFNywgMHgwQ0U4LCAweDBDRTksIDB4MENFQSwgMHgw
Q0VCLCAweDBDRUMsIDB4MENFRCwgMHgwQ0VFLCAweDBDRUYKLSAgICAgICAgICAgIH07Ci0gICAg
ICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIGthbm5hZGFOdW1lcmFscyk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIExvd2VySGV4YWRlY2ltYWw6
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBMQ2hhciBsb3dlckhleGFkZWNpbWFsTnVtZXJh
bHNbMTZdID0gewotICAgICAgICAgICAgICAgICcwJywgJzEnLCAnMicsICczJywgJzQnLCAnNScs
ICc2JywgJzcnLCAnOCcsICc5JywgJ2EnLCAnYicsICdjJywgJ2QnLCAnZScsICdmJwotICAgICAg
ICAgICAgfTsKLSAgICAgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgbG93ZXJIZXhh
ZGVjaW1hbE51bWVyYWxzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2UgTGFvOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgbGFvTnVtZXJhbHNb
MTBdID0gewotICAgICAgICAgICAgICAgIDB4MEVEMCwgMHgwRUQxLCAweDBFRDIsIDB4MEVEMywg
MHgwRUQ0LCAweDBFRDUsIDB4MEVENiwgMHgwRUQ3LCAweDBFRDgsIDB4MEVEOQotICAgICAgICAg
ICAgfTsKLSAgICAgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgbGFvTnVtZXJhbHMp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBNYWxheWFsYW06
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBtYWxheWFsYW1OdW1lcmFsc1sxMF0g
PSB7Ci0gICAgICAgICAgICAgICAgMHgwRDY2LCAweDBENjcsIDB4MEQ2OCwgMHgwRDY5LCAweDBE
NkEsIDB4MEQ2QiwgMHgwRDZDLCAweDBENkQsIDB4MEQ2RSwgMHgwRDZGCi0gICAgICAgICAgICB9
OwotICAgICAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBtYWxheWFsYW1OdW1lcmFs
cyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIE1vbmdvbGlh
bjogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIG1vbmdvbGlhbk51bWVyYWxzWzEw
XSA9IHsKLSAgICAgICAgICAgICAgICAweDE4MTAsIDB4MTgxMSwgMHgxODEyLCAweDE4MTMsIDB4
MTgxNCwgMHgxODE1LCAweDE4MTYsIDB4MTgxNywgMHgxODE4LCAweDE4MTkKLSAgICAgICAgICAg
IH07Ci0gICAgICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIG1vbmdvbGlhbk51bWVy
YWxzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgTXlhbm1h
cjogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIG15YW5tYXJOdW1lcmFsc1sxMF0g
PSB7Ci0gICAgICAgICAgICAgICAgMHgxMDQwLCAweDEwNDEsIDB4MTA0MiwgMHgxMDQzLCAweDEw
NDQsIDB4MTA0NSwgMHgxMDQ2LCAweDEwNDcsIDB4MTA0OCwgMHgxMDQ5Ci0gICAgICAgICAgICB9
OwotICAgICAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBteWFubWFyTnVtZXJhbHMp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBPY3RhbDogewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IExDaGFyIG9jdGFsTnVtZXJhbHNbOF0gPSB7Ci0gICAg
ICAgICAgICAgICAgJzAnLCAnMScsICcyJywgJzMnLCAnNCcsICc1JywgJzYnLCAnNycKLSAgICAg
ICAgICAgIH07Ci0gICAgICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIG9jdGFsTnVt
ZXJhbHMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBPcml5
YTogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIG9yaXlhTnVtZXJhbHNbMTBdID0g
ewotICAgICAgICAgICAgICAgIDB4MEI2NiwgMHgwQjY3LCAweDBCNjgsIDB4MEI2OSwgMHgwQjZB
LCAweDBCNkIsIDB4MEI2QywgMHgwQjZELCAweDBCNkUsIDB4MEI2RgotICAgICAgICAgICAgfTsK
LSAgICAgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgb3JpeWFOdW1lcmFscyk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFBlcnNpYW46Ci0gICAg
ICAgIGNhc2UgVXJkdTogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIHVyZHVOdW1l
cmFsc1sxMF0gPSB7Ci0gICAgICAgICAgICAgICAgMHgwNkYwLCAweDA2RjEsIDB4MDZGMiwgMHgw
NkYzLCAweDA2RjQsIDB4MDZGNSwgMHgwNkY2LCAweDA2RjcsIDB4MDZGOCwgMHgwNkY5Ci0gICAg
ICAgICAgICB9OwotICAgICAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCB1cmR1TnVt
ZXJhbHMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUZWx1
Z3U6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciB0ZWx1Z3VOdW1lcmFsc1sxMF0g
PSB7Ci0gICAgICAgICAgICAgICAgMHgwQzY2LCAweDBDNjcsIDB4MEM2OCwgMHgwQzY5LCAweDBD
NkEsIDB4MEM2QiwgMHgwQzZDLCAweDBDNkQsIDB4MEM2RSwgMHgwQzZGCi0gICAgICAgICAgICB9
OwotICAgICAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCB0ZWx1Z3VOdW1lcmFscyk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFRpYmV0YW46IHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciB0aWJldGFuTnVtZXJhbHNbMTBdID0gewot
ICAgICAgICAgICAgICAgIDB4MEYyMCwgMHgwRjIxLCAweDBGMjIsIDB4MEYyMywgMHgwRjI0LCAw
eDBGMjUsIDB4MEYyNiwgMHgwRjI3LCAweDBGMjgsIDB4MEYyOQotICAgICAgICAgICAgfTsKLSAg
ICAgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgdGliZXRhbk51bWVyYWxzKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVGhhaTogewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIHRoYWlOdW1lcmFsc1sxMF0gPSB7Ci0gICAgICAgICAg
ICAgICAgMHgwRTUwLCAweDBFNTEsIDB4MEU1MiwgMHgwRTUzLCAweDBFNTQsIDB4MEU1NSwgMHgw
RTU2LCAweDBFNTcsIDB4MEU1OCwgMHgwRTU5Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAg
dG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCB0aGFpTnVtZXJhbHMpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBVcHBlckhleGFkZWNpbWFsOiB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgTENoYXIgdXBwZXJIZXhhZGVjaW1hbE51bWVyYWxzWzE2XSA9IHsK
LSAgICAgICAgICAgICAgICAnMCcsICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3Jywg
JzgnLCAnOScsICdBJywgJ0InLCAnQycsICdEJywgJ0UnLCAnRicKLSAgICAgICAgICAgIH07Ci0g
ICAgICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIHVwcGVySGV4YWRlY2ltYWxOdW1l
cmFscyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6QmluYXJ5OiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBMQ2hhciBiaW5hcnlOdW1lcmFs
c1syXSA9IHsgJzAnLCAnMScgfTsKKyAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBi
aW5hcnlOdW1lcmFscyk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAotICAgICAgICBjYXNlIExv
d2VyQWxwaGE6Ci0gICAgICAgIGNhc2UgTG93ZXJMYXRpbjogewotICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IExDaGFyIGxvd2VyTGF0aW5BbHBoYWJldFsyNl0gPSB7Ci0gICAgICAgICAgICAgICAg
J2EnLCAnYicsICdjJywgJ2QnLCAnZScsICdmJywgJ2cnLCAnaCcsICdpJywgJ2onLCAnaycsICds
JywgJ20nLAotICAgICAgICAgICAgICAgICduJywgJ28nLCAncCcsICdxJywgJ3InLCAncycsICd0
JywgJ3UnLCAndicsICd3JywgJ3gnLCAneScsICd6JwotICAgICAgICAgICAgfTsKLSAgICAgICAg
ICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgbG93ZXJMYXRpbkFscGhhYmV0KTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVXBwZXJBbHBoYToKLSAg
ICAgICAgY2FzZSBVcHBlckxhdGluOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgTENoYXIg
dXBwZXJMYXRpbkFscGhhYmV0WzI2XSA9IHsKLSAgICAgICAgICAgICAgICAnQScsICdCJywgJ0Mn
LCAnRCcsICdFJywgJ0YnLCAnRycsICdIJywgJ0knLCAnSicsICdLJywgJ0wnLCAnTScsCi0gICAg
ICAgICAgICAgICAgJ04nLCAnTycsICdQJywgJ1EnLCAnUicsICdTJywgJ1QnLCAnVScsICdWJywg
J1cnLCAnWCcsICdZJywgJ1onCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9BbHBoYWJl
dGljKGJ1aWxkZXIsIHZhbHVlLCB1cHBlckxhdGluQWxwaGFiZXQpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBMb3dlckdyZWVrOiB7Ci0gICAgICAgICAgICBz
dGF0aWMgY29uc3QgVUNoYXIgbG93ZXJHcmVla0FscGhhYmV0WzI0XSA9IHsKLSAgICAgICAgICAg
ICAgICAweDAzQjEsIDB4MDNCMiwgMHgwM0IzLCAweDAzQjQsIDB4MDNCNSwgMHgwM0I2LCAweDAz
QjcsIDB4MDNCOCwKLSAgICAgICAgICAgICAgICAweDAzQjksIDB4MDNCQSwgMHgwM0JCLCAweDAz
QkMsIDB4MDNCRCwgMHgwM0JFLCAweDAzQkYsIDB4MDNDMCwKLSAgICAgICAgICAgICAgICAweDAz
QzEsIDB4MDNDMywgMHgwM0M0LCAweDAzQzUsIDB4MDNDNiwgMHgwM0M3LCAweDAzQzgsIDB4MDND
OQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1
ZSwgbG93ZXJHcmVla0FscGhhYmV0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpCZW5nYWxpOiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBV
Q2hhciBiZW5nYWxpTnVtZXJhbHNbMTBdID0geworICAgICAgICAgICAgMHgwOUU2LCAweDA5RTcs
IDB4MDlFOCwgMHgwOUU5LCAweDA5RUEsIDB4MDlFQiwgMHgwOUVDLCAweDA5RUQsIDB4MDlFRSwg
MHgwOUVGCisgICAgICAgIH07CisgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgYmVu
Z2FsaU51bWVyYWxzKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCi0gICAgICAgIGNhc2UgSGly
YWdhbmE6IHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHRhYmxlIGNvbWVzIGZyb20gdGhl
IENTUzMgZHJhZnQsIGFuZCBpcyBwcm9iYWJseQotICAgICAgICAgICAgLy8gaW5jb3JyZWN0LCBn
aXZlbiB0aGUgY29tbWVudHMgaW4gdGhhdCBkcmFmdC4KLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBVQ2hhciBoaXJhZ2FuYUFscGhhYmV0WzQ4XSA9IHsKLSAgICAgICAgICAgICAgICAweDMwNDIs
IDB4MzA0NCwgMHgzMDQ2LCAweDMwNDgsIDB4MzA0QSwgMHgzMDRCLCAweDMwNEQsIDB4MzA0RiwK
LSAgICAgICAgICAgICAgICAweDMwNTEsIDB4MzA1MywgMHgzMDU1LCAweDMwNTcsIDB4MzA1OSwg
MHgzMDVCLCAweDMwNUQsIDB4MzA1RiwKLSAgICAgICAgICAgICAgICAweDMwNjEsIDB4MzA2NCwg
MHgzMDY2LCAweDMwNjgsIDB4MzA2QSwgMHgzMDZCLCAweDMwNkMsIDB4MzA2RCwKLSAgICAgICAg
ICAgICAgICAweDMwNkUsIDB4MzA2RiwgMHgzMDcyLCAweDMwNzUsIDB4MzA3OCwgMHgzMDdCLCAw
eDMwN0UsIDB4MzA3RiwKLSAgICAgICAgICAgICAgICAweDMwODAsIDB4MzA4MSwgMHgzMDgyLCAw
eDMwODQsIDB4MzA4NiwgMHgzMDg4LCAweDMwODksIDB4MzA4QSwKLSAgICAgICAgICAgICAgICAw
eDMwOEIsIDB4MzA4QywgMHgzMDhELCAweDMwOEYsIDB4MzA5MCwgMHgzMDkxLCAweDMwOTIsIDB4
MzA5MwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2
YWx1ZSwgaGlyYWdhbmFBbHBoYWJldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIEhpcmFnYW5hSXJvaGE6IHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlz
IHRhYmxlIGNvbWVzIGZyb20gdGhlIENTUzMgZHJhZnQsIGFuZCBpcyBwcm9iYWJseQotICAgICAg
ICAgICAgLy8gaW5jb3JyZWN0LCBnaXZlbiB0aGUgY29tbWVudHMgaW4gdGhhdCBkcmFmdC4KLSAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBoaXJhZ2FuYUlyb2hhQWxwaGFiZXRbNDddID0g
ewotICAgICAgICAgICAgICAgIDB4MzA0NCwgMHgzMDhELCAweDMwNkYsIDB4MzA2QiwgMHgzMDdC
LCAweDMwNzgsIDB4MzA2OCwgMHgzMDYxLAotICAgICAgICAgICAgICAgIDB4MzA4QSwgMHgzMDZD
LCAweDMwOEIsIDB4MzA5MiwgMHgzMDhGLCAweDMwNEIsIDB4MzA4OCwgMHgzMDVGLAotICAgICAg
ICAgICAgICAgIDB4MzA4QywgMHgzMDVELCAweDMwNjQsIDB4MzA2RCwgMHgzMDZBLCAweDMwODks
IDB4MzA4MCwgMHgzMDQ2LAotICAgICAgICAgICAgICAgIDB4MzA5MCwgMHgzMDZFLCAweDMwNEEs
IDB4MzA0RiwgMHgzMDg0LCAweDMwN0UsIDB4MzA1MSwgMHgzMDc1LAotICAgICAgICAgICAgICAg
IDB4MzA1MywgMHgzMDQ4LCAweDMwNjYsIDB4MzA0MiwgMHgzMDU1LCAweDMwNEQsIDB4MzA4Niwg
MHgzMDgxLAotICAgICAgICAgICAgICAgIDB4MzA3RiwgMHgzMDU3LCAweDMwOTEsIDB4MzA3Miwg
MHgzMDgyLCAweDMwNUIsIDB4MzA1OQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvQWxw
aGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgaGlyYWdhbmFJcm9oYUFscGhhYmV0KTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgS2F0YWthbmE6IHsKLSAgICAgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIHRhYmxlIGNvbWVzIGZyb20gdGhlIENTUzMgZHJhZnQsIGFuZCBp
cyBwcm9iYWJseQotICAgICAgICAgICAgLy8gaW5jb3JyZWN0LCBnaXZlbiB0aGUgY29tbWVudHMg
aW4gdGhhdCBkcmFmdC4KLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBrYXRha2FuYUFs
cGhhYmV0WzQ4XSA9IHsKLSAgICAgICAgICAgICAgICAweDMwQTIsIDB4MzBBNCwgMHgzMEE2LCAw
eDMwQTgsIDB4MzBBQSwgMHgzMEFCLCAweDMwQUQsIDB4MzBBRiwKLSAgICAgICAgICAgICAgICAw
eDMwQjEsIDB4MzBCMywgMHgzMEI1LCAweDMwQjcsIDB4MzBCOSwgMHgzMEJCLCAweDMwQkQsIDB4
MzBCRiwKLSAgICAgICAgICAgICAgICAweDMwQzEsIDB4MzBDNCwgMHgzMEM2LCAweDMwQzgsIDB4
MzBDQSwgMHgzMENCLCAweDMwQ0MsIDB4MzBDRCwKLSAgICAgICAgICAgICAgICAweDMwQ0UsIDB4
MzBDRiwgMHgzMEQyLCAweDMwRDUsIDB4MzBEOCwgMHgzMERCLCAweDMwREUsIDB4MzBERiwKLSAg
ICAgICAgICAgICAgICAweDMwRTAsIDB4MzBFMSwgMHgzMEUyLCAweDMwRTQsIDB4MzBFNiwgMHgz
MEU4LCAweDMwRTksIDB4MzBFQSwKLSAgICAgICAgICAgICAgICAweDMwRUIsIDB4MzBFQywgMHgz
MEVELCAweDMwRUYsIDB4MzBGMCwgMHgzMEYxLCAweDMwRjIsIDB4MzBGMwotICAgICAgICAgICAg
fTsKLSAgICAgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwga2F0YWthbmFBbHBo
YWJldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEthdGFr
YW5hSXJvaGE6IHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHRhYmxlIGNvbWVzIGZyb20g
dGhlIENTUzMgZHJhZnQsIGFuZCBpcyBwcm9iYWJseQotICAgICAgICAgICAgLy8gaW5jb3JyZWN0
LCBnaXZlbiB0aGUgY29tbWVudHMgaW4gdGhhdCBkcmFmdC4KLSAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBVQ2hhciBrYXRha2FuYUlyb2hhQWxwaGFiZXRbNDddID0gewotICAgICAgICAgICAgICAg
IDB4MzBBNCwgMHgzMEVELCAweDMwQ0YsIDB4MzBDQiwgMHgzMERCLCAweDMwRDgsIDB4MzBDOCwg
MHgzMEMxLAotICAgICAgICAgICAgICAgIDB4MzBFQSwgMHgzMENDLCAweDMwRUIsIDB4MzBGMiwg
MHgzMEVGLCAweDMwQUIsIDB4MzBFOCwgMHgzMEJGLAotICAgICAgICAgICAgICAgIDB4MzBFQywg
MHgzMEJELCAweDMwQzQsIDB4MzBDRCwgMHgzMENBLCAweDMwRTksIDB4MzBFMCwgMHgzMEE2LAot
ICAgICAgICAgICAgICAgIDB4MzBGMCwgMHgzMENFLCAweDMwQUEsIDB4MzBBRiwgMHgzMEU0LCAw
eDMwREUsIDB4MzBCMSwgMHgzMEQ1LAotICAgICAgICAgICAgICAgIDB4MzBCMywgMHgzMEE4LCAw
eDMwQzYsIDB4MzBBMiwgMHgzMEI1LCAweDMwQUQsIDB4MzBFNiwgMHgzMEUxLAotICAgICAgICAg
ICAgICAgIDB4MzBERiwgMHgzMEI3LCAweDMwRjEsIDB4MzBEMiwgMHgzMEUyLCAweDMwQkIsIDB4
MzBCOQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2
YWx1ZSwga2F0YWthbmFJcm9oYUFscGhhYmV0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDYW1ib2RpYW46CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpLaG1lcjogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIga2htZXJOdW1lcmFs
c1sxMF0gPSB7CisgICAgICAgICAgICAweDE3RTAsIDB4MTdFMSwgMHgxN0UyLCAweDE3RTMsIDB4
MTdFNCwgMHgxN0U1LCAweDE3RTYsIDB4MTdFNywgMHgxN0U4LCAweDE3RTkKKyAgICAgICAgfTsK
KyAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBraG1lck51bWVyYWxzKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGV2YW5hZ2FyaTogewor
ICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZGV2YW5hZ2FyaU51bWVyYWxzWzEwXSA9IHsKKyAg
ICAgICAgICAgIDB4MDk2NiwgMHgwOTY3LCAweDA5NjgsIDB4MDk2OSwgMHgwOTZBLCAweDA5NkIs
IDB4MDk2QywgMHgwOTZELCAweDA5NkUsIDB4MDk2RgorICAgICAgICB9OworICAgICAgICB0b051
bWVyaWMoYnVpbGRlciwgdmFsdWUsIGRldmFuYWdhcmlOdW1lcmFscyk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okd1amFyYXRpOiB7CisgICAgICAgIHN0
YXRpYyBjb25zdCBVQ2hhciBndWphcmF0aU51bWVyYWxzWzEwXSA9IHsKKyAgICAgICAgICAgIDB4
MEFFNiwgMHgwQUU3LCAweDBBRTgsIDB4MEFFOSwgMHgwQUVBLCAweDBBRUIsIDB4MEFFQywgMHgw
QUVELCAweDBBRUUsIDB4MEFFRgorICAgICAgICB9OworICAgICAgICB0b051bWVyaWMoYnVpbGRl
ciwgdmFsdWUsIGd1amFyYXRpTnVtZXJhbHMpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpHdXJtdWtoaTogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNo
YXIgZ3VybXVraGlOdW1lcmFsc1sxMF0gPSB7CisgICAgICAgICAgICAweDBBNjYsIDB4MEE2Nywg
MHgwQTY4LCAweDBBNjksIDB4MEE2QSwgMHgwQTZCLCAweDBBNkMsIDB4MEE2RCwgMHgwQTZFLCAw
eDBBNkYKKyAgICAgICAgfTsKKyAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBndXJt
dWtoaU51bWVyYWxzKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6S2FubmFkYTogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIga2FubmFkYU51bWVy
YWxzWzEwXSA9IHsKKyAgICAgICAgICAgIDB4MENFNiwgMHgwQ0U3LCAweDBDRTgsIDB4MENFOSwg
MHgwQ0VBLCAweDBDRUIsIDB4MENFQywgMHgwQ0VELCAweDBDRUUsIDB4MENFRgorICAgICAgICB9
OworICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIGthbm5hZGFOdW1lcmFscyk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VySGV4YWRl
Y2ltYWw6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IExDaGFyIGxvd2VySGV4YWRlY2ltYWxOdW1l
cmFsc1sxNl0gPSB7CisgICAgICAgICAgICAnMCcsICcxJywgJzInLCAnMycsICc0JywgJzUnLCAn
NicsICc3JywgJzgnLCAnOScsICdhJywgJ2InLCAnYycsICdkJywgJ2UnLCAnZicKKyAgICAgICAg
fTsKKyAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZhbHVlLCBsb3dlckhleGFkZWNpbWFsTnVt
ZXJhbHMpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpM
YW86IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGxhb051bWVyYWxzWzEwXSA9IHsKKyAg
ICAgICAgICAgIDB4MEVEMCwgMHgwRUQxLCAweDBFRDIsIDB4MEVEMywgMHgwRUQ0LCAweDBFRDUs
IDB4MEVENiwgMHgwRUQ3LCAweDBFRDgsIDB4MEVEOQorICAgICAgICB9OworICAgICAgICB0b051
bWVyaWMoYnVpbGRlciwgdmFsdWUsIGxhb051bWVyYWxzKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TWFsYXlhbGFtOiB7CisgICAgICAgIHN0YXRpYyBj
b25zdCBVQ2hhciBtYWxheWFsYW1OdW1lcmFsc1sxMF0gPSB7CisgICAgICAgICAgICAweDBENjYs
IDB4MEQ2NywgMHgwRDY4LCAweDBENjksIDB4MEQ2QSwgMHgwRDZCLCAweDBENkMsIDB4MEQ2RCwg
MHgwRDZFLCAweDBENkYKKyAgICAgICAgfTsKKyAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIsIHZh
bHVlLCBtYWxheWFsYW1OdW1lcmFscyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6Ok1vbmdvbGlhbjogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIg
bW9uZ29saWFuTnVtZXJhbHNbMTBdID0geworICAgICAgICAgICAgMHgxODEwLCAweDE4MTEsIDB4
MTgxMiwgMHgxODEzLCAweDE4MTQsIDB4MTgxNSwgMHgxODE2LCAweDE4MTcsIDB4MTgxOCwgMHgx
ODE5CisgICAgICAgIH07CisgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgbW9uZ29s
aWFuTnVtZXJhbHMpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpNeWFubWFyOiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBteWFubWFyTnVtZXJh
bHNbMTBdID0geworICAgICAgICAgICAgMHgxMDQwLCAweDEwNDEsIDB4MTA0MiwgMHgxMDQzLCAw
eDEwNDQsIDB4MTA0NSwgMHgxMDQ2LCAweDEwNDcsIDB4MTA0OCwgMHgxMDQ5CisgICAgICAgIH07
CisgICAgICAgIHRvTnVtZXJpYyhidWlsZGVyLCB2YWx1ZSwgbXlhbm1hck51bWVyYWxzKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6T2N0YWw6IHsKKyAg
ICAgICAgc3RhdGljIGNvbnN0IExDaGFyIG9jdGFsTnVtZXJhbHNbOF0gPSB7CisgICAgICAgICAg
ICAnMCcsICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JworICAgICAgICB9OworICAg
ICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIG9jdGFsTnVtZXJhbHMpOworICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpPcml5YTogeworICAgICAgICBz
dGF0aWMgY29uc3QgVUNoYXIgb3JpeWFOdW1lcmFsc1sxMF0gPSB7CisgICAgICAgICAgICAweDBC
NjYsIDB4MEI2NywgMHgwQjY4LCAweDBCNjksIDB4MEI2QSwgMHgwQjZCLCAweDBCNkMsIDB4MEI2
RCwgMHgwQjZFLCAweDBCNkYKKyAgICAgICAgfTsKKyAgICAgICAgdG9OdW1lcmljKGJ1aWxkZXIs
IHZhbHVlLCBvcml5YU51bWVyYWxzKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6UGVyc2lhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVyZHU6IHsK
KyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIHVyZHVOdW1lcmFsc1sxMF0gPSB7CisgICAgICAg
ICAgICAweDA2RjAsIDB4MDZGMSwgMHgwNkYyLCAweDA2RjMsIDB4MDZGNCwgMHgwNkY1LCAweDA2
RjYsIDB4MDZGNywgMHgwNkY4LCAweDA2RjkKKyAgICAgICAgfTsKKyAgICAgICAgdG9OdW1lcmlj
KGJ1aWxkZXIsIHZhbHVlLCB1cmR1TnVtZXJhbHMpOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUZWx1Z3U6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVD
aGFyIHRlbHVndU51bWVyYWxzWzEwXSA9IHsKKyAgICAgICAgICAgIDB4MEM2NiwgMHgwQzY3LCAw
eDBDNjgsIDB4MEM2OSwgMHgwQzZBLCAweDBDNkIsIDB4MEM2QywgMHgwQzZELCAweDBDNkUsIDB4
MEM2RgorICAgICAgICB9OworICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIHRlbHVn
dU51bWVyYWxzKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6VGliZXRhbjogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgdGliZXRhbk51bWVyYWxz
WzEwXSA9IHsKKyAgICAgICAgICAgIDB4MEYyMCwgMHgwRjIxLCAweDBGMjIsIDB4MEYyMywgMHgw
RjI0LCAweDBGMjUsIDB4MEYyNiwgMHgwRjI3LCAweDBGMjgsIDB4MEYyOQorICAgICAgICB9Owor
ICAgICAgICB0b051bWVyaWMoYnVpbGRlciwgdmFsdWUsIHRpYmV0YW5OdW1lcmFscyk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRoYWk6IHsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IFVDaGFyIHRoYWlOdW1lcmFsc1sxMF0gPSB7CisgICAgICAgICAgICAw
eDBFNTAsIDB4MEU1MSwgMHgwRTUyLCAweDBFNTMsIDB4MEU1NCwgMHgwRTU1LCAweDBFNTYsIDB4
MEU1NywgMHgwRTU4LCAweDBFNTkKKyAgICAgICAgfTsKKyAgICAgICAgdG9OdW1lcmljKGJ1aWxk
ZXIsIHZhbHVlLCB0aGFpTnVtZXJhbHMpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpVcHBlckhleGFkZWNpbWFsOiB7CisgICAgICAgIHN0YXRpYyBjb25z
dCBMQ2hhciB1cHBlckhleGFkZWNpbWFsTnVtZXJhbHNbMTZdID0geworICAgICAgICAgICAgJzAn
LCAnMScsICcyJywgJzMnLCAnNCcsICc1JywgJzYnLCAnNycsICc4JywgJzknLCAnQScsICdCJywg
J0MnLCAnRCcsICdFJywgJ0YnCisgICAgICAgIH07CisgICAgICAgIHRvTnVtZXJpYyhidWlsZGVy
LCB2YWx1ZSwgdXBwZXJIZXhhZGVjaW1hbE51bWVyYWxzKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQogCi0gICAgICAgIGNhc2UgQWZhcjoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lQWFF
dDoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lQWFFcjogewotICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IFVDaGFyIGV0aGlvcGljSGFsZWhhbWVBYUVyQWxwaGFiZXRbMThdID0gewotICAg
ICAgICAgICAgICAgIDB4MTIwMCwgMHgxMjA4LCAweDEyMTAsIDB4MTIxOCwgMHgxMjI4LCAweDEy
MzAsIDB4MTI2MCwgMHgxMjcwLCAweDEyOTAsCi0gICAgICAgICAgICAgICAgMHgxMkEwLCAweDEy
QTgsIDB4MTJDOCwgMHgxMkQwLCAweDEyRTgsIDB4MTJGMCwgMHgxMzA4LCAweDEzMzgsIDB4MTM0
OAotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1
ZSwgZXRoaW9waWNIYWxlaGFtZUFhRXJBbHBoYWJldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotICAgICAgICBjYXNlIEFtaGFyaWM6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxl
aGFtZUFtRXQ6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBldGhpb3BpY0hhbGVo
YW1lQW1FdEFscGhhYmV0WzMzXSA9IHsKLSAgICAgICAgICAgICAgICAweDEyMDAsIDB4MTIwOCwg
MHgxMjEwLCAweDEyMTgsIDB4MTIyMCwgMHgxMjI4LCAweDEyMzAsIDB4MTIzOCwgMHgxMjQwLAot
ICAgICAgICAgICAgICAgIDB4MTI2MCwgMHgxMjcwLCAweDEyNzgsIDB4MTI4MCwgMHgxMjkwLCAw
eDEyOTgsIDB4MTJBMCwgMHgxMkE4LCAweDEyQjgsCi0gICAgICAgICAgICAgICAgMHgxMkM4LCAw
eDEyRDAsIDB4MTJEOCwgMHgxMkUwLCAweDEyRTgsIDB4MTJGMCwgMHgxMzAwLCAweDEzMDgsIDB4
MTMyMCwKLSAgICAgICAgICAgICAgICAweDEzMjgsIDB4MTMzMCwgMHgxMzM4LCAweDEzNDAsIDB4
MTM0OCwgMHgxMzUwCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9BbHBoYWJldGljKGJ1
aWxkZXIsIHZhbHVlLCBldGhpb3BpY0hhbGVoYW1lQW1FdEFscGhhYmV0KTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQW1oYXJpY0FiZWdlZGU6Ci0gICAgICAg
IGNhc2UgRXRoaW9waWNBYmVnZWRlQW1FdDogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVD
aGFyIGV0aGlvcGljQWJlZ2VkZUFtRXRBbHBoYWJldFszM10gPSB7Ci0gICAgICAgICAgICAgICAg
MHgxMkEwLCAweDEyNjAsIDB4MTMwOCwgMHgxMkYwLCAweDEzMDAsIDB4MTIwMCwgMHgxMkM4LCAw
eDEyRDgsIDB4MTJFMCwKLSAgICAgICAgICAgICAgICAweDEyMTAsIDB4MTMyMCwgMHgxMzI4LCAw
eDEyRTgsIDB4MTJBOCwgMHgxMkI4LCAweDEyMDgsIDB4MTIxOCwgMHgxMjkwLAotICAgICAgICAg
ICAgICAgIDB4MTI5OCwgMHgxMjIwLCAweDEyRDAsIDB4MTM0OCwgMHgxMzM4LCAweDEyNDAsIDB4
MTIyOCwgMHgxMjMwLCAweDEyMzgsCi0gICAgICAgICAgICAgICAgMHgxMjcwLCAweDEyNzgsIDB4
MTI4MCwgMHgxMzQwLCAweDEzMzAsIDB4MTM1MAotICAgICAgICAgICAgfTsKLSAgICAgICAgICAg
IHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNBYmVnZWRlQW1FdEFscGhhYmV0
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ2prRWFydGhs
eUJyYW5jaDogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGNqa0VhcnRobHlCcmFu
Y2hBbHBoYWJldFsxMl0gPSB7Ci0gICAgICAgICAgICAgICAgMHg1QjUwLCAweDRFMTEsIDB4NUJD
NSwgMHg1MzZGLCAweDhGQjAsIDB4NURGMywgMHg1MzQ4LCAweDY3MkEsIDB4NzUzMywKLSAgICAg
ICAgICAgICAgICAweDkxNDksIDB4NjIwQywgMHg0RUE1Ci0gICAgICAgICAgICB9OwotICAgICAg
ICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBjamtFYXJ0aGx5QnJhbmNoQWxwaGFi
ZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDamtIZWF2
ZW5seVN0ZW06IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjamtIZWF2ZW5seVN0
ZW1BbHBoYWJldFsxMF0gPSB7Ci0gICAgICAgICAgICAgICAgMHg3NTMyLCAweDRFNTksIDB4NEUx
OSwgMHg0RTAxLCAweDYyMEEsIDB4NURGMSwgMHg1RTlBLCAweDhGOUIsIDB4NThFQywKLSAgICAg
ICAgICAgICAgICAweDc2NzgKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b0FscGhhYmV0
aWMoYnVpbGRlciwgdmFsdWUsIGNqa0hlYXZlbmx5U3RlbUFscGhhYmV0KTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgRXRoaW9waWM6Ci0gICAgICAgIGNhc2Ug
RXRoaW9waWNIYWxlaGFtZUdlejogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGV0
aGlvcGljSGFsZWhhbWVHZXpBbHBoYWJldFsyNl0gPSB7Ci0gICAgICAgICAgICAgICAgMHgxMjAw
LCAweDEyMDgsIDB4MTIxMCwgMHgxMjE4LCAweDEyMjAsIDB4MTIyOCwgMHgxMjMwLCAweDEyNDAs
IDB4MTI2MCwKLSAgICAgICAgICAgICAgICAweDEyNzAsIDB4MTI4MCwgMHgxMjkwLCAweDEyQTAs
IDB4MTJBOCwgMHgxMkM4LCAweDEyRDAsIDB4MTJEOCwgMHgxMkU4LAotICAgICAgICAgICAgICAg
IDB4MTJGMCwgMHgxMzA4LCAweDEzMjAsIDB4MTMzMCwgMHgxMzM4LCAweDEzNDAsIDB4MTM0OCwg
MHgxMzUwCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIs
IHZhbHVlLCBldGhpb3BpY0hhbGVoYW1lR2V6QWxwaGFiZXQpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBFdGhpb3BpY0FiZWdlZGU6Ci0gICAgICAgIGNhc2Ug
RXRoaW9waWNBYmVnZWRlR2V6OiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZXRo
aW9waWNBYmVnZWRlR2V6QWxwaGFiZXRbMjZdID0gewotICAgICAgICAgICAgICAgIDB4MTJBMCwg
MHgxMjYwLCAweDEzMDgsIDB4MTJGMCwgMHgxMjAwLCAweDEyQzgsIDB4MTJEOCwgMHgxMjEwLCAw
eDEzMjAsCi0gICAgICAgICAgICAgICAgMHgxMkU4LCAweDEyQTgsIDB4MTIwOCwgMHgxMjE4LCAw
eDEyOTAsIDB4MTIyMCwgMHgxMkQwLCAweDEzNDgsIDB4MTMzOCwKLSAgICAgICAgICAgICAgICAw
eDEyNDAsIDB4MTIyOCwgMHgxMjMwLCAweDEyNzAsIDB4MTI4MCwgMHgxMzQwLCAweDEzMzAsIDB4
MTM1MAotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2
YWx1ZSwgZXRoaW9waWNBYmVnZWRlR2V6QWxwaGFiZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICAgICAgY2FzZSBIYW5ndWxDb25zb25hbnQ6IHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBVQ2hhciBoYW5ndWxDb25zb25hbnRBbHBoYWJldFsxNF0gPSB7Ci0gICAgICAg
ICAgICAgICAgMHgzMTMxLCAweDMxMzQsIDB4MzEzNywgMHgzMTM5LCAweDMxNDEsIDB4MzE0Miwg
MHgzMTQ1LCAweDMxNDcsIDB4MzE0OCwKLSAgICAgICAgICAgICAgICAweDMxNEEsIDB4MzE0Qiwg
MHgzMTRDLCAweDMxNEQsIDB4MzE0RQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvQWxw
aGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgaGFuZ3VsQ29uc29uYW50QWxwaGFiZXQpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBIYW5ndWw6IHsKLSAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBVQ2hhciBoYW5ndWxBbHBoYWJldFsxNF0gPSB7Ci0gICAgICAgICAg
ICAgICAgMHhBQzAwLCAweEIwOTgsIDB4QjJFNCwgMHhCNzdDLCAweEI5QzgsIDB4QkMxNCwgMHhD
MEFDLCAweEM1NDQsIDB4Qzc5MCwKLSAgICAgICAgICAgICAgICAweENDMjgsIDB4Q0U3NCwgMHhE
MEMwLCAweEQzMEMsIDB4RDU1OAotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRvQWxwaGFi
ZXRpYyhidWlsZGVyLCB2YWx1ZSwgaGFuZ3VsQWxwaGFiZXQpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBPcm9tbzoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hh
bGVoYW1lT21FdDogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGV0aGlvcGljSGFs
ZWhhbWVPbUV0QWxwaGFiZXRbMjVdID0gewotICAgICAgICAgICAgICAgIDB4MTIwMCwgMHgxMjA4
LCAweDEyMTgsIDB4MTIyOCwgMHgxMjMwLCAweDEyMzgsIDB4MTI0MCwgMHgxMjYwLCAweDEyNzAs
Ci0gICAgICAgICAgICAgICAgMHgxMjc4LCAweDEyOTAsIDB4MTI5OCwgMHgxMkEwLCAweDEyQTgs
IDB4MTJDOCwgMHgxMkU4LCAweDEyRjAsIDB4MTJGOCwKLSAgICAgICAgICAgICAgICAweDEzMDAs
IDB4MTMwOCwgMHgxMzIwLCAweDEzMjgsIDB4MTMzOCwgMHgxMzMwLCAweDEzNDgKLSAgICAgICAg
ICAgIH07Ci0gICAgICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGV0aGlvcGlj
SGFsZWhhbWVPbUV0QWxwaGFiZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICAgICAgY2FzZSBTaWRhbWE6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVNpZEV0OiB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZXRoaW9waWNIYWxlaGFtZVNpZEV0QWxw
aGFiZXRbMjZdID0gewotICAgICAgICAgICAgICAgIDB4MTIwMCwgMHgxMjA4LCAweDEyMTAsIDB4
MTIxOCwgMHgxMjI4LCAweDEyMzAsIDB4MTIzOCwgMHgxMjQwLCAweDEyNjAsCi0gICAgICAgICAg
ICAgICAgMHgxMjcwLCAweDEyNzgsIDB4MTI5MCwgMHgxMjk4LCAweDEyQTAsIDB4MTJBOCwgMHgx
MkM4LCAweDEyRTgsIDB4MTJGMCwKLSAgICAgICAgICAgICAgICAweDEyRjgsIDB4MTMwMCwgMHgx
MzA4LCAweDEzMjAsIDB4MTMyOCwgMHgxMzM4LCAweDEzMzAsIDB4MTM0OAotICAgICAgICAgICAg
fTsKLSAgICAgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNIYWxl
aGFtZVNpZEV0QWxwaGFiZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBTb21hbGk6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVNvRXQ6IHsKLSAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBldGhpb3BpY0hhbGVoYW1lU29FdEFscGhhYmV0
WzIyXSA9IHsKLSAgICAgICAgICAgICAgICAweDEyMDAsIDB4MTIwOCwgMHgxMjEwLCAweDEyMTgs
IDB4MTIyOCwgMHgxMjMwLCAweDEyMzgsIDB4MTI0MCwgMHgxMjYwLAotICAgICAgICAgICAgICAg
IDB4MTI3MCwgMHgxMjkwLCAweDEyQTAsIDB4MTJBOCwgMHgxMkI4LCAweDEyQzgsIDB4MTJEMCwg
MHgxMkU4LCAweDEyRjAsCi0gICAgICAgICAgICAgICAgMHgxMzAwLCAweDEzMDgsIDB4MTMzOCwg
MHgxMzQ4Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIs
IHZhbHVlLCBldGhpb3BpY0hhbGVoYW1lU29FdEFscGhhYmV0KTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVGlncmU6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNI
YWxlaGFtZVRpZzogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGV0aGlvcGljSGFs
ZWhhbWVUaWdBbHBoYWJldFsyN10gPSB7Ci0gICAgICAgICAgICAgICAgMHgxMjAwLCAweDEyMDgs
IDB4MTIxMCwgMHgxMjE4LCAweDEyMjgsIDB4MTIzMCwgMHgxMjM4LCAweDEyNDAsIDB4MTI2MCwK
LSAgICAgICAgICAgICAgICAweDEyNzAsIDB4MTI3OCwgMHgxMjkwLCAweDEyQTAsIDB4MTJBOCwg
MHgxMkM4LCAweDEyRDAsIDB4MTJEOCwgMHgxMkU4LAotICAgICAgICAgICAgICAgIDB4MTJGMCwg
MHgxMzAwLCAweDEzMDgsIDB4MTMyMCwgMHgxMzI4LCAweDEzMzgsIDB4MTMzMCwgMHgxMzQ4LCAw
eDEzNTAKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwg
dmFsdWUsIGV0aGlvcGljSGFsZWhhbWVUaWdBbHBoYWJldCk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICBjYXNlIFRpZ3JpbnlhRXI6Ci0gICAgICAgIGNhc2UgRXRoaW9w
aWNIYWxlaGFtZVRpRXI6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBldGhpb3Bp
Y0hhbGVoYW1lVGlFckFscGhhYmV0WzMxXSA9IHsKLSAgICAgICAgICAgICAgICAweDEyMDAsIDB4
MTIwOCwgMHgxMjEwLCAweDEyMTgsIDB4MTIyOCwgMHgxMjMwLCAweDEyMzgsIDB4MTI0MCwgMHgx
MjUwLAotICAgICAgICAgICAgICAgIDB4MTI2MCwgMHgxMjcwLCAweDEyNzgsIDB4MTI5MCwgMHgx
Mjk4LCAweDEyQTAsIDB4MTJBOCwgMHgxMkI4LCAweDEyQzgsCi0gICAgICAgICAgICAgICAgMHgx
MkQwLCAweDEyRDgsIDB4MTJFMCwgMHgxMkU4LCAweDEyRjAsIDB4MTMwMCwgMHgxMzA4LCAweDEz
MjAsIDB4MTMyOCwKLSAgICAgICAgICAgICAgICAweDEzMzAsIDB4MTMzOCwgMHgxMzQ4LCAweDEz
NTAKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFs
dWUsIGV0aGlvcGljSGFsZWhhbWVUaUVyQWxwaGFiZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICAgICAgY2FzZSBUaWdyaW55YUVyQWJlZ2VkZToKLSAgICAgICAgY2FzZSBF
dGhpb3BpY0FiZWdlZGVUaUVyOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZXRo
aW9waWNBYmVnZWRlVGlFckFscGhhYmV0WzMxXSA9IHsKLSAgICAgICAgICAgICAgICAweDEyQTAs
IDB4MTI2MCwgMHgxMzA4LCAweDEyRjAsIDB4MTMwMCwgMHgxMjAwLCAweDEyQzgsIDB4MTJEOCwg
MHgxMkUwLAotICAgICAgICAgICAgICAgIDB4MTIxMCwgMHgxMzIwLCAweDEzMjgsIDB4MTJFOCwg
MHgxMkE4LCAweDEyQjgsIDB4MTIwOCwgMHgxMjE4LCAweDEyOTAsCi0gICAgICAgICAgICAgICAg
MHgxMjk4LCAweDEyRDAsIDB4MTM0OCwgMHgxMzM4LCAweDEyNDAsIDB4MTI1MCwgMHgxMjI4LCAw
eDEyMzAsIDB4MTIzOCwKLSAgICAgICAgICAgICAgICAweDEyNzAsIDB4MTI3OCwgMHgxMzMwLCAw
eDEzNTAKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwg
dmFsdWUsIGV0aGlvcGljQWJlZ2VkZVRpRXJBbHBoYWJldCk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICBjYXNlIFRpZ3JpbnlhRXQ6Ci0gICAgICAgIGNhc2UgRXRoaW9w
aWNIYWxlaGFtZVRpRXQ6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBldGhpb3Bp
Y0hhbGVoYW1lVGlFdEFscGhhYmV0WzM0XSA9IHsKLSAgICAgICAgICAgICAgICAweDEyMDAsIDB4
MTIwOCwgMHgxMjEwLCAweDEyMTgsIDB4MTIyMCwgMHgxMjI4LCAweDEyMzAsIDB4MTIzOCwgMHgx
MjQwLAotICAgICAgICAgICAgICAgIDB4MTI1MCwgMHgxMjYwLCAweDEyNzAsIDB4MTI3OCwgMHgx
MjgwLCAweDEyOTAsIDB4MTI5OCwgMHgxMkEwLCAweDEyQTgsCi0gICAgICAgICAgICAgICAgMHgx
MkI4LCAweDEyQzgsIDB4MTJEMCwgMHgxMkQ4LCAweDEyRTAsIDB4MTJFOCwgMHgxMkYwLCAweDEz
MDAsIDB4MTMwOCwKLSAgICAgICAgICAgICAgICAweDEzMjAsIDB4MTMyOCwgMHgxMzMwLCAweDEz
MzgsIDB4MTM0MCwgMHgxMzQ4LCAweDEzNTAKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0
b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGV0aGlvcGljSGFsZWhhbWVUaUV0QWxwaGFiZXQp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUaWdyaW55YUV0
QWJlZ2VkZToKLSAgICAgICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVUaUV0OiB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgVUNoYXIgZXRoaW9waWNBYmVnZWRlVGlFdEFscGhhYmV0WzM0XSA9IHsK
LSAgICAgICAgICAgICAgICAweDEyQTAsIDB4MTI2MCwgMHgxMzA4LCAweDEyRjAsIDB4MTMwMCwg
MHgxMjAwLCAweDEyQzgsIDB4MTJEOCwgMHgxMkUwLAotICAgICAgICAgICAgICAgIDB4MTIxMCwg
MHgxMzIwLCAweDEzMjgsIDB4MTJFOCwgMHgxMkE4LCAweDEyQjgsIDB4MTIwOCwgMHgxMjE4LCAw
eDEyOTAsCi0gICAgICAgICAgICAgICAgMHgxMjk4LCAweDEyMjAsIDB4MTJEMCwgMHgxMzQ4LCAw
eDEzMzgsIDB4MTI0MCwgMHgxMjUwLCAweDEyMjgsIDB4MTIzMCwKLSAgICAgICAgICAgICAgICAw
eDEyMzgsIDB4MTI3MCwgMHgxMjc4LCAweDEyODAsIDB4MTM0MCwgMHgxMzMwLCAweDEzNTAKLSAg
ICAgICAgICAgIH07Ci0gICAgICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGV0
aGlvcGljQWJlZ2VkZVRpRXRBbHBoYWJldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIFVwcGVyR3JlZWs6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBV
Q2hhciB1cHBlckdyZWVrQWxwaGFiZXRbMjRdID0gewotICAgICAgICAgICAgICAgIDB4MDM5MSwg
MHgwMzkyLCAweDAzOTMsIDB4MDM5NCwgMHgwMzk1LCAweDAzOTYsIDB4MDM5NywgMHgwMzk4LCAw
eDAzOTksCi0gICAgICAgICAgICAgICAgMHgwMzlBLCAweDAzOUIsIDB4MDM5QywgMHgwMzlELCAw
eDAzOUUsIDB4MDM5RiwgMHgwM0EwLCAweDAzQTEsIDB4MDNBMywKLSAgICAgICAgICAgICAgICAw
eDAzQTQsIDB4MDNBNSwgMHgwM0E2LCAweDAzQTcsIDB4MDNBOCwgMHgwM0E5Ci0gICAgICAgICAg
ICB9OwotICAgICAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCB1cHBlckdyZWVr
QWxwaGFiZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBM
b3dlck5vcndlZ2lhbjogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IExDaGFyIGxvd2VyTm9y
d2VnaWFuQWxwaGFiZXRbMjldID0gewotICAgICAgICAgICAgICAgIDB4NjEsIDB4NjIsIDB4NjMs
IDB4NjQsIDB4NjUsIDB4NjYsIDB4NjcsIDB4NjgsIDB4NjksCi0gICAgICAgICAgICAgICAgMHg2
QSwgMHg2QiwgMHg2QywgMHg2RCwgMHg2RSwgMHg2RiwgMHg3MCwgMHg3MSwgMHg3MiwKLSAgICAg
ICAgICAgICAgICAweDczLCAweDc0LCAweDc1LCAweDc2LCAweDc3LCAweDc4LCAweDc5LCAweDdB
LCAweEU2LAotICAgICAgICAgICAgICAgIDB4RjgsIDB4RTUKLSAgICAgICAgICAgIH07Ci0gICAg
ICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGxvd2VyTm9yd2VnaWFuQWxwaGFi
ZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBVcHBlck5v
cndlZ2lhbjogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IExDaGFyIHVwcGVyTm9yd2VnaWFu
QWxwaGFiZXRbMjldID0gewotICAgICAgICAgICAgICAgIDB4NDEsIDB4NDIsIDB4NDMsIDB4NDQs
IDB4NDUsIDB4NDYsIDB4NDcsIDB4NDgsIDB4NDksCi0gICAgICAgICAgICAgICAgMHg0QSwgMHg0
QiwgMHg0QywgMHg0RCwgMHg0RSwgMHg0RiwgMHg1MCwgMHg1MSwgMHg1MiwKLSAgICAgICAgICAg
ICAgICAweDUzLCAweDU0LCAweDU1LCAweDU2LCAweDU3LCAweDU4LCAweDU5LCAweDVBLCAweEM2
LAotICAgICAgICAgICAgICAgIDB4RDgsIDB4QzUKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAg
ICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIHVwcGVyTm9yd2VnaWFuQWxwaGFiZXQpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDSktJZGVvZ3JhcGhp
YzogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIHRyYWRpdGlvbmFsQ2hpbmVzZUlu
Zm9ybWFsVGFibGVbMTZdID0gewotICAgICAgICAgICAgICAgIDB4ODQyQywgMHg1MTA0LCAweDUx
NDYsCi0gICAgICAgICAgICAgICAgMHg1MzQxLCAweDc2N0UsIDB4NTM0MywKLSAgICAgICAgICAg
ICAgICAweDk2RjYsIDB4NEUwMCwgMHg0RThDLCAweDRFMDksIDB4NTZEQiwKLSAgICAgICAgICAg
ICAgICAweDRFOTQsIDB4NTE2RCwgMHg0RTAzLCAweDUxNkIsIDB4NEU1RAotICAgICAgICAgICAg
fTsKLSAgICAgICAgICAgIHRvQ0pLSWRlb2dyYXBoaWMoYnVpbGRlciwgdmFsdWUsIHRyYWRpdGlv
bmFsQ2hpbmVzZUluZm9ybWFsVGFibGUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyQWxwaGE6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpMb3dlckxhdGluOiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBMQ2hhciBsb3dlckxhdGlu
QWxwaGFiZXRbMjZdID0geworICAgICAgICAgICAgJ2EnLCAnYicsICdjJywgJ2QnLCAnZScsICdm
JywgJ2cnLCAnaCcsICdpJywgJ2onLCAnaycsICdsJywgJ20nLAorICAgICAgICAgICAgJ24nLCAn
bycsICdwJywgJ3EnLCAncicsICdzJywgJ3QnLCAndScsICd2JywgJ3cnLCAneCcsICd5JywgJ3on
CisgICAgICAgIH07CisgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgbG93ZXJM
YXRpbkFscGhhYmV0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6VXBwZXJBbHBoYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyTGF0aW46IHsK
KyAgICAgICAgc3RhdGljIGNvbnN0IExDaGFyIHVwcGVyTGF0aW5BbHBoYWJldFsyNl0gPSB7Cisg
ICAgICAgICAgICAnQScsICdCJywgJ0MnLCAnRCcsICdFJywgJ0YnLCAnRycsICdIJywgJ0knLCAn
SicsICdLJywgJ0wnLCAnTScsCisgICAgICAgICAgICAnTicsICdPJywgJ1AnLCAnUScsICdSJywg
J1MnLCAnVCcsICdVJywgJ1YnLCAnVycsICdYJywgJ1knLCAnWicKKyAgICAgICAgfTsKKyAgICAg
ICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCB1cHBlckxhdGluQWxwaGFiZXQpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckdyZWVrOiB7
CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBsb3dlckdyZWVrQWxwaGFiZXRbMjRdID0gewor
ICAgICAgICAgICAgMHgwM0IxLCAweDAzQjIsIDB4MDNCMywgMHgwM0I0LCAweDAzQjUsIDB4MDNC
NiwgMHgwM0I3LCAweDAzQjgsCisgICAgICAgICAgICAweDAzQjksIDB4MDNCQSwgMHgwM0JCLCAw
eDAzQkMsIDB4MDNCRCwgMHgwM0JFLCAweDAzQkYsIDB4MDNDMCwKKyAgICAgICAgICAgIDB4MDND
MSwgMHgwM0MzLCAweDAzQzQsIDB4MDNDNSwgMHgwM0M2LCAweDAzQzcsIDB4MDNDOCwgMHgwM0M5
CisgICAgICAgIH07CisgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgbG93ZXJH
cmVla0FscGhhYmV0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCi0gICAgICAgIGNhc2UgTG93
ZXJSb21hbjoKLSAgICAgICAgICAgIHRvUm9tYW4oYnVpbGRlciwgdmFsdWUsIGZhbHNlKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFVwcGVyUm9tYW46Ci0gICAgICAgICAgICB0
b1JvbWFuKGJ1aWxkZXIsIHZhbHVlLCB0cnVlKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6SGlyYWdhbmE6IHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgdGFi
bGUgY29tZXMgZnJvbSB0aGUgQ1NTMyBkcmFmdCwgYW5kIGlzIHByb2JhYmx5CisgICAgICAgIC8v
IGluY29ycmVjdCwgZ2l2ZW4gdGhlIGNvbW1lbnRzIGluIHRoYXQgZHJhZnQuCisgICAgICAgIHN0
YXRpYyBjb25zdCBVQ2hhciBoaXJhZ2FuYUFscGhhYmV0WzQ4XSA9IHsKKyAgICAgICAgICAgIDB4
MzA0MiwgMHgzMDQ0LCAweDMwNDYsIDB4MzA0OCwgMHgzMDRBLCAweDMwNEIsIDB4MzA0RCwgMHgz
MDRGLAorICAgICAgICAgICAgMHgzMDUxLCAweDMwNTMsIDB4MzA1NSwgMHgzMDU3LCAweDMwNTks
IDB4MzA1QiwgMHgzMDVELCAweDMwNUYsCisgICAgICAgICAgICAweDMwNjEsIDB4MzA2NCwgMHgz
MDY2LCAweDMwNjgsIDB4MzA2QSwgMHgzMDZCLCAweDMwNkMsIDB4MzA2RCwKKyAgICAgICAgICAg
IDB4MzA2RSwgMHgzMDZGLCAweDMwNzIsIDB4MzA3NSwgMHgzMDc4LCAweDMwN0IsIDB4MzA3RSwg
MHgzMDdGLAorICAgICAgICAgICAgMHgzMDgwLCAweDMwODEsIDB4MzA4MiwgMHgzMDg0LCAweDMw
ODYsIDB4MzA4OCwgMHgzMDg5LCAweDMwOEEsCisgICAgICAgICAgICAweDMwOEIsIDB4MzA4Qywg
MHgzMDhELCAweDMwOEYsIDB4MzA5MCwgMHgzMDkxLCAweDMwOTIsIDB4MzA5MworICAgICAgICB9
OworICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGhpcmFnYW5hQWxwaGFiZXQp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIaXJhZ2Fu
YUlyb2hhOiB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHRhYmxlIGNvbWVzIGZyb20gdGhlIENT
UzMgZHJhZnQsIGFuZCBpcyBwcm9iYWJseQorICAgICAgICAvLyBpbmNvcnJlY3QsIGdpdmVuIHRo
ZSBjb21tZW50cyBpbiB0aGF0IGRyYWZ0LgorICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgaGly
YWdhbmFJcm9oYUFscGhhYmV0WzQ3XSA9IHsKKyAgICAgICAgICAgIDB4MzA0NCwgMHgzMDhELCAw
eDMwNkYsIDB4MzA2QiwgMHgzMDdCLCAweDMwNzgsIDB4MzA2OCwgMHgzMDYxLAorICAgICAgICAg
ICAgMHgzMDhBLCAweDMwNkMsIDB4MzA4QiwgMHgzMDkyLCAweDMwOEYsIDB4MzA0QiwgMHgzMDg4
LCAweDMwNUYsCisgICAgICAgICAgICAweDMwOEMsIDB4MzA1RCwgMHgzMDY0LCAweDMwNkQsIDB4
MzA2QSwgMHgzMDg5LCAweDMwODAsIDB4MzA0NiwKKyAgICAgICAgICAgIDB4MzA5MCwgMHgzMDZF
LCAweDMwNEEsIDB4MzA0RiwgMHgzMDg0LCAweDMwN0UsIDB4MzA1MSwgMHgzMDc1LAorICAgICAg
ICAgICAgMHgzMDUzLCAweDMwNDgsIDB4MzA2NiwgMHgzMDQyLCAweDMwNTUsIDB4MzA0RCwgMHgz
MDg2LCAweDMwODEsCisgICAgICAgICAgICAweDMwN0YsIDB4MzA1NywgMHgzMDkxLCAweDMwNzIs
IDB4MzA4MiwgMHgzMDVCLCAweDMwNTkKKyAgICAgICAgfTsKKyAgICAgICAgdG9BbHBoYWJldGlj
KGJ1aWxkZXIsIHZhbHVlLCBoaXJhZ2FuYUlyb2hhQWxwaGFiZXQpOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLYXRha2FuYTogeworICAgICAgICAvLyBG
SVhNRTogVGhpcyB0YWJsZSBjb21lcyBmcm9tIHRoZSBDU1MzIGRyYWZ0LCBhbmQgaXMgcHJvYmFi
bHkKKyAgICAgICAgLy8gaW5jb3JyZWN0LCBnaXZlbiB0aGUgY29tbWVudHMgaW4gdGhhdCBkcmFm
dC4KKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGthdGFrYW5hQWxwaGFiZXRbNDhdID0gewor
ICAgICAgICAgICAgMHgzMEEyLCAweDMwQTQsIDB4MzBBNiwgMHgzMEE4LCAweDMwQUEsIDB4MzBB
QiwgMHgzMEFELCAweDMwQUYsCisgICAgICAgICAgICAweDMwQjEsIDB4MzBCMywgMHgzMEI1LCAw
eDMwQjcsIDB4MzBCOSwgMHgzMEJCLCAweDMwQkQsIDB4MzBCRiwKKyAgICAgICAgICAgIDB4MzBD
MSwgMHgzMEM0LCAweDMwQzYsIDB4MzBDOCwgMHgzMENBLCAweDMwQ0IsIDB4MzBDQywgMHgzMENE
LAorICAgICAgICAgICAgMHgzMENFLCAweDMwQ0YsIDB4MzBEMiwgMHgzMEQ1LCAweDMwRDgsIDB4
MzBEQiwgMHgzMERFLCAweDMwREYsCisgICAgICAgICAgICAweDMwRTAsIDB4MzBFMSwgMHgzMEUy
LCAweDMwRTQsIDB4MzBFNiwgMHgzMEU4LCAweDMwRTksIDB4MzBFQSwKKyAgICAgICAgICAgIDB4
MzBFQiwgMHgzMEVDLCAweDMwRUQsIDB4MzBFRiwgMHgzMEYwLCAweDMwRjEsIDB4MzBGMiwgMHgz
MEYzCisgICAgICAgIH07CisgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwga2F0
YWthbmFBbHBoYWJldCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OkthdGFrYW5hSXJvaGE6IHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgdGFibGUgY29t
ZXMgZnJvbSB0aGUgQ1NTMyBkcmFmdCwgYW5kIGlzIHByb2JhYmx5CisgICAgICAgIC8vIGluY29y
cmVjdCwgZ2l2ZW4gdGhlIGNvbW1lbnRzIGluIHRoYXQgZHJhZnQuCisgICAgICAgIHN0YXRpYyBj
b25zdCBVQ2hhciBrYXRha2FuYUlyb2hhQWxwaGFiZXRbNDddID0geworICAgICAgICAgICAgMHgz
MEE0LCAweDMwRUQsIDB4MzBDRiwgMHgzMENCLCAweDMwREIsIDB4MzBEOCwgMHgzMEM4LCAweDMw
QzEsCisgICAgICAgICAgICAweDMwRUEsIDB4MzBDQywgMHgzMEVCLCAweDMwRjIsIDB4MzBFRiwg
MHgzMEFCLCAweDMwRTgsIDB4MzBCRiwKKyAgICAgICAgICAgIDB4MzBFQywgMHgzMEJELCAweDMw
QzQsIDB4MzBDRCwgMHgzMENBLCAweDMwRTksIDB4MzBFMCwgMHgzMEE2LAorICAgICAgICAgICAg
MHgzMEYwLCAweDMwQ0UsIDB4MzBBQSwgMHgzMEFGLCAweDMwRTQsIDB4MzBERSwgMHgzMEIxLCAw
eDMwRDUsCisgICAgICAgICAgICAweDMwQjMsIDB4MzBBOCwgMHgzMEM2LCAweDMwQTIsIDB4MzBC
NSwgMHgzMEFELCAweDMwRTYsIDB4MzBFMSwKKyAgICAgICAgICAgIDB4MzBERiwgMHgzMEI3LCAw
eDMwRjEsIDB4MzBEMiwgMHgzMEUyLCAweDMwQkIsIDB4MzBCOQorICAgICAgICB9OworICAgICAg
ICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGthdGFrYW5hSXJvaGFBbHBoYWJldCk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KIAotICAgICAgICBjYXNlIEFybWVuaWFuOgotICAgICAgICBj
YXNlIFVwcGVyQXJtZW5pYW46Ci0gICAgICAgICAgICAvLyBDU1MzIHNheXMgImFybWVuaWFuIiBt
ZWFucyAibG93ZXItYXJtZW5pYW4iLgotICAgICAgICAgICAgLy8gQnV0IHRoZSBDU1MyLjEgdGVz
dCBzdWl0ZSBjb250YWlucyB1cHBlcmNhc2UgdGVzdCByZXN1bHRzIGZvciAiYXJtZW5pYW4iLAot
ICAgICAgICAgICAgLy8gc28gd2UnbGwgbWF0Y2ggdGhlIHRlc3Qgc3VpdGUuCi0gICAgICAgICAg
ICB0b0FybWVuaWFuKGJ1aWxkZXIsIHZhbHVlLCB0cnVlKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIExvd2VyQXJtZW5pYW46Ci0gICAgICAgICAgICB0b0FybWVuaWFuKGJ1aWxk
ZXIsIHZhbHVlLCBmYWxzZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHZW9y
Z2lhbjoKLSAgICAgICAgICAgIHRvR2VvcmdpYW4oYnVpbGRlciwgdmFsdWUpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSGVicmV3OgotICAgICAgICAgICAgdG9IZWJyZXcoYnVp
bGRlciwgdmFsdWUpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpBZmFyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUFhRXQ6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lQWFFcjogeworICAgICAgICBz
dGF0aWMgY29uc3QgVUNoYXIgZXRoaW9waWNIYWxlaGFtZUFhRXJBbHBoYWJldFsxOF0gPSB7Cisg
ICAgICAgICAgICAweDEyMDAsIDB4MTIwOCwgMHgxMjEwLCAweDEyMTgsIDB4MTIyOCwgMHgxMjMw
LCAweDEyNjAsIDB4MTI3MCwgMHgxMjkwLAorICAgICAgICAgICAgMHgxMkEwLCAweDEyQTgsIDB4
MTJDOCwgMHgxMkQwLCAweDEyRTgsIDB4MTJGMCwgMHgxMzA4LCAweDEzMzgsIDB4MTM0OAorICAg
ICAgICB9OworICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGV0aGlvcGljSGFs
ZWhhbWVBYUVyQWxwaGFiZXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpBbWhhcmljOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxl
aGFtZUFtRXQ6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGV0aGlvcGljSGFsZWhhbWVB
bUV0QWxwaGFiZXRbMzNdID0geworICAgICAgICAgICAgMHgxMjAwLCAweDEyMDgsIDB4MTIxMCwg
MHgxMjE4LCAweDEyMjAsIDB4MTIyOCwgMHgxMjMwLCAweDEyMzgsIDB4MTI0MCwKKyAgICAgICAg
ICAgIDB4MTI2MCwgMHgxMjcwLCAweDEyNzgsIDB4MTI4MCwgMHgxMjkwLCAweDEyOTgsIDB4MTJB
MCwgMHgxMkE4LCAweDEyQjgsCisgICAgICAgICAgICAweDEyQzgsIDB4MTJEMCwgMHgxMkQ4LCAw
eDEyRTAsIDB4MTJFOCwgMHgxMkYwLCAweDEzMDAsIDB4MTMwOCwgMHgxMzIwLAorICAgICAgICAg
ICAgMHgxMzI4LCAweDEzMzAsIDB4MTMzOCwgMHgxMzQwLCAweDEzNDgsIDB4MTM1MAorICAgICAg
ICB9OworICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGV0aGlvcGljSGFsZWhh
bWVBbUV0QWxwaGFiZXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpBbWhhcmljQWJlZ2VkZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGlj
QWJlZ2VkZUFtRXQ6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGV0aGlvcGljQWJlZ2Vk
ZUFtRXRBbHBoYWJldFszM10gPSB7CisgICAgICAgICAgICAweDEyQTAsIDB4MTI2MCwgMHgxMzA4
LCAweDEyRjAsIDB4MTMwMCwgMHgxMjAwLCAweDEyQzgsIDB4MTJEOCwgMHgxMkUwLAorICAgICAg
ICAgICAgMHgxMjEwLCAweDEzMjAsIDB4MTMyOCwgMHgxMkU4LCAweDEyQTgsIDB4MTJCOCwgMHgx
MjA4LCAweDEyMTgsIDB4MTI5MCwKKyAgICAgICAgICAgIDB4MTI5OCwgMHgxMjIwLCAweDEyRDAs
IDB4MTM0OCwgMHgxMzM4LCAweDEyNDAsIDB4MTIyOCwgMHgxMjMwLCAweDEyMzgsCisgICAgICAg
ICAgICAweDEyNzAsIDB4MTI3OCwgMHgxMjgwLCAweDEzNDAsIDB4MTMzMCwgMHgxMzUwCisgICAg
ICAgIH07CisgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNBYmVn
ZWRlQW1FdEFscGhhYmV0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6Q2prRWFydGhseUJyYW5jaDogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIg
Y2prRWFydGhseUJyYW5jaEFscGhhYmV0WzEyXSA9IHsKKyAgICAgICAgICAgIDB4NUI1MCwgMHg0
RTExLCAweDVCQzUsIDB4NTM2RiwgMHg4RkIwLCAweDVERjMsIDB4NTM0OCwgMHg2NzJBLCAweDc1
MzMsCisgICAgICAgICAgICAweDkxNDksIDB4NjIwQywgMHg0RUE1CisgICAgICAgIH07CisgICAg
ICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgY2prRWFydGhseUJyYW5jaEFscGhhYmV0
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2prSGVh
dmVubHlTdGVtOiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjamtIZWF2ZW5seVN0ZW1B
bHBoYWJldFsxMF0gPSB7CisgICAgICAgICAgICAweDc1MzIsIDB4NEU1OSwgMHg0RTE5LCAweDRF
MDEsIDB4NjIwQSwgMHg1REYxLCAweDVFOUEsIDB4OEY5QiwgMHg1OEVDLAorICAgICAgICAgICAg
MHg3Njc4CisgICAgICAgIH07CisgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwg
Y2prSGVhdmVubHlTdGVtQWxwaGFiZXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpYzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlv
cGljSGFsZWhhbWVHZXo6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGV0aGlvcGljSGFs
ZWhhbWVHZXpBbHBoYWJldFsyNl0gPSB7CisgICAgICAgICAgICAweDEyMDAsIDB4MTIwOCwgMHgx
MjEwLCAweDEyMTgsIDB4MTIyMCwgMHgxMjI4LCAweDEyMzAsIDB4MTI0MCwgMHgxMjYwLAorICAg
ICAgICAgICAgMHgxMjcwLCAweDEyODAsIDB4MTI5MCwgMHgxMkEwLCAweDEyQTgsIDB4MTJDOCwg
MHgxMkQwLCAweDEyRDgsIDB4MTJFOCwKKyAgICAgICAgICAgIDB4MTJGMCwgMHgxMzA4LCAweDEz
MjAsIDB4MTMzMCwgMHgxMzM4LCAweDEzNDAsIDB4MTM0OCwgMHgxMzUwCisgICAgICAgIH07Cisg
ICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNIYWxlaGFtZUdlekFs
cGhhYmV0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
RXRoaW9waWNBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRl
R2V6OiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBldGhpb3BpY0FiZWdlZGVHZXpBbHBo
YWJldFsyNl0gPSB7CisgICAgICAgICAgICAweDEyQTAsIDB4MTI2MCwgMHgxMzA4LCAweDEyRjAs
IDB4MTIwMCwgMHgxMkM4LCAweDEyRDgsIDB4MTIxMCwgMHgxMzIwLAorICAgICAgICAgICAgMHgx
MkU4LCAweDEyQTgsIDB4MTIwOCwgMHgxMjE4LCAweDEyOTAsIDB4MTIyMCwgMHgxMkQwLCAweDEz
NDgsIDB4MTMzOCwKKyAgICAgICAgICAgIDB4MTI0MCwgMHgxMjI4LCAweDEyMzAsIDB4MTI3MCwg
MHgxMjgwLCAweDEzNDAsIDB4MTMzMCwgMHgxMzUwCisgICAgICAgIH07CisgICAgICAgIHRvQWxw
aGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNBYmVnZWRlR2V6QWxwaGFiZXQpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIYW5ndWxDb25zb25h
bnQ6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGhhbmd1bENvbnNvbmFudEFscGhhYmV0
WzE0XSA9IHsKKyAgICAgICAgICAgIDB4MzEzMSwgMHgzMTM0LCAweDMxMzcsIDB4MzEzOSwgMHgz
MTQxLCAweDMxNDIsIDB4MzE0NSwgMHgzMTQ3LCAweDMxNDgsCisgICAgICAgICAgICAweDMxNEEs
IDB4MzE0QiwgMHgzMTRDLCAweDMxNEQsIDB4MzE0RQorICAgICAgICB9OworICAgICAgICB0b0Fs
cGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGhhbmd1bENvbnNvbmFudEFscGhhYmV0KTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGFuZ3VsOiB7CisgICAg
ICAgIHN0YXRpYyBjb25zdCBVQ2hhciBoYW5ndWxBbHBoYWJldFsxNF0gPSB7CisgICAgICAgICAg
ICAweEFDMDAsIDB4QjA5OCwgMHhCMkU0LCAweEI3N0MsIDB4QjlDOCwgMHhCQzE0LCAweEMwQUMs
IDB4QzU0NCwgMHhDNzkwLAorICAgICAgICAgICAgMHhDQzI4LCAweENFNzQsIDB4RDBDMCwgMHhE
MzBDLCAweEQ1NTgKKyAgICAgICAgfTsKKyAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZh
bHVlLCBoYW5ndWxBbHBoYWJldCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6Ok9yb21vOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxl
aGFtZU9tRXQ6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGV0aGlvcGljSGFsZWhhbWVP
bUV0QWxwaGFiZXRbMjVdID0geworICAgICAgICAgICAgMHgxMjAwLCAweDEyMDgsIDB4MTIxOCwg
MHgxMjI4LCAweDEyMzAsIDB4MTIzOCwgMHgxMjQwLCAweDEyNjAsIDB4MTI3MCwKKyAgICAgICAg
ICAgIDB4MTI3OCwgMHgxMjkwLCAweDEyOTgsIDB4MTJBMCwgMHgxMkE4LCAweDEyQzgsIDB4MTJF
OCwgMHgxMkYwLCAweDEyRjgsCisgICAgICAgICAgICAweDEzMDAsIDB4MTMwOCwgMHgxMzIwLCAw
eDEzMjgsIDB4MTMzOCwgMHgxMzMwLCAweDEzNDgKKyAgICAgICAgfTsKKyAgICAgICAgdG9BbHBo
YWJldGljKGJ1aWxkZXIsIHZhbHVlLCBldGhpb3BpY0hhbGVoYW1lT21FdEFscGhhYmV0KTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6U2lkYW1hOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVNpZEV0OiB7CisgICAgICAgIHN0
YXRpYyBjb25zdCBVQ2hhciBldGhpb3BpY0hhbGVoYW1lU2lkRXRBbHBoYWJldFsyNl0gPSB7Cisg
ICAgICAgICAgICAweDEyMDAsIDB4MTIwOCwgMHgxMjEwLCAweDEyMTgsIDB4MTIyOCwgMHgxMjMw
LCAweDEyMzgsIDB4MTI0MCwgMHgxMjYwLAorICAgICAgICAgICAgMHgxMjcwLCAweDEyNzgsIDB4
MTI5MCwgMHgxMjk4LCAweDEyQTAsIDB4MTJBOCwgMHgxMkM4LCAweDEyRTgsIDB4MTJGMCwKKyAg
ICAgICAgICAgIDB4MTJGOCwgMHgxMzAwLCAweDEzMDgsIDB4MTMyMCwgMHgxMzI4LCAweDEzMzgs
IDB4MTMzMCwgMHgxMzQ4CisgICAgICAgIH07CisgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVy
LCB2YWx1ZSwgZXRoaW9waWNIYWxlaGFtZVNpZEV0QWxwaGFiZXQpOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpTb21hbGk6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lU29FdDogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNo
YXIgZXRoaW9waWNIYWxlaGFtZVNvRXRBbHBoYWJldFsyMl0gPSB7CisgICAgICAgICAgICAweDEy
MDAsIDB4MTIwOCwgMHgxMjEwLCAweDEyMTgsIDB4MTIyOCwgMHgxMjMwLCAweDEyMzgsIDB4MTI0
MCwgMHgxMjYwLAorICAgICAgICAgICAgMHgxMjcwLCAweDEyOTAsIDB4MTJBMCwgMHgxMkE4LCAw
eDEyQjgsIDB4MTJDOCwgMHgxMkQwLCAweDEyRTgsIDB4MTJGMCwKKyAgICAgICAgICAgIDB4MTMw
MCwgMHgxMzA4LCAweDEzMzgsIDB4MTM0OAorICAgICAgICB9OworICAgICAgICB0b0FscGhhYmV0
aWMoYnVpbGRlciwgdmFsdWUsIGV0aGlvcGljSGFsZWhhbWVTb0V0QWxwaGFiZXQpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyZToKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVUaWc6IHsKKyAgICAgICAgc3RhdGljIGNv
bnN0IFVDaGFyIGV0aGlvcGljSGFsZWhhbWVUaWdBbHBoYWJldFsyN10gPSB7CisgICAgICAgICAg
ICAweDEyMDAsIDB4MTIwOCwgMHgxMjEwLCAweDEyMTgsIDB4MTIyOCwgMHgxMjMwLCAweDEyMzgs
IDB4MTI0MCwgMHgxMjYwLAorICAgICAgICAgICAgMHgxMjcwLCAweDEyNzgsIDB4MTI5MCwgMHgx
MkEwLCAweDEyQTgsIDB4MTJDOCwgMHgxMkQwLCAweDEyRDgsIDB4MTJFOCwKKyAgICAgICAgICAg
IDB4MTJGMCwgMHgxMzAwLCAweDEzMDgsIDB4MTMyMCwgMHgxMzI4LCAweDEzMzgsIDB4MTMzMCwg
MHgxMzQ4LCAweDEzNTAKKyAgICAgICAgfTsKKyAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIs
IHZhbHVlLCBldGhpb3BpY0hhbGVoYW1lVGlnQWxwaGFiZXQpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55YUVyOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVRpRXI6IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFVD
aGFyIGV0aGlvcGljSGFsZWhhbWVUaUVyQWxwaGFiZXRbMzFdID0geworICAgICAgICAgICAgMHgx
MjAwLCAweDEyMDgsIDB4MTIxMCwgMHgxMjE4LCAweDEyMjgsIDB4MTIzMCwgMHgxMjM4LCAweDEy
NDAsIDB4MTI1MCwKKyAgICAgICAgICAgIDB4MTI2MCwgMHgxMjcwLCAweDEyNzgsIDB4MTI5MCwg
MHgxMjk4LCAweDEyQTAsIDB4MTJBOCwgMHgxMkI4LCAweDEyQzgsCisgICAgICAgICAgICAweDEy
RDAsIDB4MTJEOCwgMHgxMkUwLCAweDEyRTgsIDB4MTJGMCwgMHgxMzAwLCAweDEzMDgsIDB4MTMy
MCwgMHgxMzI4LAorICAgICAgICAgICAgMHgxMzMwLCAweDEzMzgsIDB4MTM0OCwgMHgxMzUwCisg
ICAgICAgIH07CisgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwgZXRoaW9waWNI
YWxlaGFtZVRpRXJBbHBoYWJldCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXJBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
RXRoaW9waWNBYmVnZWRlVGlFcjogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZXRoaW9w
aWNBYmVnZWRlVGlFckFscGhhYmV0WzMxXSA9IHsKKyAgICAgICAgICAgIDB4MTJBMCwgMHgxMjYw
LCAweDEzMDgsIDB4MTJGMCwgMHgxMzAwLCAweDEyMDAsIDB4MTJDOCwgMHgxMkQ4LCAweDEyRTAs
CisgICAgICAgICAgICAweDEyMTAsIDB4MTMyMCwgMHgxMzI4LCAweDEyRTgsIDB4MTJBOCwgMHgx
MkI4LCAweDEyMDgsIDB4MTIxOCwgMHgxMjkwLAorICAgICAgICAgICAgMHgxMjk4LCAweDEyRDAs
IDB4MTM0OCwgMHgxMzM4LCAweDEyNDAsIDB4MTI1MCwgMHgxMjI4LCAweDEyMzAsIDB4MTIzOCwK
KyAgICAgICAgICAgIDB4MTI3MCwgMHgxMjc4LCAweDEzMzAsIDB4MTM1MAorICAgICAgICB9Owor
ICAgICAgICB0b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIGV0aGlvcGljQWJlZ2VkZVRpRXJB
bHBoYWJldCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
OlRpZ3JpbnlhRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lVGlF
dDogeworICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZXRoaW9waWNIYWxlaGFtZVRpRXRBbHBo
YWJldFszNF0gPSB7CisgICAgICAgICAgICAweDEyMDAsIDB4MTIwOCwgMHgxMjEwLCAweDEyMTgs
IDB4MTIyMCwgMHgxMjI4LCAweDEyMzAsIDB4MTIzOCwgMHgxMjQwLAorICAgICAgICAgICAgMHgx
MjUwLCAweDEyNjAsIDB4MTI3MCwgMHgxMjc4LCAweDEyODAsIDB4MTI5MCwgMHgxMjk4LCAweDEy
QTAsIDB4MTJBOCwKKyAgICAgICAgICAgIDB4MTJCOCwgMHgxMkM4LCAweDEyRDAsIDB4MTJEOCwg
MHgxMkUwLCAweDEyRTgsIDB4MTJGMCwgMHgxMzAwLCAweDEzMDgsCisgICAgICAgICAgICAweDEz
MjAsIDB4MTMyOCwgMHgxMzMwLCAweDEzMzgsIDB4MTM0MCwgMHgxMzQ4LCAweDEzNTAKKyAgICAg
ICAgfTsKKyAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBldGhpb3BpY0hhbGVo
YW1lVGlFdEFscGhhYmV0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6VGlncmlueWFFdEFiZWdlZGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhp
b3BpY0FiZWdlZGVUaUV0OiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBldGhpb3BpY0Fi
ZWdlZGVUaUV0QWxwaGFiZXRbMzRdID0geworICAgICAgICAgICAgMHgxMkEwLCAweDEyNjAsIDB4
MTMwOCwgMHgxMkYwLCAweDEzMDAsIDB4MTIwMCwgMHgxMkM4LCAweDEyRDgsIDB4MTJFMCwKKyAg
ICAgICAgICAgIDB4MTIxMCwgMHgxMzIwLCAweDEzMjgsIDB4MTJFOCwgMHgxMkE4LCAweDEyQjgs
IDB4MTIwOCwgMHgxMjE4LCAweDEyOTAsCisgICAgICAgICAgICAweDEyOTgsIDB4MTIyMCwgMHgx
MkQwLCAweDEzNDgsIDB4MTMzOCwgMHgxMjQwLCAweDEyNTAsIDB4MTIyOCwgMHgxMjMwLAorICAg
ICAgICAgICAgMHgxMjM4LCAweDEyNzAsIDB4MTI3OCwgMHgxMjgwLCAweDEzNDAsIDB4MTMzMCwg
MHgxMzUwCisgICAgICAgIH07CisgICAgICAgIHRvQWxwaGFiZXRpYyhidWlsZGVyLCB2YWx1ZSwg
ZXRoaW9waWNBYmVnZWRlVGlFdEFscGhhYmV0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJHcmVlazogeworICAgICAgICBzdGF0aWMgY29uc3Qg
VUNoYXIgdXBwZXJHcmVla0FscGhhYmV0WzI0XSA9IHsKKyAgICAgICAgICAgIDB4MDM5MSwgMHgw
MzkyLCAweDAzOTMsIDB4MDM5NCwgMHgwMzk1LCAweDAzOTYsIDB4MDM5NywgMHgwMzk4LCAweDAz
OTksCisgICAgICAgICAgICAweDAzOUEsIDB4MDM5QiwgMHgwMzlDLCAweDAzOUQsIDB4MDM5RSwg
MHgwMzlGLCAweDAzQTAsIDB4MDNBMSwgMHgwM0EzLAorICAgICAgICAgICAgMHgwM0E0LCAweDAz
QTUsIDB4MDNBNiwgMHgwM0E3LCAweDAzQTgsIDB4MDNBOQorICAgICAgICB9OworICAgICAgICB0
b0FscGhhYmV0aWMoYnVpbGRlciwgdmFsdWUsIHVwcGVyR3JlZWtBbHBoYWJldCk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyTm9yd2VnaWFuOiB7
CisgICAgICAgIHN0YXRpYyBjb25zdCBMQ2hhciBsb3dlck5vcndlZ2lhbkFscGhhYmV0WzI5XSA9
IHsKKyAgICAgICAgICAgIDB4NjEsIDB4NjIsIDB4NjMsIDB4NjQsIDB4NjUsIDB4NjYsIDB4Njcs
IDB4NjgsIDB4NjksCisgICAgICAgICAgICAweDZBLCAweDZCLCAweDZDLCAweDZELCAweDZFLCAw
eDZGLCAweDcwLCAweDcxLCAweDcyLAorICAgICAgICAgICAgMHg3MywgMHg3NCwgMHg3NSwgMHg3
NiwgMHg3NywgMHg3OCwgMHg3OSwgMHg3QSwgMHhFNiwKKyAgICAgICAgICAgIDB4RjgsIDB4RTUK
KyAgICAgICAgfTsKKyAgICAgICAgdG9BbHBoYWJldGljKGJ1aWxkZXIsIHZhbHVlLCBsb3dlck5v
cndlZ2lhbkFscGhhYmV0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6VXBwZXJOb3J3ZWdpYW46IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IExDaGFyIHVw
cGVyTm9yd2VnaWFuQWxwaGFiZXRbMjldID0geworICAgICAgICAgICAgMHg0MSwgMHg0MiwgMHg0
MywgMHg0NCwgMHg0NSwgMHg0NiwgMHg0NywgMHg0OCwgMHg0OSwKKyAgICAgICAgICAgIDB4NEEs
IDB4NEIsIDB4NEMsIDB4NEQsIDB4NEUsIDB4NEYsIDB4NTAsIDB4NTEsIDB4NTIsCisgICAgICAg
ICAgICAweDUzLCAweDU0LCAweDU1LCAweDU2LCAweDU3LCAweDU4LCAweDU5LCAweDVBLCAweEM2
LAorICAgICAgICAgICAgMHhEOCwgMHhDNQorICAgICAgICB9OworICAgICAgICB0b0FscGhhYmV0
aWMoYnVpbGRlciwgdmFsdWUsIHVwcGVyTm9yd2VnaWFuQWxwaGFiZXQpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDSktJZGVvZ3JhcGhpYzogeworICAg
ICAgICBzdGF0aWMgY29uc3QgVUNoYXIgdHJhZGl0aW9uYWxDaGluZXNlSW5mb3JtYWxUYWJsZVsx
Nl0gPSB7CisgICAgICAgICAgICAweDg0MkMsIDB4NTEwNCwgMHg1MTQ2LAorICAgICAgICAgICAg
MHg1MzQxLCAweDc2N0UsIDB4NTM0MywKKyAgICAgICAgICAgIDB4OTZGNiwgMHg0RTAwLCAweDRF
OEMsIDB4NEUwOSwgMHg1NkRCLAorICAgICAgICAgICAgMHg0RTk0LCAweDUxNkQsIDB4NEUwMywg
MHg1MTZCLCAweDRFNUQKKyAgICAgICAgfTsKKyAgICAgICAgdG9DSktJZGVvZ3JhcGhpYyhidWls
ZGVyLCB2YWx1ZSwgdHJhZGl0aW9uYWxDaGluZXNlSW5mb3JtYWxUYWJsZSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKworICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJSb21hbjoKKyAgICAg
ICAgdG9Sb21hbihidWlsZGVyLCB2YWx1ZSwgZmFsc2UpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyUm9tYW46CisgICAgICAgIHRvUm9tYW4oYnVpbGRlciwg
dmFsdWUsIHRydWUpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
QXJtZW5pYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckFybWVuaWFuOgorICAgICAg
ICAvLyBDU1MzIHNheXMgImFybWVuaWFuIiBtZWFucyAibG93ZXItYXJtZW5pYW4iLgorICAgICAg
ICAvLyBCdXQgdGhlIENTUzIuMSB0ZXN0IHN1aXRlIGNvbnRhaW5zIHVwcGVyY2FzZSB0ZXN0IHJl
c3VsdHMgZm9yICJhcm1lbmlhbiIsCisgICAgICAgIC8vIHNvIHdlJ2xsIG1hdGNoIHRoZSB0ZXN0
IHN1aXRlLgorICAgICAgICB0b0FybWVuaWFuKGJ1aWxkZXIsIHZhbHVlLCB0cnVlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckFybWVuaWFuOgorICAgICAg
ICB0b0FybWVuaWFuKGJ1aWxkZXIsIHZhbHVlLCBmYWxzZSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6R2VvcmdpYW46CisgICAgICAgIHRvR2VvcmdpYW4oYnVpbGRl
ciwgdmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkhlYnJl
dzoKKyAgICAgICAgdG9IZWJyZXcoYnVpbGRlciwgdmFsdWUpOworICAgICAgICBicmVhazsKICAg
ICB9CiAKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwpAQCAtMTE4Niw3ICsxMTg2LDcg
QEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpwYWludChQYWludEluZm8mIAogICAgIGlmIChwYWlu
dEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQpCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAoc3R5
bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgTGF5b3V0UG9pbnQgYm94T3JpZ2luKHBhaW50T2Zmc2V0ICsgbG9jYXRpb24oKSk7
CkBAIC0xMjI3LDk4ICsxMjI3LDk4IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQoUGFp
bnRJbmZvJiAKICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygxLjBmKTsKICAgICBjb250
ZXh0LnNldEZpbGxDb2xvcihjb2xvcik7CiAKLSAgICBFTGlzdFN0eWxlVHlwZSB0eXBlID0gc3R5
bGUoKS5saXN0U3R5bGVUeXBlKCk7CisgICAgTGlzdFN0eWxlVHlwZSB0eXBlID0gc3R5bGUoKS5s
aXN0U3R5bGVUeXBlKCk7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgRGlzYzoK
LSAgICAgICAgICAgIGNvbnRleHQuZHJhd0VsbGlwc2UobWFya2VyUmVjdCk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGNhc2UgQ2lyY2xlOgotICAgICAgICAgICAgY29udGV4dC5zZXRG
aWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKLSAgICAgICAgICAgIGNvbnRleHQuZHJhd0Vs
bGlwc2UobWFya2VyUmVjdCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgU3F1
YXJlOgotICAgICAgICAgICAgY29udGV4dC5kcmF3UmVjdChtYXJrZXJSZWN0KTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBOb25lTGlzdFN0eWxlOgotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBjYXNlIEFmYXI6Ci0gICAgICAgIGNhc2UgQW1oYXJpYzoKLSAgICAgICAg
Y2FzZSBBbWhhcmljQWJlZ2VkZToKLSAgICAgICAgY2FzZSBBcmFiaWNJbmRpYzoKLSAgICAgICAg
Y2FzZSBBcm1lbmlhbjoKLSAgICAgICAgY2FzZSBCaW5hcnlMaXN0U3R5bGU6Ci0gICAgICAgIGNh
c2UgQmVuZ2FsaToKLSAgICAgICAgY2FzZSBDYW1ib2RpYW46Ci0gICAgICAgIGNhc2UgQ0pLSWRl
b2dyYXBoaWM6Ci0gICAgICAgIGNhc2UgQ2prRWFydGhseUJyYW5jaDoKLSAgICAgICAgY2FzZSBD
amtIZWF2ZW5seVN0ZW06Ci0gICAgICAgIGNhc2UgRGVjaW1hbExlYWRpbmdaZXJvOgotICAgICAg
ICBjYXNlIERlY2ltYWxMaXN0U3R5bGU6Ci0gICAgICAgIGNhc2UgRGV2YW5hZ2FyaToKLSAgICAg
ICAgY2FzZSBFdGhpb3BpYzoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0FiZWdlZGU6Ci0gICAgICAg
IGNhc2UgRXRoaW9waWNBYmVnZWRlQW1FdDoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVH
ZXo6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlVGlFcjoKLSAgICAgICAgY2FzZSBFdGhp
b3BpY0FiZWdlZGVUaUV0OgotICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVBYUVyOgotICAg
ICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVBYUV0OgotICAgICAgICBjYXNlIEV0aGlvcGljSGFs
ZWhhbWVBbUV0OgotICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVHZXo6Ci0gICAgICAgIGNh
c2UgRXRoaW9waWNIYWxlaGFtZU9tRXQ6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVNp
ZEV0OgotICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVTb0V0OgotICAgICAgICBjYXNlIEV0
aGlvcGljSGFsZWhhbWVUaUVyOgotICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVUaUV0Ogot
ICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVUaWc6Ci0gICAgICAgIGNhc2UgR2VvcmdpYW46
Ci0gICAgICAgIGNhc2UgR3VqYXJhdGk6Ci0gICAgICAgIGNhc2UgR3VybXVraGk6Ci0gICAgICAg
IGNhc2UgSGFuZ3VsOgotICAgICAgICBjYXNlIEhhbmd1bENvbnNvbmFudDoKLSAgICAgICAgY2Fz
ZSBIZWJyZXc6Ci0gICAgICAgIGNhc2UgSGlyYWdhbmE6Ci0gICAgICAgIGNhc2UgSGlyYWdhbmFJ
cm9oYToKLSAgICAgICAgY2FzZSBLYW5uYWRhOgotICAgICAgICBjYXNlIEthdGFrYW5hOgotICAg
ICAgICBjYXNlIEthdGFrYW5hSXJvaGE6Ci0gICAgICAgIGNhc2UgS2htZXI6Ci0gICAgICAgIGNh
c2UgTGFvOgotICAgICAgICBjYXNlIExvd2VyQWxwaGE6Ci0gICAgICAgIGNhc2UgTG93ZXJBcm1l
bmlhbjoKLSAgICAgICAgY2FzZSBMb3dlckdyZWVrOgotICAgICAgICBjYXNlIExvd2VySGV4YWRl
Y2ltYWw6Ci0gICAgICAgIGNhc2UgTG93ZXJMYXRpbjoKLSAgICAgICAgY2FzZSBMb3dlck5vcndl
Z2lhbjoKLSAgICAgICAgY2FzZSBMb3dlclJvbWFuOgotICAgICAgICBjYXNlIE1hbGF5YWxhbToK
LSAgICAgICAgY2FzZSBNb25nb2xpYW46Ci0gICAgICAgIGNhc2UgTXlhbm1hcjoKLSAgICAgICAg
Y2FzZSBPY3RhbDoKLSAgICAgICAgY2FzZSBPcml5YToKLSAgICAgICAgY2FzZSBPcm9tbzoKLSAg
ICAgICAgY2FzZSBQZXJzaWFuOgotICAgICAgICBjYXNlIFNpZGFtYToKLSAgICAgICAgY2FzZSBT
b21hbGk6Ci0gICAgICAgIGNhc2UgVGVsdWd1OgotICAgICAgICBjYXNlIFRoYWk6Ci0gICAgICAg
IGNhc2UgVGliZXRhbjoKLSAgICAgICAgY2FzZSBUaWdyZToKLSAgICAgICAgY2FzZSBUaWdyaW55
YUVyOgotICAgICAgICBjYXNlIFRpZ3JpbnlhRXJBYmVnZWRlOgotICAgICAgICBjYXNlIFRpZ3Jp
bnlhRXQ6Ci0gICAgICAgIGNhc2UgVGlncmlueWFFdEFiZWdlZGU6Ci0gICAgICAgIGNhc2UgVXBw
ZXJBbHBoYToKLSAgICAgICAgY2FzZSBVcHBlckFybWVuaWFuOgotICAgICAgICBjYXNlIFVwcGVy
R3JlZWs6Ci0gICAgICAgIGNhc2UgVXBwZXJIZXhhZGVjaW1hbDoKLSAgICAgICAgY2FzZSBVcHBl
ckxhdGluOgotICAgICAgICBjYXNlIFVwcGVyTm9yd2VnaWFuOgotICAgICAgICBjYXNlIFVwcGVy
Um9tYW46Ci0gICAgICAgIGNhc2UgVXJkdToKLSAgICAgICAgY2FzZSBBc3Rlcmlza3M6Ci0gICAg
ICAgIGNhc2UgRm9vdG5vdGVzOgotICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpEaXNjOgorICAgICAgICBjb250ZXh0LmRyYXdFbGxpcHNlKG1hcmtlclJlY3QpOwor
ICAgICAgICByZXR1cm47CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDaXJjbGU6CisgICAgICAg
IGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAgICAgIGNvbnRl
eHQuZHJhd0VsbGlwc2UobWFya2VyUmVjdCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OlNxdWFyZToKKyAgICAgICAgY29udGV4dC5kcmF3UmVjdChtYXJrZXJSZWN0
KTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Tm9uZToKKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QWZhcjoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OkFtaGFyaWM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBbWhhcmljQWJlZ2Vk
ZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFyYWJpY0luZGljOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6QXJtZW5pYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpCaW5hcnk6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpCZW5nYWxpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2Ft
Ym9kaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q0pLSWRlb2dyYXBoaWM6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpDamtFYXJ0aGx5QnJhbmNoOgorICAgIGNhc2UgTGlzdFN0eWxlVHlw
ZTo6Q2prSGVhdmVubHlTdGVtOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGVjaW1hbExlYWRp
bmdaZXJvOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGVjaW1hbDoKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OkRldmFuYWdhcmk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpYzoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZToKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZUFtRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpF
dGhpb3BpY0FiZWdlZGVHZXo6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdl
ZGVUaUVyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlVGlFdDoKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVBYUVyOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUFhRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpFdGhpb3BpY0hhbGVoYW1lQW1FdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGlj
SGFsZWhhbWVHZXo6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lT21F
dDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVTaWRFdDoKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVTb0V0OgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVRpRXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpF
dGhpb3BpY0hhbGVoYW1lVGlFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFs
ZWhhbWVUaWc6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpHZW9yZ2lhbjoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6Okd1amFyYXRpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6R3VybXVraGk6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIYW5ndWw6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpIYW5ndWxDb25zb25hbnQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpIZWJyZXc6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpIaXJhZ2FuYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okhp
cmFnYW5hSXJvaGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLYW5uYWRhOgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6S2F0YWthbmE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLYXRha2Fu
YUlyb2hhOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6S2htZXI6CisgICAgY2FzZSBMaXN0U3R5
bGVUeXBlOjpMYW86CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckFscGhhOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJBcm1lbmlhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
Okxvd2VyR3JlZWs6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckhleGFkZWNpbWFsOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJMYXRpbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6Okxvd2VyTm9yd2VnaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJSb21hbjoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok1hbGF5YWxhbToKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6Ok1vbmdvbGlhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok15YW5tYXI6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpPY3RhbDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok9yaXlhOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6T3JvbW86CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpQ
ZXJzaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6U2lkYW1hOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6U29tYWxpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGVsdWd1OgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6VGhhaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpYmV0YW46
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
OlRpZ3JpbnlhRXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaWdyaW55YUVyQWJlZ2VkZToK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpUaWdyaW55YUV0QWJlZ2VkZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyQWxw
aGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckFybWVuaWFuOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6VXBwZXJHcmVlazoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVySGV4
YWRlY2ltYWw6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckxhdGluOgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6VXBwZXJOb3J3ZWdpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpV
cHBlclJvbWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXJkdToKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OkFzdGVyaXNrczoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkZvb3Rub3RlczoK
KyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGlmIChtX3RleHQuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CkBAIC0xMzQwLDcgKzEzNDAsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBh
aW50KFBhaW50SW5mbyYgCiAgICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luID0gRmxvYXRQb2ludCht
YXJrZXJSZWN0LngoKSwgbWFya2VyUmVjdC55KCkgKyBzdHlsZSgpLmZvbnRNZXRyaWNzKCkuYXNj
ZW50KCkpOwogICAgIHRleHRPcmlnaW4gPSByb3VuZFBvaW50VG9EZXZpY2VQaXhlbHMoTGF5b3V0
UG9pbnQodGV4dE9yaWdpbiksIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgc3R5bGUo
KS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpOwogCi0gICAgaWYgKHR5cGUgPT0gQXN0ZXJpc2tz
IHx8IHR5cGUgPT0gRm9vdG5vdGVzKQorICAgIGlmICh0eXBlID09IExpc3RTdHlsZVR5cGU6OkFz
dGVyaXNrcyB8fCB0eXBlID09IExpc3RTdHlsZVR5cGU6OkZvb3Rub3RlcykKICAgICAgICAgY29u
dGV4dC5kcmF3VGV4dChmb250LCB0ZXh0UnVuLCB0ZXh0T3JpZ2luKTsKICAgICBlbHNlIHsKICAg
ICAgICAgY29uc3QgVUNoYXIgc3VmZml4ID0gbGlzdE1hcmtlclN1ZmZpeCh0eXBlLCBtX2xpc3RJ
dGVtLnZhbHVlKCkpOwpAQCAtMTQ0OCw5MiArMTQ0OCw5MiBAQCB2b2lkIFJlbmRlckxpc3RNYXJr
ZXI6OnVwZGF0ZUNvbnRlbnQoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgRUxpc3RT
dHlsZVR5cGUgdHlwZSA9IHN0eWxlKCkubGlzdFN0eWxlVHlwZSgpOworICAgIExpc3RTdHlsZVR5
cGUgdHlwZSA9IHN0eWxlKCkubGlzdFN0eWxlVHlwZSgpOwogICAgIHN3aXRjaCAodHlwZSkgewot
ICAgIGNhc2UgTm9uZUxpc3RTdHlsZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok5vbmU6CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ2lyY2xlOgotICAgIGNhc2UgRGlzYzoKLSAgICBjYXNl
IFNxdWFyZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNpcmNsZToKKyAgICBjYXNlIExpc3RT
dHlsZVR5cGU6OkRpc2M6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpTcXVhcmU6CiAgICAgICAg
IG1fdGV4dCA9IGxpc3RNYXJrZXJUZXh0KHR5cGUsIDApOyAvLyB2YWx1ZSBpcyBpZ25vcmVkIGZv
ciB0aGVzZSB0eXBlcwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEFzdGVyaXNrczoKLSAgICBj
YXNlIEZvb3Rub3RlczoKLSAgICBjYXNlIEFmYXI6Ci0gICAgY2FzZSBBbWhhcmljOgotICAgIGNh
c2UgQW1oYXJpY0FiZWdlZGU6Ci0gICAgY2FzZSBBcmFiaWNJbmRpYzoKLSAgICBjYXNlIEFybWVu
aWFuOgotICAgIGNhc2UgQmluYXJ5TGlzdFN0eWxlOgotICAgIGNhc2UgQmVuZ2FsaToKLSAgICBj
YXNlIENhbWJvZGlhbjoKLSAgICBjYXNlIENKS0lkZW9ncmFwaGljOgotICAgIGNhc2UgQ2prRWFy
dGhseUJyYW5jaDoKLSAgICBjYXNlIENqa0hlYXZlbmx5U3RlbToKLSAgICBjYXNlIERlY2ltYWxM
ZWFkaW5nWmVybzoKLSAgICBjYXNlIERlY2ltYWxMaXN0U3R5bGU6Ci0gICAgY2FzZSBEZXZhbmFn
YXJpOgotICAgIGNhc2UgRXRoaW9waWM6Ci0gICAgY2FzZSBFdGhpb3BpY0FiZWdlZGU6Ci0gICAg
Y2FzZSBFdGhpb3BpY0FiZWdlZGVBbUV0OgotICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlR2V6Ogot
ICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlVGlFcjoKLSAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZVRp
RXQ6Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lQWFFcjoKLSAgICBjYXNlIEV0aGlvcGljSGFs
ZWhhbWVBYUV0OgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZUFtRXQ6Ci0gICAgY2FzZSBFdGhp
b3BpY0hhbGVoYW1lR2V6OgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZU9tRXQ6Ci0gICAgY2Fz
ZSBFdGhpb3BpY0hhbGVoYW1lU2lkRXQ6Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lU29FdDoK
LSAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVUaUVyOgotICAgIGNhc2UgRXRoaW9waWNIYWxlaGFt
ZVRpRXQ6Ci0gICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lVGlnOgotICAgIGNhc2UgR2VvcmdpYW46
Ci0gICAgY2FzZSBHdWphcmF0aToKLSAgICBjYXNlIEd1cm11a2hpOgotICAgIGNhc2UgSGFuZ3Vs
OgotICAgIGNhc2UgSGFuZ3VsQ29uc29uYW50OgotICAgIGNhc2UgSGVicmV3OgotICAgIGNhc2Ug
SGlyYWdhbmE6Ci0gICAgY2FzZSBIaXJhZ2FuYUlyb2hhOgotICAgIGNhc2UgS2FubmFkYToKLSAg
ICBjYXNlIEthdGFrYW5hOgotICAgIGNhc2UgS2F0YWthbmFJcm9oYToKLSAgICBjYXNlIEtobWVy
OgotICAgIGNhc2UgTGFvOgotICAgIGNhc2UgTG93ZXJBbHBoYToKLSAgICBjYXNlIExvd2VyQXJt
ZW5pYW46Ci0gICAgY2FzZSBMb3dlckdyZWVrOgotICAgIGNhc2UgTG93ZXJIZXhhZGVjaW1hbDoK
LSAgICBjYXNlIExvd2VyTGF0aW46Ci0gICAgY2FzZSBMb3dlck5vcndlZ2lhbjoKLSAgICBjYXNl
IExvd2VyUm9tYW46Ci0gICAgY2FzZSBNYWxheWFsYW06Ci0gICAgY2FzZSBNb25nb2xpYW46Ci0g
ICAgY2FzZSBNeWFubWFyOgotICAgIGNhc2UgT2N0YWw6Ci0gICAgY2FzZSBPcml5YToKLSAgICBj
YXNlIE9yb21vOgotICAgIGNhc2UgUGVyc2lhbjoKLSAgICBjYXNlIFNpZGFtYToKLSAgICBjYXNl
IFNvbWFsaToKLSAgICBjYXNlIFRlbHVndToKLSAgICBjYXNlIFRoYWk6Ci0gICAgY2FzZSBUaWJl
dGFuOgotICAgIGNhc2UgVGlncmU6Ci0gICAgY2FzZSBUaWdyaW55YUVyOgotICAgIGNhc2UgVGln
cmlueWFFckFiZWdlZGU6Ci0gICAgY2FzZSBUaWdyaW55YUV0OgotICAgIGNhc2UgVGlncmlueWFF
dEFiZWdlZGU6Ci0gICAgY2FzZSBVcHBlckFscGhhOgotICAgIGNhc2UgVXBwZXJBcm1lbmlhbjoK
LSAgICBjYXNlIFVwcGVyR3JlZWs6Ci0gICAgY2FzZSBVcHBlckhleGFkZWNpbWFsOgotICAgIGNh
c2UgVXBwZXJMYXRpbjoKLSAgICBjYXNlIFVwcGVyTm9yd2VnaWFuOgotICAgIGNhc2UgVXBwZXJS
b21hbjoKLSAgICBjYXNlIFVyZHU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBc3Rlcmlza3M6
CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpGb290bm90ZXM6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpBZmFyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QW1oYXJpYzoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkFtaGFyaWNBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QXJh
YmljSW5kaWM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBcm1lbmlhbjoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkJpbmFyeToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkJlbmdhbGk6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDYW1ib2RpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpDSktJZGVvZ3JhcGhpYzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNqa0VhcnRobHlCcmFu
Y2g6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDamtIZWF2ZW5seVN0ZW06CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpEZWNpbWFsTGVhZGluZ1plcm86CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpEZWNpbWFsOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGV2YW5hZ2FyaToKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OkV0aGlvcGljOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9w
aWNBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlQW1FdDoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZUdlejoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZVRpRXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpFdGhpb3BpY0FiZWdlZGVUaUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNI
YWxlaGFtZUFhRXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lQWFF
dDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVBbUV0OgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUdlejoKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVPbUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRo
aW9waWNIYWxlaGFtZVNpZEV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxl
aGFtZVNvRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lVGlFcjoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVUaUV0OgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVRpZzoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6Okdlb3JnaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6R3VqYXJhdGk6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpHdXJtdWtoaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okhhbmd1
bDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okhhbmd1bENvbnNvbmFudDoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkhlYnJldzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkhpcmFnYW5hOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGlyYWdhbmFJcm9oYToKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6Okthbm5hZGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLYXRha2FuYToKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OkthdGFrYW5hSXJvaGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpLaG1lcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkxhbzoKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6Okxvd2VyQWxwaGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckFybWVuaWFu
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJHcmVlazoKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6Okxvd2VySGV4YWRlY2ltYWw6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckxh
dGluOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJOb3J3ZWdpYW46CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpMb3dlclJvbWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TWFsYXlh
bGFtOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TW9uZ29saWFuOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6TXlhbm1hcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok9jdGFsOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6T3JpeWE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpPcm9tbzoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlBlcnNpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpTaWRhbWE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpTb21hbGk6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpUZWx1Z3U6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaGFpOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6VGliZXRhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3Jl
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmlueWFFcjoKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OlRpZ3JpbnlhRXJBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmlu
eWFFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXRBYmVnZWRlOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJBbHBoYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVw
cGVyQXJtZW5pYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckdyZWVrOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJIZXhhZGVjaW1hbDoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OlVwcGVyTGF0aW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlck5vcndlZ2lhbjoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyUm9tYW46CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpVcmR1OgogICAgICAgICBtX3RleHQgPSBsaXN0TWFya2VyVGV4dCh0eXBlLCBtX2xpc3RJ
dGVtLnZhbHVlKCkpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xNTU1LDEwNiArMTU1NSwx
MDYgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpjb21wdXRlUHJlZmVycmVkTAogICAgIGNvbnN0
IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpOwogCiAgICAgTGF5b3V0
VW5pdCBsb2dpY2FsV2lkdGggPSAwOwotICAgIEVMaXN0U3R5bGVUeXBlIHR5cGUgPSBzdHlsZSgp
Lmxpc3RTdHlsZVR5cGUoKTsKKyAgICBMaXN0U3R5bGVUeXBlIHR5cGUgPSBzdHlsZSgpLmxpc3RT
dHlsZVR5cGUoKTsKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBOb25lTGlzdFN0
eWxlOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQXN0ZXJpc2tzOgotICAgICAg
ICBjYXNlIEZvb3Rub3RlczogeworICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Tm9uZToKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBc3Rlcmlza3M6CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpGb290bm90ZXM6IHsKKyAgICAgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJC
bG9jazo6Y29uc3RydWN0VGV4dFJ1bihtX3RleHQsIHN0eWxlKCkpOworICAgICAgICBsb2dpY2Fs
V2lkdGggPSBmb250LndpZHRoKHJ1bik7IC8vIG5vIHN1ZmZpeCBmb3IgdGhlc2UgdHlwZXMKKyAg
ICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2lyY2xlOgorICAg
IGNhc2UgTGlzdFN0eWxlVHlwZTo6RGlzYzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlNxdWFy
ZToKKyAgICAgICAgbG9naWNhbFdpZHRoID0gKGZvbnQuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSAq
IDIgLyAzICsgMSkgLyAyICsgMjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpBZmFyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QW1oYXJpYzoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkFtaGFyaWNBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QXJh
YmljSW5kaWM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBcm1lbmlhbjoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkJpbmFyeToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkJlbmdhbGk6Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDYW1ib2RpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpDSktJZGVvZ3JhcGhpYzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkNqa0VhcnRobHlCcmFu
Y2g6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDamtIZWF2ZW5seVN0ZW06CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpEZWNpbWFsTGVhZGluZ1plcm86CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpEZWNpbWFsOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGV2YW5hZ2FyaToKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OkV0aGlvcGljOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9w
aWNBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlQW1FdDoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZUdlejoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZVRpRXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpFdGhpb3BpY0FiZWdlZGVUaUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNI
YWxlaGFtZUFhRXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lQWFF
dDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVBbUV0OgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUdlejoKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVPbUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRo
aW9waWNIYWxlaGFtZVNpZEV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxl
aGFtZVNvRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0hhbGVoYW1lVGlFcjoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVUaUV0OgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVRpZzoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6Okdlb3JnaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6R3VqYXJhdGk6CisgICAgY2Fz
ZSBMaXN0U3R5bGVUeXBlOjpHdXJtdWtoaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okhhbmd1
bDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okhhbmd1bENvbnNvbmFudDoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkhlYnJldzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkhpcmFnYW5hOgor
ICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGlyYWdhbmFJcm9oYToKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6Okthbm5hZGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpLYXRha2FuYToKKyAgICBj
YXNlIExpc3RTdHlsZVR5cGU6OkthdGFrYW5hSXJvaGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpLaG1lcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkxhbzoKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6Okxvd2VyQWxwaGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckFybWVuaWFu
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJHcmVlazoKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6Okxvd2VySGV4YWRlY2ltYWw6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlckxh
dGluOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJOb3J3ZWdpYW46CisgICAgY2FzZSBM
aXN0U3R5bGVUeXBlOjpMb3dlclJvbWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TWFsYXlh
bGFtOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TW9uZ29saWFuOgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6TXlhbm1hcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok9jdGFsOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6T3JpeWE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpPcm9tbzoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlBlcnNpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpTaWRhbWE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpTb21hbGk6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpUZWx1Z3U6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUaGFpOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6VGliZXRhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3Jl
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmlueWFFcjoKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OlRpZ3JpbnlhRXJBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmlu
eWFFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXRBYmVnZWRlOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJBbHBoYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVw
cGVyQXJtZW5pYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlckdyZWVrOgorICAgIGNh
c2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJIZXhhZGVjaW1hbDoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OlVwcGVyTGF0aW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcHBlck5vcndlZ2lhbjoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyUm9tYW46CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpVcmR1OgorICAgICAgICBpZiAobV90ZXh0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGxv
Z2ljYWxXaWR0aCA9IDA7CisgICAgICAgIGVsc2UgewogICAgICAgICAgICAgVGV4dFJ1biBydW4g
PSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihtX3RleHQsIHN0eWxlKCkpOwotICAgICAg
ICAgICAgbG9naWNhbFdpZHRoID0gZm9udC53aWR0aChydW4pOyAvLyBubyBzdWZmaXggZm9yIHRo
ZXNlIHR5cGVzCisgICAgICAgICAgICBMYXlvdXRVbml0IGl0ZW1XaWR0aCA9IGZvbnQud2lkdGgo
cnVuKTsKKyAgICAgICAgICAgIFVDaGFyIHN1ZmZpeFNwYWNlWzJdID0geyBsaXN0TWFya2VyU3Vm
Zml4KHR5cGUsIG1fbGlzdEl0ZW0udmFsdWUoKSksICcgJyB9OworICAgICAgICAgICAgTGF5b3V0
VW5pdCBzdWZmaXhTcGFjZVdpZHRoID0gZm9udC53aWR0aChSZW5kZXJCbG9jazo6Y29uc3RydWN0
VGV4dFJ1bihzdWZmaXhTcGFjZSwgMiwgc3R5bGUoKSkpOworICAgICAgICAgICAgbG9naWNhbFdp
ZHRoID0gaXRlbVdpZHRoICsgc3VmZml4U3BhY2VXaWR0aDsKICAgICAgICAgfQotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2lyY2xlOgotICAgICAgICBjYXNlIERpc2M6Ci0gICAg
ICAgIGNhc2UgU3F1YXJlOgotICAgICAgICAgICAgbG9naWNhbFdpZHRoID0gKGZvbnQuZm9udE1l
dHJpY3MoKS5hc2NlbnQoKSAqIDIgLyAzICsgMSkgLyAyICsgMjsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIEFmYXI6Ci0gICAgICAgIGNhc2UgQW1oYXJpYzoKLSAgICAgICAgY2Fz
ZSBBbWhhcmljQWJlZ2VkZToKLSAgICAgICAgY2FzZSBBcmFiaWNJbmRpYzoKLSAgICAgICAgY2Fz
ZSBBcm1lbmlhbjoKLSAgICAgICAgY2FzZSBCaW5hcnlMaXN0U3R5bGU6Ci0gICAgICAgIGNhc2Ug
QmVuZ2FsaToKLSAgICAgICAgY2FzZSBDYW1ib2RpYW46Ci0gICAgICAgIGNhc2UgQ0pLSWRlb2dy
YXBoaWM6Ci0gICAgICAgIGNhc2UgQ2prRWFydGhseUJyYW5jaDoKLSAgICAgICAgY2FzZSBDamtI
ZWF2ZW5seVN0ZW06Ci0gICAgICAgIGNhc2UgRGVjaW1hbExlYWRpbmdaZXJvOgotICAgICAgICBj
YXNlIERlY2ltYWxMaXN0U3R5bGU6Ci0gICAgICAgIGNhc2UgRGV2YW5hZ2FyaToKLSAgICAgICAg
Y2FzZSBFdGhpb3BpYzoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0FiZWdlZGU6Ci0gICAgICAgIGNh
c2UgRXRoaW9waWNBYmVnZWRlQW1FdDoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0FiZWdlZGVHZXo6
Ci0gICAgICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlVGlFcjoKLSAgICAgICAgY2FzZSBFdGhpb3Bp
Y0FiZWdlZGVUaUV0OgotICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVBYUVyOgotICAgICAg
ICBjYXNlIEV0aGlvcGljSGFsZWhhbWVBYUV0OgotICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhh
bWVBbUV0OgotICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVHZXo6Ci0gICAgICAgIGNhc2Ug
RXRoaW9waWNIYWxlaGFtZU9tRXQ6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNIYWxlaGFtZVNpZEV0
OgotICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVTb0V0OgotICAgICAgICBjYXNlIEV0aGlv
cGljSGFsZWhhbWVUaUVyOgotICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVUaUV0OgotICAg
ICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVUaWc6Ci0gICAgICAgIGNhc2UgR2VvcmdpYW46Ci0g
ICAgICAgIGNhc2UgR3VqYXJhdGk6Ci0gICAgICAgIGNhc2UgR3VybXVraGk6Ci0gICAgICAgIGNh
c2UgSGFuZ3VsOgotICAgICAgICBjYXNlIEhhbmd1bENvbnNvbmFudDoKLSAgICAgICAgY2FzZSBI
ZWJyZXc6Ci0gICAgICAgIGNhc2UgSGlyYWdhbmE6Ci0gICAgICAgIGNhc2UgSGlyYWdhbmFJcm9o
YToKLSAgICAgICAgY2FzZSBLYW5uYWRhOgotICAgICAgICBjYXNlIEthdGFrYW5hOgotICAgICAg
ICBjYXNlIEthdGFrYW5hSXJvaGE6Ci0gICAgICAgIGNhc2UgS2htZXI6Ci0gICAgICAgIGNhc2Ug
TGFvOgotICAgICAgICBjYXNlIExvd2VyQWxwaGE6Ci0gICAgICAgIGNhc2UgTG93ZXJBcm1lbmlh
bjoKLSAgICAgICAgY2FzZSBMb3dlckdyZWVrOgotICAgICAgICBjYXNlIExvd2VySGV4YWRlY2lt
YWw6Ci0gICAgICAgIGNhc2UgTG93ZXJMYXRpbjoKLSAgICAgICAgY2FzZSBMb3dlck5vcndlZ2lh
bjoKLSAgICAgICAgY2FzZSBMb3dlclJvbWFuOgotICAgICAgICBjYXNlIE1hbGF5YWxhbToKLSAg
ICAgICAgY2FzZSBNb25nb2xpYW46Ci0gICAgICAgIGNhc2UgTXlhbm1hcjoKLSAgICAgICAgY2Fz
ZSBPY3RhbDoKLSAgICAgICAgY2FzZSBPcml5YToKLSAgICAgICAgY2FzZSBPcm9tbzoKLSAgICAg
ICAgY2FzZSBQZXJzaWFuOgotICAgICAgICBjYXNlIFNpZGFtYToKLSAgICAgICAgY2FzZSBTb21h
bGk6Ci0gICAgICAgIGNhc2UgVGVsdWd1OgotICAgICAgICBjYXNlIFRoYWk6Ci0gICAgICAgIGNh
c2UgVGliZXRhbjoKLSAgICAgICAgY2FzZSBUaWdyZToKLSAgICAgICAgY2FzZSBUaWdyaW55YUVy
OgotICAgICAgICBjYXNlIFRpZ3JpbnlhRXJBYmVnZWRlOgotICAgICAgICBjYXNlIFRpZ3Jpbnlh
RXQ6Ci0gICAgICAgIGNhc2UgVGlncmlueWFFdEFiZWdlZGU6Ci0gICAgICAgIGNhc2UgVXBwZXJB
bHBoYToKLSAgICAgICAgY2FzZSBVcHBlckFybWVuaWFuOgotICAgICAgICBjYXNlIFVwcGVyR3Jl
ZWs6Ci0gICAgICAgIGNhc2UgVXBwZXJIZXhhZGVjaW1hbDoKLSAgICAgICAgY2FzZSBVcHBlckxh
dGluOgotICAgICAgICBjYXNlIFVwcGVyTm9yd2VnaWFuOgotICAgICAgICBjYXNlIFVwcGVyUm9t
YW46Ci0gICAgICAgIGNhc2UgVXJkdToKLSAgICAgICAgICAgIGlmIChtX3RleHQuaXNFbXB0eSgp
KQotICAgICAgICAgICAgICAgIGxvZ2ljYWxXaWR0aCA9IDA7Ci0gICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0
UnVuKG1fdGV4dCwgc3R5bGUoKSk7Ci0gICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBpdGVtV2lk
dGggPSBmb250LndpZHRoKHJ1bik7Ci0gICAgICAgICAgICAgICAgVUNoYXIgc3VmZml4U3BhY2Vb
Ml0gPSB7IGxpc3RNYXJrZXJTdWZmaXgodHlwZSwgbV9saXN0SXRlbS52YWx1ZSgpKSwgJyAnIH07
Ci0gICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBzdWZmaXhTcGFjZVdpZHRoID0gZm9udC53aWR0
aChSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihzdWZmaXhTcGFjZSwgMiwgc3R5bGUoKSkp
OwotICAgICAgICAgICAgICAgIGxvZ2ljYWxXaWR0aCA9IGl0ZW1XaWR0aCArIHN1ZmZpeFNwYWNl
V2lkdGg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgYnJlYWs7
CiAgICAgfQogCiAgICAgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBsb2dpY2FsV2lkdGg7
CkBAIC0xNjc2LDkgKzE2NzYsOSBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnVwZGF0ZU1hcmdp
bnMoKQogICAgICAgICBpZiAoaXNJbWFnZSgpKQogICAgICAgICAgICAgbWFyZ2luRW5kID0gY01h
cmtlclBhZGRpbmc7CiAgICAgICAgIGVsc2Ugc3dpdGNoIChzdHlsZSgpLmxpc3RTdHlsZVR5cGUo
KSkgewotICAgICAgICAgICAgY2FzZSBEaXNjOgotICAgICAgICAgICAgY2FzZSBDaXJjbGU6Ci0g
ICAgICAgICAgICBjYXNlIFNxdWFyZToKKyAgICAgICAgICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
RGlzYzoKKyAgICAgICAgICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6Q2lyY2xlOgorICAgICAgICAg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpTcXVhcmU6CiAgICAgICAgICAgICAgICAgbWFyZ2luU3Rh
cnQgPSAtMTsKICAgICAgICAgICAgICAgICBtYXJnaW5FbmQgPSBmb250TWV0cmljcy5hc2NlbnQo
KSAtIG1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpICsgMTsKICAgICAgICAgICAgICAgICBicmVh
azsKQEAgLTE2OTIsMTUgKzE2OTIsMTUgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjp1cGRhdGVN
YXJnaW5zKCkKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGludCBvZmZzZXQg
PSBmb250TWV0cmljcy5hc2NlbnQoKSAqIDIgLyAzOwogICAgICAgICAgICAgICAgIHN3aXRjaCAo
c3R5bGUoKS5saXN0U3R5bGVUeXBlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBEaXNj
OgotICAgICAgICAgICAgICAgICAgICBjYXNlIENpcmNsZToKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSBTcXVhcmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5TdGFydCA9IC1vZmZz
ZXQgLSBjTWFya2VyUGFkZGluZyAtIDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSBOb25lTGlzdFN0eWxlOgotICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBtYXJnaW5TdGFydCA9IG1fdGV4dC5pc0VtcHR5KCkgPyBMYXlvdXRVbml0
KCkgOiAtbWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCkgLSBvZmZzZXQgLyAyOworICAgICAgICAg
ICAgICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGlzYzoKKyAgICAgICAgICAgICAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OkNpcmNsZToKKyAgICAgICAgICAgICAgICBjYXNlIExpc3RTdHlsZVR5cGU6
OlNxdWFyZToKKyAgICAgICAgICAgICAgICAgICAgbWFyZ2luU3RhcnQgPSAtb2Zmc2V0IC0gY01h
cmtlclBhZGRpbmcgLSAxOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIExpc3RTdHlsZVR5cGU6Ok5vbmU6CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIG1hcmdpblN0
YXJ0ID0gbV90ZXh0LmlzRW1wdHkoKSA/IExheW91dFVuaXQoKSA6IC1taW5QcmVmZXJyZWRMb2dp
Y2FsV2lkdGgoKSAtIG9mZnNldCAvIDI7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogICAgICAgICAgICAgbWFyZ2luRW5kID0gLW1hcmdpblN0YXJ0IC0gbWluUHJlZmVycmVkTG9n
aWNhbFdpZHRoKCk7CkBAIC0xNzEwLDE1ICsxNzEwLDE1IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtl
cjo6dXBkYXRlTWFyZ2lucygpCiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBp
bnQgb2Zmc2V0ID0gZm9udE1ldHJpY3MuYXNjZW50KCkgKiAyIC8gMzsKICAgICAgICAgICAgICAg
ICBzd2l0Y2ggKHN0eWxlKCkubGlzdFN0eWxlVHlwZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGNhc2UgRGlzYzoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDaXJjbGU6Ci0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgU3F1YXJlOgotICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luRW5k
ID0gb2Zmc2V0ICsgY01hcmtlclBhZGRpbmcgKyAxIC0gbWluUHJlZmVycmVkTG9naWNhbFdpZHRo
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSBOb25lTGlzdFN0eWxlOgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5F
bmQgPSBtX3RleHQuaXNFbXB0eSgpID8gMCA6IG9mZnNldCAvIDI7CisgICAgICAgICAgICAgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpEaXNjOgorICAgICAgICAgICAgICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6Q2lyY2xlOgorICAgICAgICAgICAgICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6U3F1YXJl
OgorICAgICAgICAgICAgICAgICAgICBtYXJnaW5FbmQgPSBvZmZzZXQgKyBjTWFya2VyUGFkZGlu
ZyArIDEgLSBtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpOb25lOgorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICBtYXJnaW5FbmQgPSBtX3RleHQuaXNFbXB0eSgpID8gMCA6IG9mZnNldCAvIDI7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgbWFyZ2luU3Rh
cnQgPSAtbWFyZ2luRW5kIC0gbWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCk7CkBAIC0xNzQ2LDcg
KzE3NDYsNyBAQCBpbnQgUmVuZGVyTGlzdE1hcmtlcjo6YmFzZWxpbmVQb3NpdGlvbihGCiAKIFN0
cmluZyBSZW5kZXJMaXN0TWFya2VyOjpzdWZmaXgoKSBjb25zdAogewotICAgIEVMaXN0U3R5bGVU
eXBlIHR5cGUgPSBzdHlsZSgpLmxpc3RTdHlsZVR5cGUoKTsKKyAgICBMaXN0U3R5bGVUeXBlIHR5
cGUgPSBzdHlsZSgpLmxpc3RTdHlsZVR5cGUoKTsKICAgICBjb25zdCBVQ2hhciBzdWZmaXggPSBs
aXN0TWFya2VyU3VmZml4KHR5cGUsIG1fbGlzdEl0ZW0udmFsdWUoKSk7CiAKICAgICBpZiAoc3Vm
Zml4ID09ICcgJykKQEAgLTE3NjcsNyArMTc2Nyw3IEBAIFN0cmluZyBSZW5kZXJMaXN0TWFya2Vy
OjpzdWZmaXgoKSBjb25zdAogCiBib29sIFJlbmRlckxpc3RNYXJrZXI6OmlzSW5zaWRlKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9saXN0SXRlbS5ub3RJbkxpc3QoKSB8fCBzdHlsZSgpLmxpc3RT
dHlsZVBvc2l0aW9uKCkgPT0gSU5TSURFOworICAgIHJldHVybiBtX2xpc3RJdGVtLm5vdEluTGlz
dCgpIHx8IHN0eWxlKCkubGlzdFN0eWxlUG9zaXRpb24oKSA9PSBMaXN0U3R5bGVQb3NpdGlvbjo6
SW5zaWRlOwogfQogCiBGbG9hdFJlY3QgUmVuZGVyTGlzdE1hcmtlcjo6Z2V0UmVsYXRpdmVNYXJr
ZXJSZWN0KCkKQEAgLTE3NzYsMTEwICsxNzc2LDExMCBAQCBGbG9hdFJlY3QgUmVuZGVyTGlzdE1h
cmtlcjo6Z2V0UmVsYXRpdmVNCiAgICAgICAgIHJldHVybiBGbG9hdFJlY3QoMCwgMCwgbV9pbWFn
ZS0+aW1hZ2VTaXplKHRoaXMsIHN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKS53aWR0aCgpLCBtX2lt
YWdlLT5pbWFnZVNpemUodGhpcywgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpLmhlaWdodCgpKTsK
ICAgICAKICAgICBGbG9hdFJlY3QgcmVsYXRpdmVSZWN0OwotICAgIEVMaXN0U3R5bGVUeXBlIHR5
cGUgPSBzdHlsZSgpLmxpc3RTdHlsZVR5cGUoKTsKKyAgICBMaXN0U3R5bGVUeXBlIHR5cGUgPSBz
dHlsZSgpLmxpc3RTdHlsZVR5cGUoKTsKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2Fz
ZSBBc3Rlcmlza3M6Ci0gICAgICAgIGNhc2UgRm9vdG5vdGVzOiB7Ci0gICAgICAgICAgICBjb25z
dCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKTsKLSAgICAgICAgICAg
IFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4obV90ZXh0LCBzdHls
ZSgpKTsKLSAgICAgICAgICAgIHJlbGF0aXZlUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCBmb250Lndp
ZHRoKHJ1biksIGZvbnQuZm9udE1ldHJpY3MoKS5oZWlnaHQoKSk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICBjYXNlIERpc2M6Ci0gICAgICAgIGNhc2UgQ2lyY2xlOgot
ICAgICAgICBjYXNlIFNxdWFyZTogewotICAgICAgICAgICAgLy8gRklYTUU6IEFyZSB0aGVzZSBw
YXJ0aWN1bGFyIHJvdW5kaW5nIHJ1bGVzIG5lY2Vzc2FyeT8KLSAgICAgICAgICAgIGNvbnN0IEZv
bnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlKCkuZm9udE1ldHJpY3MoKTsKLSAgICAgICAg
ICAgIGludCBhc2NlbnQgPSBmb250TWV0cmljcy5hc2NlbnQoKTsKLSAgICAgICAgICAgIGludCBi
dWxsZXRXaWR0aCA9IChhc2NlbnQgKiAyIC8gMyArIDEpIC8gMjsKLSAgICAgICAgICAgIHJlbGF0
aXZlUmVjdCA9IEZsb2F0UmVjdCgxLCAzICogKGFzY2VudCAtIGFzY2VudCAqIDIgLyAzKSAvIDIs
IGJ1bGxldFdpZHRoLCBidWxsZXRXaWR0aCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIE5vbmVMaXN0U3R5bGU6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpB
c3Rlcmlza3M6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpGb290bm90ZXM6IHsKKyAgICAgICAg
Y29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCk7CisgICAgICAg
IFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4obV90ZXh0LCBzdHls
ZSgpKTsKKyAgICAgICAgcmVsYXRpdmVSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIGZvbnQud2lkdGgo
cnVuKSwgZm9udC5mb250TWV0cmljcygpLmhlaWdodCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGlzYzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6
OkNpcmNsZToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlNxdWFyZTogeworICAgICAgICAvLyBG
SVhNRTogQXJlIHRoZXNlIHBhcnRpY3VsYXIgcm91bmRpbmcgcnVsZXMgbmVjZXNzYXJ5PworICAg
ICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBzdHlsZSgpLmZvbnRNZXRyaWNz
KCk7CisgICAgICAgIGludCBhc2NlbnQgPSBmb250TWV0cmljcy5hc2NlbnQoKTsKKyAgICAgICAg
aW50IGJ1bGxldFdpZHRoID0gKGFzY2VudCAqIDIgLyAzICsgMSkgLyAyOworICAgICAgICByZWxh
dGl2ZVJlY3QgPSBGbG9hdFJlY3QoMSwgMyAqIChhc2NlbnQgLSBhc2NlbnQgKiAyIC8gMykgLyAy
LCBidWxsZXRXaWR0aCwgYnVsbGV0V2lkdGgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpOb25lOgorICAgICAgICByZXR1cm4gRmxvYXRSZWN0KCk7Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBZmFyOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6QW1o
YXJpYzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkFtaGFyaWNBYmVnZWRlOgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6QXJhYmljSW5kaWM6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpBcm1l
bmlhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkJpbmFyeToKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OkJlbmdhbGk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDYW1ib2RpYW46CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpDSktJZGVvZ3JhcGhpYzoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6OkNqa0VhcnRobHlCcmFuY2g6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpDamtIZWF2ZW5s
eVN0ZW06CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpEZWNpbWFsTGVhZGluZ1plcm86CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpEZWNpbWFsOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RGV2
YW5hZ2FyaToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6RXRoaW9waWNBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRo
aW9waWNBYmVnZWRlQW1FdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2Vk
ZUdlejoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljQWJlZ2VkZVRpRXI6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhpb3BpY0FiZWdlZGVUaUV0OgorICAgIGNhc2UgTGlzdFN0
eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUFhRXI6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpF
dGhpb3BpY0hhbGVoYW1lQWFFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFs
ZWhhbWVBbUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZUdlejoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhhbWVPbUV0OgorICAgIGNhc2Ug
TGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVNpZEV0OgorICAgIGNhc2UgTGlzdFN0eWxl
VHlwZTo6RXRoaW9waWNIYWxlaGFtZVNvRXQ6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpFdGhp
b3BpY0hhbGVoYW1lVGlFcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkV0aGlvcGljSGFsZWhh
bWVUaUV0OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6RXRoaW9waWNIYWxlaGFtZVRpZzoKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6Okdlb3JnaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6
R3VqYXJhdGk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpHdXJtdWtoaToKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6Okhhbmd1bDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okhhbmd1bENvbnNv
bmFudDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkhlYnJldzoKKyAgICBjYXNlIExpc3RTdHls
ZVR5cGU6OkhpcmFnYW5hOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6SGlyYWdhbmFJcm9oYToK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okthbm5hZGE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpLYXRha2FuYToKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkthdGFrYW5hSXJvaGE6CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpLaG1lcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OkxhbzoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VyQWxwaGE6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpMb3dlckFybWVuaWFuOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJHcmVlazoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6Okxvd2VySGV4YWRlY2ltYWw6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpMb3dlckxhdGluOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TG93ZXJOb3J3
ZWdpYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpMb3dlclJvbWFuOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6TWFsYXlhbGFtOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TW9uZ29saWFu
OgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6TXlhbm1hcjoKKyAgICBjYXNlIExpc3RTdHlsZVR5
cGU6Ok9jdGFsOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6T3JpeWE6CisgICAgY2FzZSBMaXN0
U3R5bGVUeXBlOjpPcm9tbzoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlBlcnNpYW46CisgICAg
Y2FzZSBMaXN0U3R5bGVUeXBlOjpTaWRhbWE6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpTb21h
bGk6CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUZWx1Z3U6CisgICAgY2FzZSBMaXN0U3R5bGVU
eXBlOjpUaGFpOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGliZXRhbjoKKyAgICBjYXNlIExp
c3RTdHlsZVR5cGU6OlRpZ3JlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VGlncmlueWFFcjoK
KyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3JpbnlhRXJBYmVnZWRlOgorICAgIGNhc2UgTGlz
dFN0eWxlVHlwZTo6VGlncmlueWFFdDoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlRpZ3Jpbnlh
RXRBYmVnZWRlOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJBbHBoYToKKyAgICBjYXNl
IExpc3RTdHlsZVR5cGU6OlVwcGVyQXJtZW5pYW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpV
cHBlckdyZWVrOgorICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VXBwZXJIZXhhZGVjaW1hbDoKKyAg
ICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyTGF0aW46CisgICAgY2FzZSBMaXN0U3R5bGVUeXBl
OjpVcHBlck5vcndlZ2lhbjoKKyAgICBjYXNlIExpc3RTdHlsZVR5cGU6OlVwcGVyUm9tYW46Cisg
ICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpVcmR1OgorICAgICAgICBpZiAobV90ZXh0LmlzRW1wdHko
KSkKICAgICAgICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsKLSAgICAgICAgY2FzZSBBZmFyOgot
ICAgICAgICBjYXNlIEFtaGFyaWM6Ci0gICAgICAgIGNhc2UgQW1oYXJpY0FiZWdlZGU6Ci0gICAg
ICAgIGNhc2UgQXJhYmljSW5kaWM6Ci0gICAgICAgIGNhc2UgQXJtZW5pYW46Ci0gICAgICAgIGNh
c2UgQmluYXJ5TGlzdFN0eWxlOgotICAgICAgICBjYXNlIEJlbmdhbGk6Ci0gICAgICAgIGNhc2Ug
Q2FtYm9kaWFuOgotICAgICAgICBjYXNlIENKS0lkZW9ncmFwaGljOgotICAgICAgICBjYXNlIENq
a0VhcnRobHlCcmFuY2g6Ci0gICAgICAgIGNhc2UgQ2prSGVhdmVubHlTdGVtOgotICAgICAgICBj
YXNlIERlY2ltYWxMZWFkaW5nWmVybzoKLSAgICAgICAgY2FzZSBEZWNpbWFsTGlzdFN0eWxlOgot
ICAgICAgICBjYXNlIERldmFuYWdhcmk6Ci0gICAgICAgIGNhc2UgRXRoaW9waWM6Ci0gICAgICAg
IGNhc2UgRXRoaW9waWNBYmVnZWRlOgotICAgICAgICBjYXNlIEV0aGlvcGljQWJlZ2VkZUFtRXQ6
Ci0gICAgICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlR2V6OgotICAgICAgICBjYXNlIEV0aGlvcGlj
QWJlZ2VkZVRpRXI6Ci0gICAgICAgIGNhc2UgRXRoaW9waWNBYmVnZWRlVGlFdDoKLSAgICAgICAg
Y2FzZSBFdGhpb3BpY0hhbGVoYW1lQWFFcjoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1l
QWFFdDoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lQW1FdDoKLSAgICAgICAgY2FzZSBF
dGhpb3BpY0hhbGVoYW1lR2V6OgotICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVPbUV0Ogot
ICAgICAgICBjYXNlIEV0aGlvcGljSGFsZWhhbWVTaWRFdDoKLSAgICAgICAgY2FzZSBFdGhpb3Bp
Y0hhbGVoYW1lU29FdDoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lVGlFcjoKLSAgICAg
ICAgY2FzZSBFdGhpb3BpY0hhbGVoYW1lVGlFdDoKLSAgICAgICAgY2FzZSBFdGhpb3BpY0hhbGVo
YW1lVGlnOgotICAgICAgICBjYXNlIEdlb3JnaWFuOgotICAgICAgICBjYXNlIEd1amFyYXRpOgot
ICAgICAgICBjYXNlIEd1cm11a2hpOgotICAgICAgICBjYXNlIEhhbmd1bDoKLSAgICAgICAgY2Fz
ZSBIYW5ndWxDb25zb25hbnQ6Ci0gICAgICAgIGNhc2UgSGVicmV3OgotICAgICAgICBjYXNlIEhp
cmFnYW5hOgotICAgICAgICBjYXNlIEhpcmFnYW5hSXJvaGE6Ci0gICAgICAgIGNhc2UgS2FubmFk
YToKLSAgICAgICAgY2FzZSBLYXRha2FuYToKLSAgICAgICAgY2FzZSBLYXRha2FuYUlyb2hhOgot
ICAgICAgICBjYXNlIEtobWVyOgotICAgICAgICBjYXNlIExhbzoKLSAgICAgICAgY2FzZSBMb3dl
ckFscGhhOgotICAgICAgICBjYXNlIExvd2VyQXJtZW5pYW46Ci0gICAgICAgIGNhc2UgTG93ZXJH
cmVlazoKLSAgICAgICAgY2FzZSBMb3dlckhleGFkZWNpbWFsOgotICAgICAgICBjYXNlIExvd2Vy
TGF0aW46Ci0gICAgICAgIGNhc2UgTG93ZXJOb3J3ZWdpYW46Ci0gICAgICAgIGNhc2UgTG93ZXJS
b21hbjoKLSAgICAgICAgY2FzZSBNYWxheWFsYW06Ci0gICAgICAgIGNhc2UgTW9uZ29saWFuOgot
ICAgICAgICBjYXNlIE15YW5tYXI6Ci0gICAgICAgIGNhc2UgT2N0YWw6Ci0gICAgICAgIGNhc2Ug
T3JpeWE6Ci0gICAgICAgIGNhc2UgT3JvbW86Ci0gICAgICAgIGNhc2UgUGVyc2lhbjoKLSAgICAg
ICAgY2FzZSBTaWRhbWE6Ci0gICAgICAgIGNhc2UgU29tYWxpOgotICAgICAgICBjYXNlIFRlbHVn
dToKLSAgICAgICAgY2FzZSBUaGFpOgotICAgICAgICBjYXNlIFRpYmV0YW46Ci0gICAgICAgIGNh
c2UgVGlncmU6Ci0gICAgICAgIGNhc2UgVGlncmlueWFFcjoKLSAgICAgICAgY2FzZSBUaWdyaW55
YUVyQWJlZ2VkZToKLSAgICAgICAgY2FzZSBUaWdyaW55YUV0OgotICAgICAgICBjYXNlIFRpZ3Jp
bnlhRXRBYmVnZWRlOgotICAgICAgICBjYXNlIFVwcGVyQWxwaGE6Ci0gICAgICAgIGNhc2UgVXBw
ZXJBcm1lbmlhbjoKLSAgICAgICAgY2FzZSBVcHBlckdyZWVrOgotICAgICAgICBjYXNlIFVwcGVy
SGV4YWRlY2ltYWw6Ci0gICAgICAgIGNhc2UgVXBwZXJMYXRpbjoKLSAgICAgICAgY2FzZSBVcHBl
ck5vcndlZ2lhbjoKLSAgICAgICAgY2FzZSBVcHBlclJvbWFuOgotICAgICAgICBjYXNlIFVyZHU6
Ci0gICAgICAgICAgICBpZiAobV90ZXh0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gRmxvYXRSZWN0KCk7Ci0gICAgICAgICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0
eWxlKCkuZm9udENhc2NhZGUoKTsKLSAgICAgICAgICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxv
Y2s6OmNvbnN0cnVjdFRleHRSdW4obV90ZXh0LCBzdHlsZSgpKTsKLSAgICAgICAgICAgIGZsb2F0
IGl0ZW1XaWR0aCA9IGZvbnQud2lkdGgocnVuKTsKLSAgICAgICAgICAgIFVDaGFyIHN1ZmZpeFNw
YWNlWzJdID0geyBsaXN0TWFya2VyU3VmZml4KHR5cGUsIG1fbGlzdEl0ZW0udmFsdWUoKSksICcg
JyB9OwotICAgICAgICAgICAgZmxvYXQgc3VmZml4U3BhY2VXaWR0aCA9IGZvbnQud2lkdGgoUmVu
ZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oc3VmZml4U3BhY2UsIDIsIHN0eWxlKCkpKTsKLSAg
ICAgICAgICAgIHJlbGF0aXZlUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCBpdGVtV2lkdGggKyBzdWZm
aXhTcGFjZVdpZHRoLCBmb250LmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCkpOworICAgICAgICBjb25z
dCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKTsKKyAgICAgICAgVGV4
dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihtX3RleHQsIHN0eWxlKCkp
OworICAgICAgICBmbG9hdCBpdGVtV2lkdGggPSBmb250LndpZHRoKHJ1bik7CisgICAgICAgIFVD
aGFyIHN1ZmZpeFNwYWNlWzJdID0geyBsaXN0TWFya2VyU3VmZml4KHR5cGUsIG1fbGlzdEl0ZW0u
dmFsdWUoKSksICcgJyB9OworICAgICAgICBmbG9hdCBzdWZmaXhTcGFjZVdpZHRoID0gZm9udC53
aWR0aChSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihzdWZmaXhTcGFjZSwgMiwgc3R5bGUo
KSkpOworICAgICAgICByZWxhdGl2ZVJlY3QgPSBGbG9hdFJlY3QoMCwgMCwgaXRlbVdpZHRoICsg
c3VmZml4U3BhY2VXaWR0aCwgZm9udC5mb250TWV0cmljcygpLmhlaWdodCgpKTsKICAgICB9CiAK
ICAgICBpZiAoIXN0eWxlKCkuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkgewpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCShyZXZpc2lvbiAyMzIx
NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
UmVuZGVyTGlzdEl0ZW07CiAKLVN0cmluZyBsaXN0TWFya2VyVGV4dChFTGlzdFN0eWxlVHlwZSwg
aW50IHZhbHVlKTsKK1N0cmluZyBsaXN0TWFya2VyVGV4dChMaXN0U3R5bGVUeXBlLCBpbnQgdmFs
dWUpOwogCiAvLyBVc2VkIHRvIHJlbmRlciB0aGUgbGlzdCBpdGVtJ3MgbWFya2VyLgogLy8gVGhl
IFJlbmRlckxpc3RNYXJrZXIgYWx3YXlzIGhhcyB0byBiZSBhIGNoaWxkIG9mIGEgUmVuZGVyTGlz
dEl0ZW0uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9s
RWxlbWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBSZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRh
aW5lcjo6bAogewogICAgIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0KCk7CiAKLSAgICBpZiAoc3R5
bGUoKS5kaXNwbGF5KCkgPT0gTk9ORSB8fCAhaXM8UmVuZGVyQm94PihuZXh0U2libGluZygpKSkK
KyAgICBpZiAoc3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUgfHwgIWlzPFJl
bmRlckJveD4obmV4dFNpYmxpbmcoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlbmRlckJv
eCYgYnV0dG9uQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PigqbmV4dFNpYmxpbmcoKSk7CkBAIC05
OCw3ICs5OCw3IEBAIFJlbmRlclRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OlJlbmRlclQKIHZv
aWQgUmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6bGF5b3V0KCkKIHsKICAgICBSZW5k
ZXJCbG9ja0Zsb3c6OmxheW91dCgpOwotICAgIGlmIChzdHlsZSgpLmRpc3BsYXkoKSA9PSBOT05F
KQorICAgIGlmIChzdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKG1lZGlhQ29udHJvbEVsZW1lbnRUeXBlKGVsZW1lbnQo
KSkgPT0gTWVkaWFUZXh0VHJhY2tEaXNwbGF5Q29udGFpbmVyKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTI3LDEyICsxMjcsMTIgQEAgdm9pZCBSZW5kZXJNZW51TGlzdDo6YWRqdXN0SW5uZXJT
dHlsZSgpCiAgICAgaWYgKGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5zZWxlY3RJdGVtV3Jp
dGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpKSB7CiAgICAgICAgIC8vIEl0ZW1zIGluIHRoZSBwb3B1
cCB3aWxsIG5vdCByZXNwZWN0IHRoZSBDU1MgdGV4dC1hbGlnbiBhbmQgZGlyZWN0aW9uIHByb3Bl
cnRpZXMsCiAgICAgICAgIC8vIHNvIHdlIG11c3QgYWRqdXN0IG91ciBvd24gc3R5bGUgdG8gbWF0
Y2guCi0gICAgICAgIGlubmVyU3R5bGUuc2V0VGV4dEFsaWduKExFRlQpOworICAgICAgICBpbm5l
clN0eWxlLnNldFRleHRBbGlnbihUZXh0QWxpZ25Nb2RlOjpMZWZ0KTsKICAgICAgICAgVGV4dERp
cmVjdGlvbiBkaXJlY3Rpb24gPSAobV9idXR0b25UZXh0ICYmIG1fYnV0dG9uVGV4dC0+dGV4dCgp
LmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCkgPT0gVV9SSUdIVF9UT19MRUZUKSA/IFJUTCA6IExU
UjsKICAgICAgICAgaW5uZXJTdHlsZS5zZXREaXJlY3Rpb24oZGlyZWN0aW9uKTsKICNpZiBQTEFU
Rk9STShJT1MpCiAgICAgfSBlbHNlIGlmIChkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuc2Vs
ZWN0SXRlbUFsaWdubWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpKSB7Ci0gICAgICAg
IGlubmVyU3R5bGUuc2V0VGV4dEFsaWduKHN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gTFRSID8gTEVG
VCA6IFJJR0hUKTsKKyAgICAgICAgaW5uZXJTdHlsZS5zZXRUZXh0QWxpZ24oc3R5bGUoKS5kaXJl
Y3Rpb24oKSA9PSBMVFIgPyBUZXh0QWxpZ25Nb2RlOjpMZWZ0IDogVGV4dEFsaWduTW9kZTo6Umln
aHQpOwogICAgICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbjsKICAgICAgICAgRVVuaWNvZGVC
aWRpIHVuaWNvZGVCaWRpOwogICAgICAgICBpZiAobXVsdGlwbGUoKSAmJiBzZWxlY3RlZE9wdGlv
bkNvdW50KCp0aGlzKSAhPSAxKSB7CkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBSZW5kZXJNZW51
TGlzdDo6YWRqdXN0SW5uZXJTdHlsZSgpCiAgICAgfSBlbHNlIGlmIChtX29wdGlvblN0eWxlICYm
IGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5zZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01l
bnVXcml0aW5nRGlyZWN0aW9uKCkpIHsKICAgICAgICAgaWYgKChtX29wdGlvblN0eWxlLT5kaXJl
Y3Rpb24oKSAhPSBpbm5lclN0eWxlLmRpcmVjdGlvbigpIHx8IG1fb3B0aW9uU3R5bGUtPnVuaWNv
ZGVCaWRpKCkgIT0gaW5uZXJTdHlsZS51bmljb2RlQmlkaSgpKSkKICAgICAgICAgICAgIG1faW5u
ZXJCbG9jay0+c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7Ci0gICAgICAgIGlu
bmVyU3R5bGUuc2V0VGV4dEFsaWduKHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8g
TEVGVCA6IFJJR0hUKTsKKyAgICAgICAgaW5uZXJTdHlsZS5zZXRUZXh0QWxpZ24oc3R5bGUoKS5p
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBUZXh0QWxpZ25Nb2RlOjpMZWZ0IDogVGV4dEFsaWdu
TW9kZTo6UmlnaHQpOwogICAgICAgICBpbm5lclN0eWxlLnNldERpcmVjdGlvbihtX29wdGlvblN0
eWxlLT5kaXJlY3Rpb24oKSk7CiAgICAgICAgIGlubmVyU3R5bGUuc2V0VW5pY29kZUJpZGkobV9v
cHRpb25TdHlsZS0+dW5pY29kZUJpZGkoKSk7CiAgICAgfQpAQCAtNTA3LDggKzUwNyw4IEBAIFBv
cHVwTWVudVN0eWxlIFJlbmRlck1lbnVMaXN0OjppdGVtU3R5bGUKICAgICBnZXRJdGVtQmFja2dy
b3VuZENvbG9yKGxpc3RJbmRleCwgaXRlbUJhY2tncm91bmRDb2xvciwgaXRlbUhhc0N1c3RvbUJh
Y2tncm91bmRDb2xvcik7CiAKICAgICBhdXRvJiBzdHlsZSA9ICplbGVtZW50LT5jb21wdXRlZFN0
eWxlKCk7Ci0gICAgcmV0dXJuIFBvcHVwTWVudVN0eWxlKHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRD
b2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eUNvbG9yKSwgaXRlbUJhY2tncm91bmRDb2xv
ciwgc3R5bGUuZm9udENhc2NhZGUoKSwgc3R5bGUudmlzaWJpbGl0eSgpID09IFZJU0lCTEUsCi0g
ICAgICAgIHN0eWxlLmRpc3BsYXkoKSA9PSBOT05FLCB0cnVlLCBzdHlsZS50ZXh0SW5kZW50KCks
IHN0eWxlLmRpcmVjdGlvbigpLCBpc092ZXJyaWRlKHN0eWxlLnVuaWNvZGVCaWRpKCkpLAorICAg
IHJldHVybiBQb3B1cE1lbnVTdHlsZShzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRoQ29s
b3JGaWx0ZXIoQ1NTUHJvcGVydHlDb2xvciksIGl0ZW1CYWNrZ3JvdW5kQ29sb3IsIHN0eWxlLmZv
bnRDYXNjYWRlKCksIHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlLAor
ICAgICAgICBzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUsIHRydWUsIHN0eWxl
LnRleHRJbmRlbnQoKSwgc3R5bGUuZGlyZWN0aW9uKCksIGlzT3ZlcnJpZGUoc3R5bGUudW5pY29k
ZUJpZGkoKSksCiAgICAgICAgIGl0ZW1IYXNDdXN0b21CYWNrZ3JvdW5kQ29sb3IgPyBQb3B1cE1l
bnVTdHlsZTo6Q3VzdG9tQmFja2dyb3VuZENvbG9yIDogUG9wdXBNZW51U3R5bGU6OkRlZmF1bHRC
YWNrZ3JvdW5kQ29sb3IpOwogfQogCkBAIC01NDYsNyArNTQ2LDcgQEAgUG9wdXBNZW51U3R5bGUg
UmVuZGVyTWVudUxpc3Q6Om1lbnVTdHlsZQogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZVRv
VXNlID0gbV9pbm5lckJsb2NrID8gbV9pbm5lckJsb2NrLT5zdHlsZSgpIDogc3R5bGUoKTsKICAg
ICBJbnRSZWN0IGFic0JvdW5kcyA9IGFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFu
c2Zvcm1zKCk7CiAgICAgcmV0dXJuIFBvcHVwTWVudVN0eWxlKHN0eWxlVG9Vc2UudmlzaXRlZERl
cGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZVRvVXNl
LnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eUJhY2tncm91
bmRDb2xvciksCi0gICAgICAgIHN0eWxlVG9Vc2UuZm9udENhc2NhZGUoKSwgc3R5bGVUb1VzZS52
aXNpYmlsaXR5KCkgPT0gVklTSUJMRSwgc3R5bGVUb1VzZS5kaXNwbGF5KCkgPT0gTk9ORSwKKyAg
ICAgICAgc3R5bGVUb1VzZS5mb250Q2FzY2FkZSgpLCBzdHlsZVRvVXNlLnZpc2liaWxpdHkoKSA9
PSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBzdHlsZVRvVXNlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlw
ZTo6Tm9uZSwKICAgICAgICAgc3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkgJiYgc3R5bGUoKS5hcHBl
YXJhbmNlKCkgPT0gTWVudWxpc3RQYXJ0LCBzdHlsZVRvVXNlLnRleHRJbmRlbnQoKSwKICAgICAg
ICAgc3R5bGUoKS5kaXJlY3Rpb24oKSwgaXNPdmVycmlkZShzdHlsZSgpLnVuaWNvZGVCaWRpKCkp
LCBQb3B1cE1lbnVTdHlsZTo6RGVmYXVsdEJhY2tncm91bmRDb2xvciwKICAgICAgICAgUG9wdXBN
ZW51U3R5bGU6OlNlbGVjdFBvcHVwLCB0aGVtZSgpLnBvcHVwTWVudVNpemUoc3R5bGVUb1VzZSwg
YWJzQm91bmRzKSk7CkBAIC01NTksNyArNTU5LDcgQEAgSG9zdFdpbmRvdyogUmVuZGVyTWVudUxp
c3Q6Omhvc3RXaW5kb3coKQogCiBSZWY8U2Nyb2xsYmFyPiBSZW5kZXJNZW51TGlzdDo6Y3JlYXRl
U2Nyb2xsYmFyKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgU2Nyb2xsYmFyT3JpZW50
YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplKQogewot
ICAgIGJvb2wgaGFzQ3VzdG9tU2Nyb2xsYmFyU3R5bGUgPSBzdHlsZSgpLmhhc1BzZXVkb1N0eWxl
KFNDUk9MTEJBUik7CisgICAgYm9vbCBoYXNDdXN0b21TY3JvbGxiYXJTdHlsZSA9IHN0eWxlKCku
aGFzUHNldWRvU3R5bGUoUHNldWRvSWQ6OlNjcm9sbGJhcik7CiAgICAgaWYgKGhhc0N1c3RvbVNj
cm9sbGJhclN0eWxlKQogICAgICAgICByZXR1cm4gUmVuZGVyU2Nyb2xsYmFyOjpjcmVhdGVDdXN0
b21TY3JvbGxiYXIoc2Nyb2xsYWJsZUFyZWEsIG9yaWVudGF0aW9uLCAmc2VsZWN0RWxlbWVudCgp
KTsKICAgICByZXR1cm4gU2Nyb2xsYmFyOjpjcmVhdGVOYXRpdmVTY3JvbGxiYXIoc2Nyb2xsYWJs
ZUFyZWEsIG9yaWVudGF0aW9uLCBjb250cm9sU2l6ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQ
bGFjZWhvbGRlci5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDcgKzM5LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFJlbmRlck11
bHRpQwogCiBSZW5kZXJQdHI8UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXI+IFJl
bmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyOjpjcmVhdGVBbm9ueW1vdXMoUmVuZGVy
TXVsdGlDb2x1bW5GbG93JiBmcmFnbWVudGVkRmxvdywgUmVuZGVyQm94JiBzcGFubmVyLCBjb25z
dCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUpCiB7Ci0gICAgYXV0byBuZXdTdHlsZSA9IFJlbmRl
clN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudFN0eWxlLCBCTE9D
Syk7CisgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHls
ZVdpdGhEaXNwbGF5KHBhcmVudFN0eWxlLCBEaXNwbGF5VHlwZTo6QmxvY2spOwogICAgIG5ld1N0
eWxlLnNldENsZWFyKENsZWFyOjpCb3RoKTsgLy8gV2UgZG9uJ3Qgd2FudCBmbG9hdHMgaW4gdGhl
IHJvdyBwcmVjZWRpbmcgdGhlIHNwYW5uZXIgdG8gY29udGludWUgb24gdGhlIG90aGVyIHNpZGUu
CiAgICAgYXV0byBwbGFjZWhvbGRlciA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlck11bHRpQ29sdW1u
U3Bhbm5lclBsYWNlaG9sZGVyPihmcmFnbWVudGVkRmxvdywgc3Bhbm5lciwgV1RGTW92ZShuZXdT
dHlsZSkpOwogICAgIHBsYWNlaG9sZGVyLT5pbml0aWFsaXplU3R5bGUoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTU3NCw3ICsxNTc0LDcgQEAgaW50IFJlbmRlck9iamVjdDo6aW5uZXJMaW5lSGVpZ2h0
KCkgY29ucwogdm9pZCBSZW5kZXJPYmplY3Q6OmFkZEFubm90YXRlZFJlZ2lvbnMoVmVjdG9yPEFu
bm90YXRlZFJlZ2lvblZhbHVlPiYgcmVnaW9ucykKIHsKICAgICAvLyBDb252ZXJ0IHRoZSBzdHls
ZSByZWdpb25zIHRvIGFic29sdXRlIGNvb3JkaW5hdGVzLgotICAgIGlmIChzdHlsZSgpLnZpc2li
aWxpdHkoKSAhPSBWSVNJQkxFIHx8ICFpczxSZW5kZXJCb3g+KCp0aGlzKSkKKyAgICBpZiAoc3R5
bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSB8fCAhaXM8UmVuZGVyQm94
PigqdGhpcykpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBhdXRvJiBib3ggPSBkb3duY2Fz
dDxSZW5kZXJCb3g+KCp0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmgJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDA3LDkgKzQwNyw5IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMga2VwdCBpbiBzeW5jIHdpdGggYW5v
bnltb3VzIGJsb2NrIGNyZWF0aW9uIGNvbmRpdGlvbnMgaW4KICAgICAgICAgLy8gUmVuZGVyQmxv
Y2s6OmNyZWF0ZUFub255bW91c0Jsb2NrKCkuIFRoaXMgaW5jbHVkZXMgY3JlYXRpbmcgYW4gYW5v
bnltb3VzCi0gICAgICAgIC8vIFJlbmRlckJsb2NrIGhhdmluZyBhIEJMT0NLIG9yIEJPWCBkaXNw
bGF5LiBPdGhlciBjbGFzc2VzIHN1Y2ggYXMgUmVuZGVyVGV4dEZyYWdtZW50CisgICAgICAgIC8v
IFJlbmRlckJsb2NrIGhhdmluZyBhIERpc3BsYXlUeXBlOjpCbG9jayBvciBEaXNwbGF5VHlwZTo6
Qm94IGRpc3BsYXkuIE90aGVyIGNsYXNzZXMgc3VjaCBhcyBSZW5kZXJUZXh0RnJhZ21lbnQKICAg
ICAgICAgLy8gYXJlIG5vdCBSZW5kZXJCbG9ja3MgYW5kIHdpbGwgcmV0dXJuIGZhbHNlLiBTZWUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NzA5LiAKLSAgICAgICAg
cmV0dXJuIGlzQW5vbnltb3VzKCkgJiYgKHN0eWxlKCkuZGlzcGxheSgpID09IEJMT0NLIHx8IHN0
eWxlKCkuZGlzcGxheSgpID09IEJPWCkgJiYgc3R5bGUoKS5zdHlsZVR5cGUoKSA9PSBOT1BTRVVE
TyAmJiBpc1JlbmRlckJsb2NrKCkgJiYgIWlzTGlzdE1hcmtlcigpICYmICFpc1JlbmRlckZyYWdt
ZW50ZWRGbG93KCkgJiYgIWlzUmVuZGVyTXVsdGlDb2x1bW5TZXQoKSAmJiAhaXNSZW5kZXJWaWV3
KCkKKyAgICAgICAgcmV0dXJuIGlzQW5vbnltb3VzKCkgJiYgKHN0eWxlKCkuZGlzcGxheSgpID09
IERpc3BsYXlUeXBlOjpCbG9jayB8fCBzdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6
Qm94KSAmJiBzdHlsZSgpLnN0eWxlVHlwZSgpID09IFBzZXVkb0lkOjpOb25lICYmIGlzUmVuZGVy
QmxvY2soKSAmJiAhaXNMaXN0TWFya2VyKCkgJiYgIWlzUmVuZGVyRnJhZ21lbnRlZEZsb3coKSAm
JiAhaXNSZW5kZXJNdWx0aUNvbHVtblNldCgpICYmICFpc1JlbmRlclZpZXcoKQogI2lmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkKICAgICAgICAgICAgICYmICFpc1JlbmRlckZ1bGxTY3JlZW4oKQog
ICAgICAgICAgICAgJiYgIWlzUmVuZGVyRnVsbFNjcmVlblBsYWNlaG9sZGVyKCkKQEAgLTEwMjMs
NyArMTAyMyw3IEBAIGlubGluZSBib29sIFJlbmRlck9iamVjdDo6aXNCZWZvcmVDb250ZW4KICAg
ICAvLyBUZXh0IG5vZGVzIGRvbid0IGhhdmUgdGhlaXIgb3duIHN0eWxlcywgc28gaWdub3JlIHRo
ZSBzdHlsZSBvbiBhIHRleHQgbm9kZS4KICAgICBpZiAoaXNUZXh0KCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBpZiAoc3R5bGUoKS5zdHlsZVR5cGUoKSAhPSBCRUZPUkUpCisgICAgaWYg
KHN0eWxlKCkuc3R5bGVUeXBlKCkgIT0gUHNldWRvSWQ6OkJlZm9yZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTAzMyw3ICsxMDMzLDcgQEAgaW5saW5l
IGJvb2wgUmVuZGVyT2JqZWN0Ojppc0FmdGVyQ29udGVudAogICAgIC8vIFRleHQgbm9kZXMgZG9u
J3QgaGF2ZSB0aGVpciBvd24gc3R5bGVzLCBzbyBpZ25vcmUgdGhlIHN0eWxlIG9uIGEgdGV4dCBu
b2RlLgogICAgIGlmIChpc1RleHQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChz
dHlsZSgpLnN0eWxlVHlwZSgpICE9IEFGVEVSKQorICAgIGlmIChzdHlsZSgpLnN0eWxlVHlwZSgp
ICE9IFBzZXVkb0lkOjpBZnRlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0
cnVlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQu
Y3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UmVwbGFjZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDIsNyArMjQyLDcgQEAgYm9vbCBSZW5k
ZXJSZXBsYWNlZDo6c2hvdWxkUGFpbnQoUGFpbnRJbgogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIAogICAgIC8vIGlmIHdlJ3JlIGludmlzaWJsZSBvciBoYXZlbid0IHJlY2VpdmVkIGEg
bGF5b3V0IHlldCwgdGhlbiBqdXN0IGJhaWwuCi0gICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgp
ICE9IFZJU0lCTEUpCisgICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6
OlZpc2libGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICBMYXlvdXRQb2ludCBh
ZGp1c3RlZFBhaW50T2Zmc2V0ID0gcGFpbnRPZmZzZXQgKyBsb2NhdGlvbigpOwpAQCAtNjY3LDcg
KzY2Nyw3IEBAIGJvb2wgUmVuZGVyUmVwbGFjZWQ6OmlzU2VsZWN0ZWQoKSBjb25zdAogCiBMYXlv
dXRSZWN0IFJlbmRlclJlcGxhY2VkOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChjb25z
dCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdAogewotICAg
IGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFICYmICFlbmNsb3NpbmdMYXllcigp
LT5oYXNWaXNpYmxlQ29udGVudCgpKQorICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBW
aXNpYmlsaXR5OjpWaXNpYmxlICYmICFlbmNsb3NpbmdMYXllcigpLT5oYXNWaXNpYmxlQ29udGVu
dCgpKQogICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwogCiAgICAgLy8gVGhlIHNlbGVjdGlv
blJlY3QgY2FuIHByb2plY3Qgb3V0c2lkZSBvZiB0aGUgb3ZlcmZsb3dSZWN0LCBzbyB0YWtlIHRo
ZWlyIHVuaW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFz
ZS5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSdWJ5QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDkgKzYwLDkgQEAgUmVuZGVyUnVi
eVJ1biogUmVuZGVyUnVieUJhc2U6OnJ1YnlSdW4oKQogICAgIHJldHVybiBkb3duY2FzdDxSZW5k
ZXJSdWJ5UnVuPihwYXJlbnQoKSk7CiB9CiAKLUVUZXh0QWxpZ24gUmVuZGVyUnVieUJhc2U6OnRl
eHRBbGlnbm1lbnRGb3JMaW5lKGJvb2wgLyogZW5kc1dpdGhTb2Z0QnJlYWsgKi8pIGNvbnN0CitU
ZXh0QWxpZ25Nb2RlIFJlbmRlclJ1YnlCYXNlOjp0ZXh0QWxpZ25tZW50Rm9yTGluZShib29sIC8q
IGVuZHNXaXRoU29mdEJyZWFrICovKSBjb25zdAogewotICAgIHJldHVybiBKVVNUSUZZOworICAg
IHJldHVybiBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5OwogfQogCiB2b2lkIFJlbmRlclJ1YnlCYXNl
OjphZGp1c3RJbmxpbmVEaXJlY3Rpb25MaW5lQm91bmRzKGludCBleHBhbnNpb25PcHBvcnR1bml0
eUNvdW50LCBmbG9hdCYgbG9naWNhbExlZnQsIGZsb2F0JiBsb2dpY2FsV2lkdGgpIGNvbnN0Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuaAkocmV2aXNpb24g
MjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBib29s
IGlzUnVieUJhc2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBp
c0NoaWxkQWxsb3dlZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNv
bnN0IG92ZXJyaWRlOwotICAgIEVUZXh0QWxpZ24gdGV4dEFsaWdubWVudEZvckxpbmUoYm9vbCBl
bmRzV2l0aFNvZnRCcmVhaykgY29uc3Qgb3ZlcnJpZGU7CisgICAgVGV4dEFsaWduTW9kZSB0ZXh0
QWxpZ25tZW50Rm9yTGluZShib29sIGVuZHNXaXRoU29mdEJyZWFrKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2b2lkIGFkanVzdElubGluZURpcmVjdGlvbkxpbmVCb3VuZHMoaW50IGV4cGFuc2lvbk9w
cG9ydHVuaXR5Q291bnQsIGZsb2F0JiBsb2dpY2FsTGVmdCwgZmxvYXQmIGxvZ2ljYWxXaWR0aCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICBmbG9hdCBtX2luaXRpYWxPZmZzZXQ7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwCShyZXZpc2lvbiAyMzIxNDMp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTk5LDggKzk5LDggQEAgYm9vbCBSZW5kZXJSdWJ5UnVuOjppc0NoaWxkQWxsb3dl
ZChjb25zdAogCiBSZW5kZXJQdHI8UmVuZGVyUnVieUJhc2U+IFJlbmRlclJ1YnlSdW46OmNyZWF0
ZVJ1YnlCYXNlKCkgY29uc3QKIHsKLSAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNy
ZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwgQkxPQ0spOwotICAgIG5ld1N0
eWxlLnNldFRleHRBbGlnbihDRU5URVIpOyAvLyBGSVhNRTogdXNlIFdFQktJVF9DRU5URVI/Cisg
ICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhE
aXNwbGF5KHN0eWxlKCksIERpc3BsYXlUeXBlOjpCbG9jayk7CisgICAgbmV3U3R5bGUuc2V0VGV4
dEFsaWduKFRleHRBbGlnbk1vZGU6OkNlbnRlcik7IC8vIEZJWE1FOiB1c2UgVGV4dEFsaWduTW9k
ZTo6V2ViS2l0Q2VudGVyPwogICAgIGF1dG8gcmVuZGVyZXIgPSBjcmVhdGVSZW5kZXJlcjxSZW5k
ZXJSdWJ5QmFzZT4oZG9jdW1lbnQoKSwgV1RGTW92ZShuZXdTdHlsZSkpOwogICAgIHJlbmRlcmVy
LT5pbml0aWFsaXplU3R5bGUoKTsKICAgICByZXR1cm4gcmVuZGVyZXI7CkBAIC0xMDksNyArMTA5
LDcgQEAgUmVuZGVyUHRyPFJlbmRlclJ1YnlCYXNlPiBSZW5kZXJSdWJ5UnVuOgogUmVuZGVyUHRy
PFJlbmRlclJ1YnlSdW4+IFJlbmRlclJ1YnlSdW46OnN0YXRpY0NyZWF0ZVJ1YnlSdW4oY29uc3Qg
UmVuZGVyT2JqZWN0KiBwYXJlbnRSdWJ5KQogewogICAgIEFTU0VSVChpc1J1YnkocGFyZW50UnVi
eSkpOwotICAgIGF1dG8gcmVuZGVyZXIgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJSdWJ5UnVuPihw
YXJlbnRSdWJ5LT5kb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVX
aXRoRGlzcGxheShwYXJlbnRSdWJ5LT5zdHlsZSgpLCBJTkxJTkVfQkxPQ0spKTsKKyAgICBhdXRv
IHJlbmRlcmVyID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyUnVieVJ1bj4ocGFyZW50UnVieS0+ZG9j
dW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFy
ZW50UnVieS0+c3R5bGUoKSwgRGlzcGxheVR5cGU6OklubGluZUJsb2NrKSk7CiAgICAgcmVuZGVy
ZXItPmluaXRpYWxpemVTdHlsZSgpOwogICAgIHJldHVybiByZW5kZXJlcjsKIH0KQEAgLTE0Miw3
ICsxNDIsNyBAQCB2b2lkIFJlbmRlclJ1YnlSdW46OmxheW91dEJsb2NrKGJvb2wgcmVsCiAgICAg
ICAgIC8vIFNpbmNlIHRoZSBleHRyYSByZWxheW91dCBpbiBSZW5kZXJCbG9ja0Zsb3c6OnVwZGF0
ZVJ1YnlGb3JKdXN0aWZpZWRUZXh0KCkgY2F1c2VzIHRoZSBzaXplIG9mIHRoZSBSZW5kZXJSdWJ5
VGV4dC9SZW5kZXJSdWJ5QmFzZQogICAgICAgICAvLyBkZXBlbmRlbnQgb24gdGhlIGxpbmUncyBj
dXJyZW50IGV4cGFuc2lvbiwgd2hlbmV2ZXIgd2UgcmVsYXlvdXQgdGhlIFJlbmRlclJ1YnlSdW4s
IHdlIG5lZWQgdG8gcmVsYXlvdXQgdGhlIFJlbmRlclJ1YnlCYXNlL1JlbmRlclJ1YnlUZXh0IGFz
IHdlbGwuCiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdGFrZSB0aGUgZXhwYW5zaW9uIG9w
cG9ydHVuaXRpZXMgaW50byBhY2NvdW50IGlmIHBvc3NpYmxlLgotICAgICAgICByZWxheW91dENo
aWxkcmVuID0gc3R5bGUoKS50ZXh0QWxpZ24oKSA9PSBKVVNUSUZZOworICAgICAgICByZWxheW91
dENoaWxkcmVuID0gc3R5bGUoKS50ZXh0QWxpZ24oKSA9PSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5
OwogICAgIH0KIAogICAgIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0QmxvY2socmVsYXlvdXRDaGls
ZHJlbiwgcGFnZUhlaWdodCk7CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBSZW5kZXJSdWJ5UnVu
OjpsYXlvdXRCbG9jayhib29sIHJlbAogICAgICAgICBsYXN0TGluZVJ1YnlUZXh0Qm90dG9tID0g
cm9vdEJveC0+bG9naWNhbEJvdHRvbUxheW91dE92ZXJmbG93KCk7CiAgICAgfQogICAgIAotICAg
IGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpICYmIHJ0LT5zdHlsZSgpLnJ1YnlQb3NpdGlv
bigpID09IFJ1YnlQb3NpdGlvbkludGVyQ2hhcmFjdGVyKSB7CisgICAgaWYgKGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkgJiYgcnQtPnN0eWxlKCkucnVieVBvc2l0aW9uKCkgPT0gUnVieVBvc2l0
aW9uOjpJbnRlckNoYXJhY3RlcikgewogICAgICAgICAvLyBCb3BvbW9mby4gV2UgbmVlZCB0byBt
b3ZlIHRoZSBSZW5kZXJSdWJ5VGV4dCBvdmVyIHRvIHRoZSByaWdodCBzaWRlIGFuZCBjZW50ZXIg
aXQKICAgICAgICAgLy8gdmVydGljYWxseSByZWxhdGl2ZSB0byB0aGUgYmFzZS4KICAgICAgICAg
Y29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCk7CkBAIC0xODMs
NyArMTgzLDcgQEAgdm9pZCBSZW5kZXJSdWJ5UnVuOjpsYXlvdXRCbG9jayhib29sIHJlbAogICAg
ICAgICAgICAgTGF5b3V0VW5pdCBleHRlbnQgPSBsYXN0TGluZUJvdHRvbSAtIGZpcnN0TGluZVRv
cDsKICAgICAgICAgICAgIHJ0LT5zZXRZKGZpcnN0TGluZVRvcCArIChleHRlbnQgLSBydC0+aGVp
Z2h0KCkpIC8gMik7CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHN0eWxlKCkuaXNGbGlwcGVk
TGluZXNXcml0aW5nTW9kZSgpID09IChzdHlsZSgpLnJ1YnlQb3NpdGlvbigpID09IFJ1YnlQb3Np
dGlvbkFmdGVyKSkgeworICAgIH0gZWxzZSBpZiAoc3R5bGUoKS5pc0ZsaXBwZWRMaW5lc1dyaXRp
bmdNb2RlKCkgPT0gKHN0eWxlKCkucnVieVBvc2l0aW9uKCkgPT0gUnVieVBvc2l0aW9uOjpBZnRl
cikpIHsKICAgICAgICAgTGF5b3V0VW5pdCBmaXJzdExpbmVUb3AgPSAwOwogICAgICAgICBpZiAo
UmVuZGVyUnVieUJhc2UqIHJiID0gcnVieUJhc2UoKSkgewogICAgICAgICAgICAgUm9vdElubGlu
ZUJveCogcm9vdEJveCA9IHJiLT5maXJzdFJvb3RCb3goKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTcsMjAgKzU3LDIwIEBAIGJvb2wgUmVuZGVyUnVieVRleHQ6OmlzQ2hpbGRBbGxvd2VkKGNv
bnMKICAgICByZXR1cm4gY2hpbGQuaXNJbmxpbmUoKTsKIH0KIAotRVRleHRBbGlnbiBSZW5kZXJS
dWJ5VGV4dDo6dGV4dEFsaWdubWVudEZvckxpbmUoYm9vbCBlbmRzV2l0aFNvZnRCcmVhaykgY29u
c3QKK1RleHRBbGlnbk1vZGUgUmVuZGVyUnVieVRleHQ6OnRleHRBbGlnbm1lbnRGb3JMaW5lKGJv
b2wgZW5kc1dpdGhTb2Z0QnJlYWspIGNvbnN0CiB7Ci0gICAgRVRleHRBbGlnbiB0ZXh0QWxpZ24g
PSBzdHlsZSgpLnRleHRBbGlnbigpOworICAgIFRleHRBbGlnbk1vZGUgdGV4dEFsaWduID0gc3R5
bGUoKS50ZXh0QWxpZ24oKTsKICAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBpcyBib2d1cyBzaW5j
ZSB1c2VyIGNhbiBzZXQgdGhlIGluaXRpYWwgdmFsdWUuCiAgICAgaWYgKHRleHRBbGlnbiAhPSBS
ZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRBbGlnbigpKQogICAgICAgICByZXR1cm4gUmVuZGVyQmxv
Y2tGbG93Ojp0ZXh0QWxpZ25tZW50Rm9yTGluZShlbmRzV2l0aFNvZnRCcmVhayk7CiAKICAgICAv
LyBUaGUgZGVmYXVsdCBiZWhhdmlvciBpcyB0byBhbGxvdyBydWJ5IHRleHQgdG8gZXhwYW5kIGlm
IGl0IGlzIHNob3J0ZXIgdGhhbiB0aGUgcnVieSBiYXNlLgotICAgIHJldHVybiBKVVNUSUZZOwor
ICAgIHJldHVybiBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5OwogfQogCiB2b2lkIFJlbmRlclJ1YnlU
ZXh0OjphZGp1c3RJbmxpbmVEaXJlY3Rpb25MaW5lQm91bmRzKGludCBleHBhbnNpb25PcHBvcnR1
bml0eUNvdW50LCBmbG9hdCYgbG9naWNhbExlZnQsIGZsb2F0JiBsb2dpY2FsV2lkdGgpIGNvbnN0
CiB7Ci0gICAgRVRleHRBbGlnbiB0ZXh0QWxpZ24gPSBzdHlsZSgpLnRleHRBbGlnbigpOworICAg
IFRleHRBbGlnbk1vZGUgdGV4dEFsaWduID0gc3R5bGUoKS50ZXh0QWxpZ24oKTsKICAgICAvLyBG
SVhNRTogVGhpcyBjaGVjayBpcyBib2d1cyBzaW5jZSB1c2VyIGNhbiBzZXQgdGhlIGluaXRpYWwg
dmFsdWUuCiAgICAgaWYgKHRleHRBbGlnbiAhPSBSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRBbGln
bigpKQogICAgICAgICByZXR1cm4gUmVuZGVyQmxvY2tGbG93OjphZGp1c3RJbmxpbmVEaXJlY3Rp
b25MaW5lQm91bmRzKGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQsIGxvZ2ljYWxMZWZ0LCBsb2dp
Y2FsV2lkdGgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0
LmgJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
dWJ5VGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAKICAg
ICBib29sIGF2b2lkc0Zsb2F0cygpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgRVRleHRBbGlnbiB0
ZXh0QWxpZ25tZW50Rm9yTGluZShib29sIGVuZHNXaXRoU29mdEJyZWFrKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBUZXh0QWxpZ25Nb2RlIHRleHRBbGlnbm1lbnRGb3JMaW5lKGJvb2wgZW5kc1dpdGhT
b2Z0QnJlYWspIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgYWRqdXN0SW5saW5lRGlyZWN0aW9u
TGluZUJvdW5kcyhpbnQgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCwgZmxvYXQmIGxvZ2ljYWxM
ZWZ0LCBmbG9hdCYgbG9naWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsKIH07CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwCShyZXZpc2lvbiAy
MzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTg4LDIyICsxODgsMjIgQEAgc3RhdGljIFBzZXVkb0lkIHBzZXVk
b0ZvclNjcm9sbGJhclBhcnQoUwogICAgICAgICBjYXNlIEZvcndhcmRCdXR0b25TdGFydFBhcnQ6
CiAgICAgICAgIGNhc2UgQmFja0J1dHRvbkVuZFBhcnQ6CiAgICAgICAgIGNhc2UgRm9yd2FyZEJ1
dHRvbkVuZFBhcnQ6Ci0gICAgICAgICAgICByZXR1cm4gU0NST0xMQkFSX0JVVFRPTjsKKyAgICAg
ICAgICAgIHJldHVybiBQc2V1ZG9JZDo6U2Nyb2xsYmFyQnV0dG9uOwogICAgICAgICBjYXNlIEJh
Y2tUcmFja1BhcnQ6CiAgICAgICAgIGNhc2UgRm9yd2FyZFRyYWNrUGFydDoKLSAgICAgICAgICAg
IHJldHVybiBTQ1JPTExCQVJfVFJBQ0tfUElFQ0U7CisgICAgICAgICAgICByZXR1cm4gUHNldWRv
SWQ6OlNjcm9sbGJhclRyYWNrUGllY2U7CiAgICAgICAgIGNhc2UgVGh1bWJQYXJ0OgotICAgICAg
ICAgICAgcmV0dXJuIFNDUk9MTEJBUl9USFVNQjsKKyAgICAgICAgICAgIHJldHVybiBQc2V1ZG9J
ZDo6U2Nyb2xsYmFyVGh1bWI7CiAgICAgICAgIGNhc2UgVHJhY2tCR1BhcnQ6Ci0gICAgICAgICAg
ICByZXR1cm4gU0NST0xMQkFSX1RSQUNLOworICAgICAgICAgICAgcmV0dXJuIFBzZXVkb0lkOjpT
Y3JvbGxiYXJUcmFjazsKICAgICAgICAgY2FzZSBTY3JvbGxiYXJCR1BhcnQ6Ci0gICAgICAgICAg
ICByZXR1cm4gU0NST0xMQkFSOworICAgICAgICAgICAgcmV0dXJuIFBzZXVkb0lkOjpTY3JvbGxi
YXI7CiAgICAgICAgIGNhc2UgTm9QYXJ0OgogICAgICAgICBjYXNlIEFsbFBhcnRzOgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBTQ1JPTExCQVI7CisgICAgcmV0dXJuIFBzZXVkb0lkOjpTY3JvbGxiYXI7CiB9CiAKIHZvaWQg
UmVuZGVyU2Nyb2xsYmFyOjp1cGRhdGVTY3JvbGxiYXJQYXJ0KFNjcm9sbGJhclBhcnQgcGFydFR5
cGUpCkBAIC0yMTIsOSArMjEyLDkgQEAgdm9pZCBSZW5kZXJTY3JvbGxiYXI6OnVwZGF0ZVNjcm9s
bGJhclBhcgogICAgICAgICByZXR1cm47CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+IHBhcnRTdHlsZSA9IGdldFNjcm9sbGJhclBzZXVkb1N0eWxlKHBhcnRUeXBlLCBwc2V1ZG9G
b3JTY3JvbGxiYXJQYXJ0KHBhcnRUeXBlKSk7Ci0gICAgYm9vbCBuZWVkUmVuZGVyZXIgPSBwYXJ0
U3R5bGUgJiYgcGFydFN0eWxlLT5kaXNwbGF5KCkgIT0gTk9ORTsKKyAgICBib29sIG5lZWRSZW5k
ZXJlciA9IHBhcnRTdHlsZSAmJiBwYXJ0U3R5bGUtPmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6
Tm9uZTsKIAotICAgIGlmIChuZWVkUmVuZGVyZXIgJiYgcGFydFN0eWxlLT5kaXNwbGF5KCkgIT0g
QkxPQ0spIHsKKyAgICBpZiAobmVlZFJlbmRlcmVyICYmIHBhcnRTdHlsZS0+ZGlzcGxheSgpICE9
IERpc3BsYXlUeXBlOjpCbG9jaykgewogICAgICAgICAvLyBTZWUgaWYgd2UgYXJlIGEgYnV0dG9u
IHRoYXQgc2hvdWxkIG5vdCBiZSB2aXNpYmxlIGFjY29yZGluZyB0byBPUyBzZXR0aW5ncy4KICAg
ICAgICAgU2Nyb2xsYmFyQnV0dG9uc1BsYWNlbWVudCBidXR0b25zUGxhY2VtZW50ID0gdGhlbWUo
KS5idXR0b25zUGxhY2VtZW50KCk7CiAgICAgICAgIHN3aXRjaCAocGFydFR5cGUpIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcAkocmV2
aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZp
ZWxkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgUmVuZGVyU2Vh
cmNoRmllbGQ6OnVwZGF0ZUNhbmNlbEJ1dHQKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3Qg
UmVuZGVyU3R5bGUmIGN1clN0eWxlID0gY2FuY2VsQnV0dG9uUmVuZGVyZXItPnN0eWxlKCk7Ci0g
ICAgRVZpc2liaWxpdHkgYnV0dG9uVmlzaWJpbGl0eSA9IHZpc2liaWxpdHlGb3JDYW5jZWxCdXR0
b24oKTsKKyAgICBWaXNpYmlsaXR5IGJ1dHRvblZpc2liaWxpdHkgPSB2aXNpYmlsaXR5Rm9yQ2Fu
Y2VsQnV0dG9uKCk7CiAgICAgaWYgKGN1clN0eWxlLnZpc2liaWxpdHkoKSA9PSBidXR0b25WaXNp
YmlsaXR5KQogICAgICAgICByZXR1cm47CiAKQEAgLTE5NCw5ICsxOTQsOSBAQCB2b2lkIFJlbmRl
clNlYXJjaEZpZWxkOjp1cGRhdGVDYW5jZWxCdXR0CiAgICAgY2FuY2VsQnV0dG9uUmVuZGVyZXIt
PnNldFN0eWxlKFdURk1vdmUoY2FuY2VsQnV0dG9uU3R5bGUpKTsKIH0KIAotRVZpc2liaWxpdHkg
UmVuZGVyU2VhcmNoRmllbGQ6OnZpc2liaWxpdHlGb3JDYW5jZWxCdXR0b24oKSBjb25zdAorVmlz
aWJpbGl0eSBSZW5kZXJTZWFyY2hGaWVsZDo6dmlzaWJpbGl0eUZvckNhbmNlbEJ1dHRvbigpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIChzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBISURERU4gfHwgaW5w
dXRFbGVtZW50KCkudmFsdWUoKS5pc0VtcHR5KCkpID8gSElEREVOIDogVklTSUJMRTsKKyAgICBy
ZXR1cm4gKHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OkhpZGRlbiB8fCBpbnB1
dEVsZW1lbnQoKS52YWx1ZSgpLmlzRW1wdHkoKSkgPyBWaXNpYmlsaXR5OjpIaWRkZW4gOiBWaXNp
YmlsaXR5OjpWaXNpYmxlOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFJlbmRlclNlYXJjaEZp
ZWxkOjphdXRvc2F2ZU5hbWUoKSBjb25zdApAQCAtMjcwLDggKzI3MCw4IEBAIFBvcHVwTWVudVN0
eWxlIFJlbmRlclNlYXJjaEZpZWxkOjppdGVtU3QKIAogUG9wdXBNZW51U3R5bGUgUmVuZGVyU2Vh
cmNoRmllbGQ6Om1lbnVTdHlsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFBvcHVwTWVudVN0eWxl
KHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5
Q29sb3IpLCBzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvciksIHN0eWxlKCkuZm9udENhc2NhZGUoKSwgc3R5bGUoKS52
aXNpYmlsaXR5KCkgPT0gVklTSUJMRSwKLSAgICAgICAgc3R5bGUoKS5kaXNwbGF5KCkgPT0gTk9O
RSwgdHJ1ZSwgc3R5bGUoKS50ZXh0SW5kZW50KCksIHN0eWxlKCkuZGlyZWN0aW9uKCksIGlzT3Zl
cnJpZGUoc3R5bGUoKS51bmljb2RlQmlkaSgpKSwgUG9wdXBNZW51U3R5bGU6OkN1c3RvbUJhY2tn
cm91bmRDb2xvcik7CisgICAgcmV0dXJuIFBvcHVwTWVudVN0eWxlKHN0eWxlKCkudmlzaXRlZERl
cGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZSgpLnZp
c2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRD
b2xvciksIHN0eWxlKCkuZm9udENhc2NhZGUoKSwgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlz
aWJpbGl0eTo6VmlzaWJsZSwKKyAgICAgICAgc3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5
cGU6Ok5vbmUsIHRydWUsIHN0eWxlKCkudGV4dEluZGVudCgpLCBzdHlsZSgpLmRpcmVjdGlvbigp
LCBpc092ZXJyaWRlKHN0eWxlKCkudW5pY29kZUJpZGkoKSksIFBvcHVwTWVudVN0eWxlOjpDdXN0
b21CYWNrZ3JvdW5kQ29sb3IpOwogfQogCiBpbnQgUmVuZGVyU2VhcmNoRmllbGQ6OmNsaWVudElu
c2V0TGVmdCgpIGNvbnN0CkBAIC0zNTksNyArMzU5LDcgQEAgSG9zdFdpbmRvdyogUmVuZGVyU2Vh
cmNoRmllbGQ6Omhvc3RXaW5kbwogCiBSZWY8U2Nyb2xsYmFyPiBSZW5kZXJTZWFyY2hGaWVsZDo6
Y3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgU2Nyb2xsYmFy
T3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXpl
KQogewotICAgIGJvb2wgaGFzQ3VzdG9tU2Nyb2xsYmFyU3R5bGUgPSBzdHlsZSgpLmhhc1BzZXVk
b1N0eWxlKFNDUk9MTEJBUik7CisgICAgYm9vbCBoYXNDdXN0b21TY3JvbGxiYXJTdHlsZSA9IHN0
eWxlKCkuaGFzUHNldWRvU3R5bGUoUHNldWRvSWQ6OlNjcm9sbGJhcik7CiAgICAgaWYgKGhhc0N1
c3RvbVNjcm9sbGJhclN0eWxlKQogICAgICAgICByZXR1cm4gUmVuZGVyU2Nyb2xsYmFyOjpjcmVh
dGVDdXN0b21TY3JvbGxiYXIoc2Nyb2xsYWJsZUFyZWEsIG9yaWVudGF0aW9uLCAmaW5wdXRFbGVt
ZW50KCkpOwogICAgIHJldHVybiBTY3JvbGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcihzY3Jv
bGxhYmxlQXJlYSwgb3JpZW50YXRpb24sIGNvbnRyb2xTaXplKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oCShyZXZpc2lvbiAyMzIxNDMpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuaAkod29ya2luZyBj
b3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbEJlRGVzdHJveWVk
KCkgb3ZlcnJpZGU7CiAgICAgTGF5b3V0VW5pdCBjb21wdXRlQ29udHJvbExvZ2ljYWxIZWlnaHQo
TGF5b3V0VW5pdCBsaW5lSGVpZ2h0LCBMYXlvdXRVbml0IG5vbkNvbnRlbnRIZWlnaHQpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKLSAgICBF
VmlzaWJpbGl0eSB2aXNpYmlsaXR5Rm9yQ2FuY2VsQnV0dG9uKCkgY29uc3Q7CisgICAgVmlzaWJp
bGl0eSB2aXNpYmlsaXR5Rm9yQ2FuY2VsQnV0dG9uKCkgY29uc3Q7CiAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBhdXRvc2F2ZU5hbWUoKSBjb25zdDsKIAogICAgIC8vIFBvcHVwTWVudUNsaWVudCBt
ZXRob2RzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAJKHJl
dmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIFJlbmRlclRhYmxlOjp3
aWxsSW5zZXJ0VGFibGVDb2x1bW4oCiB2b2lkIFJlbmRlclRhYmxlOjp3aWxsSW5zZXJ0VGFibGVT
ZWN0aW9uKFJlbmRlclRhYmxlU2VjdGlvbiYgY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hp
bGQpCiB7CiAgICAgc3dpdGNoIChjaGlsZC5zdHlsZSgpLmRpc3BsYXkoKSkgewotICAgIGNhc2Ug
VEFCTEVfSEVBREVSX0dST1VQOgorICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlSGVhZGVyR3Jv
dXA6CiAgICAgICAgIHJlc2V0U2VjdGlvblBvaW50ZXJJZk5vdEJlZm9yZShtX2hlYWQsIGJlZm9y
ZUNoaWxkKTsKICAgICAgICAgaWYgKCFtX2hlYWQpCiAgICAgICAgICAgICBtX2hlYWQgPSBtYWtl
V2Vha1B0cihjaGlsZCk7CkBAIC0xNTEsMTQgKzE1MSwxNCBAQCB2b2lkIFJlbmRlclRhYmxlOjp3
aWxsSW5zZXJ0VGFibGVTZWN0aW9uCiAgICAgICAgICAgICAgICAgbV9maXJzdEJvZHkgPSBtYWtl
V2Vha1B0cihjaGlsZCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUQUJM
RV9GT09URVJfR1JPVVA6CisgICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFibGVGb290ZXJHcm91cDoK
ICAgICAgICAgcmVzZXRTZWN0aW9uUG9pbnRlcklmTm90QmVmb3JlKG1fZm9vdCwgYmVmb3JlQ2hp
bGQpOwogICAgICAgICBpZiAoIW1fZm9vdCkgewogICAgICAgICAgICAgbV9mb290ID0gbWFrZVdl
YWtQdHIoY2hpbGQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgRkFM
TFRIUk9VR0g7Ci0gICAgY2FzZSBUQUJMRV9ST1dfR1JPVVA6CisgICAgY2FzZSBEaXNwbGF5VHlw
ZTo6VGFibGVSb3dHcm91cDoKICAgICAgICAgcmVzZXRTZWN0aW9uUG9pbnRlcklmTm90QmVmb3Jl
KG1fZmlyc3RCb2R5LCBiZWZvcmVDaGlsZCk7CiAgICAgICAgIGlmICghbV9maXJzdEJvZHkpCiAg
ICAgICAgICAgICBtX2ZpcnN0Qm9keSA9IG1ha2VXZWFrUHRyKGNoaWxkKTsKQEAgLTM1Niw4ICsz
NTYsOCBAQCB2b2lkIFJlbmRlclRhYmxlOjpsYXlvdXRDYXB0aW9ucyhCb3R0b21DCiAgICAgICAg
IHJldHVybjsKICAgICAvLyBGSVhNRTogQ29sbGFwc2UgY2FwdGlvbiBtYXJnaW4uCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fY2FwdGlvbnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
aWYgKChib3R0b21DYXB0aW9uTGF5b3V0UGhhc2UgPT0gQm90dG9tQ2FwdGlvbkxheW91dFBoYXNl
OjpZZXMgJiYgbV9jYXB0aW9uc1tpXS0+c3R5bGUoKS5jYXB0aW9uU2lkZSgpICE9IENBUEJPVFRP
TSkKLSAgICAgICAgICAgIHx8IChib3R0b21DYXB0aW9uTGF5b3V0UGhhc2UgPT0gQm90dG9tQ2Fw
dGlvbkxheW91dFBoYXNlOjpObyAmJiBtX2NhcHRpb25zW2ldLT5zdHlsZSgpLmNhcHRpb25TaWRl
KCkgPT0gQ0FQQk9UVE9NKSkKKyAgICAgICAgaWYgKChib3R0b21DYXB0aW9uTGF5b3V0UGhhc2Ug
PT0gQm90dG9tQ2FwdGlvbkxheW91dFBoYXNlOjpZZXMgJiYgbV9jYXB0aW9uc1tpXS0+c3R5bGUo
KS5jYXB0aW9uU2lkZSgpICE9IENhcHRpb25TaWRlOjpCb3R0b20pCisgICAgICAgICAgICB8fCAo
Ym90dG9tQ2FwdGlvbkxheW91dFBoYXNlID09IEJvdHRvbUNhcHRpb25MYXlvdXRQaGFzZTo6Tm8g
JiYgbV9jYXB0aW9uc1tpXS0+c3R5bGUoKS5jYXB0aW9uU2lkZSgpID09IENhcHRpb25TaWRlOjpC
b3R0b20pKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGxheW91dENhcHRpb24oKm1f
Y2FwdGlvbnNbaV0pOwogICAgIH0KQEAgLTQyNSw3ICs0MjUsNyBAQCB2b2lkIFJlbmRlclRhYmxl
OjpsYXlvdXQoKQogICAgICAgICBMYXlvdXRVbml0IHRvdGFsU2VjdGlvbkxvZ2ljYWxIZWlnaHQg
PSAwOwogICAgICAgICBMYXlvdXRVbml0IG9sZFRhYmxlTG9naWNhbFRvcCA9IDA7CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2NhcHRpb25zLnNpemUoKTsgaSsrKSB7Ci0gICAg
ICAgICAgICBpZiAobV9jYXB0aW9uc1tpXS0+c3R5bGUoKS5jYXB0aW9uU2lkZSgpID09IENBUEJP
VFRPTSkKKyAgICAgICAgICAgIGlmIChtX2NhcHRpb25zW2ldLT5zdHlsZSgpLmNhcHRpb25TaWRl
KCkgPT0gQ2FwdGlvblNpZGU6OkJvdHRvbSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIG9sZFRhYmxlTG9naWNhbFRvcCArPSBtX2NhcHRpb25zW2ldLT5sb2dpY2FsSGVp
Z2h0KCkgKyBtX2NhcHRpb25zW2ldLT5tYXJnaW5CZWZvcmUoKSArIG1fY2FwdGlvbnNbaV0tPm1h
cmdpbkFmdGVyKCk7CiAgICAgICAgIH0KQEAgLTY2OCw3ICs2NjgsNyBAQCB2b2lkIFJlbmRlclRh
YmxlOjpwYWludChQYWludEluZm8mIHBhaW50CiB2b2lkIFJlbmRlclRhYmxlOjpwYWludE9iamVj
dChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQog
ewogICAgIFBhaW50UGhhc2UgcGFpbnRQaGFzZSA9IHBhaW50SW5mby5waGFzZTsKLSAgICBpZiAo
KHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZUJsb2NrQmFja2dyb3VuZCB8fCBwYWludFBoYXNlID09
IFBhaW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZCkgJiYgaGFzVmlzaWJsZUJveERlY29yYXRp
b25zKCkgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkKKyAgICBpZiAoKHBhaW50
UGhhc2UgPT0gUGFpbnRQaGFzZUJsb2NrQmFja2dyb3VuZCB8fCBwYWludFBoYXNlID09IFBhaW50
UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZCkgJiYgaGFzVmlzaWJsZUJveERlY29yYXRpb25zKCkg
JiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAg
cGFpbnRCb3hEZWNvcmF0aW9ucyhwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKIAogICAgIGlmIChw
YWludFBoYXNlID09IFBhaW50UGhhc2VNYXNrKSB7CkBAIC02OTUsNyArNjk1LDcgQEAgdm9pZCBS
ZW5kZXJUYWJsZTo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJgogICAgICAgICB9CiAgICAgfQogICAg
IAotICAgIGlmIChjb2xsYXBzZUJvcmRlcnMoKSAmJiBwYWludFBoYXNlID09IFBhaW50UGhhc2VD
aGlsZEJsb2NrQmFja2dyb3VuZCAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKSB7
CisgICAgaWYgKGNvbGxhcHNlQm9yZGVycygpICYmIHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZUNo
aWxkQmxvY2tCYWNrZ3JvdW5kICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6
OlZpc2libGUpIHsKICAgICAgICAgcmVjYWxjQ29sbGFwc2VkQm9yZGVycygpOwogICAgICAgICAv
LyBVc2luZyBvdXIgY2FjaGVkIHNvcnRlZCBzdHlsZXMsIHdlIHRoZW4gZG8gaW5kaXZpZHVhbCBw
YXNzZXMsCiAgICAgICAgIC8vIHBhaW50aW5nIGVhY2ggc3R5bGUgb2YgYm9yZGVyIGZyb20gbG93
ZXN0IHByZWNlZGVuY2UgdG8gaGlnaGVzdCBwcmVjZWRlbmNlLgpAQCAtNzEyLDcgKzcxMiw3IEBA
IHZvaWQgUmVuZGVyVGFibGU6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYKICAgICB9CiAKICAgICAv
LyBQYWludCBvdXRsaW5lLgotICAgIGlmICgocGFpbnRQaGFzZSA9PSBQYWludFBoYXNlT3V0bGlu
ZSB8fCBwYWludFBoYXNlID09IFBhaW50UGhhc2VTZWxmT3V0bGluZSkgJiYgaGFzT3V0bGluZSgp
ICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUpCisgICAgaWYgKChwYWludFBoYXNl
ID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRs
aW5lKSAmJiBoYXNPdXRsaW5lKCkgJiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0
eTo6VmlzaWJsZSkKICAgICAgICAgcGFpbnRPdXRsaW5lKHBhaW50SW5mbywgTGF5b3V0UmVjdChw
YWludE9mZnNldCwgc2l6ZSgpKSk7CiB9CiAKQEAgLTcyMCw3ICs3MjAsNyBAQCB2b2lkIFJlbmRl
clRhYmxlOjphZGp1c3RCb3JkZXJCb3hSZWN0Rm9yCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fY2FwdGlvbnMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgTGF5b3V0VW5pdCBjYXB0
aW9uTG9naWNhbEhlaWdodCA9IG1fY2FwdGlvbnNbaV0tPmxvZ2ljYWxIZWlnaHQoKSArIG1fY2Fw
dGlvbnNbaV0tPm1hcmdpbkJlZm9yZSgpICsgbV9jYXB0aW9uc1tpXS0+bWFyZ2luQWZ0ZXIoKTsK
LSAgICAgICAgYm9vbCBjYXB0aW9uSXNCZWZvcmUgPSAobV9jYXB0aW9uc1tpXS0+c3R5bGUoKS5j
YXB0aW9uU2lkZSgpICE9IENBUEJPVFRPTSkgXiBzdHlsZSgpLmlzRmxpcHBlZEJsb2Nrc1dyaXRp
bmdNb2RlKCk7CisgICAgICAgIGJvb2wgY2FwdGlvbklzQmVmb3JlID0gKG1fY2FwdGlvbnNbaV0t
PnN0eWxlKCkuY2FwdGlvblNpZGUoKSAhPSBDYXB0aW9uU2lkZTo6Qm90dG9tKSBeIHN0eWxlKCku
aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKTsKICAgICAgICAgaWYgKHN0eWxlKCkuaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSkgewogICAgICAgICAgICAgcmVjdC5zZXRIZWlnaHQocmVjdC5o
ZWlnaHQoKSAtIGNhcHRpb25Mb2dpY2FsSGVpZ2h0KTsKICAgICAgICAgICAgIGlmIChjYXB0aW9u
SXNCZWZvcmUpCkBAIC03NTUsNyArNzU1LDcgQEAgdm9pZCBSZW5kZXJUYWJsZTo6cGFpbnRCb3hE
ZWNvcmF0aW9ucyhQYQogCiB2b2lkIFJlbmRlclRhYmxlOjpwYWludE1hc2soUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKLSAgICBpZiAoc3R5
bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQ
aGFzZU1hc2spCisgICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZp
c2libGUgfHwgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VNYXNrKQogICAgICAgICByZXR1
cm47CiAKICAgICBMYXlvdXRSZWN0IHJlY3QocGFpbnRPZmZzZXQsIHNpemUoKSk7CkBAIC0xMDEz
LDExICsxMDEzLDExIEBAIHZvaWQgUmVuZGVyVGFibGU6OnJlY2FsY1NlY3Rpb25zKCkgY29uc3QK
ICAgICBmb3IgKFJlbmRlck9iamVjdCogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGls
ZCA9IG5leHRTaWJsaW5nKSB7CiAgICAgICAgIG5leHRTaWJsaW5nID0gY2hpbGQtPm5leHRTaWJs
aW5nKCk7CiAgICAgICAgIHN3aXRjaCAoY2hpbGQtPnN0eWxlKCkuZGlzcGxheSgpKSB7Ci0gICAg
ICAgIGNhc2UgVEFCTEVfQ09MVU1OOgotICAgICAgICBjYXNlIFRBQkxFX0NPTFVNTl9HUk9VUDoK
KyAgICAgICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1bW46CisgICAgICAgIGNhc2UgRGlz
cGxheVR5cGU6OlRhYmxlQ29sdW1uR3JvdXA6CiAgICAgICAgICAgICBtX2hhc0NvbEVsZW1lbnRz
ID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFRBQkxFX0hFQURFUl9H
Uk9VUDoKKyAgICAgICAgY2FzZSBEaXNwbGF5VHlwZTo6VGFibGVIZWFkZXJHcm91cDoKICAgICAg
ICAgICAgIGlmIChpczxSZW5kZXJUYWJsZVNlY3Rpb24+KCpjaGlsZCkpIHsKICAgICAgICAgICAg
ICAgICBSZW5kZXJUYWJsZVNlY3Rpb24mIHNlY3Rpb24gPSBkb3duY2FzdDxSZW5kZXJUYWJsZVNl
Y3Rpb24+KCpjaGlsZCk7CiAgICAgICAgICAgICAgICAgaWYgKCFtX2hlYWQpCkBAIC0xMDI3LDcg
KzEwMjcsNyBAQCB2b2lkIFJlbmRlclRhYmxlOjpyZWNhbGNTZWN0aW9ucygpIGNvbnN0CiAgICAg
ICAgICAgICAgICAgc2VjdGlvbi5yZWNhbGNDZWxsc0lmTmVlZGVkKCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUQUJMRV9GT09URVJfR1JPVVA6Cisg
ICAgICAgIGNhc2UgRGlzcGxheVR5cGU6OlRhYmxlRm9vdGVyR3JvdXA6CiAgICAgICAgICAgICBp
ZiAoaXM8UmVuZGVyVGFibGVTZWN0aW9uPigqY2hpbGQpKSB7CiAgICAgICAgICAgICAgICAgUmVu
ZGVyVGFibGVTZWN0aW9uJiBzZWN0aW9uID0gZG93bmNhc3Q8UmVuZGVyVGFibGVTZWN0aW9uPigq
Y2hpbGQpOwogICAgICAgICAgICAgICAgIGlmICghbV9mb290KQpAQCAtMTAzNyw3ICsxMDM3LDcg
QEAgdm9pZCBSZW5kZXJUYWJsZTo6cmVjYWxjU2VjdGlvbnMoKSBjb25zdAogICAgICAgICAgICAg
ICAgIHNlY3Rpb24ucmVjYWxjQ2VsbHNJZk5lZWRlZCgpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVEFCTEVfUk9XX0dST1VQOgorICAgICAgICBjYXNl
IERpc3BsYXlUeXBlOjpUYWJsZVJvd0dyb3VwOgogICAgICAgICAgICAgaWYgKGlzPFJlbmRlclRh
YmxlU2VjdGlvbj4oKmNoaWxkKSkgewogICAgICAgICAgICAgICAgIFJlbmRlclRhYmxlU2VjdGlv
biYgc2VjdGlvbiA9IGRvd25jYXN0PFJlbmRlclRhYmxlU2VjdGlvbj4oKmNoaWxkKTsKICAgICAg
ICAgICAgICAgICBpZiAoIW1fZmlyc3RCb2R5KQpAQCAtMTUyOCw3ICsxNTI4LDcgQEAgYm9vbCBS
ZW5kZXJUYWJsZTo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VAogCiBSZW5kZXJQdHI8UmVuZGVyVGFi
bGU+IFJlbmRlclRhYmxlOjpjcmVhdGVUYWJsZVdpdGhTdHlsZShEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICBhdXRvIHRhYmxlID0gY3JlYXRlUmVu
ZGVyZXI8UmVuZGVyVGFibGU+KGRvY3VtZW50LCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3Vz
U3R5bGVXaXRoRGlzcGxheShzdHlsZSwgc3R5bGUuZGlzcGxheSgpID09IElOTElORSA/IElOTElO
RV9UQUJMRSA6IFRBQkxFKSk7CisgICAgYXV0byB0YWJsZSA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRl
clRhYmxlPihkb2N1bWVudCwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERp
c3BsYXkoc3R5bGUsIHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lID8gRGlz
cGxheVR5cGU6OklubGluZVRhYmxlIDogRGlzcGxheVR5cGU6OlRhYmxlKSk7CiAgICAgdGFibGUt
PmluaXRpYWxpemVTdHlsZSgpOwogICAgIHJldHVybiB0YWJsZTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCShyZXZpc2lvbiAyMzIxNDMp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIwLDcgKzQyMCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtYXJrQ2VsbERp
cnR5V2hlbkNvbGwKIAogdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnN0eWxlRGlkQ2hhbmdlKFN0eWxl
RGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpCiB7Ci0gICAgQVNT
RVJUKHN0eWxlKCkuZGlzcGxheSgpID09IFRBQkxFX0NFTEwpOworICAgIEFTU0VSVChzdHlsZSgp
LmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDZWxsKTsKICAgICBBU1NFUlQoIXJvdygp
IHx8IHJvdygpLT5yb3dJbmRleFdhc1NldCgpKTsKIAogICAgIFJlbmRlckJsb2NrRmxvdzo6c3R5
bGVEaWRDaGFuZ2UoZGlmZiwgb2xkU3R5bGUpOwpAQCAtMTE5OCw3ICsxMTk4LDcgQEAgdm9pZCBS
ZW5kZXJUYWJsZUNlbGw6OnBhaW50Q29sbGFwc2VkQm9yZAogewogICAgIEFTU0VSVChwYWludElu
Zm8ucGhhc2UgPT0gUGFpbnRQaGFzZUNvbGxhcHNlZFRhYmxlQm9yZGVycyk7CiAKLSAgICBpZiAo
IXBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QoKnRoaXMpIHx8IHN0eWxlKCkudmlzaWJp
bGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKCFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5S
b290KCp0aGlzKSB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxl
KQogICAgICAgICByZXR1cm47CiAKICAgICBMYXlvdXRSZWN0IGxvY2FsUmVwYWludFJlY3QgPSBw
YWludEluZm8ucmVjdDsKQEAgLTEyNzEsMTEgKzEyNzEsMTEgQEAgdm9pZCBSZW5kZXJUYWJsZUNl
bGw6OnBhaW50QmFja2dyb3VuZHNCZQogICAgIGlmICghYmFja2dyb3VuZE9iamVjdCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisg
ICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIFJlbmRlclRhYmxlKiB0YWJsZUVsdCA9IHRhYmxlKCk7Ci0gICAg
aWYgKCF0YWJsZUVsdC0+Y29sbGFwc2VCb3JkZXJzKCkgJiYgc3R5bGUoKS5lbXB0eUNlbGxzKCkg
PT0gSElERSAmJiAhZmlyc3RDaGlsZCgpKQorICAgIGlmICghdGFibGVFbHQtPmNvbGxhcHNlQm9y
ZGVycygpICYmIHN0eWxlKCkuZW1wdHlDZWxscygpID09IEVtcHR5Q2VsbDo6SGlkZSAmJiAhZmly
c3RDaGlsZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBMYXlvdXRQb2ludCBhZGp1c3RlZFBh
aW50T2Zmc2V0ID0gcGFpbnRPZmZzZXQ7CkBAIC0xMzA1LDcgKzEzMDUsNyBAQCB2b2lkIFJlbmRl
clRhYmxlQ2VsbDo6cGFpbnRCb3hEZWNvcmF0aW9uCiAgICAgICAgIHJldHVybjsKIAogICAgIFJl
bmRlclRhYmxlKiB0YWJsZSA9IHRoaXMtPnRhYmxlKCk7Ci0gICAgaWYgKCF0YWJsZS0+Y29sbGFw
c2VCb3JkZXJzKCkgJiYgc3R5bGUoKS5lbXB0eUNlbGxzKCkgPT0gSElERSAmJiAhZmlyc3RDaGls
ZCgpKQorICAgIGlmICghdGFibGUtPmNvbGxhcHNlQm9yZGVycygpICYmIHN0eWxlKCkuZW1wdHlD
ZWxscygpID09IEVtcHR5Q2VsbDo6SGlkZSAmJiAhZmlyc3RDaGlsZCgpKQogICAgICAgICByZXR1
cm47CiAKICAgICBMYXlvdXRSZWN0IHBhaW50UmVjdCA9IExheW91dFJlY3QocGFpbnRPZmZzZXQs
IGZyYW1lUmVjdCgpLnNpemUoKSk7CkBAIC0xMzI2LDExICsxMzI2LDExIEBAIHZvaWQgUmVuZGVy
VGFibGVDZWxsOjpwYWludEJveERlY29yYXRpb24KIAogdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnBh
aW50TWFzayhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
c2V0KQogewotICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8IHBhaW50
SW5mby5waGFzZSAhPSBQYWludFBoYXNlTWFzaykKKyAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5
KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFz
ZU1hc2spCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlbmRlclRhYmxlKiB0YWJsZUVsdCA9IHRh
YmxlKCk7Ci0gICAgaWYgKCF0YWJsZUVsdC0+Y29sbGFwc2VCb3JkZXJzKCkgJiYgc3R5bGUoKS5l
bXB0eUNlbGxzKCkgPT0gSElERSAmJiAhZmlyc3RDaGlsZCgpKQorICAgIGlmICghdGFibGVFbHQt
PmNvbGxhcHNlQm9yZGVycygpICYmIHN0eWxlKCkuZW1wdHlDZWxscygpID09IEVtcHR5Q2VsbDo6
SGlkZSAmJiAhZmlyc3RDaGlsZCgpKQogICAgICAgICByZXR1cm47CiAgICAKICAgICBMYXlvdXRS
ZWN0IHBhaW50UmVjdCA9IExheW91dFJlY3QocGFpbnRPZmZzZXQsIGZyYW1lUmVjdCgpLnNpemUo
KSk7CkBAIC0xMzcwLDcgKzEzNzAsNyBAQCB2b2lkIFJlbmRlclRhYmxlQ2VsbDo6c2Nyb2xsYmFy
c0NoYW5nZWQoCiAKIFJlbmRlclB0cjxSZW5kZXJUYWJsZUNlbGw+IFJlbmRlclRhYmxlQ2VsbDo6
Y3JlYXRlVGFibGVDZWxsV2l0aFN0eWxlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlKQogewotICAgIGF1dG8gY2VsbCA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclRh
YmxlQ2VsbD4oZG9jdW1lbnQsIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhE
aXNwbGF5KHN0eWxlLCBUQUJMRV9DRUxMKSk7CisgICAgYXV0byBjZWxsID0gY3JlYXRlUmVuZGVy
ZXI8UmVuZGVyVGFibGVDZWxsPihkb2N1bWVudCwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91
c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUsIERpc3BsYXlUeXBlOjpUYWJsZUNlbGwpKTsKICAgICBj
ZWxsLT5pbml0aWFsaXplU3R5bGUoKTsKICAgICByZXR1cm4gY2VsbDsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcAkocmV2aXNpb24gMjMyMTQz
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCB2b2lkIFJlbmRlclRhYmxlQ29sOjp1cGRhdGVGcm9t
RWxlbWVudCgpCiAgICAgICAgIEhUTUxUYWJsZUNvbEVsZW1lbnQmIHRjID0gc3RhdGljX2Nhc3Q8
SFRNTFRhYmxlQ29sRWxlbWVudCY+KGVsZW1lbnQoKSk7CiAgICAgICAgIG1fc3BhbiA9IHRjLnNw
YW4oKTsKICAgICB9IGVsc2UKLSAgICAgICAgbV9zcGFuID0gIShoYXNJbml0aWFsaXplZFN0eWxl
KCkgJiYgc3R5bGUoKS5kaXNwbGF5KCkgPT0gVEFCTEVfQ09MVU1OX0dST1VQKTsKKyAgICAgICAg
bV9zcGFuID0gIShoYXNJbml0aWFsaXplZFN0eWxlKCkgJiYgc3R5bGUoKS5kaXNwbGF5KCkgPT0g
RGlzcGxheVR5cGU6OlRhYmxlQ29sdW1uR3JvdXApOwogICAgIGlmIChtX3NwYW4gIT0gb2xkU3Bh
biAmJiBoYXNJbml0aWFsaXplZFN0eWxlKCkgJiYgcGFyZW50KCkpCiAgICAgICAgIHNldE5lZWRz
TGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwogfQpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQg
UmVuZGVyVGFibGVDb2w6OndpbGxCZVJlbW92ZWRGcm9tVHIKIGJvb2wgUmVuZGVyVGFibGVDb2w6
OmlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYgY2hpbGQsIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSkgY29uc3QKIHsKICAgICAvLyBXZSBjYW5ub3QgdXNlIGlzVGFibGVDb2x1bW4g
aGVyZSBhcyBzdHlsZSgpIG1heSByZXR1cm4gMC4KLSAgICByZXR1cm4gc3R5bGUuZGlzcGxheSgp
ID09IFRBQkxFX0NPTFVNTiAmJiBjaGlsZC5pc1JlbmRlclRhYmxlQ29sKCk7CisgICAgcmV0dXJu
IHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1bW4gJiYgY2hpbGQuaXNS
ZW5kZXJUYWJsZUNvbCgpOwogfQogCiBib29sIFJlbmRlclRhYmxlQ29sOjpjYW5IYXZlQ2hpbGRy
ZW4oKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29s
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29s
LmgJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZUNvbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw4ICs0NCw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldFNwYW4odW5zaWduZWQgc3BhbikgeyBtX3NwYW4gPSBzcGFuOyB9CiAKICAgICBib29s
IGlzVGFibGVDb2x1bW5Hcm91cFdpdGhDb2x1bW5DaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIGZp
cnN0Q2hpbGQoKTsgfQotICAgIGJvb2wgaXNUYWJsZUNvbHVtbigpIGNvbnN0IHsgcmV0dXJuIHN0
eWxlKCkuZGlzcGxheSgpID09IFRBQkxFX0NPTFVNTjsgfQotICAgIGJvb2wgaXNUYWJsZUNvbHVt
bkdyb3VwKCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS5kaXNwbGF5KCkgPT0gVEFCTEVfQ09MVU1O
X0dST1VQOyB9CisgICAgYm9vbCBpc1RhYmxlQ29sdW1uKCkgY29uc3QgeyByZXR1cm4gc3R5bGUo
KS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxlQ29sdW1uOyB9CisgICAgYm9vbCBpc1Rh
YmxlQ29sdW1uR3JvdXAoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNw
bGF5VHlwZTo6VGFibGVDb2x1bW5Hcm91cDsgfQogCiAgICAgUmVuZGVyVGFibGVDb2wqIGVuY2xv
c2luZ0NvbHVtbkdyb3VwKCkgY29uc3Q7CiAgICAgUmVuZGVyVGFibGVDb2wqIGVuY2xvc2luZ0Nv
bHVtbkdyb3VwSWZBZGphY2VudEJlZm9yZSgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03NCw3ICs3NCw3IEBAIHN0YXRpYyBib29sIGJvcmRlcldpZHRoQ2hhbmdlZChjb25zdCBSZW4K
IAogdm9pZCBSZW5kZXJUYWJsZVJvdzo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRp
ZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKIHsKLSAgICBBU1NFUlQoc3R5bGUoKS5k
aXNwbGF5KCkgPT0gVEFCTEVfUk9XKTsKKyAgICBBU1NFUlQoc3R5bGUoKS5kaXNwbGF5KCkgPT0g
RGlzcGxheVR5cGU6OlRhYmxlUm93KTsKIAogICAgIFJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2Uo
ZGlmZiwgb2xkU3R5bGUpOwogICAgIHByb3BhZ2F0ZVN0eWxlVG9Bbm9ueW1vdXNDaGlsZHJlbihQ
cm9wYWdhdGVUb0FsbENoaWxkcmVuKTsKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIFJlbmRlclRh
YmxlUm93OjpwYWludE91dGxpbmVGb3JSb3dJCiB7CiAgICAgTGF5b3V0UG9pbnQgYWRqdXN0ZWRQ
YWludE9mZnNldCA9IHBhaW50T2Zmc2V0ICsgbG9jYXRpb24oKTsKICAgICBQYWludFBoYXNlIHBh
aW50UGhhc2UgPSBwYWludEluZm8ucGhhc2U7Ci0gICAgaWYgKChwYWludFBoYXNlID09IFBhaW50
UGhhc2VPdXRsaW5lIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKSAmJiBz
dHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKQorICAgIGlmICgocGFpbnRQaGFzZSA9PSBQ
YWludFBoYXNlT3V0bGluZSB8fCBwYWludFBoYXNlID09IFBhaW50UGhhc2VTZWxmT3V0bGluZSkg
JiYgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAg
cGFpbnRPdXRsaW5lKHBhaW50SW5mbywgTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LCBz
aXplKCkpKTsKIH0KIApAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgUmVuZGVyVGFibGVSb3c6Omlt
YWdlQ2hhbmdlZChXcmFwcGUKIAogUmVuZGVyUHRyPFJlbmRlclRhYmxlUm93PiBSZW5kZXJUYWJs
ZVJvdzo6Y3JlYXRlVGFibGVSb3dXaXRoU3R5bGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgYXV0byByb3cgPSBjcmVhdGVSZW5kZXJlcjxSZW5k
ZXJUYWJsZVJvdz4oZG9jdW1lbnQsIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdp
dGhEaXNwbGF5KHN0eWxlLCBUQUJMRV9ST1cpKTsKKyAgICBhdXRvIHJvdyA9IGNyZWF0ZVJlbmRl
cmVyPFJlbmRlclRhYmxlUm93Pihkb2N1bWVudCwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91
c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUsIERpc3BsYXlUeXBlOjpUYWJsZVJvdykpOwogICAgIHJv
dy0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAgcmV0dXJuIHJvdzsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCShyZXZpc2lvbiAy
MzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDEwICsxNjgsMTAgQEAgdm9pZCBSZW5kZXJUYWJsZVNl
Y3Rpb246OmFkZENlbGwoUmVuZGVyVAogCiAgICAgLy8gIyMjIG1vemlsbGEgc3RpbGwgc2VlbXMg
dG8gZG8gdGhlIG9sZCBIVE1MIHdheSwgZXZlbiBmb3Igc3RyaWN0IERURAogICAgIC8vIChzZWUg
dGhlIGFubm90YXRpb24gb24gdGFibGUgY2VsbCBsYXlvdXRpbmcgaW4gdGhlIENTUyBzcGVjcyBh
bmQgdGhlIHRlc3RjYXNlIGJlbG93OgotICAgIC8vIDxUQUJMRSBib3JkZXI+CisgICAgLy8gPERp
c3BsYXlUeXBlOjpUYWJsZSBib3JkZXI+CiAgICAgLy8gPFRSPjxURD4xIDxURCByb3dzcGFuPSIy
Ij4yIDxURD4zIDxURD40CiAgICAgLy8gPFRSPjxURCBjb2xzcGFuPSIyIj41Ci0gICAgLy8gPC9U
QUJMRT4KKyAgICAvLyA8L0Rpc3BsYXlUeXBlOjpUYWJsZT4KICAgICB3aGlsZSAobV9jQ29sIDwg
bkNvbHMgJiYgKGNlbGxBdChpbnNlcnRpb25Sb3csIG1fY0NvbCkuaGFzQ2VsbHMoKSB8fCBjZWxs
QXQoaW5zZXJ0aW9uUm93LCBtX2NDb2wpLmluQ29sU3BhbikpCiAgICAgICAgIG1fY0NvbCsrOwog
CkBAIC05MTYsNyArOTE2LDcgQEAgdm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OnBhaW50KFBhaW50
SW5mbwogICAgIGlmIChwdXNoZWRDbGlwKQogICAgICAgICBwb3BDb250ZW50c0NsaXAocGFpbnRJ
bmZvLCBwaGFzZSwgYWRqdXN0ZWRQYWludE9mZnNldCk7CiAKLSAgICBpZiAoKHBoYXNlID09IFBh
aW50UGhhc2VPdXRsaW5lIHx8IHBoYXNlID09IFBhaW50UGhhc2VTZWxmT3V0bGluZSkgJiYgc3R5
bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkKKyAgICBpZiAoKHBoYXNlID09IFBhaW50UGhh
c2VPdXRsaW5lIHx8IHBoYXNlID09IFBhaW50UGhhc2VTZWxmT3V0bGluZSkgJiYgc3R5bGUoKS52
aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcGFpbnRPdXRsaW5l
KHBhaW50SW5mbywgTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LCBzaXplKCkpKTsKIH0K
IApAQCAtMTU1MSw3ICsxNTUxLDcgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVT
ZWN0aW9uOgogCiBSZW5kZXJQdHI8UmVuZGVyVGFibGVTZWN0aW9uPiBSZW5kZXJUYWJsZVNlY3Rp
b246OmNyZWF0ZVRhYmxlU2VjdGlvbldpdGhTdHlsZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICBhdXRvIHNlY3Rpb24gPSBjcmVhdGVSZW5kZXJl
cjxSZW5kZXJUYWJsZVNlY3Rpb24+KGRvY3VtZW50LCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnlt
b3VzU3R5bGVXaXRoRGlzcGxheShzdHlsZSwgVEFCTEVfUk9XX0dST1VQKSk7CisgICAgYXV0byBz
ZWN0aW9uID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyVGFibGVTZWN0aW9uPihkb2N1bWVudCwgUmVu
ZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUsIERpc3BsYXlU
eXBlOjpUYWJsZVJvd0dyb3VwKSk7CiAgICAgc2VjdGlvbi0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAg
ICAgcmV0dXJuIHNlY3Rpb247CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHQuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MSw3ICsyNzEsNyBAQCB2b2lkIFJl
bmRlclRleHQ6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmCiAgICAgaWYgKCFvbGRTdHlsZSB8fCBv
bGRTdHlsZS0+Zm9udENhc2NhZGUoKSAhPSBuZXdTdHlsZS5mb250Q2FzY2FkZSgpKQogICAgICAg
ICBtX2NhblVzZVNpbXBsaWZpZWRUZXh0TWVhc3VyaW5nID0gY29tcHV0ZUNhblVzZVNpbXBsaWZp
ZWRUZXh0TWVhc3VyaW5nKCk7CiAKLSAgICBFVGV4dFRyYW5zZm9ybSBvbGRUcmFuc2Zvcm0gPSBv
bGRTdHlsZSA/IG9sZFN0eWxlLT50ZXh0VHJhbnNmb3JtKCkgOiBUVE5PTkU7CisgICAgVGV4dFRy
YW5zZm9ybSBvbGRUcmFuc2Zvcm0gPSBvbGRTdHlsZSA/IG9sZFN0eWxlLT50ZXh0VHJhbnNmb3Jt
KCkgOiBUZXh0VHJhbnNmb3JtOjpOb25lOwogICAgIFRleHRTZWN1cml0eSBvbGRTZWN1cml0eSA9
IG9sZFN0eWxlID8gb2xkU3R5bGUtPnRleHRTZWN1cml0eSgpIDogVGV4dFNlY3VyaXR5OjpOb25l
OwogICAgIGlmIChuZWVkc1Jlc2V0VGV4dCB8fCBvbGRUcmFuc2Zvcm0gIT0gbmV3U3R5bGUudGV4
dFRyYW5zZm9ybSgpIHx8IG9sZFNlY3VyaXR5ICE9IG5ld1N0eWxlLnRleHRTZWN1cml0eSgpKQog
ICAgICAgICBSZW5kZXJUZXh0OjpzZXRUZXh0KG9yaWdpbmFsVGV4dCgpLCB0cnVlKTsKQEAgLTgw
OCw3ICs4MDgsNyBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsCiAg
ICAgZmxvYXQgbWF4V29yZFdpZHRoID0gc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgp
OwogICAgIHVuc2lnbmVkIG1pbmltdW1QcmVmaXhMZW5ndGggPSAwOwogICAgIHVuc2lnbmVkIG1p
bmltdW1TdWZmaXhMZW5ndGggPSAwOwotICAgIGlmIChzdHlsZS5oeXBoZW5zKCkgPT0gSHlwaGVu
c0F1dG8gJiYgY2FuSHlwaGVuYXRlKHN0eWxlLmxvY2FsZSgpKSkgeworICAgIGlmIChzdHlsZS5o
eXBoZW5zKCkgPT0gSHlwaGVuczo6QXV0byAmJiBjYW5IeXBoZW5hdGUoc3R5bGUubG9jYWxlKCkp
KSB7CiAgICAgICAgIG1heFdvcmRXaWR0aCA9IDA7CiAKICAgICAgICAgLy8gTWFwICdoeXBoZW5h
dGUtbGltaXQte2JlZm9yZSxhZnRlcn06IGF1dG87JyB0byAyLgpAQCAtODY1LDcgKzg2NSw3IEBA
IHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWwKICAgICAgICAgICAgIEFT
U0VSVChsYXN0V29yZEJvdW5kYXJ5ID09IGkpOwogICAgICAgICAgICAgbGFzdFdvcmRCb3VuZGFy
eSsrOwogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0gZWxzZSBpZiAoYyA9PSBzb2Z0
SHlwaGVuICYmIHN0eWxlLmh5cGhlbnMoKSAhPSBIeXBoZW5zTm9uZSkgeworICAgICAgICB9IGVs
c2UgaWYgKGMgPT0gc29mdEh5cGhlbiAmJiBzdHlsZS5oeXBoZW5zKCkgIT0gSHlwaGVuczo6Tm9u
ZSkgewogICAgICAgICAgICAgQVNTRVJUKGkgPj0gbGFzdFdvcmRCb3VuZGFyeSk7CiAgICAgICAg
ICAgICBjdXJyTWF4V2lkdGggKz0gd2lkdGhGcm9tQ2FjaGUoZm9udCwgbGFzdFdvcmRCb3VuZGFy
eSwgaSAtIGxhc3RXb3JkQm91bmRhcnksIGxlYWRXaWR0aCArIGN1cnJNYXhXaWR0aCwgJmZhbGxi
YWNrRm9udHMsICZnbHlwaE92ZXJmbG93LCBzdHlsZSk7CiAgICAgICAgICAgICBpZiAoIWZpcnN0
R2x5cGhMZWZ0T3ZlcmZsb3cpCkBAIC04NzcsNyArODc3LDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojpj
b21wdXRlUHJlZmVycmVkTG9naWNhbAogICAgICAgICBib29sIGhhc0JyZWFrID0gYnJlYWtBbGwg
fHwgaXNCcmVha2FibGUoYnJlYWtJdGVyYXRvciwgaSwgbmV4dEJyZWFrYWJsZSwgYnJlYWtOQlNQ
LCBjYW5Vc2VMaW5lQnJlYWtTaG9ydGN1dCwga2VlcEFsbFdvcmRzKTsKICAgICAgICAgYm9vbCBi
ZXR3ZWVuV29yZHMgPSB0cnVlOwogICAgICAgICB1bnNpZ25lZCBqID0gaTsKLSAgICAgICAgd2hp
bGUgKGMgIT0gJ1xuJyAmJiAhaXNTcGFjZUFjY29yZGluZ1RvU3R5bGUoYywgc3R5bGUpICYmIGMg
IT0gJ1x0JyAmJiAoYyAhPSBzb2Z0SHlwaGVuIHx8IHN0eWxlLmh5cGhlbnMoKSA9PSBIeXBoZW5z
Tm9uZSkpIHsKKyAgICAgICAgd2hpbGUgKGMgIT0gJ1xuJyAmJiAhaXNTcGFjZUFjY29yZGluZ1Rv
U3R5bGUoYywgc3R5bGUpICYmIGMgIT0gJ1x0JyAmJiAoYyAhPSBzb2Z0SHlwaGVuIHx8IHN0eWxl
Lmh5cGhlbnMoKSA9PSBIeXBoZW5zOjpOb25lKSkgewogICAgICAgICAgICAgaisrOwogICAgICAg
ICAgICAgaWYgKGogPT0gbGVuZ3RoKQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTAyLDcg
KzkwMiw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWwKICAgICAg
ICAgICAgICAgICB3ID0gd2lkdGhGcm9tQ2FjaGUoZm9udCwgaSwgd29yZExlbiArIDEsIGxlYWRX
aWR0aCArIGN1cnJNYXhXaWR0aCwgJmZhbGxiYWNrRm9udHMsICZnbHlwaE92ZXJmbG93LCBzdHls
ZSkgLSB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoLnZhbHVlKCk7CiAgICAgICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgICAgICB3ID0gd2lkdGhGcm9tQ2FjaGUoZm9udCwgaSwgd29yZExlbiwgbGVh
ZFdpZHRoICsgY3Vyck1heFdpZHRoLCAmZmFsbGJhY2tGb250cywgJmdseXBoT3ZlcmZsb3csIHN0
eWxlKTsKLSAgICAgICAgICAgICAgICBpZiAoYyA9PSBzb2Z0SHlwaGVuICYmIHN0eWxlLmh5cGhl
bnMoKSAhPSBIeXBoZW5zTm9uZSkKKyAgICAgICAgICAgICAgICBpZiAoYyA9PSBzb2Z0SHlwaGVu
ICYmIHN0eWxlLmh5cGhlbnMoKSAhPSBIeXBoZW5zOjpOb25lKQogICAgICAgICAgICAgICAgICAg
ICBjdXJyTWluV2lkdGggPSBoeXBoZW5XaWR0aCgqdGhpcywgZm9udCk7CiAgICAgICAgICAgICB9
CiAKQEAgLTEwMDUsNyArMTAwNSw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJl
ZExvZ2ljYWwKICAgICBpZiAoIXN0eWxlLmF1dG9XcmFwKCkpCiAgICAgICAgIG1fbWluV2lkdGgg
PSBtX21heFdpZHRoOwogCi0gICAgaWYgKHN0eWxlLndoaXRlU3BhY2UoKSA9PSBQUkUpIHsKKyAg
ICBpZiAoc3R5bGUud2hpdGVTcGFjZSgpID09IFdoaXRlU3BhY2U6OlByZSkgewogICAgICAgICBp
ZiAoZmlyc3RMaW5lKQogICAgICAgICAgICAgbV9iZWdpbk1pbldpZHRoID0gbV9tYXhXaWR0aDsK
ICAgICAgICAgbV9lbmRNaW5XaWR0aCA9IGN1cnJNYXhXaWR0aDsKQEAgLTExMzcsMTMgKzExMzcs
MTMgQEAgTGF5b3V0VW5pdCBSZW5kZXJUZXh0Ojp0b3BPZkZpcnN0VGV4dCgpIAogU3RyaW5nIGFw
cGx5VGV4dFRyYW5zZm9ybShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IFN0cmluZyYg
dGV4dCwgVUNoYXIgcHJldmlvdXNDaGFyYWN0ZXIpCiB7CiAgICAgc3dpdGNoIChzdHlsZS50ZXh0
VHJhbnNmb3JtKCkpIHsKLSAgICBjYXNlIFRUTk9ORToKKyAgICBjYXNlIFRleHRUcmFuc2Zvcm06
Ok5vbmU6CiAgICAgICAgIHJldHVybiB0ZXh0OwotICAgIGNhc2UgQ0FQSVRBTElaRToKKyAgICBj
YXNlIFRleHRUcmFuc2Zvcm06OkNhcGl0YWxpemU6CiAgICAgICAgIHJldHVybiBjYXBpdGFsaXpl
KHRleHQsIHByZXZpb3VzQ2hhcmFjdGVyKTsgLy8gRklYTUU6IE5lZWQgdG8gdGFrZSBsb2NhbGUg
aW50byBhY2NvdW50LgotICAgIGNhc2UgVVBQRVJDQVNFOgorICAgIGNhc2UgVGV4dFRyYW5zZm9y
bTo6VXBwZXJjYXNlOgogICAgICAgICByZXR1cm4gdGV4dC5jb252ZXJ0VG9VcHBlcmNhc2VXaXRo
TG9jYWxlKHN0eWxlLmxvY2FsZSgpKTsKLSAgICBjYXNlIExPV0VSQ0FTRToKKyAgICBjYXNlIFRl
eHRUcmFuc2Zvcm06Okxvd2VyY2FzZToKICAgICAgICAgcmV0dXJuIHRleHQuY29udmVydFRvTG93
ZXJjYXNlV2l0aExvY2FsZShzdHlsZS5sb2NhbGUoKSk7CiAgICAgfQogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFn
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRGcmFnbWVudC5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3
IEBAIHZvaWQgUmVuZGVyVGV4dEZyYWdtZW50OjpzdHlsZURpZENoYW5nZSgKICAgICBSZW5kZXJU
ZXh0OjpzdHlsZURpZENoYW5nZShkaWZmLCBvbGRTdHlsZSk7CiAKICAgICBpZiAoUmVuZGVyQmxv
Y2sqIGJsb2NrID0gYmxvY2tGb3JBY2NvbXBhbnlpbmdGaXJzdExldHRlcigpKQotICAgICAgICBi
bG9jay0+bXV0YWJsZVN0eWxlKCkucmVtb3ZlQ2FjaGVkUHNldWRvU3R5bGUoRklSU1RfTEVUVEVS
KTsKKyAgICAgICAgYmxvY2stPm11dGFibGVTdHlsZSgpLnJlbW92ZUNhY2hlZFBzZXVkb1N0eWxl
KFBzZXVkb0lkOjpGaXJzdExldHRlcik7CiB9CiAKIHZvaWQgUmVuZGVyVGV4dEZyYWdtZW50Ojpz
ZXRUZXh0KGNvbnN0IFN0cmluZyYgbmV3VGV4dCwgYm9vbCBmb3JjZSkKQEAgLTExMCw3ICsxMTAs
NyBAQCBSZW5kZXJCbG9jayogUmVuZGVyVGV4dEZyYWdtZW50OjpibG9ja0ZvCiAgICAgZm9yIChh
dXRvJiBibG9jayA6IGFuY2VzdG9yc09mVHlwZTxSZW5kZXJCbG9jaz4oKm1fZmlyc3RMZXR0ZXIp
KSB7CiAgICAgICAgIGlmIChpczxSZW5kZXJNdWx0aUNvbHVtbkZsb3c+KGJsb2NrKSkKICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBpZiAoYmxvY2suc3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShG
SVJTVF9MRVRURVIpICYmIGJsb2NrLmNhbkhhdmVDaGlsZHJlbigpKQorICAgICAgICBpZiAoYmxv
Y2suc3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RMZXR0ZXIpICYmIGJsb2Nr
LmNhbkhhdmVDaGlsZHJlbigpKQogICAgICAgICAgICAgcmV0dXJuICZibG9jazsKICAgICB9CiAg
ICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZS5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDEzICs3OSwxMyBAQCB2b2lkIFJl
bmRlclRoZW1lOjphZGp1c3RTdHlsZShTdHlsZVJlc29sCiB7CiAgICAgLy8gRm9yY2UgaW5saW5l
IGFuZCB0YWJsZSBkaXNwbGF5IHN0eWxlcyB0byBiZSBpbmxpbmUtYmxvY2sgKGV4Y2VwdCBmb3Ig
dGFibGUtIHdoaWNoIGlzIGJsb2NrKQogICAgIENvbnRyb2xQYXJ0IHBhcnQgPSBzdHlsZS5hcHBl
YXJhbmNlKCk7Ci0gICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBJTkxJTkUgfHwgc3R5bGUuZGlz
cGxheSgpID09IElOTElORV9UQUJMRSB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gVEFCTEVfUk9XX0dS
T1VQCi0gICAgICAgIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBUQUJMRV9IRUFERVJfR1JPVVAgfHwg
c3R5bGUuZGlzcGxheSgpID09IFRBQkxFX0ZPT1RFUl9HUk9VUAotICAgICAgICB8fCBzdHlsZS5k
aXNwbGF5KCkgPT0gVEFCTEVfUk9XIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBUQUJMRV9DT0xVTU5f
R1JPVVAgfHwgc3R5bGUuZGlzcGxheSgpID09IFRBQkxFX0NPTFVNTgotICAgICAgICB8fCBzdHls
ZS5kaXNwbGF5KCkgPT0gVEFCTEVfQ0VMTCB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gVEFCTEVfQ0FQ
VElPTikKLSAgICAgICAgc3R5bGUuc2V0RGlzcGxheShJTkxJTkVfQkxPQ0spOwotICAgIGVsc2Ug
aWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBDT01QQUNUIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBMSVNU
X0lURU0gfHwgc3R5bGUuZGlzcGxheSgpID09IFRBQkxFKQotICAgICAgICBzdHlsZS5zZXREaXNw
bGF5KEJMT0NLKTsKKyAgICBpZiAoc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpJbmxp
bmUgfHwgc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpJbmxpbmVUYWJsZSB8fCBzdHls
ZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxlUm93R3JvdXAKKyAgICAgICAgfHwgc3R5
bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpUYWJsZUhlYWRlckdyb3VwIHx8IHN0eWxlLmRp
c3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGVGb290ZXJHcm91cAorICAgICAgICB8fCBzdHls
ZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxlUm93IHx8IHN0eWxlLmRpc3BsYXkoKSA9
PSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1bW5Hcm91cCB8fCBzdHlsZS5kaXNwbGF5KCkgPT0gRGlz
cGxheVR5cGU6OlRhYmxlQ29sdW1uCisgICAgICAgIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNw
bGF5VHlwZTo6VGFibGVDZWxsIHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFi
bGVDYXB0aW9uKQorICAgICAgICBzdHlsZS5zZXREaXNwbGF5KERpc3BsYXlUeXBlOjpJbmxpbmVC
bG9jayk7CisgICAgZWxzZSBpZiAoc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpDb21w
YWN0IHx8IHN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6TGlzdEl0ZW0gfHwgc3R5bGUu
ZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpUYWJsZSkKKyAgICAgICAgc3R5bGUuc2V0RGlzcGxh
eShEaXNwbGF5VHlwZTo6QmxvY2spOwogCiAgICAgaWYgKFVBSGFzQXBwZWFyYW5jZSAmJiBpc0Nv
bnRyb2xTdHlsZWQoc3R5bGUsIGJvcmRlciwgYmFja2dyb3VuZCwgYmFja2dyb3VuZENvbG9yKSkg
ewogICAgICAgICBzd2l0Y2ggKHBhcnQpIHsKQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIFJlbmRl
clRoZW1lOjphZGp1c3RTdHlsZShTdHlsZVJlc29sCiAKICAgICAgICAgLy8gV2hpdGVzcGFjZQog
ICAgICAgICBpZiAoVGhlbWU6OnNpbmdsZXRvbigpLmNvbnRyb2xSZXF1aXJlc1ByZVdoaXRlU3Bh
Y2UocGFydCkpCi0gICAgICAgICAgICBzdHlsZS5zZXRXaGl0ZVNwYWNlKFBSRSk7CisgICAgICAg
ICAgICBzdHlsZS5zZXRXaGl0ZVNwYWNlKFdoaXRlU3BhY2U6OlByZSk7CiAKICAgICAgICAgLy8g
V2lkdGggLyBIZWlnaHQKICAgICAgICAgLy8gVGhlIHdpZHRoIGFuZCBoZWlnaHQgaGVyZSBhcmUg
YWZmZWN0ZWQgYnkgdGhlIHpvb20uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lTWFjLm1tCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMjQsNyArMTMyNCw3
IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OmFkanVzdE1lbnVMaXN0U3R5bGUKICAgICBzdHlsZS5z
ZXRIZWlnaHQoTGVuZ3RoKEF1dG8pKTsKIAogICAgIC8vIFdoaXRlLXNwYWNlIGlzIGxvY2tlZCB0
byBwcmUKLSAgICBzdHlsZS5zZXRXaGl0ZVNwYWNlKFBSRSk7CisgICAgc3R5bGUuc2V0V2hpdGVT
cGFjZShXaGl0ZVNwYWNlOjpQcmUpOwogCiAgICAgLy8gU2V0IHRoZSBmb3JlZ3JvdW5kIGNvbG9y
IHRvIGJsYWNrIG9yIGdyYXkgd2hlbiB3ZSBoYXZlIHRoZSBhcXVhIGxvb2suCiAgICAgQ29sb3Ig
YyA9IENvbG9yOjpkYXJrR3JheTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lV2luLmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgyLDcgKzc4Miw3
IEBAIHZvaWQgUmVuZGVyVGhlbWVXaW46OmFkanVzdE1lbnVMaXN0QnV0dG8KICAgICBzdHlsZS5z
ZXRMaW5lSGVpZ2h0KFJlbmRlclN0eWxlOjppbml0aWFsTGluZUhlaWdodCgpKTsKICAgICAKICAg
ICAvLyBXaGl0ZS1zcGFjZSBpcyBsb2NrZWQgdG8gcHJlCi0gICAgc3R5bGUuc2V0V2hpdGVTcGFj
ZShQUkUpOworICAgIHN0eWxlLnNldFdoaXRlU3BhY2UoV2hpdGVTcGFjZTo6UHJlKTsKIH0KIAog
Ym9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0
IFJlbmRlckJveCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBG
bG9hdFJlY3QmIHJlY3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcu
Y3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5NCw3ICszOTQsNyBAQCBSZW5kZXJFbGVtZW50
KiBSZW5kZXJWaWV3OjpyZW5kZXJlckZvclJvCiBzdGF0aWMgaW5saW5lIGJvb2wgcmVuZGVyZXJP
YnNjdXJlc0JhY2tncm91bmQoY29uc3QgUmVuZGVyRWxlbWVudCYgcm9vdEVsZW1lbnQpCiB7CiAg
ICAgYXV0byYgc3R5bGUgPSByb290RWxlbWVudC5zdHlsZSgpOwotICAgIGlmIChzdHlsZS52aXNp
YmlsaXR5KCkgIT0gVklTSUJMRSB8fCBzdHlsZS5vcGFjaXR5KCkgIT0gMSB8fCBzdHlsZS5oYXNU
cmFuc2Zvcm0oKSkKKyAgICBpZiAoc3R5bGUudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZp
c2libGUgfHwgc3R5bGUub3BhY2l0eSgpICE9IDEgfHwgc3R5bGUuaGFzVHJhbnNmb3JtKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChzdHlsZS5oYXNCb3JkZXJSYWRpdXMoKSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCShyZXZpc2lv
biAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpzZXRX
aWRnZXQoUmVmUHRyPFdpZGcKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkK
KyAgICAgICAgICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNp
YmxlKQogICAgICAgICAgICAgICAgIG1fd2lkZ2V0LT5oaWRlKCk7CiAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICBtX3dpZGdldC0+c2hvdygpOwpAQCAtMjEwLDcgKzIxMCw3IEBA
IHZvaWQgUmVuZGVyV2lkZ2V0OjpzdHlsZURpZENoYW5nZShTdHlsZUQKIHsKICAgICBSZW5kZXJS
ZXBsYWNlZDo6c3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xkU3R5bGUpOwogICAgIGlmIChtX3dpZGdl
dCkgewotICAgICAgICBpZiAoc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICAg
ICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAg
ICAgICAgICBtX3dpZGdldC0+aGlkZSgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX3dp
ZGdldC0+c2hvdygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVC
b3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5l
Qm94LmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jv
b3RJbmxpbmVCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsNyArMTYwLDcgQEAgZmxvYXQg
Um9vdElubGluZUJveDo6cGxhY2VFbGxpcHNpc0JveChibwogCiB2b2lkIFJvb3RJbmxpbmVCb3g6
OnBhaW50RWxsaXBzaXNCb3goUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20p
IGNvbnN0CiB7Ci0gICAgaWYgKGhhc0VsbGlwc2lzQm94KCkgJiYgcGFpbnRJbmZvLnNob3VsZFBh
aW50V2l0aGluUm9vdChyZW5kZXJlcigpKSAmJiByZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0
eSgpID09IFZJU0lCTEUKKyAgICBpZiAoaGFzRWxsaXBzaXNCb3goKSAmJiBwYWludEluZm8uc2hv
dWxkUGFpbnRXaXRoaW5Sb290KHJlbmRlcmVyKCkpICYmIHJlbmRlcmVyKCkuc3R5bGUoKS52aXNp
YmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZQogICAgICAgICAgICAgJiYgcGFpbnRJbmZv
LnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKQogICAgICAgICBlbGxpcHNpc0JveCgpLT5w
YWludChwYWludEluZm8sIHBhaW50T2Zmc2V0LCBsaW5lVG9wLCBsaW5lQm90dG9tKTsKIH0KQEAg
LTMzNSw3ICszMzUsNyBAQCBMYXlvdXRVbml0IFJvb3RJbmxpbmVCb3g6OmxpbmVTbmFwQWRqdXN0
CiB7CiAgICAgLy8gSWYgb3VyIGJsb2NrIGRvZXNuJ3QgaGF2ZSBzbmFwcGluZyB0dXJuZWQgb24s
IGRvIG5vdGhpbmcuCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBib3VuZHMgc25hcHBpbmcuCi0g
ICAgaWYgKGJsb2NrRmxvdygpLnN0eWxlKCkubGluZVNuYXAoKSA9PSBMaW5lU25hcE5vbmUpCisg
ICAgaWYgKGJsb2NrRmxvdygpLnN0eWxlKCkubGluZVNuYXAoKSA9PSBMaW5lU25hcDo6Tm9uZSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyBHZXQgdGhlIGN1cnJlbnQgbGluZSBncmlkIGFu
ZCBvZmZzZXQuCkBAIC0zODIsNyArMzgyLDcgQEAgTGF5b3V0VW5pdCBSb290SW5saW5lQm94Ojps
aW5lU25hcEFkanVzdAogICAgICAgICAgICAgZmlyc3RUZXh0VG9wID0gcGFnZUxvZ2ljYWxUb3Ag
KyBsaW5lR3JpZEJveC0+bG9naWNhbFRvcCgpIC0gbGluZUdyaWQtPmJvcmRlckFuZFBhZGRpbmdC
ZWZvcmUoKSArIGxpbmVHcmlkUGFnaW5hdGlvbk9yaWdpbjsKICAgICB9CiAKLSAgICBpZiAoYmxv
Y2tGbG93KCkuc3R5bGUoKS5saW5lU25hcCgpID09IExpbmVTbmFwQ29udGFpbikgeworICAgIGlm
IChibG9ja0Zsb3coKS5zdHlsZSgpLmxpbmVTbmFwKCkgPT0gTGluZVNuYXA6OkNvbnRhaW4pIHsK
ICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgZGVzaXJlZCBvZmZzZXQgZnJvbSB0aGUgdGV4dC10b3Ag
b2YgYSBncmlkIGxpbmUuCiAgICAgICAgIC8vIExvb2sgYXQgb3VyIGhlaWdodCAobG9naWNhbEhl
aWdodCgpKS4KICAgICAgICAgLy8gTG9vayBhdCB0aGUgdG90YWwgYXZhaWxhYmxlIGhlaWdodC4g
SXQncyBnb2luZyB0byBiZSAodGV4dEJvdHRvbSAtIHRleHRUb3ApICsgKG4tMSkqKG11bHRpcGxl
IHdpdGggbGVhZGluZykKQEAgLTQ2MCw3ICs0NjAsNyBAQCBHYXBSZWN0cyBSb290SW5saW5lQm94
OjpsaW5lU2VsZWN0aW9uR2FwCiAgICAgICAgICAgICAgICAgbG9naWNhbFJlY3QubW92ZShyZW5k
ZXJlcigpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBvZmZzZXRGcm9tUm9vdEJsb2NrIDog
TGF5b3V0U2l6ZShvZmZzZXRGcm9tUm9vdEJsb2NrLmhlaWdodCgpLCBvZmZzZXRGcm9tUm9vdEJs
b2NrLndpZHRoKCkpKTsKICAgICAgICAgICAgICAgICBMYXlvdXRSZWN0IGdhcFJlY3QgPSByb290
QmxvY2subG9naWNhbFJlY3RUb1BoeXNpY2FsUmVjdChyb290QmxvY2tQaHlzaWNhbFBvc2l0aW9u
LCBsb2dpY2FsUmVjdCk7CiAgICAgICAgICAgICAgICAgaWYgKGlzUHJldmlvdXNCb3hTZWxlY3Rl
ZCAmJiBnYXBSZWN0LndpZHRoKCkgPiAwICYmIGdhcFJlY3QuaGVpZ2h0KCkgPiAwKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChwYWludEluZm8gJiYgYm94LT5wYXJlbnQoKS0+cmVuZGVyZXIo
KS5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKQorICAgICAgICAgICAgICAgICAgICBp
ZiAocGFpbnRJbmZvICYmIGJveC0+cGFyZW50KCktPnJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmls
aXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHBh
aW50SW5mby0+Y29udGV4dCgpLmZpbGxSZWN0KGdhcFJlY3QsIGJveC0+cGFyZW50KCktPnJlbmRl
cmVyKCkuc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkpOwogICAgICAgICAgICAgICAgICAgICAv
LyBWaXNpYmxlU2VsZWN0aW9uIG1heSBiZSBub24tY29udGlndW91cywgc2VlIGNvbW1lbnQgYWJv
dmUuCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC51bml0ZUNlbnRlcihnYXBSZWN0KTsKQEAg
LTQ5OCwyMCArNDk4LDIwIEBAIEludFJlY3QgUm9vdElubGluZUJveDo6Y29tcHV0ZUNhcmV0UmVj
dCgKIAogICAgIGJvb2wgcmlnaHRBbGlnbmVkID0gZmFsc2U7CiAgICAgc3dpdGNoIChibG9ja1N0
eWxlLnRleHRBbGlnbigpKSB7Ci0gICAgY2FzZSBSSUdIVDoKLSAgICBjYXNlIFdFQktJVF9SSUdI
VDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlJpZ2h0OgorICAgIGNhc2UgVGV4dEFsaWduTW9k
ZTo6V2ViS2l0UmlnaHQ6CiAgICAgICAgIHJpZ2h0QWxpZ25lZCA9IHRydWU7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgTEVGVDoKLSAgICBjYXNlIFdFQktJVF9MRUZUOgotICAgIGNhc2UgQ0VO
VEVSOgotICAgIGNhc2UgV0VCS0lUX0NFTlRFUjoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6Okxl
ZnQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgorICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6Q2VudGVyOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0Q2VudGVyOgog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEpVU1RJRlk6Ci0gICAgY2FzZSBUQVNUQVJUOgorICAg
IGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlN0
YXJ0OgogICAgICAgICByaWdodEFsaWduZWQgPSAhYmxvY2tTdHlsZS5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVEFFTkQ6CisgICAgY2FzZSBUZXh0
QWxpZ25Nb2RlOjpFbmQ6CiAgICAgICAgIHJpZ2h0QWxpZ25lZCA9IGJsb2NrU3R5bGUuaXNMZWZ0
VG9SaWdodERpcmVjdGlvbigpOwogICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCShyZXZpc2lvbiAyMzIx
NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE2Myw3ICsxNjMsNyBAQCBzdGF0aWMgQXZvaWRhbmNlUmVhc29uRmxh
Z3MgY2FuVXNlRm9yRm9uCiAgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gbGluZUhlaWdodENvbnN0
cmFpbnQ7CiAgICAgaWYgKHN0eWxlLmxpbmVCb3hDb250YWluKCkgJiBMaW5lQm94Q29udGFpbkds
eXBocykKICAgICAgICAgbGluZUhlaWdodENvbnN0cmFpbnQgPSBsaW5lSGVpZ2h0RnJvbUZsb3co
ZmxvdykudG9GbG9hdCgpOwotICAgIGJvb2wgZmxvd0lzSnVzdGlmaWVkID0gc3R5bGUudGV4dEFs
aWduKCkgPT0gSlVTVElGWTsKKyAgICBib29sIGZsb3dJc0p1c3RpZmllZCA9IHN0eWxlLnRleHRB
bGlnbigpID09IFRleHRBbGlnbk1vZGU6Okp1c3RpZnk7CiAgICAgZm9yIChjb25zdCBhdXRvJiB0
ZXh0UmVuZGVyZXIgOiBjaGlsZHJlbk9mVHlwZTxSZW5kZXJUZXh0PihmbG93KSkgewogICAgICAg
ICAvLyBGSVhNRTogRG8gbm90IHJldHVybiB1bnRpbCBhZnRlciBjaGVja2luZyBhbGwgY2hpbGRy
ZW4uCiAgICAgICAgIGlmICh0ZXh0UmVuZGVyZXIudGV4dCgpLmlzRW1wdHkoKSkKQEAgLTIxNSwy
NSArMjE1LDI1IEBAIHN0YXRpYyBBdm9pZGFuY2VSZWFzb25GbGFncyBjYW5Vc2VGb3JTdHkKICAg
ICAgICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lGX05FRURFRChGbG93SGFzTGluZUJyZWFrLCBy
ZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7CiAgICAgaWYgKHN0eWxlLnVuaWNvZGVCaWRpKCkgIT0g
VUJOb3JtYWwpCiAgICAgICAgIFNFVF9SRUFTT05fQU5EX1JFVFVSTl9JRl9ORUVERUQoRmxvd0hh
c05vbk5vcm1hbFVuaWNvZGVCaURpLCByZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7Ci0gICAgaWYg
KHN0eWxlLnJ0bE9yZGVyaW5nKCkgIT0gTG9naWNhbE9yZGVyKQorICAgIGlmIChzdHlsZS5ydGxP
cmRlcmluZygpICE9IE9yZGVyOjpMb2dpY2FsKQogICAgICAgICBTRVRfUkVBU09OX0FORF9SRVRV
Uk5fSUZfTkVFREVEKEZsb3dIYXNSVExPcmRlcmluZywgcmVhc29ucywgaW5jbHVkZVJlYXNvbnMp
OwotICAgIGlmIChzdHlsZS5saW5lQWxpZ24oKSAhPSBMaW5lQWxpZ25Ob25lKQorICAgIGlmIChz
dHlsZS5saW5lQWxpZ24oKSAhPSBMaW5lQWxpZ246Ok5vbmUpCiAgICAgICAgIFNFVF9SRUFTT05f
QU5EX1JFVFVSTl9JRl9ORUVERUQoRmxvd0hhc0xpbmVBbGlnbkVkZ2VzLCByZWFzb25zLCBpbmNs
dWRlUmVhc29ucyk7Ci0gICAgaWYgKHN0eWxlLmxpbmVTbmFwKCkgIT0gTGluZVNuYXBOb25lKQor
ICAgIGlmIChzdHlsZS5saW5lU25hcCgpICE9IExpbmVTbmFwOjpOb25lKQogICAgICAgICBTRVRf
UkVBU09OX0FORF9SRVRVUk5fSUZfTkVFREVEKEZsb3dIYXNMaW5lU25hcCwgcmVhc29ucywgaW5j
bHVkZVJlYXNvbnMpOwotICAgIGlmIChzdHlsZS50ZXh0RW1waGFzaXNGaWxsKCkgIT0gVGV4dEVt
cGhhc2lzRmlsbEZpbGxlZCB8fCBzdHlsZS50ZXh0RW1waGFzaXNNYXJrKCkgIT0gVGV4dEVtcGhh
c2lzTWFya05vbmUpCisgICAgaWYgKHN0eWxlLnRleHRFbXBoYXNpc0ZpbGwoKSAhPSBUZXh0RW1w
aGFzaXNGaWxsOjpGaWxsZWQgfHwgc3R5bGUudGV4dEVtcGhhc2lzTWFyaygpICE9IFRleHRFbXBo
YXNpc01hcms6Ok5vbmUpCiAgICAgICAgIFNFVF9SRUFTT05fQU5EX1JFVFVSTl9JRl9ORUVERUQo
Rmxvd0hhc1RleHRFbXBoYXNpc0ZpbGxPck1hcmssIHJlYXNvbnMsIGluY2x1ZGVSZWFzb25zKTsK
ICAgICBpZiAoc3R5bGUudGV4dFNoYWRvdygpKQogICAgICAgICBTRVRfUkVBU09OX0FORF9SRVRV
Uk5fSUZfTkVFREVEKEZsb3dIYXNUZXh0U2hhZG93LCByZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7
Ci0gICAgaWYgKHN0eWxlLmhhc1BzZXVkb1N0eWxlKEZJUlNUX0xJTkUpKQorICAgIGlmIChzdHls
ZS5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKSkKICAgICAgICAgU0VUX1JFQVNP
Tl9BTkRfUkVUVVJOX0lGX05FRURFRChGbG93SGFzUHNldWRvRmlyc3RMaW5lLCByZWFzb25zLCBp
bmNsdWRlUmVhc29ucyk7Ci0gICAgaWYgKHN0eWxlLmhhc1BzZXVkb1N0eWxlKEZJUlNUX0xFVFRF
UikpCisgICAgaWYgKHN0eWxlLmhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkOjpGaXJzdExldHRlcikp
CiAgICAgICAgIFNFVF9SRUFTT05fQU5EX1JFVFVSTl9JRl9ORUVERUQoRmxvd0hhc1BzZXVkb0Zp
cnN0TGV0dGVyLCByZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7CiAgICAgaWYgKHN0eWxlLmhhc1Rl
eHRDb21iaW5lKCkpCiAgICAgICAgIFNFVF9SRUFTT05fQU5EX1JFVFVSTl9JRl9ORUVERUQoRmxv
d0hhc1RleHRDb21iaW5lLCByZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7CiAgICAgaWYgKHN0eWxl
LmJhY2tncm91bmRDbGlwKCkgPT0gRmlsbEJveDo6VGV4dCkKICAgICAgICAgU0VUX1JFQVNPTl9B
TkRfUkVUVVJOX0lGX05FRURFRChGbG93SGFzVGV4dEZpbGxCb3gsIHJlYXNvbnMsIGluY2x1ZGVS
ZWFzb25zKTsKLSAgICBpZiAoc3R5bGUuYm9yZGVyRml0KCkgPT0gQm9yZGVyRml0TGluZXMpCisg
ICAgaWYgKHN0eWxlLmJvcmRlckZpdCgpID09IEJvcmRlckZpdDo6TGluZXMpCiAgICAgICAgIFNF
VF9SRUFTT05fQU5EX1JFVFVSTl9JRl9ORUVERUQoRmxvd0hhc0JvcmRlckZpdExpbmVzLCByZWFz
b25zLCBpbmNsdWRlUmVhc29ucyk7CiAgICAgaWYgKHN0eWxlLmxpbmVCcmVhaygpICE9IExpbmVC
cmVhazo6QXV0bykKICAgICAgICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lGX05FRURFRChGbG93
SGFzTm9uQXV0b0xpbmVCcmVhaywgcmVhc29ucywgaW5jbHVkZVJlYXNvbnMpOwpAQCAtMjQzLDcg
KzI0Myw3IEBAIHN0YXRpYyBBdm9pZGFuY2VSZWFzb25GbGFncyBjYW5Vc2VGb3JTdHkKICAgICBp
ZiAoc3R5bGUudHJhaWxpbmdXb3JkKCkgIT0gVHJhaWxpbmdXb3JkOjpBdXRvKQogICAgICAgICBT
RVRfUkVBU09OX0FORF9SRVRVUk5fSUZfTkVFREVEKEZsb3dIYXNOb25BdXRvVHJhaWxpbmdXb3Jk
LCByZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7CiAjZW5kaWYKLSAgICBpZiAoc3R5bGUuaHlwaGVu
cygpID09IEh5cGhlbnNBdXRvKSB7CisgICAgaWYgKHN0eWxlLmh5cGhlbnMoKSA9PSBIeXBoZW5z
OjpBdXRvKSB7CiAgICAgICAgIGF1dG8gdGV4dFJlYXNvbnMgPSBjYW5Vc2VGb3JUZXh0KHN0eWxl
Lmh5cGhlblN0cmluZygpLCBzdHlsZS5mb250Q2FzY2FkZSgpLCBzdGQ6Om51bGxvcHQsIGZhbHNl
LCBpbmNsdWRlUmVhc29ucyk7CiAgICAgICAgIGlmICh0ZXh0UmVhc29ucyAhPSBOb1JlYXNvbikK
ICAgICAgICAgICAgIFNFVF9SRUFTT05fQU5EX1JFVFVSTl9JRl9ORUVERUQodGV4dFJlYXNvbnMs
IHJlYXNvbnMsIGluY2x1ZGVSZWFzb25zKTsKQEAgLTM1NSwyMyArMzU1LDIzIEBAIGJvb2wgY2Fu
VXNlRm9yKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmwKICAgICByZXR1cm4gY2FuVXNlRm9yV2l0
aFJlYXNvbihmbG93LCBJbmNsdWRlUmVhc29uczo6Rmlyc3QpID09IE5vUmVhc29uOwogfQogCi1z
dGF0aWMgZmxvYXQgY29tcHV0ZUxpbmVMZWZ0KEVUZXh0QWxpZ24gdGV4dEFsaWduLCBmbG9hdCBh
dmFpbGFibGVXaWR0aCwgZmxvYXQgY29tbWl0dGVkV2lkdGgsIGZsb2F0IGxvZ2ljYWxMZWZ0T2Zm
c2V0KQorc3RhdGljIGZsb2F0IGNvbXB1dGVMaW5lTGVmdChUZXh0QWxpZ25Nb2RlIHRleHRBbGln
biwgZmxvYXQgYXZhaWxhYmxlV2lkdGgsIGZsb2F0IGNvbW1pdHRlZFdpZHRoLCBmbG9hdCBsb2dp
Y2FsTGVmdE9mZnNldCkKIHsKICAgICBmbG9hdCByZW1haW5pbmdXaWR0aCA9IGF2YWlsYWJsZVdp
ZHRoIC0gY29tbWl0dGVkV2lkdGg7CiAgICAgZmxvYXQgbGVmdCA9IGxvZ2ljYWxMZWZ0T2Zmc2V0
OwogICAgIHN3aXRjaCAodGV4dEFsaWduKSB7Ci0gICAgY2FzZSBMRUZUOgotICAgIGNhc2UgV0VC
S0lUX0xFRlQ6Ci0gICAgY2FzZSBUQVNUQVJUOgorICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVm
dDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdExlZnQ6CisgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpTdGFydDoKICAgICAgICAgcmV0dXJuIGxlZnQ7Ci0gICAgY2FzZSBSSUdIVDoKLSAg
ICBjYXNlIFdFQktJVF9SSUdIVDoKLSAgICBjYXNlIFRBRU5EOgorICAgIGNhc2UgVGV4dEFsaWdu
TW9kZTo6UmlnaHQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRSaWdodDoKKyAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OkVuZDoKICAgICAgICAgcmV0dXJuIGxlZnQgKyBzdGQ6Om1heDxm
bG9hdD4ocmVtYWluaW5nV2lkdGgsIDApOwotICAgIGNhc2UgQ0VOVEVSOgotICAgIGNhc2UgV0VC
S0lUX0NFTlRFUjoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKKyAgICBjYXNlIFRl
eHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoKICAgICAgICAgcmV0dXJuIGxlZnQgKyBzdGQ6Om1h
eDxmbG9hdD4ocmVtYWluaW5nV2lkdGggLyAyLCAwKTsKLSAgICBjYXNlIEpVU1RJRlk6CisgICAg
Y2FzZSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNjA2LDcgKzYwNiw3IEBAIHN0YXRpYyB2b2lk
IHVwZGF0ZUxpbmVDb25zdHJhaW5zKGNvbnN0IFIKICAgICBsaW5lLnNldExvZ2ljYWxMZWZ0T2Zm
c2V0KGZsb3cubG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKGhlaWdodCwgRG9Ob3RJbmRlbnRUZXh0
LCBsb2dpY2FsSGVpZ2h0KSArIChzaG91bGRBcHBseVRleHRJbmRlbnQgJiYgaXNGaXJzdExpbmUg
PyBmbG93LnRleHRJbmRlbnRPZmZzZXQoKSA6IExheW91dFVuaXQoMCkpKTsKICAgICBmbG9hdCBs
b2dpY2FsUmlnaHRPZmZzZXQgPSBmbG93LmxvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUoaGVpZ2h0
LCBEb05vdEluZGVudFRleHQsIGxvZ2ljYWxIZWlnaHQpOwogICAgIGxpbmUuc2V0QXZhaWxhYmxl
V2lkdGgoc3RkOjptYXg8ZmxvYXQ+KDAsIGxvZ2ljYWxSaWdodE9mZnNldCAtIGxpbmUubG9naWNh
bExlZnRPZmZzZXQoKSkpOwotICAgIGlmIChzdHlsZS50ZXh0QWxpZ24gPT0gSlVTVElGWSkKKyAg
ICBpZiAoc3R5bGUudGV4dEFsaWduID09IFRleHRBbGlnbk1vZGU6Okp1c3RpZnkpCiAgICAgICAg
IGxpbmUuc2V0TmVlZHNBbGxGcmFnbWVudHMoKTsKICAgICBudW1iZXJPZlByZWNlZGluZ0xpbmVz
V2l0aEh5cGhlbiA9IChwcmV2aW91c0xpbmUuaXNFbXB0eSgpIHx8ICFwcmV2aW91c0xpbmUubGFz
dEZyYWdtZW50KCkuaGFzSHlwaGVuKCkpID8gMCA6IG51bWJlck9mUHJlY2VkaW5nTGluZXNXaXRo
SHlwaGVuICsgMTsKICAgICBpZiAoc3R5bGUuaHlwaGVuTGltaXRMaW5lcyAmJiBudW1iZXJPZlBy
ZWNlZGluZ0xpbmVzV2l0aEh5cGhlbiA+PSAqc3R5bGUuaHlwaGVuTGltaXRMaW5lcykKQEAgLTc5
MSw3ICs3OTEsNyBAQCBzdGF0aWMgYm9vbCBjcmVhdGVMaW5lUnVucyhMaW5lU3RhdGUmIGxpCiAg
ICAgICAgIGlmIChmcmFnbWVudC5pc0xpbmVCcmVhaygpKSB7CiAgICAgICAgICAgICAvLyBBZGQg
dGhlIG5ldyBsaW5lIGZyYWdtZW50IG9ubHkgaWYgdGhlcmUncyBub3RoaW5nIG9uIHRoZSBsaW5l
LiAob3RoZXJ3aXNlIHRoZSBleHRyYSBuZXcgbGluZSBjaGFyYWN0ZXIgd291bGQgc2hvdyB1cCBh
dCB0aGUgZW5kIG9mIHRoZSBjb250ZW50LikKICAgICAgICAgICAgIGlmIChsaW5lLmlzRW1wdHko
KSB8fCBmcmFnbWVudC50eXBlKCkgPT0gVGV4dEZyYWdtZW50SXRlcmF0b3I6OlRleHRGcmFnbWVu
dDo6SGFyZExpbmVCcmVhaykgewotICAgICAgICAgICAgICAgIGlmIChzdHlsZS50ZXh0QWxpZ24g
PT0gUklHSFQgfHwgc3R5bGUudGV4dEFsaWduID09IFdFQktJVF9SSUdIVCkKKyAgICAgICAgICAg
ICAgICBpZiAoc3R5bGUudGV4dEFsaWduID09IFRleHRBbGlnbk1vZGU6OlJpZ2h0IHx8IHN0eWxl
LnRleHRBbGlnbiA9PSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRSaWdodCkKICAgICAgICAgICAgICAg
ICAgICAgbGluZS5yZW1vdmVUcmFpbGluZ1doaXRlc3BhY2UocnVucyk7CiAgICAgICAgICAgICAg
ICAgbGluZS5hcHBlbmRGcmFnbWVudEFuZENyZWF0ZVJ1bklmTmVlZGVkKGZyYWdtZW50LCBydW5z
KTsKICAgICAgICAgICAgIH0KQEAgLTkwMywxMiArOTAzLDEyIEBAIHN0YXRpYyB2b2lkIGp1c3Rp
ZnlSdW5zKGNvbnN0IExpbmVTdGF0ZSYKICAgICB9CiB9CiAKLXN0YXRpYyBFVGV4dEFsaWduIHRl
eHRBbGlnbkZvckxpbmUoY29uc3QgVGV4dEZyYWdtZW50SXRlcmF0b3I6OlN0eWxlJiBzdHlsZSwg
Ym9vbCBsYXN0TGluZSkKK3N0YXRpYyBUZXh0QWxpZ25Nb2RlIHRleHRBbGlnbkZvckxpbmUoY29u
c3QgVGV4dEZyYWdtZW50SXRlcmF0b3I6OlN0eWxlJiBzdHlsZSwgYm9vbCBsYXN0TGluZSkKIHsK
LSAgICAvLyBGYWxsYmFjayB0byBMRUZUIChTVEFSVCkgYWxpZ25tZW50IGZvciBub24tY29sbGFw
c2FibGUgY29udGVudCBhbmQgZm9yIHRoZSBsYXN0IGxpbmUgYmVmb3JlIGEgZm9yY2VkIGJyZWFr
IG9yIHRoZSBlbmQgb2YgdGhlIGJsb2NrLgorICAgIC8vIEZhbGxiYWNrIHRvIFRleHRBbGlnbk1v
ZGU6OkxlZnQgKFNUQVJUKSBhbGlnbm1lbnQgZm9yIG5vbi1jb2xsYXBzYWJsZSBjb250ZW50IGFu
ZCBmb3IgdGhlIGxhc3QgbGluZSBiZWZvcmUgYSBmb3JjZWQgYnJlYWsgb3IgdGhlIGVuZCBvZiB0
aGUgYmxvY2suCiAgICAgYXV0byB0ZXh0QWxpZ24gPSBzdHlsZS50ZXh0QWxpZ247Ci0gICAgaWYg
KHRleHRBbGlnbiA9PSBKVVNUSUZZICYmICghc3R5bGUuY29sbGFwc2VXaGl0ZXNwYWNlIHx8IGxh
c3RMaW5lKSkKLSAgICAgICAgdGV4dEFsaWduID0gTEVGVDsKKyAgICBpZiAodGV4dEFsaWduID09
IFRleHRBbGlnbk1vZGU6Okp1c3RpZnkgJiYgKCFzdHlsZS5jb2xsYXBzZVdoaXRlc3BhY2UgfHwg
bGFzdExpbmUpKQorICAgICAgICB0ZXh0QWxpZ24gPSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OwogICAg
IHJldHVybiB0ZXh0QWxpZ247CiB9CiAKQEAgLTkyNSw3ICs5MjUsNyBAQCBzdGF0aWMgdm9pZCBj
bG9zZUxpbmVFbmRpbmdBbmRBZGp1c3RSdW5zCiAgICAgYXV0byBmaXJzdFJ1bkluZGV4ID0gbGFz
dFJ1bkluZGV4T2ZQcmV2aW91c0xpbmUgPyBsYXN0UnVuSW5kZXhPZlByZXZpb3VzTGluZS52YWx1
ZSgpICsgMSA6IDA7CiAgICAgYXV0byBsaW5lTG9naWNhbExlZnQgPSBsaW5lLmxvZ2ljYWxMZWZ0
T2Zmc2V0KCk7CiAgICAgYXV0byB0ZXh0QWxpZ24gPSB0ZXh0QWxpZ25Gb3JMaW5lKHN0eWxlLCBs
YXN0TGluZUluRmxvdyB8fCAobGluZS5sYXN0RnJhZ21lbnQoKS5pc1ZhbGlkKCkgJiYgbGluZS5s
YXN0RnJhZ21lbnQoKS50eXBlKCkgPT0gVGV4dEZyYWdtZW50SXRlcmF0b3I6OlRleHRGcmFnbWVu
dDo6SGFyZExpbmVCcmVhaykpOwotICAgIGlmICh0ZXh0QWxpZ24gPT0gSlVTVElGWSkKKyAgICBp
ZiAodGV4dEFsaWduID09IFRleHRBbGlnbk1vZGU6Okp1c3RpZnkpCiAgICAgICAgIGp1c3RpZnlS
dW5zKGxpbmUsIHJ1bnMsIGZpcnN0UnVuSW5kZXgpOwogICAgIGVsc2UKICAgICAgICAgbGluZUxv
Z2ljYWxMZWZ0ID0gY29tcHV0ZUxpbmVMZWZ0KHRleHRBbGlnbiwgbGluZS5hdmFpbGFibGVXaWR0
aCgpLCBsaW5lLndpZHRoKCksIGxpbmUubG9naWNhbExlZnRPZmZzZXQoKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlv
bnMuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2lt
cGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcg
QEAgdm9pZCBwYWludEZsb3coY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbAogICAgICAgICByZXR1
cm47CiAKICAgICBhdXRvJiBzdHlsZSA9IGZsb3cuc3R5bGUoKTsKLSAgICBpZiAoc3R5bGUudmlz
aWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKHN0eWxlLnZpc2liaWxpdHkoKSAhPSBWaXNp
YmlsaXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1cm47CiAKICAgICBUZXh0UGFpbnRlciB0ZXh0
UGFpbnRlcihwYWludEluZm8uY29udGV4dCgpKTsKQEAgLTE0Myw3ICsxNDMsNyBAQCBib29sIGhp
dFRlc3RGbG93KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGF1dG8mIHN0eWxlID0gZmxvdy5zdHlsZSgpOwotICAgIGlmIChzdHlsZS52aXNpYmls
aXR5KCkgIT0gVklTSUJMRSB8fCBzdHlsZS5wb2ludGVyRXZlbnRzKCkgPT0gUEVfTk9ORSkKKyAg
ICBpZiAoc3R5bGUudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgfHwgc3R5bGUu
cG9pbnRlckV2ZW50cygpID09IFBvaW50ZXJFdmVudHM6Ok5vbmUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIExheW91dFJlY3QgcmFuZ2VSZWN0ID0gbG9jYXRpb25JbkNvbnRhaW5lci5i
b3VuZGluZ0JveCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVM
YXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5jcHAJKHJl
dmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5
b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3
IEBAIFRleHRGcmFnbWVudEl0ZXJhdG9yOjpTdHlsZTo6U3R5bGUoY29uc3QKICAgICAsIGtlZXBB
bGxXb3Jkc0ZvckNKSyhzdHlsZS53b3JkQnJlYWsoKSA9PSBXb3JkQnJlYWs6OktlZXBBbGwpCiAg
ICAgLCB3b3JkU3BhY2luZyhmb250LndvcmRTcGFjaW5nKCkpCiAgICAgLCB0YWJXaWR0aChjb2xs
YXBzZVdoaXRlc3BhY2UgPyAwIDogc3R5bGUudGFiU2l6ZSgpKQotICAgICwgc2hvdWxkSHlwaGVu
YXRlKHN0eWxlLmh5cGhlbnMoKSA9PSBIeXBoZW5zQXV0byAmJiBjYW5IeXBoZW5hdGUoc3R5bGUu
bG9jYWxlKCkpKQorICAgICwgc2hvdWxkSHlwaGVuYXRlKHN0eWxlLmh5cGhlbnMoKSA9PSBIeXBo
ZW5zOjpBdXRvICYmIGNhbkh5cGhlbmF0ZShzdHlsZS5sb2NhbGUoKSkpCiAgICAgLCBoeXBoZW5T
dHJpbmdXaWR0aChzaG91bGRIeXBoZW5hdGUgPyAodXNlU2ltcGxpZmllZFRleHRNZWFzdXJpbmcg
PyBmb250LndpZHRoRm9yU2ltcGxlVGV4dChzdHlsZS5oeXBoZW5TdHJpbmcoKSkgOiBmb250Lndp
ZHRoKFRleHRSdW4oU3RyaW5nKHN0eWxlLmh5cGhlblN0cmluZygpKSkpKSA6IDApCiAgICAgLCBo
eXBoZW5MaW1pdEJlZm9yZShzdHlsZS5oeXBoZW5hdGlvbkxpbWl0QmVmb3JlKCkgPCAwID8gMiA6
IHN0eWxlLmh5cGhlbmF0aW9uTGltaXRCZWZvcmUoKSkKICAgICAsIGh5cGhlbkxpbWl0QWZ0ZXIo
c3R5bGUuaHlwaGVuYXRpb25MaW1pdEFmdGVyKCkgPCAwID8gMiA6IHN0eWxlLmh5cGhlbmF0aW9u
TGltaXRBZnRlcigpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVM
YXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuaAkocmV2aXNp
b24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRU
ZXh0RnJhZ21lbnRJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNyArMTA2LDcgQEAg
cHVibGljOgogICAgICAgICBleHBsaWNpdCBTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGJvb2wg
dXNlU2ltcGxpZmllZFRleHRNZWFzdXJpbmcpOwogCiAgICAgICAgIGNvbnN0IEZvbnRDYXNjYWRl
JiBmb250OwotICAgICAgICBFVGV4dEFsaWduIHRleHRBbGlnbjsKKyAgICAgICAgVGV4dEFsaWdu
TW9kZSB0ZXh0QWxpZ247CiAgICAgICAgIGJvb2wgaGFzS2VybmluZ09yTGlnYXR1cmVzOwogICAg
ICAgICBib29sIGNvbGxhcHNlV2hpdGVzcGFjZTsKICAgICAgICAgYm9vbCBwcmVzZXJ2ZU5ld2xp
bmU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRp
b25QYWludGVyLmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMSwxOSAr
MjIxLDE5IEBAIHN0YXRpYyBTdHJva2VTdHlsZSB0ZXh0RGVjb3JhdGlvblN0eWxlVG8KIHsKICAg
ICBTdHJva2VTdHlsZSBzdHJva2VTdHlsZSA9IFNvbGlkU3Ryb2tlOwogICAgIHN3aXRjaCAoZGVj
b3JhdGlvblN0eWxlKSB7Ci0gICAgY2FzZSBUZXh0RGVjb3JhdGlvblN0eWxlU29saWQ6CisgICAg
Y2FzZSBUZXh0RGVjb3JhdGlvblN0eWxlOjpTb2xpZDoKICAgICAgICAgc3Ryb2tlU3R5bGUgPSBT
b2xpZFN0cm9rZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUZXh0RGVjb3JhdGlvblN0eWxl
RG91YmxlOgorICAgIGNhc2UgVGV4dERlY29yYXRpb25TdHlsZTo6RG91YmxlOgogICAgICAgICBz
dHJva2VTdHlsZSA9IERvdWJsZVN0cm9rZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUZXh0
RGVjb3JhdGlvblN0eWxlRG90dGVkOgorICAgIGNhc2UgVGV4dERlY29yYXRpb25TdHlsZTo6RG90
dGVkOgogICAgICAgICBzdHJva2VTdHlsZSA9IERvdHRlZFN0cm9rZTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBUZXh0RGVjb3JhdGlvblN0eWxlRGFzaGVkOgorICAgIGNhc2UgVGV4dERlY29y
YXRpb25TdHlsZTo6RGFzaGVkOgogICAgICAgICBzdHJva2VTdHlsZSA9IERhc2hlZFN0cm9rZTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUZXh0RGVjb3JhdGlvblN0eWxlV2F2eToKKyAgICBj
YXNlIFRleHREZWNvcmF0aW9uU3R5bGU6Oldhdnk6CiAgICAgICAgIHN0cm9rZVN0eWxlID0gV2F2
eVN0cm9rZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjUyLDcgKzI1Miw3IEBAIFRleHRE
ZWNvcmF0aW9uUGFpbnRlcjo6VGV4dERlY29yYXRpb25QYWkKICAgICAsIG1fZGVjb3JhdGlvbnMg
eyBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+Ojpmcm9tUmF3KGRlY29yYXRpb25zKSB9CiAgICAg
LCBtX3dhdnlPZmZzZXQgeyB3YXZ5T2Zmc2V0RnJvbURlY29yYXRpb24oKSB9CiAgICAgLCBtX2lz
UHJpbnRpbmcgeyByZW5kZXJlci5kb2N1bWVudCgpLnByaW50aW5nKCkgfQotICAgICwgbV9zdHls
ZXMgeyBzdHlsZXMgPyAqV1RGTW92ZShzdHlsZXMpIDogc3R5bGVzRm9yUmVuZGVyZXIocmVuZGVy
ZXIsIGRlY29yYXRpb25zLCBpc0ZpcnN0TGluZSwgTk9QU0VVRE8pIH0KKyAgICAsIG1fc3R5bGVz
IHsgc3R5bGVzID8gKldURk1vdmUoc3R5bGVzKSA6IHN0eWxlc0ZvclJlbmRlcmVyKHJlbmRlcmVy
LCBkZWNvcmF0aW9ucywgaXNGaXJzdExpbmUsIFBzZXVkb0lkOjpOb25lKSB9CiAgICAgLCBtX2xp
bmVTdHlsZSB7IGlzRmlyc3RMaW5lID8gcmVuZGVyZXIuZmlyc3RMaW5lU3R5bGUoKSA6IHJlbmRl
cmVyLnN0eWxlKCkgfQogewogfQpAQCAtMjczLDIxICsyNzMsMjEgQEAgdm9pZCBUZXh0RGVjb3Jh
dGlvblBhaW50ZXI6OnBhaW50VGV4dERlYwogCiAgICAgICAgIGF1dG8gc3Ryb2tlU3R5bGUgPSB0
ZXh0RGVjb3JhdGlvblN0eWxlVG9TdHJva2VTdHlsZShzdHlsZSk7CiAKLSAgICAgICAgaWYgKHN0
eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGVXYXZ5KQorICAgICAgICBpZiAoc3R5bGUgPT0gVGV4
dERlY29yYXRpb25TdHlsZTo6V2F2eSkKICAgICAgICAgICAgIHN0cm9rZVdhdnlUZXh0RGVjb3Jh
dGlvbihtX2NvbnRleHQsIHN0YXJ0LCBlbmQsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzLCBtX2xp
bmVTdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSk7CiAgICAgICAgIGVsc2UgaWYgKGRlY29y
YXRpb24gPT0gVGV4dERlY29yYXRpb25VbmRlcmxpbmUgfHwgZGVjb3JhdGlvbiA9PSBUZXh0RGVj
b3JhdGlvbk92ZXJsaW5lKSB7CiAjaWYgRU5BQkxFKENTUzNfVEVYVF9ERUNPUkFUSU9OX1NLSVBf
SU5LKQogICAgICAgICAgICAgaWYgKChtX2xpbmVTdHlsZS50ZXh0RGVjb3JhdGlvblNraXAoKSA9
PSBUZXh0RGVjb3JhdGlvblNraXBJbmsgfHwgbV9saW5lU3R5bGUudGV4dERlY29yYXRpb25Ta2lw
KCkgPT0gVGV4dERlY29yYXRpb25Ta2lwQXV0bykgJiYgbV9pc0hvcml6b250YWwpIHsKICAgICAg
ICAgICAgICAgICBpZiAoIW1fY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCi0gICAgICAgICAg
ICAgICAgICAgIGRyYXdTa2lwSW5rVW5kZXJsaW5lKG1fY29udGV4dCwgKm1fZm9udCwgdGV4dFJ1
biwgdGV4dE9yaWdpbiwgbG9jYWxPcmlnaW4sIG9mZnNldCwgbV93aWR0aCwgbV9pc1ByaW50aW5n
LCBzdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlRG91YmxlLCBzdHJva2VTdHlsZSk7CisgICAg
ICAgICAgICAgICAgICAgIGRyYXdTa2lwSW5rVW5kZXJsaW5lKG1fY29udGV4dCwgKm1fZm9udCwg
dGV4dFJ1biwgdGV4dE9yaWdpbiwgbG9jYWxPcmlnaW4sIG9mZnNldCwgbV93aWR0aCwgbV9pc1By
aW50aW5nLCBzdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpEb3VibGUsIHN0cm9rZVN0eWxl
KTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRv
IHN1cHBvcnQgdGV4dC1kZWNvcmF0aW9uLXNraXA6IG5vbmUuCiAjZW5kaWYKLSAgICAgICAgICAg
ICAgICBtX2NvbnRleHQuZHJhd0xpbmVGb3JUZXh0KHN0YXJ0LCBtX3dpZHRoLCBtX2lzUHJpbnRp
bmcsIHN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGVEb3VibGUsIHN0cm9rZVN0eWxlKTsKKyAg
ICAgICAgICAgICAgICBtX2NvbnRleHQuZHJhd0xpbmVGb3JUZXh0KHN0YXJ0LCBtX3dpZHRoLCBt
X2lzUHJpbnRpbmcsIHN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OkRvdWJsZSwgc3Ryb2tl
U3R5bGUpOwogICAgICAgICAgICAgCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NF
UlQoZGVjb3JhdGlvbiA9PSBUZXh0RGVjb3JhdGlvbkxpbmVUaHJvdWdoKTsKLSAgICAgICAgICAg
IG1fY29udGV4dC5kcmF3TGluZUZvclRleHQoc3RhcnQsIG1fd2lkdGgsIG1faXNQcmludGluZywg
c3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZURvdWJsZSwgc3Ryb2tlU3R5bGUpOworICAgICAg
ICAgICAgbV9jb250ZXh0LmRyYXdMaW5lRm9yVGV4dChzdGFydCwgbV93aWR0aCwgbV9pc1ByaW50
aW5nLCBzdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpEb3VibGUsIHN0cm9rZVN0eWxlKTsK
ICAgICAgICAgfQogICAgIH07CiAKQEAgLTMzNiwxMyArMzM2LDEzIEBAIHZvaWQgVGV4dERlY29y
YXRpb25QYWludGVyOjpwYWludFRleHREZWMKICAgICAgICAgLy8gVGhlc2UgZGVjb3JhdGlvbnMg
c2hvdWxkIG1hdGNoIHRoZSB2aXN1YWwgb3ZlcmZsb3dzIGNvbXB1dGVkIGluIHZpc3VhbE92ZXJm
bG93Rm9yRGVjb3JhdGlvbnMoKS4KICAgICAgICAgaWYgKG1fZGVjb3JhdGlvbnMuY29udGFpbnMo
VGV4dERlY29yYXRpb25VbmRlcmxpbmUpKSB7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gY29t
cHV0ZVVuZGVybGluZU9mZnNldChtX2xpbmVTdHlsZS50ZXh0VW5kZXJsaW5lUG9zaXRpb24oKSwg
bV9saW5lU3R5bGUuZm9udE1ldHJpY3MoKSwgbV9pbmxpbmVUZXh0Qm94LCB0ZXh0RGVjb3JhdGlv
blRoaWNrbmVzcyk7Ci0gICAgICAgICAgICBmbG9hdCB3YXZ5T2Zmc2V0ID0gbV9zdHlsZXMudW5k
ZXJsaW5lU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZVdhdnkgPyBtX3dhdnlPZmZzZXQgOiAw
OworICAgICAgICAgICAgZmxvYXQgd2F2eU9mZnNldCA9IG1fc3R5bGVzLnVuZGVybGluZVN0eWxl
ID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkgPyBtX3dhdnlPZmZzZXQgOiAwOwogICAgICAg
ICAgICAgRmxvYXRQb2ludCBzdGFydCA9IGxvY2FsT3JpZ2luICsgRmxvYXRTaXplKDAsIG9mZnNl
dCArIHdhdnlPZmZzZXQpOwogICAgICAgICAgICAgRmxvYXRQb2ludCBlbmQgPSBsb2NhbE9yaWdp
biArIEZsb2F0U2l6ZShtX3dpZHRoLCBvZmZzZXQgKyB3YXZ5T2Zmc2V0KTsKICAgICAgICAgICAg
IHBhaW50RGVjb3JhdGlvbihUZXh0RGVjb3JhdGlvblVuZGVybGluZSwgbV9zdHlsZXMudW5kZXJs
aW5lU3R5bGUsIG1fc3R5bGVzLnVuZGVybGluZUNvbG9yLCBzdGFydCwgZW5kLCBvZmZzZXQpOwog
ICAgICAgICB9CiAgICAgICAgIGlmIChtX2RlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0
aW9uT3ZlcmxpbmUpKSB7Ci0gICAgICAgICAgICBmbG9hdCB3YXZ5T2Zmc2V0ID0gbV9zdHlsZXMu
b3ZlcmxpbmVTdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlV2F2eSA/IG1fd2F2eU9mZnNldCA6
IDA7CisgICAgICAgICAgICBmbG9hdCB3YXZ5T2Zmc2V0ID0gbV9zdHlsZXMub3ZlcmxpbmVTdHls
ZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5ID8gbV93YXZ5T2Zmc2V0IDogMDsKICAgICAg
ICAgICAgIEZsb2F0UG9pbnQgc3RhcnQgPSBsb2NhbE9yaWdpbiAtIEZsb2F0U2l6ZSgwLCB3YXZ5
T2Zmc2V0KTsKICAgICAgICAgICAgIEZsb2F0UG9pbnQgZW5kID0gbG9jYWxPcmlnaW4gKyBGbG9h
dFNpemUobV93aWR0aCwgLXdhdnlPZmZzZXQpOwogICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9u
KFRleHREZWNvcmF0aW9uT3ZlcmxpbmUsIG1fc3R5bGVzLm92ZXJsaW5lU3R5bGUsIG1fc3R5bGVz
Lm92ZXJsaW5lQ29sb3IsIHN0YXJ0LCBlbmQsIDApOwpAQCAtNDAxLDcgKzQwMSw3IEBAIHN0YXRp
YyB2b2lkIGNvbGxlY3RTdHlsZXNGb3JSZW5kZXJlcihUZXgKICAgICB9OwogCiAgICAgYXV0byBz
dHlsZUZvclJlbmRlcmVyID0gWyZdIChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKSAtPiBj
b25zdCBSZW5kZXJTdHlsZSYgewotICAgICAgICBpZiAocHNldWRvSWQgIT0gTk9QU0VVRE8gJiYg
cmVuZGVyZXIuc3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShwc2V1ZG9JZCkpIHsKKyAgICAgICAgaWYg
KHBzZXVkb0lkICE9IFBzZXVkb0lkOjpOb25lICYmIHJlbmRlcmVyLnN0eWxlKCkuaGFzUHNldWRv
U3R5bGUocHNldWRvSWQpKSB7CiAgICAgICAgICAgICBpZiAoaXM8UmVuZGVyVGV4dD4ocmVuZGVy
ZXIpKQogICAgICAgICAgICAgICAgIHJldHVybiAqZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVy
ZXIpLmdldENhY2hlZFBzZXVkb1N0eWxlKHBzZXVkb0lkKTsKICAgICAgICAgICAgIHJldHVybiAq
ZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIpLmdldENhY2hlZFBzZXVkb1N0eWxlKHBz
ZXVkb0lkKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBh
aW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29y
YXRpb25QYWludGVyLmgJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcs
NyBAQCBwdWJsaWM6CiAgICAgICAgIFRleHREZWNvcmF0aW9uU3R5bGUgbGluZXRocm91Z2hTdHls
ZTsKICAgICB9OwogICAgIC8vIEZJWE1FOiBNYWtlIHJlcXVlc3RlZERlY29yYXRpb25zIGFuIE9w
dGlvblNldDxUZXh0RGVjb3JhdGlvbj4uIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3Njg0ND4uCi0gICAgc3RhdGljIFN0eWxlcyBzdHlsZXNGb3JSZW5kZXJl
cihjb25zdCBSZW5kZXJPYmplY3QmLCB1bnNpZ25lZCByZXF1ZXN0ZWREZWNvcmF0aW9ucywgYm9v
bCBmaXJzdExpbmVTdHlsZSA9IGZhbHNlLCBQc2V1ZG9JZCA9IE5PUFNFVURPKTsKKyAgICBzdGF0
aWMgU3R5bGVzIHN0eWxlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCYsIHVuc2lnbmVk
IHJlcXVlc3RlZERlY29yYXRpb25zLCBib29sIGZpcnN0TGluZVN0eWxlID0gZmFsc2UsIFBzZXVk
b0lkID0gUHNldWRvSWQ6Ok5vbmUpOwogCiBwcml2YXRlOgogICAgIEdyYXBoaWNzQ29udGV4dCYg
bV9jb250ZXh0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdD
b250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJl
YWtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsOCArMTEx
LDggQEAgcHVibGljOgogICAgICAgICAsIG1fcmVuZGVyVGV4dEluZm8oaW5SZW5kZXJUZXh0SW5m
bykKICAgICAgICAgLCBtX2xhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUoaW5MYXN0RmxvYXRGcm9t
UHJldmlvdXNMaW5lKQogICAgICAgICAsIG1fd2lkdGgobGluZVdpZHRoKQotICAgICAgICAsIG1f
Y3VycldTKE5PUk1BTCkKLSAgICAgICAgLCBtX2xhc3RXUyhOT1JNQUwpCisgICAgICAgICwgbV9j
dXJyV1MoV2hpdGVTcGFjZTo6Tm9ybWFsKQorICAgICAgICAsIG1fbGFzdFdTKFdoaXRlU3BhY2U6
Ok5vcm1hbCkKICAgICAgICAgLCBtX3ByZXNlcnZlc05ld2xpbmUoZmFsc2UpCiAgICAgICAgICwg
bV9hdFN0YXJ0KHRydWUpCiAgICAgICAgICwgbV9pZ25vcmluZ1NwYWNlcyhmYWxzZSkKQEAgLTE2
MSw3ICsxNjEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyTGluZUJyZWFrSWZGaXRzT25M
aW5lKGJvb2wgaWdub3JpbmdUcmFpbGluZ1NwYWNlID0gZmFsc2UpCiAgICAgewotICAgICAgICBp
ZiAobV93aWR0aC5maXRzT25MaW5lKGlnbm9yaW5nVHJhaWxpbmdTcGFjZSkgfHwgbV9sYXN0V1Mg
PT0gTk9XUkFQIHx8IG1faGFuZ3NBdEVuZCkKKyAgICAgICAgaWYgKG1fd2lkdGguZml0c09uTGlu
ZShpZ25vcmluZ1RyYWlsaW5nU3BhY2UpIHx8IG1fbGFzdFdTID09IFdoaXRlU3BhY2U6Ok5vV3Jh
cCB8fCBtX2hhbmdzQXRFbmQpCiAgICAgICAgICAgICBtX2xpbmVCcmVha0hpc3RvcnkuY2xlYXIo
KTsKICAgICAgICAgbV9oYW5nc0F0RW5kID0gZmFsc2U7CiAgICAgfQpAQCAtMjY4LDEzICsyNjgs
MTMgQEAgcHJpdmF0ZToKIAogICAgIExpbmVXaWR0aCBtX3dpZHRoOwogCi0gICAgRVdoaXRlU3Bh
Y2UgbV9jdXJyV1M7Ci0gICAgRVdoaXRlU3BhY2UgbV9sYXN0V1M7CisgICAgV2hpdGVTcGFjZSBt
X2N1cnJXUzsKKyAgICBXaGl0ZVNwYWNlIG1fbGFzdFdTOwogCiAgICAgYm9vbCBtX3ByZXNlcnZl
c05ld2xpbmU7CiAgICAgYm9vbCBtX2F0U3RhcnQ7CiAKLSAgICAvLyBUaGlzIHZhcmlhYmxlIGlz
IHVzZWQgb25seSBpZiB3aGl0ZXNwYWNlIGlzbid0IHNldCB0byBQUkUsIGFuZCBpdCB0ZWxscyB1
cyB3aGV0aGVyCisgICAgLy8gVGhpcyB2YXJpYWJsZSBpcyB1c2VkIG9ubHkgaWYgd2hpdGVzcGFj
ZSBpc24ndCBzZXQgdG8gV2hpdGVTcGFjZTo6UHJlLCBhbmQgaXQgdGVsbHMgdXMgd2hldGhlcgog
ICAgIC8vIG9yIG5vdCB3ZSBhcmUgY3VycmVudGx5IGlnbm9yaW5nIHdoaXRlc3BhY2UuCiAgICAg
Ym9vbCBtX2lnbm9yaW5nU3BhY2VzOwogCkBAIC0zNjUsNyArMzY1LDcgQEAgaW5saW5lIHZvaWQg
QnJlYWtpbmdDb250ZXh0OjpoYW5kbGVCUihDbAogICAgICAgICAvLyBJZiB3ZSB3ZXJlIHByZWNl
ZGVkIGJ5IGNvbGxhcHNpbmcgc3BhY2UgYW5kIGFyZSBpbiBhIHJpZ2h0LWFsaWduZWQgY29udGFp
bmVyIHdlIG5lZWQgdG8gZW5zdXJlIHRoZSBzcGFjZSBnZXRzCiAgICAgICAgIC8vIGNvbGxhcHNl
ZCBhd2F5IHNvIHRoYXQgaXQgZG9lc24ndCBwdXNoIHRoZSB0ZXh0IG91dCBmcm9tIHRoZSBjb250
YWluZXIncyByaWdodC1oYW5kIGVkZ2UuCiAgICAgICAgIC8vIEZJWE1FOiBEbyB0aGlzIHJlZ2Fy
ZGxlc3Mgb2YgdGhlIGNvbnRhaW5lcidzIGFsaWdubWVudCAtIHdpbGwgcmVxdWlyZSByZWJhc2Vs
aW5pbmcgYSBsb3Qgb2YgdGVzdCByZXN1bHRzLgotICAgICAgICBlbHNlIGlmIChtX2lnbm9yaW5n
U3BhY2VzICYmIChtX2Jsb2NrU3R5bGUudGV4dEFsaWduKCkgPT0gUklHSFQgfHwgbV9ibG9ja1N0
eWxlLnRleHRBbGlnbigpID09IFdFQktJVF9SSUdIVCkpCisgICAgICAgIGVsc2UgaWYgKG1faWdu
b3JpbmdTcGFjZXMgJiYgKG1fYmxvY2tTdHlsZS50ZXh0QWxpZ24oKSA9PSBUZXh0QWxpZ25Nb2Rl
OjpSaWdodCB8fCBtX2Jsb2NrU3R5bGUudGV4dEFsaWduKCkgPT0gVGV4dEFsaWduTW9kZTo6V2Vi
S2l0UmlnaHQpKQogICAgICAgICAgICAgbV9saW5lV2hpdGVzcGFjZUNvbGxhcHNpbmdTdGF0ZS5z
dG9wSWdub3JpbmdTcGFjZXMoSW5saW5lSXRlcmF0b3IoMCwgbV9jdXJyZW50LnJlbmRlcmVyKCks
IG1fY3VycmVudC5vZmZzZXQoKSkpOwogCiAgICAgICAgIGlmICghbV9saW5lSW5mby5pc0VtcHR5
KCkpCkBAIC00MzcsNyArNDM3LDcgQEAgaW5saW5lIHZvaWQgQnJlYWtpbmdDb250ZXh0OjpoYW5k
bGVPdXRPZgogICAgIGlmICghaXNJbmxpbmVUeXBlKQogICAgICAgICBtX2Jsb2NrLnNldFN0YXRp
Y0lubGluZVBvc2l0aW9uRm9yQ2hpbGQoYm94LCBtX2Jsb2NrLmxvZ2ljYWxIZWlnaHQoKSwgbV9i
bG9jay5zdGFydE9mZnNldEZvckNvbnRlbnQobV9ibG9jay5sb2dpY2FsSGVpZ2h0KCkpKTsKICAg
ICBlbHNlIHsKLSAgICAgICAgLy8gSWYgb3VyIG9yaWdpbmFsIGRpc3BsYXkgd2FzIGFuIElOTElO
RSB0eXBlLCB0aGVuIHdlIGNhbiBkZXRlcm1pbmUgb3VyIHN0YXRpYyB5IHBvc2l0aW9uIG5vdy4K
KyAgICAgICAgLy8gSWYgb3VyIG9yaWdpbmFsIGRpc3BsYXkgd2FzIGFuIERpc3BsYXlUeXBlOjpJ
bmxpbmUgdHlwZSwgdGhlbiB3ZSBjYW4gZGV0ZXJtaW5lIG91ciBzdGF0aWMgeSBwb3NpdGlvbiBu
b3cuCiAgICAgICAgIGJveC5sYXllcigpLT5zZXRTdGF0aWNCbG9ja1Bvc2l0aW9uKG1fYmxvY2su
bG9naWNhbEhlaWdodCgpKTsKICAgICB9CiAKQEAgLTc2Miw3ICs3NjIsNyBAQCBpbmxpbmUgYm9v
bCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQoCiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlID0gbGluZVN0eWxlKHJlbmRlclRleHQsIG1fbGluZUluZm8pOwogICAgIGNvbnN0IEZvbnRD
YXNjYWRlJiBmb250ID0gc3R5bGUuZm9udENhc2NhZGUoKTsKICAgICBib29sIGlzRml4ZWRQaXRj
aCA9IGZvbnQuaXNGaXhlZFBpdGNoKCk7Ci0gICAgYm9vbCBjYW5IeXBoZW5hdGUgPSBzdHlsZS5o
eXBoZW5zKCkgPT0gSHlwaGVuc0F1dG8gJiYgV2ViQ29yZTo6Y2FuSHlwaGVuYXRlKHN0eWxlLmxv
Y2FsZSgpKTsKKyAgICBib29sIGNhbkh5cGhlbmF0ZSA9IHN0eWxlLmh5cGhlbnMoKSA9PSBIeXBo
ZW5zOjpBdXRvICYmIFdlYkNvcmU6OmNhbkh5cGhlbmF0ZShzdHlsZS5sb2NhbGUoKSk7CiAgICAg
Ym9vbCBjYW5IYW5nUHVuY3R1YXRpb25BdFN0YXJ0ID0gc3R5bGUuaGFuZ2luZ1B1bmN0dWF0aW9u
KCkgJiBGaXJzdEhhbmdpbmdQdW5jdHVhdGlvbjsKICAgICBib29sIGNhbkhhbmdQdW5jdHVhdGlv
bkF0RW5kID0gc3R5bGUuaGFuZ2luZ1B1bmN0dWF0aW9uKCkgJiBMYXN0SGFuZ2luZ1B1bmN0dWF0
aW9uOwogICAgIGJvb2wgY2FuSGFuZ1N0b3BPckNvbW1hQXRMaW5lRW5kID0gc3R5bGUuaGFuZ2lu
Z1B1bmN0dWF0aW9uKCkgJiBBbGxvd0VuZEhhbmdpbmdQdW5jdHVhdGlvbjsKQEAgLTc3OCw3ICs3
NzgsNyBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQoCiAgICAgYm9v
bCBicmVha05CU1AgPSBtX2F1dG9XcmFwICYmIG1fY3VycmVudFN0eWxlLT5uYnNwTW9kZSgpID09
IE5CU1BNb2RlOjpTcGFjZTsKICAgICAvLyBBdXRvLXdyYXBwaW5nIHRleHQgc2hvdWxkIHdyYXAg
aW4gdGhlIG1pZGRsZSBvZiBhIHdvcmQgb25seSBpZiBpdCBjb3VsZCBub3Qgd3JhcCBiZWZvcmUg
dGhlIHdvcmQsCiAgICAgLy8gd2hpY2ggaXMgb25seSBwb3NzaWJsZSBpZiB0aGUgd29yZCBpcyB0
aGUgZmlyc3QgdGhpbmcgb24gdGhlIGxpbmUuCi0gICAgYm9vbCBicmVha1dvcmRzID0gbV9jdXJy
ZW50U3R5bGUtPmJyZWFrV29yZHMoKSAmJiAoKG1fYXV0b1dyYXAgJiYgKCFtX3dpZHRoLmNvbW1p
dHRlZFdpZHRoKCkgJiYgIW1fd2lkdGguaGFzQ29tbWl0dGVkUmVwbGFjZWQoKSkpIHx8IG1fY3Vy
cldTID09IFBSRSk7CisgICAgYm9vbCBicmVha1dvcmRzID0gbV9jdXJyZW50U3R5bGUtPmJyZWFr
V29yZHMoKSAmJiAoKG1fYXV0b1dyYXAgJiYgKCFtX3dpZHRoLmNvbW1pdHRlZFdpZHRoKCkgJiYg
IW1fd2lkdGguaGFzQ29tbWl0dGVkUmVwbGFjZWQoKSkpIHx8IG1fY3VycldTID09IFdoaXRlU3Bh
Y2U6OlByZSk7CiAgICAgYm9vbCBtaWRXb3JkQnJlYWsgPSBmYWxzZTsKICAgICBib29sIGJyZWFr
QWxsID0gbV9jdXJyZW50U3R5bGUtPndvcmRCcmVhaygpID09IFdvcmRCcmVhazo6QnJlYWtBbGwg
JiYgbV9hdXRvV3JhcDsKICAgICBib29sIGtlZXBBbGxXb3JkcyA9IG1fY3VycmVudFN0eWxlLT53
b3JkQnJlYWsoKSA9PSBXb3JkQnJlYWs6OktlZXBBbGw7CkBAIC04MzAsNyArODMwLDcgQEAgaW5s
aW5lIGJvb2wgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0KAogICAgICAgICBpZiAoIW1fY29s
bGFwc2VXaGl0ZVNwYWNlIHx8ICFtX2N1cnJlbnRDaGFyYWN0ZXJJc1NwYWNlKQogICAgICAgICAg
ICAgbV9saW5lSW5mby5zZXRFbXB0eShmYWxzZSwgJm1fYmxvY2ssICZtX3dpZHRoKTsKIAotICAg
ICAgICBpZiAoYyA9PSBzb2Z0SHlwaGVuICYmIG1fYXV0b1dyYXAgJiYgIWh5cGhlbldpZHRoICYm
IHN0eWxlLmh5cGhlbnMoKSAhPSBIeXBoZW5zTm9uZSkgeworICAgICAgICBpZiAoYyA9PSBzb2Z0
SHlwaGVuICYmIG1fYXV0b1dyYXAgJiYgIWh5cGhlbldpZHRoICYmIHN0eWxlLmh5cGhlbnMoKSAh
PSBIeXBoZW5zOjpOb25lKSB7CiAgICAgICAgICAgICBoeXBoZW5XaWR0aCA9IG1lYXN1cmVIeXBo
ZW5XaWR0aChyZW5kZXJUZXh0LCBmb250LCAmZmFsbGJhY2tGb250cyk7CiAgICAgICAgICAgICBt
X3dpZHRoLmFkZFVuY29tbWl0dGVkV2lkdGgoaHlwaGVuV2lkdGgpOwogICAgICAgICB9CkBAIC04
MzksNyArODM5LDcgQEAgaW5saW5lIGJvb2wgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0KAog
CiAgICAgICAgIG1fY3VycmVudENoYXJhY3RlcklzV1MgPSBtX2N1cnJlbnRDaGFyYWN0ZXJJc1Nw
YWNlIHx8IChicmVha05CU1AgJiYgYyA9PSBub0JyZWFrU3BhY2UpOwogCi0gICAgICAgIGlmICgo
YnJlYWtBbGwgfHwgYnJlYWtXb3JkcykgJiYgIW1pZFdvcmRCcmVhayAmJiAoIW1fY3VycmVudENo
YXJhY3RlcklzU3BhY2UgfHwgc3R5bGUud2hpdGVTcGFjZSgpICE9IFBSRV9XUkFQKSkgeworICAg
ICAgICBpZiAoKGJyZWFrQWxsIHx8IGJyZWFrV29yZHMpICYmICFtaWRXb3JkQnJlYWsgJiYgKCFt
X2N1cnJlbnRDaGFyYWN0ZXJJc1NwYWNlIHx8IHN0eWxlLndoaXRlU3BhY2UoKSAhPSBXaGl0ZVNw
YWNlOjpQcmVXcmFwKSkgewogICAgICAgICAgICAgd3JhcFcgKz0gY2hhcldpZHRoOwogICAgICAg
ICAgICAgYm9vbCBtaWRXb3JkQnJlYWtJc0JlZm9yZVN1cnJvZ2F0ZVBhaXIgPSBVMTZfSVNfTEVB
RChjKSAmJiBVMTZfSVNfVFJBSUwocmVuZGVyVGV4dC5jaGFyYWN0ZXJBdChtX2N1cnJlbnQub2Zm
c2V0KCkgKyAxKSk7CiAgICAgICAgICAgICBjaGFyV2lkdGggPSB0ZXh0V2lkdGgocmVuZGVyVGV4
dCwgbV9jdXJyZW50Lm9mZnNldCgpLCBtaWRXb3JkQnJlYWtJc0JlZm9yZVN1cnJvZ2F0ZVBhaXIg
PyAyIDogMSwgZm9udCwgbV93aWR0aC5jb21taXR0ZWRXaWR0aCgpICsgd3JhcFcsIGlzRml4ZWRQ
aXRjaCwgbV9jb2xsYXBzZVdoaXRlU3BhY2UsIGZhbGxiYWNrRm9udHMsIHRleHRMYXlvdXQpOwpA
QCAtODQ3LDggKzg0Nyw4IEBAIGlubGluZSBib29sIEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4
dCgKICAgICAgICAgfQogCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVh
a2FibGVQb3NpdGlvbiA9IG1fY3VycmVudC5uZXh0QnJlYWthYmxlUG9zaXRpb24oKTsKLSAgICAg
ICAgYm9vbCBiZXR3ZWVuV29yZHMgPSBjID09ICdcbicgfHwgKG1fY3VycldTICE9IFBSRSAmJiAh
bV9hdFN0YXJ0ICYmIGlzQnJlYWthYmxlKG1fcmVuZGVyVGV4dEluZm8ubGluZUJyZWFrSXRlcmF0
b3IsIG1fY3VycmVudC5vZmZzZXQoKSwgbmV4dEJyZWFrYWJsZVBvc2l0aW9uLCBicmVha05CU1As
IGNhblVzZUxpbmVCcmVha1Nob3J0Y3V0LCBrZWVwQWxsV29yZHMpCi0gICAgICAgICAgICAmJiAo
c3R5bGUuaHlwaGVucygpICE9IEh5cGhlbnNOb25lIHx8IChtX2N1cnJlbnQucHJldmlvdXNJblNh
bWVOb2RlKCkgIT0gc29mdEh5cGhlbikpKTsKKyAgICAgICAgYm9vbCBiZXR3ZWVuV29yZHMgPSBj
ID09ICdcbicgfHwgKG1fY3VycldTICE9IFdoaXRlU3BhY2U6OlByZSAmJiAhbV9hdFN0YXJ0ICYm
IGlzQnJlYWthYmxlKG1fcmVuZGVyVGV4dEluZm8ubGluZUJyZWFrSXRlcmF0b3IsIG1fY3VycmVu
dC5vZmZzZXQoKSwgbmV4dEJyZWFrYWJsZVBvc2l0aW9uLCBicmVha05CU1AsIGNhblVzZUxpbmVC
cmVha1Nob3J0Y3V0LCBrZWVwQWxsV29yZHMpCisgICAgICAgICAgICAmJiAoc3R5bGUuaHlwaGVu
cygpICE9IEh5cGhlbnM6Ok5vbmUgfHwgKG1fY3VycmVudC5wcmV2aW91c0luU2FtZU5vZGUoKSAh
PSBzb2Z0SHlwaGVuKSkpOwogICAgICAgICBtX2N1cnJlbnQuc2V0TmV4dEJyZWFrYWJsZVBvc2l0
aW9uKG5leHRCcmVha2FibGVQb3NpdGlvbik7CiAgICAgICAgIAogICAgICAgICBpZiAoY2FuSGFu
Z1N0b3BPckNvbW1hQXRMaW5lRW5kICYmIHJlbmRlclRleHQuaXNIYW5nYWJsZVN0b3BPckNvbW1h
KGMpICYmIG1fd2lkdGguZml0c09uTGluZSgpKSB7CkBAIC05NDcsNyArOTQ3LDcgQEAgaW5saW5l
IGJvb2wgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0KAogICAgICAgICAgICAgICAgICAgICAg
ICAgd29yZE1lYXN1cmVtZW50LmVuZE9mZnNldCA9IG1fbGluZUJyZWFrSGlzdG9yeS5vZmZzZXQo
KTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBp
ZiB0aGUgbGFzdCBicmVha2luZyBwb3NpdGlvbiBpcyBhIHNvZnQtaHlwaGVuLgotICAgICAgICAg
ICAgICAgICAgICBpZiAoIWh5cGhlbmF0ZWQgJiYgc3R5bGUuaHlwaGVucygpICE9IEh5cGhlbnNO
b25lKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghaHlwaGVuYXRlZCAmJiBzdHlsZS5oeXBo
ZW5zKCkgIT0gSHlwaGVuczo6Tm9uZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gbGFzdEJyZWFraW5nUG9zaXRvbjsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXJBdEJyZWFraW5nUG9zaXRpb24gPSBu
dWxscHRyOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fbGluZUJyZWFrSGlzdG9yeS5v
ZmZzZXQoKSB8fCBtX2xpbmVCcmVha0hpc3RvcnkubmV4dEJyZWFrYWJsZVBvc2l0aW9uKCkpIHsK
QEAgLTEwNzEsNyArMTA3MSw3IEBAIGlubGluZSBib29sIEJyZWFraW5nQ29udGV4dDo6aGFuZGxl
VGV4dCgKICAgICAgICAgICAgIC8vIFNwYWNlcyBhZnRlciByaWdodC1hbGlnbmVkIHRleHQgYW5k
IGJlZm9yZSBhIGxpbmUtYnJlYWsgZ2V0IGNvbGxhcHNlZCBhd2F5IGNvbXBsZXRlbHkgc28gdGhh
dCB0aGUgdHJhaWxpbmcKICAgICAgICAgICAgIC8vIHNwYWNlIGRvZXNuJ3Qgc2VlbSB0byBwdXNo
IHRoZSB0ZXh0IG91dCBmcm9tIHRoZSByaWdodC1oYW5kIGVkZ2UuCiAgICAgICAgICAgICAvLyBG
SVhNRTogRG8gdGhpcyByZWdhcmRsZXNzIG9mIHRoZSBjb250YWluZXIncyBhbGlnbm1lbnQgLSB3
aWxsIHJlcXVpcmUgcmViYXNlbGluaW5nIGEgbG90IG9mIHRlc3QgcmVzdWx0cy4KLSAgICAgICAg
ICAgIGlmIChtX25leHRPYmplY3QgJiYgbV9zdGFydE9mSWdub3JlZFNwYWNlcy5vZmZzZXQoKSAm
JiBtX25leHRPYmplY3QtPmlzQlIoKSAmJiAobV9ibG9ja1N0eWxlLnRleHRBbGlnbigpID09IFJJ
R0hUIHx8IG1fYmxvY2tTdHlsZS50ZXh0QWxpZ24oKSA9PSBXRUJLSVRfUklHSFQpKSB7CisgICAg
ICAgICAgICBpZiAobV9uZXh0T2JqZWN0ICYmIG1fc3RhcnRPZklnbm9yZWRTcGFjZXMub2Zmc2V0
KCkgJiYgbV9uZXh0T2JqZWN0LT5pc0JSKCkgJiYgKG1fYmxvY2tTdHlsZS50ZXh0QWxpZ24oKSA9
PSBUZXh0QWxpZ25Nb2RlOjpSaWdodCB8fCBtX2Jsb2NrU3R5bGUudGV4dEFsaWduKCkgPT0gVGV4
dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQpKSB7CiAgICAgICAgICAgICAgICAgbV9zdGFydE9mSWdu
b3JlZFNwYWNlcy5zZXRPZmZzZXQobV9zdGFydE9mSWdub3JlZFNwYWNlcy5vZmZzZXQoKSAtIDEp
OwogICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlJ3MganVzdCBhIHNpbmdsZSB0cmFpbGluZyBz
cGFjZSBzdGFydCBpZ25vcmluZyBpdCBub3cgc28gaXQgY29sbGFwc2VzIGF3YXkuCiAgICAgICAg
ICAgICAgICAgaWYgKG1fY3VycmVudC5vZmZzZXQoKSA9PSByZW5kZXJUZXh0LnRleHQoKS5sZW5n
dGgoKSAtIDEpCkBAIC0xMTMwLDcgKzExMzAsNyBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRl
eHQ6OmhhbmRsZVRleHQoCiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogCi0gICAgICAgIGlm
ICghaHlwaGVuYXRlZCAmJiBtX2xpbmVCcmVha0hpc3RvcnkucHJldmlvdXNJblNhbWVOb2RlKCkg
PT0gc29mdEh5cGhlbiAmJiBzdHlsZS5oeXBoZW5zKCkgIT0gSHlwaGVuc05vbmUpIHsKKyAgICAg
ICAgaWYgKCFoeXBoZW5hdGVkICYmIG1fbGluZUJyZWFrSGlzdG9yeS5wcmV2aW91c0luU2FtZU5v
ZGUoKSA9PSBzb2Z0SHlwaGVuICYmIHN0eWxlLmh5cGhlbnMoKSAhPSBIeXBoZW5zOjpOb25lKSB7
CiAgICAgICAgICAgICBoeXBoZW5hdGVkID0gdHJ1ZTsKICAgICAgICAgICAgIG1fYXRFbmQgPSB0
cnVlOwogICAgICAgICB9CkBAIC0xMTQ3LDcgKzExNDcsNyBAQCBpbmxpbmUgYm9vbCB0ZXh0QmVn
aW5zV2l0aEJyZWFrYWJsZVBvc2l0CiBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmNhbkJy
ZWFrQXRUaGlzUG9zaXRpb24oKQogewogICAgIC8vIElmIHdlIGFyZSBuby13cmFwIGFuZCBoYXZl
IGZvdW5kIGEgbGluZS1icmVha2luZyBvcHBvcnR1bml0eSBhbHJlYWR5IHRoZW4gd2Ugc2hvdWxk
IHRha2UgaXQuCi0gICAgaWYgKG1fd2lkdGguY29tbWl0dGVkV2lkdGgoKSAmJiAhbV93aWR0aC5m
aXRzT25MaW5lKG1fY3VycmVudENoYXJhY3RlcklzU3BhY2UpICYmIG1fY3VycldTID09IE5PV1JB
UCkKKyAgICBpZiAobV93aWR0aC5jb21taXR0ZWRXaWR0aCgpICYmICFtX3dpZHRoLmZpdHNPbkxp
bmUobV9jdXJyZW50Q2hhcmFjdGVySXNTcGFjZSkgJiYgbV9jdXJyV1MgPT0gV2hpdGVTcGFjZTo6
Tm9XcmFwKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIEF2b2lkIGJyZWFraW5nIG9u
IGVtcHR5IGlubGluZXMuCkBAIC0xMjU3LDcgKzEyNTcsNyBAQCBpbmxpbmUgSW5saW5lSXRlcmF0
b3IgQnJlYWtpbmdDb250ZXh0OjpoCiAgICAgaWYgKG1fbGluZUJyZWFrSGlzdG9yeS5jdXJyZW50
KCkgPT0gbV9yZXNvbHZlci5wb3NpdGlvbigpKSB7CiAgICAgICAgIGlmICghbV9saW5lQnJlYWtI
aXN0b3J5LnJlbmRlcmVyKCkgfHwgIW1fbGluZUJyZWFrSGlzdG9yeS5yZW5kZXJlcigpLT5pc0JS
KCkpIHsKICAgICAgICAgICAgIC8vIHdlIGp1c3QgYWRkIGFzIG11Y2ggYXMgcG9zc2libGUKLSAg
ICAgICAgICAgIGlmIChtX2Jsb2NrU3R5bGUud2hpdGVTcGFjZSgpID09IFBSRSAmJiAhbV9jdXJy
ZW50Lm9mZnNldCgpKSB7CisgICAgICAgICAgICBpZiAobV9ibG9ja1N0eWxlLndoaXRlU3BhY2Uo
KSA9PSBXaGl0ZVNwYWNlOjpQcmUgJiYgIW1fY3VycmVudC5vZmZzZXQoKSkgewogICAgICAgICAg
ICAgICAgIGlmIChtX2xhc3RPYmplY3QpCiAgICAgICAgICAgICAgICAgICAgIGNvbW1pdExpbmVC
cmVha0F0Q3VycmVudFdpZHRoKCptX2xhc3RPYmplY3QsIG1fbGFzdE9iamVjdC0+aXNUZXh0KCkg
PyBtX2xhc3RPYmplY3QtPmxlbmd0aCgpIDogMCk7CiAgICAgICAgICAgICAgICAgZWxzZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUlubGluZUhlYWRlcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lSW5saW5lSGVhZGVy
cy5oCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9M
aW5lSW5saW5lSGVhZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIGlubGlu
ZSBib29sIHNob3VsZENvbGxhcHNlV2hpdGVTcGFjZShjb24KICAgICAvLyBJZiBhIHNwYWNlIChV
KzAwMjApIGF0IHRoZSBlbmQgb2YgYSBsaW5lIGhhcyAnd2hpdGUtc3BhY2UnIHNldCB0byAnbm9y
bWFsJywgJ25vd3JhcCcsIG9yICdwcmUtbGluZScsIGl0IGlzIGFsc28gcmVtb3ZlZC4KICAgICAv
LyBJZiBzcGFjZXMgKFUrMDAyMCkgb3IgdGFicyAoVSswMDA5KSBhdCB0aGUgZW5kIG9mIGEgbGlu
ZSBoYXZlICd3aGl0ZS1zcGFjZScgc2V0IHRvICdwcmUtd3JhcCcsIFVBcyBtYXkgdmlzdWFsbHkg
Y29sbGFwc2UgdGhlbS4KICAgICByZXR1cm4gc3R5bGUtPmNvbGxhcHNlV2hpdGVTcGFjZSgpCi0g
ICAgICAgIHx8ICh3aGl0ZXNwYWNlUG9zaXRpb24gPT0gVHJhaWxpbmdXaGl0ZXNwYWNlICYmIHN0
eWxlLT53aGl0ZVNwYWNlKCkgPT0gUFJFX1dSQVAgJiYgKCFsaW5lSW5mby5pc0VtcHR5KCkgfHwg
IWxpbmVJbmZvLnByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSgpKSk7CisgICAgICAgIHx8ICh3aGl0
ZXNwYWNlUG9zaXRpb24gPT0gVHJhaWxpbmdXaGl0ZXNwYWNlICYmIHN0eWxlLT53aGl0ZVNwYWNl
KCkgPT0gV2hpdGVTcGFjZTo6UHJlV3JhcCAmJiAoIWxpbmVJbmZvLmlzRW1wdHkoKSB8fCAhbGlu
ZUluZm8ucHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KCkpKTsKIH0KIAogaW5saW5lIGJvb2wgc2tp
cE5vbkJyZWFraW5nU3BhY2UoY29uc3QgSW5saW5lSXRlcmF0b3ImIGl0LCBjb25zdCBMaW5lSW5m
byYgbGluZUluZm8pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lV2lk
dGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVX
aWR0aC5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9s
aW5lL0xpbmVXaWR0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGlj
IGJvb2wgbmV3RmxvYXRTaHJpbmtzTGluZShjb25zdCBGbAogCiAgICAgLy8gaW5pdGlhbC1sZXR0
ZXIgZmxvYXQgYWx3YXlzIHNocmlua3MgdGhlIGZpcnN0IGxpbmUuCiAgICAgY29uc3QgYXV0byYg
c3R5bGUgPSBuZXdGbG9hdC5yZW5kZXJlcigpLnN0eWxlKCk7Ci0gICAgaWYgKGlzRmlyc3RMaW5l
ICYmIHN0eWxlLnN0eWxlVHlwZSgpID09IEZJUlNUX0xFVFRFUiAmJiAhc3R5bGUuaW5pdGlhbExl
dHRlcigpLmlzRW1wdHkoKSkKKyAgICBpZiAoaXNGaXJzdExpbmUgJiYgc3R5bGUuc3R5bGVUeXBl
KCkgPT0gUHNldWRvSWQ6OkZpcnN0TGV0dGVyICYmICFzdHlsZS5pbml0aWFsTGV0dGVyKCkuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICByZXR1cm4gZmFsc2U7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhPcGVyYXRvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoT3BlcmF0b3IuY3Bw
CShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01h
dGhPcGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwOCw3ICs3MDgsNyBAQCB2b2lkIE1h
dGhPcGVyYXRvcjo6cGFpbnRIb3Jpem9udGFsR2x5cGhBCiAKIHZvaWQgTWF0aE9wZXJhdG9yOjpw
YWludChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewotICAgIGlmIChpbmZvLmNvbnRleHQoKS5wYWludGlu
Z0Rpc2FibGVkKCkgfHwgaW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBzdHls
ZS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAoaW5mby5jb250ZXh0KCkucGFpbnRp
bmdEaXNhYmxlZCgpIHx8IGluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQgfHwgc3R5
bGUudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIE1ha2UgYSBjb3B5IG9mIHRoZSBQYWludEluZm8gYmVjYXVzZSBhcHBseVRyYW5z
Zm9ybSB3aWxsIG1vZGlmeSBpdHMgcmVjdC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCShyZXZpc2lv
biAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEZyYWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU1LDcgKzI1NSw3IEBAIHZvaWQgUmVu
ZGVyTWF0aE1MRnJhY3Rpb246OnBhaW50KFBhaW50SW4KIHsKICAgICBSZW5kZXJNYXRoTUxCbG9j
azo6cGFpbnQoaW5mbywgcGFpbnRPZmZzZXQpOwogICAgIExheW91dFVuaXQgdGhpY2tuZXNzID0g
bGluZVRoaWNrbmVzcygpOwotICAgIGlmIChpbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVk
KCkgfHwgaW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBzdHlsZSgpLnZpc2li
aWxpdHkoKSAhPSBWSVNJQkxFIHx8ICFpc1ZhbGlkKCkgfHwgIXRoaWNrbmVzcykKKyAgICBpZiAo
aW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpIHx8IGluZm8ucGhhc2UgIT0gUGFpbnRQ
aGFzZUZvcmVncm91bmQgfHwgc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6Vmlz
aWJsZSB8fCAhaXNWYWxpZCgpIHx8ICF0aGlja25lc3MpCiAgICAgICAgIHJldHVybjsKIAogICAg
IEludFBvaW50IGFkanVzdGVkUGFpbnRPZmZzZXQgPSByb3VuZGVkSW50UG9pbnQocGFpbnRPZmZz
ZXQgKyBsb2NhdGlvbigpICsgTGF5b3V0UG9pbnQoMCwgYXNjZW50T3Zlckhvcml6b250YWxBeGlz
KCkpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
TWF0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxNYXRoLmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNYXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTgsNyArNTgsNyBAQCB2b2lkIFJlbmRlck1hdGhNTE1hdGg6OmxheW91dEJsb2NrKGJvb2wgCiB7
CiAgICAgQVNTRVJUKG5lZWRzTGF5b3V0KCkpOwogCi0gICAgaWYgKHN0eWxlKCkuZGlzcGxheSgp
ICE9IEJMT0NLKSB7CisgICAgaWYgKHN0eWxlKCkuZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpC
bG9jaykgewogICAgICAgICBSZW5kZXJNYXRoTUxSb3c6OmxheW91dEJsb2NrKHJlbGF5b3V0Q2hp
bGRyZW4sIHBhZ2VMb2dpY2FsSGVpZ2h0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MTWVuY2xvc2UuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjA3LDcgKzIwNyw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MTWVuY2xvc2U6OnBhaW50KFBhaW50SW4K
IHsKICAgICBSZW5kZXJNYXRoTUxSb3c6OnBhaW50KGluZm8sIHBhaW50T2Zmc2V0KTsKIAotICAg
IGlmIChpbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkgfHwgaW5mby5waGFzZSAhPSBQ
YWludFBoYXNlRm9yZWdyb3VuZCB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQor
ICAgIGlmIChpbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkgfHwgaW5mby5waGFzZSAh
PSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmls
aXR5OjpWaXNpYmxlKQogICAgICAgICByZXR1cm47CiAKICAgICBMYXlvdXRVbml0IHRoaWNrbmVz
cyA9IHJ1bGVUaGlja25lc3MoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MUm9vdDo6cGFp
bnQoUGFpbnRJbmZvJiAKIHsKICAgICBSZW5kZXJNYXRoTUxSb3c6OnBhaW50KGluZm8sIHBhaW50
T2Zmc2V0KTsKIAotICAgIGlmICghZmlyc3RDaGlsZCgpIHx8IGluZm8uY29udGV4dCgpLnBhaW50
aW5nRGlzYWJsZWQoKSB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8ICFpc1Zh
bGlkKCkpCisgICAgaWYgKCFmaXJzdENoaWxkKCkgfHwgaW5mby5jb250ZXh0KCkucGFpbnRpbmdE
aXNhYmxlZCgpIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUg
fHwgIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gV2UgZHJhdyB0aGUgcmFk
aWNhbCBvcGVyYXRvci4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MVG9rZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTk0LDcgKzU5NCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MVG9rZW46OnBhaW50
KFBhaW50SW5mbyYKICAgICBSZW5kZXJNYXRoTUxCbG9jazo6cGFpbnQoaW5mbywgcGFpbnRPZmZz
ZXQpOwogCiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2YgdXNpbmcgRHJhd0dseXBoLCB3ZSBtYXkg
Y29uc2lkZXIgdXNpbmcgdGhlIG1vcmUgZ2VuZXJhbCBUZXh0UGFpbnRlciBzbyB0aGF0IHdlIGNh
biBhcHBseSBtYXRodmFyaWFudCB0byBzdHJpbmdzIHdpdGggYW4gYXJiaXRyYXJ5IG51bWJlciBv
ZiBjaGFyYWN0ZXJzIGFuZCBwcmVzZXJ2ZSBhZHZhbmNlZCBDU1MgZWZmZWN0cyAodGV4dC1zaGFk
b3csIGV0YykuCi0gICAgaWYgKGluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSB8fCBp
bmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgp
ICE9IFZJU0lCTEUgfHwgIW1fbWF0aFZhcmlhbnRDb2RlUG9pbnQpCisgICAgaWYgKGluZm8uY29u
dGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3Jl
Z3JvdW5kIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgfHwg
IW1fbWF0aFZhcmlhbnRDb2RlUG9pbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gbWF0
aFZhcmlhbnRHbHlwaCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKS5nbHlwaERhdGFGb3JDaGFyYWN0
ZXIobV9tYXRoVmFyaWFudENvZGVQb2ludC52YWx1ZSgpLCBtX21hdGhWYXJpYW50SXNNaXJyb3Jl
ZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL0JveFNoYXBlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL0JveFNoYXBlLmNw
cAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9C
b3hTaGFwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgUm91bmRlZFJlY3Qg
Y29tcHV0ZVJvdW5kZWRSZWN0Rm9yQm94U2hhcAogewogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSA9IHJlbmRlcmVyLnN0eWxlKCk7CiAgICAgc3dpdGNoIChib3gpIHsKLSAgICBjYXNlIE1h
cmdpbkJveDogeworICAgIGNhc2UgQ1NTQm94VHlwZTo6TWFyZ2luQm94OiB7CiAgICAgICAgIGlm
ICghc3R5bGUuaGFzQm9yZGVyUmFkaXVzKCkpCiAgICAgICAgICAgICByZXR1cm4gUm91bmRlZFJl
Y3QocmVuZGVyZXIubWFyZ2luQm94UmVjdCgpLCBSb3VuZGVkUmVjdDo6UmFkaWkoKSk7CiAKQEAg
LTc1LDE4ICs3NSwxOCBAQCBSb3VuZGVkUmVjdCBjb21wdXRlUm91bmRlZFJlY3RGb3JCb3hTaGFw
CiAgICAgICAgIHJhZGlpLnNjYWxlKGNhbGNCb3JkZXJSYWRpaUNvbnN0cmFpbnRTY2FsZUZvciht
YXJnaW5Cb3gsIHJhZGlpKSk7CiAgICAgICAgIHJldHVybiBSb3VuZGVkUmVjdChtYXJnaW5Cb3gs
IHJhZGlpKTsKICAgICB9Ci0gICAgY2FzZSBQYWRkaW5nQm94OgorICAgIGNhc2UgQ1NTQm94VHlw
ZTo6UGFkZGluZ0JveDoKICAgICAgICAgcmV0dXJuIHN0eWxlLmdldFJvdW5kZWRJbm5lckJvcmRl
ckZvcihyZW5kZXJlci5ib3JkZXJCb3hSZWN0KCkpOwotICAgIGNhc2UgQ29udGVudEJveDoKKyAg
ICBjYXNlIENTU0JveFR5cGU6OkNvbnRlbnRCb3g6CiAgICAgICAgIHJldHVybiBzdHlsZS5nZXRS
b3VuZGVkSW5uZXJCb3JkZXJGb3IocmVuZGVyZXIuYm9yZGVyQm94UmVjdCgpLAogICAgICAgICAg
ICAgcmVuZGVyZXIucGFkZGluZ1RvcCgpICsgcmVuZGVyZXIuYm9yZGVyVG9wKCksIHJlbmRlcmVy
LnBhZGRpbmdCb3R0b20oKSArIHJlbmRlcmVyLmJvcmRlckJvdHRvbSgpLAogICAgICAgICAgICAg
cmVuZGVyZXIucGFkZGluZ0xlZnQoKSArIHJlbmRlcmVyLmJvcmRlckxlZnQoKSwgcmVuZGVyZXIu
cGFkZGluZ1JpZ2h0KCkgKyByZW5kZXJlci5ib3JkZXJSaWdodCgpKTsKICAgICAvLyBmaWxsLCBz
dHJva2UsIHZpZXctYm94IGNvbXB1dGUgdG8gYm9yZGVyLWJveCBmb3IgSFRNTCBlbGVtZW50cy4K
LSAgICBjYXNlIEJvcmRlckJveDoKLSAgICBjYXNlIEZpbGw6Ci0gICAgY2FzZSBTdHJva2U6Ci0g
ICAgY2FzZSBWaWV3Qm94OgotICAgIGNhc2UgQm94TWlzc2luZzoKKyAgICBjYXNlIENTU0JveFR5
cGU6OkJvcmRlckJveDoKKyAgICBjYXNlIENTU0JveFR5cGU6OkZpbGw6CisgICAgY2FzZSBDU1NC
b3hUeXBlOjpTdHJva2U6CisgICAgY2FzZSBDU1NCb3hUeXBlOjpWaWV3Qm94OgorICAgIGNhc2Ug
Q1NTQm94VHlwZTo6Qm94TWlzc2luZzoKICAgICAgICAgcmV0dXJuIHN0eWxlLmdldFJvdW5kZWRC
b3JkZXJGb3IocmVuZGVyZXIuYm9yZGVyQm94UmVjdCgpKTsKICAgICB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNw
cAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZU91dHNpZGVJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsMTAgKzcyLDEwIEBAIEZs
b2F0U2l6ZSBTaGFwZU91dHNpZGVJbmZvOjpzaGFwZVRvUmVuZGUKIAogc3RhdGljIGlubGluZSBD
U1NCb3hUeXBlIHJlZmVyZW5jZUJveChjb25zdCBTaGFwZVZhbHVlJiBzaGFwZVZhbHVlKQogewot
ICAgIGlmIChzaGFwZVZhbHVlLmNzc0JveCgpID09IEJveE1pc3NpbmcpIHsKKyAgICBpZiAoc2hh
cGVWYWx1ZS5jc3NCb3goKSA9PSBDU1NCb3hUeXBlOjpCb3hNaXNzaW5nKSB7CiAgICAgICAgIGlm
IChzaGFwZVZhbHVlLnR5cGUoKSA9PSBTaGFwZVZhbHVlOjpUeXBlOjpJbWFnZSkKLSAgICAgICAg
ICAgIHJldHVybiBDb250ZW50Qm94OwotICAgICAgICByZXR1cm4gTWFyZ2luQm94OworICAgICAg
ICAgICAgcmV0dXJuIENTU0JveFR5cGU6OkNvbnRlbnRCb3g7CisgICAgICAgIHJldHVybiBDU1NC
b3hUeXBlOjpNYXJnaW5Cb3g7CiAgICAgfQogICAgIHJldHVybiBzaGFwZVZhbHVlLmNzc0JveCgp
OwogfQpAQCAtODQsMzAgKzg0LDMwIEBAIHZvaWQgU2hhcGVPdXRzaWRlSW5mbzo6c2V0UmVmZXJl
bmNlQm94TG8KIHsKICAgICBib29sIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlID0gbV9yZW5kZXJl
ci5jb250YWluaW5nQmxvY2soKS0+c3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwog
ICAgIHN3aXRjaCAocmVmZXJlbmNlQm94KCptX3JlbmRlcmVyLnN0eWxlKCkuc2hhcGVPdXRzaWRl
KCkpKSB7Ci0gICAgY2FzZSBNYXJnaW5Cb3g6CisgICAgY2FzZSBDU1NCb3hUeXBlOjpNYXJnaW5C
b3g6CiAgICAgICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSkKICAgICAgICAgICAgIG5l
d1JlZmVyZW5jZUJveExvZ2ljYWxTaXplLmV4cGFuZChtX3JlbmRlcmVyLmhvcml6b250YWxNYXJn
aW5FeHRlbnQoKSwgbV9yZW5kZXJlci52ZXJ0aWNhbE1hcmdpbkV4dGVudCgpKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgbmV3UmVmZXJlbmNlQm94TG9naWNhbFNpemUuZXhwYW5kKG1fcmVu
ZGVyZXIudmVydGljYWxNYXJnaW5FeHRlbnQoKSwgbV9yZW5kZXJlci5ob3Jpem9udGFsTWFyZ2lu
RXh0ZW50KCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJvcmRlckJveDoKKyAgICBjYXNl
IENTU0JveFR5cGU6OkJvcmRlckJveDoKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQYWRkaW5n
Qm94OgorICAgIGNhc2UgQ1NTQm94VHlwZTo6UGFkZGluZ0JveDoKICAgICAgICAgaWYgKGlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKQogICAgICAgICAgICAgbmV3UmVmZXJlbmNlQm94TG9naWNhbFNp
emUuc2hyaW5rKG1fcmVuZGVyZXIuaG9yaXpvbnRhbEJvcmRlckV4dGVudCgpLCBtX3JlbmRlcmVy
LnZlcnRpY2FsQm9yZGVyRXh0ZW50KCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBuZXdS
ZWZlcmVuY2VCb3hMb2dpY2FsU2l6ZS5zaHJpbmsobV9yZW5kZXJlci52ZXJ0aWNhbEJvcmRlckV4
dGVudCgpLCBtX3JlbmRlcmVyLmhvcml6b250YWxCb3JkZXJFeHRlbnQoKSk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQ29udGVudEJveDoKKyAgICBjYXNlIENTU0JveFR5cGU6OkNvbnRlbnRC
b3g6CiAgICAgICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSkKICAgICAgICAgICAgIG5l
d1JlZmVyZW5jZUJveExvZ2ljYWxTaXplLnNocmluayhtX3JlbmRlcmVyLmhvcml6b250YWxCb3Jk
ZXJBbmRQYWRkaW5nRXh0ZW50KCksIG1fcmVuZGVyZXIudmVydGljYWxCb3JkZXJBbmRQYWRkaW5n
RXh0ZW50KCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBuZXdSZWZlcmVuY2VCb3hMb2dp
Y2FsU2l6ZS5zaHJpbmsobV9yZW5kZXJlci52ZXJ0aWNhbEJvcmRlckFuZFBhZGRpbmdFeHRlbnQo
KSwgbV9yZW5kZXJlci5ob3Jpem9udGFsQm9yZGVyQW5kUGFkZGluZ0V4dGVudCgpKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBGaWxsOgotICAgIGNhc2UgU3Ryb2tlOgotICAgIGNhc2UgVmll
d0JveDoKLSAgICBjYXNlIEJveE1pc3Npbmc6CisgICAgY2FzZSBDU1NCb3hUeXBlOjpGaWxsOgor
ICAgIGNhc2UgQ1NTQm94VHlwZTo6U3Ryb2tlOgorICAgIGNhc2UgQ1NTQm94VHlwZTo6Vmlld0Jv
eDoKKyAgICBjYXNlIENTU0JveFR5cGU6OkJveE1pc3Npbmc6CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yMjQsMTQgKzIyNCwyMiBAQCBz
dGF0aWMgaW5saW5lIExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGluCiBMYXlvdXRVbml0IFNoYXBl
T3V0c2lkZUluZm86OmxvZ2ljYWxUb3BPZmZzZXQoKSBjb25zdAogewogICAgIHN3aXRjaCAocmVm
ZXJlbmNlQm94KCptX3JlbmRlcmVyLnN0eWxlKCkuc2hhcGVPdXRzaWRlKCkpKSB7Ci0gICAgY2Fz
ZSBNYXJnaW5Cb3g6IHJldHVybiAtbV9yZW5kZXJlci5tYXJnaW5CZWZvcmUoJm1fcmVuZGVyZXIu
Y29udGFpbmluZ0Jsb2NrKCktPnN0eWxlKCkpOwotICAgIGNhc2UgQm9yZGVyQm94OiByZXR1cm4g
TGF5b3V0VW5pdCgpOwotICAgIGNhc2UgUGFkZGluZ0JveDogcmV0dXJuIGJvcmRlckJlZm9yZUlu
V3JpdGluZ01vZGUobV9yZW5kZXJlciwgbV9yZW5kZXJlci5jb250YWluaW5nQmxvY2soKS0+c3R5
bGUoKS53cml0aW5nTW9kZSgpKTsKLSAgICBjYXNlIENvbnRlbnRCb3g6IHJldHVybiBib3JkZXJB
bmRQYWRkaW5nQmVmb3JlSW5Xcml0aW5nTW9kZShtX3JlbmRlcmVyLCBtX3JlbmRlcmVyLmNvbnRh
aW5pbmdCbG9jaygpLT5zdHlsZSgpLndyaXRpbmdNb2RlKCkpOwotICAgIGNhc2UgRmlsbDogYnJl
YWs7Ci0gICAgY2FzZSBTdHJva2U6IGJyZWFrOwotICAgIGNhc2UgVmlld0JveDogYnJlYWs7Ci0g
ICAgY2FzZSBCb3hNaXNzaW5nOiBicmVhazsKKyAgICBjYXNlIENTU0JveFR5cGU6Ok1hcmdpbkJv
eDoKKyAgICAgICAgcmV0dXJuIC1tX3JlbmRlcmVyLm1hcmdpbkJlZm9yZSgmbV9yZW5kZXJlci5j
b250YWluaW5nQmxvY2soKS0+c3R5bGUoKSk7CisgICAgY2FzZSBDU1NCb3hUeXBlOjpCb3JkZXJC
b3g6CisgICAgICAgIHJldHVybiBMYXlvdXRVbml0KCk7CisgICAgY2FzZSBDU1NCb3hUeXBlOjpQ
YWRkaW5nQm94OgorICAgICAgICByZXR1cm4gYm9yZGVyQmVmb3JlSW5Xcml0aW5nTW9kZShtX3Jl
bmRlcmVyLCBtX3JlbmRlcmVyLmNvbnRhaW5pbmdCbG9jaygpLT5zdHlsZSgpLndyaXRpbmdNb2Rl
KCkpOworICAgIGNhc2UgQ1NTQm94VHlwZTo6Q29udGVudEJveDoKKyAgICAgICAgcmV0dXJuIGJv
cmRlckFuZFBhZGRpbmdCZWZvcmVJbldyaXRpbmdNb2RlKG1fcmVuZGVyZXIsIG1fcmVuZGVyZXIu
Y29udGFpbmluZ0Jsb2NrKCktPnN0eWxlKCkud3JpdGluZ01vZGUoKSk7CisgICAgY2FzZSBDU1NC
b3hUeXBlOjpGaWxsOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU0JveFR5cGU6OlN0cm9r
ZToKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NCb3hUeXBlOjpWaWV3Qm94OgorICAgICAg
ICBicmVhazsKKyAgICBjYXNlIENTU0JveFR5cGU6OkJveE1pc3Npbmc6CisgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI3MiwxNCArMjgw
LDIyIEBAIExheW91dFVuaXQgU2hhcGVPdXRzaWRlSW5mbzo6bG9naWNhbExlZnQKICAgICAgICAg
cmV0dXJuIExheW91dFVuaXQoKTsKICAgICAKICAgICBzd2l0Y2ggKHJlZmVyZW5jZUJveCgqbV9y
ZW5kZXJlci5zdHlsZSgpLnNoYXBlT3V0c2lkZSgpKSkgewotICAgIGNhc2UgTWFyZ2luQm94OiBy
ZXR1cm4gLW1fcmVuZGVyZXIubWFyZ2luU3RhcnQoJm1fcmVuZGVyZXIuY29udGFpbmluZ0Jsb2Nr
KCktPnN0eWxlKCkpOwotICAgIGNhc2UgQm9yZGVyQm94OiByZXR1cm4gTGF5b3V0VW5pdCgpOwot
ICAgIGNhc2UgUGFkZGluZ0JveDogcmV0dXJuIGJvcmRlclN0YXJ0V2l0aFN0eWxlRm9yV3JpdGlu
Z01vZGUobV9yZW5kZXJlciwgbV9yZW5kZXJlci5jb250YWluaW5nQmxvY2soKS0+c3R5bGUoKSk7
Ci0gICAgY2FzZSBDb250ZW50Qm94OiByZXR1cm4gYm9yZGVyQW5kUGFkZGluZ1N0YXJ0V2l0aFN0
eWxlRm9yV3JpdGluZ01vZGUobV9yZW5kZXJlciwgbV9yZW5kZXJlci5jb250YWluaW5nQmxvY2so
KS0+c3R5bGUoKSk7Ci0gICAgY2FzZSBGaWxsOiBicmVhazsKLSAgICBjYXNlIFN0cm9rZTogYnJl
YWs7Ci0gICAgY2FzZSBWaWV3Qm94OiBicmVhazsKLSAgICBjYXNlIEJveE1pc3Npbmc6IGJyZWFr
OworICAgIGNhc2UgQ1NTQm94VHlwZTo6TWFyZ2luQm94OgorICAgICAgICByZXR1cm4gLW1fcmVu
ZGVyZXIubWFyZ2luU3RhcnQoJm1fcmVuZGVyZXIuY29udGFpbmluZ0Jsb2NrKCktPnN0eWxlKCkp
OworICAgIGNhc2UgQ1NTQm94VHlwZTo6Qm9yZGVyQm94OgorICAgICAgICByZXR1cm4gTGF5b3V0
VW5pdCgpOworICAgIGNhc2UgQ1NTQm94VHlwZTo6UGFkZGluZ0JveDoKKyAgICAgICAgcmV0dXJu
IGJvcmRlclN0YXJ0V2l0aFN0eWxlRm9yV3JpdGluZ01vZGUobV9yZW5kZXJlciwgbV9yZW5kZXJl
ci5jb250YWluaW5nQmxvY2soKS0+c3R5bGUoKSk7CisgICAgY2FzZSBDU1NCb3hUeXBlOjpDb250
ZW50Qm94OgorICAgICAgICByZXR1cm4gYm9yZGVyQW5kUGFkZGluZ1N0YXJ0V2l0aFN0eWxlRm9y
V3JpdGluZ01vZGUobV9yZW5kZXJlciwgbV9yZW5kZXJlci5jb250YWluaW5nQmxvY2soKS0+c3R5
bGUoKSk7CisgICAgY2FzZSBDU1NCb3hUeXBlOjpGaWxsOgorICAgICAgICBicmVhazsKKyAgICBj
YXNlIENTU0JveFR5cGU6OlN0cm9rZToKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NCb3hU
eXBlOjpWaWV3Qm94OgorICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU0JveFR5cGU6OkJveE1p
c3Npbmc6CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJDb250ZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJDb250
ZW50LmgJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9Db3VudGVyQ29udGVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvdW50ZXJDb250ZW50IHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBDb3VudGVyQ29udGVudChjb25zdCBBdG9taWNTdHJp
bmcmIGlkZW50aWZpZXIsIEVMaXN0U3R5bGVUeXBlIHN0eWxlLCBjb25zdCBBdG9taWNTdHJpbmcm
IHNlcGFyYXRvcikKKyAgICBDb3VudGVyQ29udGVudChjb25zdCBBdG9taWNTdHJpbmcmIGlkZW50
aWZpZXIsIExpc3RTdHlsZVR5cGUgc3R5bGUsIGNvbnN0IEF0b21pY1N0cmluZyYgc2VwYXJhdG9y
KQogICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICAgICAsIG1fbGlzdFN0
eWxlKHN0eWxlKQogICAgICAgICAsIG1fc2VwYXJhdG9yKHNlcGFyYXRvcikKQEAgLTQwLDEyICs0
MCwxMiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9Ci0gICAgRUxpc3RTdHlsZVR5cGUg
bGlzdFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9saXN0U3R5bGU7IH0KKyAgICBMaXN0U3R5bGVU
eXBlIGxpc3RTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGlzdFN0eWxlOyB9CiAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBzZXBhcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3NlcGFyYXRvcjsgfQog
CiBwcml2YXRlOgogICAgIEF0b21pY1N0cmluZyBtX2lkZW50aWZpZXI7Ci0gICAgRUxpc3RTdHls
ZVR5cGUgbV9saXN0U3R5bGU7CisgICAgTGlzdFN0eWxlVHlwZSBtX2xpc3RTdHlsZTsKICAgICBB
dG9taWNTdHJpbmcgbV9zZXBhcmF0b3I7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwOSw3ICsxMDksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRl
clN0eWxlCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU3R5bGU+KHN0eWxlLCBD
bG9uZSk7CiB9CiAKLVJlbmRlclN0eWxlIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHls
ZVdpdGhEaXNwbGF5KGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgRURpc3BsYXkgZGlz
cGxheSkKK1JlbmRlclN0eWxlIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhE
aXNwbGF5KGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgRGlzcGxheVR5cGUgZGlzcGxh
eSkKIHsKICAgICBhdXRvIG5ld1N0eWxlID0gY3JlYXRlKCk7CiAgICAgbmV3U3R5bGUuaW5oZXJp
dEZyb20ocGFyZW50U3R5bGUpOwpAQCAtMTIwLDcgKzEyMCw3IEBAIFJlbmRlclN0eWxlIFJlbmRl
clN0eWxlOjpjcmVhdGVBbm9ueW1vdXMKIAogUmVuZGVyU3R5bGUgUmVuZGVyU3R5bGU6OmNyZWF0
ZVN0eWxlSW5oZXJpdGluZ0Zyb21Qc2V1ZG9TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcHNldWRv
U3R5bGUpCiB7Ci0gICAgQVNTRVJUKHBzZXVkb1N0eWxlLnN0eWxlVHlwZSgpID09IEJFRk9SRSB8
fCBwc2V1ZG9TdHlsZS5zdHlsZVR5cGUoKSA9PSBBRlRFUik7CisgICAgQVNTRVJUKHBzZXVkb1N0
eWxlLnN0eWxlVHlwZSgpID09IFBzZXVkb0lkOjpCZWZvcmUgfHwgcHNldWRvU3R5bGUuc3R5bGVU
eXBlKCkgPT0gUHNldWRvSWQ6OkFmdGVyKTsKIAogICAgIGF1dG8gc3R5bGUgPSBjcmVhdGUoKTsK
ICAgICBzdHlsZS5pbmhlcml0RnJvbShwc2V1ZG9TdHlsZSk7CkBAIC0xNDAsMzEgKzE0MCwzMSBA
QCBSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoQ3JlYXRlRGVmYXVsdFN0CiAgICAgLCBtX2luaGVy
aXRlZERhdGEoU3R5bGVJbmhlcml0ZWREYXRhOjpjcmVhdGUoKSkKICAgICAsIG1fc3ZnU3R5bGUo
U1ZHUmVuZGVyU3R5bGU6OmNyZWF0ZSgpKQogewotICAgIG1faW5oZXJpdGVkRmxhZ3MuZW1wdHlD
ZWxscyA9IGluaXRpYWxFbXB0eUNlbGxzKCk7Ci0gICAgbV9pbmhlcml0ZWRGbGFncy5jYXB0aW9u
U2lkZSA9IGluaXRpYWxDYXB0aW9uU2lkZSgpOwotICAgIG1faW5oZXJpdGVkRmxhZ3MubGlzdFN0
eWxlVHlwZSA9IGluaXRpYWxMaXN0U3R5bGVUeXBlKCk7Ci0gICAgbV9pbmhlcml0ZWRGbGFncy5s
aXN0U3R5bGVQb3NpdGlvbiA9IGluaXRpYWxMaXN0U3R5bGVQb3NpdGlvbigpOwotICAgIG1faW5o
ZXJpdGVkRmxhZ3MudmlzaWJpbGl0eSA9IGluaXRpYWxWaXNpYmlsaXR5KCk7Ci0gICAgbV9pbmhl
cml0ZWRGbGFncy50ZXh0QWxpZ24gPSBpbml0aWFsVGV4dEFsaWduKCk7Ci0gICAgbV9pbmhlcml0
ZWRGbGFncy50ZXh0VHJhbnNmb3JtID0gaW5pdGlhbFRleHRUcmFuc2Zvcm0oKTsKKyAgICBtX2lu
aGVyaXRlZEZsYWdzLmVtcHR5Q2VsbHMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbEVt
cHR5Q2VsbHMoKSk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5jYXB0aW9uU2lkZSA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihpbml0aWFsQ2FwdGlvblNpZGUoKSk7CisgICAgbV9pbmhlcml0ZWRGbGFn
cy5saXN0U3R5bGVUeXBlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxMaXN0U3R5bGVU
eXBlKCkpOworICAgIG1faW5oZXJpdGVkRmxhZ3MubGlzdFN0eWxlUG9zaXRpb24gPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oaW5pdGlhbExpc3RTdHlsZVBvc2l0aW9uKCkpOworICAgIG1faW5oZXJp
dGVkRmxhZ3MudmlzaWJpbGl0eSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsVmlzaWJp
bGl0eSgpKTsKKyAgICBtX2luaGVyaXRlZEZsYWdzLnRleHRBbGlnbiA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihpbml0aWFsVGV4dEFsaWduKCkpOworICAgIG1faW5oZXJpdGVkRmxhZ3MudGV4dFRy
YW5zZm9ybSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsVGV4dFRyYW5zZm9ybSgpKTsK
ICAgICBtX2luaGVyaXRlZEZsYWdzLnRleHREZWNvcmF0aW9ucyA9IGluaXRpYWxUZXh0RGVjb3Jh
dGlvbigpOwotICAgIG1faW5oZXJpdGVkRmxhZ3MuY3Vyc29yID0gaW5pdGlhbEN1cnNvcigpOwor
ICAgIG1faW5oZXJpdGVkRmxhZ3MuY3Vyc29yID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRp
YWxDdXJzb3IoKSk7CiAjaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQotICAgIG1faW5oZXJp
dGVkRmxhZ3MuY3Vyc29yVmlzaWJpbGl0eSA9IGluaXRpYWxDdXJzb3JWaXNpYmlsaXR5KCk7Cisg
ICAgbV9pbmhlcml0ZWRGbGFncy5jdXJzb3JWaXNpYmlsaXR5ID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGluaXRpYWxDdXJzb3JWaXNpYmlsaXR5KCkpOwogI2VuZGlmCiAgICAgbV9pbmhlcml0ZWRG
bGFncy5kaXJlY3Rpb24gPSBpbml0aWFsRGlyZWN0aW9uKCk7Ci0gICAgbV9pbmhlcml0ZWRGbGFn
cy53aGl0ZVNwYWNlID0gaW5pdGlhbFdoaXRlU3BhY2UoKTsKKyAgICBtX2luaGVyaXRlZEZsYWdz
LndoaXRlU3BhY2UgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbFdoaXRlU3BhY2UoKSk7
CiAgICAgbV9pbmhlcml0ZWRGbGFncy5ib3JkZXJDb2xsYXBzZSA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihpbml0aWFsQm9yZGVyQ29sbGFwc2UoKSk7Ci0gICAgbV9pbmhlcml0ZWRGbGFncy5ydGxP
cmRlcmluZyA9IGluaXRpYWxSVExPcmRlcmluZygpOworICAgIG1faW5oZXJpdGVkRmxhZ3MucnRs
T3JkZXJpbmcgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbFJUTE9yZGVyaW5nKCkpOwog
ICAgIG1faW5oZXJpdGVkRmxhZ3MuYm94RGlyZWN0aW9uID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGluaXRpYWxCb3hEaXJlY3Rpb24oKSk7CiAgICAgbV9pbmhlcml0ZWRGbGFncy5wcmludENvbG9y
QWRqdXN0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxQcmludENvbG9yQWRqdXN0KCkp
OwotICAgIG1faW5oZXJpdGVkRmxhZ3MucG9pbnRlckV2ZW50cyA9IGluaXRpYWxQb2ludGVyRXZl
bnRzKCk7Ci0gICAgbV9pbmhlcml0ZWRGbGFncy5pbnNpZGVMaW5rID0gTm90SW5zaWRlTGluazsK
KyAgICBtX2luaGVyaXRlZEZsYWdzLnBvaW50ZXJFdmVudHMgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oaW5pdGlhbFBvaW50ZXJFdmVudHMoKSk7CisgICAgbV9pbmhlcml0ZWRGbGFncy5pbnNpZGVM
aW5rID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEluc2lkZUxpbms6Ok5vdEluc2lkZSk7CiAgICAg
bV9pbmhlcml0ZWRGbGFncy5pbnNpZGVEZWZhdWx0QnV0dG9uID0gZmFsc2U7CiAgICAgbV9pbmhl
cml0ZWRGbGFncy53cml0aW5nTW9kZSA9IGluaXRpYWxXcml0aW5nTW9kZSgpOwogCi0gICAgbV9u
b25Jbmhlcml0ZWRGbGFncy5lZmZlY3RpdmVEaXNwbGF5ID0gaW5pdGlhbERpc3BsYXkoKTsKLSAg
ICBtX25vbkluaGVyaXRlZEZsYWdzLm9yaWdpbmFsRGlzcGxheSA9IGluaXRpYWxEaXNwbGF5KCk7
CisgICAgbV9ub25Jbmhlcml0ZWRGbGFncy5lZmZlY3RpdmVEaXNwbGF5ID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGluaXRpYWxEaXNwbGF5KCkpOworICAgIG1fbm9uSW5oZXJpdGVkRmxhZ3Mub3Jp
Z2luYWxEaXNwbGF5ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxEaXNwbGF5KCkpOwog
ICAgIG1fbm9uSW5oZXJpdGVkRmxhZ3Mub3ZlcmZsb3dYID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGluaXRpYWxPdmVyZmxvd1goKSk7CiAgICAgbV9ub25Jbmhlcml0ZWRGbGFncy5vdmVyZmxvd1kg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbE92ZXJmbG93WSgpKTsKICAgICBtX25vbklu
aGVyaXRlZEZsYWdzLnZlcnRpY2FsQWxpZ24gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlh
bFZlcnRpY2FsQWxpZ24oKSk7CkBAIC0xODYsOCArMTg2LDggQEAgUmVuZGVyU3R5bGU6OlJlbmRl
clN0eWxlKENyZWF0ZURlZmF1bHRTdAogICAgIG1fbm9uSW5oZXJpdGVkRmxhZ3MuYWZmZWN0ZWRC
eUFjdGl2ZSA9IGZhbHNlOwogICAgIG1fbm9uSW5oZXJpdGVkRmxhZ3MuYWZmZWN0ZWRCeURyYWcg
PSBmYWxzZTsKICAgICBtX25vbkluaGVyaXRlZEZsYWdzLmlzTGluayA9IGZhbHNlOwotICAgIG1f
bm9uSW5oZXJpdGVkRmxhZ3Muc3R5bGVUeXBlID0gTk9QU0VVRE87Ci0gICAgbV9ub25Jbmhlcml0
ZWRGbGFncy5wc2V1ZG9CaXRzID0gTk9QU0VVRE87CisgICAgbV9ub25Jbmhlcml0ZWRGbGFncy5z
dHlsZVR5cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHNldWRvSWQ6Ok5vbmUpOworICAgIG1f
bm9uSW5oZXJpdGVkRmxhZ3MucHNldWRvQml0cyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQc2V1
ZG9JZDo6Tm9uZSk7CiAKICAgICBzdGF0aWNfYXNzZXJ0KChzaXplb2YoSW5oZXJpdGVkRmxhZ3Mp
IDw9IDgpLCAiSW5oZXJpdGVkRmxhZ3MgZG9lcyBub3QgZ3JvdyIpOwogICAgIHN0YXRpY19hc3Nl
cnQoKHNpemVvZihOb25Jbmhlcml0ZWRGbGFncykgPD0gOCksICJOb25Jbmhlcml0ZWRGbGFncyBk
b2VzIG5vdCBncm93Iik7CkBAIC0zNjYsNyArMzY2LDcgQEAgYm9vbCBSZW5kZXJTdHlsZTo6b3Bl
cmF0b3I9PShjb25zdCBSZW5kZQogCiBib29sIFJlbmRlclN0eWxlOjpoYXNVbmlxdWVQc2V1ZG9T
dHlsZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2NhY2hlZFBzZXVkb1N0eWxlcyB8fCBzdHlsZVR5
cGUoKSAhPSBOT1BTRVVETykKKyAgICBpZiAoIW1fY2FjaGVkUHNldWRvU3R5bGVzIHx8IHN0eWxl
VHlwZSgpICE9IFBzZXVkb0lkOjpOb25lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBm
b3IgKGF1dG8mIHBzZXVkb1N0eWxlIDogKm1fY2FjaGVkUHNldWRvU3R5bGVzKSB7CkBAIC0zODIs
NyArMzgyLDcgQEAgUmVuZGVyU3R5bGUqIFJlbmRlclN0eWxlOjpnZXRDYWNoZWRQc2V1ZAogICAg
IGlmICghbV9jYWNoZWRQc2V1ZG9TdHlsZXMgfHwgIW1fY2FjaGVkUHNldWRvU3R5bGVzLT5zaXpl
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgaWYgKHN0eWxlVHlwZSgpICE9IE5P
UFNFVURPKSAKKyAgICBpZiAoc3R5bGVUeXBlKCkgIT0gUHNldWRvSWQ6Ok5vbmUpIAogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGZvciAoYXV0byYgcHNldWRvU3R5bGUgOiAqbV9jYWNo
ZWRQc2V1ZG9TdHlsZXMpIHsKQEAgLTM5OCw3ICszOTgsNyBAQCBSZW5kZXJTdHlsZSogUmVuZGVy
U3R5bGU6OmFkZENhY2hlZFBzZXVkCiAgICAgaWYgKCFwc2V1ZG8pCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgQVNTRVJUKHBzZXVkby0+c3R5bGVUeXBlKCkgPiBOT1BTRVVETyk7Cisg
ICAgQVNTRVJUKHBzZXVkby0+c3R5bGVUeXBlKCkgPiBQc2V1ZG9JZDo6Tm9uZSk7CiAKICAgICBS
ZW5kZXJTdHlsZSogcmVzdWx0ID0gcHNldWRvLmdldCgpOwogCkBAIC03MDYsNyArNzA2LDcgQEAg
Ym9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdlUmVxdWlyZXNMYXlvdXQoYwogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAogCi0gICAgaWYgKG1fbm9uSW5oZXJpdGVkRmxhZ3MuZWZmZWN0aXZlRGlzcGxheSA+
PSBUQUJMRSkgeworICAgIGlmIChzdGF0aWNfY2FzdDxEaXNwbGF5VHlwZT4obV9ub25Jbmhlcml0
ZWRGbGFncy5lZmZlY3RpdmVEaXNwbGF5KSA+PSBEaXNwbGF5VHlwZTo6VGFibGUpIHsKICAgICAg
ICAgaWYgKG1faW5oZXJpdGVkRmxhZ3MuYm9yZGVyQ29sbGFwc2UgIT0gb3RoZXIubV9pbmhlcml0
ZWRGbGFncy5ib3JkZXJDb2xsYXBzZQogICAgICAgICAgICAgfHwgbV9pbmhlcml0ZWRGbGFncy5l
bXB0eUNlbGxzICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MuZW1wdHlDZWxscwogICAgICAgICAg
ICAgfHwgbV9pbmhlcml0ZWRGbGFncy5jYXB0aW9uU2lkZSAhPSBvdGhlci5tX2luaGVyaXRlZEZs
YWdzLmNhcHRpb25TaWRlCkBAIC03MjcsNyArNzI3LDcgQEAgYm9vbCBSZW5kZXJTdHlsZTo6Y2hh
bmdlUmVxdWlyZXNMYXlvdXQoYwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0g
ICAgaWYgKG1fbm9uSW5oZXJpdGVkRmxhZ3MuZWZmZWN0aXZlRGlzcGxheSA9PSBMSVNUX0lURU0p
IHsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8RGlzcGxheVR5cGU+KG1fbm9uSW5oZXJpdGVkRmxhZ3Mu
ZWZmZWN0aXZlRGlzcGxheSkgPT0gRGlzcGxheVR5cGU6Okxpc3RJdGVtKSB7CiAgICAgICAgIGlm
IChtX2luaGVyaXRlZEZsYWdzLmxpc3RTdHlsZVR5cGUgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFn
cy5saXN0U3R5bGVUeXBlCiAgICAgICAgICAgICB8fCBtX2luaGVyaXRlZEZsYWdzLmxpc3RTdHls
ZVBvc2l0aW9uICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MubGlzdFN0eWxlUG9zaXRpb24pCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTc3Miw3ICs3NzIsNyBAQCBib29sIFJlbmRlclN0
eWxlOjpjaGFuZ2VSZXF1aXJlc0xheW91dChjCiAgICAgaWYgKCFhcmVQb2ludGluZ1RvRXF1YWxE
YXRhKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmNvdW50ZXJEaXJlY3RpdmVzLCBvdGhlci5tX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5jb3VudGVyRGlyZWN0aXZlcykpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCi0gICAgaWYgKCh2aXNpYmlsaXR5KCkgPT0gQ09MTEFQU0UpICE9IChvdGhlci52aXNp
YmlsaXR5KCkgPT0gQ09MTEFQU0UpKQorICAgIGlmICgodmlzaWJpbGl0eSgpID09IFZpc2liaWxp
dHk6OkNvbGxhcHNlKSAhPSAob3RoZXIudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OkNvbGxh
cHNlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+aGFzT3BhY2l0eSgpICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmhhc09w
YWNpdHkoKSkgewpAQCAtODA5LDE0ICs4MDksMTQgQEAgYm9vbCBSZW5kZXJTdHlsZTo6Y2hhbmdl
UmVxdWlyZXNMYXlvdXQoYwogICAgICAgICB9CiAgICAgfQogCi0gICAgYm9vbCBoYXNGaXJzdExp
bmVTdHlsZSA9IGhhc1BzZXVkb1N0eWxlKEZJUlNUX0xJTkUpOwotICAgIGlmIChoYXNGaXJzdExp
bmVTdHlsZSAhPSBvdGhlci5oYXNQc2V1ZG9TdHlsZShGSVJTVF9MSU5FKSkKKyAgICBib29sIGhh
c0ZpcnN0TGluZVN0eWxlID0gaGFzUHNldWRvU3R5bGUoUHNldWRvSWQ6OkZpcnN0TGluZSk7Cisg
ICAgaWYgKGhhc0ZpcnN0TGluZVN0eWxlICE9IG90aGVyLmhhc1BzZXVkb1N0eWxlKFBzZXVkb0lk
OjpGaXJzdExpbmUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoaGFzRmlyc3RMaW5l
U3R5bGUpIHsKLSAgICAgICAgYXV0byogZmlyc3RMaW5lU3R5bGUgPSBnZXRDYWNoZWRQc2V1ZG9T
dHlsZShGSVJTVF9MSU5FKTsKKyAgICAgICAgYXV0byogZmlyc3RMaW5lU3R5bGUgPSBnZXRDYWNo
ZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKTsKICAgICAgICAgaWYgKCFmaXJzdExp
bmVTdHlsZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBhdXRvKiBvdGhlckZp
cnN0TGluZVN0eWxlID0gb3RoZXIuZ2V0Q2FjaGVkUHNldWRvU3R5bGUoRklSU1RfTElORSk7Cisg
ICAgICAgIGF1dG8qIG90aGVyRmlyc3RMaW5lU3R5bGUgPSBvdGhlci5nZXRDYWNoZWRQc2V1ZG9T
dHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKTsKICAgICAgICAgaWYgKCFvdGhlckZpcnN0TGluZVN0
eWxlKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIC8vIEZJWE1FOiBOb3QgYWxs
IGZpcnN0IGxpbmUgc3R5bGUgY2hhbmdlcyBhY3R1YWxseSBuZWVkIGxheW91dC4KQEAgLTg4NSw3
ICs4ODUsNyBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheWVyUmVwCiAKIHN0
YXRpYyBib29sIHJlcXVpcmVzUGFpbnRpbmcoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewot
ICAgIGlmIChzdHlsZS52aXNpYmlsaXR5KCkgPT0gSElEREVOKQorICAgIGlmIChzdHlsZS52aXNp
YmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6SGlkZGVuKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgaWYgKCFzdHlsZS5vcGFjaXR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzNDks
NyArMTM0OSw3IEBAIENvdW50ZXJEaXJlY3RpdmVNYXAmIFJlbmRlclN0eWxlOjphY2Nlc3MKIAog
Y29uc3QgQXRvbWljU3RyaW5nJiBSZW5kZXJTdHlsZTo6aHlwaGVuU3RyaW5nKCkgY29uc3QKIHsK
LSAgICBBU1NFUlQoaHlwaGVucygpICE9IEh5cGhlbnNOb25lKTsKKyAgICBBU1NFUlQoaHlwaGVu
cygpICE9IEh5cGhlbnM6Ok5vbmUpOwogCiAgICAgYXV0byYgaHlwaGVuYXRpb25TdHJpbmcgPSBt
X3JhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvblN0cmluZzsKICAgICBpZiAoIWh5cGhlbmF0
aW9uU3RyaW5nLmlzTnVsbCgpKQpAQCAtMTM2NCwzNiArMTM2NCwzNiBAQCBjb25zdCBBdG9taWNT
dHJpbmcmIFJlbmRlclN0eWxlOjpoeXBoZW5TCiBjb25zdCBBdG9taWNTdHJpbmcmIFJlbmRlclN0
eWxlOjp0ZXh0RW1waGFzaXNNYXJrU3RyaW5nKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKHRleHRF
bXBoYXNpc01hcmsoKSkgewotICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFya05vbmU6CisgICAgY2Fz
ZSBUZXh0RW1waGFzaXNNYXJrOjpOb25lOgogICAgICAgICByZXR1cm4gbnVsbEF0b20oKTsKLSAg
ICBjYXNlIFRleHRFbXBoYXNpc01hcmtDdXN0b206CisgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJr
OjpDdXN0b206CiAgICAgICAgIHJldHVybiB0ZXh0RW1waGFzaXNDdXN0b21NYXJrKCk7Ci0gICAg
Y2FzZSBUZXh0RW1waGFzaXNNYXJrRG90OiB7CisgICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrOjpE
b3Q6IHsKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZmlsbGVk
RG90U3RyaW5nKCZidWxsZXQsIDEpOwogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bWljU3RyaW5nPiBvcGVuRG90U3RyaW5nKCZ3aGl0ZUJ1bGxldCwgMSk7Ci0gICAgICAgIHJldHVy
biB0ZXh0RW1waGFzaXNGaWxsKCkgPT0gVGV4dEVtcGhhc2lzRmlsbEZpbGxlZCA/IGZpbGxlZERv
dFN0cmluZyA6IG9wZW5Eb3RTdHJpbmc7CisgICAgICAgIHJldHVybiB0ZXh0RW1waGFzaXNGaWxs
KCkgPT0gVGV4dEVtcGhhc2lzRmlsbDo6RmlsbGVkID8gZmlsbGVkRG90U3RyaW5nIDogb3BlbkRv
dFN0cmluZzsKICAgICB9Ci0gICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrQ2lyY2xlOiB7CisgICAg
Y2FzZSBUZXh0RW1waGFzaXNNYXJrOjpDaXJjbGU6IHsKICAgICAgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gZmlsbGVkQ2lyY2xlU3RyaW5nKCZibGFja0NpcmNsZSwgMSk7
CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG9wZW5DaXJjbGVT
dHJpbmcoJndoaXRlQ2lyY2xlLCAxKTsKLSAgICAgICAgcmV0dXJuIHRleHRFbXBoYXNpc0ZpbGwo
KSA9PSBUZXh0RW1waGFzaXNGaWxsRmlsbGVkID8gZmlsbGVkQ2lyY2xlU3RyaW5nIDogb3BlbkNp
cmNsZVN0cmluZzsKKyAgICAgICAgcmV0dXJuIHRleHRFbXBoYXNpc0ZpbGwoKSA9PSBUZXh0RW1w
aGFzaXNGaWxsOjpGaWxsZWQgPyBmaWxsZWRDaXJjbGVTdHJpbmcgOiBvcGVuQ2lyY2xlU3RyaW5n
OwogICAgIH0KLSAgICBjYXNlIFRleHRFbXBoYXNpc01hcmtEb3VibGVDaXJjbGU6IHsKKyAgICBj
YXNlIFRleHRFbXBoYXNpc01hcms6OkRvdWJsZUNpcmNsZTogewogICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBmaWxsZWREb3VibGVDaXJjbGVTdHJpbmcoJmZpc2hl
eWUsIDEpOwogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBvcGVu
RG91YmxlQ2lyY2xlU3RyaW5nKCZidWxsc2V5ZSwgMSk7Ci0gICAgICAgIHJldHVybiB0ZXh0RW1w
aGFzaXNGaWxsKCkgPT0gVGV4dEVtcGhhc2lzRmlsbEZpbGxlZCA/IGZpbGxlZERvdWJsZUNpcmNs
ZVN0cmluZyA6IG9wZW5Eb3VibGVDaXJjbGVTdHJpbmc7CisgICAgICAgIHJldHVybiB0ZXh0RW1w
aGFzaXNGaWxsKCkgPT0gVGV4dEVtcGhhc2lzRmlsbDo6RmlsbGVkID8gZmlsbGVkRG91YmxlQ2ly
Y2xlU3RyaW5nIDogb3BlbkRvdWJsZUNpcmNsZVN0cmluZzsKICAgICB9Ci0gICAgY2FzZSBUZXh0
RW1waGFzaXNNYXJrVHJpYW5nbGU6IHsKKyAgICBjYXNlIFRleHRFbXBoYXNpc01hcms6OlRyaWFu
Z2xlOiB7CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGZpbGxl
ZFRyaWFuZ2xlU3RyaW5nKCZibGFja1VwUG9pbnRpbmdUcmlhbmdsZSwgMSk7CiAgICAgICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG9wZW5UcmlhbmdsZVN0cmluZygmd2hp
dGVVcFBvaW50aW5nVHJpYW5nbGUsIDEpOwotICAgICAgICByZXR1cm4gdGV4dEVtcGhhc2lzRmls
bCgpID09IFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQgPyBmaWxsZWRUcmlhbmdsZVN0cmluZyA6IG9w
ZW5UcmlhbmdsZVN0cmluZzsKKyAgICAgICAgcmV0dXJuIHRleHRFbXBoYXNpc0ZpbGwoKSA9PSBU
ZXh0RW1waGFzaXNGaWxsOjpGaWxsZWQgPyBmaWxsZWRUcmlhbmdsZVN0cmluZyA6IG9wZW5Ucmlh
bmdsZVN0cmluZzsKICAgICB9Ci0gICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrU2VzYW1lOiB7Cisg
ICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrOjpTZXNhbWU6IHsKICAgICAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEF0b21pY1N0cmluZz4gZmlsbGVkU2VzYW1lU3RyaW5nKCZzZXNhbWVEb3QsIDEp
OwogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBvcGVuU2VzYW1l
U3RyaW5nKCZ3aGl0ZVNlc2FtZURvdCwgMSk7Ci0gICAgICAgIHJldHVybiB0ZXh0RW1waGFzaXNG
aWxsKCkgPT0gVGV4dEVtcGhhc2lzRmlsbEZpbGxlZCA/IGZpbGxlZFNlc2FtZVN0cmluZyA6IG9w
ZW5TZXNhbWVTdHJpbmc7CisgICAgICAgIHJldHVybiB0ZXh0RW1waGFzaXNGaWxsKCkgPT0gVGV4
dEVtcGhhc2lzRmlsbDo6RmlsbGVkID8gZmlsbGVkU2VzYW1lU3RyaW5nIDogb3BlblNlc2FtZVN0
cmluZzsKICAgICB9Ci0gICAgY2FzZSBUZXh0RW1waGFzaXNNYXJrQXV0bzoKKyAgICBjYXNlIFRl
eHRFbXBoYXNpc01hcms6OkF1dG86CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICByZXR1cm4gbnVsbEF0b20oKTsKICAgICB9CkBAIC0xODI1LDcgKzE4MjUsNyBAQCBDb2xv
ciBSZW5kZXJTdHlsZTo6Y29sb3JJbmNsdWRpbmdGYWxsYmFjCiBDb2xvciBSZW5kZXJTdHlsZTo6
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5SUQgY29sb3JQcm9wZXJ0eSkgY29uc3QK
IHsKICAgICBDb2xvciB1bnZpc2l0ZWRDb2xvciA9IGNvbG9ySW5jbHVkaW5nRmFsbGJhY2soY29s
b3JQcm9wZXJ0eSwgZmFsc2UpOwotICAgIGlmIChpbnNpZGVMaW5rKCkgIT0gSW5zaWRlVmlzaXRl
ZExpbmspCisgICAgaWYgKGluc2lkZUxpbmsoKSAhPSBJbnNpZGVMaW5rOjpJbnNpZGVWaXNpdGVk
KQogICAgICAgICByZXR1cm4gdW52aXNpdGVkQ29sb3I7CiAKICAgICBDb2xvciB2aXNpdGVkQ29s
b3IgPSBjb2xvckluY2x1ZGluZ0ZhbGxiYWNrKGNvbG9yUHJvcGVydHksIHRydWUpOwpAQCAtMTk4
NiwxMSArMTk4NiwxMSBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRNYXJnaW5FbmQoTGVuZ3RoJiYg
CiBUZXh0RW1waGFzaXNNYXJrIFJlbmRlclN0eWxlOjp0ZXh0RW1waGFzaXNNYXJrKCkgY29uc3QK
IHsKICAgICBhdXRvIG1hcmsgPSBzdGF0aWNfY2FzdDxUZXh0RW1waGFzaXNNYXJrPihtX3JhcmVJ
bmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNNYXJrKTsKLSAgICBpZiAobWFyayAhPSBUZXh0RW1w
aGFzaXNNYXJrQXV0bykKKyAgICBpZiAobWFyayAhPSBUZXh0RW1waGFzaXNNYXJrOjpBdXRvKQog
ICAgICAgICByZXR1cm4gbWFyazsKICAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkK
LSAgICAgICAgcmV0dXJuIFRleHRFbXBoYXNpc01hcmtEb3Q7Ci0gICAgcmV0dXJuIFRleHRFbXBo
YXNpc01hcmtTZXNhbWU7CisgICAgICAgIHJldHVybiBUZXh0RW1waGFzaXNNYXJrOjpEb3Q7Cisg
ICAgcmV0dXJuIFRleHRFbXBoYXNpc01hcms6OlNlc2FtZTsKIH0KIAogI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCkBAIC0yMDY3LDMyICsyMDY3LDMyIEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldENv
bHVtblN0eWxlc0Zyb21QYWcKICAgICAKICAgICBzd2l0Y2ggKHBhZ2luYXRpb25Nb2RlKSB7CiAg
ICAgY2FzZSBQYWdpbmF0aW9uOjpMZWZ0VG9SaWdodFBhZ2luYXRlZDoKLSAgICAgICAgc2V0Q29s
dW1uQXhpcyhIb3Jpem9udGFsQ29sdW1uQXhpcyk7CisgICAgICAgIHNldENvbHVtbkF4aXMoQ29s
dW1uQXhpczo6SG9yaXpvbnRhbCk7CiAgICAgICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpKQotICAgICAgICAgICAgc2V0Q29sdW1uUHJvZ3Jlc3Npb24oaXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpID8gTm9ybWFsQ29sdW1uUHJvZ3Jlc3Npb24gOiBSZXZlcnNlQ29sdW1uUHJvZ3Jlc3Np
b24pOworICAgICAgICAgICAgc2V0Q29sdW1uUHJvZ3Jlc3Npb24oaXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpID8gQ29sdW1uUHJvZ3Jlc3Npb246Ok5vcm1hbCA6IENvbHVtblByb2dyZXNzaW9uOjpS
ZXZlcnNlKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc2V0Q29sdW1uUHJvZ3Jlc3Npb24o
aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSA/IFJldmVyc2VDb2x1bW5Qcm9ncmVzc2lvbiA6
IE5vcm1hbENvbHVtblByb2dyZXNzaW9uKTsKKyAgICAgICAgICAgIHNldENvbHVtblByb2dyZXNz
aW9uKGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgPyBDb2x1bW5Qcm9ncmVzc2lvbjo6UmV2
ZXJzZSA6IENvbHVtblByb2dyZXNzaW9uOjpOb3JtYWwpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIFBhZ2luYXRpb246OlJpZ2h0VG9MZWZ0UGFnaW5hdGVkOgotICAgICAgICBzZXRDb2x1bW5B
eGlzKEhvcml6b250YWxDb2x1bW5BeGlzKTsKKyAgICAgICAgc2V0Q29sdW1uQXhpcyhDb2x1bW5B
eGlzOjpIb3Jpem9udGFsKTsKICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkp
Ci0gICAgICAgICAgICBzZXRDb2x1bW5Qcm9ncmVzc2lvbihpc0xlZnRUb1JpZ2h0RGlyZWN0aW9u
KCkgPyBSZXZlcnNlQ29sdW1uUHJvZ3Jlc3Npb24gOiBOb3JtYWxDb2x1bW5Qcm9ncmVzc2lvbik7
CisgICAgICAgICAgICBzZXRDb2x1bW5Qcm9ncmVzc2lvbihpc0xlZnRUb1JpZ2h0RGlyZWN0aW9u
KCkgPyBDb2x1bW5Qcm9ncmVzc2lvbjo6UmV2ZXJzZSA6IENvbHVtblByb2dyZXNzaW9uOjpOb3Jt
YWwpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzZXRDb2x1bW5Qcm9ncmVzc2lvbihpc0Zs
aXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gTm9ybWFsQ29sdW1uUHJvZ3Jlc3Npb24gOiBSZXZl
cnNlQ29sdW1uUHJvZ3Jlc3Npb24pOworICAgICAgICAgICAgc2V0Q29sdW1uUHJvZ3Jlc3Npb24o
aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSA/IENvbHVtblByb2dyZXNzaW9uOjpOb3JtYWwg
OiBDb2x1bW5Qcm9ncmVzc2lvbjo6UmV2ZXJzZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
UGFnaW5hdGlvbjo6VG9wVG9Cb3R0b21QYWdpbmF0ZWQ6Ci0gICAgICAgIHNldENvbHVtbkF4aXMo
VmVydGljYWxDb2x1bW5BeGlzKTsKKyAgICAgICAgc2V0Q29sdW1uQXhpcyhDb2x1bW5BeGlzOjpW
ZXJ0aWNhbCk7CiAgICAgICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQotICAgICAg
ICAgICAgc2V0Q29sdW1uUHJvZ3Jlc3Npb24oaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSA/
IFJldmVyc2VDb2x1bW5Qcm9ncmVzc2lvbiA6IE5vcm1hbENvbHVtblByb2dyZXNzaW9uKTsKKyAg
ICAgICAgICAgIHNldENvbHVtblByb2dyZXNzaW9uKGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2Rl
KCkgPyBDb2x1bW5Qcm9ncmVzc2lvbjo6UmV2ZXJzZSA6IENvbHVtblByb2dyZXNzaW9uOjpOb3Jt
YWwpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzZXRDb2x1bW5Qcm9ncmVzc2lvbihpc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBOb3JtYWxDb2x1bW5Qcm9ncmVzc2lvbiA6IFJldmVyc2VD
b2x1bW5Qcm9ncmVzc2lvbik7CisgICAgICAgICAgICBzZXRDb2x1bW5Qcm9ncmVzc2lvbihpc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBDb2x1bW5Qcm9ncmVzc2lvbjo6Tm9ybWFsIDogQ29sdW1u
UHJvZ3Jlc3Npb246OlJldmVyc2UpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBhZ2luYXRp
b246OkJvdHRvbVRvVG9wUGFnaW5hdGVkOgotICAgICAgICBzZXRDb2x1bW5BeGlzKFZlcnRpY2Fs
Q29sdW1uQXhpcyk7CisgICAgICAgIHNldENvbHVtbkF4aXMoQ29sdW1uQXhpczo6VmVydGljYWwp
OwogICAgICAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKLSAgICAgICAgICAgIHNl
dENvbHVtblByb2dyZXNzaW9uKGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgPyBOb3JtYWxD
b2x1bW5Qcm9ncmVzc2lvbiA6IFJldmVyc2VDb2x1bW5Qcm9ncmVzc2lvbik7CisgICAgICAgICAg
ICBzZXRDb2x1bW5Qcm9ncmVzc2lvbihpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gQ29s
dW1uUHJvZ3Jlc3Npb246Ok5vcm1hbCA6IENvbHVtblByb2dyZXNzaW9uOjpSZXZlcnNlKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgc2V0Q29sdW1uUHJvZ3Jlc3Npb24oaXNMZWZ0VG9SaWdo
dERpcmVjdGlvbigpID8gUmV2ZXJzZUNvbHVtblByb2dyZXNzaW9uIDogTm9ybWFsQ29sdW1uUHJv
Z3Jlc3Npb24pOworICAgICAgICAgICAgc2V0Q29sdW1uUHJvZ3Jlc3Npb24oaXNMZWZ0VG9SaWdo
dERpcmVjdGlvbigpID8gQ29sdW1uUHJvZ3Jlc3Npb246OlJldmVyc2UgOiBDb2x1bW5Qcm9ncmVz
c2lvbjo6Tm9ybWFsKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQYWdpbmF0aW9uOjpVbnBh
Z2luYXRlZDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkocmV2aXNpb24gMjMyMTQzKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE0OCw3ICsxNDgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlbmRlclN0eWxl
IGNsb25lKGNvbnN0IFJlbmRlclN0eWxlJik7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gY2xvbmVQdHIoY29uc3QgUmVuZGVyU3R5bGUmKTsKIAotICAgIHN0YXRpYyBS
ZW5kZXJTdHlsZSBjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KGNvbnN0IFJlbmRlclN0
eWxlJiBwYXJlbnRTdHlsZSwgRURpc3BsYXkpOworICAgIHN0YXRpYyBSZW5kZXJTdHlsZSBjcmVh
dGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHls
ZSwgRGlzcGxheVR5cGUpOwogICAgIHN0YXRpYyBSZW5kZXJTdHlsZSBjcmVhdGVTdHlsZUluaGVy
aXRpbmdGcm9tUHNldWRvU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBzZXVkb1N0eWxlKTsKIAog
I2lmICFBU1NFUlRfRElTQUJMRUQgfHwgRU5BQkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpCkBAIC0x
NzQsNyArMTc0LDcgQEAgcHVibGljOgogICAgIFN0eWxlQ29udGVudEFsaWdubWVudERhdGEgcmVz
b2x2ZWRKdXN0aWZ5Q29udGVudChjb25zdCBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhJiBub3Jt
YWxWYWx1ZUJlaGF2aW91cikgY29uc3Q7CiAKICAgICBQc2V1ZG9JZCBzdHlsZVR5cGUoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxQc2V1ZG9JZD4obV9ub25Jbmhlcml0ZWRGbGFncy5zdHls
ZVR5cGUpOyB9Ci0gICAgdm9pZCBzZXRTdHlsZVR5cGUoUHNldWRvSWQgc3R5bGVUeXBlKSB7IG1f
bm9uSW5oZXJpdGVkRmxhZ3Muc3R5bGVUeXBlID0gc3R5bGVUeXBlOyB9CisgICAgdm9pZCBzZXRT
dHlsZVR5cGUoUHNldWRvSWQgc3R5bGVUeXBlKSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Muc3R5bGVU
eXBlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0eWxlVHlwZSk7IH0KIAogICAgIFJlbmRlclN0
eWxlKiBnZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZCkgY29uc3Q7CiAgICAgUmVuZGVyU3R5
bGUqIGFkZENhY2hlZFBzZXVkb1N0eWxlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4pOwpA
QCAtMjI4LDcgKzIyOCw3IEBAIHB1YmxpYzoKICAgICBGaWx0ZXJPdXRzZXRzIGZpbHRlck91dHNl
dHMoKSBjb25zdCB7IHJldHVybiBoYXNGaWx0ZXIoKSA/IGZpbHRlcigpLm91dHNldHMoKSA6IEZp
bHRlck91dHNldHMoKTsgfQogCiAgICAgT3JkZXIgcnRsT3JkZXJpbmcoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxPcmRlcj4obV9pbmhlcml0ZWRGbGFncy5ydGxPcmRlcmluZyk7IH0KLSAg
ICB2b2lkIHNldFJUTE9yZGVyaW5nKE9yZGVyIG9yZGVyaW5nKSB7IG1faW5oZXJpdGVkRmxhZ3Mu
cnRsT3JkZXJpbmcgPSBvcmRlcmluZzsgfQorICAgIHZvaWQgc2V0UlRMT3JkZXJpbmcoT3JkZXIg
b3JkZXJpbmcpIHsgbV9pbmhlcml0ZWRGbGFncy5ydGxPcmRlcmluZyA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihvcmRlcmluZyk7IH0KIAogICAgIGJvb2wgaXNTdHlsZUF2YWlsYWJsZSgpIGNvbnN0
OwogCkBAIC0yNDAsNyArMjQwLDcgQEAgcHVibGljOgogCiAgICAgLy8gYXR0cmlidXRlIGdldHRl
ciBtZXRob2RzCiAKLSAgICBFRGlzcGxheSBkaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8RURpc3BsYXk+KG1fbm9uSW5oZXJpdGVkRmxhZ3MuZWZmZWN0aXZlRGlzcGxheSk7IH0K
KyAgICBEaXNwbGF5VHlwZSBkaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RGlz
cGxheVR5cGU+KG1fbm9uSW5oZXJpdGVkRmxhZ3MuZWZmZWN0aXZlRGlzcGxheSk7IH0KIAogICAg
IGNvbnN0IExlbmd0aCYgbGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5vZmZz
ZXQubGVmdCgpOyB9CiAgICAgY29uc3QgTGVuZ3RoJiByaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3Vycm91bmREYXRhLT5vZmZzZXQucmlnaHQoKTsgfQpAQCAtMzMxLDcgKzMzMSw3IEBAIHB1Ymxp
YzoKICAgICBPdmVyZmxvdyBvdmVyZmxvd0lubGluZURpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBvdmVyZmxvd1goKSA6IG92ZXJmbG93WSgpOyB9
CiAgICAgT3ZlcmZsb3cgb3ZlcmZsb3dCbG9ja0RpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBvdmVyZmxvd1koKSA6IG92ZXJmbG93WCgpOyB9CiAg
ICAgCi0gICAgRVZpc2liaWxpdHkgdmlzaWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEVWaXNpYmlsaXR5PihtX2luaGVyaXRlZEZsYWdzLnZpc2liaWxpdHkpOyB9CisgICAgVmlz
aWJpbGl0eSB2aXNpYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VmlzaWJpbGl0
eT4obV9pbmhlcml0ZWRGbGFncy52aXNpYmlsaXR5KTsgfQogICAgIFZlcnRpY2FsQWxpZ24gdmVy
dGljYWxBbGlnbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFZlcnRpY2FsQWxpZ24+KG1f
bm9uSW5oZXJpdGVkRmxhZ3MudmVydGljYWxBbGlnbik7IH0KICAgICBjb25zdCBMZW5ndGgmIHZl
cnRpY2FsQWxpZ25MZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2JveERhdGEtPnZlcnRpY2FsQWxp
Z24oKTsgfQogCkBAIC0zNjMsOCArMzYzLDggQEAgcHVibGljOgogICAgIEZvbnRTZWxlY3Rpb25W
YWx1ZSBmb250SXRhbGljKCkgY29uc3QgeyByZXR1cm4gZm9udERlc2NyaXB0aW9uKCkuaXRhbGlj
KCk7IH0KIAogICAgIGNvbnN0IExlbmd0aCYgdGV4dEluZGVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmFyZUluaGVyaXRlZERhdGEtPmluZGVudDsgfQotICAgIEVUZXh0QWxpZ24gdGV4dEFsaWduKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVRleHRBbGlnbj4obV9pbmhlcml0ZWRGbGFncy50
ZXh0QWxpZ24pOyB9Ci0gICAgRVRleHRUcmFuc2Zvcm0gdGV4dFRyYW5zZm9ybSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PEVUZXh0VHJhbnNmb3JtPihtX2luaGVyaXRlZEZsYWdzLnRleHRU
cmFuc2Zvcm0pOyB9CisgICAgVGV4dEFsaWduTW9kZSB0ZXh0QWxpZ24oKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxUZXh0QWxpZ25Nb2RlPihtX2luaGVyaXRlZEZsYWdzLnRleHRBbGlnbik7
IH0KKyAgICBUZXh0VHJhbnNmb3JtIHRleHRUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxUZXh0VHJhbnNmb3JtPihtX2luaGVyaXRlZEZsYWdzLnRleHRUcmFuc2Zvcm0pOyB9
CiAgICAgVGV4dERlY29yYXRpb24gdGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxUZXh0RGVjb3JhdGlvbj4obV9pbmhlcml0ZWRGbGFncy50ZXh0RGVj
b3JhdGlvbnMpOyB9CiAgICAgVGV4dERlY29yYXRpb24gdGV4dERlY29yYXRpb24oKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RGVjb3JhdGlvbj4obV92aXN1YWxEYXRhLT50ZXh0RGVj
b3JhdGlvbik7IH0KICAgICBUZXh0RGVjb3JhdGlvblN0eWxlIHRleHREZWNvcmF0aW9uU3R5bGUo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RGVjb3JhdGlvblN0eWxlPihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT50ZXh0RGVjb3JhdGlvblN0eWxlKTsgfQpAQCAtMzk0LDEyICszOTQs
MTIgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IExlbmd0aCYgbGluZUhlaWdo
dCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBjb21wdXRlZExpbmVIZWlnaHQoKSBj
b25zdDsKIAotICAgIEVXaGl0ZVNwYWNlIHdoaXRlU3BhY2UoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxFV2hpdGVTcGFjZT4obV9pbmhlcml0ZWRGbGFncy53aGl0ZVNwYWNlKTsgfQotICAg
IHN0YXRpYyBib29sIGF1dG9XcmFwKEVXaGl0ZVNwYWNlKTsKKyAgICBXaGl0ZVNwYWNlIHdoaXRl
U3BhY2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxXaGl0ZVNwYWNlPihtX2luaGVyaXRl
ZEZsYWdzLndoaXRlU3BhY2UpOyB9CisgICAgc3RhdGljIGJvb2wgYXV0b1dyYXAoV2hpdGVTcGFj
ZSk7CiAgICAgYm9vbCBhdXRvV3JhcCgpIGNvbnN0IHsgcmV0dXJuIGF1dG9XcmFwKHdoaXRlU3Bh
Y2UoKSk7IH0KLSAgICBzdGF0aWMgYm9vbCBwcmVzZXJ2ZU5ld2xpbmUoRVdoaXRlU3BhY2UpOwor
ICAgIHN0YXRpYyBib29sIHByZXNlcnZlTmV3bGluZShXaGl0ZVNwYWNlKTsKICAgICBib29sIHBy
ZXNlcnZlTmV3bGluZSgpIGNvbnN0IHsgcmV0dXJuIHByZXNlcnZlTmV3bGluZSh3aGl0ZVNwYWNl
KCkpOyB9Ci0gICAgc3RhdGljIGJvb2wgY29sbGFwc2VXaGl0ZVNwYWNlKEVXaGl0ZVNwYWNlKTsK
KyAgICBzdGF0aWMgYm9vbCBjb2xsYXBzZVdoaXRlU3BhY2UoV2hpdGVTcGFjZSk7CiAgICAgYm9v
bCBjb2xsYXBzZVdoaXRlU3BhY2UoKSBjb25zdCB7IHJldHVybiBjb2xsYXBzZVdoaXRlU3BhY2Uo
d2hpdGVTcGFjZSgpKTsgfQogICAgIGJvb2wgaXNDb2xsYXBzaWJsZVdoaXRlU3BhY2UoVUNoYXIp
IGNvbnN0OwogICAgIGJvb2wgYnJlYWtPbmx5QWZ0ZXJXaGl0ZVNwYWNlKCkgY29uc3Q7CkBAIC00
MzYsMTIgKzQzNiwxMiBAQCBwdWJsaWM6CiAgICAgQm9yZGVyQ29sbGFwc2UgYm9yZGVyQ29sbGFw
c2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCb3JkZXJDb2xsYXBzZT4obV9pbmhlcml0
ZWRGbGFncy5ib3JkZXJDb2xsYXBzZSk7IH0KICAgICBmbG9hdCBob3Jpem9udGFsQm9yZGVyU3Bh
Y2luZygpIGNvbnN0OwogICAgIGZsb2F0IHZlcnRpY2FsQm9yZGVyU3BhY2luZygpIGNvbnN0Owot
ICAgIEVFbXB0eUNlbGwgZW1wdHlDZWxscygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVF
bXB0eUNlbGw+KG1faW5oZXJpdGVkRmxhZ3MuZW1wdHlDZWxscyk7IH0KLSAgICBFQ2FwdGlvblNp
ZGUgY2FwdGlvblNpZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQ2FwdGlvblNpZGU+
KG1faW5oZXJpdGVkRmxhZ3MuY2FwdGlvblNpZGUpOyB9CisgICAgRW1wdHlDZWxsIGVtcHR5Q2Vs
bHMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFbXB0eUNlbGw+KG1faW5oZXJpdGVkRmxh
Z3MuZW1wdHlDZWxscyk7IH0KKyAgICBDYXB0aW9uU2lkZSBjYXB0aW9uU2lkZSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PENhcHRpb25TaWRlPihtX2luaGVyaXRlZEZsYWdzLmNhcHRpb25T
aWRlKTsgfQogCi0gICAgRUxpc3RTdHlsZVR5cGUgbGlzdFN0eWxlVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEVMaXN0U3R5bGVUeXBlPihtX2luaGVyaXRlZEZsYWdzLmxpc3RTdHls
ZVR5cGUpOyB9CisgICAgTGlzdFN0eWxlVHlwZSBsaXN0U3R5bGVUeXBlKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8TGlzdFN0eWxlVHlwZT4obV9pbmhlcml0ZWRGbGFncy5saXN0U3R5bGVU
eXBlKTsgfQogICAgIFN0eWxlSW1hZ2UqIGxpc3RTdHlsZUltYWdlKCkgY29uc3Q7Ci0gICAgRUxp
c3RTdHlsZVBvc2l0aW9uIGxpc3RTdHlsZVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8RUxpc3RTdHlsZVBvc2l0aW9uPihtX2luaGVyaXRlZEZsYWdzLmxpc3RTdHlsZVBvc2l0
aW9uKTsgfQorICAgIExpc3RTdHlsZVBvc2l0aW9uIGxpc3RTdHlsZVBvc2l0aW9uKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8TGlzdFN0eWxlUG9zaXRpb24+KG1faW5oZXJpdGVkRmxhZ3Mu
bGlzdFN0eWxlUG9zaXRpb24pOyB9CiAKICAgICBjb25zdCBMZW5ndGgmIG1hcmdpblRvcCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5tYXJnaW4udG9wKCk7IH0KICAgICBjb25zdCBM
ZW5ndGgmIG1hcmdpbkJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vycm91bmREYXRhLT5tYXJn
aW4uYm90dG9tKCk7IH0KQEAgLTQ2Niw3ICs0NjYsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgTGVu
Z3RoJiBwYWRkaW5nU3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+cGFkZGlu
Zy5zdGFydCh3cml0aW5nTW9kZSgpLCBkaXJlY3Rpb24oKSk7IH0KICAgICBjb25zdCBMZW5ndGgm
IHBhZGRpbmdFbmQoKSBjb25zdCB7IHJldHVybiBtX3N1cnJvdW5kRGF0YS0+cGFkZGluZy5lbmQo
d3JpdGluZ01vZGUoKSwgZGlyZWN0aW9uKCkpOyB9CiAKLSAgICBFQ3Vyc29yIGN1cnNvcigpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVDdXJzb3I+KG1faW5oZXJpdGVkRmxhZ3MuY3Vyc29y
KTsgfQorICAgIEN1cnNvclR5cGUgY3Vyc29yKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
Q3Vyc29yVHlwZT4obV9pbmhlcml0ZWRGbGFncy5jdXJzb3IpOyB9CiAKICNpZiBFTkFCTEUoQ1VS
U09SX1ZJU0lCSUxJVFkpCiAgICAgQ3Vyc29yVmlzaWJpbGl0eSBjdXJzb3JWaXNpYmlsaXR5KCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q3Vyc29yVmlzaWJpbGl0eT4obV9pbmhlcml0ZWRG
bGFncy5jdXJzb3JWaXNpYmlsaXR5KTsgfQpAQCAtNDc0LDcgKzQ3NCw3IEBAIHB1YmxpYzoKIAog
ICAgIEN1cnNvckxpc3QqIGN1cnNvcnMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWRE
YXRhLT5jdXJzb3JEYXRhLmdldCgpOyB9CiAKLSAgICBFSW5zaWRlTGluayBpbnNpZGVMaW5rKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUluc2lkZUxpbms+KG1faW5oZXJpdGVkRmxhZ3Mu
aW5zaWRlTGluayk7IH0KKyAgICBJbnNpZGVMaW5rIGluc2lkZUxpbmsoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxJbnNpZGVMaW5rPihtX2luaGVyaXRlZEZsYWdzLmluc2lkZUxpbmspOyB9
CiAgICAgYm9vbCBpc0xpbmsoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmlz
TGluazsgfQogCiAgICAgYm9vbCBpbnNpZGVEZWZhdWx0QnV0dG9uKCkgY29uc3QgeyByZXR1cm4g
bV9pbmhlcml0ZWRGbGFncy5pbnNpZGVEZWZhdWx0QnV0dG9uOyB9CkBAIC01OTIsNyArNTkyLDcg
QEAgcHVibGljOgogICAgIHNob3J0IGh5cGhlbmF0aW9uTGltaXRMaW5lcygpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRMaW5lczsgfQogICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgaHlwaGVuYXRpb25TdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3Jh
cmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvblN0cmluZzsgfQogICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgbG9jYWxlKCkgY29uc3QgeyByZXR1cm4gZm9udERlc2NyaXB0aW9uKCkubG9jYWxlKCk7
IH0KLSAgICBFQm9yZGVyRml0IGJvcmRlckZpdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEVCb3JkZXJGaXQ+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJvcmRlckZpdCk7IH0KKyAgICBC
b3JkZXJGaXQgYm9yZGVyRml0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Qm9yZGVyRml0
PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ib3JkZXJGaXQpOyB9CiAgICAgUmVzaXplIHJlc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJlc2l6ZT4obV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+cmVzaXplKTsgfQogICAgIENvbHVtbkF4aXMgY29sdW1uQXhpcygpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PENvbHVtbkF4aXM+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm11bHRp
Q29sLT5heGlzKTsgfQogICAgIGJvb2wgaGFzSW5saW5lQ29sdW1uQXhpcygpIGNvbnN0OwpAQCAt
NjUxLDcgKzY1MSw3IEBAIHB1YmxpYzoKICAgICBMaW5lU25hcCBsaW5lU25hcCgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PExpbmVTbmFwPihtX3JhcmVJbmhlcml0ZWREYXRhLT5saW5lU25h
cCk7IH0KICAgICBMaW5lQWxpZ24gbGluZUFsaWduKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8TGluZUFsaWduPihtX3JhcmVJbmhlcml0ZWREYXRhLT5saW5lQWxpZ24pOyB9CiAKLSAgICBF
UG9pbnRlckV2ZW50cyBwb2ludGVyRXZlbnRzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
RVBvaW50ZXJFdmVudHM+KG1faW5oZXJpdGVkRmxhZ3MucG9pbnRlckV2ZW50cyk7IH0KKyAgICBQ
b2ludGVyRXZlbnRzIHBvaW50ZXJFdmVudHMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQ
b2ludGVyRXZlbnRzPihtX2luaGVyaXRlZEZsYWdzLnBvaW50ZXJFdmVudHMpOyB9CiAgICAgY29u
c3QgQW5pbWF0aW9uTGlzdCogYW5pbWF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPmFuaW1hdGlvbnMuZ2V0KCk7IH0KICAgICBjb25zdCBBbmltYXRpb25MaXN0
KiB0cmFuc2l0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRy
YW5zaXRpb25zLmdldCgpOyB9CiAKQEAgLTc5Niw4ICs3OTYsOCBAQCBwdWJsaWM6CiAKIC8vIGF0
dHJpYnV0ZSBzZXR0ZXIgbWV0aG9kcwogCi0gICAgdm9pZCBzZXREaXNwbGF5KEVEaXNwbGF5IHYp
IHsgbV9ub25Jbmhlcml0ZWRGbGFncy5lZmZlY3RpdmVEaXNwbGF5ID0gdjsgfQotICAgIHZvaWQg
c2V0T3JpZ2luYWxEaXNwbGF5KEVEaXNwbGF5IHYpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5vcmln
aW5hbERpc3BsYXkgPSB2OyB9CisgICAgdm9pZCBzZXREaXNwbGF5KERpc3BsYXlUeXBlIHYpIHsg
bV9ub25Jbmhlcml0ZWRGbGFncy5lZmZlY3RpdmVEaXNwbGF5ID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHYpOyB9CisgICAgdm9pZCBzZXRPcmlnaW5hbERpc3BsYXkoRGlzcGxheVR5cGUgdikgeyBt
X25vbkluaGVyaXRlZEZsYWdzLm9yaWdpbmFsRGlzcGxheSA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
Pih2KTsgfQogICAgIHZvaWQgc2V0UG9zaXRpb24oUG9zaXRpb25UeXBlIHYpIHsgbV9ub25Jbmhl
cml0ZWRGbGFncy5wb3NpdGlvbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KTsgfQogICAgIHZv
aWQgc2V0RmxvYXRpbmcoRmxvYXQgdikgeyBtX25vbkluaGVyaXRlZEZsYWdzLmZsb2F0aW5nID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYpOyB9CiAKQEAgLTg4Miw3ICs4ODIsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHNldE92ZXJmbG93WChPdmVyZmxvdyB2KSB7IG1fbm9uSW5oZXJpdGVkRmxh
Z3Mub3ZlcmZsb3dYID0gIHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KTsgfQogICAgIHZvaWQgc2V0
T3ZlcmZsb3dZKE92ZXJmbG93IHYpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5vdmVyZmxvd1kgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4odik7IH0KLSAgICB2b2lkIHNldFZpc2liaWxpdHkoRVZpc2li
aWxpdHkgdikgeyBtX2luaGVyaXRlZEZsYWdzLnZpc2liaWxpdHkgPSB2OyB9CisgICAgdm9pZCBz
ZXRWaXNpYmlsaXR5KFZpc2liaWxpdHkgdikgeyBtX2luaGVyaXRlZEZsYWdzLnZpc2liaWxpdHkg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odik7IH0KICAgICB2b2lkIHNldFZlcnRpY2FsQWxpZ24o
VmVydGljYWxBbGlnbiB2KSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3MudmVydGljYWxBbGlnbiA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPih2KTsgfQogICAgIHZvaWQgc2V0VmVydGljYWxBbGlnbkxlbmd0
aChMZW5ndGgmJiBsZW5ndGgpIHsgc2V0VmVydGljYWxBbGlnbihWZXJ0aWNhbEFsaWduOjpMZW5n
dGgpOyBTRVRfVkFSKG1fYm94RGF0YSwgbV92ZXJ0aWNhbEFsaWduLCBXVEZNb3ZlKGxlbmd0aCkp
OyB9CiAKQEAgLTkxMywyMSArOTEzLDIxIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Q29sb3Io
Y29uc3QgQ29sb3ImKTsKICAgICB2b2lkIHNldFRleHRJbmRlbnQoTGVuZ3RoJiYgbGVuZ3RoKSB7
IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgaW5kZW50LCBXVEZNb3ZlKGxlbmd0aCkpOyB9
Ci0gICAgdm9pZCBzZXRUZXh0QWxpZ24oRVRleHRBbGlnbiB2KSB7IG1faW5oZXJpdGVkRmxhZ3Mu
dGV4dEFsaWduID0gdjsgfQotICAgIHZvaWQgc2V0VGV4dFRyYW5zZm9ybShFVGV4dFRyYW5zZm9y
bSB2KSB7IG1faW5oZXJpdGVkRmxhZ3MudGV4dFRyYW5zZm9ybSA9IHY7IH0KKyAgICB2b2lkIHNl
dFRleHRBbGlnbihUZXh0QWxpZ25Nb2RlIHYpIHsgbV9pbmhlcml0ZWRGbGFncy50ZXh0QWxpZ24g
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odik7IH0KKyAgICB2b2lkIHNldFRleHRUcmFuc2Zvcm0o
VGV4dFRyYW5zZm9ybSB2KSB7IG1faW5oZXJpdGVkRmxhZ3MudGV4dFRyYW5zZm9ybSA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPih2KTsgfQogICAgIHZvaWQgYWRkVG9UZXh0RGVjb3JhdGlvbnNJbkVm
ZmVjdChUZXh0RGVjb3JhdGlvbiB2KSB7IG1faW5oZXJpdGVkRmxhZ3MudGV4dERlY29yYXRpb25z
IHw9IHY7IH0KICAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uc0luRWZmZWN0KFRleHREZWNvcmF0
aW9uIHYpIHsgbV9pbmhlcml0ZWRGbGFncy50ZXh0RGVjb3JhdGlvbnMgPSB2OyB9CiAgICAgdm9p
ZCBzZXRUZXh0RGVjb3JhdGlvbihUZXh0RGVjb3JhdGlvbiB2KSB7IFNFVF9WQVIobV92aXN1YWxE
YXRhLCB0ZXh0RGVjb3JhdGlvbiwgdik7IH0KLSAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uU3R5
bGUoVGV4dERlY29yYXRpb25TdHlsZSB2KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0
YSwgdGV4dERlY29yYXRpb25TdHlsZSwgdik7IH0KLSAgICB2b2lkIHNldFRleHREZWNvcmF0aW9u
U2tpcChUZXh0RGVjb3JhdGlvblNraXAgc2tpcCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERh
dGEsIHRleHREZWNvcmF0aW9uU2tpcCwgc2tpcCk7IH0KLSAgICB2b2lkIHNldFRleHRVbmRlcmxp
bmVQb3NpdGlvbihUZXh0VW5kZXJsaW5lUG9zaXRpb24gdikgeyBTRVRfVkFSKG1fcmFyZUluaGVy
aXRlZERhdGEsIHRleHRVbmRlcmxpbmVQb3NpdGlvbiwgdik7IH0KLSAgICB2b2lkIHNldERpcmVj
dGlvbihUZXh0RGlyZWN0aW9uIHYpIHsgbV9pbmhlcml0ZWRGbGFncy5kaXJlY3Rpb24gPSB2OyB9
CisgICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvblN0eWxlKFRleHREZWNvcmF0aW9uU3R5bGUgdikg
eyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHRleHREZWNvcmF0aW9uU3R5bGUsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPih2KSk7IH0KKyAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uU2tp
cChUZXh0RGVjb3JhdGlvblNraXAgc2tpcCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEs
IHRleHREZWNvcmF0aW9uU2tpcCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNraXApKTsgfQorICAg
IHZvaWQgc2V0VGV4dFVuZGVybGluZVBvc2l0aW9uKFRleHRVbmRlcmxpbmVQb3NpdGlvbiB2KSB7
IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dFVuZGVybGluZVBvc2l0aW9uLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4odikpOyB9CisgICAgdm9pZCBzZXREaXJlY3Rpb24oVGV4dERpcmVj
dGlvbiB2KSB7IG1faW5oZXJpdGVkRmxhZ3MuZGlyZWN0aW9uID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHYpOyB9CiAgICAgdm9pZCBzZXRIYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uKGJvb2wgdikg
eyBtX25vbkluaGVyaXRlZEZsYWdzLmhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb24gPSB2OyB9CiAg
ICAgdm9pZCBzZXRMaW5lSGVpZ2h0KExlbmd0aCYmKTsKICAgICBib29sIHNldFpvb20oZmxvYXQp
OwogICAgIHZvaWQgc2V0Wm9vbVdpdGhvdXRSZXR1cm5WYWx1ZShmbG9hdCBmKSB7IHNldFpvb20o
Zik7IH0KICAgICBib29sIHNldEVmZmVjdGl2ZVpvb20oZmxvYXQpOwotICAgIHZvaWQgc2V0VGV4
dFpvb20oVGV4dFpvb20gdikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRab29t
LCB2KTsgfQorICAgIHZvaWQgc2V0VGV4dFpvb20oVGV4dFpvb20gdikgeyBTRVRfVkFSKG1fcmFy
ZUluaGVyaXRlZERhdGEsIHRleHRab29tLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odikpOyB9CiAK
ICNpZiBFTkFCTEUoQ1NTM19URVhUKQogICAgIHZvaWQgc2V0VGV4dEluZGVudExpbmUoVGV4dElu
ZGVudExpbmUgdikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRJbmRlbnRMaW5l
LCB2KTsgfQpAQCAtOTUyLDcgKzk1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEltYWdlUmVz
b2x1dGlvbihmbG9hdCBmKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgaW1hZ2VSZXNv
bHV0aW9uLCBmKTsgfQogI2VuZGlmCiAKLSAgICB2b2lkIHNldFdoaXRlU3BhY2UoRVdoaXRlU3Bh
Y2UgdikgeyBtX2luaGVyaXRlZEZsYWdzLndoaXRlU3BhY2UgPSB2OyB9CisgICAgdm9pZCBzZXRX
aGl0ZVNwYWNlKFdoaXRlU3BhY2UgdikgeyBtX2luaGVyaXRlZEZsYWdzLndoaXRlU3BhY2UgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4odik7IH0KIAogICAgIHZvaWQgc2V0V29yZFNwYWNpbmcoTGVu
Z3RoJiYpOwogICAgIHZvaWQgc2V0TGV0dGVyU3BhY2luZyhmbG9hdCk7CkBAIC05NzgsMTYgKzk3
OCwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRCb3JkZXJDb2xsYXBzZShCb3JkZXJDb2xsYXBz
ZSBjb2xsYXBzZSkgeyBtX2luaGVyaXRlZEZsYWdzLmJvcmRlckNvbGxhcHNlID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGNvbGxhcHNlKTsgfQogICAgIHZvaWQgc2V0SG9yaXpvbnRhbEJvcmRlclNw
YWNpbmcoZmxvYXQpOwogICAgIHZvaWQgc2V0VmVydGljYWxCb3JkZXJTcGFjaW5nKGZsb2F0KTsK
LSAgICB2b2lkIHNldEVtcHR5Q2VsbHMoRUVtcHR5Q2VsbCB2KSB7IG1faW5oZXJpdGVkRmxhZ3Mu
ZW1wdHlDZWxscyA9IHY7IH0KLSAgICB2b2lkIHNldENhcHRpb25TaWRlKEVDYXB0aW9uU2lkZSB2
KSB7IG1faW5oZXJpdGVkRmxhZ3MuY2FwdGlvblNpZGUgPSB2OyB9CisgICAgdm9pZCBzZXRFbXB0
eUNlbGxzKEVtcHR5Q2VsbCB2KSB7IG1faW5oZXJpdGVkRmxhZ3MuZW1wdHlDZWxscyA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPih2KTsgfQorICAgIHZvaWQgc2V0Q2FwdGlvblNpZGUoQ2FwdGlvblNp
ZGUgdikgeyBtX2luaGVyaXRlZEZsYWdzLmNhcHRpb25TaWRlID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHYpOyB9CiAKICAgICB2b2lkIHNldEFzcGVjdFJhdGlvVHlwZShBc3BlY3RSYXRpb1R5cGUg
YXNwZWN0UmF0aW9UeXBlKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYXNwZWN0
UmF0aW9UeXBlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYXNwZWN0UmF0aW9UeXBlKSk7IH0KICAg
ICB2b2lkIHNldEFzcGVjdFJhdGlvRGVub21pbmF0b3IoZmxvYXQgdikgeyBTRVRfVkFSKG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEsIGFzcGVjdFJhdGlvRGVub21pbmF0b3IsIHYpOyB9CiAgICAgdm9p
ZCBzZXRBc3BlY3RSYXRpb051bWVyYXRvcihmbG9hdCB2KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgYXNwZWN0UmF0aW9OdW1lcmF0b3IsIHYpOyB9CiAKLSAgICB2b2lkIHNldExp
c3RTdHlsZVR5cGUoRUxpc3RTdHlsZVR5cGUgdikgeyBtX2luaGVyaXRlZEZsYWdzLmxpc3RTdHls
ZVR5cGUgPSB2OyB9CisgICAgdm9pZCBzZXRMaXN0U3R5bGVUeXBlKExpc3RTdHlsZVR5cGUgdikg
eyBtX2luaGVyaXRlZEZsYWdzLmxpc3RTdHlsZVR5cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
dik7IH0KICAgICB2b2lkIHNldExpc3RTdHlsZUltYWdlKFJlZlB0cjxTdHlsZUltYWdlPiYmKTsK
LSAgICB2b2lkIHNldExpc3RTdHlsZVBvc2l0aW9uKEVMaXN0U3R5bGVQb3NpdGlvbiB2KSB7IG1f
aW5oZXJpdGVkRmxhZ3MubGlzdFN0eWxlUG9zaXRpb24gPSB2OyB9CisgICAgdm9pZCBzZXRMaXN0
U3R5bGVQb3NpdGlvbihMaXN0U3R5bGVQb3NpdGlvbiB2KSB7IG1faW5oZXJpdGVkRmxhZ3MubGlz
dFN0eWxlUG9zaXRpb24gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odik7IH0KIAogICAgIHZvaWQg
cmVzZXRNYXJnaW4oKSB7IFNFVF9WQVIobV9zdXJyb3VuZERhdGEsIG1hcmdpbiwgTGVuZ3RoQm94
KEZpeGVkKSk7IH0KICAgICB2b2lkIHNldE1hcmdpblRvcChMZW5ndGgmJiBsZW5ndGgpIHsgU0VU
X1ZBUihtX3N1cnJvdW5kRGF0YSwgbWFyZ2luLnRvcCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CkBA
IC0xMDA0LDE2ICsxMDA0LDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBhZGRpbmdMZWZ0KExl
bmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBwYWRkaW5nLmxlZnQoKSwg
V1RGTW92ZShsZW5ndGgpKTsgfQogICAgIHZvaWQgc2V0UGFkZGluZ1JpZ2h0KExlbmd0aCYmIGxl
bmd0aCkgeyBTRVRfVkFSKG1fc3Vycm91bmREYXRhLCBwYWRkaW5nLnJpZ2h0KCksIFdURk1vdmUo
bGVuZ3RoKSk7IH0KIAotICAgIHZvaWQgc2V0Q3Vyc29yKEVDdXJzb3IgYykgeyBtX2luaGVyaXRl
ZEZsYWdzLmN1cnNvciA9IGM7IH0KKyAgICB2b2lkIHNldEN1cnNvcihDdXJzb3JUeXBlIGMpIHsg
bV9pbmhlcml0ZWRGbGFncy5jdXJzb3IgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYyk7IH0KICAg
ICB2b2lkIGFkZEN1cnNvcihSZWZQdHI8U3R5bGVJbWFnZT4mJiwgY29uc3QgSW50UG9pbnQmIGhv
dFNwb3QgPSBJbnRQb2ludCgpKTsKICAgICB2b2lkIHNldEN1cnNvckxpc3QoUmVmUHRyPEN1cnNv
ckxpc3Q+JiYpOwogICAgIHZvaWQgY2xlYXJDdXJzb3JMaXN0KCk7CiAKICNpZiBFTkFCTEUoQ1VS
U09SX1ZJU0lCSUxJVFkpCi0gICAgdm9pZCBzZXRDdXJzb3JWaXNpYmlsaXR5KEN1cnNvclZpc2li
aWxpdHkgYykgeyBtX2luaGVyaXRlZEZsYWdzLmN1cnNvclZpc2liaWxpdHkgPSBjOyB9CisgICAg
dm9pZCBzZXRDdXJzb3JWaXNpYmlsaXR5KEN1cnNvclZpc2liaWxpdHkgYykgeyBtX2luaGVyaXRl
ZEZsYWdzLmN1cnNvclZpc2liaWxpdHkgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYyk7IH0KICNl
bmRpZgogCi0gICAgdm9pZCBzZXRJbnNpZGVMaW5rKEVJbnNpZGVMaW5rIGluc2lkZUxpbmspIHsg
bV9pbmhlcml0ZWRGbGFncy5pbnNpZGVMaW5rID0gaW5zaWRlTGluazsgfQorICAgIHZvaWQgc2V0
SW5zaWRlTGluayhJbnNpZGVMaW5rIGluc2lkZUxpbmspIHsgbV9pbmhlcml0ZWRGbGFncy5pbnNp
ZGVMaW5rID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluc2lkZUxpbmspOyB9CiAgICAgdm9pZCBz
ZXRJc0xpbmsoYm9vbCB2KSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3MuaXNMaW5rID0gdjsgfQogCiAg
ICAgdm9pZCBzZXRJbnNpZGVEZWZhdWx0QnV0dG9uKGJvb2wgaW5zaWRlRGVmYXVsdEJ1dHRvbikg
eyBtX2luaGVyaXRlZEZsYWdzLmluc2lkZURlZmF1bHRCdXR0b24gPSBpbnNpZGVEZWZhdWx0QnV0
dG9uOyB9CkBAIC0xMTE2LDE1ICsxMTE2LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE92ZXJm
bG93V3JhcChPdmVyZmxvd1dyYXAgYikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIG92
ZXJmbG93V3JhcCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGIpKTsgfQogICAgIHZvaWQgc2V0TkJT
UE1vZGUoTkJTUE1vZGUgYikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIG5ic3BNb2Rl
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYikpOyB9CiAgICAgdm9pZCBzZXRMaW5lQnJlYWsoTGlu
ZUJyZWFrIGIpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBsaW5lQnJlYWssIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihiKSk7IH0KLSAgICB2b2lkIHNldEh5cGhlbnMoSHlwaGVucyBoKSB7
IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgaHlwaGVucywgaCk7IH0KKyAgICB2b2lkIHNl
dEh5cGhlbnMoSHlwaGVucyBoKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgaHlwaGVu
cywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGgpKTsgfQogICAgIHZvaWQgc2V0SHlwaGVuYXRpb25M
aW1pdEJlZm9yZShzaG9ydCBsaW1pdCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGh5
cGhlbmF0aW9uTGltaXRCZWZvcmUsIGxpbWl0KTsgfQogICAgIHZvaWQgc2V0SHlwaGVuYXRpb25M
aW1pdEFmdGVyKHNob3J0IGxpbWl0KSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgaHlw
aGVuYXRpb25MaW1pdEFmdGVyLCBsaW1pdCk7IH0KICAgICB2b2lkIHNldEh5cGhlbmF0aW9uTGlt
aXRMaW5lcyhzaG9ydCBsaW1pdCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGh5cGhl
bmF0aW9uTGltaXRMaW5lcywgbGltaXQpOyB9CiAgICAgdm9pZCBzZXRIeXBoZW5hdGlvblN0cmlu
Zyhjb25zdCBBdG9taWNTdHJpbmcmIGgpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBo
eXBoZW5hdGlvblN0cmluZywgaCk7IH0KLSAgICB2b2lkIHNldEJvcmRlckZpdChFQm9yZGVyRml0
IGIpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBib3JkZXJGaXQsIGIpOyB9Cisg
ICAgdm9pZCBzZXRCb3JkZXJGaXQoQm9yZGVyRml0IGIpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLCBib3JkZXJGaXQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihiKSk7IH0KICAgICB2
b2lkIHNldFJlc2l6ZShSZXNpemUgcikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEs
IHJlc2l6ZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHIpKTsgfQotICAgIHZvaWQgc2V0Q29sdW1u
QXhpcyhDb2x1bW5BeGlzIGF4aXMpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YSwgbXVsdGlDb2wsIGF4aXMsIGF4aXMpOyB9Ci0gICAgdm9pZCBzZXRDb2x1bW5Qcm9ncmVz
c2lvbihDb2x1bW5Qcm9ncmVzc2lvbiBwcm9ncmVzc2lvbikgeyBTRVRfTkVTVEVEX1ZBUihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwgcHJvZ3Jlc3Npb24sIHByb2dyZXNzaW9uKTsg
fQorICAgIHZvaWQgc2V0Q29sdW1uQXhpcyhDb2x1bW5BeGlzIGF4aXMpIHsgU0VUX05FU1RFRF9W
QVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbXVsdGlDb2wsIGF4aXMsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihheGlzKSk7IH0KKyAgICB2b2lkIHNldENvbHVtblByb2dyZXNzaW9uKENvbHVtblBy
b2dyZXNzaW9uIHByb2dyZXNzaW9uKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEsIG11bHRpQ29sLCBwcm9ncmVzc2lvbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHByb2dy
ZXNzaW9uKSk7IH0KICAgICB2b2lkIHNldENvbHVtbldpZHRoKGZsb2F0IGYpIHsgU0VUX05FU1RF
RF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbXVsdGlDb2wsIGF1dG9XaWR0aCwgZmFsc2Up
OyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwgd2lkdGgs
IGYpOyB9CiAgICAgdm9pZCBzZXRIYXNBdXRvQ29sdW1uV2lkdGgoKSB7IFNFVF9ORVNURURfVkFS
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11bHRpQ29sLCBhdXRvV2lkdGgsIHRydWUpOyBTRVRf
TkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBtdWx0aUNvbCwgd2lkdGgsIDApOyB9
CiAgICAgdm9pZCBzZXRDb2x1bW5Db3VudCh1bnNpZ25lZCBzaG9ydCBjKSB7IFNFVF9ORVNURURf
VkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIG11bHRpQ29sLCBhdXRvQ291bnQsIGZhbHNlKTsg
U0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgbXVsdGlDb2wsIGNvdW50LCBj
KTsgfQpAQCAtMTE0OSw4ICsxMTQ5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0VGV4dENvbWJp
bmUoVGV4dENvbWJpbmUgdikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHRleHRD
b21iaW5lLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odikpOyB9CiAgICAgdm9pZCBzZXRUZXh0RGVj
b3JhdGlvbkNvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YSwgdGV4dERlY29yYXRpb25Db2xvciwgYyk7IH0KICAgICB2b2lkIHNldFRleHRFbXBoYXNp
c0NvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4
dEVtcGhhc2lzQ29sb3IsIGMpOyB9Ci0gICAgdm9pZCBzZXRUZXh0RW1waGFzaXNGaWxsKFRleHRF
bXBoYXNpc0ZpbGwgZmlsbCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBo
YXNpc0ZpbGwsIGZpbGwpOyB9Ci0gICAgdm9pZCBzZXRUZXh0RW1waGFzaXNNYXJrKFRleHRFbXBo
YXNpc01hcmsgbWFyaykgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBoYXNp
c01hcmssIG1hcmspOyB9CisgICAgdm9pZCBzZXRUZXh0RW1waGFzaXNGaWxsKFRleHRFbXBoYXNp
c0ZpbGwgZmlsbCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBoYXNpc0Zp
bGwsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihmaWxsKSk7IH0KKyAgICB2b2lkIHNldFRleHRFbXBo
YXNpc01hcmsoVGV4dEVtcGhhc2lzTWFyayBtYXJrKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVk
RGF0YSwgdGV4dEVtcGhhc2lzTWFyaywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1hcmspKTsgfQog
ICAgIHZvaWQgc2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhjb25zdCBBdG9taWNTdHJpbmcmIG1h
cmspIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RW1waGFzaXNDdXN0b21NYXJr
LCBtYXJrKTsgfQogICAgIHZvaWQgc2V0VGV4dEVtcGhhc2lzUG9zaXRpb24oVGV4dEVtcGhhc2lz
UG9zaXRpb24gcG9zaXRpb24pIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RW1w
aGFzaXNQb3NpdGlvbiwgcG9zaXRpb24pOyB9CiAgICAgYm9vbCBzZXRUZXh0T3JpZW50YXRpb24o
VGV4dE9yaWVudGF0aW9uKTsKQEAgLTExNTgsNyArMTE1OCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldE9iamVjdEZpdChPYmplY3RGaXQgZml0KSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVk
RGF0YSwgb2JqZWN0Rml0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZml0KSk7IH0KICAgICB2b2lk
IHNldE9iamVjdFBvc2l0aW9uKExlbmd0aFBvaW50JiYgcG9zaXRpb24pIHsgU0VUX1ZBUihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLCBvYmplY3RQb3NpdGlvbiwgV1RGTW92ZShwb3NpdGlvbikpOyB9
CiAKLSAgICB2b2lkIHNldFJ1YnlQb3NpdGlvbihSdWJ5UG9zaXRpb24gcG9zaXRpb24pIHsgU0VU
X1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBydWJ5UG9zaXRpb24sIHBvc2l0aW9uKTsgfQorICAg
IHZvaWQgc2V0UnVieVBvc2l0aW9uKFJ1YnlQb3NpdGlvbiBwb3NpdGlvbikgeyBTRVRfVkFSKG1f
cmFyZUluaGVyaXRlZERhdGEsIHJ1YnlQb3NpdGlvbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBv
c2l0aW9uKSk7IH0KIAogICAgIHZvaWQgc2V0RmlsdGVyKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
IG9wcykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBmaWx0ZXIsIG9w
ZXJhdGlvbnMsIG9wcyk7IH0KICAgICB2b2lkIHNldENvbG9yRmlsdGVyKGNvbnN0IEZpbHRlck9w
ZXJhdGlvbnMmIG9wcykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBjb2xv
ckZpbHRlciwgb3BlcmF0aW9ucywgb3BzKTsgfQpAQCAtMTE2OSwxOSArMTE2OSwxOSBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHNldFRhYlNpemUodW5zaWduZWQgc2l6ZSkgeyBTRVRfVkFSKG1fcmFy
ZUluaGVyaXRlZERhdGEsIHRhYlNpemUsIHNpemUpOyB9CiAKLSAgICB2b2lkIHNldEJyZWFrQmVm
b3JlKEJyZWFrQmV0d2VlbiBicmVha0JlaGF2aW9yKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJp
dGVkRGF0YSwgYnJlYWtCZWZvcmUsIGJyZWFrQmVoYXZpb3IpOyB9Ci0gICAgdm9pZCBzZXRCcmVh
a0FmdGVyKEJyZWFrQmV0d2VlbiBicmVha0JlaGF2aW9yKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgYnJlYWtBZnRlciwgYnJlYWtCZWhhdmlvcik7IH0KLSAgICB2b2lkIHNldEJy
ZWFrSW5zaWRlKEJyZWFrSW5zaWRlIGJyZWFrQmVoYXZpb3IpIHsgU0VUX1ZBUihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLCBicmVha0luc2lkZSwgYnJlYWtCZWhhdmlvcik7IH0KKyAgICB2b2lkIHNl
dEJyZWFrQmVmb3JlKEJyZWFrQmV0d2VlbiBicmVha0JlaGF2aW9yKSB7IFNFVF9WQVIobV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgYnJlYWtCZWZvcmUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihicmVh
a0JlaGF2aW9yKSk7IH0KKyAgICB2b2lkIHNldEJyZWFrQWZ0ZXIoQnJlYWtCZXR3ZWVuIGJyZWFr
QmVoYXZpb3IpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBicmVha0FmdGVyLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oYnJlYWtCZWhhdmlvcikpOyB9CisgICAgdm9pZCBzZXRCcmVh
a0luc2lkZShCcmVha0luc2lkZSBicmVha0JlaGF2aW9yKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgYnJlYWtJbnNpZGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihicmVha0JlaGF2
aW9yKSk7IH0KICAgICAKLSAgICB2b2lkIHNldEhhbmdpbmdQdW5jdHVhdGlvbihIYW5naW5nUHVu
Y3R1YXRpb24gcHVuY3R1YXRpb24pIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBoYW5n
aW5nUHVuY3R1YXRpb24sIHB1bmN0dWF0aW9uKTsgfQorICAgIHZvaWQgc2V0SGFuZ2luZ1B1bmN0
dWF0aW9uKEhhbmdpbmdQdW5jdHVhdGlvbiBwdW5jdHVhdGlvbikgeyBTRVRfVkFSKG1fcmFyZUlu
aGVyaXRlZERhdGEsIGhhbmdpbmdQdW5jdHVhdGlvbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHB1
bmN0dWF0aW9uKSk7IH0KIAogICAgIC8vIEVuZCBDU1MzIFNldHRlcnMKIAogICAgIHZvaWQgc2V0
TGluZUdyaWQoY29uc3QgQXRvbWljU3RyaW5nJiBsaW5lR3JpZCkgeyBTRVRfVkFSKG1fcmFyZUlu
aGVyaXRlZERhdGEsIGxpbmVHcmlkLCBsaW5lR3JpZCk7IH0KLSAgICB2b2lkIHNldExpbmVTbmFw
KExpbmVTbmFwIGxpbmVTbmFwKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgbGluZVNu
YXAsIGxpbmVTbmFwKTsgfQotICAgIHZvaWQgc2V0TGluZUFsaWduKExpbmVBbGlnbiBsaW5lQWxp
Z24pIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBsaW5lQWxpZ24sIGxpbmVBbGlnbik7
IH0KKyAgICB2b2lkIHNldExpbmVTbmFwKExpbmVTbmFwIGxpbmVTbmFwKSB7IFNFVF9WQVIobV9y
YXJlSW5oZXJpdGVkRGF0YSwgbGluZVNuYXAsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihsaW5lU25h
cCkpOyB9CisgICAgdm9pZCBzZXRMaW5lQWxpZ24oTGluZUFsaWduIGxpbmVBbGlnbikgeyBTRVRf
VkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGxpbmVBbGlnbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGxpbmVBbGlnbikpOyB9CiAKLSAgICB2b2lkIHNldFBvaW50ZXJFdmVudHMoRVBvaW50ZXJFdmVu
dHMgcCkgeyBtX2luaGVyaXRlZEZsYWdzLnBvaW50ZXJFdmVudHMgPSBwOyB9CisgICAgdm9pZCBz
ZXRQb2ludGVyRXZlbnRzKFBvaW50ZXJFdmVudHMgcCkgeyBtX2luaGVyaXRlZEZsYWdzLnBvaW50
ZXJFdmVudHMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocCk7IH0KIAogICAgIHZvaWQgY2xlYXJB
bmltYXRpb25zKCk7CiAgICAgdm9pZCBjbGVhclRyYW5zaXRpb25zKCk7CkBAIC0xNDI3LDEzICsx
NDI3LDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgT3ZlcmZsb3cgaW5pdGlhbE92ZXJmbG93WCgp
IHsgcmV0dXJuIE92ZXJmbG93OjpWaXNpYmxlOyB9CiAgICAgc3RhdGljIE92ZXJmbG93IGluaXRp
YWxPdmVyZmxvd1koKSB7IHJldHVybiBPdmVyZmxvdzo6VmlzaWJsZTsgfQogICAgIHN0YXRpYyBD
bGVhciBpbml0aWFsQ2xlYXIoKSB7IHJldHVybiBDbGVhcjo6Tm9uZTsgfQotICAgIHN0YXRpYyBF
RGlzcGxheSBpbml0aWFsRGlzcGxheSgpIHsgcmV0dXJuIElOTElORTsgfQorICAgIHN0YXRpYyBE
aXNwbGF5VHlwZSBpbml0aWFsRGlzcGxheSgpIHsgcmV0dXJuIERpc3BsYXlUeXBlOjpJbmxpbmU7
IH0KICAgICBzdGF0aWMgRVVuaWNvZGVCaWRpIGluaXRpYWxVbmljb2RlQmlkaSgpIHsgcmV0dXJu
IFVCTm9ybWFsOyB9CiAgICAgc3RhdGljIFBvc2l0aW9uVHlwZSBpbml0aWFsUG9zaXRpb24oKSB7
IHJldHVybiBQb3NpdGlvblR5cGU6OlN0YXRpYzsgfQogICAgIHN0YXRpYyBWZXJ0aWNhbEFsaWdu
IGluaXRpYWxWZXJ0aWNhbEFsaWduKCkgeyByZXR1cm4gVmVydGljYWxBbGlnbjo6QmFzZWxpbmU7
IH0KICAgICBzdGF0aWMgRmxvYXQgaW5pdGlhbEZsb2F0aW5nKCkgeyByZXR1cm4gRmxvYXQ6Ok5v
OyB9Ci0gICAgc3RhdGljIEJyZWFrQmV0d2VlbiBpbml0aWFsQnJlYWtCZXR3ZWVuKCkgeyByZXR1
cm4gQXV0b0JyZWFrQmV0d2VlbjsgfQotICAgIHN0YXRpYyBCcmVha0luc2lkZSBpbml0aWFsQnJl
YWtJbnNpZGUoKSB7IHJldHVybiBBdXRvQnJlYWtJbnNpZGU7IH0KKyAgICBzdGF0aWMgQnJlYWtC
ZXR3ZWVuIGluaXRpYWxCcmVha0JldHdlZW4oKSB7IHJldHVybiBCcmVha0JldHdlZW46OkF1dG87
IH0KKyAgICBzdGF0aWMgQnJlYWtJbnNpZGUgaW5pdGlhbEJyZWFrSW5zaWRlKCkgeyByZXR1cm4g
QnJlYWtJbnNpZGU6OkF1dG87IH0KICAgICBzdGF0aWMgSGFuZ2luZ1B1bmN0dWF0aW9uIGluaXRp
YWxIYW5naW5nUHVuY3R1YXRpb24oKSB7IHJldHVybiBOb0hhbmdpbmdQdW5jdHVhdGlvbjsgfQog
ICAgIHN0YXRpYyBUYWJsZUxheW91dFR5cGUgaW5pdGlhbFRhYmxlTGF5b3V0KCkgeyByZXR1cm4g
VGFibGVMYXlvdXRUeXBlOjpBdXRvOyB9CiAgICAgc3RhdGljIEJvcmRlckNvbGxhcHNlIGluaXRp
YWxCb3JkZXJDb2xsYXBzZSgpIHsgcmV0dXJuIEJvcmRlckNvbGxhcHNlOjpTZXBhcmF0ZTsgfQpA
QCAtMTQ0MSwyNCArMTQ0MSwyNCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIE91dGxpbmVJc0F1dG8g
aW5pdGlhbE91dGxpbmVTdHlsZUlzQXV0bygpIHsgcmV0dXJuIE91dGxpbmVJc0F1dG86Ok9mZjsg
fQogICAgIHN0YXRpYyBOaW5lUGllY2VJbWFnZSBpbml0aWFsTmluZVBpZWNlSW1hZ2UoKSB7IHJl
dHVybiBOaW5lUGllY2VJbWFnZSgpOyB9CiAgICAgc3RhdGljIExlbmd0aFNpemUgaW5pdGlhbEJv
cmRlclJhZGl1cygpIHsgcmV0dXJuIHsgeyAwLCBGaXhlZCB9LCB7IDAsIEZpeGVkIH0gfTsgfQot
ICAgIHN0YXRpYyBFQ2FwdGlvblNpZGUgaW5pdGlhbENhcHRpb25TaWRlKCkgeyByZXR1cm4gQ0FQ
VE9QOyB9Ci0gICAgc3RhdGljIENvbHVtbkF4aXMgaW5pdGlhbENvbHVtbkF4aXMoKSB7IHJldHVy
biBBdXRvQ29sdW1uQXhpczsgfQotICAgIHN0YXRpYyBDb2x1bW5Qcm9ncmVzc2lvbiBpbml0aWFs
Q29sdW1uUHJvZ3Jlc3Npb24oKSB7IHJldHVybiBOb3JtYWxDb2x1bW5Qcm9ncmVzc2lvbjsgfQor
ICAgIHN0YXRpYyBDYXB0aW9uU2lkZSBpbml0aWFsQ2FwdGlvblNpZGUoKSB7IHJldHVybiBDYXB0
aW9uU2lkZTo6VG9wOyB9CisgICAgc3RhdGljIENvbHVtbkF4aXMgaW5pdGlhbENvbHVtbkF4aXMo
KSB7IHJldHVybiBDb2x1bW5BeGlzOjpBdXRvOyB9CisgICAgc3RhdGljIENvbHVtblByb2dyZXNz
aW9uIGluaXRpYWxDb2x1bW5Qcm9ncmVzc2lvbigpIHsgcmV0dXJuIENvbHVtblByb2dyZXNzaW9u
OjpOb3JtYWw7IH0KICAgICBzdGF0aWMgVGV4dERpcmVjdGlvbiBpbml0aWFsRGlyZWN0aW9uKCkg
eyByZXR1cm4gTFRSOyB9CiAgICAgc3RhdGljIFdyaXRpbmdNb2RlIGluaXRpYWxXcml0aW5nTW9k
ZSgpIHsgcmV0dXJuIFRvcFRvQm90dG9tV3JpdGluZ01vZGU7IH0KICAgICBzdGF0aWMgVGV4dENv
bWJpbmUgaW5pdGlhbFRleHRDb21iaW5lKCkgeyByZXR1cm4gVGV4dENvbWJpbmU6Ok5vbmU7IH0K
ICAgICBzdGF0aWMgVGV4dE9yaWVudGF0aW9uIGluaXRpYWxUZXh0T3JpZW50YXRpb24oKSB7IHJl
dHVybiBUZXh0T3JpZW50YXRpb246Ok1peGVkOyB9CiAgICAgc3RhdGljIE9iamVjdEZpdCBpbml0
aWFsT2JqZWN0Rml0KCkgeyByZXR1cm4gT2JqZWN0Rml0OjpGaWxsOyB9CiAgICAgc3RhdGljIExl
bmd0aFBvaW50IGluaXRpYWxPYmplY3RQb3NpdGlvbigpIHsgcmV0dXJuIExlbmd0aFBvaW50KExl
bmd0aCg1MC4wZiwgUGVyY2VudCksIExlbmd0aCg1MC4wZiwgUGVyY2VudCkpOyB9Ci0gICAgc3Rh
dGljIEVFbXB0eUNlbGwgaW5pdGlhbEVtcHR5Q2VsbHMoKSB7IHJldHVybiBTSE9XOyB9Ci0gICAg
c3RhdGljIEVMaXN0U3R5bGVQb3NpdGlvbiBpbml0aWFsTGlzdFN0eWxlUG9zaXRpb24oKSB7IHJl
dHVybiBPVVRTSURFOyB9Ci0gICAgc3RhdGljIEVMaXN0U3R5bGVUeXBlIGluaXRpYWxMaXN0U3R5
bGVUeXBlKCkgeyByZXR1cm4gRGlzYzsgfQotICAgIHN0YXRpYyBFVGV4dFRyYW5zZm9ybSBpbml0
aWFsVGV4dFRyYW5zZm9ybSgpIHsgcmV0dXJuIFRUTk9ORTsgfQotICAgIHN0YXRpYyBFVmlzaWJp
bGl0eSBpbml0aWFsVmlzaWJpbGl0eSgpIHsgcmV0dXJuIFZJU0lCTEU7IH0KLSAgICBzdGF0aWMg
RVdoaXRlU3BhY2UgaW5pdGlhbFdoaXRlU3BhY2UoKSB7IHJldHVybiBOT1JNQUw7IH0KKyAgICBz
dGF0aWMgRW1wdHlDZWxsIGluaXRpYWxFbXB0eUNlbGxzKCkgeyByZXR1cm4gRW1wdHlDZWxsOjpT
aG93OyB9CisgICAgc3RhdGljIExpc3RTdHlsZVBvc2l0aW9uIGluaXRpYWxMaXN0U3R5bGVQb3Np
dGlvbigpIHsgcmV0dXJuIExpc3RTdHlsZVBvc2l0aW9uOjpPdXRzaWRlOyB9CisgICAgc3RhdGlj
IExpc3RTdHlsZVR5cGUgaW5pdGlhbExpc3RTdHlsZVR5cGUoKSB7IHJldHVybiBMaXN0U3R5bGVU
eXBlOjpEaXNjOyB9CisgICAgc3RhdGljIFRleHRUcmFuc2Zvcm0gaW5pdGlhbFRleHRUcmFuc2Zv
cm0oKSB7IHJldHVybiBUZXh0VHJhbnNmb3JtOjpOb25lOyB9CisgICAgc3RhdGljIFZpc2liaWxp
dHkgaW5pdGlhbFZpc2liaWxpdHkoKSB7IHJldHVybiBWaXNpYmlsaXR5OjpWaXNpYmxlOyB9Cisg
ICAgc3RhdGljIFdoaXRlU3BhY2UgaW5pdGlhbFdoaXRlU3BhY2UoKSB7IHJldHVybiBXaGl0ZVNw
YWNlOjpOb3JtYWw7IH0KICAgICBzdGF0aWMgZmxvYXQgaW5pdGlhbEhvcml6b250YWxCb3JkZXJT
cGFjaW5nKCkgeyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsVmVydGljYWxC
b3JkZXJTcGFjaW5nKCkgeyByZXR1cm4gMDsgfQotICAgIHN0YXRpYyBFQ3Vyc29yIGluaXRpYWxD
dXJzb3IoKSB7IHJldHVybiBDdXJzb3JBdXRvOyB9CisgICAgc3RhdGljIEN1cnNvclR5cGUgaW5p
dGlhbEN1cnNvcigpIHsgcmV0dXJuIEN1cnNvclR5cGU6OkF1dG87IH0KICAgICBzdGF0aWMgQ29s
b3IgaW5pdGlhbENvbG9yKCkgeyByZXR1cm4gQ29sb3I6OmJsYWNrOyB9CiAgICAgc3RhdGljIFN0
eWxlSW1hZ2UqIGluaXRpYWxMaXN0U3R5bGVJbWFnZSgpIHsgcmV0dXJuIDA7IH0KICAgICBzdGF0
aWMgZmxvYXQgaW5pdGlhbEJvcmRlcldpZHRoKCkgeyByZXR1cm4gMzsgfQpAQCAtMTQ3OCwxMyAr
MTQ3OCwxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHNob3J0IGluaXRpYWxXaWRvd3MoKSB7IHJl
dHVybiAyOyB9CiAgICAgc3RhdGljIHNob3J0IGluaXRpYWxPcnBoYW5zKCkgeyByZXR1cm4gMjsg
fQogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbExpbmVIZWlnaHQoKSB7IHJldHVybiBMZW5ndGgo
LTEwMC4wZiwgUGVyY2VudCk7IH0KLSAgICBzdGF0aWMgRVRleHRBbGlnbiBpbml0aWFsVGV4dEFs
aWduKCkgeyByZXR1cm4gVEFTVEFSVDsgfQorICAgIHN0YXRpYyBUZXh0QWxpZ25Nb2RlIGluaXRp
YWxUZXh0QWxpZ24oKSB7IHJldHVybiBUZXh0QWxpZ25Nb2RlOjpTdGFydDsgfQogICAgIHN0YXRp
YyBUZXh0RGVjb3JhdGlvbiBpbml0aWFsVGV4dERlY29yYXRpb24oKSB7IHJldHVybiBUZXh0RGVj
b3JhdGlvbk5vbmU7IH0KLSAgICBzdGF0aWMgVGV4dERlY29yYXRpb25TdHlsZSBpbml0aWFsVGV4
dERlY29yYXRpb25TdHlsZSgpIHsgcmV0dXJuIFRleHREZWNvcmF0aW9uU3R5bGVTb2xpZDsgfQor
ICAgIHN0YXRpYyBUZXh0RGVjb3JhdGlvblN0eWxlIGluaXRpYWxUZXh0RGVjb3JhdGlvblN0eWxl
KCkgeyByZXR1cm4gVGV4dERlY29yYXRpb25TdHlsZTo6U29saWQ7IH0KICAgICBzdGF0aWMgVGV4
dERlY29yYXRpb25Ta2lwIGluaXRpYWxUZXh0RGVjb3JhdGlvblNraXAoKSB7IHJldHVybiBUZXh0
RGVjb3JhdGlvblNraXBBdXRvOyB9CiAgICAgc3RhdGljIFRleHRVbmRlcmxpbmVQb3NpdGlvbiBp
bml0aWFsVGV4dFVuZGVybGluZVBvc2l0aW9uKCkgeyByZXR1cm4gVGV4dFVuZGVybGluZVBvc2l0
aW9uQXV0bzsgfQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsWm9vbSgpIHsgcmV0dXJuIDEuMGY7
IH0KLSAgICBzdGF0aWMgVGV4dFpvb20gaW5pdGlhbFRleHRab29tKCkgeyByZXR1cm4gVGV4dFpv
b21Ob3JtYWw7IH0KKyAgICBzdGF0aWMgVGV4dFpvb20gaW5pdGlhbFRleHRab29tKCkgeyByZXR1
cm4gVGV4dFpvb206Ok5vcm1hbDsgfQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsT3V0bGluZU9m
ZnNldCgpIHsgcmV0dXJuIDA7IH0KICAgICBzdGF0aWMgZmxvYXQgaW5pdGlhbE9wYWNpdHkoKSB7
IHJldHVybiAxLjBmOyB9CiAgICAgc3RhdGljIEJveEFsaWdubWVudCBpbml0aWFsQm94QWxpZ24o
KSB7IHJldHVybiBCb3hBbGlnbm1lbnQ6OlN0cmV0Y2g7IH0KQEAgLTE1MjQsMTggKzE1MjQsMTgg
QEAgcHVibGljOgogICAgIHN0YXRpYyBOQlNQTW9kZSBpbml0aWFsTkJTUE1vZGUoKSB7IHJldHVy
biBOQlNQTW9kZTo6Tm9ybWFsOyB9CiAgICAgc3RhdGljIExpbmVCcmVhayBpbml0aWFsTGluZUJy
ZWFrKCkgeyByZXR1cm4gTGluZUJyZWFrOjpBdXRvOyB9CiAgICAgc3RhdGljIEVTcGVha0FzIGlu
aXRpYWxTcGVha0FzKCkgeyByZXR1cm4gU3BlYWtOb3JtYWw7IH0KLSAgICBzdGF0aWMgSHlwaGVu
cyBpbml0aWFsSHlwaGVucygpIHsgcmV0dXJuIEh5cGhlbnNNYW51YWw7IH0KKyAgICBzdGF0aWMg
SHlwaGVucyBpbml0aWFsSHlwaGVucygpIHsgcmV0dXJuIEh5cGhlbnM6Ok1hbnVhbDsgfQogICAg
IHN0YXRpYyBzaG9ydCBpbml0aWFsSHlwaGVuYXRpb25MaW1pdEJlZm9yZSgpIHsgcmV0dXJuIC0x
OyB9CiAgICAgc3RhdGljIHNob3J0IGluaXRpYWxIeXBoZW5hdGlvbkxpbWl0QWZ0ZXIoKSB7IHJl
dHVybiAtMTsgfQogICAgIHN0YXRpYyBzaG9ydCBpbml0aWFsSHlwaGVuYXRpb25MaW1pdExpbmVz
KCkgeyByZXR1cm4gLTE7IH0KICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWFs
SHlwaGVuYXRpb25TdHJpbmcoKSB7IHJldHVybiBudWxsQXRvbSgpOyB9Ci0gICAgc3RhdGljIEVC
b3JkZXJGaXQgaW5pdGlhbEJvcmRlckZpdCgpIHsgcmV0dXJuIEJvcmRlckZpdEJvcmRlcjsgfQor
ICAgIHN0YXRpYyBCb3JkZXJGaXQgaW5pdGlhbEJvcmRlckZpdCgpIHsgcmV0dXJuIEJvcmRlckZp
dDo6Qm9yZGVyOyB9CiAgICAgc3RhdGljIFJlc2l6ZSBpbml0aWFsUmVzaXplKCkgeyByZXR1cm4g
UmVzaXplOjpOb25lOyB9CiAgICAgc3RhdGljIENvbnRyb2xQYXJ0IGluaXRpYWxBcHBlYXJhbmNl
KCkgeyByZXR1cm4gTm9Db250cm9sUGFydDsgfQogICAgIHN0YXRpYyBBc3BlY3RSYXRpb1R5cGUg
aW5pdGlhbEFzcGVjdFJhdGlvVHlwZSgpIHsgcmV0dXJuIEFzcGVjdFJhdGlvVHlwZTo6QXV0bzsg
fQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsQXNwZWN0UmF0aW9EZW5vbWluYXRvcigpIHsgcmV0
dXJuIDE7IH0KICAgICBzdGF0aWMgZmxvYXQgaW5pdGlhbEFzcGVjdFJhdGlvTnVtZXJhdG9yKCkg
eyByZXR1cm4gMTsgfQotICAgIHN0YXRpYyBPcmRlciBpbml0aWFsUlRMT3JkZXJpbmcoKSB7IHJl
dHVybiBMb2dpY2FsT3JkZXI7IH0KKyAgICBzdGF0aWMgT3JkZXIgaW5pdGlhbFJUTE9yZGVyaW5n
KCkgeyByZXR1cm4gT3JkZXI6OkxvZ2ljYWw7IH0KICAgICBzdGF0aWMgZmxvYXQgaW5pdGlhbFRl
eHRTdHJva2VXaWR0aCgpIHsgcmV0dXJuIDA7IH0KICAgICBzdGF0aWMgdW5zaWduZWQgc2hvcnQg
aW5pdGlhbENvbHVtbkNvdW50KCkgeyByZXR1cm4gMTsgfQogICAgIHN0YXRpYyBDb2x1bW5GaWxs
IGluaXRpYWxDb2x1bW5GaWxsKCkgeyByZXR1cm4gQ29sdW1uRmlsbDo6QmFsYW5jZTsgfQpAQCAt
MTU0Niw3ICsxNTQ2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFRyYW5z
Zm9ybU9yaWdpblgoKSB7IHJldHVybiBMZW5ndGgoNTAuMGYsIFBlcmNlbnQpOyB9CiAgICAgc3Rh
dGljIExlbmd0aCBpbml0aWFsVHJhbnNmb3JtT3JpZ2luWSgpIHsgcmV0dXJuIExlbmd0aCg1MC4w
ZiwgUGVyY2VudCk7IH0KICAgICBzdGF0aWMgVHJhbnNmb3JtQm94IGluaXRpYWxUcmFuc2Zvcm1C
b3goKSB7IHJldHVybiBUcmFuc2Zvcm1Cb3g6OkJvcmRlckJveDsgfQotICAgIHN0YXRpYyBFUG9p
bnRlckV2ZW50cyBpbml0aWFsUG9pbnRlckV2ZW50cygpIHsgcmV0dXJuIFBFX0FVVE87IH0KKyAg
ICBzdGF0aWMgUG9pbnRlckV2ZW50cyBpbml0aWFsUG9pbnRlckV2ZW50cygpIHsgcmV0dXJuIFBv
aW50ZXJFdmVudHM6OkF1dG87IH0KICAgICBzdGF0aWMgZmxvYXQgaW5pdGlhbFRyYW5zZm9ybU9y
aWdpblooKSB7IHJldHVybiAwOyB9CiAgICAgc3RhdGljIFRyYW5zZm9ybVN0eWxlM0QgaW5pdGlh
bFRyYW5zZm9ybVN0eWxlM0QoKSB7IHJldHVybiBUcmFuc2Zvcm1TdHlsZTNEOjpGbGF0OyB9CiAg
ICAgc3RhdGljIEJhY2tmYWNlVmlzaWJpbGl0eSBpbml0aWFsQmFja2ZhY2VWaXNpYmlsaXR5KCkg
eyByZXR1cm4gQmFja2ZhY2VWaXNpYmlsaXR5OjpWaXNpYmxlOyB9CkBAIC0xNTU0LDE3ICsxNTU0
LDE3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxQZXJzcGVjdGl2ZU9yaWdp
blgoKSB7IHJldHVybiBMZW5ndGgoNTAuMGYsIFBlcmNlbnQpOyB9CiAgICAgc3RhdGljIExlbmd0
aCBpbml0aWFsUGVyc3BlY3RpdmVPcmlnaW5ZKCkgeyByZXR1cm4gTGVuZ3RoKDUwLjBmLCBQZXJj
ZW50KTsgfQogICAgIHN0YXRpYyBDb2xvciBpbml0aWFsQmFja2dyb3VuZENvbG9yKCkgeyByZXR1
cm4gQ29sb3I6OnRyYW5zcGFyZW50OyB9Ci0gICAgc3RhdGljIENvbG9yIGluaXRpYWxUZXh0RW1w
aGFzaXNDb2xvcigpIHsgcmV0dXJuIFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQ7IH0KLSAgICBzdGF0
aWMgVGV4dEVtcGhhc2lzRmlsbCBpbml0aWFsVGV4dEVtcGhhc2lzRmlsbCgpIHsgcmV0dXJuIFRl
eHRFbXBoYXNpc0ZpbGxGaWxsZWQ7IH0KLSAgICBzdGF0aWMgVGV4dEVtcGhhc2lzTWFyayBpbml0
aWFsVGV4dEVtcGhhc2lzTWFyaygpIHsgcmV0dXJuIFRleHRFbXBoYXNpc01hcmtOb25lOyB9Cisg
ICAgc3RhdGljIENvbG9yIGluaXRpYWxUZXh0RW1waGFzaXNDb2xvcigpIHsgcmV0dXJuIENvbG9y
KCk7IH0KKyAgICBzdGF0aWMgVGV4dEVtcGhhc2lzRmlsbCBpbml0aWFsVGV4dEVtcGhhc2lzRmls
bCgpIHsgcmV0dXJuIFRleHRFbXBoYXNpc0ZpbGw6OkZpbGxlZDsgfQorICAgIHN0YXRpYyBUZXh0
RW1waGFzaXNNYXJrIGluaXRpYWxUZXh0RW1waGFzaXNNYXJrKCkgeyByZXR1cm4gVGV4dEVtcGhh
c2lzTWFyazo6Tm9uZTsgfQogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYWxU
ZXh0RW1waGFzaXNDdXN0b21NYXJrKCkgeyByZXR1cm4gbnVsbEF0b20oKTsgfQogICAgIHN0YXRp
YyBUZXh0RW1waGFzaXNQb3NpdGlvbiBpbml0aWFsVGV4dEVtcGhhc2lzUG9zaXRpb24oKSB7IHJl
dHVybiBUZXh0RW1waGFzaXNQb3NpdGlvbk92ZXIgfCBUZXh0RW1waGFzaXNQb3NpdGlvblJpZ2h0
OyB9Ci0gICAgc3RhdGljIFJ1YnlQb3NpdGlvbiBpbml0aWFsUnVieVBvc2l0aW9uKCkgeyByZXR1
cm4gUnVieVBvc2l0aW9uQmVmb3JlOyB9CisgICAgc3RhdGljIFJ1YnlQb3NpdGlvbiBpbml0aWFs
UnVieVBvc2l0aW9uKCkgeyByZXR1cm4gUnVieVBvc2l0aW9uOjpCZWZvcmU7IH0KICAgICBzdGF0
aWMgTGluZUJveENvbnRhaW4gaW5pdGlhbExpbmVCb3hDb250YWluKCkgeyByZXR1cm4gTGluZUJv
eENvbnRhaW5CbG9jayB8IExpbmVCb3hDb250YWluSW5saW5lIHwgTGluZUJveENvbnRhaW5SZXBs
YWNlZDsgfQogICAgIHN0YXRpYyBJbWFnZU9yaWVudGF0aW9uRW51bSBpbml0aWFsSW1hZ2VPcmll
bnRhdGlvbigpIHsgcmV0dXJuIE9yaWdpblRvcExlZnQ7IH0KICAgICBzdGF0aWMgSW1hZ2VSZW5k
ZXJpbmcgaW5pdGlhbEltYWdlUmVuZGVyaW5nKCkgeyByZXR1cm4gSW1hZ2VSZW5kZXJpbmc6OkF1
dG87IH0KLSAgICBzdGF0aWMgSW1hZ2VSZXNvbHV0aW9uU291cmNlIGluaXRpYWxJbWFnZVJlc29s
dXRpb25Tb3VyY2UoKSB7IHJldHVybiBJbWFnZVJlc29sdXRpb25TcGVjaWZpZWQ7IH0KLSAgICBz
dGF0aWMgSW1hZ2VSZXNvbHV0aW9uU25hcCBpbml0aWFsSW1hZ2VSZXNvbHV0aW9uU25hcCgpIHsg
cmV0dXJuIEltYWdlUmVzb2x1dGlvbk5vU25hcDsgfQorICAgIHN0YXRpYyBJbWFnZVJlc29sdXRp
b25Tb3VyY2UgaW5pdGlhbEltYWdlUmVzb2x1dGlvblNvdXJjZSgpIHsgcmV0dXJuIEltYWdlUmVz
b2x1dGlvblNvdXJjZTo6U3BlY2lmaWVkOyB9CisgICAgc3RhdGljIEltYWdlUmVzb2x1dGlvblNu
YXAgaW5pdGlhbEltYWdlUmVzb2x1dGlvblNuYXAoKSB7IHJldHVybiBJbWFnZVJlc29sdXRpb25T
bmFwOjpOb25lOyB9CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxJbWFnZVJlc29sdXRpb24oKSB7
IHJldHVybiAxOyB9CiAgICAgc3RhdGljIFN0eWxlSW1hZ2UqIGluaXRpYWxCb3JkZXJJbWFnZVNv
dXJjZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICBzdGF0aWMgU3R5bGVJbWFnZSogaW5pdGlh
bE1hc2tCb3hJbWFnZVNvdXJjZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KQEAgLTE1NzUsMTIgKzE1
NzUsMTIgQEAgcHVibGljOgogI2lmIEVOQUJMRShDU1MzX1RFWFQpCiAgICAgc3RhdGljIFRleHRJ
bmRlbnRMaW5lIGluaXRpYWxUZXh0SW5kZW50TGluZSgpIHsgcmV0dXJuIFRleHRJbmRlbnRMaW5l
OjpGaXJzdExpbmU7IH0KICAgICBzdGF0aWMgVGV4dEluZGVudFR5cGUgaW5pdGlhbFRleHRJbmRl
bnRUeXBlKCkgeyByZXR1cm4gVGV4dEluZGVudFR5cGU6Ok5vcm1hbDsgfQotICAgIHN0YXRpYyBU
ZXh0QWxpZ25MYXN0IGluaXRpYWxUZXh0QWxpZ25MYXN0KCkgeyByZXR1cm4gVGV4dEFsaWduTGFz
dEF1dG87IH0KLSAgICBzdGF0aWMgVGV4dEp1c3RpZnkgaW5pdGlhbFRleHRKdXN0aWZ5KCkgeyBy
ZXR1cm4gVGV4dEp1c3RpZnlBdXRvOyB9CisgICAgc3RhdGljIFRleHRBbGlnbkxhc3QgaW5pdGlh
bFRleHRBbGlnbkxhc3QoKSB7IHJldHVybiBUZXh0QWxpZ25MYXN0OjpBdXRvOyB9CisgICAgc3Rh
dGljIFRleHRKdXN0aWZ5IGluaXRpYWxUZXh0SnVzdGlmeSgpIHsgcmV0dXJuIFRleHRKdXN0aWZ5
OjpBdXRvOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDVVJTT1JfVklTSUJJTElUWSkKLSAgICBz
dGF0aWMgQ3Vyc29yVmlzaWJpbGl0eSBpbml0aWFsQ3Vyc29yVmlzaWJpbGl0eSgpIHsgcmV0dXJu
IEN1cnNvclZpc2liaWxpdHlBdXRvOyB9CisgICAgc3RhdGljIEN1cnNvclZpc2liaWxpdHkgaW5p
dGlhbEN1cnNvclZpc2liaWxpdHkoKSB7IHJldHVybiBDdXJzb3JWaXNpYmlsaXR5OjpBdXRvOyB9
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCkBAIC0xNjE2LDcgKzE2MTYs
NyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgVmVjdG9yPEdyaWRUcmFja1NpemU+IGluaXRpYWxH
cmlkQXV0b1JlcGVhdFRyYWNrcygpIHsgcmV0dXJuIFZlY3RvcjxHcmlkVHJhY2tTaXplPigpOyB9
CiAgICAgc3RhdGljIHVuc2lnbmVkIGluaXRpYWxHcmlkQXV0b1JlcGVhdEluc2VydGlvblBvaW50
KCkgeyByZXR1cm4gMDsgfQotICAgIHN0YXRpYyBBdXRvUmVwZWF0VHlwZSBpbml0aWFsR3JpZEF1
dG9SZXBlYXRUeXBlKCkgeyByZXR1cm4gTm9BdXRvUmVwZWF0OyB9CisgICAgc3RhdGljIEF1dG9S
ZXBlYXRUeXBlIGluaXRpYWxHcmlkQXV0b1JlcGVhdFR5cGUoKSB7IHJldHVybiBBdXRvUmVwZWF0
VHlwZTo6Tm9uZTsgfQogCiAgICAgc3RhdGljIEdyaWRBdXRvRmxvdyBpbml0aWFsR3JpZEF1dG9G
bG93KCkgeyByZXR1cm4gQXV0b0Zsb3dSb3c7IH0KIApAQCAtMTY0MSw4ICsxNjQxLDggQEAgcHVi
bGljOgogICAgIHN0YXRpYyB1bnNpZ25lZCBpbml0aWFsVGFiU2l6ZSgpIHsgcmV0dXJuIDg7IH0K
IAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYWxMaW5lR3JpZCgpIHsgcmV0
dXJuIG51bGxBdG9tKCk7IH0KLSAgICBzdGF0aWMgTGluZVNuYXAgaW5pdGlhbExpbmVTbmFwKCkg
eyByZXR1cm4gTGluZVNuYXBOb25lOyB9Ci0gICAgc3RhdGljIExpbmVBbGlnbiBpbml0aWFsTGlu
ZUFsaWduKCkgeyByZXR1cm4gTGluZUFsaWduTm9uZTsgfQorICAgIHN0YXRpYyBMaW5lU25hcCBp
bml0aWFsTGluZVNuYXAoKSB7IHJldHVybiBMaW5lU25hcDo6Tm9uZTsgfQorICAgIHN0YXRpYyBM
aW5lQWxpZ24gaW5pdGlhbExpbmVBbGlnbigpIHsgcmV0dXJuIExpbmVBbGlnbjo6Tm9uZTsgfQog
CiAgICAgc3RhdGljIEludFNpemUgaW5pdGlhbEluaXRpYWxMZXR0ZXIoKSB7IHJldHVybiBJbnRT
aXplKCk7IH0KICAgICBzdGF0aWMgTGluZUNsYW1wVmFsdWUgaW5pdGlhbExpbmVDbGFtcCgpIHsg
cmV0dXJuIExpbmVDbGFtcFZhbHVlKCk7IH0KQEAgLTE3NDIsMTMgKzE3NDIsMTMgQEAgcHJpdmF0
ZToKIAogICAgICAgICB2b2lkIGNvcHlOb25Jbmhlcml0ZWRGcm9tKGNvbnN0IE5vbkluaGVyaXRl
ZEZsYWdzJik7CiAKLSAgICAgICAgYm9vbCBoYXNBbnlQdWJsaWNQc2V1ZG9TdHlsZXMoKSBjb25z
dCB7IHJldHVybiBQVUJMSUNfUFNFVURPSURfTUFTSyAmIHBzZXVkb0JpdHM7IH0KKyAgICAgICAg
Ym9vbCBoYXNBbnlQdWJsaWNQc2V1ZG9TdHlsZXMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHNldWRvSWQ6OlB1YmxpY1BzZXVkb0lkTWFzaykgJiBwc2V1ZG9CaXRzOyB9
CiAgICAgICAgIGJvb2wgaGFzUHNldWRvU3R5bGUoUHNldWRvSWQpIGNvbnN0OwogICAgICAgICB2
b2lkIHNldEhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkKTsKICAgICAgICAgdm9pZCBzZXRIYXNQc2V1
ZG9TdHlsZXMoUHNldWRvSWRTZXQpOwogCi0gICAgICAgIHVuc2lnbmVkIGVmZmVjdGl2ZURpc3Bs
YXkgOiA1OyAvLyBFRGlzcGxheQotICAgICAgICB1bnNpZ25lZCBvcmlnaW5hbERpc3BsYXkgOiA1
OyAvLyBFRGlzcGxheQorICAgICAgICB1bnNpZ25lZCBlZmZlY3RpdmVEaXNwbGF5IDogNTsgLy8g
RGlzcGxheVR5cGUKKyAgICAgICAgdW5zaWduZWQgb3JpZ2luYWxEaXNwbGF5IDogNTsgLy8gRGlz
cGxheVR5cGUKICAgICAgICAgdW5zaWduZWQgb3ZlcmZsb3dYIDogMzsgLy8gT3ZlcmZsb3cKICAg
ICAgICAgdW5zaWduZWQgb3ZlcmZsb3dZIDogMzsgLy8gT3ZlcmZsb3cKICAgICAgICAgdW5zaWdu
ZWQgdmVydGljYWxBbGlnbiA6IDQ7IC8vIFZlcnRpY2FsQWxpZ24KQEAgLTE3NzMsNyArMTc3Myw3
IEBAIHByaXZhdGU6CiAgICAgICAgIHVuc2lnbmVkIGlzTGluayA6IDE7CiAKICAgICAgICAgdW5z
aWduZWQgc3R5bGVUeXBlIDogNDsgLy8gUHNldWRvSWQKLSAgICAgICAgdW5zaWduZWQgcHNldWRv
Qml0cyA6IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRklSU1RfSU5URVJOQUxfUFNFVURPSUQpIC0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEZJUlNUX1BVQkxJQ19QU0VVRE9JRCkpOworICAgICAgICB1
bnNpZ25lZCBwc2V1ZG9CaXRzIDogKHN0YXRpY19jYXN0PHVuc2lnbmVkPihQc2V1ZG9JZDo6Rmly
c3RJbnRlcm5hbFBzZXVkb0lkKSAtIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQc2V1ZG9JZDo6Rmly
c3RQdWJsaWNQc2V1ZG9JZCkpOwogCiAgICAgICAgIC8vIElmIHlvdSBhZGQgbW9yZSBzdHlsZSBi
aXRzIGhlcmUsIHlvdSB3aWxsIGFsc28gbmVlZCB0byB1cGRhdGUgUmVuZGVyU3R5bGU6Ok5vbklu
aGVyaXRlZEZsYWdzOjpjb3B5Tm9uSW5oZXJpdGVkRnJvbSgpLgogICAgIH07CkBAIC0xNzgyLDIw
ICsxNzgyLDIwIEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbmhl
cml0ZWRGbGFncyYpIGNvbnN0OwogICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSW5oZXJp
dGVkRmxhZ3MmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogCi0g
ICAgICAgIHVuc2lnbmVkIGVtcHR5Q2VsbHMgOiAxOyAvLyBFRW1wdHlDZWxsCi0gICAgICAgIHVu
c2lnbmVkIGNhcHRpb25TaWRlIDogMjsgLy8gRUNhcHRpb25TaWRlCi0gICAgICAgIHVuc2lnbmVk
IGxpc3RTdHlsZVR5cGUgOiA3OyAvLyBFTGlzdFN0eWxlVHlwZQotICAgICAgICB1bnNpZ25lZCBs
aXN0U3R5bGVQb3NpdGlvbiA6IDE7IC8vIEVMaXN0U3R5bGVQb3NpdGlvbgotICAgICAgICB1bnNp
Z25lZCB2aXNpYmlsaXR5IDogMjsgLy8gRVZpc2liaWxpdHkKLSAgICAgICAgdW5zaWduZWQgdGV4
dEFsaWduIDogNDsgLy8gRVRleHRBbGlnbgotICAgICAgICB1bnNpZ25lZCB0ZXh0VHJhbnNmb3Jt
IDogMjsgLy8gRVRleHRUcmFuc2Zvcm0KKyAgICAgICAgdW5zaWduZWQgZW1wdHlDZWxscyA6IDE7
IC8vIEVtcHR5Q2VsbAorICAgICAgICB1bnNpZ25lZCBjYXB0aW9uU2lkZSA6IDI7IC8vIENhcHRp
b25TaWRlCisgICAgICAgIHVuc2lnbmVkIGxpc3RTdHlsZVR5cGUgOiA3OyAvLyBMaXN0U3R5bGVU
eXBlCisgICAgICAgIHVuc2lnbmVkIGxpc3RTdHlsZVBvc2l0aW9uIDogMTsgLy8gTGlzdFN0eWxl
UG9zaXRpb24KKyAgICAgICAgdW5zaWduZWQgdmlzaWJpbGl0eSA6IDI7IC8vIFZpc2liaWxpdHkK
KyAgICAgICAgdW5zaWduZWQgdGV4dEFsaWduIDogNDsgLy8gVGV4dEFsaWduTW9kZQorICAgICAg
ICB1bnNpZ25lZCB0ZXh0VHJhbnNmb3JtIDogMjsgLy8gVGV4dFRyYW5zZm9ybQogICAgICAgICB1
bnNpZ25lZCB0ZXh0RGVjb3JhdGlvbnMgOiBUZXh0RGVjb3JhdGlvbkJpdHM7Ci0gICAgICAgIHVu
c2lnbmVkIGN1cnNvciA6IDY7IC8vIEVDdXJzb3IKKyAgICAgICAgdW5zaWduZWQgY3Vyc29yIDog
NjsgLy8gQ3Vyc29yVHlwZQogI2lmIEVOQUJMRShDVVJTT1JfVklTSUJJTElUWSkKICAgICAgICAg
dW5zaWduZWQgY3Vyc29yVmlzaWJpbGl0eSA6IDE7IC8vIEN1cnNvclZpc2liaWxpdHkKICNlbmRp
ZgogICAgICAgICB1bnNpZ25lZCBkaXJlY3Rpb24gOiAxOyAvLyBUZXh0RGlyZWN0aW9uCi0gICAg
ICAgIHVuc2lnbmVkIHdoaXRlU3BhY2UgOiAzOyAvLyBFV2hpdGVTcGFjZQorICAgICAgICB1bnNp
Z25lZCB3aGl0ZVNwYWNlIDogMzsgLy8gV2hpdGVTcGFjZQogICAgICAgICAvLyAzNSBiaXRzCiAg
ICAgICAgIHVuc2lnbmVkIGJvcmRlckNvbGxhcHNlIDogMTsgLy8gQm9yZGVyQ29sbGFwc2UKICAg
ICAgICAgdW5zaWduZWQgYm94RGlyZWN0aW9uIDogMTsgLy8gQm94RGlyZWN0aW9uCkBAIC0xODAz
LDggKzE4MDMsOCBAQCBwcml2YXRlOgogICAgICAgICAvLyBub24gQ1NTMiBpbmhlcml0ZWQKICAg
ICAgICAgdW5zaWduZWQgcnRsT3JkZXJpbmcgOiAxOyAvLyBPcmRlcgogICAgICAgICB1bnNpZ25l
ZCBwcmludENvbG9yQWRqdXN0IDogUHJpbnRDb2xvckFkanVzdEJpdHM7IC8vIFByaW50Q29sb3JB
ZGp1c3QKLSAgICAgICAgdW5zaWduZWQgcG9pbnRlckV2ZW50cyA6IDQ7IC8vIEVQb2ludGVyRXZl
bnRzCi0gICAgICAgIHVuc2lnbmVkIGluc2lkZUxpbmsgOiAyOyAvLyBFSW5zaWRlTGluaworICAg
ICAgICB1bnNpZ25lZCBwb2ludGVyRXZlbnRzIDogNDsgLy8gUG9pbnRlckV2ZW50cworICAgICAg
ICB1bnNpZ25lZCBpbnNpZGVMaW5rIDogMjsgLy8gSW5zaWRlTGluawogICAgICAgICB1bnNpZ25l
ZCBpbnNpZGVEZWZhdWx0QnV0dG9uIDogMTsKICAgICAgICAgLy8gNDYgYml0cwogCkBAIC0xODE2
LDcgKzE4MTYsNyBAQCBwcml2YXRlOgogICAgIC8vIFRoaXMgY29uc3RydWN0b3IgaXMgdXNlZCB0
byBpbXBsZW1lbnQgdGhlIHJlcGxhY2Ugb3BlcmF0aW9uLgogICAgIFJlbmRlclN0eWxlKFJlbmRl
clN0eWxlJiwgUmVuZGVyU3R5bGUmJik7CiAKLSAgICBFRGlzcGxheSBvcmlnaW5hbERpc3BsYXko
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRGlzcGxheT4obV9ub25Jbmhlcml0ZWRGbGFn
cy5vcmlnaW5hbERpc3BsYXkpOyB9CisgICAgRGlzcGxheVR5cGUgb3JpZ2luYWxEaXNwbGF5KCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RGlzcGxheVR5cGU+KG1fbm9uSW5oZXJpdGVkRmxh
Z3Mub3JpZ2luYWxEaXNwbGF5KTsgfQogCiAgICAgYm9vbCBoYXNBdXRvTGVmdEFuZFJpZ2h0KCkg
Y29uc3QgeyByZXR1cm4gbGVmdCgpLmlzQXV0bygpICYmIHJpZ2h0KCkuaXNBdXRvKCk7IH0KICAg
ICBib29sIGhhc0F1dG9Ub3BBbmRCb3R0b20oKSBjb25zdCB7IHJldHVybiB0b3AoKS5pc0F1dG8o
KSAmJiBib3R0b20oKS5pc0F1dG8oKTsgfQpAQCAtMTgyNSwxMSArMTgyNSwxMSBAQCBwcml2YXRl
OgogCiAgICAgTGF5b3V0Qm94RXh0ZW50IGdldFNoYWRvd0luc2V0RXh0ZW50KGNvbnN0IFNoYWRv
d0RhdGEqKSBjb25zdDsKIAotICAgIHN0YXRpYyBib29sIGlzRGlzcGxheVJlcGxhY2VkVHlwZShF
RGlzcGxheSk7Ci0gICAgc3RhdGljIGJvb2wgaXNEaXNwbGF5SW5saW5lVHlwZShFRGlzcGxheSk7
Ci0gICAgc3RhdGljIGJvb2wgaXNEaXNwbGF5RmxleGlibGVCb3goRURpc3BsYXkpOwotICAgIHN0
YXRpYyBib29sIGlzRGlzcGxheUdyaWRCb3goRURpc3BsYXkpOwotICAgIHN0YXRpYyBib29sIGlz
RGlzcGxheUZsZXhpYmxlT3JHcmlkQm94KEVEaXNwbGF5KTsKKyAgICBzdGF0aWMgYm9vbCBpc0Rp
c3BsYXlSZXBsYWNlZFR5cGUoRGlzcGxheVR5cGUpOworICAgIHN0YXRpYyBib29sIGlzRGlzcGxh
eUlubGluZVR5cGUoRGlzcGxheVR5cGUpOworICAgIHN0YXRpYyBib29sIGlzRGlzcGxheUZsZXhp
YmxlQm94KERpc3BsYXlUeXBlKTsKKyAgICBzdGF0aWMgYm9vbCBpc0Rpc3BsYXlHcmlkQm94KERp
c3BsYXlUeXBlKTsKKyAgICBzdGF0aWMgYm9vbCBpc0Rpc3BsYXlGbGV4aWJsZU9yR3JpZEJveChE
aXNwbGF5VHlwZSk7CiAKICAgICBDb2xvciBjb2xvckluY2x1ZGluZ0ZhbGxiYWNrKENTU1Byb3Bl
cnR5SUQgY29sb3JQcm9wZXJ0eSwgYm9vbCB2aXNpdGVkTGluaykgY29uc3Q7CiAKQEAgLTE5MjAs
MjMgKzE5MjAsMjMgQEAgaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6Ok5vbkluaGVyaXRlZEZsYQog
CiBpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxhZ3M6Omhhc1BzZXVkb1N0
eWxlKFBzZXVkb0lkIHBzZXVkbykgY29uc3QKIHsKLSAgICBBU1NFUlQocHNldWRvID4gTk9QU0VV
RE8pOwotICAgIEFTU0VSVChwc2V1ZG8gPCBGSVJTVF9JTlRFUk5BTF9QU0VVRE9JRCk7Ci0gICAg
cmV0dXJuIHBzZXVkb0JpdHMgJiAoMSA8PCAocHNldWRvIC0gMSAvKiBOT1BTVUVETyAqLykpOwor
ICAgIEFTU0VSVChwc2V1ZG8gPiBQc2V1ZG9JZDo6Tm9uZSk7CisgICAgQVNTRVJUKHBzZXVkbyA8
IFBzZXVkb0lkOjpGaXJzdEludGVybmFsUHNldWRvSWQpOworICAgIHJldHVybiBwc2V1ZG9CaXRz
ICYgKDEgPDwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihwc2V1ZG8pIC0gMSAvKiBQc2V1ZG9JZDo6
Tm9uZSAqLykpOwogfQogCiBpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6Tm9uSW5oZXJpdGVkRmxh
Z3M6OnNldEhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkIHBzZXVkbykKIHsKLSAgICBBU1NFUlQocHNl
dWRvID4gTk9QU0VVRE8pOwotICAgIEFTU0VSVChwc2V1ZG8gPCBGSVJTVF9JTlRFUk5BTF9QU0VV
RE9JRCk7Ci0gICAgcHNldWRvQml0cyB8PSAxIDw8IChwc2V1ZG8gLSAxIC8qIE5PUFNVRURPICov
KTsKKyAgICBBU1NFUlQocHNldWRvID4gUHNldWRvSWQ6Ok5vbmUpOworICAgIEFTU0VSVChwc2V1
ZG8gPCBQc2V1ZG9JZDo6Rmlyc3RJbnRlcm5hbFBzZXVkb0lkKTsKKyAgICBwc2V1ZG9CaXRzIHw9
IDEgPDwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihwc2V1ZG8pIC0gMSAvKiBQc2V1ZG9JZDo6Tm9u
ZSAqLyk7CiB9CiAKIGlubGluZSB2b2lkIFJlbmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6
c2V0SGFzUHNldWRvU3R5bGVzKFBzZXVkb0lkU2V0IHBzZXVkb0lkU2V0KQogewogICAgIEFTU0VS
VChwc2V1ZG9JZFNldCk7Ci0gICAgQVNTRVJUKChwc2V1ZG9JZFNldC5kYXRhKCkgJiBQVUJMSUNf
UFNFVURPSURfTUFTSykgPT0gcHNldWRvSWRTZXQuZGF0YSgpKTsKLSAgICBwc2V1ZG9CaXRzIHw9
IHBzZXVkb0lkU2V0LmRhdGEoKSA+PiAxOyAvLyBTaGlmdCBkb3duIGFzIHdlIGRvIG5vdCBzdG9y
ZSBhIGJpdCBmb3IgTk9QU1VFRE8uCisgICAgQVNTRVJUKChwc2V1ZG9JZFNldC5kYXRhKCkgJiBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHNldWRvSWQ6OlB1YmxpY1BzZXVkb0lkTWFzaykpID09IHBz
ZXVkb0lkU2V0LmRhdGEoKSk7CisgICAgcHNldWRvQml0cyB8PSBwc2V1ZG9JZFNldC5kYXRhKCkg
Pj4gMTsgLy8gU2hpZnQgZG93biBhcyB3ZSBkbyBub3Qgc3RvcmUgYSBiaXQgZm9yIFBzZXVkb0lk
OjpOb25lLgogfQogCiBpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6SW5oZXJpdGVkRmxhZ3M6Om9w
ZXJhdG9yPT0oY29uc3QgSW5oZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25zdApAQCAtMjAwNSwyMiAr
MjAwNSwyMiBAQCBpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6aGFzQmFja2dyb3VuZCgpCiAgICAg
cmV0dXJuIHZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciku
aXNWaXNpYmxlKCkgfHwgIGhhc0JhY2tncm91bmRJbWFnZSgpOwogfQogCi1pbmxpbmUgYm9vbCBS
ZW5kZXJTdHlsZTo6YXV0b1dyYXAoRVdoaXRlU3BhY2Ugd2hpdGVTcGFjZSkKK2lubGluZSBib29s
IFJlbmRlclN0eWxlOjphdXRvV3JhcChXaGl0ZVNwYWNlIHdoaXRlU3BhY2UpCiB7CiAgICAgLy8g
Tm93cmFwIGFuZCBwcmUgZG9uJ3QgYXV0b21hdGljYWxseSB3cmFwLgotICAgIHJldHVybiB3aGl0
ZVNwYWNlICE9IE5PV1JBUCAmJiB3aGl0ZVNwYWNlICE9IFBSRTsKKyAgICByZXR1cm4gd2hpdGVT
cGFjZSAhPSBXaGl0ZVNwYWNlOjpOb1dyYXAgJiYgd2hpdGVTcGFjZSAhPSBXaGl0ZVNwYWNlOjpQ
cmU7CiB9CiAKLWlubGluZSBib29sIFJlbmRlclN0eWxlOjpwcmVzZXJ2ZU5ld2xpbmUoRVdoaXRl
U3BhY2Ugd2hpdGVTcGFjZSkKK2lubGluZSBib29sIFJlbmRlclN0eWxlOjpwcmVzZXJ2ZU5ld2xp
bmUoV2hpdGVTcGFjZSB3aGl0ZVNwYWNlKQogewogICAgIC8vIE5vcm1hbCBhbmQgbm93cmFwIGRv
IG5vdCBwcmVzZXJ2ZSBuZXdsaW5lcy4KLSAgICByZXR1cm4gd2hpdGVTcGFjZSAhPSBOT1JNQUwg
JiYgd2hpdGVTcGFjZSAhPSBOT1dSQVA7CisgICAgcmV0dXJuIHdoaXRlU3BhY2UgIT0gV2hpdGVT
cGFjZTo6Tm9ybWFsICYmIHdoaXRlU3BhY2UgIT0gV2hpdGVTcGFjZTo6Tm9XcmFwOwogfQogCi1p
bmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6Y29sbGFwc2VXaGl0ZVNwYWNlKEVXaGl0ZVNwYWNlIHdz
KQoraW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmNvbGxhcHNlV2hpdGVTcGFjZShXaGl0ZVNwYWNl
IHdzKQogewogICAgIC8vIFByZSBhbmQgcHJld3JhcCBkbyBub3QgY29sbGFwc2Ugd2hpdGVzcGFj
ZS4KLSAgICByZXR1cm4gd3MgIT0gUFJFICYmIHdzICE9IFBSRV9XUkFQOworICAgIHJldHVybiB3
cyAhPSBXaGl0ZVNwYWNlOjpQcmUgJiYgd3MgIT0gV2hpdGVTcGFjZTo6UHJlV3JhcDsKIH0KIAog
aW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmlzQ29sbGFwc2libGVXaGl0ZVNwYWNlKFVDaGFyIGNo
YXJhY3RlcikgY29uc3QKQEAgLTIwMzgsNyArMjAzOCw3IEBAIGlubGluZSBib29sIFJlbmRlclN0
eWxlOjppc0NvbGxhcHNpYmxlV2gKIAogaW5saW5lIGJvb2wgUmVuZGVyU3R5bGU6OmJyZWFrT25s
eUFmdGVyV2hpdGVTcGFjZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHdoaXRlU3BhY2UoKSA9PSBQ
UkVfV1JBUCB8fCBsaW5lQnJlYWsoKSA9PSBMaW5lQnJlYWs6OkFmdGVyV2hpdGVTcGFjZTsKKyAg
ICByZXR1cm4gd2hpdGVTcGFjZSgpID09IFdoaXRlU3BhY2U6OlByZVdyYXAgfHwgbGluZUJyZWFr
KCkgPT0gTGluZUJyZWFrOjpBZnRlcldoaXRlU3BhY2U7CiB9CiAKIGlubGluZSBib29sIFJlbmRl
clN0eWxlOjpicmVha1dvcmRzKCkgY29uc3QKQEAgLTIwNDksNyArMjA0OSw3IEBAIGlubGluZSBi
b29sIFJlbmRlclN0eWxlOjpicmVha1dvcmRzKCkgY28KIGlubGluZSBib29sIFJlbmRlclN0eWxl
OjpoYXNJbmxpbmVDb2x1bW5BeGlzKCkgY29uc3QKIHsKICAgICBhdXRvIGF4aXMgPSBjb2x1bW5B
eGlzKCk7Ci0gICAgcmV0dXJuIChheGlzID09IEF1dG9Db2x1bW5BeGlzIHx8IGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkgPT0gKGF4aXMgPT0gSG9yaXpvbnRhbENvbHVtbkF4aXMpKSAmJiAhaGFz
TGluZXNDbGFtcCgpOworICAgIHJldHVybiAoYXhpcyA9PSBDb2x1bW5BeGlzOjpBdXRvIHx8IGlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPT0gKGF4aXMgPT0gQ29sdW1uQXhpczo6SG9yaXpvbnRh
bCkpICYmICFoYXNMaW5lc0NsYW1wKCk7CiB9CiAKIGlubGluZSBJbWFnZU9yaWVudGF0aW9uRW51
bSBSZW5kZXJTdHlsZTo6aW1hZ2VPcmllbnRhdGlvbigpIGNvbnN0CkBAIC0yMTcwLDkgKzIxNzAs
OSBAQCBpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6d2lsbENoYW5nZUNyZWF0CiAKIGlubGluZSBi
b29sIFJlbmRlclN0eWxlOjppc0Rpc3BsYXlSZWdpb25UeXBlKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gZGlzcGxheSgpID09IEJMT0NLIHx8IGRpc3BsYXkoKSA9PSBJTkxJTkVfQkxPQ0sKLSAgICAg
ICAgfHwgZGlzcGxheSgpID09IFRBQkxFX0NFTEwgfHwgZGlzcGxheSgpID09IFRBQkxFX0NBUFRJ
T04KLSAgICAgICAgfHwgZGlzcGxheSgpID09IExJU1RfSVRFTTsKKyAgICByZXR1cm4gZGlzcGxh
eSgpID09IERpc3BsYXlUeXBlOjpCbG9jayB8fCBkaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6Oklu
bGluZUJsb2NrCisgICAgICAgIHx8IGRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDZWxs
IHx8IGRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDYXB0aW9uCisgICAgICAgIHx8IGRp
c3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6TGlzdEl0ZW07CiB9CiAKIGlubGluZSBib29sIFJlbmRl
clN0eWxlOjpzZXRXcml0aW5nTW9kZShXcml0aW5nTW9kZSB2KQpAQCAtMjE5MywyOCArMjE5Mywy
OCBAQCBpbmxpbmUgdm9pZCBSZW5kZXJTdHlsZTo6Z2V0U2hhZG93QmxvY2tECiAgICAgcmV0dXJu
IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBnZXRTaGFkb3dWZXJ0aWNhbEV4dGVudChzaGFk
b3csIGxvZ2ljYWxUb3AsIGxvZ2ljYWxCb3R0b20pIDogZ2V0U2hhZG93SG9yaXpvbnRhbEV4dGVu
dChzaGFkb3csIGxvZ2ljYWxUb3AsIGxvZ2ljYWxCb3R0b20pOwogfQogCi1pbmxpbmUgYm9vbCBS
ZW5kZXJTdHlsZTo6aXNEaXNwbGF5UmVwbGFjZWRUeXBlKEVEaXNwbGF5IGRpc3BsYXkpCitpbmxp
bmUgYm9vbCBSZW5kZXJTdHlsZTo6aXNEaXNwbGF5UmVwbGFjZWRUeXBlKERpc3BsYXlUeXBlIGRp
c3BsYXkpCiB7Ci0gICAgcmV0dXJuIGRpc3BsYXkgPT0gSU5MSU5FX0JMT0NLIHx8IGRpc3BsYXkg
PT0gSU5MSU5FX0JPWCB8fCBkaXNwbGF5ID09IElOTElORV9GTEVYCi0gICAgICAgIHx8IGRpc3Bs
YXkgPT0gSU5MSU5FX0dSSUQgfHwgZGlzcGxheSA9PSBJTkxJTkVfVEFCTEU7CisgICAgcmV0dXJu
IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OklubGluZUJsb2NrIHx8IGRpc3BsYXkgPT0gRGlzcGxh
eVR5cGU6OklubGluZUJveCB8fCBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpJbmxpbmVGbGV4Cisg
ICAgICAgIHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OklubGluZUdyaWQgfHwgZGlzcGxheSA9
PSBEaXNwbGF5VHlwZTo6SW5saW5lVGFibGU7CiB9CiAKLWlubGluZSBib29sIFJlbmRlclN0eWxl
Ojppc0Rpc3BsYXlJbmxpbmVUeXBlKEVEaXNwbGF5IGRpc3BsYXkpCitpbmxpbmUgYm9vbCBSZW5k
ZXJTdHlsZTo6aXNEaXNwbGF5SW5saW5lVHlwZShEaXNwbGF5VHlwZSBkaXNwbGF5KQogewotICAg
IHJldHVybiBkaXNwbGF5ID09IElOTElORSB8fCBpc0Rpc3BsYXlSZXBsYWNlZFR5cGUoZGlzcGxh
eSk7CisgICAgcmV0dXJuIGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OklubGluZSB8fCBpc0Rpc3Bs
YXlSZXBsYWNlZFR5cGUoZGlzcGxheSk7CiB9CiAKLWlubGluZSBib29sIFJlbmRlclN0eWxlOjpp
c0Rpc3BsYXlGbGV4aWJsZUJveChFRGlzcGxheSBkaXNwbGF5KQoraW5saW5lIGJvb2wgUmVuZGVy
U3R5bGU6OmlzRGlzcGxheUZsZXhpYmxlQm94KERpc3BsYXlUeXBlIGRpc3BsYXkpCiB7Ci0gICAg
cmV0dXJuIGRpc3BsYXkgPT0gRkxFWCB8fCBkaXNwbGF5ID09IElOTElORV9GTEVYOworICAgIHJl
dHVybiBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpGbGV4IHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5
cGU6OklubGluZUZsZXg7CiB9CiAKLWlubGluZSBib29sIFJlbmRlclN0eWxlOjppc0Rpc3BsYXlH
cmlkQm94KEVEaXNwbGF5IGRpc3BsYXkpCitpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6aXNEaXNw
bGF5R3JpZEJveChEaXNwbGF5VHlwZSBkaXNwbGF5KQogewotICAgIHJldHVybiBkaXNwbGF5ID09
IEdSSUQgfHwgZGlzcGxheSA9PSBJTkxJTkVfR1JJRDsKKyAgICByZXR1cm4gZGlzcGxheSA9PSBE
aXNwbGF5VHlwZTo6R3JpZCB8fCBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpJbmxpbmVHcmlkOwog
fQogCi1pbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6aXNEaXNwbGF5RmxleGlibGVPckdyaWRCb3go
RURpc3BsYXkgZGlzcGxheSkKK2lubGluZSBib29sIFJlbmRlclN0eWxlOjppc0Rpc3BsYXlGbGV4
aWJsZU9yR3JpZEJveChEaXNwbGF5VHlwZSBkaXNwbGF5KQogewogICAgIHJldHVybiBpc0Rpc3Bs
YXlGbGV4aWJsZUJveChkaXNwbGF5KSB8fCBpc0Rpc3BsYXlHcmlkQm94KGRpc3BsYXkpOwogfQpA
QCAtMjI0Niw3ICsyMjQ2LDcgQEAgaW5saW5lIHZvaWQgUmVuZGVyU3R5bGU6OnNldEJveFJlZmxl
Y3QoUgogCiBpbmxpbmUgYm9vbCBwc2V1ZG9FbGVtZW50UmVuZGVyZXJJc05lZWRlZChjb25zdCBS
ZW5kZXJTdHlsZSogc3R5bGUpCiB7Ci0gICAgcmV0dXJuIHN0eWxlICYmIHN0eWxlLT5kaXNwbGF5
KCkgIT0gTk9ORSAmJiBzdHlsZS0+Y29udGVudERhdGEoKTsKKyAgICByZXR1cm4gc3R5bGUgJiYg
c3R5bGUtPmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Tm9uZSAmJiBzdHlsZS0+Y29udGVudERh
dGEoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuY3BwCShy
ZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGVDb25zdGFudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCwxNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIFZpc2liaWxpdHkgdmlzaWJpbGl0eSkKK3sKKyAgICBzd2l0Y2ggKHZpc2liaWxpdHkpIHsK
KyAgICBjYXNlIFZpc2liaWxpdHk6OlZpc2libGU6IHRzIDw8ICJ2aXNpYmxlIjsgYnJlYWs7Cisg
ICAgY2FzZSBWaXNpYmlsaXR5OjpIaWRkZW46IHRzIDw8ICJoaWRkZW4iOyBicmVhazsKKyAgICBj
YXNlIFZpc2liaWxpdHk6OkNvbGxhcHNlOiB0cyA8PCAiY29sbGFwc2UiOyBicmVhazsKKyAgICB9
CisgICAgCisgICAgcmV0dXJuIHRzOworfQorCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBJbWFnZVJlbmRlcmluZyBpbWFnZVJlbmRlcmluZykKIHsKICAgICBzd2l0Y2gg
KGltYWdlUmVuZGVyaW5nKSB7CkBAIC0xMTEsNyArMTIyLDcgQEAgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgRQogCiBib29sIGFsd2F5c1BhZ2VCcmVhayhCcmVha0JldHdl
ZW4gYmV0d2VlbikKIHsKLSAgICByZXR1cm4gYmV0d2VlbiA+PSBQYWdlQnJlYWtCZXR3ZWVuOwor
ICAgIHJldHVybiBiZXR3ZWVuID49IEJyZWFrQmV0d2Vlbjo6UGFnZTsKIH0KIAogY29uc3QgZmxv
YXQgZGVmYXVsdE1pdGVyTGltaXQgPSA0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgJKHJldmlzaW9uIDIzMjE0
MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC03NywzMCArNzcsMzIgQEAgZW51bSBjbGFzcyBTdHlsZURp
ZmZlcmVuY2VDb250ZXh0U2Vuc2l0aQogfTsKIAogLy8gU3RhdGljIHBzZXVkbyBzdHlsZXMuIER5
bmFtaWMgb25lcyBhcmUgcHJvZHVjZWQgb24gdGhlIGZseS4KLWVudW0gUHNldWRvSWQgOiB1bnNp
Z25lZCBjaGFyIHsKLSAgICAvLyBUaGUgb3JkZXIgbXVzdCBiZSBOT1AgSUQsIHB1YmxpYyBJRHMs
IGFuZCB0aGVuIGludGVybmFsIElEcy4KLSAgICBOT1BTRVVETywKLSAgICBGSVJTVF9MSU5FLAot
ICAgIEZJUlNUX0xFVFRFUiwKLSAgICBNQVJLRVIsCi0gICAgQkVGT1JFLAotICAgIEFGVEVSLAot
ICAgIFNFTEVDVElPTiwKLSAgICBTQ1JPTExCQVIsCi0KLSAgICAvLyBJbnRlcm5hbCBJRHMgZm9s
bG93OgotICAgIFNDUk9MTEJBUl9USFVNQiwKLSAgICBTQ1JPTExCQVJfQlVUVE9OLAotICAgIFND
Uk9MTEJBUl9UUkFDSywKLSAgICBTQ1JPTExCQVJfVFJBQ0tfUElFQ0UsCi0gICAgU0NST0xMQkFS
X0NPUk5FUiwKLSAgICBSRVNJWkVSLAotCi0gICAgQUZURVJfTEFTVF9JTlRFUk5BTF9QU0VVRE9J
RCwKLQotICAgIEZJUlNUX1BVQkxJQ19QU0VVRE9JRCA9IEZJUlNUX0xJTkUsCi0gICAgRklSU1Rf
SU5URVJOQUxfUFNFVURPSUQgPSBTQ1JPTExCQVJfVEhVTUIsCi0gICAgUFVCTElDX1BTRVVET0lE
X01BU0sgPSAoKDEgPDwgRklSU1RfSU5URVJOQUxfUFNFVURPSUQpIC0gMSkgJiB+KCgxIDw8IEZJ
UlNUX1BVQkxJQ19QU0VVRE9JRCkgLSAxKQorZW51bSBjbGFzcyBQc2V1ZG9JZCA6IHVuc2lnbmVk
IGNoYXIgeworICAgIC8vIFRoZSBvcmRlciBtdXN0IGJlIE5vbmUsIHB1YmxpYyBJRHMsIGFuZCB0
aGVuIGludGVybmFsIElEcy4KKyAgICBOb25lLAorCisgICAgLy8gUHVibGljOgorICAgIEZpcnN0
TGluZSwKKyAgICBGaXJzdExldHRlciwKKyAgICBNYXJrZXIsCisgICAgQmVmb3JlLAorICAgIEFm
dGVyLAorICAgIFNlbGVjdGlvbiwKKyAgICBTY3JvbGxiYXIsCisKKyAgICAvLyBJbnRlcm5hbDoK
KyAgICBTY3JvbGxiYXJUaHVtYiwKKyAgICBTY3JvbGxiYXJCdXR0b24sCisgICAgU2Nyb2xsYmFy
VHJhY2ssCisgICAgU2Nyb2xsYmFyVHJhY2tQaWVjZSwKKyAgICBTY3JvbGxiYXJDb3JuZXIsCisg
ICAgUmVzaXplciwKKworICAgIEFmdGVyTGFzdEludGVybmFsUHNldWRvSWQsCisKKyAgICBGaXJz
dFB1YmxpY1BzZXVkb0lkID0gRmlyc3RMaW5lLAorICAgIEZpcnN0SW50ZXJuYWxQc2V1ZG9JZCA9
IFNjcm9sbGJhclRodW1iLAorICAgIFB1YmxpY1BzZXVkb0lkTWFzayA9ICgoMSA8PCBGaXJzdElu
dGVybmFsUHNldWRvSWQpIC0gMSkgJiB+KCgxIDw8IEZpcnN0UHVibGljUHNldWRvSWQpIC0gMSkK
IH07CiAKIGNsYXNzIFBzZXVkb0lkU2V0IHsKQEAgLTEyNCwxNCArMTI2LDE0IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgaGFzKFBzZXVkb0lkIHBzZXVkb0lkKSBjb25zdAogICAgIHsKLSAgICAgICAg
QVNTRVJUKChzaXplb2YobV9kYXRhKSAqIDgpID4gcHNldWRvSWQpOwotICAgICAgICByZXR1cm4g
bV9kYXRhICYgKDFVIDw8IHBzZXVkb0lkKTsKKyAgICAgICAgQVNTRVJUKChzaXplb2YobV9kYXRh
KSAqIDgpID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBzZXVkb0lkKSk7CisgICAgICAgIHJldHVy
biBtX2RhdGEgJiAoMVUgPDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBzZXVkb0lkKSk7CiAgICAg
fQogCiAgICAgdm9pZCBhZGQoUHNldWRvSWQgcHNldWRvSWQpCiAgICAgewotICAgICAgICBBU1NF
UlQoKHNpemVvZihtX2RhdGEpICogOCkgPiBwc2V1ZG9JZCk7Ci0gICAgICAgIG1fZGF0YSB8PSAo
MVUgPDwgcHNldWRvSWQpOworICAgICAgICBBU1NFUlQoKHNpemVvZihtX2RhdGEpICogOCkgPiBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4ocHNldWRvSWQpKTsKKyAgICAgICAgbV9kYXRhIHw9ICgxVSA8
PCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHNldWRvSWQpKTsKICAgICB9CiAKICAgICB2b2lkIG1l
cmdlKFBzZXVkb0lkU2V0IHNvdXJjZSkKQEAgLTU0MywxNCArNTQ1LDE0IEBAIGVudW0gY2xhc3Mg
UmVzaXplIHsKIH07CiAKIC8vIFRoZSBvcmRlciBvZiB0aGlzIGVudW0gbXVzdCBtYXRjaCB0aGUg
b3JkZXIgb2YgdGhlIGxpc3Qgc3R5bGUgdHlwZXMgaW4gQ1NTVmFsdWVLZXl3b3Jkcy5pbi4KLWVu
dW0gRUxpc3RTdHlsZVR5cGUgeworZW51bSBjbGFzcyBMaXN0U3R5bGVUeXBlIHsKICAgICBEaXNj
LAogICAgIENpcmNsZSwKICAgICBTcXVhcmUsCi0gICAgRGVjaW1hbExpc3RTdHlsZSwKKyAgICBE
ZWNpbWFsLAogICAgIERlY2ltYWxMZWFkaW5nWmVybywKICAgICBBcmFiaWNJbmRpYywKLSAgICBC
aW5hcnlMaXN0U3R5bGUsCisgICAgQmluYXJ5LAogICAgIEJlbmdhbGksCiAgICAgQ2FtYm9kaWFu
LAogICAgIEtobWVyLApAQCAtNjI0LDcgKzYyNiw3IEBAIGVudW0gRUxpc3RTdHlsZVR5cGUgewog
ICAgIEthdGFrYW5hLAogICAgIEhpcmFnYW5hSXJvaGEsCiAgICAgS2F0YWthbmFJcm9oYSwKLSAg
ICBOb25lTGlzdFN0eWxlCisgICAgTm9uZQogfTsKIAogZW51bSBjbGFzcyBRdW90ZVR5cGUgewpA
QCAtNjM0LDUwICs2MzYsNTAgQEAgZW51bSBjbGFzcyBRdW90ZVR5cGUgewogICAgIE5vQ2xvc2VR
dW90ZQogfTsKIAotZW51bSBFQm9yZGVyRml0IHsKLSAgICBCb3JkZXJGaXRCb3JkZXIsCi0gICAg
Qm9yZGVyRml0TGluZXMKLX07Ci0KLWVudW0gRUFuaW1hdGlvbkZpbGxNb2RlIHsKLSAgICBBbmlt
YXRpb25GaWxsTW9kZU5vbmUsCi0gICAgQW5pbWF0aW9uRmlsbE1vZGVGb3J3YXJkcywKLSAgICBB
bmltYXRpb25GaWxsTW9kZUJhY2t3YXJkcywKLSAgICBBbmltYXRpb25GaWxsTW9kZUJvdGgKLX07
Ci0KLWVudW0gRUFuaW1QbGF5U3RhdGUgewotICAgIEFuaW1QbGF5U3RhdGVQbGF5aW5nID0gMHgw
LAotICAgIEFuaW1QbGF5U3RhdGVQYXVzZWQgPSAweDEKLX07Ci0KLWVudW0gRVdoaXRlU3BhY2Ug
ewotICAgIE5PUk1BTCwKLSAgICBQUkUsCi0gICAgUFJFX1dSQVAsCi0gICAgUFJFX0xJTkUsCi0g
ICAgTk9XUkFQLAotICAgIEtIVE1MX05PV1JBUAorZW51bSBjbGFzcyBCb3JkZXJGaXQgeworICAg
IEJvcmRlciwKKyAgICBMaW5lcworfTsKKworZW51bSBjbGFzcyBBbmltYXRpb25GaWxsTW9kZSB7
CisgICAgTm9uZSwKKyAgICBGb3J3YXJkcywKKyAgICBCYWNrd2FyZHMsCisgICAgQm90aAorfTsK
KworZW51bSBjbGFzcyBBbmltYXRpb25QbGF5U3RhdGUgeworICAgIFBsYXlpbmcgPSAweDAsCisg
ICAgUGF1c2VkID0gMHgxCit9OworCitlbnVtIGNsYXNzIFdoaXRlU3BhY2UgeworICAgIE5vcm1h
bCwKKyAgICBQcmUsCisgICAgUHJlV3JhcCwKKyAgICBQcmVMaW5lLAorICAgIE5vV3JhcCwKKyAg
ICBLSFRNTE5vV3JhcAogfTsKIAogLy8gVGhlIG9yZGVyIG9mIHRoaXMgZW51bSBtdXN0IG1hdGNo
IHRoZSBvcmRlciBvZiB0aGUgdGV4dCBhbGlnbiB2YWx1ZXMgaW4gQ1NTVmFsdWVLZXl3b3Jkcy5p
bi4KLWVudW0gRVRleHRBbGlnbiB7Ci0gICAgTEVGVCwKLSAgICBSSUdIVCwKLSAgICBDRU5URVIs
Ci0gICAgSlVTVElGWSwKLSAgICBXRUJLSVRfTEVGVCwKLSAgICBXRUJLSVRfUklHSFQsCi0gICAg
V0VCS0lUX0NFTlRFUiwKLSAgICBUQVNUQVJULAotICAgIFRBRU5ELAotfTsKLQotZW51bSBFVGV4
dFRyYW5zZm9ybSB7Ci0gICAgQ0FQSVRBTElaRSwKLSAgICBVUFBFUkNBU0UsCi0gICAgTE9XRVJD
QVNFLAotICAgIFRUTk9ORQorZW51bSBjbGFzcyBUZXh0QWxpZ25Nb2RlIHsKKyAgICBMZWZ0LAor
ICAgIFJpZ2h0LAorICAgIENlbnRlciwKKyAgICBKdXN0aWZ5LAorICAgIFdlYktpdExlZnQsCisg
ICAgV2ViS2l0UmlnaHQsCisgICAgV2ViS2l0Q2VudGVyLAorICAgIFN0YXJ0LAorICAgIEVuZCwK
K307CisKK2VudW0gY2xhc3MgVGV4dFRyYW5zZm9ybSB7CisgICAgQ2FwaXRhbGl6ZSwKKyAgICBV
cHBlcmNhc2UsCisgICAgTG93ZXJjYXNlLAorICAgIE5vbmUKIH07CiAKICNpZiBFTkFCTEUoTEVU
VEVSUFJFU1MpCkBAIC02ODYsMjE2ICs2ODgsMjE4IEBAIHN0YXRpYyBjb25zdCBzaXplX3QgVGV4
dERlY29yYXRpb25CaXRzID0KIHN0YXRpYyBjb25zdCBzaXplX3QgVGV4dERlY29yYXRpb25CaXRz
ID0gNDsKICNlbmRpZgogZW51bSBUZXh0RGVjb3JhdGlvbiB7Ci0gICAgVGV4dERlY29yYXRpb25O
b25lID0gMHgwLAotICAgIFRleHREZWNvcmF0aW9uVW5kZXJsaW5lID0gMHgxLAotICAgIFRleHRE
ZWNvcmF0aW9uT3ZlcmxpbmUgPSAweDIsCi0gICAgVGV4dERlY29yYXRpb25MaW5lVGhyb3VnaCA9
IDB4NCwKLSAgICBUZXh0RGVjb3JhdGlvbkJsaW5rID0gMHg4LAorICAgIFRleHREZWNvcmF0aW9u
Tm9uZSAgICAgICAgICA9IDAsCisgICAgVGV4dERlY29yYXRpb25VbmRlcmxpbmUgICAgID0gMSA8
PCAwLAorICAgIFRleHREZWNvcmF0aW9uT3ZlcmxpbmUgICAgICA9IDEgPDwgMSwKKyAgICBUZXh0
RGVjb3JhdGlvbkxpbmVUaHJvdWdoICAgPSAxIDw8IDIsCisgICAgVGV4dERlY29yYXRpb25CbGlu
ayAgICAgICAgID0gMSA8PCAzLAogI2lmIEVOQUJMRShMRVRURVJQUkVTUykKLSAgICBUZXh0RGVj
b3JhdGlvbkxldHRlcnByZXNzID0gMHgxMCwKKyAgICBUZXh0RGVjb3JhdGlvbkxldHRlcnByZXNz
ICAgPSAxIDw8IDQsCiAjZW5kaWYKIH07CiBpbmxpbmUgVGV4dERlY29yYXRpb24gb3BlcmF0b3J8
KFRleHREZWNvcmF0aW9uIGEsIFRleHREZWNvcmF0aW9uIGIpIHsgcmV0dXJuIFRleHREZWNvcmF0
aW9uKGludChhKSB8IGludChiKSk7IH0KIGlubGluZSBUZXh0RGVjb3JhdGlvbiYgb3BlcmF0b3J8
PShUZXh0RGVjb3JhdGlvbiYgYSwgVGV4dERlY29yYXRpb24gYikgeyByZXR1cm4gYSA9IGEgfCBi
OyB9CiAKLWVudW0gVGV4dERlY29yYXRpb25TdHlsZSB7Ci0gICAgVGV4dERlY29yYXRpb25TdHls
ZVNvbGlkLAotICAgIFRleHREZWNvcmF0aW9uU3R5bGVEb3VibGUsCi0gICAgVGV4dERlY29yYXRp
b25TdHlsZURvdHRlZCwKLSAgICBUZXh0RGVjb3JhdGlvblN0eWxlRGFzaGVkLAotICAgIFRleHRE
ZWNvcmF0aW9uU3R5bGVXYXZ5CitlbnVtIGNsYXNzIFRleHREZWNvcmF0aW9uU3R5bGUgeworICAg
IFNvbGlkLAorICAgIERvdWJsZSwKKyAgICBEb3R0ZWQsCisgICAgRGFzaGVkLAorICAgIFdhdnkK
IH07CiAKICNpZiBFTkFCTEUoQ1NTM19URVhUKQotZW51bSBUZXh0QWxpZ25MYXN0IHsKLSAgICBU
ZXh0QWxpZ25MYXN0QXV0bywKLSAgICBUZXh0QWxpZ25MYXN0U3RhcnQsCi0gICAgVGV4dEFsaWdu
TGFzdEVuZCwKLSAgICBUZXh0QWxpZ25MYXN0TGVmdCwKLSAgICBUZXh0QWxpZ25MYXN0UmlnaHQs
Ci0gICAgVGV4dEFsaWduTGFzdENlbnRlciwKLSAgICBUZXh0QWxpZ25MYXN0SnVzdGlmeQorZW51
bSBjbGFzcyBUZXh0QWxpZ25MYXN0IHsKKyAgICBBdXRvLAorICAgIFN0YXJ0LAorICAgIEVuZCwK
KyAgICBMZWZ0LAorICAgIFJpZ2h0LAorICAgIENlbnRlciwKKyAgICBKdXN0aWZ5CiB9OwogCi1l
bnVtIFRleHRKdXN0aWZ5IHsKLSAgICBUZXh0SnVzdGlmeUF1dG8sCi0gICAgVGV4dEp1c3RpZnlO
b25lLAotICAgIFRleHRKdXN0aWZ5SW50ZXJXb3JkLAotICAgIFRleHRKdXN0aWZ5RGlzdHJpYnV0
ZQorZW51bSBjbGFzcyBUZXh0SnVzdGlmeSB7CisgICAgQXV0bywKKyAgICBOb25lLAorICAgIElu
dGVyV29yZCwKKyAgICBEaXN0cmlidXRlCiB9OwogI2VuZGlmIC8vIENTUzNfVEVYVAogCiBlbnVt
IFRleHREZWNvcmF0aW9uU2tpcEl0ZW1zIHsKLSAgICBUZXh0RGVjb3JhdGlvblNraXBOb25lID0g
MCwKLSAgICBUZXh0RGVjb3JhdGlvblNraXBJbmsgPSAxIDw8IDAsCi0gICAgVGV4dERlY29yYXRp
b25Ta2lwT2JqZWN0cyA9IDEgPDwgMSwKLSAgICBUZXh0RGVjb3JhdGlvblNraXBBdXRvID0gMSA8
PCAyCisgICAgVGV4dERlY29yYXRpb25Ta2lwTm9uZSAgICAgID0gMCwKKyAgICBUZXh0RGVjb3Jh
dGlvblNraXBJbmsgICAgICAgPSAxIDw8IDAsCisgICAgVGV4dERlY29yYXRpb25Ta2lwT2JqZWN0
cyAgID0gMSA8PCAxLAorICAgIFRleHREZWNvcmF0aW9uU2tpcEF1dG8gICAgICA9IDEgPDwgMgog
fTsKIHR5cGVkZWYgdW5zaWduZWQgVGV4dERlY29yYXRpb25Ta2lwOwogCiBlbnVtIFRleHRVbmRl
cmxpbmVQb3NpdGlvbiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBzdXBwb3J0IGZvciAndW5k
ZXIgbGVmdCcgYW5kICd1bmRlciByaWdodCcgdmFsdWVzLgotICAgIFRleHRVbmRlcmxpbmVQb3Np
dGlvbkF1dG8gPSAweDEsCi0gICAgVGV4dFVuZGVybGluZVBvc2l0aW9uQWxwaGFiZXRpYyA9IDB4
MiwKLSAgICBUZXh0VW5kZXJsaW5lUG9zaXRpb25VbmRlciA9IDB4NAotfTsKLQotZW51bSBUZXh0
Wm9vbSB7Ci0gICAgVGV4dFpvb21Ob3JtYWwsCi0gICAgVGV4dFpvb21SZXNldAotfTsKLQotZW51
bSBCcmVha0JldHdlZW4gewotICAgIEF1dG9CcmVha0JldHdlZW4sCi0gICAgQXZvaWRCcmVha0Jl
dHdlZW4sCi0gICAgQXZvaWRDb2x1bW5CcmVha0JldHdlZW4sCi0gICAgQXZvaWRQYWdlQnJlYWtC
ZXR3ZWVuLAotICAgIENvbHVtbkJyZWFrQmV0d2VlbiwKLSAgICBQYWdlQnJlYWtCZXR3ZWVuLAot
ICAgIExlZnRQYWdlQnJlYWtCZXR3ZWVuLAotICAgIFJpZ2h0UGFnZUJyZWFrQmV0d2VlbiwKLSAg
ICBSZWN0b1BhZ2VCcmVha0JldHdlZW4sCi0gICAgVmVyc29QYWdlQnJlYWtCZXR3ZWVuCisgICAg
VGV4dFVuZGVybGluZVBvc2l0aW9uQXV0byAgICAgICA9IDEgPDwgMCwKKyAgICBUZXh0VW5kZXJs
aW5lUG9zaXRpb25BbHBoYWJldGljID0gMSA8PCAxLAorICAgIFRleHRVbmRlcmxpbmVQb3NpdGlv
blVuZGVyICAgICAgPSAxIDw8IDIKK307CisKK2VudW0gY2xhc3MgVGV4dFpvb20geworICAgIE5v
cm1hbCwKKyAgICBSZXNldAorfTsKKworZW51bSBjbGFzcyBCcmVha0JldHdlZW4geworICAgIEF1
dG8sCisgICAgQXZvaWQsCisgICAgQXZvaWRDb2x1bW4sCisgICAgQXZvaWRQYWdlLAorICAgIENv
bHVtbiwKKyAgICBQYWdlLAorICAgIExlZnRQYWdlLAorICAgIFJpZ2h0UGFnZSwKKyAgICBSZWN0
b1BhZ2UsCisgICAgVmVyc29QYWdlCiB9OwogYm9vbCBhbHdheXNQYWdlQnJlYWsoQnJlYWtCZXR3
ZWVuKTsKICAgICAKLWVudW0gQnJlYWtJbnNpZGUgewotICAgIEF1dG9CcmVha0luc2lkZSwKLSAg
ICBBdm9pZEJyZWFrSW5zaWRlLAotICAgIEF2b2lkQ29sdW1uQnJlYWtJbnNpZGUsCi0gICAgQXZv
aWRQYWdlQnJlYWtJbnNpZGUKK2VudW0gY2xhc3MgQnJlYWtJbnNpZGUgeworICAgIEF1dG8sCisg
ICAgQXZvaWQsCisgICAgQXZvaWRDb2x1bW4sCisgICAgQXZvaWRQYWdlCiB9OwogCiBlbnVtIEhh
bmdpbmdQdW5jdHVhdGlvbiB7Ci0gICAgTm9IYW5naW5nUHVuY3R1YXRpb24gPSAwLAotICAgIEZp
cnN0SGFuZ2luZ1B1bmN0dWF0aW9uID0gMSA8PCAwLAotICAgIExhc3RIYW5naW5nUHVuY3R1YXRp
b24gPSAxIDw8IDEsCi0gICAgQWxsb3dFbmRIYW5naW5nUHVuY3R1YXRpb24gPSAxIDw8IDIsCi0g
ICAgRm9yY2VFbmRIYW5naW5nUHVuY3R1YXRpb24gPSAxIDw8IDMKKyAgICBOb0hhbmdpbmdQdW5j
dHVhdGlvbiAgICAgICAgPSAwLAorICAgIEZpcnN0SGFuZ2luZ1B1bmN0dWF0aW9uICAgICA9IDEg
PDwgMCwKKyAgICBMYXN0SGFuZ2luZ1B1bmN0dWF0aW9uICAgICAgPSAxIDw8IDEsCisgICAgQWxs
b3dFbmRIYW5naW5nUHVuY3R1YXRpb24gID0gMSA8PCAyLAorICAgIEZvcmNlRW5kSGFuZ2luZ1B1
bmN0dWF0aW9uICA9IDEgPDwgMwogfTsKIGlubGluZSBIYW5naW5nUHVuY3R1YXRpb24gb3BlcmF0
b3J8KEhhbmdpbmdQdW5jdHVhdGlvbiBhLCBIYW5naW5nUHVuY3R1YXRpb24gYikgeyByZXR1cm4g
SGFuZ2luZ1B1bmN0dWF0aW9uKGludChhKSB8IGludChiKSk7IH0KIGlubGluZSBIYW5naW5nUHVu
Y3R1YXRpb24mIG9wZXJhdG9yfD0oSGFuZ2luZ1B1bmN0dWF0aW9uJiBhLCBIYW5naW5nUHVuY3R1
YXRpb24gYikgeyByZXR1cm4gYSA9IGEgfCBiOyB9CiAKLWVudW0gRUVtcHR5Q2VsbCB7Ci0gICAg
U0hPVywKLSAgICBISURFCitlbnVtIGNsYXNzIEVtcHR5Q2VsbCB7CisgICAgU2hvdywKKyAgICBI
aWRlCiB9OwogCi1lbnVtIEVDYXB0aW9uU2lkZSB7Ci0gICAgQ0FQVE9QLAotICAgIENBUEJPVFRP
TSwKLSAgICBDQVBMRUZULAotICAgIENBUFJJR0hUCitlbnVtIGNsYXNzIENhcHRpb25TaWRlIHsK
KyAgICBUb3AsCisgICAgQm90dG9tLAorICAgIExlZnQsCisgICAgUmlnaHQKIH07CiAKLWVudW0g
RUxpc3RTdHlsZVBvc2l0aW9uIHsKLSAgICBPVVRTSURFLAotICAgIElOU0lERQorZW51bSBjbGFz
cyBMaXN0U3R5bGVQb3NpdGlvbiB7CisgICAgT3V0c2lkZSwKKyAgICBJbnNpZGUKIH07CiAKLWVu
dW0gRVZpc2liaWxpdHkgewotICAgIFZJU0lCTEUsCi0gICAgSElEREVOLAotICAgIENPTExBUFNF
CitlbnVtIGNsYXNzIFZpc2liaWxpdHkgeworICAgIFZpc2libGUsCisgICAgSGlkZGVuLAorICAg
IENvbGxhcHNlCiB9OwogCi1lbnVtIEVDdXJzb3IgeworV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFdURjo6VGV4dFN0cmVhbSYsIFZpc2liaWxpdHkpOworCitlbnVtIGNsYXNzIEN1cnNvclR5
cGUgewogICAgIC8vIFRoZSBmb2xsb3dpbmcgbXVzdCBtYXRjaCB0aGUgb3JkZXIgaW4gQ1NTVmFs
dWVLZXl3b3Jkcy5pbi4KLSAgICBDdXJzb3JBdXRvLAotICAgIEN1cnNvckRlZmF1bHQsCi0gICAg
Ly8gQ3Vyc29yTm9uZQotICAgIEN1cnNvckNvbnRleHRNZW51LAotICAgIEN1cnNvckhlbHAsCi0g
ICAgQ3Vyc29yUG9pbnRlciwKLSAgICBDdXJzb3JQcm9ncmVzcywKLSAgICBDdXJzb3JXYWl0LAot
ICAgIEN1cnNvckNlbGwsCi0gICAgQ3Vyc29yQ3Jvc3NoYWlyLAotICAgIEN1cnNvclRleHQsCi0g
ICAgQ3Vyc29yVmVydGljYWxUZXh0LAotICAgIEN1cnNvckFsaWFzLAotICAgIC8vIEN1cnNvckNv
cHkKLSAgICBDdXJzb3JNb3ZlLAotICAgIEN1cnNvck5vRHJvcCwKLSAgICBDdXJzb3JOb3RBbGxv
d2VkLAotICAgIEN1cnNvckdyYWIsCi0gICAgQ3Vyc29yR3JhYmJpbmcsCi0gICAgQ3Vyc29yRVJl
c2l6ZSwKLSAgICBDdXJzb3JOUmVzaXplLAotICAgIEN1cnNvck5lUmVzaXplLAotICAgIEN1cnNv
ck53UmVzaXplLAotICAgIEN1cnNvclNSZXNpemUsCi0gICAgQ3Vyc29yU2VSZXNpemUsCi0gICAg
Q3Vyc29yU3dSZXNpemUsCi0gICAgQ3Vyc29yV1Jlc2l6ZSwKLSAgICBDdXJzb3JFd1Jlc2l6ZSwK
LSAgICBDdXJzb3JOc1Jlc2l6ZSwKLSAgICBDdXJzb3JOZXN3UmVzaXplLAotICAgIEN1cnNvck53
c2VSZXNpemUsCi0gICAgQ3Vyc29yQ29sUmVzaXplLAotICAgIEN1cnNvclJvd1Jlc2l6ZSwKLSAg
ICBDdXJzb3JBbGxTY3JvbGwsCi0gICAgQ3Vyc29yWm9vbUluLAotICAgIEN1cnNvclpvb21PdXQs
CisgICAgQXV0bywKKyAgICBEZWZhdWx0LAorICAgIC8vIE5vbmUKKyAgICBDb250ZXh0TWVudSwK
KyAgICBIZWxwLAorICAgIFBvaW50ZXIsCisgICAgUHJvZ3Jlc3MsCisgICAgV2FpdCwKKyAgICBD
ZWxsLAorICAgIENyb3NzaGFpciwKKyAgICBUZXh0LAorICAgIFZlcnRpY2FsVGV4dCwKKyAgICBB
bGlhcywKKyAgICAvLyBDb3B5CisgICAgTW92ZSwKKyAgICBOb0Ryb3AsCisgICAgTm90QWxsb3dl
ZCwKKyAgICBHcmFiLAorICAgIEdyYWJiaW5nLAorICAgIEVSZXNpemUsCisgICAgTlJlc2l6ZSwK
KyAgICBORVJlc2l6ZSwKKyAgICBOV1Jlc2l6ZSwKKyAgICBTUmVzaXplLAorICAgIFNFUmVzaXpl
LAorICAgIFNXUmVzaXplLAorICAgIFdSZXNpemUsCisgICAgRVdSZXNpemUsCisgICAgTlNSZXNp
emUsCisgICAgTkVTV1Jlc2l6ZSwKKyAgICBOV1NFUmVzaXplLAorICAgIENvbHVtblJlc2l6ZSwK
KyAgICBSb3dSZXNpemUsCisgICAgQWxsU2Nyb2xsLAorICAgIFpvb21JbiwKKyAgICBab29tT3V0
LAogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBhcmUgaGFuZGxlZCBhcyBleGNlcHRpb25zIHNvIGRv
bid0IG5lZWQgdG8gbWF0Y2guCi0gICAgQ3Vyc29yQ29weSwKLSAgICBDdXJzb3JOb25lCisgICAg
Q29weSwKKyAgICBOb25lCiB9OwogCiAjaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQotZW51
bSBDdXJzb3JWaXNpYmlsaXR5IHsKLSAgICBDdXJzb3JWaXNpYmlsaXR5QXV0bywKLSAgICBDdXJz
b3JWaXNpYmlsaXR5QXV0b0hpZGUsCitlbnVtIGNsYXNzIEN1cnNvclZpc2liaWxpdHkgeworICAg
IEF1dG8sCisgICAgQXV0b0hpZGUsCiB9OwogI2VuZGlmCiAKIC8vIFRoZSBvcmRlciBvZiB0aGlz
IGVudW0gbXVzdCBtYXRjaCB0aGUgb3JkZXIgb2YgdGhlIGRpc3BsYXkgdmFsdWVzIGluIENTU1Zh
bHVlS2V5d29yZHMuaW4uCi1lbnVtIEVEaXNwbGF5IHsKLSAgICBJTkxJTkUsCi0gICAgQkxPQ0ss
Ci0gICAgTElTVF9JVEVNLAotICAgIENPTVBBQ1QsCi0gICAgSU5MSU5FX0JMT0NLLAotICAgIFRB
QkxFLAotICAgIElOTElORV9UQUJMRSwKLSAgICBUQUJMRV9ST1dfR1JPVVAsCi0gICAgVEFCTEVf
SEVBREVSX0dST1VQLAotICAgIFRBQkxFX0ZPT1RFUl9HUk9VUCwKLSAgICBUQUJMRV9ST1csCi0g
ICAgVEFCTEVfQ09MVU1OX0dST1VQLAotICAgIFRBQkxFX0NPTFVNTiwKLSAgICBUQUJMRV9DRUxM
LAotICAgIFRBQkxFX0NBUFRJT04sCi0gICAgQk9YLAotICAgIElOTElORV9CT1gsCi0gICAgRkxF
WCwKLSAgICBXRUJLSVRfRkxFWCwKLSAgICBJTkxJTkVfRkxFWCwKLSAgICBXRUJLSVRfSU5MSU5F
X0ZMRVgsCi0gICAgQ09OVEVOVFMsCi0gICAgR1JJRCwKLSAgICBJTkxJTkVfR1JJRCwKLSAgICBO
T05FCi19OwotCi1lbnVtIEVJbnNpZGVMaW5rIHsKLSAgICBOb3RJbnNpZGVMaW5rLAotICAgIElu
c2lkZVVudmlzaXRlZExpbmssCi0gICAgSW5zaWRlVmlzaXRlZExpbmsKK2VudW0gY2xhc3MgRGlz
cGxheVR5cGUgeworICAgIElubGluZSwKKyAgICBCbG9jaywKKyAgICBMaXN0SXRlbSwKKyAgICBD
b21wYWN0LAorICAgIElubGluZUJsb2NrLAorICAgIFRhYmxlLAorICAgIElubGluZVRhYmxlLAor
ICAgIFRhYmxlUm93R3JvdXAsCisgICAgVGFibGVIZWFkZXJHcm91cCwKKyAgICBUYWJsZUZvb3Rl
ckdyb3VwLAorICAgIFRhYmxlUm93LAorICAgIFRhYmxlQ29sdW1uR3JvdXAsCisgICAgVGFibGVD
b2x1bW4sCisgICAgVGFibGVDZWxsLAorICAgIFRhYmxlQ2FwdGlvbiwKKyAgICBCb3gsCisgICAg
SW5saW5lQm94LAorICAgIEZsZXgsCisgICAgV2ViS2l0RmxleCwKKyAgICBJbmxpbmVGbGV4LAor
ICAgIFdlYktpdElubGluZUZsZXgsCisgICAgQ29udGVudHMsCisgICAgR3JpZCwKKyAgICBJbmxp
bmVHcmlkLAorICAgIE5vbmUKK307CisKK2VudW0gY2xhc3MgSW5zaWRlTGluayB7CisgICAgTm90
SW5zaWRlLAorICAgIEluc2lkZVVudmlzaXRlZCwKKyAgICBJbnNpZGVWaXNpdGVkCiB9OwogICAg
IAotZW51bSBFUG9pbnRlckV2ZW50cyB7Ci0gICAgUEVfTk9ORSwKLSAgICBQRV9BVVRPLAotICAg
IFBFX1NUUk9LRSwKLSAgICBQRV9GSUxMLAotICAgIFBFX1BBSU5URUQsCi0gICAgUEVfVklTSUJM
RSwKLSAgICBQRV9WSVNJQkxFX1NUUk9LRSwKLSAgICBQRV9WSVNJQkxFX0ZJTEwsCi0gICAgUEVf
VklTSUJMRV9QQUlOVEVELAotICAgIFBFX0FMTAorZW51bSBjbGFzcyBQb2ludGVyRXZlbnRzIHsK
KyAgICBOb25lLAorICAgIEF1dG8sCisgICAgU3Ryb2tlLAorICAgIEZpbGwsCisgICAgUGFpbnRl
ZCwKKyAgICBWaXNpYmxlLAorICAgIFZpc2libGVTdHJva2UsCisgICAgVmlzaWJsZUZpbGwsCisg
ICAgVmlzaWJsZVBhaW50ZWQsCisgICAgQWxsCiB9OwogCiBlbnVtIGNsYXNzIFRyYW5zZm9ybVN0
eWxlM0QgewpAQCAtOTE5LDQyICs5MjMsNDIgQEAgZW51bSBjbGFzcyBMaW5lQ2xhbXAgewogICAg
IFBlcmNlbnRhZ2UKIH07CiAKLWVudW0gSHlwaGVucyB7Ci0gICAgSHlwaGVuc05vbmUsCi0gICAg
SHlwaGVuc01hbnVhbCwKLSAgICBIeXBoZW5zQXV0bworZW51bSBjbGFzcyBIeXBoZW5zIHsKKyAg
ICBOb25lLAorICAgIE1hbnVhbCwKKyAgICBBdXRvCiB9OwogCiBlbnVtIEVTcGVha0FzIHsKLSAg
ICBTcGVha05vcm1hbCA9IDAsCi0gICAgU3BlYWtTcGVsbE91dCA9IDEgPDwgMCwKLSAgICBTcGVh
a0RpZ2l0cyA9IDEgPDwgMSwKKyAgICBTcGVha05vcm1hbCAgICAgICAgICAgICA9IDAsCisgICAg
U3BlYWtTcGVsbE91dCAgICAgICAgICAgPSAxIDw8IDAsCisgICAgU3BlYWtEaWdpdHMgICAgICAg
ICAgICAgPSAxIDw8IDEsCiAgICAgU3BlYWtMaXRlcmFsUHVuY3R1YXRpb24gPSAxIDw8IDIsCi0g
ICAgU3BlYWtOb1B1bmN0dWF0aW9uID0gMSA8PCAzCisgICAgU3BlYWtOb1B1bmN0dWF0aW9uICAg
ICAgPSAxIDw8IDMKIH07CiBpbmxpbmUgRVNwZWFrQXMgb3BlcmF0b3J8KEVTcGVha0FzIGEsIEVT
cGVha0FzIGIpIHsgcmV0dXJuIEVTcGVha0FzKGludChhKSB8IGludChiKSk7IH0KIGlubGluZSBF
U3BlYWtBcyYgb3BlcmF0b3J8PShFU3BlYWtBcyYgYSwgRVNwZWFrQXMgYikgeyByZXR1cm4gYSA9
IGEgfCBiOyB9CiAKLWVudW0gVGV4dEVtcGhhc2lzRmlsbCB7Ci0gICAgVGV4dEVtcGhhc2lzRmls
bEZpbGxlZCwKLSAgICBUZXh0RW1waGFzaXNGaWxsT3BlbgorZW51bSBjbGFzcyBUZXh0RW1waGFz
aXNGaWxsIHsKKyAgICBGaWxsZWQsCisgICAgT3BlbgogfTsKIAotZW51bSBUZXh0RW1waGFzaXNN
YXJrIHsKLSAgICBUZXh0RW1waGFzaXNNYXJrTm9uZSwKLSAgICBUZXh0RW1waGFzaXNNYXJrQXV0
bywKLSAgICBUZXh0RW1waGFzaXNNYXJrRG90LAotICAgIFRleHRFbXBoYXNpc01hcmtDaXJjbGUs
Ci0gICAgVGV4dEVtcGhhc2lzTWFya0RvdWJsZUNpcmNsZSwKLSAgICBUZXh0RW1waGFzaXNNYXJr
VHJpYW5nbGUsCi0gICAgVGV4dEVtcGhhc2lzTWFya1Nlc2FtZSwKLSAgICBUZXh0RW1waGFzaXNN
YXJrQ3VzdG9tCitlbnVtIGNsYXNzIFRleHRFbXBoYXNpc01hcmsgeworICAgIE5vbmUsCisgICAg
QXV0bywKKyAgICBEb3QsCisgICAgQ2lyY2xlLAorICAgIERvdWJsZUNpcmNsZSwKKyAgICBUcmlh
bmdsZSwKKyAgICBTZXNhbWUsCisgICAgQ3VzdG9tCiB9OwogCiBlbnVtIFRleHRFbXBoYXNpc1Bv
c2l0aW9ucyB7Ci0gICAgVGV4dEVtcGhhc2lzUG9zaXRpb25PdmVyID0gMSA8PCAwLAorICAgIFRl
eHRFbXBoYXNpc1Bvc2l0aW9uT3ZlciAgPSAxIDw8IDAsCiAgICAgVGV4dEVtcGhhc2lzUG9zaXRp
b25VbmRlciA9IDEgPDwgMSwKLSAgICBUZXh0RW1waGFzaXNQb3NpdGlvbkxlZnQgPSAxIDw8IDIs
CisgICAgVGV4dEVtcGhhc2lzUG9zaXRpb25MZWZ0ICA9IDEgPDwgMiwKICAgICBUZXh0RW1waGFz
aXNQb3NpdGlvblJpZ2h0ID0gMSA8PCAzCiB9OwogdHlwZWRlZiB1bnNpZ25lZCBUZXh0RW1waGFz
aXNQb3NpdGlvbjsKQEAgLTk4MCw1OCArOTg0LDU4IEBAIGVudW0gY2xhc3MgSW1hZ2VSZW5kZXJp
bmcgewogCiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgSW1h
Z2VSZW5kZXJpbmcpOwogCi1lbnVtIEltYWdlUmVzb2x1dGlvblNvdXJjZSB7Ci0gICAgSW1hZ2VS
ZXNvbHV0aW9uU3BlY2lmaWVkID0gMCwKLSAgICBJbWFnZVJlc29sdXRpb25Gcm9tSW1hZ2UKK2Vu
dW0gY2xhc3MgSW1hZ2VSZXNvbHV0aW9uU291cmNlIHsKKyAgICBTcGVjaWZpZWQgPSAwLAorICAg
IEZyb21JbWFnZQogfTsKIAotZW51bSBJbWFnZVJlc29sdXRpb25TbmFwIHsKLSAgICBJbWFnZVJl
c29sdXRpb25Ob1NuYXAgPSAwLAotICAgIEltYWdlUmVzb2x1dGlvblNuYXBQaXhlbHMKK2VudW0g
Y2xhc3MgSW1hZ2VSZXNvbHV0aW9uU25hcCB7CisgICAgTm9uZSA9IDAsCisgICAgUGl4ZWxzCiB9
OwogCi1lbnVtIE9yZGVyIHsKLSAgICBMb2dpY2FsT3JkZXIgPSAwLAotICAgIFZpc3VhbE9yZGVy
CitlbnVtIGNsYXNzIE9yZGVyIHsKKyAgICBMb2dpY2FsID0gMCwKKyAgICBWaXN1YWwKIH07CiAK
LWVudW0gQ29sdW1uQXhpcyB7Ci0gICAgSG9yaXpvbnRhbENvbHVtbkF4aXMsCi0gICAgVmVydGlj
YWxDb2x1bW5BeGlzLAotICAgIEF1dG9Db2x1bW5BeGlzCitlbnVtIGNsYXNzIENvbHVtbkF4aXMg
eworICAgIEhvcml6b250YWwsCisgICAgVmVydGljYWwsCisgICAgQXV0bwogfTsKIAotZW51bSBD
b2x1bW5Qcm9ncmVzc2lvbiB7Ci0gICAgTm9ybWFsQ29sdW1uUHJvZ3Jlc3Npb24sCi0gICAgUmV2
ZXJzZUNvbHVtblByb2dyZXNzaW9uCitlbnVtIGNsYXNzIENvbHVtblByb2dyZXNzaW9uIHsKKyAg
ICBOb3JtYWwsCisgICAgUmV2ZXJzZQogfTsKIAotZW51bSBMaW5lU25hcCB7Ci0gICAgTGluZVNu
YXBOb25lLAotICAgIExpbmVTbmFwQmFzZWxpbmUsCi0gICAgTGluZVNuYXBDb250YWluCitlbnVt
IGNsYXNzIExpbmVTbmFwIHsKKyAgICBOb25lLAorICAgIEJhc2VsaW5lLAorICAgIENvbnRhaW4K
IH07CiAKLWVudW0gTGluZUFsaWduIHsKLSAgICBMaW5lQWxpZ25Ob25lLAotICAgIExpbmVBbGln
bkVkZ2VzCitlbnVtIGNsYXNzIExpbmVBbGlnbiB7CisgICAgTm9uZSwKKyAgICBFZGdlcwogfTsK
IAotZW51bSBSdWJ5UG9zaXRpb24gewotICAgIFJ1YnlQb3NpdGlvbkJlZm9yZSwKLSAgICBSdWJ5
UG9zaXRpb25BZnRlciwKLSAgICBSdWJ5UG9zaXRpb25JbnRlckNoYXJhY3RlcgorZW51bSBjbGFz
cyBSdWJ5UG9zaXRpb24geworICAgIEJlZm9yZSwKKyAgICBBZnRlciwKKyAgICBJbnRlckNoYXJh
Y3RlcgogfTsKIAogc3RhdGljIGNvbnN0IHNpemVfdCBHcmlkQXV0b0Zsb3dCaXRzID0gNDsKIGVu
dW0gSW50ZXJuYWxHcmlkQXV0b0Zsb3dBbGdvcml0aG0gewotICAgIEludGVybmFsQXV0b0Zsb3dB
bGdvcml0aG1TcGFyc2UgPSAweDEsCi0gICAgSW50ZXJuYWxBdXRvRmxvd0FsZ29yaXRobURlbnNl
ID0gMHgyLAorICAgIEludGVybmFsQXV0b0Zsb3dBbGdvcml0aG1TcGFyc2UgPSAxIDw8IDAsCisg
ICAgSW50ZXJuYWxBdXRvRmxvd0FsZ29yaXRobURlbnNlICA9IDEgPDwgMSwKIH07CiAKIGVudW0g
SW50ZXJuYWxHcmlkQXV0b0Zsb3dEaXJlY3Rpb24gewotICAgIEludGVybmFsQXV0b0Zsb3dEaXJl
Y3Rpb25Sb3cgPSAweDQsCi0gICAgSW50ZXJuYWxBdXRvRmxvd0RpcmVjdGlvbkNvbHVtbiA9IDB4
OAorICAgIEludGVybmFsQXV0b0Zsb3dEaXJlY3Rpb25Sb3cgICAgPSAxIDw8IDIsCisgICAgSW50
ZXJuYWxBdXRvRmxvd0RpcmVjdGlvbkNvbHVtbiA9IDEgPDwgMwogfTsKIAogZW51bSBHcmlkQXV0
b0Zsb3cgewpAQCAtMTA0MSwxMCArMTA0NSwxMCBAQCBlbnVtIEdyaWRBdXRvRmxvdyB7CiAgICAg
QXV0b0Zsb3dDb2x1bW5EZW5zZSA9IEludGVybmFsQXV0b0Zsb3dBbGdvcml0aG1EZW5zZSB8IElu
dGVybmFsQXV0b0Zsb3dEaXJlY3Rpb25Db2x1bW4KIH07CiAKLWVudW0gQXV0b1JlcGVhdFR5cGUg
ewotICAgIE5vQXV0b1JlcGVhdCwKLSAgICBBdXRvRmlsbCwKLSAgICBBdXRvRml0CitlbnVtIGNs
YXNzIEF1dG9SZXBlYXRUeXBlIHsKKyAgICBOb25lLAorICAgIEZpbGwsCisgICAgRml0CiB9Owog
CiAvLyBSZWFzb25hYmxlIG1heGltdW0gdG8gcHJldmVudCBpbnNhbmUgZm9udCBzaXplcyBmcm9t
IGNhdXNpbmcgY3Jhc2hlcyBvbiBzb21lIHBsYXRmb3JtcyAoc3VjaCBhcyBXaW5kb3dzKS4KQEAg
LTEwNzAsNyArMTA3NCw3IEBAIGVudW0gY2xhc3MgSXNvbGF0aW9uIHsKIH07CiAKIC8vIEZpbGws
IFN0cm9rZSwgVmlld0JveCBhcmUganVzdCB1c2VkIGZvciBTVkcuCi1lbnVtIENTU0JveFR5cGUg
eworZW51bSBjbGFzcyBDU1NCb3hUeXBlIHsKICAgICBCb3hNaXNzaW5nID0gMCwKICAgICBNYXJn
aW5Cb3gsCiAgICAgQm9yZGVyQm94LApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1NoYXBlVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU2hhcGVWYWx1ZS5oCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3
IEBAIHByaXZhdGU6CiAgICAgVHlwZSBtX3R5cGU7CiAgICAgUmVmUHRyPEJhc2ljU2hhcGU+IG1f
c2hhcGU7CiAgICAgUmVmUHRyPFN0eWxlSW1hZ2U+IG1faW1hZ2U7Ci0gICAgQ1NTQm94VHlwZSBt
X2Nzc0JveCB7IEJveE1pc3NpbmcgfTsKKyAgICBDU1NCb3hUeXBlIG1fY3NzQm94IHsgQ1NTQm94
VHlwZTo6Qm94TWlzc2luZyB9OwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuY3BwCShyZXZpc2lvbiAyMzIx
NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiw4IEBAIFN0eWxlTXVsdGlDb2xEYXRhOjpT
dHlsZU11bHRpQ29sRGF0YSgpCiAgICAgLCBhdXRvQ291bnQodHJ1ZSkKICAgICAsIGZpbGwoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFsQ29sdW1uRmlsbCgpKSkKICAg
ICAsIGNvbHVtblNwYW4oZmFsc2UpCi0gICAgLCBheGlzKFJlbmRlclN0eWxlOjppbml0aWFsQ29s
dW1uQXhpcygpKQotICAgICwgcHJvZ3Jlc3Npb24oUmVuZGVyU3R5bGU6OmluaXRpYWxDb2x1bW5Q
cm9ncmVzc2lvbigpKQorICAgICwgYXhpcyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5
bGU6OmluaXRpYWxDb2x1bW5BeGlzKCkpKQorICAgICwgcHJvZ3Jlc3Npb24oc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFsQ29sdW1uUHJvZ3Jlc3Npb24oKSkpCiB7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0
ZWREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODcsMTEgKzg3LDExIEBAIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxl
UmFyZUluaGVyaXQKICAgICAsIG5ic3BNb2RlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihOQlNQTW9k
ZTo6Tm9ybWFsKSkKICAgICAsIGxpbmVCcmVhayhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGluZUJy
ZWFrOjpBdXRvKSkKICAgICAsIHVzZXJTZWxlY3Qoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRl
clN0eWxlOjppbml0aWFsVXNlclNlbGVjdCgpKSkKLSAgICAsIHNwZWFrQXMoU3BlYWtOb3JtYWwp
Ci0gICAgLCBoeXBoZW5zKEh5cGhlbnNNYW51YWwpCi0gICAgLCB0ZXh0RW1waGFzaXNGaWxsKFRl
eHRFbXBoYXNpc0ZpbGxGaWxsZWQpCi0gICAgLCB0ZXh0RW1waGFzaXNNYXJrKFRleHRFbXBoYXNp
c01hcmtOb25lKQotICAgICwgdGV4dEVtcGhhc2lzUG9zaXRpb24oVGV4dEVtcGhhc2lzUG9zaXRp
b25PdmVyIHwgVGV4dEVtcGhhc2lzUG9zaXRpb25SaWdodCkKKyAgICAsIHNwZWFrQXMoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFNwZWFrTm9ybWFsKSkKKyAgICAsIGh5cGhlbnMoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEh5cGhlbnM6Ok1hbnVhbCkpCisgICAgLCB0ZXh0RW1waGFzaXNGaWxsKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihUZXh0RW1waGFzaXNGaWxsOjpGaWxsZWQpKQorICAgICwgdGV4dEVt
cGhhc2lzTWFyayhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVGV4dEVtcGhhc2lzTWFyazo6Tm9uZSkp
CisgICAgLCB0ZXh0RW1waGFzaXNQb3NpdGlvbihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVGV4dEVt
cGhhc2lzUG9zaXRpb25PdmVyIHwgVGV4dEVtcGhhc2lzUG9zaXRpb25SaWdodCkpCiAgICAgLCB0
ZXh0T3JpZW50YXRpb24oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFRleHRPcmllbnRhdGlvbjo6TWl4
ZWQpKQogI2lmIEVOQUJMRShDU1MzX1RFWFQpCiAgICAgLCB0ZXh0SW5kZW50TGluZShSZW5kZXJT
dHlsZTo6aW5pdGlhbFRleHRJbmRlbnRMaW5lKCkpCkBAIC0xMDIsOCArMTAyLDggQEAgU3R5bGVS
YXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdAogICAgICwgaW1hZ2VPcmllbnRhdGlv
bihSZW5kZXJTdHlsZTo6aW5pdGlhbEltYWdlT3JpZW50YXRpb24oKSkKICNlbmRpZgogICAgICwg
aW1hZ2VSZW5kZXJpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFs
SW1hZ2VSZW5kZXJpbmcoKSkpCi0gICAgLCBsaW5lU25hcChSZW5kZXJTdHlsZTo6aW5pdGlhbExp
bmVTbmFwKCkpCi0gICAgLCBsaW5lQWxpZ24oUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lQWxpZ24o
KSkKKyAgICAsIGxpbmVTbmFwKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZW5kZXJTdHlsZTo6aW5p
dGlhbExpbmVTbmFwKCkpKQorICAgICwgbGluZUFsaWduKHN0YXRpY19jYXN0PHVuc2lnbmVkPihS
ZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVBbGlnbigpKSkKICNpZiBFTkFCTEUoQUNDRUxFUkFURURf
T1ZFUkZMT1dfU0NST0xMSU5HKQogICAgICwgdXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZyhSZW5k
ZXJTdHlsZTo6aW5pdGlhbFVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcoKSkKICNlbmRpZgpAQCAt
MTE3LDggKzExNyw4IEBAIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXQK
ICNlbmRpZgogICAgICwgdGV4dERlY29yYXRpb25Ta2lwKFJlbmRlclN0eWxlOjppbml0aWFsVGV4
dERlY29yYXRpb25Ta2lwKCkpCiAgICAgLCB0ZXh0VW5kZXJsaW5lUG9zaXRpb24oUmVuZGVyU3R5
bGU6OmluaXRpYWxUZXh0VW5kZXJsaW5lUG9zaXRpb24oKSkKLSAgICAsIHJ1YnlQb3NpdGlvbihS
ZW5kZXJTdHlsZTo6aW5pdGlhbFJ1YnlQb3NpdGlvbigpKQotICAgICwgdGV4dFpvb20oUmVuZGVy
U3R5bGU6OmluaXRpYWxUZXh0Wm9vbSgpKQorICAgICwgcnVieVBvc2l0aW9uKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihSZW5kZXJTdHlsZTo6aW5pdGlhbFJ1YnlQb3NpdGlvbigpKSkKKyAgICAsIHRl
eHRab29tKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRab29t
KCkpKQogI2lmIFBMQVRGT1JNKElPUykKICAgICAsIHRvdWNoQ2FsbG91dEVuYWJsZWQoUmVuZGVy
U3R5bGU6OmluaXRpYWxUb3VjaENhbGxvdXRFbmFibGVkKCkpCiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YS5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODYsMTAgKzg2LDEwIEBAIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFy
ZU5vbkkKICAgICAsIHRleHRPdmVyZmxvdyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5
bGU6OmluaXRpYWxUZXh0T3ZlcmZsb3coKSkpCiAgICAgLCBtYXJnaW5CZWZvcmVDb2xsYXBzZShz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oTWFyZ2luQ29sbGFwc2U6OkNvbGxhcHNlKSkKICAgICAsIG1h
cmdpbkFmdGVyQ29sbGFwc2Uoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE1hcmdpbkNvbGxhcHNlOjpD
b2xsYXBzZSkpCi0gICAgLCBhcHBlYXJhbmNlKFJlbmRlclN0eWxlOjppbml0aWFsQXBwZWFyYW5j
ZSgpKQotICAgICwgYm9yZGVyRml0KFJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyRml0KCkpCisg
ICAgLCBhcHBlYXJhbmNlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZW5kZXJTdHlsZTo6aW5pdGlh
bEFwcGVhcmFuY2UoKSkpCisgICAgLCBib3JkZXJGaXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJl
bmRlclN0eWxlOjppbml0aWFsQm9yZGVyRml0KCkpKQogICAgICwgdGV4dENvbWJpbmUoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFsVGV4dENvbWJpbmUoKSkpCi0gICAg
LCB0ZXh0RGVjb3JhdGlvblN0eWxlKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dERlY29yYXRpb25T
dHlsZSgpKQorICAgICwgdGV4dERlY29yYXRpb25TdHlsZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvblN0eWxlKCkpKQogICAgICwgYXNwZWN0
UmF0aW9UeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZW5kZXJTdHlsZTo6aW5pdGlhbEFzcGVj
dFJhdGlvVHlwZSgpKSkKICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQogICAgICwgZWZmZWN0
aXZlQmxlbmRNb2RlKFJlbmRlclN0eWxlOjppbml0aWFsQmxlbmRNb2RlKCkpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25J
bmhlcml0ZWREYXRhLmgJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE4NSw3ICsxODUsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbWFyZ2luQmVmb3JlQ29sbGFw
c2UgOiAyOyAvLyBNYXJnaW5Db2xsYXBzZQogICAgIHVuc2lnbmVkIG1hcmdpbkFmdGVyQ29sbGFw
c2UgOiAyOyAvLyBNYXJnaW5Db2xsYXBzZQogICAgIHVuc2lnbmVkIGFwcGVhcmFuY2UgOiA2OyAv
LyBFQXBwZWFyYW5jZQotICAgIHVuc2lnbmVkIGJvcmRlckZpdCA6IDE7IC8vIEVCb3JkZXJGaXQK
KyAgICB1bnNpZ25lZCBib3JkZXJGaXQgOiAxOyAvLyBCb3JkZXJGaXQKICAgICB1bnNpZ25lZCB0
ZXh0Q29tYmluZSA6IDE7IC8vIENTUzMgdGV4dC1jb21iaW5lIHByb3BlcnRpZXMKIAogICAgIHVu
c2lnbmVkIHRleHREZWNvcmF0aW9uU3R5bGUgOiAzOyAvLyBUZXh0RGVjb3JhdGlvblN0eWxlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250
YWluZXIuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNyw3ICsxMzcs
NyBAQCB2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6cGFpbnQoUGFpbnRJbmZvCiAgICAgLy8gb3V0
bGluZSByZWN0IGludG8gcGFyZW50IGNvb3JkcyBiZWZvcmUgZHJhd2luZy4KICAgICAvLyBGSVhN
RTogVGhpcyBtZWFucyBvdXIgZm9jdXMgcmluZyB3b24ndCBzaGFyZSBvdXIgcm90YXRpb24gbGlr
ZSBpdCBzaG91bGQuCiAgICAgLy8gV2Ugc2hvdWxkIGluc3RlYWQgZGlzYWJsZSBvdXIgY2xpcCBk
dXJpbmcgUGFpbnRQaGFzZU91dGxpbmUKLSAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50
UGhhc2VTZWxmT3V0bGluZSAmJiBzdHlsZSgpLm91dGxpbmVXaWR0aCgpICYmIHN0eWxlKCkudmlz
aWJpbGl0eSgpID09IFZJU0lCTEUpIHsKKyAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50
UGhhc2VTZWxmT3V0bGluZSAmJiBzdHlsZSgpLm91dGxpbmVXaWR0aCgpICYmIHN0eWxlKCkudmlz
aWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUpIHsKICAgICAgICAgSW50UmVjdCBwYWlu
dFJlY3RJblBhcmVudCA9IGVuY2xvc2luZ0ludFJlY3QobG9jYWxUb1BhcmVudFRyYW5zZm9ybSgp
Lm1hcFJlY3QocmVwYWludFJlY3QpKTsKICAgICAgICAgcGFpbnRPdXRsaW5lKHBhaW50SW5mbywg
cGFpbnRSZWN0SW5QYXJlbnQpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmxheW91dCgpCiB2b2lk
IFJlbmRlclNWR0ltYWdlOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmKQogewogICAgIGlmIChwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQo
KSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQKLSAgICAgICAgfHwg
c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gSElEREVOIHx8ICFpbWFnZVJlc291cmNlKCkuY2FjaGVk
SW1hZ2UoKSkKKyAgICAgICAgfHwgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6
SGlkZGVuIHx8ICFpbWFnZVJlc291cmNlKCkuY2FjaGVkSW1hZ2UoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94ID0gcmVwYWludFJlY3RJbkxvY2FsQ29vcmRp
bmF0ZXMoKTsKQEAgLTE5Miw3ICsxOTIsNyBAQCBib29sIFJlbmRlclNWR0ltYWdlOjpub2RlQXRG
bG9hdFBvaW50KGNvCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFBvaW50ZXJFdmVudHNI
aXRSdWxlcyBoaXRSdWxlcyhQb2ludGVyRXZlbnRzSGl0UnVsZXM6OlNWR19JTUFHRV9ISVRURVNU
SU5HLCByZXF1ZXN0LCBzdHlsZSgpLnBvaW50ZXJFdmVudHMoKSk7Ci0gICAgYm9vbCBpc1Zpc2li
bGUgPSAoc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSk7CisgICAgYm9vbCBpc1Zpc2li
bGUgPSAoc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSk7CiAgICAg
aWYgKGlzVmlzaWJsZSB8fCAhaGl0UnVsZXMucmVxdWlyZVZpc2libGUpIHsKICAgICAgICAgRmxv
YXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS52
YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CiAgICAg
ICAgICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5s
aW5lVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdJbmxpbmVUZXh0LmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTEsOCArOTEsOCBAQCB2b2lkIFJlbmRlclNWR0lubGluZVRleHQ6OnN0eWxlRGlkQ2hhbmdl
CiAgICAgUmVuZGVyVGV4dDo6c3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xkU3R5bGUpOwogICAgIHVw
ZGF0ZVNjYWxlZEZvbnQoKTsKIAotICAgIGJvb2wgbmV3UHJlc2VydmVzID0gc3R5bGUoKS53aGl0
ZVNwYWNlKCkgPT0gUFJFOwotICAgIGJvb2wgb2xkUHJlc2VydmVzID0gb2xkU3R5bGUgPyBvbGRT
dHlsZS0+d2hpdGVTcGFjZSgpID09IFBSRSA6IGZhbHNlOworICAgIGJvb2wgbmV3UHJlc2VydmVz
ID0gc3R5bGUoKS53aGl0ZVNwYWNlKCkgPT0gV2hpdGVTcGFjZTo6UHJlOworICAgIGJvb2wgb2xk
UHJlc2VydmVzID0gb2xkU3R5bGUgPyBvbGRTdHlsZS0+d2hpdGVTcGFjZSgpID09IFdoaXRlU3Bh
Y2U6OlByZSA6IGZhbHNlOwogICAgIGlmIChvbGRQcmVzZXJ2ZXMgJiYgIW5ld1ByZXNlcnZlcykg
ewogICAgICAgICBzZXRUZXh0KGFwcGx5U1ZHV2hpdGVzcGFjZVJ1bGVzKG9yaWdpbmFsVGV4dCgp
LCBmYWxzZSksIHRydWUpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAkocmV2aXNp
b24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2Rl
bE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIFJlbmRl
clNWR01vZGVsT2JqZWN0OjphYnNvbHV0ZUZvY3VzCiAgICAgCiBib29sIFJlbmRlclNWR01vZGVs
T2JqZWN0OjpjaGVja0ludGVyc2VjdGlvbihSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQogewotICAgIGlmICghcmVuZGVyZXIgfHwgcmVuZGVyZXItPnN0eWxl
KCkucG9pbnRlckV2ZW50cygpID09IFBFX05PTkUpCisgICAgaWYgKCFyZW5kZXJlciB8fCByZW5k
ZXJlci0+c3R5bGUoKS5wb2ludGVyRXZlbnRzKCkgPT0gUG9pbnRlckV2ZW50czo6Tm9uZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghaXNHcmFwaGljc0VsZW1lbnQoKnJlbmRlcmVy
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTgxLDcgKzE4MSw3IEBAIGJvb2wgUmVuZGVy
U1ZHTW9kZWxPYmplY3Q6OmNoZWNrSW50ZXJzZWMKIAogYm9vbCBSZW5kZXJTVkdNb2RlbE9iamVj
dDo6Y2hlY2tFbmNsb3N1cmUoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkKIHsKLSAgICBpZiAoIXJlbmRlcmVyIHx8IHJlbmRlcmVyLT5zdHlsZSgpLnBvaW50
ZXJFdmVudHMoKSA9PSBQRV9OT05FKQorICAgIGlmICghcmVuZGVyZXIgfHwgcmVuZGVyZXItPnN0
eWxlKCkucG9pbnRlckV2ZW50cygpID09IFBvaW50ZXJFdmVudHM6Ok5vbmUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAoIWlzR3JhcGhpY3NFbGVtZW50KCpyZW5kZXJlcikpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2UuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODYsNyArODYsNyBAQCBzdGF0aWMgaW5saW5lIFJlbmRlclNWR1Jlc291cmNlKiByZXF1
ZXN0CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGlmIChzdHlsZS5pbnNpZGVMaW5rKCkg
PT0gSW5zaWRlVmlzaXRlZExpbmspIHsKKyAgICBpZiAoc3R5bGUuaW5zaWRlTGluaygpID09IElu
c2lkZUxpbms6Okluc2lkZVZpc2l0ZWQpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBk
b2Vzbid0IHN1cHBvcnQgdGhlIHVyaSBjb21wb25lbnQgb2YgdGhlIHZpc2l0ZWQgbGluayBwYWlu
dCwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwMDA2CiAgICAgICAg
IFNWR1BhaW50VHlwZSB2aXNpdGVkUGFpbnRUeXBlID0gYXBwbHlUb0ZpbGwgPyBzdmdTdHlsZS52
aXNpdGVkTGlua0ZpbGxQYWludFR5cGUoKSA6IHN2Z1N0eWxlLnZpc2l0ZWRMaW5rU3Ryb2tlUGFp
bnRUeXBlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VDbGlwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNl
Q2xpcHBlcjo6cGF0aE9ubHlDCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgU1ZHR3Jh
cGhpY3NFbGVtZW50JiBzdHlsZWQgPSBkb3duY2FzdDxTVkdHcmFwaGljc0VsZW1lbnQ+KCpjaGls
ZE5vZGUpOwogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSByZW5kZXJlci0+c3R5
bGUoKTsKLSAgICAgICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBOT05FIHx8IHN0eWxlLnZpc2li
aWxpdHkoKSAhPSBWSVNJQkxFKQorICAgICAgICBpZiAoc3R5bGUuZGlzcGxheSgpID09IERpc3Bs
YXlUeXBlOjpOb25lIHx8IHN0eWxlLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxl
KQogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSYg
c3ZnU3R5bGUgPSBzdHlsZS5zdmdTdHlsZSgpOwogICAgICAgICAvLyBDdXJyZW50IHNoYXBlIGlu
IGNsaXAtcGF0aCBnZXRzIGNsaXBwZWQgdG9vLiBGYWxsYmFjayB0byBtYXNraW5nLgpAQCAtMjA2
LDcgKzIwNiw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpkcmF3Q29udGUKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUgPSByZW5kZXJlci0+c3R5bGUoKTsKLSAgICAgICAgaWYgKHN0eWxlLmRpc3Bs
YXkoKSA9PSBOT05FIHx8IHN0eWxlLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgICAgICBp
ZiAoc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpOb25lIHx8IHN0eWxlLnZpc2liaWxp
dHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlKQogICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgV2luZFJ1bGUgbmV3Q2xpcFJ1bGUgPSBzdHlsZS5zdmdTdHlsZSgpLmNsaXBSdWxlKCk7
CkBAIC0yNDYsNyArMjQ2LDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmNhbGN1
bGF0ZQogICAgICAgICBpZiAoIXJlbmRlcmVyLT5pc1NWR1NoYXBlKCkgJiYgIXJlbmRlcmVyLT5p
c1NWR1RleHQoKSAmJiAhY2hpbGROb2RlLT5oYXNUYWdOYW1lKFNWR05hbWVzOjp1c2VUYWcpKQog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9
IHJlbmRlcmVyLT5zdHlsZSgpOwotICAgICAgICBpZiAoc3R5bGUuZGlzcGxheSgpID09IE5PTkUg
fHwgc3R5bGUudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgICAgIGlmIChzdHlsZS5kaXNw
bGF5KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUgfHwgc3R5bGUudmlzaWJpbGl0eSgpICE9IFZpc2li
aWxpdHk6OlZpc2libGUpCiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIG1fY2xpcEJv
dW5kYXJpZXMudW5pdGUocmVuZGVyZXItPmxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5tYXBSZWN0
KHJlbmRlcmVyLT5yZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpKSk7CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZU1hc2tlci5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDcsNyArMTA3LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6ZHJhd0NvbnRl
bgogICAgICAgICBpZiAocmVuZGVyZXItPm5lZWRzTGF5b3V0KCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHJlbmRlcmVyLT5z
dHlsZSgpOwotICAgICAgICBpZiAoc3R5bGUuZGlzcGxheSgpID09IE5PTkUgfHwgc3R5bGUudmlz
aWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gRGlz
cGxheVR5cGU6Ok5vbmUgfHwgc3R5bGUudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2li
bGUpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgU1ZHUmVuZGVyaW5nQ29udGV4dDo6
cmVuZGVyU3VidHJlZVRvSW1hZ2VCdWZmZXIobWFza2VyRGF0YS0+bWFza0ltYWdlLmdldCgpLCAq
cmVuZGVyZXIsIG1hc2tDb250ZW50VHJhbnNmb3JtYXRpb24pOwogICAgIH0KQEAgLTEzMiw3ICsx
MzIsNyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpjYWxjdWxhdGVNCiAgICAgICAg
IGlmICghY2hpbGROb2RlLT5pc1NWR0VsZW1lbnQoKSB8fCAhcmVuZGVyZXIpCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gcmVuZGVyZXIt
PnN0eWxlKCk7Ci0gICAgICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gTk9ORSB8fCBzdHlsZS52
aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICAgICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBE
aXNwbGF5VHlwZTo6Tm9uZSB8fCBzdHlsZS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6Vmlz
aWJsZSkKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgbV9tYXNrQ29udGVudEJvdW5k
YXJpZXMudW5pdGUocmVuZGVyZXItPmxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5tYXBSZWN0KHJl
bmRlcmVyLT5yZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpKSk7CiAgICAgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCShyZXZp
c2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jv
b3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjksNyArMzI5LDcgQEAgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBSZW5kZXJTVkdSb290OjpsbwogCiBMYXlvdXRSZWN0IFJlbmRlclNWR1Jvb3Q6OmNs
aXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIpIGNvbnN0CiB7Ci0gICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgp
ICE9IFZJU0lCTEUgJiYgIWVuY2xvc2luZ0xheWVyKCktPmhhc1Zpc2libGVDb250ZW50KCkpCisg
ICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgJiYgIWVu
Y2xvc2luZ0xheWVyKCktPmhhc1Zpc2libGVDb250ZW50KCkpCiAgICAgICAgIHJldHVybiBMYXlv
dXRSZWN0KCk7CiAKICAgICBGbG9hdFJlY3QgY29udGVudFJlcGFpbnRSZWN0ID0gbV9sb2NhbFRv
Qm9yZGVyQm94VHJhbnNmb3JtLm1hcFJlY3QocmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMo
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1No
YXBlLmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdTaGFwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5Nyw3ICsyOTcsNyBAQCB2
b2lkIFJlbmRlclNWR1NoYXBlOjpmaWxsU3Ryb2tlTWFya2VycyhQCiB2b2lkIFJlbmRlclNWR1No
YXBlOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogewog
ICAgIGlmIChwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSB8fCBwYWludElu
Zm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQKLSAgICAgICAgfHwgc3R5bGUoKS52aXNp
YmlsaXR5KCkgPT0gSElEREVOIHx8IGlzRW1wdHkoKSkKKyAgICAgICAgfHwgc3R5bGUoKS52aXNp
YmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6SGlkZGVuIHx8IGlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIEZsb2F0UmVjdCBib3VuZGluZ0JveCA9IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3Jk
aW5hdGVzKCk7CiAgICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0OjpwYWludEluZm9JbnRlcnNlY3Rz
UmVwYWludFJlY3QoYm91bmRpbmdCb3gsIG1fbG9jYWxUcmFuc2Zvcm0sIHBhaW50SW5mbykpCkBA
IC0zNzQsNyArMzc0LDcgQEAgYm9vbCBSZW5kZXJTVkdTaGFwZTo6bm9kZUF0RmxvYXRQb2ludChj
bwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBQb2ludGVyRXZlbnRzSGl0UnVsZXMgaGl0
UnVsZXMoUG9pbnRlckV2ZW50c0hpdFJ1bGVzOjpTVkdfUEFUSF9ISVRURVNUSU5HLCByZXF1ZXN0
LCBzdHlsZSgpLnBvaW50ZXJFdmVudHMoKSk7Ci0gICAgYm9vbCBpc1Zpc2libGUgPSAoc3R5bGUo
KS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSk7CisgICAgYm9vbCBpc1Zpc2libGUgPSAoc3R5bGUo
KS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSk7CiAgICAgaWYgKGlzVmlzaWJs
ZSB8fCAhaGl0UnVsZXMucmVxdWlyZVZpc2libGUpIHsKICAgICAgICAgY29uc3QgU1ZHUmVuZGVy
U3R5bGUmIHN2Z1N0eWxlID0gc3R5bGUoKS5zdmdTdHlsZSgpOwogICAgICAgICBXaW5kUnVsZSBm
aWxsUnVsZSA9IHN2Z1N0eWxlLmZpbGxSdWxlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQzMiw3ICs0MzIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Um9vdElubGluZUJveD4gUmVu
ZGVyU1ZHCiBib29sIFJlbmRlclNWR1RleHQ6Om5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVz
dFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgRmxvYXRQb2lu
dCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbiBoaXRUZXN0QWN0aW9uKQogewogICAgIFBv
aW50ZXJFdmVudHNIaXRSdWxlcyBoaXRSdWxlcyhQb2ludGVyRXZlbnRzSGl0UnVsZXM6OlNWR19U
RVhUX0hJVFRFU1RJTkcsIHJlcXVlc3QsIHN0eWxlKCkucG9pbnRlckV2ZW50cygpKTsKLSAgICBi
b29sIGlzVmlzaWJsZSA9IChzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKTsKKyAgICBi
b29sIGlzVmlzaWJsZSA9IChzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNp
YmxlKTsKICAgICBpZiAoaXNWaXNpYmxlIHx8ICFoaXRSdWxlcy5yZXF1aXJlVmlzaWJsZSkgewog
ICAgICAgICBpZiAoKGhpdFJ1bGVzLmNhbkhpdFN0cm9rZSAmJiAoc3R5bGUoKS5zdmdTdHlsZSgp
Lmhhc1N0cm9rZSgpIHx8ICFoaXRSdWxlcy5yZXF1aXJlU3Ryb2tlKSkKICAgICAgICAgICAgIHx8
IChoaXRSdWxlcy5jYW5IaXRGaWxsICYmIChzdHlsZSgpLnN2Z1N0eWxlKCkuaGFzRmlsbCgpIHx8
ICFoaXRSdWxlcy5yZXF1aXJlRmlsbCkpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50
U2VsZWN0aW9uQmFjCiAgICAgQVNTRVJUKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlRm9y
ZWdyb3VuZCB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGVjdGlvbik7CiAgICAg
QVNTRVJUKHRydW5jYXRpb24oKSA9PSBjTm9UcnVuY2F0aW9uKTsKIAotICAgIGlmIChyZW5kZXJl
cigpLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKHJlbmRlcmVyKCku
c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgYXV0byYgcGFyZW50UmVuZGVyZXIgPSBwYXJlbnQoKS0+cmVuZGVyZXIoKTsK
QEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5m
byYgCiAgICAgQVNTRVJUKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCB8
fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGVjdGlvbik7CiAgICAgQVNTRVJUKHRy
dW5jYXRpb24oKSA9PSBjTm9UcnVuY2F0aW9uKTsKIAotICAgIGlmIChyZW5kZXJlcigpLnN0eWxl
KCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS52
aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgLy8gTm90ZTogV2UncmUgZXhwbGljaXRlbHkgbm90IHN1cHBvcnRpbmcgY29tcG9zaXRpb24g
JiBjdXN0b20gdW5kZXJsaW5lcyBhbmQgY3VzdG9tIGhpZ2hsaWdodGVycyAtIHVubGlrZSBJbmxp
bmVUZXh0Qm94LgpAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFp
bnQoUGFpbnRJbmZvJiAKIAogICAgIGNvbnN0IFJlbmRlclN0eWxlKiBzZWxlY3Rpb25TdHlsZSA9
ICZzdHlsZTsKICAgICBpZiAoaGFzU2VsZWN0aW9uICYmIHNob3VsZFBhaW50U2VsZWN0aW9uSGln
aGxpZ2h0KSB7Ci0gICAgICAgIHNlbGVjdGlvblN0eWxlID0gcGFyZW50UmVuZGVyZXIuZ2V0Q2Fj
aGVkUHNldWRvU3R5bGUoU0VMRUNUSU9OKTsKKyAgICAgICAgc2VsZWN0aW9uU3R5bGUgPSBwYXJl
bnRSZW5kZXJlci5nZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6U2VsZWN0aW9uKTsKICAg
ICAgICAgaWYgKHNlbGVjdGlvblN0eWxlKSB7CiAgICAgICAgICAgICBjb25zdCBTVkdSZW5kZXJT
dHlsZSYgc3ZnU2VsZWN0aW9uU3R5bGUgPSBzZWxlY3Rpb25TdHlsZS0+c3ZnU3R5bGUoKTsKIApA
QCAtMzk1LDcgKzM5NSw3IEBAIFRleHRSdW4gU1ZHSW5saW5lVGV4dEJveDo6Y29uc3RydWN0VGV4
dFIKICAgICAgICAgICAgICAgICAsIDAgLyogcGFkZGluZywgb25seSByZWxldmFudCBmb3IganVz
dGlmaWVkIHRleHQsIG5vdCByZWxldmFudCBmb3IgU1ZHICovCiAgICAgICAgICAgICAgICAgLCBB
bGxvd1RyYWlsaW5nRXhwYW5zaW9uCiAgICAgICAgICAgICAgICAgLCBkaXJlY3Rpb24oKQotICAg
ICAgICAgICAgICAgICwgZGlyT3ZlcnJpZGUoKSB8fCBzdHlsZS5ydGxPcmRlcmluZygpID09IFZp
c3VhbE9yZGVyIC8qIGRpcmVjdGlvbmFsT3ZlcnJpZGUgKi8pOworICAgICAgICAgICAgICAgICwg
ZGlyT3ZlcnJpZGUoKSB8fCBzdHlsZS5ydGxPcmRlcmluZygpID09IE9yZGVyOjpWaXN1YWwgLyog
ZGlyZWN0aW9uYWxPdmVycmlkZSAqLyk7CiAKICAgICAvLyBXZSBoYW5kbGUgbGV0dGVyICYgd29y
ZCBzcGFjaW5nIG91cnNlbHZlcy4KICAgICBydW4uZGlzYWJsZVNwYWNpbmcoKTsKQEAgLTQ4MCw3
ICs0ODAsNyBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbihHCiAgICAg
YXV0byYgZGVjb3JhdGlvblJlbmRlcmVyID0gZmluZFJlbmRlcmVyRGVmaW5pbmluZ1RleHREZWNv
cmF0aW9uKHBhcmVudCgpKTsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgZGVjb3JhdGlvblN0eWxl
ID0gZGVjb3JhdGlvblJlbmRlcmVyLnN0eWxlKCk7CiAKLSAgICBpZiAoZGVjb3JhdGlvblN0eWxl
LnZpc2liaWxpdHkoKSA9PSBISURERU4pCisgICAgaWYgKGRlY29yYXRpb25TdHlsZS52aXNpYmls
aXR5KCkgPT0gVmlzaWJpbGl0eTo6SGlkZGVuKQogICAgICAgICByZXR1cm47CiAKICAgICBjb25z
dCBTVkdSZW5kZXJTdHlsZSYgc3ZnRGVjb3JhdGlvblN0eWxlID0gZGVjb3JhdGlvblN0eWxlLnN2
Z1N0eWxlKCk7CkBAIC02NDcsNyArNjQ3LDcgQEAgYm9vbCBTVkdJbmxpbmVUZXh0Qm94Ojpub2Rl
QXRQb2ludChjb25zdAogICAgIEFTU0VSVCghaXNMaW5lQnJlYWsoKSk7CiAKICAgICBQb2ludGVy
RXZlbnRzSGl0UnVsZXMgaGl0UnVsZXMoUG9pbnRlckV2ZW50c0hpdFJ1bGVzOjpTVkdfVEVYVF9I
SVRURVNUSU5HLCByZXF1ZXN0LCByZW5kZXJlcigpLnN0eWxlKCkucG9pbnRlckV2ZW50cygpKTsK
LSAgICBib29sIGlzVmlzaWJsZSA9IHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0g
VklTSUJMRTsKKyAgICBib29sIGlzVmlzaWJsZSA9IHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmls
aXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZTsKICAgICBpZiAoaXNWaXNpYmxlIHx8ICFoaXRS
dWxlcy5yZXF1aXJlVmlzaWJsZSkgewogICAgICAgICBpZiAoKGhpdFJ1bGVzLmNhbkhpdFN0cm9r
ZSAmJiAocmVuZGVyZXIoKS5zdHlsZSgpLnN2Z1N0eWxlKCkuaGFzU3Ryb2tlKCkgfHwgIWhpdFJ1
bGVzLnJlcXVpcmVTdHJva2UpKQogICAgICAgICAgICAgfHwgKGhpdFJ1bGVzLmNhbkhpdEZpbGwg
JiYgKHJlbmRlcmVyKCkuc3R5bGUoKS5zdmdTdHlsZSgpLmhhc0ZpbGwoKSB8fCAhaGl0UnVsZXMu
cmVxdWlyZUZpbGwpKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJTdXBwb3J0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01OSw3ICs1OSw3IEBAIEZsb2F0UmVjdCBTVkdSZW5kZXJTdXBwb3J0OjpyZXBhaW50UmVjdEYK
IExheW91dFJlY3QgU1ZHUmVuZGVyU3VwcG9ydDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIpCiB7CiAgICAgLy8gUmV0dXJuIGVhcmx5IGZvciBhbnkg
Y2FzZXMgd2hlcmUgd2UgZG9uJ3QgYWN0dWFsbHkgcGFpbnQKLSAgICBpZiAocmVuZGVyZXIuc3R5
bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSAmJiAhcmVuZGVyZXIuZW5jbG9zaW5nTGF5ZXIo
KS0+aGFzVmlzaWJsZUNvbnRlbnQoKSkKKyAgICBpZiAocmVuZGVyZXIuc3R5bGUoKS52aXNpYmls
aXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhcmVuZGVyZXIuZW5jbG9zaW5nTGF5ZXIo
KS0+aGFzVmlzaWJsZUNvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKIAog
ICAgIC8vIFBhc3Mgb3VyIGxvY2FsIHBhaW50IHJlY3QgdG8gY29tcHV0ZVJlY3RGb3JSZXBhaW50
KCkgd2hpY2ggd2lsbApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5k
ZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzcsMTAgKzEzNywxMCBAQCB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OnByZXBh
cmVUb1JlbmRlCiAgICAgaWYgKGlzPFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24+KGNsaXBQYXRoT3Bl
cmF0aW9uKSkgewogICAgICAgICBhdXRvJiBjbGlwUGF0aCA9IGRvd25jYXN0PFNoYXBlQ2xpcFBh
dGhPcGVyYXRpb24+KCpjbGlwUGF0aE9wZXJhdGlvbik7CiAgICAgICAgIEZsb2F0UmVjdCByZWZl
cmVuY2VCb3g7Ci0gICAgICAgIGlmIChjbGlwUGF0aC5yZWZlcmVuY2VCb3goKSA9PSBTdHJva2Up
CisgICAgICAgIGlmIChjbGlwUGF0aC5yZWZlcmVuY2VCb3goKSA9PSBDU1NCb3hUeXBlOjpTdHJv
a2UpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBzdHJva2VCb3VuZGluZ0JveCgpIHRha2VzIGRh
c2hhcnJheSBpbnRvIGFjY291bnQgYnV0IHNob3VsZG4ndC4KICAgICAgICAgICAgIHJlZmVyZW5j
ZUJveCA9IHJlbmRlcmVyLnN0cm9rZUJvdW5kaW5nQm94KCk7Ci0gICAgICAgIGVsc2UgaWYgKGNs
aXBQYXRoLnJlZmVyZW5jZUJveCgpID09IFZpZXdCb3ggJiYgcmVuZGVyZXIuZWxlbWVudCgpKSB7
CisgICAgICAgIH0gZWxzZSBpZiAoY2xpcFBhdGgucmVmZXJlbmNlQm94KCkgPT0gQ1NTQm94VHlw
ZTo6Vmlld0JveCAmJiByZW5kZXJlci5lbGVtZW50KCkpIHsKICAgICAgICAgICAgIEZsb2F0U2l6
ZSB2aWV3cG9ydFNpemU7CiAgICAgICAgICAgICBTVkdMZW5ndGhDb250ZXh0KGRvd25jYXN0PFNW
R0VsZW1lbnQ+KHJlbmRlcmVyLmVsZW1lbnQoKSkpLmRldGVybWluZVZpZXdwb3J0KHZpZXdwb3J0
U2l6ZSk7CiAgICAgICAgICAgICByZWZlcmVuY2VCb3guc2V0V2lkdGgodmlld3BvcnRTaXplLndp
ZHRoKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0
QXR0cmlidXRlc0J1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmNwcAkocmV2aXNpb24gMjMy
MTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmli
dXRlc0J1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyBp
bmxpbmUgdm9pZCBwcm9jZXNzUmVuZGVyU1ZHSW5saW4KIHsKICAgICBhdXRvJiBzdHJpbmcgPSB0
ZXh0LnRleHQoKTsKICAgICBhdXRvIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKLSAgICBpZiAo
dGV4dC5zdHlsZSgpLndoaXRlU3BhY2UoKSA9PSBQUkUpIHsKKyAgICBpZiAodGV4dC5zdHlsZSgp
LndoaXRlU3BhY2UoKSA9PSBXaGl0ZVNwYWNlOjpQcmUpIHsKICAgICAgICAgYXRDaGFyYWN0ZXIg
Kz0gbGVuZ3RoOwogICAgICAgICByZXR1cm47CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcAkocmV2
aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0
cmljc0J1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBT
VkdUZXh0TWV0cmljc0J1aWxkZXI6Om1lYXN1cmVUZXh0UgogICAgIH0KIAogICAgIGluaXRpYWxp
emVNZWFzdXJlbWVudFdpdGhUZXh0UmVuZGVyZXIodGV4dCk7Ci0gICAgYm9vbCBwcmVzZXJ2ZVdo
aXRlU3BhY2UgPSB0ZXh0LnN0eWxlKCkud2hpdGVTcGFjZSgpID09IFBSRTsKKyAgICBib29sIHBy
ZXNlcnZlV2hpdGVTcGFjZSA9IHRleHQuc3R5bGUoKS53aGl0ZVNwYWNlKCkgPT0gV2hpdGVTcGFj
ZTo6UHJlOwogICAgIGludCBzdXJyb2dhdGVQYWlyQ2hhcmFjdGVycyA9IDA7CiAKICAgICB3aGls
ZSAoYWR2YW5jZSgpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcv
UmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyQmxvY2suY3BwCShyZXZpc2lvbiAy
MzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1
aWxkZXJCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwMyw3ICszMDMsNyBAQCBSZW5kZXJQ
dHI8UmVuZGVyT2JqZWN0PiBSZW5kZXJUcmVlQnVpbGRlCiAgICAgICAgICAgICAvLyBjb2x1bW4g
c3BhbiBmbGFnIGlmIGl0IGlzIHNldC4KICAgICAgICAgICAgIEFTU0VSVCghaW5saW5lQ2hpbGRy
ZW5CbG9jay5jb250aW51YXRpb24oKSk7CiAgICAgICAgICAgICAvLyBDYWNoZSB0aGlzIHZhbHVl
IGFzIGl0IG1pZ2h0IGdldCBjaGFuZ2VkIGluIHNldFN0eWxlKCkgY2FsbC4KLSAgICAgICAgICAg
IGlubGluZUNoaWxkcmVuQmxvY2suc2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91
c1N0eWxlV2l0aERpc3BsYXkocGFyZW50LnN0eWxlKCksIEJMT0NLKSk7CisgICAgICAgICAgICBp
bmxpbmVDaGlsZHJlbkJsb2NrLnNldFN0eWxlKFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNT
dHlsZVdpdGhEaXNwbGF5KHBhcmVudC5zdHlsZSgpLCBEaXNwbGF5VHlwZTo6QmxvY2spKTsKICAg
ICAgICAgICAgIGF1dG8gYmxvY2tUb01vdmUgPSBtX2J1aWxkZXIuZGV0YWNoRnJvbVJlbmRlckVs
ZW1lbnQocGFyZW50LCBpbmxpbmVDaGlsZHJlbkJsb2NrKTsKIAogICAgICAgICAgICAgLy8gTm93
IGp1c3QgcHV0IHRoZSBpbmxpbmVDaGlsZHJlbkJsb2NrIGluc2lkZSB0aGUgYmxvY2tDaGlsZHJl
bkJsb2NrLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRy
ZWVCdWlsZGVyRmlyc3RMZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlckZpcnN0TGV0dGVyLmNwcAkocmV2aXNp
b24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRy
ZWVCdWlsZGVyRmlyc3RMZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIFJlbmRlclN0eWxlIHN0eWxlRm9yRmlyc3RM
ZXR0ZXIoY29uc3QgUmVuZGVyQmxvY2smIGZpcnN0TGV0dGVyQmxvY2ssIGNvbnN0IFJlbmRlck9i
amVjdCYgZmlyc3RMZXR0ZXJDb250YWluZXIpCiB7Ci0gICAgYXV0byogY29udGFpbmVyRmlyc3RM
ZXR0ZXJTdHlsZSA9IGZpcnN0TGV0dGVyQmxvY2suZ2V0Q2FjaGVkUHNldWRvU3R5bGUoRklSU1Rf
TEVUVEVSLCAmZmlyc3RMZXR0ZXJDb250YWluZXIuZmlyc3RMaW5lU3R5bGUoKSk7CisgICAgYXV0
byogY29udGFpbmVyRmlyc3RMZXR0ZXJTdHlsZSA9IGZpcnN0TGV0dGVyQmxvY2suZ2V0Q2FjaGVk
UHNldWRvU3R5bGUoUHNldWRvSWQ6OkZpcnN0TGV0dGVyLCAmZmlyc3RMZXR0ZXJDb250YWluZXIu
Zmlyc3RMaW5lU3R5bGUoKSk7CiAgICAgLy8gRklYTUU6IFRoZXJlIGFwcGVhcnMgdG8gYmUgc29t
ZSBwYXRoIHdoZXJlIHdlIGhhdmUgYSBmaXJzdCBsZXR0ZXIgcmVuZGVyZXIgd2l0aG91dCBmaXJz
dCBsZXR0ZXIgc3R5bGUuCiAgICAgQVNTRVJUKGNvbnRhaW5lckZpcnN0TGV0dGVyU3R5bGUpOwog
ICAgIGF1dG8gZmlyc3RMZXR0ZXJTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZShjb250YWluZXJG
aXJzdExldHRlclN0eWxlID8gKmNvbnRhaW5lckZpcnN0TGV0dGVyU3R5bGUgOiBmaXJzdExldHRl
ckNvbnRhaW5lci5maXJzdExpbmVTdHlsZSgpKTsKQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIFJl
bmRlclN0eWxlIHN0eWxlRm9yRmlyc3RMZXR0ZXIoYwogICAgIH0KIAogICAgIC8vIEZvcmNlIGlu
bGluZSBkaXNwbGF5IChleGNlcHQgZm9yIGZsb2F0aW5nIGZpcnN0LWxldHRlcnMpLgotICAgIGZp
cnN0TGV0dGVyU3R5bGUuc2V0RGlzcGxheShmaXJzdExldHRlclN0eWxlLmlzRmxvYXRpbmcoKSA/
IEJMT0NLIDogSU5MSU5FKTsKKyAgICBmaXJzdExldHRlclN0eWxlLnNldERpc3BsYXkoZmlyc3RM
ZXR0ZXJTdHlsZS5pc0Zsb2F0aW5nKCkgPyBEaXNwbGF5VHlwZTo6QmxvY2sgOiBEaXNwbGF5VHlw
ZTo6SW5saW5lKTsKICAgICAvLyBDU1MyIHNheXMgZmlyc3QtbGV0dGVyIGNhbid0IGJlIHBvc2l0
aW9uZWQuCiAgICAgZmlyc3RMZXR0ZXJTdHlsZS5zZXRQb3NpdGlvbihQb3NpdGlvblR5cGU6OlN0
YXRpYyk7CiAgICAgcmV0dXJuIGZpcnN0TGV0dGVyU3R5bGU7CkBAIC0xMjEsNyArMTIxLDcgQEAg
UmVuZGVyVHJlZUJ1aWxkZXI6OkZpcnN0TGV0dGVyOjpGaXJzdExldAogCiB2b2lkIFJlbmRlclRy
ZWVCdWlsZGVyOjpGaXJzdExldHRlcjo6dXBkYXRlQWZ0ZXJEZXNjZW5kYW50cyhSZW5kZXJCbG9j
ayYgYmxvY2spCiB7Ci0gICAgaWYgKCFibG9jay5zdHlsZSgpLmhhc1BzZXVkb1N0eWxlKEZJUlNU
X0xFVFRFUikpCisgICAgaWYgKCFibG9jay5zdHlsZSgpLmhhc1BzZXVkb1N0eWxlKFBzZXVkb0lk
OjpGaXJzdExldHRlcikpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIXN1cHBvcnRzRmlyc3RM
ZXR0ZXIoYmxvY2spKQogICAgICAgICByZXR1cm47CkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBS
ZW5kZXJUcmVlQnVpbGRlcjo6Rmlyc3RMZXR0ZXI6OnVwZAogCiAgICAgLy8gSWYgdGhlIGNoaWxk
IGFscmVhZHkgaGFzIHN0eWxlLCB0aGVuIGl0IGhhcyBhbHJlYWR5IGJlZW4gY3JlYXRlZCwgc28g
d2UganVzdCB3YW50CiAgICAgLy8gdG8gdXBkYXRlIGl0LgotICAgIGlmIChmaXJzdExldHRlclJl
bmRlcmVyLT5wYXJlbnQoKS0+c3R5bGUoKS5zdHlsZVR5cGUoKSA9PSBGSVJTVF9MRVRURVIpIHsK
KyAgICBpZiAoZmlyc3RMZXR0ZXJSZW5kZXJlci0+cGFyZW50KCktPnN0eWxlKCkuc3R5bGVUeXBl
KCkgPT0gUHNldWRvSWQ6OkZpcnN0TGV0dGVyKSB7CiAgICAgICAgIHVwZGF0ZVN0eWxlKGJsb2Nr
LCAqZmlyc3RMZXR0ZXJSZW5kZXJlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNzAs
NyArMTcwLDcgQEAgdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6Rmlyc3RMZXR0ZXI6OnVwZAogICAg
IGlmIChTdHlsZTo6ZGV0ZXJtaW5lQ2hhbmdlKGZpcnN0TGV0dGVyLT5zdHlsZSgpLCBwc2V1ZG9T
dHlsZSkgPT0gU3R5bGU6OkRldGFjaCkgewogICAgICAgICAvLyBUaGUgZmlyc3QtbGV0dGVyIHJl
bmRlcmVyIG5lZWRzIHRvIGJlIHJlcGxhY2VkLiBDcmVhdGUgYSBuZXcgcmVuZGVyZXIgb2YgdGhl
IHJpZ2h0IHR5cGUuCiAgICAgICAgIFJlbmRlclB0cjxSZW5kZXJCb3hNb2RlbE9iamVjdD4gbmV3
Rmlyc3RMZXR0ZXI7Ci0gICAgICAgIGlmIChwc2V1ZG9TdHlsZS5kaXNwbGF5KCkgPT0gSU5MSU5F
KQorICAgICAgICBpZiAocHNldWRvU3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpJbmxp
bmUpCiAgICAgICAgICAgICBuZXdGaXJzdExldHRlciA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlcklu
bGluZT4oZmlyc3RMZXR0ZXJCbG9jay5kb2N1bWVudCgpLCBXVEZNb3ZlKHBzZXVkb1N0eWxlKSk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG5ld0ZpcnN0TGV0dGVyID0gY3JlYXRlUmVuZGVy
ZXI8UmVuZGVyQmxvY2tGbG93PihmaXJzdExldHRlckJsb2NrLmRvY3VtZW50KCksIFdURk1vdmUo
cHNldWRvU3R5bGUpKTsKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIFJlbmRlclRyZWVCdWlsZGVy
OjpGaXJzdExldHRlcjo6Y3JlCiAgICAgUmVuZGVyRWxlbWVudCogZmlyc3RMZXR0ZXJDb250YWlu
ZXIgPSBjdXJyZW50VGV4dENoaWxkLnBhcmVudCgpOwogICAgIGF1dG8gcHNldWRvU3R5bGUgPSBz
dHlsZUZvckZpcnN0TGV0dGVyKGZpcnN0TGV0dGVyQmxvY2ssICpmaXJzdExldHRlckNvbnRhaW5l
cik7CiAgICAgUmVuZGVyUHRyPFJlbmRlckJveE1vZGVsT2JqZWN0PiBuZXdGaXJzdExldHRlcjsK
LSAgICBpZiAocHNldWRvU3R5bGUuZGlzcGxheSgpID09IElOTElORSkKKyAgICBpZiAocHNldWRv
U3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpJbmxpbmUpCiAgICAgICAgIG5ld0ZpcnN0
TGV0dGVyID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVySW5saW5lPihmaXJzdExldHRlckJsb2NrLmRv
Y3VtZW50KCksIFdURk1vdmUocHNldWRvU3R5bGUpKTsKICAgICBlbHNlCiAgICAgICAgIG5ld0Zp
cnN0TGV0dGVyID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyQmxvY2tGbG93PihmaXJzdExldHRlckJs
b2NrLmRvY3VtZW50KCksIFdURk1vdmUocHNldWRvU3R5bGUpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlcklubGluZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWls
ZGVySW5saW5lLmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVySW5saW5lLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6OklubGluZTo6YXR0YWNo
SWcKICAgICAgICAgLy8gaW5saW5lIGludG8gY29udGludWF0aW9ucy4gVGhpcyBpbnZvbHZlcyBj
cmVhdGluZyBhbiBhbm9ueW1vdXMgYmxvY2sgYm94IHRvIGhvbGQKICAgICAgICAgLy8gfG5ld0No
aWxkfC4gV2UgdGhlbiBtYWtlIHRoYXQgYmxvY2sgYm94IGEgY29udGludWF0aW9uIG9mIHRoaXMg
aW5saW5lLiBXZSB0YWtlIGFsbCBvZgogICAgICAgICAvLyB0aGUgY2hpbGRyZW4gYWZ0ZXIgfGJl
Zm9yZUNoaWxkfCBhbmQgcHV0IHRoZW0gaW4gYSBjbG9uZSBvZiB0aGlzIG9iamVjdC4KLSAgICAg
ICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhE
aXNwbGF5KHBhcmVudC5zdHlsZSgpLCBCTE9DSyk7CisgICAgICAgIGF1dG8gbmV3U3R5bGUgPSBS
ZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnQuc3R5bGUo
KSwgRGlzcGxheVR5cGU6OkJsb2NrKTsKIAogICAgICAgICAvLyBJZiBpbnNpZGUgYW4gaW5saW5l
IGFmZmVjdGVkIGJ5IGluLWZsb3cgcG9zaXRpb25pbmcgdGhlIGJsb2NrIG5lZWRzIHRvIGJlIGFm
ZmVjdGVkIGJ5IGl0IHRvby4KICAgICAgICAgLy8gR2l2aW5nIHRoZSBibG9jayBhIGxheWVyIGxp
a2UgdGhpcyBhbGxvd3MgaXQgdG8gY29sbGVjdCB0aGUgeC95IG9mZnNldHMgZnJvbSBpbmxpbmUg
cGFyZW50cyBsYXRlci4KQEAgLTM3Niw3ICszNzYsNyBAQCB2b2lkIFJlbmRlclRyZWVCdWlsZGVy
OjpJbmxpbmU6OnNwbGl0SW5sCiBib29sIFJlbmRlclRyZWVCdWlsZGVyOjpJbmxpbmU6Om5ld0No
aWxkSXNJbmxpbmUoY29uc3QgUmVuZGVySW5saW5lJiBwYXJlbnQsIGNvbnN0IFJlbmRlck9iamVj
dCYgY2hpbGQpCiB7CiAgICAgLy8gaW5saW5lIHBhcmVudCBnZW5lcmF0ZXMgaW5saW5lLXRhYmxl
LgotICAgIHJldHVybiBjaGlsZC5pc0lubGluZSgpIHx8IChtX2J1aWxkZXIudGFibGVCdWlsZGVy
KCkuY2hpbGRSZXF1aXJlc1RhYmxlKHBhcmVudCwgY2hpbGQpICYmIHBhcmVudC5zdHlsZSgpLmRp
c3BsYXkoKSA9PSBJTkxJTkUpOworICAgIHJldHVybiBjaGlsZC5pc0lubGluZSgpIHx8IChtX2J1
aWxkZXIudGFibGVCdWlsZGVyKCkuY2hpbGRSZXF1aXJlc1RhYmxlKHBhcmVudCwgY2hpbGQpICYm
IHBhcmVudC5zdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lKTsKIH0KIAog
dm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6SW5saW5lOjpjaGlsZEJlY2FtZU5vbklubGluZShSZW5k
ZXJJbmxpbmUmIHBhcmVudCwgUmVuZGVyRWxlbWVudCYgY2hpbGQpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJMaXN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxk
ZXJMaXN0LmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4
LDcgKzc4LDcgQEAgdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6TGlzdDo6dXBkYXRlSXRlbQogewog
ICAgIGF1dG8mIHN0eWxlID0gbGlzdEl0ZW1SZW5kZXJlci5zdHlsZSgpOwogCi0gICAgaWYgKHN0
eWxlLmxpc3RTdHlsZVR5cGUoKSA9PSBOb25lTGlzdFN0eWxlICYmICghc3R5bGUubGlzdFN0eWxl
SW1hZ2UoKSB8fCBzdHlsZS5saXN0U3R5bGVJbWFnZSgpLT5lcnJvck9jY3VycmVkKCkpKSB7Cisg
ICAgaWYgKHN0eWxlLmxpc3RTdHlsZVR5cGUoKSA9PSBMaXN0U3R5bGVUeXBlOjpOb25lICYmICgh
c3R5bGUubGlzdFN0eWxlSW1hZ2UoKSB8fCBzdHlsZS5saXN0U3R5bGVJbWFnZSgpLT5lcnJvck9j
Y3VycmVkKCkpKSB7CiAgICAgICAgIGlmIChhdXRvKiBtYXJrZXIgPSBsaXN0SXRlbVJlbmRlcmVy
Lm1hcmtlclJlbmRlcmVyKCkpCiAgICAgICAgICAgICBtX2J1aWxkZXIuZGVzdHJveSgqbWFya2Vy
KTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0
aW5nL1JlbmRlclRyZWVCdWlsZGVyTWF0aE1MLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJNYXRoTUwuY3BwCShyZXZp
c2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVy
VHJlZUJ1aWxkZXJNYXRoTUwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIFJl
bmRlclRyZWVCdWlsZGVyOjpNYXRoTUw6Ok1hdGhNTChSZW5kZXIKIFJlbmRlclB0cjxSZW5kZXJN
YXRoTUxGZW5jZWRPcGVyYXRvcj4gUmVuZGVyVHJlZUJ1aWxkZXI6Ok1hdGhNTDo6Y3JlYXRlTWF0
aE1MT3BlcmF0b3IoUmVuZGVyTWF0aE1MRmVuY2VkJiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgb3Bl
cmF0b3JTdHJpbmcsCiAgICAgTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGb3JtIGZvcm0sIE1h
dGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6RmxhZyBmbGFnKQogewotICAgIFJlbmRlclB0cjxSZW5k
ZXJNYXRoTUxGZW5jZWRPcGVyYXRvcj4gbmV3T3BlcmF0b3IgPSBjcmVhdGVSZW5kZXJlcjxSZW5k
ZXJNYXRoTUxGZW5jZWRPcGVyYXRvcj4ocGFyZW50LmRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpj
cmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudC5zdHlsZSgpLCBCTE9DSyksIG9w
ZXJhdG9yU3RyaW5nLCBmb3JtLCBmbGFnKTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyTWF0aE1MRmVu
Y2VkT3BlcmF0b3I+IG5ld09wZXJhdG9yID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MRmVu
Y2VkT3BlcmF0b3I+KHBhcmVudC5kb2N1bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnlt
b3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnQuc3R5bGUoKSwgRGlzcGxheVR5cGU6OkJsb2NrKSwg
b3BlcmF0b3JTdHJpbmcsIGZvcm0sIGZsYWcpOwogICAgIG5ld09wZXJhdG9yLT5pbml0aWFsaXpl
U3R5bGUoKTsKICAgICByZXR1cm4gbmV3T3BlcmF0b3I7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJNdWx0aUNvbHVtbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVC
dWlsZGVyTXVsdGlDb2x1bW4uY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJNdWx0aUNvbHVtbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjpN
dWx0aUNvbHVtbjo6Y3JlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBhdXRvIG5ld0ZyYWdtZW50
ZWRGbG93ID0gIWZsb3cuc3R5bGUoKS5oYXNMaW5lc0NsYW1wKCkgPyBXZWJDb3JlOjpjcmVhdGVS
ZW5kZXJlcjxSZW5kZXJNdWx0aUNvbHVtbkZsb3c+KGZsb3cuZG9jdW1lbnQoKSwgUmVuZGVyU3R5
bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoZmxvdy5zdHlsZSgpLCBCTE9DSykp
IDogIFdlYkNvcmU6OmNyZWF0ZVJlbmRlcmVyPFJlbmRlckxpbmVzQ2xhbXBGbG93PihmbG93LmRv
Y3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KGZs
b3cuc3R5bGUoKSwgQkxPQ0spKTsKKyAgICBhdXRvIG5ld0ZyYWdtZW50ZWRGbG93ID0gIWZsb3cu
c3R5bGUoKS5oYXNMaW5lc0NsYW1wKCkgPyBXZWJDb3JlOjpjcmVhdGVSZW5kZXJlcjxSZW5kZXJN
dWx0aUNvbHVtbkZsb3c+KGZsb3cuZG9jdW1lbnQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255
bW91c1N0eWxlV2l0aERpc3BsYXkoZmxvdy5zdHlsZSgpLCBEaXNwbGF5VHlwZTo6QmxvY2spKSA6
ICBXZWJDb3JlOjpjcmVhdGVSZW5kZXJlcjxSZW5kZXJMaW5lc0NsYW1wRmxvdz4oZmxvdy5kb2N1
bWVudCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShmbG93
LnN0eWxlKCksIERpc3BsYXlUeXBlOjpCbG9jaykpOwogICAgIG5ld0ZyYWdtZW50ZWRGbG93LT5p
bml0aWFsaXplU3R5bGUoKTsKICAgICBhdXRvJiBmcmFnbWVudGVkRmxvdyA9ICpuZXdGcmFnbWVu
dGVkRmxvdzsKICAgICBtX2J1aWxkZXIuYmxvY2tCdWlsZGVyKCkuYXR0YWNoKGZsb3csIFdURk1v
dmUobmV3RnJhZ21lbnRlZEZsb3cpLCBudWxscHRyKTsKQEAgLTM1Miw3ICszNTIsNyBAQCBSZW5k
ZXJPYmplY3QqIFJlbmRlclRyZWVCdWlsZGVyOjpNdWx0aUNvCiAgICAgLy8gTmVlZCB0byBjcmVh
dGUgYSBuZXcgY29sdW1uIHNldCB3aGVuIHRoZXJlJ3Mgbm8gc2V0IGFscmVhZHkgY3JlYXRlZC4g
V2UgYWxzbyBhbHdheXMgaW5zZXJ0CiAgICAgLy8gYW5vdGhlciBjb2x1bW4gc2V0IGFmdGVyIGEg
c3Bhbm5lci4gRXZlbiBpZiBpdCB0dXJucyBvdXQgdGhhdCB0aGVyZSBhcmUgbm8gcmVuZGVyZXJz
CiAgICAgLy8gZm9sbG93aW5nIHRoZSBzcGFubmVyLCB0aGVyZSBtYXkgYmUgYm90dG9tIG1hcmdp
bnMgdGhlcmUsIHdoaWNoIHRha2UgdXAgc3BhY2UuCi0gICAgYXV0byBuZXdTZXQgPSBmbG93LmNy
ZWF0ZU11bHRpQ29sdW1uU2V0KFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhE
aXNwbGF5KG11bHRpY29sQ29udGFpbmVyLT5zdHlsZSgpLCBCTE9DSykpOworICAgIGF1dG8gbmV3
U2V0ID0gZmxvdy5jcmVhdGVNdWx0aUNvbHVtblNldChSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnlt
b3VzU3R5bGVXaXRoRGlzcGxheShtdWx0aWNvbENvbnRhaW5lci0+c3R5bGUoKSwgRGlzcGxheVR5
cGU6OkJsb2NrKSk7CiAgICAgbmV3U2V0LT5pbml0aWFsaXplU3R5bGUoKTsKICAgICBhdXRvJiBz
ZXQgPSAqbmV3U2V0OwogICAgIG1fYnVpbGRlci5ibG9ja0J1aWxkZXIoKS5hdHRhY2goKm11bHRp
Y29sQ29udGFpbmVyLCBXVEZNb3ZlKG5ld1NldCksIGluc2VydEJlZm9yZU11bHRpY29sQ2hpbGQp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWls
ZGVyUnVieS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0
aW5nL1JlbmRlclRyZWVCdWlsZGVyUnVieS5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclJ1YnkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0Fub255
bW91c1J1YnlJbmxpbmUKICAgICAgICAgfHwgIWlzUnVieShvYmplY3QtPnBhcmVudCgpKQogICAg
ICAgICB8fCBpczxSZW5kZXJSdWJ5UnVuPigqb2JqZWN0KQogICAgICAgICB8fCAob2JqZWN0LT5p
c0lubGluZSgpICYmIChvYmplY3QtPmlzQmVmb3JlQ29udGVudCgpIHx8IG9iamVjdC0+aXNBZnRl
ckNvbnRlbnQoKSkpCi0gICAgICAgIHx8IChvYmplY3QtPmlzQW5vbnltb3VzKCkgJiYgaXM8UmVu
ZGVyQmxvY2s+KCpvYmplY3QpICYmIG9iamVjdC0+c3R5bGUoKS5kaXNwbGF5KCkgPT0gSU5MSU5F
X0JMT0NLKSk7CisgICAgICAgIHx8IChvYmplY3QtPmlzQW5vbnltb3VzKCkgJiYgaXM8UmVuZGVy
QmxvY2s+KCpvYmplY3QpICYmIG9iamVjdC0+c3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5
cGU6OklubGluZUJsb2NrKSk7CiAKICAgICByZXR1cm4gb2JqZWN0CiAgICAgICAgICYmIGlzUnVi
eShvYmplY3QtPnBhcmVudCgpKQpAQCAtNjAsNyArNjAsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
aXNSdWJ5QmVmb3JlQmxvY2soY29uCiAgICAgcmV0dXJuIGlzQW5vbnltb3VzUnVieUlubGluZUJs
b2NrKG9iamVjdCkKICAgICAgICAgJiYgIW9iamVjdC0+cHJldmlvdXNTaWJsaW5nKCkKICAgICAg
ICAgJiYgZG93bmNhc3Q8UmVuZGVyQmxvY2s+KCpvYmplY3QpLmZpcnN0Q2hpbGQoKQotICAgICAg
ICAmJiBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKm9iamVjdCkuZmlyc3RDaGlsZCgpLT5zdHlsZSgp
LnN0eWxlVHlwZSgpID09IEJFRk9SRTsKKyAgICAgICAgJiYgZG93bmNhc3Q8UmVuZGVyQmxvY2s+
KCpvYmplY3QpLmZpcnN0Q2hpbGQoKS0+c3R5bGUoKS5zdHlsZVR5cGUoKSA9PSBQc2V1ZG9JZDo6
QmVmb3JlOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNSdWJ5QWZ0ZXJCbG9jayhjb25zdCBS
ZW5kZXJPYmplY3QqIG9iamVjdCkKQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIGlubGluZSBib29s
IGlzUnVieUFmdGVyQmxvY2soY29ucwogICAgIHJldHVybiBpc0Fub255bW91c1J1YnlJbmxpbmVC
bG9jayhvYmplY3QpCiAgICAgICAgICYmICFvYmplY3QtPm5leHRTaWJsaW5nKCkKICAgICAgICAg
JiYgZG93bmNhc3Q8UmVuZGVyQmxvY2s+KCpvYmplY3QpLmZpcnN0Q2hpbGQoKQotICAgICAgICAm
JiBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKm9iamVjdCkuZmlyc3RDaGlsZCgpLT5zdHlsZSgpLnN0
eWxlVHlwZSgpID09IEFGVEVSOworICAgICAgICAmJiBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKm9i
amVjdCkuZmlyc3RDaGlsZCgpLT5zdHlsZSgpLnN0eWxlVHlwZSgpID09IFBzZXVkb0lkOjpBZnRl
cjsKIH0KIAogI2lmbmRlZiBBU1NFUlRfRElTQUJMRUQKQEAgLTk3LDcgKzk3LDcgQEAgc3RhdGlj
IGlubGluZSBSZW5kZXJCbG9jayogcnVieUFmdGVyQmxvYwogCiBzdGF0aWMgYXV0byBjcmVhdGVB
bm9ueW1vdXNSdWJ5SW5saW5lQmxvY2soUmVuZGVyT2JqZWN0JiBydWJ5KQogewotICAgIGF1dG8g
bmV3QmxvY2sgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJCbG9ja0Zsb3c+KHJ1YnkuZG9jdW1lbnQo
KSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocnVieS5zdHls
ZSgpLCBJTkxJTkVfQkxPQ0spKTsKKyAgICBhdXRvIG5ld0Jsb2NrID0gY3JlYXRlUmVuZGVyZXI8
UmVuZGVyQmxvY2tGbG93PihydWJ5LmRvY3VtZW50KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9u
eW1vdXNTdHlsZVdpdGhEaXNwbGF5KHJ1Ynkuc3R5bGUoKSwgRGlzcGxheVR5cGU6OklubGluZUJs
b2NrKSk7CiAgICAgbmV3QmxvY2stPmluaXRpYWxpemVTdHlsZSgpOwogICAgIHJldHVybiBuZXdC
bG9jazsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJU
cmVlQnVpbGRlclRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJUYWJsZS5jcHAJKHJldmlzaW9uIDIzMjE0MykK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclRh
YmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDggKzEzOSw4IEBAIFJlbmRlckVsZW1lbnQm
IFJlbmRlclRyZWVCdWlsZGVyOjpUYWJsZToKICAgICBhdXRvKiBwYXJlbnRDYW5kaWRhdGUgPSBi
ZWZvcmVDaGlsZDsKICAgICB3aGlsZSAocGFyZW50Q2FuZGlkYXRlICYmIHBhcmVudENhbmRpZGF0
ZS0+cGFyZW50KCktPmlzQW5vbnltb3VzKCkKICAgICAgICAgJiYgIWlzPFJlbmRlclRhYmxlU2Vj
dGlvbj4oKnBhcmVudENhbmRpZGF0ZSkKLSAgICAgICAgJiYgcGFyZW50Q2FuZGlkYXRlLT5zdHls
ZSgpLmRpc3BsYXkoKSAhPSBUQUJMRV9DQVBUSU9OCi0gICAgICAgICYmIHBhcmVudENhbmRpZGF0
ZS0+c3R5bGUoKS5kaXNwbGF5KCkgIT0gVEFCTEVfQ09MVU1OX0dST1VQKQorICAgICAgICAmJiBw
YXJlbnRDYW5kaWRhdGUtPnN0eWxlKCkuZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpUYWJsZUNh
cHRpb24KKyAgICAgICAgJiYgcGFyZW50Q2FuZGlkYXRlLT5zdHlsZSgpLmRpc3BsYXkoKSAhPSBE
aXNwbGF5VHlwZTo6VGFibGVDb2x1bW5Hcm91cCkKICAgICAgICAgcGFyZW50Q2FuZGlkYXRlID0g
cGFyZW50Q2FuZGlkYXRlLT5wYXJlbnQoKTsKIAogICAgIGlmIChwYXJlbnRDYW5kaWRhdGUgJiYg
aXM8UmVuZGVyVGFibGVTZWN0aW9uPigqcGFyZW50Q2FuZGlkYXRlKSAmJiBwYXJlbnRDYW5kaWRh
dGUtPmlzQW5vbnltb3VzKCkgJiYgIXBhcmVudC5pc0FmdGVyQ29udGVudChwYXJlbnRDYW5kaWRh
dGUpKSB7CkBAIC0xNTAsOCArMTUwLDggQEAgUmVuZGVyRWxlbWVudCYgUmVuZGVyVHJlZUJ1aWxk
ZXI6OlRhYmxlOgogICAgIH0KIAogICAgIGlmIChiZWZvcmVDaGlsZCAmJiAhaXM8UmVuZGVyVGFi
bGVTZWN0aW9uPigqYmVmb3JlQ2hpbGQpCi0gICAgICAgICYmIGJlZm9yZUNoaWxkLT5zdHlsZSgp
LmRpc3BsYXkoKSAhPSBUQUJMRV9DQVBUSU9OCi0gICAgICAgICYmIGJlZm9yZUNoaWxkLT5zdHls
ZSgpLmRpc3BsYXkoKSAhPSBUQUJMRV9DT0xVTU5fR1JPVVApCisgICAgICAgICYmIGJlZm9yZUNo
aWxkLT5zdHlsZSgpLmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6VGFibGVDYXB0aW9uCisgICAg
ICAgICYmIGJlZm9yZUNoaWxkLT5zdHlsZSgpLmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6VGFi
bGVDb2x1bW5Hcm91cCkKICAgICAgICAgYmVmb3JlQ2hpbGQgPSBudWxscHRyOwogCiAgICAgYXV0
byBuZXdTZWN0aW9uID0gUmVuZGVyVGFibGVTZWN0aW9uOjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFy
ZW50UmVuZGVyZXIocGFyZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRh
dGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcAkocmV2aXNpb24gMjMyMTQz
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsOSArNjIsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgY29uc3QgRWxlbWVudCYgbV9lbGVtZW50OwotICAgIEVEaXNwbGF5IG1fcHJldmlvdXNE
aXNwbGF5OwotICAgIEVWaXNpYmlsaXR5IG1fcHJldmlvdXNWaXNpYmlsaXR5OwotICAgIEVWaXNp
YmlsaXR5IG1fcHJldmlvdXNJbXBsaWNpdFZpc2liaWxpdHk7CisgICAgRGlzcGxheVR5cGUgbV9w
cmV2aW91c0Rpc3BsYXk7CisgICAgVmlzaWJpbGl0eSBtX3ByZXZpb3VzVmlzaWJpbGl0eTsKKyAg
ICBWaXNpYmlsaXR5IG1fcHJldmlvdXNJbXBsaWNpdFZpc2liaWxpdHk7CiB9OwogI2VuZGlmIC8v
IFBMQVRGT1JNKElPUykKIApAQCAtMjU3LDEzICsyNTcsMTMgQEAgdm9pZCBSZW5kZXJUcmVlVXBk
YXRlcjo6cG9wUGFyZW50c1RvRGVwdAogdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlQmVm
b3JlRGVzY2VuZGFudHMoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRh
dGVzKiB1cGRhdGVzKQogewogICAgIGlmICh1cGRhdGVzKQotICAgICAgICBnZW5lcmF0ZWRDb250
ZW50KCkudXBkYXRlUHNldWRvRWxlbWVudChlbGVtZW50LCB1cGRhdGVzLT5iZWZvcmVQc2V1ZG9F
bGVtZW50VXBkYXRlLCBCRUZPUkUpOworICAgICAgICBnZW5lcmF0ZWRDb250ZW50KCkudXBkYXRl
UHNldWRvRWxlbWVudChlbGVtZW50LCB1cGRhdGVzLT5iZWZvcmVQc2V1ZG9FbGVtZW50VXBkYXRl
LCBQc2V1ZG9JZDo6QmVmb3JlKTsKIH0KIAogdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRl
QWZ0ZXJEZXNjZW5kYW50cyhFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHlsZTo6RWxlbWVudFVw
ZGF0ZXMqIHVwZGF0ZXMpCiB7CiAgICAgaWYgKHVwZGF0ZXMpCi0gICAgICAgIGdlbmVyYXRlZENv
bnRlbnQoKS51cGRhdGVQc2V1ZG9FbGVtZW50KGVsZW1lbnQsIHVwZGF0ZXMtPmFmdGVyUHNldWRv
RWxlbWVudFVwZGF0ZSwgQUZURVIpOworICAgICAgICBnZW5lcmF0ZWRDb250ZW50KCkudXBkYXRl
UHNldWRvRWxlbWVudChlbGVtZW50LCB1cGRhdGVzLT5hZnRlclBzZXVkb0VsZW1lbnRVcGRhdGUs
IFBzZXVkb0lkOjpBZnRlcik7CiAKICAgICBhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVy
ZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQpAQCAtMzE3LDEzICszMTcsMTMgQEAgdm9pZCBSZW5k
ZXJUcmVlVXBkYXRlcjo6dXBkYXRlRWxlbWVudFJlbgogICAgICAgICB9CiAKICAgICAgICAgLy8g
ZGlzcGxheTpub25lIGNhbmNlbHMgYW5pbWF0aW9ucy4KLSAgICAgICAgYXV0byB0ZWFyZG93blR5
cGUgPSB1cGRhdGUuc3R5bGUtPmRpc3BsYXkoKSA9PSBOT05FID8gVGVhcmRvd25UeXBlOjpSZW5k
ZXJlclVwZGF0ZUNhbmNlbGluZ0FuaW1hdGlvbnMgOiBUZWFyZG93blR5cGU6OlJlbmRlcmVyVXBk
YXRlOworICAgICAgICBhdXRvIHRlYXJkb3duVHlwZSA9IHVwZGF0ZS5zdHlsZS0+ZGlzcGxheSgp
ID09IERpc3BsYXlUeXBlOjpOb25lID8gVGVhcmRvd25UeXBlOjpSZW5kZXJlclVwZGF0ZUNhbmNl
bGluZ0FuaW1hdGlvbnMgOiBUZWFyZG93blR5cGU6OlJlbmRlcmVyVXBkYXRlOwogICAgICAgICB0
ZWFyRG93blJlbmRlcmVycyhlbGVtZW50LCB0ZWFyZG93blR5cGUsIG1fYnVpbGRlcik7CiAKICAg
ICAgICAgcmVuZGVyaW5nUGFyZW50KCkuZGlkQ3JlYXRlT3JEZXN0cm95Q2hpbGRSZW5kZXJlciA9
IHRydWU7CiAgICAgfQogCi0gICAgYm9vbCBoYXNEaXNwbGF5Q29udGVudHMgPSB1cGRhdGUuc3R5
bGUtPmRpc3BsYXkoKSA9PSBDT05URU5UUzsKKyAgICBib29sIGhhc0Rpc3BsYXlDb250ZW50cyA9
IHVwZGF0ZS5zdHlsZS0+ZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpDb250ZW50czsKICAgICBp
ZiAoaGFzRGlzcGxheUNvbnRlbnRzKQogICAgICAgICBlbGVtZW50LnN0b3JlRGlzcGxheUNvbnRl
bnRzU3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRyKCp1cGRhdGUuc3R5bGUpKTsKICAgICBlbHNl
CkBAIC02NDAsMzQgKzY0MCwzNCBAQCBSZW5kZXJWaWV3JiBSZW5kZXJUcmVlVXBkYXRlcjo6cmVu
ZGVyVmllCiB9CiAKICNpZiBQTEFURk9STShJT1MpCi1zdGF0aWMgRVZpc2liaWxpdHkgZWxlbWVu
dEltcGxpY2l0VmlzaWJpbGl0eShjb25zdCBFbGVtZW50JiBlbGVtZW50KQorc3RhdGljIFZpc2li
aWxpdHkgZWxlbWVudEltcGxpY2l0VmlzaWJpbGl0eShjb25zdCBFbGVtZW50JiBlbGVtZW50KQog
ewogICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwogICAgIGlmICghcmVu
ZGVyZXIpCi0gICAgICAgIHJldHVybiBWSVNJQkxFOworICAgICAgICByZXR1cm4gVmlzaWJpbGl0
eTo6VmlzaWJsZTsKIAogICAgIGF1dG8mIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7CiAKICAg
ICBhdXRvIHdpZHRoID0gc3R5bGUud2lkdGgoKTsKICAgICBhdXRvIGhlaWdodCA9IHN0eWxlLmhl
aWdodCgpOwogICAgIGlmICgod2lkdGguaXNGaXhlZCgpICYmIHdpZHRoLnZhbHVlKCkgPD0gMCkg
fHwgKGhlaWdodC5pc0ZpeGVkKCkgJiYgaGVpZ2h0LnZhbHVlKCkgPD0gMCkpCi0gICAgICAgIHJl
dHVybiBISURERU47CisgICAgICAgIHJldHVybiBWaXNpYmlsaXR5OjpIaWRkZW47CiAKICAgICBh
dXRvIHRvcCA9IHN0eWxlLnRvcCgpOwogICAgIGF1dG8gbGVmdCA9IHN0eWxlLmxlZnQoKTsKICAg
ICBpZiAobGVmdC5pc0ZpeGVkKCkgJiYgd2lkdGguaXNGaXhlZCgpICYmIC1sZWZ0LnZhbHVlKCkg
Pj0gd2lkdGgudmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIEhJRERFTjsKKyAgICAgICAgcmV0dXJu
IFZpc2liaWxpdHk6OkhpZGRlbjsKIAogICAgIGlmICh0b3AuaXNGaXhlZCgpICYmIGhlaWdodC5p
c0ZpeGVkKCkgJiYgLXRvcC52YWx1ZSgpID49IGhlaWdodC52YWx1ZSgpKQotICAgICAgICByZXR1
cm4gSElEREVOOwotICAgIHJldHVybiBWSVNJQkxFOworICAgICAgICByZXR1cm4gVmlzaWJpbGl0
eTo6SGlkZGVuOworICAgIHJldHVybiBWaXNpYmlsaXR5OjpWaXNpYmxlOwogfQogCiBDaGVja0Zv
clZpc2liaWxpdHlDaGFuZ2U6OkNoZWNrRm9yVmlzaWJpbGl0eUNoYW5nZShjb25zdCBFbGVtZW50
JiBlbGVtZW50KQogICAgIDogbV9lbGVtZW50KGVsZW1lbnQpCi0gICAgLCBtX3ByZXZpb3VzRGlz
cGxheShlbGVtZW50LnJlbmRlclN0eWxlKCkgPyBlbGVtZW50LnJlbmRlclN0eWxlKCktPmRpc3Bs
YXkoKSA6IE5PTkUpCi0gICAgLCBtX3ByZXZpb3VzVmlzaWJpbGl0eShlbGVtZW50LnJlbmRlclN0
eWxlKCkgPyBlbGVtZW50LnJlbmRlclN0eWxlKCktPnZpc2liaWxpdHkoKSA6IEhJRERFTikKLSAg
ICAsIG1fcHJldmlvdXNJbXBsaWNpdFZpc2liaWxpdHkoV0tPYnNlcnZpbmdDb250ZW50Q2hhbmdl
cygpICYmIFdLT2JzZXJ2ZWRDb250ZW50Q2hhbmdlKCkgIT0gV0tDb250ZW50VmlzaWJpbGl0eUNo
YW5nZSA/IGVsZW1lbnRJbXBsaWNpdFZpc2liaWxpdHkoZWxlbWVudCkgOiBWSVNJQkxFKQorICAg
ICwgbV9wcmV2aW91c0Rpc3BsYXkoZWxlbWVudC5yZW5kZXJTdHlsZSgpID8gZWxlbWVudC5yZW5k
ZXJTdHlsZSgpLT5kaXNwbGF5KCkgOiBEaXNwbGF5VHlwZTo6Tm9uZSkKKyAgICAsIG1fcHJldmlv
dXNWaXNpYmlsaXR5KGVsZW1lbnQucmVuZGVyU3R5bGUoKSA/IGVsZW1lbnQucmVuZGVyU3R5bGUo
KS0+dmlzaWJpbGl0eSgpIDogVmlzaWJpbGl0eTo6SGlkZGVuKQorICAgICwgbV9wcmV2aW91c0lt
cGxpY2l0VmlzaWJpbGl0eShXS09ic2VydmluZ0NvbnRlbnRDaGFuZ2VzKCkgJiYgV0tPYnNlcnZl
ZENvbnRlbnRDaGFuZ2UoKSAhPSBXS0NvbnRlbnRWaXNpYmlsaXR5Q2hhbmdlID8gZWxlbWVudElt
cGxpY2l0VmlzaWJpbGl0eShlbGVtZW50KSA6IFZpc2liaWxpdHk6OlZpc2libGUpCiB7CiB9CiAK
QEAgLTY4MCw4ICs2ODAsOCBAQCBDaGVja0ZvclZpc2liaWxpdHlDaGFuZ2U6On5DaGVja0ZvclZp
c2liCiAgICAgYXV0byogc3R5bGUgPSBtX2VsZW1lbnQucmVuZGVyU3R5bGUoKTsKICAgICBpZiAo
IXN0eWxlKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKChtX3ByZXZpb3VzRGlzcGxheSA9PSBO
T05FICYmIHN0eWxlLT5kaXNwbGF5KCkgIT0gTk9ORSkgfHwgKG1fcHJldmlvdXNWaXNpYmlsaXR5
ID09IEhJRERFTiAmJiBzdHlsZS0+dmlzaWJpbGl0eSgpICE9IEhJRERFTikKLSAgICAgICAgfHwg
KG1fcHJldmlvdXNJbXBsaWNpdFZpc2liaWxpdHkgPT0gSElEREVOICYmIGVsZW1lbnRJbXBsaWNp
dFZpc2liaWxpdHkobV9lbGVtZW50KSA9PSBWSVNJQkxFKSkKKyAgICBpZiAoKG1fcHJldmlvdXNE
aXNwbGF5ID09IERpc3BsYXlUeXBlOjpOb25lICYmIHN0eWxlLT5kaXNwbGF5KCkgIT0gRGlzcGxh
eVR5cGU6Ok5vbmUpIHx8IChtX3ByZXZpb3VzVmlzaWJpbGl0eSA9PSBWaXNpYmlsaXR5OjpIaWRk
ZW4gJiYgc3R5bGUtPnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpIaWRkZW4pCisgICAgICAg
IHx8IChtX3ByZXZpb3VzSW1wbGljaXRWaXNpYmlsaXR5ID09IFZpc2liaWxpdHk6OkhpZGRlbiAm
JiBlbGVtZW50SW1wbGljaXRWaXNpYmlsaXR5KG1fZWxlbWVudCkgPT0gVmlzaWJpbGl0eTo6Vmlz
aWJsZSkpCiAgICAgICAgIFdLU2V0T2JzZXJ2ZWRDb250ZW50Q2hhbmdlKFdLQ29udGVudFZpc2li
aWxpdHlDaGFuZ2UpOwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
dXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXJH
ZW5lcmF0ZWRDb250ZW50LmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTkxLDE0ICs5MSwxNCBAQCBzdGF0aWMgdm9pZCB1cGRhdGVTdHls
ZUZvckNvbnRlbnRSZW5kZXJlCiAKIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OkdlbmVyYXRlZENv
bnRlbnQ6OnVwZGF0ZVBzZXVkb0VsZW1lbnQoRWxlbWVudCYgY3VycmVudCwgY29uc3Qgc3RkOjpv
cHRpb25hbDxTdHlsZTo6RWxlbWVudFVwZGF0ZT4mIHVwZGF0ZSwgUHNldWRvSWQgcHNldWRvSWQp
CiB7Ci0gICAgUHNldWRvRWxlbWVudCogcHNldWRvRWxlbWVudCA9IHBzZXVkb0lkID09IEJFRk9S
RSA/IGN1cnJlbnQuYmVmb3JlUHNldWRvRWxlbWVudCgpIDogY3VycmVudC5hZnRlclBzZXVkb0Vs
ZW1lbnQoKTsKKyAgICBQc2V1ZG9FbGVtZW50KiBwc2V1ZG9FbGVtZW50ID0gcHNldWRvSWQgPT0g
UHNldWRvSWQ6OkJlZm9yZSA/IGN1cnJlbnQuYmVmb3JlUHNldWRvRWxlbWVudCgpIDogY3VycmVu
dC5hZnRlclBzZXVkb0VsZW1lbnQoKTsKIAogICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHBzZXVk
b0VsZW1lbnQgPyBwc2V1ZG9FbGVtZW50LT5yZW5kZXJlcigpIDogbnVsbHB0cikKICAgICAgICAg
bV91cGRhdGVyLnJlbmRlclRyZWVQb3NpdGlvbigpLmludmFsaWRhdGVOZXh0U2libGluZygqcmVu
ZGVyZXIpOwogCiAgICAgaWYgKCFuZWVkc1BzZXVkb0VsZW1lbnQodXBkYXRlKSkgewogICAgICAg
ICBpZiAocHNldWRvRWxlbWVudCkgewotICAgICAgICAgICAgaWYgKHBzZXVkb0lkID09IEJFRk9S
RSkKKyAgICAgICAgICAgIGlmIChwc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6QmVmb3JlKQogICAgICAg
ICAgICAgICAgIHJlbW92ZUJlZm9yZVBzZXVkb0VsZW1lbnQoY3VycmVudCwgbV91cGRhdGVyLm1f
YnVpbGRlcik7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmVtb3ZlQWZ0ZXJQ
c2V1ZG9FbGVtZW50KGN1cnJlbnQsIG1fdXBkYXRlci5tX2J1aWxkZXIpOwpAQCAtMTE2LDEzICsx
MTYsMTMgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6R2VuZXJhdGVkQ29udGVudAogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAobmV3UHNldWRvRWxlbWVudCkgewotICAgICAgICBpZiAocHNl
dWRvSWQgPT0gQkVGT1JFKQorICAgICAgICBpZiAocHNldWRvSWQgPT0gUHNldWRvSWQ6OkJlZm9y
ZSkKICAgICAgICAgICAgIGN1cnJlbnQuc2V0QmVmb3JlUHNldWRvRWxlbWVudChuZXdQc2V1ZG9F
bGVtZW50LnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjdXJy
ZW50LnNldEFmdGVyUHNldWRvRWxlbWVudChuZXdQc2V1ZG9FbGVtZW50LnJlbGVhc2VOb25OdWxs
KCkpOwogICAgIH0KIAotICAgIGlmICh1cGRhdGUtPnN0eWxlLT5kaXNwbGF5KCkgPT0gQ09OVEVO
VFMpIHsKKyAgICBpZiAodXBkYXRlLT5zdHlsZS0+ZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpD
b250ZW50cykgewogICAgICAgICAvLyBGb3IgZGlzcGxheTpjb250ZW50cyB3ZSBjcmVhdGUgYW4g
aW5saW5lIHdyYXBwZXIgdGhhdCBpbmhlcml0cyBpdHMKICAgICAgICAgLy8gc3R5bGUgZnJvbSB0
aGUgZGlzcGxheTpjb250ZW50cyBzdHlsZS4KICAgICAgICAgYXV0byBjb250ZW50c1N0eWxlID0g
UmVuZGVyU3R5bGU6OmNyZWF0ZVB0cigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUvSW5s
aW5lVGV4dEJveFN0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9J
bmxpbmVUZXh0Qm94U3R5bGUuY3BwCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNyAr
MTE5LDcgQEAgR2x5cGhPdmVyZmxvdyB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpbwogICAgIGZs
b2F0IGhlaWdodCA9IGxpbmVTdHlsZS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzKCkuZmxvYXRI
ZWlnaHQoKTsKICAgICBHbHlwaE92ZXJmbG93IG92ZXJmbG93UmVzdWx0OwogICAgIAotICAgIGlm
IChkZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZVdhdnkpIHsKKyAgICBpZiAo
ZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkpIHsKICAgICAgICAg
Z2V0V2F2eVN0cm9rZVBhcmFtZXRlcnMobGluZVN0eWxlLmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgp
LCBjb250cm9sUG9pbnREaXN0YW5jZSwgc3RlcCk7CiAgICAgICAgIHdhdnlPZmZzZXQgPSB3YXZ5
T2Zmc2V0RnJvbURlY29yYXRpb24oKTsKICAgICAgICAgb3ZlcmZsb3dSZXN1bHQubGVmdCA9IHN0
cm9rZVRoaWNrbmVzczsKQEAgLTEzMSw3ICsxMzEsNyBAQCBHbHlwaE92ZXJmbG93IHZpc3VhbE92
ZXJmbG93Rm9yRGVjb3JhdGlvCiAgICAgICAgIC8vIENvbXBlbnNhdGUgZm9yIHRoZSBpbnRlZ3Jh
bCBjZWlsaW5nIGluIEdyYXBoaWNzQ29udGV4dDo6Y29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxp
YXNpbmdNb2RlRm9yVGV4dCgpCiAgICAgICAgIGludCB1bmRlcmxpbmVPZmZzZXQgPSAxOwogICAg
ICAgICB1bmRlcmxpbmVPZmZzZXQgKz0gY29tcHV0ZVVuZGVybGluZU9mZnNldChsaW5lU3R5bGUu
dGV4dFVuZGVybGluZVBvc2l0aW9uKCksIGxpbmVTdHlsZS5mb250TWV0cmljcygpLCBpbmxpbmVU
ZXh0Qm94LCBzdHJva2VUaGlja25lc3MpOwotICAgICAgICBpZiAoZGVjb3JhdGlvblN0eWxlID09
IFRleHREZWNvcmF0aW9uU3R5bGVXYXZ5KSB7CisgICAgICAgIGlmIChkZWNvcmF0aW9uU3R5bGUg
PT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSkgewogICAgICAgICAgICAgZXh0ZW5kSW50VG9G
bG9hdChvdmVyZmxvd1Jlc3VsdC5ib3R0b20sIHVuZGVybGluZU9mZnNldCArIHdhdnlPZmZzZXQg
KyBjb250cm9sUG9pbnREaXN0YW5jZSArIHN0cm9rZVRoaWNrbmVzcyAtIGhlaWdodCk7CiAgICAg
ICAgICAgICBleHRlbmRJbnRUb0Zsb2F0KG92ZXJmbG93UmVzdWx0LnRvcCwgLSh1bmRlcmxpbmVP
ZmZzZXQgKyB3YXZ5T2Zmc2V0IC0gY29udHJvbFBvaW50RGlzdGFuY2UgLSBzdHJva2VUaGlja25l
c3MpKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTE0MCw3ICsxNDAsNyBAQCBHbHlwaE92ZXJmbG93
IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvCiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKGRl
Y29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbk92ZXJsaW5lKSB7Ci0gICAgICAgIGlmIChkZWNvcmF0
aW9uU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZVdhdnkpIHsKKyAgICAgICAgaWYgKGRlY29y
YXRpb25TdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5KSB7CiAgICAgICAgICAgICBl
eHRlbmRJbnRUb0Zsb2F0KG92ZXJmbG93UmVzdWx0LmJvdHRvbSwgLXdhdnlPZmZzZXQgKyBjb250
cm9sUG9pbnREaXN0YW5jZSArIHN0cm9rZVRoaWNrbmVzcyAtIGhlaWdodCk7CiAgICAgICAgICAg
ICBleHRlbmRJbnRUb0Zsb2F0KG92ZXJmbG93UmVzdWx0LnRvcCwgd2F2eU9mZnNldCArIGNvbnRy
b2xQb2ludERpc3RhbmNlICsgc3Ryb2tlVGhpY2tuZXNzKTsKICAgICAgICAgfSBlbHNlIHsKQEAg
LTE1MCw3ICsxNTAsNyBAQCBHbHlwaE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlv
CiAgICAgfQogICAgIGlmIChkZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb25MaW5lVGhyb3VnaCkg
ewogICAgICAgICBmbG9hdCBiYXNlbGluZSA9IGxpbmVTdHlsZS5mb250TWV0cmljcygpLmZsb2F0
QXNjZW50KCk7Ci0gICAgICAgIGlmIChkZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29yYXRpb25T
dHlsZVdhdnkpIHsKKyAgICAgICAgaWYgKGRlY29yYXRpb25TdHlsZSA9PSBUZXh0RGVjb3JhdGlv
blN0eWxlOjpXYXZ5KSB7CiAgICAgICAgICAgICBleHRlbmRJbnRUb0Zsb2F0KG92ZXJmbG93UmVz
dWx0LmJvdHRvbSwgMiAqIGJhc2VsaW5lIC8gMyArIGNvbnRyb2xQb2ludERpc3RhbmNlICsgc3Ry
b2tlVGhpY2tuZXNzIC0gaGVpZ2h0KTsKICAgICAgICAgICAgIGV4dGVuZEludFRvRmxvYXQob3Zl
cmZsb3dSZXN1bHQudG9wLCAtKDIgKiBiYXNlbGluZSAvIDMgLSBjb250cm9sUG9pbnREaXN0YW5j
ZSAtIHN0cm9rZVRoaWNrbmVzcykpOwogICAgICAgICB9IGVsc2UgewpJbmRleDogU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVDaGFuZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlQ2hhbmdlLmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVDaGFuZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBA
IENoYW5nZSBkZXRlcm1pbmVDaGFuZ2UoY29uc3QgUmVuZGVyU3R5bGUKIHsKICAgICBpZiAoczEu
ZGlzcGxheSgpICE9IHMyLmRpc3BsYXkoKSkKICAgICAgICAgcmV0dXJuIERldGFjaDsKLSAgICBp
ZiAoczEuaGFzUHNldWRvU3R5bGUoRklSU1RfTEVUVEVSKSAhPSBzMi5oYXNQc2V1ZG9TdHlsZShG
SVJTVF9MRVRURVIpKQorICAgIGlmIChzMS5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RM
ZXR0ZXIpICE9IHMyLmhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkOjpGaXJzdExldHRlcikpCiAgICAg
ICAgIHJldHVybiBEZXRhY2g7CiAgICAgLy8gV2UganVzdCBkZXRhY2ggaWYgYSByZW5kZXJlciBh
Y3F1aXJlcyBvciBsb3NlcyBhIGNvbHVtbi1zcGFuLCBzaW5jZSBzcGFubmluZyBlbGVtZW50cwog
ICAgIC8vIHR5cGljYWxseSB3b24ndCBjb250YWluIG11Y2ggY29udGVudC4KQEAgLTYyLDcgKzYy
LDcgQEAgQ2hhbmdlIGRldGVybWluZUNoYW5nZShjb25zdCBSZW5kZXJTdHlsZQogICAgIC8vIElm
IHRoZSBwc2V1ZG9TdHlsZXMgaGF2ZSBjaGFuZ2VkLCB3ZSB3YW50IGFueSBTdHlsZUNoYW5nZSB0
aGF0IGlzIG5vdCBOb0NoYW5nZQogICAgIC8vIGJlY2F1c2Ugc2V0U3R5bGUgd2lsbCBkbyB0aGUg
cmlnaHQgdGhpbmcgd2l0aCBhbnl0aGluZyBlbHNlLgogICAgIGlmIChzMS5oYXNBbnlQdWJsaWNQ
c2V1ZG9TdHlsZXMoKSkgewotICAgICAgICBmb3IgKFBzZXVkb0lkIHBzZXVkb0lkID0gRklSU1Rf
UFVCTElDX1BTRVVET0lEOyBwc2V1ZG9JZCA8IEZJUlNUX0lOVEVSTkFMX1BTRVVET0lEOyBwc2V1
ZG9JZCA9IHN0YXRpY19jYXN0PFBzZXVkb0lkPihwc2V1ZG9JZCArIDEpKSB7CisgICAgICAgIGZv
ciAoUHNldWRvSWQgcHNldWRvSWQgPSBQc2V1ZG9JZDo6Rmlyc3RQdWJsaWNQc2V1ZG9JZDsgcHNl
dWRvSWQgPCBQc2V1ZG9JZDo6Rmlyc3RJbnRlcm5hbFBzZXVkb0lkOyBwc2V1ZG9JZCA9IHN0YXRp
Y19jYXN0PFBzZXVkb0lkPihzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHNldWRvSWQpICsgMSkpIHsK
ICAgICAgICAgICAgIGlmIChzMS5oYXNQc2V1ZG9TdHlsZShwc2V1ZG9JZCkpIHsKICAgICAgICAg
ICAgICAgICBSZW5kZXJTdHlsZSogcHMyID0gczIuZ2V0Q2FjaGVkUHNldWRvU3R5bGUocHNldWRv
SWQpOwogICAgICAgICAgICAgICAgIGlmICghcHMyKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVGb250U2l6ZUZ1bmN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVGb250U2l6ZUZ1bmN0aW9ucy5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysr
IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlRm9udFNpemVGdW5jdGlvbnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05Miw3ICs5Miw3IEBAIGZsb2F0IGNvbXB1dGVkRm9udFNpemVGcm9tU3BlY2lm
aWVkU2l6ZSgKICAgICBpZiAoIXVzZVNWR1pvb21SdWxlcykgewogICAgICAgICB6b29tRmFjdG9y
ID0gc3R5bGUtPmVmZmVjdGl2ZVpvb20oKTsKICAgICAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1l
bnQuZnJhbWUoKTsKLSAgICAgICAgaWYgKGZyYW1lICYmIHN0eWxlLT50ZXh0Wm9vbSgpICE9IFRl
eHRab29tUmVzZXQpCisgICAgICAgIGlmIChmcmFtZSAmJiBzdHlsZS0+dGV4dFpvb20oKSAhPSBU
ZXh0Wm9vbTo6UmVzZXQpCiAgICAgICAgICAgICB6b29tRmFjdG9yICo9IGZyYW1lLT50ZXh0Wm9v
bUZhY3RvcigpOwogICAgIH0KICAgICByZXR1cm4gY29tcHV0ZWRGb250U2l6ZUZyb21TcGVjaWZp
ZWRTaXplKHNwZWNpZmllZFNpemUsIGlzQWJzb2x1dGVTaXplLCB6b29tRmFjdG9yLCB1c2VTVkda
b29tUnVsZXMgPyBNaW5pbXVtRm9udFNpemVSdWxlOjpOb25lIDogTWluaW11bUZvbnRTaXplUnVs
ZTo6QWJzb2x1dGVBbmRSZWxhdGl2ZSwgZG9jdW1lbnQuc2V0dGluZ3MoKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwCShyZXZp
c2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDggKzU4LDggQEAgUmVuZGVyU3R5bGUgcmVz
b2x2ZUZvckRvY3VtZW50KGNvbnN0IERvYwogCiAgICAgYXV0byBkb2N1bWVudFN0eWxlID0gUmVu
ZGVyU3R5bGU6OmNyZWF0ZSgpOwogCi0gICAgZG9jdW1lbnRTdHlsZS5zZXREaXNwbGF5KEJMT0NL
KTsKLSAgICBkb2N1bWVudFN0eWxlLnNldFJUTE9yZGVyaW5nKGRvY3VtZW50LnZpc3VhbGx5T3Jk
ZXJlZCgpID8gVmlzdWFsT3JkZXIgOiBMb2dpY2FsT3JkZXIpOworICAgIGRvY3VtZW50U3R5bGUu
c2V0RGlzcGxheShEaXNwbGF5VHlwZTo6QmxvY2spOworICAgIGRvY3VtZW50U3R5bGUuc2V0UlRM
T3JkZXJpbmcoZG9jdW1lbnQudmlzdWFsbHlPcmRlcmVkKCkgPyBPcmRlcjo6VmlzdWFsIDogT3Jk
ZXI6OkxvZ2ljYWwpOwogICAgIGRvY3VtZW50U3R5bGUuc2V0Wm9vbSghZG9jdW1lbnQucHJpbnRp
bmcoKSA/IHJlbmRlclZpZXcuZnJhbWUoKS5wYWdlWm9vbUZhY3RvcigpIDogMSk7CiAgICAgZG9j
dW1lbnRTdHlsZS5zZXRQYWdlU2NhbGVUcmFuc2Zvcm0ocmVuZGVyVmlldy5mcmFtZSgpLmZyYW1l
U2NhbGVGYWN0b3IoKSk7CiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBkb2N1bWVudEZvbnRE
ZXNjcmlwdGlvbiA9IGRvY3VtZW50U3R5bGUuZm9udERlc2NyaXB0aW9uKCk7CkBAIC05OSw3ICs5
OSw3IEBAIFJlbmRlclN0eWxlIHJlc29sdmVGb3JEb2N1bWVudChjb25zdCBEb2MKICAgICAgICAg
ICAgIHJlbmRlclZpZXcudXBkYXRlQ29sdW1uUHJvZ3Jlc3Npb25Gcm9tU3R5bGUoZG9jdW1lbnRT
dHlsZSk7CiAgICAgICAgIGlmIChyZW5kZXJWaWV3LnBhZ2UoKS5wYWdpbmF0aW9uTGluZUdyaWRF
bmFibGVkKCkpIHsKICAgICAgICAgICAgIGRvY3VtZW50U3R5bGUuc2V0TGluZUdyaWQoIi13ZWJr
aXQtZGVmYXVsdC1wYWdpbmF0aW9uLWdyaWQiKTsKLSAgICAgICAgICAgIGRvY3VtZW50U3R5bGUu
c2V0TGluZVNuYXAoTGluZVNuYXBDb250YWluKTsKKyAgICAgICAgICAgIGRvY3VtZW50U3R5bGUu
c2V0TGluZVNuYXAoTGluZVNuYXA6OkNvbnRhaW4pOwogICAgICAgICB9CiAgICAgfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNoYXJpbmdSZXNvbHZlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTaGFyaW5nUmVzb2x2ZXIuY3BwCShyZXZp
c2lvbiAyMzIxNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNoYXJpbmdSZXNvbHZl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgc3RydWN0IFNoYXJpbmdSZXNv
bHZlcjo6Q29udGV4dCB7CiAgICAgY29uc3QgVXBkYXRlJiB1cGRhdGU7CiAgICAgY29uc3QgU3R5
bGVkRWxlbWVudCYgZWxlbWVudDsKICAgICBib29sIGVsZW1lbnRBZmZlY3RlZEJ5Q2xhc3NSdWxl
czsKLSAgICBFSW5zaWRlTGluayBlbGVtZW50TGlua1N0YXRlOworICAgIEluc2lkZUxpbmsgZWxl
bWVudExpbmtTdGF0ZTsKIH07CiAKIFNoYXJpbmdSZXNvbHZlcjo6U2hhcmluZ1Jlc29sdmVyKGNv
bnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgRG9jdW1lbnRSdWxlU2V0cyYgcnVsZVNldHMs
IGNvbnN0IFNlbGVjdG9yRmlsdGVyJiBzZWxlY3RvckZpbHRlcikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAJKHJldmlzaW9uIDIzMjE0MykKKysrIFNv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTU2LDcgKzE1Niw3IEBAIHN0YXRpYyBib29sIGFmZmVjdHNSZW5kZXJlZFN1YnRyZWUoRWxl
bWUKIHsKICAgICBpZiAoZWxlbWVudC5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICBpZiAobmV3U3R5bGUuZGlzcGxheSgpICE9IE5PTkUpCisgICAgaWYgKG5ld1N0eWxlLmRp
c3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
aWYgKGVsZW1lbnQucmVuZGVyZXJJc05lZWRlZChuZXdTdHlsZSkpCiAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtMjM5LDE1ICsyMzksMTUgQEAgRWxlbWVudFVwZGF0ZXMgVHJlZVJlc29sdmVyOjpy
ZXNvbHZlRWxlbQogICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0byBiZWZvcmVVcGRhdGUgPSBy
ZXNvbHZlUHNldWRvU3R5bGUoZWxlbWVudCwgdXBkYXRlLCBCRUZPUkUpOwotICAgIGF1dG8gYWZ0
ZXJVcGRhdGUgPSByZXNvbHZlUHNldWRvU3R5bGUoZWxlbWVudCwgdXBkYXRlLCBBRlRFUik7Cisg
ICAgYXV0byBiZWZvcmVVcGRhdGUgPSByZXNvbHZlUHNldWRvU3R5bGUoZWxlbWVudCwgdXBkYXRl
LCBQc2V1ZG9JZDo6QmVmb3JlKTsKKyAgICBhdXRvIGFmdGVyVXBkYXRlID0gcmVzb2x2ZVBzZXVk
b1N0eWxlKGVsZW1lbnQsIHVwZGF0ZSwgUHNldWRvSWQ6OkFmdGVyKTsKIAogICAgIHJldHVybiB7
IFdURk1vdmUodXBkYXRlKSwgZGVzY2VuZGFudHNUb1Jlc29sdmUsIFdURk1vdmUoYmVmb3JlVXBk
YXRlKSwgV1RGTW92ZShhZnRlclVwZGF0ZSkgfTsKIH0KIAogRWxlbWVudFVwZGF0ZSBUcmVlUmVz
b2x2ZXI6OnJlc29sdmVQc2V1ZG9TdHlsZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBFbGVtZW50
VXBkYXRlJiBlbGVtZW50VXBkYXRlLCBQc2V1ZG9JZCBwc2V1ZG9JZCkKIHsKLSAgICBpZiAoZWxl
bWVudFVwZGF0ZS5zdHlsZS0+ZGlzcGxheSgpID09IE5PTkUpCisgICAgaWYgKGVsZW1lbnRVcGRh
dGUuc3R5bGUtPmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJu
IHsgfTsKICAgICBpZiAoIWVsZW1lbnRVcGRhdGUuc3R5bGUtPmhhc1BzZXVkb1N0eWxlKHBzZXVk
b0lkKSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTI1NiwxMSArMjU2LDExIEBAIEVsZW1lbnRV
cGRhdGUgVHJlZVJlc29sdmVyOjpyZXNvbHZlUHNldWQKICAgICBpZiAoIXBzZXVkb1N0eWxlKQog
ICAgICAgICByZXR1cm4geyB9OwogCi0gICAgUHNldWRvRWxlbWVudCogcHNldWRvRWxlbWVudCA9
IHBzZXVkb0lkID09IEJFRk9SRSA/IGVsZW1lbnQuYmVmb3JlUHNldWRvRWxlbWVudCgpIDogZWxl
bWVudC5hZnRlclBzZXVkb0VsZW1lbnQoKTsKKyAgICBQc2V1ZG9FbGVtZW50KiBwc2V1ZG9FbGVt
ZW50ID0gcHNldWRvSWQgPT0gUHNldWRvSWQ6OkJlZm9yZSA/IGVsZW1lbnQuYmVmb3JlUHNldWRv
RWxlbWVudCgpIDogZWxlbWVudC5hZnRlclBzZXVkb0VsZW1lbnQoKTsKICAgICBpZiAoIXBzZXVk
b0VsZW1lbnQpIHsKICAgICAgICAgYXV0byBuZXdQc2V1ZG9FbGVtZW50ID0gUHNldWRvRWxlbWVu
dDo6Y3JlYXRlKGVsZW1lbnQsIHBzZXVkb0lkKTsKICAgICAgICAgcHNldWRvRWxlbWVudCA9IG5l
d1BzZXVkb0VsZW1lbnQucHRyKCk7Ci0gICAgICAgIGlmIChwc2V1ZG9JZCA9PSBCRUZPUkUpCisg
ICAgICAgIGlmIChwc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6QmVmb3JlKQogICAgICAgICAgICAgZWxl
bWVudC5zZXRCZWZvcmVQc2V1ZG9FbGVtZW50KFdURk1vdmUobmV3UHNldWRvRWxlbWVudCkpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBlbGVtZW50LnNldEFmdGVyUHNldWRvRWxlbWVudChX
VEZNb3ZlKG5ld1BzZXVkb0VsZW1lbnQpKTsKQEAgLTI3NCw5ICsyNzQsOSBAQCBjb25zdCBSZW5k
ZXJTdHlsZSogVHJlZVJlc29sdmVyOjpwYXJlbnRCCiAgICAgLy8gJ2Rpc3BsYXk6IGNvbnRlbnRz
JyBkb2Vzbid0IGdlbmVyYXRlIGJveGVzLgogICAgIGZvciAodW5zaWduZWQgaSA9IG1fcGFyZW50
U3RhY2suc2l6ZSgpOyBpOyAtLWkpIHsKICAgICAgICAgYXV0byYgcGFyZW50ID0gbV9wYXJlbnRT
dGFja1tpIC0gMV07Ci0gICAgICAgIGlmIChwYXJlbnQuc3R5bGUuZGlzcGxheSgpID09IE5PTkUp
CisgICAgICAgIGlmIChwYXJlbnQuc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpOb25l
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGlmIChwYXJlbnQuc3R5bGUu
ZGlzcGxheSgpICE9IENPTlRFTlRTKQorICAgICAgICBpZiAocGFyZW50LnN0eWxlLmRpc3BsYXko
KSAhPSBEaXNwbGF5VHlwZTo6Q29udGVudHMpCiAgICAgICAgICAgICByZXR1cm4gJnBhcmVudC5z
dHlsZTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC00MzMsNyArNDMzLDcg
QEAgc3RhdGljIGJvb2wgaGFzTG9hZGluZ1N0eWxlc2hlZXQoY29uc3QgUwogCiBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBjcmVhdGVJbmhlcml0ZWREaXNwbGF5Q29udGVudHNT
dHlsZUlmTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRFbGVtZW50U3R5bGUsIGNvbnN0
IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hTdHlsZSkKIHsKLSAgICBpZiAocGFyZW50RWxlbWVudFN0
eWxlLmRpc3BsYXkoKSAhPSBDT05URU5UUykKKyAgICBpZiAocGFyZW50RWxlbWVudFN0eWxlLmRp
c3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Q29udGVudHMpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIGlmIChwYXJlbnRCb3hTdHlsZSAmJiAhcGFyZW50Qm94U3R5bGUtPmluaGVyaXRlZE5v
dEVxdWFsKCZwYXJlbnRFbGVtZW50U3R5bGUpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTQ2NSw3ICs0NjUsNyBAQCB2b2lkIFRyZWVSZXNvbHZlcjo6cmVzb2x2ZUNvbXBvc2VkVHJlZSgp
CiAgICAgICAgIGlmIChpczxUZXh0Pihub2RlKSkgewogICAgICAgICAgICAgYXV0byYgdGV4dCA9
IGRvd25jYXN0PFRleHQ+KG5vZGUpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoKHRl
eHQuc3R5bGVWYWxpZGl0eSgpID49IFZhbGlkaXR5OjpTdWJ0cmVlQW5kUmVuZGVyZXJzSW52YWxp
ZCAmJiBwYXJlbnQuY2hhbmdlICE9IERldGFjaCkgfHwgcGFyZW50LnN0eWxlLmRpc3BsYXkoKSA9
PSBDT05URU5UUykgeworICAgICAgICAgICAgaWYgKCh0ZXh0LnN0eWxlVmFsaWRpdHkoKSA+PSBW
YWxpZGl0eTo6U3VidHJlZUFuZFJlbmRlcmVyc0ludmFsaWQgJiYgcGFyZW50LmNoYW5nZSAhPSBE
ZXRhY2gpIHx8IHBhcmVudC5zdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OkNvbnRlbnRz
KSB7CiAgICAgICAgICAgICAgICAgVGV4dFVwZGF0ZSB0ZXh0VXBkYXRlOwogICAgICAgICAgICAg
ICAgIHRleHRVcGRhdGUuaW5oZXJpdGVkRGlzcGxheUNvbnRlbnRzU3R5bGUgPSBjcmVhdGVJbmhl
cml0ZWREaXNwbGF5Q29udGVudHNTdHlsZUlmTmVlZGVkKHBhcmVudC5zdHlsZSwgcGFyZW50Qm94
U3R5bGUoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAkocmV2aXNpb24gMjMyMTQz
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTcyLDcgKzE3Miw3IEBAIHByb3RlY3RlZDoKICAgICBjbGFzcyBJbnN0YW5jZUludmFsaWRhdGlv
bkd1YXJkOwogCiBwcml2YXRlOgotICAgIGNvbnN0IFJlbmRlclN0eWxlKiBjb21wdXRlZFN0eWxl
KFBzZXVkb0lkID0gTk9QU0VVRE8pIGZpbmFsOworICAgIGNvbnN0IFJlbmRlclN0eWxlKiBjb21w
dXRlZFN0eWxlKFBzZXVkb0lkID0gUHNldWRvSWQ6Ok5vbmUpIGZpbmFsOwogCiAgICAgdmlydHVh
bCB2b2lkIGNsZWFyVGFyZ2V0KCkgeyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdH
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50
LmNwcAkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsNyArOTMsNyBAQCBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gU1ZHR0VsZW1lbnQ6OmNyCiAgICAgLy8gV2Ugc3RpbGwgaGF2ZSB0byBjcmVhdGUgcmVu
ZGVyZXJzIGZvciB0aGUgPGc+ICYgPGxpbmVhckdyYWRpZW50PiBlbGVtZW50LCB0aG91Z2ggdGhl
CiAgICAgLy8gc3VidHJlZSBtYXkgYmUgaGlkZGVuIC0gd2Ugb25seSB3YW50IHRoZSByZXNvdXJj
ZSByZW5kZXJlcnMgdG8gZXhpc3Qgc28gdGhleSBjYW4gYmUKICAgICAvLyByZWZlcmVuY2VkIGZy
b20gc29tZXdoZXJlIGVsc2UuCi0gICAgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBOT05FKQorICAg
IGlmIChzdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVy
biBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdIaWRkZW5Db250YWluZXI+KCp0aGlzLCBXVEZNb3Zl
KHN0eWxlKSk7CiAKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHVHJhbnNmb3Jt
YWJsZUNvbnRhaW5lcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMjE0MykKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE4LTA1LTIz
ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9kZXJuaXplIFJlbmRl
clN0eWxlQ29uc3RhbnRzLmggLSBQYXJ0IDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4NTkwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW06Cisg
ICAgICAgIChzZWFyY2hGb3JMYWJlbHNCZWZvcmVFbGVtZW50KToKKyAgICAgICAgKiBXZWJWaWV3
L1dlYlZpZXcubW06CisgICAgICAgIChuc1RleHRBbGlnbm1lbnRGcm9tUmVuZGVyU3R5bGUpOgor
ICAgICAgICBVcGRhdGUgZm9yIG5ldyBlbnVtIG5hbWVzLgorCiAyMDE4LTA1LTIyICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lvbihBc3luY1BvbGlj
eURlbGVnYXRlcyk6IEJveC5hcHAgbG9naW4gV2luZG93IGlzIGJsYW5rCkluZGV4OiBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRh
dGlvbi5tbQkocmV2aXNpb24gMjMyMTQzKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ1NSw3ICs0
NTUsNyBAQCBzdGF0aWMgTlNTdHJpbmcqIHNlYXJjaEZvckxhYmVsc0JlZm9yZUVsCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNlYXJj
aGVkQ2VsbEFib3ZlID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlmIChuLT5pc1RleHROb2RlKCkg
JiYgbi0+cmVuZGVyZXIoKSAmJiBuLT5yZW5kZXJlcigpLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9
PSBWSVNJQkxFKSB7CisgICAgICAgIH0gZWxzZSBpZiAobi0+aXNUZXh0Tm9kZSgpICYmIG4tPnJl
bmRlcmVyKCkgJiYgbi0+cmVuZGVyZXIoKS0+c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJp
bGl0eTo6VmlzaWJsZSkgewogICAgICAgICAgICAgLy8gRm9yIGVhY2ggdGV4dCBjaHVuaywgcnVu
IHRoZSByZWdleHAKICAgICAgICAgICAgIFN0cmluZyBub2RlU3RyaW5nID0gbi0+bm9kZVZhbHVl
KCk7CiAgICAgICAgICAgICAvLyBhZGQgMTAwIGZvciBzbG9wLCB0byBtYWtlIGl0IG1vcmUgbGlr
ZWx5IHRoYXQgd2UnbGwgc2VhcmNoIHdob2xlIG5vZGVzCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAyMzIxNDMpCisrKyBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTk3
OTksMjUgKzk3OTksMjUgQEAgc3RhdGljIE5TVGV4dEFsaWdubWVudCBuc1RleHRBbGlnbm1lbnRG
cgogewogICAgIE5TVGV4dEFsaWdubWVudCB0ZXh0QWxpZ25tZW50OwogICAgIHN3aXRjaCAoc3R5
bGUtPnRleHRBbGlnbigpKSB7Ci0gICAgY2FzZSBSSUdIVDoKLSAgICBjYXNlIFdFQktJVF9SSUdI
VDoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlJpZ2h0OgorICAgIGNhc2UgVGV4dEFsaWduTW9k
ZTo6V2ViS2l0UmlnaHQ6CiAgICAgICAgIHRleHRBbGlnbm1lbnQgPSBOU1RleHRBbGlnbm1lbnRS
aWdodDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMRUZUOgotICAgIGNhc2UgV0VCS0lUX0xF
RlQ6CisgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgorICAgIGNhc2UgVGV4dEFsaWduTW9k
ZTo6V2ViS2l0TGVmdDoKICAgICAgICAgdGV4dEFsaWdubWVudCA9IE5TVGV4dEFsaWdubWVudExl
ZnQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ0VOVEVSOgotICAgIGNhc2UgV0VCS0lUX0NF
TlRFUjoKKyAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKKyAgICBjYXNlIFRleHRBbGln
bk1vZGU6OldlYktpdENlbnRlcjoKICAgICAgICAgdGV4dEFsaWdubWVudCA9IE5TVGV4dEFsaWdu
bWVudENlbnRlcjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBKVVNUSUZZOgorICAgIGNhc2Ug
VGV4dEFsaWduTW9kZTo6SnVzdGlmeToKICAgICAgICAgdGV4dEFsaWdubWVudCA9IE5TVGV4dEFs
aWdubWVudEp1c3RpZmllZDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUQVNUQVJUOgorICAg
IGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CiAgICAgICAgIHRleHRBbGlnbm1lbnQgPSBzdHls
ZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gTlNUZXh0QWxpZ25tZW50TGVmdCA6IE5TVGV4
dEFsaWdubWVudFJpZ2h0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRBRU5EOgorICAgIGNh
c2UgVGV4dEFsaWduTW9kZTo6RW5kOgogICAgICAgICB0ZXh0QWxpZ25tZW50ID0gc3R5bGUtPmlz
TGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IE5TVGV4dEFsaWdubWVudFJpZ2h0IDogTlNUZXh0QWxp
Z25tZW50TGVmdDsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK
</data>

          </attachment>
      

    </bug>

</bugzilla>