<?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>176809</bug_id>
          
          <creation_ts>2017-09-12 14:33:27 -0700</creation_ts>
          <short_desc>Switch text tracks to release logging</short_desc>
          <delta_ts>2022-10-27 05:02:06 -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>Media</component>
          <version>Other</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="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>brianmckay070</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jer.noble</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1348034</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-09-12 14:33:27 -0700</bug_when>
    <thetext>Switch existing logging in the various text track classes to release logging.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348059</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-12 15:13:55 -0700</bug_when>
    <thetext>&lt;rdar://problem/34397605&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349047</commentid>
    <comment_count>2</comment_count>
      <attachid>320835</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-09-14 15:35:55 -0700</bug_when>
    <thetext>Created attachment 320835
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349058</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-14 15:50:29 -0700</bug_when>
    <thetext>Attachment 320835 did not pass style-queue:


ERROR: Source/WebCore/html/track/TrackBase.cpp:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/html/track/TrackBase.cpp:41:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/html/track/TrackBase.cpp:41:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:42:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:43:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:44:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:45:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:46:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:47:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:48:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:49:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:50:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:51:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:52:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:53:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/html/track/TrackBase.cpp:53:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:54:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 17 in 60 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349131</commentid>
    <comment_count>4</comment_count>
      <attachid>320854</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-09-14 17:39:35 -0700</bug_when>
    <thetext>Created attachment 320854
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349134</commentid>
    <comment_count>5</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-14 17:41:56 -0700</bug_when>
    <thetext>Attachment 320854 did not pass style-queue:


ERROR: Source/WebCore/html/track/TrackBase.cpp:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/html/track/TrackBase.cpp:41:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/html/track/TrackBase.cpp:41:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:42:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:43:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:44:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:45:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:46:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:47:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:48:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:49:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:50:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:51:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:52:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:53:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/html/track/TrackBase.cpp:53:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:54:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 17 in 46 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349148</commentid>
    <comment_count>6</comment_count>
      <attachid>320860</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-09-14 18:44:42 -0700</bug_when>
    <thetext>Created attachment 320860
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349149</commentid>
    <comment_count>7</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-14 18:47:12 -0700</bug_when>
    <thetext>Attachment 320860 did not pass style-queue:


ERROR: Source/WebCore/html/track/TrackBase.cpp:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/html/track/TrackBase.cpp:41:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/html/track/TrackBase.cpp:41:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:42:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:43:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:44:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:45:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:46:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:47:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:48:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:49:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:50:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:51:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:52:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:53:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/html/track/TrackBase.cpp:53:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/track/TrackBase.cpp:54:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 17 in 46 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349153</commentid>
    <comment_count>8</comment_count>
      <attachid>320862</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-09-14 18:54:22 -0700</bug_when>
    <thetext>Created attachment 320862
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349335</commentid>
    <comment_count>9</comment_count>
      <attachid>320862</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-15 09:20:11 -0700</bug_when>
    <thetext>Comment on attachment 320862
Proposed patch.

Clearing flags on attachment: 320862

Committed r222091: &lt;http://trac.webkit.org/changeset/222091&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349336</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-15 09:20:12 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1908678</commentid>
    <comment_count>11</comment_count>
    <who name="MckayBrian">brianmckay070</who>
    <bug_when>2022-10-27 05:02:06 -0700</bug_when>
    <thetext>If you don&apos;t know why an exception failed, logging errors in your code is useless for tracking down bugs. By enabling the display of the whole stack trace, including variable values, Loguru aids in problem identification. http://britishdissertationhelp.blogspot.com/</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320835</attachid>
            <date>2017-09-14 15:35:55 -0700</date>
            <delta_ts>2017-09-14 17:39:35 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>text_track_logging_patch_5.txt</filename>
            <type>text/plain</type>
            <size>102811</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyNyBAQAorMjAxNy0wOS0xNCAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBTd2l0Y2ggdGV4dCB0
cmFja3MgdG8gcmVsZWFzZSBsb2dnaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzY4MDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0Mzk3NjA1
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ug
YWxsIHRyYWNrIG9iamVjdHMgdXNlIHRoZSBzYW1lIGxvZ2dlciBhbmQgbG9nIGlkZW50aWZpZXIg
YXMgdGhlIG1lZGlhIGVsZW1lbnQgdGhleQorICAgICAgICAiYmVsb25nIiB0by4gQ29udmVydCBh
bGwgdHJhY2sgbG9nZ2luZyBmcm9tIGRlYnVnLW9ubHkgdG8gcmVsZWFzZSBsb2dnaW5nLgorCisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6fkRvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpsb2dnZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmRpZExvZ01lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omxv
Z2dlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAg
ICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMpOgorICAgICAgICAqIGh0bWwvSFRN
TE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFjay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvVHJhY2s6OnNldFByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
azo6c2V0TWVkaWFFbGVtZW50KToKKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2suaDoK
KyAgICAgICAgKiBodG1sL3RyYWNrL0RhdGFDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YUN1ZTo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAqIGh0bWwvdHJhY2svRGF0YUN1ZS5oOgor
ICAgICAgICAoUEFMOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpEYXRhQ3VlPjo6dG9TdHJpbmcpOgor
ICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbmJhbmREYXRhVGV4dFRyYWNrOjphZGREYXRhQ3VlKToKKyAgICAgICAgKFdlYkNv
cmU6OkluYmFuZERhdGFUZXh0VHJhY2s6OnVwZGF0ZURhdGFDdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5iYW5kRGF0YVRleHRUcmFjazo6cmVtb3ZlRGF0YUN1ZSk6CisgICAgICAgICogaHRtbC90
cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRH
ZW5lcmljVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNUZXh0
VHJhY2s6OmFkZEdlbmVyaWNDdWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY1Rl
eHRUcmFjazo6cmVtb3ZlR2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5l
cmljVGV4dFRyYWNrOjpuZXdDdWVzUGFyc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdl
bmVyaWNUZXh0VHJhY2s6OmZpbGVGYWlsZWRUb1BhcnNlKToKKyAgICAgICAgKiBodG1sL3RyYWNr
L0luYmFuZEdlbmVyaWNUZXh0VHJhY2suaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZFRl
eHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2s6OkluYmFuZFRl
eHRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2s6OnNldE1lZGlhRWxl
bWVudCk6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaDoKKyAgICAgICAg
KiBodG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbmJhbmRXZWJWVFRUZXh0VHJhY2s6Om5ld0N1ZXNQYXJzZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpmaWxlRmFpbGVkVG9QYXJzZSk6CisgICAgICAgICog
aHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBodG1sL3RyYWNr
L0xvYWRhYmxlVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRy
YWNrOjpuZXdDdWVzQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRy
YWNrOjpjdWVMb2FkaW5nQ29tcGxldGVkKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0xvYWRhYmxl
VGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2suY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFRyYWNrOjphZGRDdWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRy
YWNrOjpyZW1vdmVDdWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpzZXRMYW5ndWFn
ZSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2suaDoKKyAgICAgICAgKiBodG1sL3Ry
YWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OnRv
U3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oOgorICAg
ICAgICAoUEFMOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpUZXh0VHJhY2tDdWU+Ojp0b1N0cmluZyk6
CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFja0N1ZUdlbmVyaWM6OnNldEZvbnRTaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRUcmFja0N1ZUdlbmVyaWM6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuaDoKKyAgICAgICAgKFBBTDo6TG9nQXJndW1l
bnQ8V2ViQ29yZTo6VGV4dFRyYWNrQ3VlR2VuZXJpYz46OnRvU3RyaW5nKToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1RyYWNrQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXh0TG9nSWRlbnRp
Zmllcik6CisgICAgICAgIChXZWJDb3JlOjpudWxsTG9nZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OlRyYWNrQmFzZTo6VHJhY2tCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6c2V0
TWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6bG9nQ2hhbm5lbCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6On5UcmFja0Jhc2UpOiBEZWxldGVk
LgorICAgICAgICAqIGh0bWwvdHJhY2svVHJhY2tCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpU
cmFja0Jhc2U6OnNldE1lZGlhRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC90cmFj
ay9WVFRDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VlRUQ3VlOjpzZXRGb250U2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpWVFRDdWU6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBodG1s
L3RyYWNrL1ZUVEN1ZS5oOgorICAgICAgICAoUEFMOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpWVFRD
dWU+Ojp0b1N0cmluZyk6CisgICAgICAgICogaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OlZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9UcmFjazo6c2V0UHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNr
OjpzZXRNZWRpYUVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFjay5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9XZWJDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQ29uc29sZUFnZW50OjpnZXRMb2dnaW5nQ2hhbm5lbHMpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQ29uc29sZUFnZW50OjpzZXRMb2dnaW5nQ2hhbm5lbExldmVsKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvV2ViQ29uc29sZUFnZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vTG9nZ2luZy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpsb2dDaGFubmVsTmFtZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0TG9nQ2hhbm5lbCk6CisgICAgICAgICogcGxhdGZvcm0vTG9nZ2luZy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAoUEFMOjpMb2dB
cmd1bWVudDxXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YT46OnRvU3RyaW5nKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZhdGVCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlOjpzZXRMb2dnZXIpOgorICAgICAgICAoV2ViQ29yZTo6
VHJhY2tQcml2YXRlQmFzZTo6bG9nQ2hhbm5lbCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1ZpZGVvVHJhY2tQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwubW06CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6
OnVwZGF0ZVBlbmRpbmdDdWVFbmRUaW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRNZXRh
ZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6OmZsdXNoUGFydGlhbEN1ZXMpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZh
dGVBVkYuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGOjpwcm9jZXNzQXR0cmlidXRlZFN0cmluZ3MpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cmVtb3ZlQ29tcGxldGVkQ3Vlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpyZXNldEN1ZVZhbHVlcyk6
CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzTmF0
aXZlU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
OjpyZWFkTmF0aXZlU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5t
bToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoLVtXZWJDb3JlQVZGTW92
aWVPYnNlcnZlciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0
Ol0pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU3RyZWFtQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbUNvY29hOjpjcmVhdGVBdWRpb1VuaXQpOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaDoKKwog
MjAxNy0wOS0xMyAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBJbnRyb2R1Y2UgU3RvcmFnZSBBY2Nlc3MgQVBJIChkb2N1bWVudCBwYXJ0cykgYXMgYW4gZXhw
ZXJpbWVudGFsIGZlYXR1cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMjIw
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MzQyNSw2ICszNDI1LDcgQEAgaWYgKEVOQUJMRV9WSURFT19UUkFDSykKICAgICAgICAgbG9hZGVy
L2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKIAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9U
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvVHJh
Y2tQcml2YXRlQmFzZS5jcHAKICAgICApCiBlbmRpZiAoKQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9QQUwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNy0wOS0xNCAgRXJpYyBDYXJsc29uICA8
ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBTd2l0Y2ggdGV4dCB0cmFja3MgdG8g
cmVsZWFzZSBsb2dnaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzY4MDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0Mzk3NjA1PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFsL0xvZ2dlci5o
OgorICAgICAgICAoUEFMOjpMb2dBcmd1bWVudDo6dG9TdHJpbmcpOgorICAgICAgICAoUEFMOjpM
b2dnZXI6OndpbGxMb2cgY29uc3QpOgorCiAyMDE3LTA5LTEzICBBbmR5IEVzdGVzICA8YWVzdGVz
QGFwcGxlLmNvbT4KIAogICAgICAgICBbQ0ZdIFVwc3RyZWFtIENGTmV0d29yay1yZWxhdGVkIFdl
YktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvTG9nZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9Mb2dnZXIu
aAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9Mb2dnZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNDEsMTAgKzQxLDEyIEBAIHN0cnVjdCBMb2dBcmd1bWVudCB7CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX3NhbWU8VSwgaW50Pjo6dmFsdWUsIFN0cmluZz46OnR5cGUgdG9TdHJpbmcoaW50
IGFyZ3VtZW50KSB7IHJldHVybiBTdHJpbmc6Om51bWJlcihhcmd1bWVudCk7IH0KICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6
aXNfc2FtZTxVLCB1bnNpZ25lZD46OnZhbHVlLCBTdHJpbmc+Ojp0eXBlIHRvU3RyaW5nKHVuc2ln
bmVkIGFyZ3VtZW50KSB7IHJldHVybiBTdHJpbmc6Om51bWJlcihhcmd1bWVudCk7IH0KICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0
ZDo6aXNfc2FtZTxVLCB1bnNpZ25lZCBsb25nPjo6dmFsdWUsIFN0cmluZz46OnR5cGUgdG9TdHJp
bmcodW5zaWduZWQgbG9uZyBhcmd1bWVudCkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIoYXJndW1l
bnQpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VSwgbG9uZz46OnZhbHVlLCBTdHJpbmc+Ojp0eXBlIHRv
U3RyaW5nKGxvbmcgYXJndW1lbnQpIHsgcmV0dXJuIFN0cmluZzo6bnVtYmVyKGFyZ3VtZW50KTsg
fQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8c3RkOjppc19zYW1lPFUsIGZsb2F0Pjo6dmFsdWUsIFN0cmluZz46OnR5cGUgdG9TdHJp
bmcoZmxvYXQgYXJndW1lbnQpIHsgcmV0dXJuIFN0cmluZzo6bnVtYmVyKGFyZ3VtZW50KTsgfQog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8c3RkOjppc19zYW1lPFUsIGRvdWJsZT46OnZhbHVlLCBTdHJpbmc+Ojp0eXBlIHRvU3RyaW5n
KGRvdWJsZSBhcmd1bWVudCkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIoYXJndW1lbnQpOyB9CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFU+Ojp0eXBlLCBB
dG9taWNTdHJpbmc+Ojp2YWx1ZSwgU3RyaW5nPjo6dHlwZSB0b1N0cmluZyhBdG9taWNTdHJpbmcg
YXJndW1lbnQpIHsgcmV0dXJuIGFyZ3VtZW50LnN0cmluZygpOyB9CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8
dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFU+Ojp0eXBlLCBTdHJpbmc+Ojp2YWx1ZSwg
U3RyaW5nPjo6dHlwZSB0b1N0cmluZyhTdHJpbmcgYXJndW1lbnQpIHsgcmV0dXJuIGFyZ3VtZW50
OyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFU+Ojp0
eXBlLCBTdHJpbmdCdWlsZGVyKj46OnZhbHVlLCBTdHJpbmc+Ojp0eXBlIHRvU3RyaW5nKFN0cmlu
Z0J1aWxkZXIqIGFyZ3VtZW50KSB7IHJldHVybiBhcmd1bWVudC0+dG9TdHJpbmcoKTsgfQogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
c3RkOjppc19zYW1lPFUsIGNvbnN0IGNoYXIqPjo6dmFsdWUsIFN0cmluZz46OnR5cGUgdG9TdHJp
bmcoY29uc3QgY2hhciogYXJndW1lbnQpIHsgcmV0dXJuIFN0cmluZyhhcmd1bWVudCk7IH0KICAg
ICB0ZW1wbGF0ZTxzaXplX3QgbGVuZ3RoPiBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IGNo
YXIgKCZhcmd1bWVudClbbGVuZ3RoXSkgeyByZXR1cm4gU3RyaW5nKGFyZ3VtZW50KTsgfQogfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDYgKzE0Niw3IEBACiAJ
CTA3M0I4NzY3MUU0Mzg1QUMwMDcxQzBFQyAvKiBBdWRpb1NhbXBsZUJ1ZmZlckxpc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0I4NzYzMUU0Mzg1
OUQwMDcxQzBFQyAvKiBBdWRpb1NhbXBsZUJ1ZmZlckxpc3QuaCAqLzsgfTsKIAkJMDczQjg3Njgx
RTQzODVBQzAwNzFDMEVDIC8qIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0I4NzY0MUU0Mzg1OUQwMDcxQzBF
QyAvKiBBdWRpb1NhbXBsZURhdGFTb3VyY2UubW0gKi87IH07CiAJCTA3M0I4NzY5MUU0Mzg1QUMw
MDcxQzBFQyAvKiBBdWRpb1NhbXBsZURhdGFTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0I4NzY1MUU0Mzg1OUQwMDcxQzBFQyAvKiBBdWRp
b1NhbXBsZURhdGFTb3VyY2UuaCAqLzsgfTsKKwkJMDczQkRDMDUxRjY4NDM2MTAwRUUzNEVEIC8q
IFRyYWNrUHJpdmF0ZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDc2RTExQkUxRjY4M0UwRDAwMTc3Mzk1IC8qIFRyYWNrUHJpdmF0ZUJhc2Uu
Y3BwICovOyB9OwogCQkwNzNCRTM0MDE3RDE3RTAxMDAyQkQ0MzEgLyogSlNOYXZpZ2F0b3JVc2Vy
TWVkaWEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDczQkUzM0UxN0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhLmNwcCAqLzsg
fTsKIAkJMDczQkUzNDExN0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNCRTMzRjE3
RDE3RTAxMDAyQkQ0MzEgLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWEuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzNCRTM0RTE3RDE4MEIyMDAyQkQ0
MzEgLyogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzIyMUJBQjE3Q0YwQUQ0MDA4NDhFNTEg
LyogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5jcHAgKi87IH07CkBAIC03NzE5LDYg
Kzc3MjAsNyBAQAogCQkwNzYzOEE5ODE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFu
YWdlcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlh
U2Vzc2lvbk1hbmFnZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3Njk3
MDg0MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRUcmFja0xpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwNzY5NzA4NTE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0VHJhY2tMaXN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3NkUxMUJFMUY2ODNFMEQwMDE3NzM5NSAvKiBUcmFj
a1ByaXZhdGVCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRy
YWNrUHJpdmF0ZUJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZFQzEz
MjFFNDRGMkNCMDBFNUQ4MTMgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW1Db2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NkYw
RDA5MTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RjBEMEEx
MkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzOTE4LDYgKzIzOTIwLDcgQEAK
IAkJCQlDRDFFNzM0NjE2N0JDNzhFMDA5QTg4NUQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb24u
Y3BwICovLAogCQkJCUNERDFFNTI1MTY3QkE1NjQwMENFODIwQiAvKiBUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbi5oICovLAogCQkJCTFBRjg5QTQxMTUxOEZERUEwMEU1NDdCNSAvKiBUaWxlZEJhY2tp
bmcuaCAqLywKKwkJCQkwNzZFMTFCRTFGNjgzRTBEMDAxNzczOTUgLyogVHJhY2tQcml2YXRlQmFz
ZS5jcHAgKi8sCiAJCQkJQkU5MTNEN0YxODFFRjhFNTAwRENCMDlFIC8qIFRyYWNrUHJpdmF0ZUJh
c2UuaCAqLywKIAkJCQlFNEFGQ0ZBNDBEQUYyOUEzMDBGNUY1NUMgLyogVW5pdEJlemllci5oICov
LAogCQkJCUJFRjI5RUVBMTcxNUREMDkwMEM0QjRDOSAvKiBWaWRlb1RyYWNrUHJpdmF0ZS5oICov
LApAQCAtMzIxMDgsNiArMzIxMTEsNyBAQAogCQkJCUUxMkRFNzE3MUU0Qjc0OUMwMEY5QUNDRiAv
KiBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE0QzI1
RDcxRTlFRkVERTAwQkVFMTQxIC8qIEgyNjRWaWRlb1Rvb2xCb3hFbmNvZGVyLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRjU1QjNEQkYxMjUxRjEyRDAwM0VGMjY5IC8qIEhpZGRlbklucHV0VHlwZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzNCREMwNTFGNjg0MzYxMDBFRTM0RUQgLyogVHJhY2tQ
cml2YXRlQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTVCRTE5QjFENTRGNkMxMDBERDdD
NjggLyogSElER2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTVCRTE5RDFENTRGNkMx
MDBERDdDNjggLyogSElER2FtZXBhZFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
OTREMTUzMEMyNzVDOEIwMDZCQzYxNyAvKiBIaXN0b3J5LmNwcCBpbiBTb3VyY2VzICovLApJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMjIw
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjYwLDggKzE2NjAsNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0
ZUFjdGl2ZVRleHRUCiAgICAgaWYgKGlnbm9yZVRyYWNrRGlzcGxheVVwZGF0ZVJlcXVlc3RzKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSKTsKLQogICAg
IC8vIDEgLSBMZXQgY3VycmVudCBjdWVzIGJlIGEgbGlzdCBvZiBjdWVzLCBpbml0aWFsaXplZCB0
byBjb250YWluIGFsbCB0aGUKICAgICAvLyBjdWVzIG9mIGFsbCB0aGUgaGlkZGVuLCBzaG93aW5n
LCBvciBzaG93aW5nIGJ5IGRlZmF1bHQgdGV4dCB0cmFja3Mgb2YgdGhlCiAgICAgLy8gbWVkaWEg
ZWxlbWVudCAobm90IHRoZSBkaXNhYmxlZCBvbmVzKSB3aG9zZSBzdGFydCB0aW1lcyBhcmUgbGVz
cyB0aGFuIG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2
aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJNZWRpYUNhblN0YXJ0
TGlzdGVuZXIuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCIKICNpbmNs
dWRlICJNZWRpYUVsZW1lbnRTZXNzaW9uLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNp
bmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCiAjaW5jbHVkZSAiVmlzaWJpbGl0eUNoYW5nZUNsaWVu
dC5oIgogI2luY2x1ZGUgPHBhbC9Mb2dnZXJIZWxwZXIuaD4KQEAgLTg3LDcgKzg4LDYgQEAgY2xh
c3MgTWVkaWFDb250cm9sc0hvc3Q7CiBjbGFzcyBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU7
CiBjbGFzcyBNZWRpYUVycm9yOwogY2xhc3MgTWVkaWFLZXlzOwotY2xhc3MgTWVkaWFQbGF5ZXI7
CiBjbGFzcyBNZWRpYVJlc291cmNlTG9hZGVyOwogY2xhc3MgTWVkaWFTZXNzaW9uOwogY2xhc3Mg
TWVkaWFTb3VyY2U7CkBAIC0xNDEsNyArMTQxLDcgQEAgY2xhc3MgSFRNTE1lZGlhRWxlbWVudAog
ICAgICwgcHJpdmF0ZSBDRE1DbGllbnQKICNlbmRpZgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAotICAgICwgcHJpdmF0ZSBQQUw6OkxvZ2dlckhlbHBlcgorICAgICwgcHVibGljIFBBTDo6TG9n
Z2VySGVscGVyCiAjZW5kaWYKIHsKIHB1YmxpYzoKQEAgLTUzOCw2ICs1MzgsMTEgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBzdXBwb3J0c1NlZWtpbmcoKSBjb25zdCBvdmVycmlkZTsKIAorI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IFBBTDo6TG9nZ2VyJiBsb2dnZXIoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAqbV9sb2dnZXIuZ2V0KCk7IH0KKyAgICBjb25zdCB2b2lkKiBsb2dJ
ZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2
b2lkKj4obV9sb2dJZGVudGlmaWVyKTsgfQorI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBIVE1M
TWVkaWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIGJvb2wgY3JlYXRl
ZEJ5UGFyc2VyKTsKICAgICB2aXJ0dWFsIH5IVE1MTWVkaWFFbGVtZW50KCk7CkBAIC04OTUsOSAr
OTAwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlZWtUb1BsYXliYWNrUG9zaXRpb25FbmRlZFRp
bWVyRmlyZWQoKTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIGNvbnN0IFBBTDo6
TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiAqbV9sb2dnZXIuZ2V0KCk7IH0K
ICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiSFRN
TE1lZGlhRWxlbWVudCI7IH0KLSAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4obV9sb2dJZGVudGlm
aWVyKTsgfQogICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKIAog
ICAgIGNvbnN0IHZvaWQqIG1lZGlhUGxheWVyTG9nSWRlbnRpZmllcigpIGZpbmFsIHsgcmV0dXJu
IGxvZ0lkZW50aWZpZXIoKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRp
b1RyYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlv
VHJhY2suY3BwCShyZXZpc2lvbiAyMjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0F1ZGlvVHJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NywxMSArNzcsMTQgQEAgY29uc3Qg
QXRvbWljU3RyaW5nJiBBdWRpb1RyYWNrOjpjb21tZW50YQogCiBBdWRpb1RyYWNrOjpBdWRpb1Ry
YWNrKEF1ZGlvVHJhY2tDbGllbnQmIGNsaWVudCwgQXVkaW9UcmFja1ByaXZhdGUmIHRyYWNrUHJp
dmF0ZSkKICAgICA6IE1lZGlhVHJhY2tCYXNlKE1lZGlhVHJhY2tCYXNlOjpBdWRpb1RyYWNrLCB0
cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCksIHRyYWNrUHJpdmF0ZS5sYW5n
dWFnZSgpKQotICAgICwgbV9lbmFibGVkKHRyYWNrUHJpdmF0ZS5lbmFibGVkKCkpCiAgICAgLCBt
X2NsaWVudCgmY2xpZW50KQogICAgICwgbV9wcml2YXRlKHRyYWNrUHJpdmF0ZSkKKyAgICAsIG1f
ZW5hYmxlZCh0cmFja1ByaXZhdGUuZW5hYmxlZCgpKQogewogICAgIG1fcHJpdmF0ZS0+c2V0Q2xp
ZW50KHRoaXMpOworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIG1fcHJpdmF0ZS0+c2V0
TG9nZ2VyKGxvZ2dlcigpLCBsb2dJZGVudGlmaWVyKCkpOworI2VuZGlmCiAgICAgdXBkYXRlS2lu
ZEZyb21Qcml2YXRlKCk7CiB9CiAKQEAgLTk5LDYgKzEwMiw5IEBAIHZvaWQgQXVkaW9UcmFjazo6
c2V0UHJpdmF0ZShBdWRpb1RyYWNrUHIKICAgICBtX3ByaXZhdGUgPSB0cmFja1ByaXZhdGU7CiAg
ICAgbV9wcml2YXRlLT5zZXRFbmFibGVkKG1fZW5hYmxlZCk7CiAgICAgbV9wcml2YXRlLT5zZXRD
bGllbnQodGhpcyk7CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgbV9wcml2YXRlLT5z
ZXRMb2dnZXIobG9nZ2VyKCksIGxvZ0lkZW50aWZpZXIoKSk7CisjZW5kaWYKIAogICAgIHVwZGF0
ZUtpbmRGcm9tUHJpdmF0ZSgpOwogfQpAQCAtMTg3LDYgKzE5MywxNCBAQCB2b2lkIEF1ZGlvVHJh
Y2s6OnVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSgpCiAgICAgfQogfQogCit2b2lkIEF1ZGlvVHJhY2s6
OnNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KQoreworICAgIFRyYWNr
QmFzZTo6c2V0TWVkaWFFbGVtZW50KGVsZW1lbnQpOworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAorICAgIG1fcHJpdmF0ZS0+c2V0TG9nZ2VyKGxvZ2dlcigpLCBsb2dJZGVudGlmaWVyKCkpOwor
I2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaAkocmV2aXNpb24gMjIyMDA3KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1
LDYgKzY1LDcgQEAgcHVibGljOgogICAgIHNpemVfdCBpbmJhbmRUcmFja0luZGV4KCkgY29uc3Q7
CiAKICAgICB2b2lkIHNldFByaXZhdGUoQXVkaW9UcmFja1ByaXZhdGUmKTsKKyAgICB2b2lkIHNl
dE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAg
ICAgQXVkaW9UcmFjayhBdWRpb1RyYWNrQ2xpZW50JiwgQXVkaW9UcmFja1ByaXZhdGUmKTsKQEAg
LTgyLDEwICs4MywxMyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVLaW5kRnJvbVByaXZh
dGUoKTsKIAotICAgIGJvb2wgbV9lbmFibGVkOwotICAgIEF1ZGlvVHJhY2tDbGllbnQqIG1fY2xp
ZW50OworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNz
TmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJBdWRpb1RyYWNrIjsgfQorI2VuZGlmCiAKKyAg
ICBBdWRpb1RyYWNrQ2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKICAgICBSZWY8QXVkaW9U
cmFja1ByaXZhdGU+IG1fcHJpdmF0ZTsKKyAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNlIH07CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0RhdGFDdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
RGF0YUN1ZS5jcHAJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svRGF0YUN1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OCw2ICsxODgsMTggQEAgSlNWYWx1
ZSBEYXRhQ3VlOjp2YWx1ZU9yTnVsbCgpIGNvbnN0CiAgICAgcmV0dXJuIGpzTnVsbCgpOwogfQog
CitTdHJpbmcgRGF0YUN1ZTo6dG9TdHJpbmcoKSBjb25zdAoreworICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKKworICAgIGJ1aWxkZXIuYXBwZW5kKFRleHRUcmFja0N1ZTo6dG9TdHJpbmcoKSk7
CisKKyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgdHlwZSA9ICIpOworICAgIGJ1aWxkZXIu
YXBwZW5kKG1fdHlwZSk7CisKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9EYXRhQ3VlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9EYXRhQ3VlLmgJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svRGF0YUN1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw2ICs4Nyw4IEBAIHB1YmxpYzoKICAg
ICBib29sIGN1ZUNvbnRlbnRzTWF0Y2goY29uc3QgVGV4dFRyYWNrQ3VlJikgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBkb2VzRXh0ZW5kQ3VlKGNvbnN0IFRleHRUcmFja0N1ZSYpIGNvbnN0IG92
ZXJyaWRlOwogCisgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisKIHByaXZh
dGU6CiAgICAgRGF0YUN1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgTWVkaWFUaW1l
JiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIEFycmF5QnVmZmVyJiwgY29uc3QgU3RyaW5n
Jik7CiAgICAgRGF0YUN1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgTWVkaWFUaW1l
JiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIGNvbnN0IHZvaWQqLCB1bnNpZ25lZCk7CkBA
IC0xMDYsNCArMTA4LDE5IEBAIGNvbnN0IERhdGFDdWUqIHRvRGF0YUN1ZShjb25zdCBUZXh0VHJh
Y2sKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2UgUEFMIHsKKwordGVtcGxh
dGU8dHlwZW5hbWUgVHlwZT4KK3N0cnVjdCBMb2dBcmd1bWVudDsKKwordGVtcGxhdGUgPD4KK3N0
cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpEYXRhQ3VlPiB7CisgICAgc3RhdGljIFN0cmluZyB0
b1N0cmluZyhjb25zdCBXZWJDb3JlOjpEYXRhQ3VlJiBjdWUpCisgICAgeworICAgICAgICByZXR1
cm4gY3VlLnRvU3RyaW5nKCk7CisgICAgfQorfTsKKworfQorCiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmNwcAkocmV2
aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmREYXRhVGV4
dFRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkRh
dGFDdWUuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZS5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC02NCw3ICs2Myw3IEBAIHZvaWQgSW5iYW5kRGF0YVRleHRUcmFjazo6YWRk
RGF0YUN1ZShjb24KIAogICAgIGF1dG8gY3VlID0gRGF0YUN1ZTo6Y3JlYXRlKCpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIHN0YXJ0LCBlbmQsIHBsYXRmb3JtVmFsdWUuY29weVJlZigpLCB0eXBl
KTsKICAgICBpZiAoaGFzQ3VlKGN1ZS5wdHIoKSwgVGV4dFRyYWNrQ3VlOjpJZ25vcmVEdXJhdGlv
bikpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiSW5iYW5kRGF0YVRleHRUcmFjazo6YWRkRGF0YUN1
ZSBpZ25vcmluZyBhbHJlYWR5IGFkZGVkIGN1ZTogc3RhcnQ9JXMsIGVuZD0lc1xuIiwgdG9TdHJp
bmcoY3VlLT5zdGFydFRpbWUoKSkudXRmOCgpLmRhdGEoKSwgdG9TdHJpbmcoY3VlLT5lbmRUaW1l
KCkpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiaWdu
b3JpbmcgYWxyZWFkeSBhZGRlZCBjdWU6ICIsIGN1ZS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTczLDYgKzcyLDggQEAgdm9pZCBJbmJhbmREYXRhVGV4dFRyYWNrOjphZGRE
YXRhQ3VlKGNvbgogICAgICAgICBtX2luY29tcGxldGVDdWVNYXAuYWRkKFdURk1vdmUocGxhdGZv
cm1WYWx1ZSksIGN1ZS5jb3B5UmVmKCkpOwogICAgIH0KIAorICAgIElORk9fTE9HKExPR0lERU5U
SUZJRVIsIGN1ZS5nZXQoKSk7CisKICAgICBhZGRDdWUoV1RGTW92ZShjdWUpKTsKIH0KIApAQCAt
OTAsNyArOTEsNyBAQCB2b2lkIEluYmFuZERhdGFUZXh0VHJhY2s6OnVwZGF0ZURhdGFDdWUoCiAg
ICAgZWxzZQogICAgICAgICBtX2luY29tcGxldGVDdWVNYXAucmVtb3ZlKCZwbGF0Zm9ybVZhbHVl
KTsKIAotICAgIExPRyhNZWRpYSwgIkluYmFuZERhdGFUZXh0VHJhY2s6OnVwZGF0ZURhdGFDdWU6
IHdhcyBzdGFydD0lcywgZW5kPSVzLCB3aWxsIGJlIHN0YXJ0PSVzLCBlbmQ9JXNcbiIsIHRvU3Ry
aW5nKGN1ZS0+c3RhcnRUaW1lKCkpLnV0ZjgoKS5kYXRhKCksIHRvU3RyaW5nKGN1ZS0+ZW5kVGlt
ZSgpKS51dGY4KCkuZGF0YSgpLCB0b1N0cmluZyhzdGFydCkudXRmOCgpLmRhdGEoKSwgdG9TdHJp
bmcoZW5kKS51dGY4KCkuZGF0YSgpKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAid2Fz
IHN0YXJ0ID0gIiwgY3VlLT5zdGFydE1lZGlhVGltZSgpLCAiLCBlbmQgPSAiLCBjdWUtPmVuZE1l
ZGlhVGltZSgpLCAiLCB3aWxsIGJlIHN0YXJ0ID0gIiwgc3RhcnQsICIsIGVuZCA9ICIsIGVuZCk7
CiAKICAgICBjdWUtPnNldFN0YXJ0VGltZShzdGFydCk7CiAgICAgY3VlLT5zZXRFbmRUaW1lKGVu
ZCk7CkBAIC0xMDEsNyArMTAyLDcgQEAgdm9pZCBJbmJhbmREYXRhVGV4dFRyYWNrOjp1cGRhdGVE
YXRhQ3VlKAogdm9pZCBJbmJhbmREYXRhVGV4dFRyYWNrOjpyZW1vdmVEYXRhQ3VlKGNvbnN0IE1l
ZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYsIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0
aW9uJiBwbGF0Zm9ybVZhbHVlKQogewogICAgIGlmIChhdXRvIGN1ZSA9IG1faW5jb21wbGV0ZUN1
ZU1hcC50YWtlKCZwbGF0Zm9ybVZhbHVlKSkgewotICAgICAgICBMT0coTWVkaWEsICJJbmJhbmRE
YXRhVGV4dFRyYWNrOjpyZW1vdmVEYXRhQ3VlIHJlbW92aW5nIGN1ZTogc3RhcnQ9JXMsIGVuZD0l
c1xuIiwgdG9TdHJpbmcoY3VlLT5zdGFydFRpbWUoKSkudXRmOCgpLmRhdGEoKSwgdG9TdHJpbmco
Y3VlLT5lbmRUaW1lKCkpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBJTkZPX0xPRyhMT0dJREVO
VElGSUVSLCAicmVtb3Zpbmc6ICIsICpjdWUpOwogICAgICAgICBJbmJhbmRUZXh0VHJhY2s6OnJl
bW92ZUN1ZSgqY3VlKTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0luYmFuZERhdGFUZXh0VHJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suaAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDYgKzQ0LDEwIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGFkZERhdGFDdWUoY29uc3Qg
TWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIGNvbnN0IHZvaWQqLCB1bnNp
Z25lZCkgZmluYWw7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFy
KiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiRGF0YUN1ZSI7IH0KKyNlbmRp
ZgorCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCiAgICAgdm9pZCBhZGREYXRhQ3VlKGNvbnN0
IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBSZWY8U2VyaWFsaXplZFBs
YXRmb3JtUmVwcmVzZW50YXRpb24+JiYsIGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQg
dXBkYXRlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVu
ZCwgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24mKSBmaW5hbDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNw
cAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRH
ZW5lcmljVGV4dFRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDExICsxMjcsMTEgQEAg
dm9pZCBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjphZGRHZW5lcmljQwogICAgIGF1dG8gY3VlID0g
VGV4dFRyYWNrQ3VlR2VuZXJpYzo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGN1
ZURhdGEuc3RhcnRUaW1lKCksIGN1ZURhdGEuZW5kVGltZSgpLCBjdWVEYXRhLmNvbnRlbnQoKSk7
CiAgICAgdXBkYXRlQ3VlRnJvbUN1ZURhdGEoY3VlLmdldCgpLCBjdWVEYXRhKTsKICAgICBpZiAo
aGFzQ3VlKGN1ZS5wdHIoKSwgVGV4dFRyYWNrQ3VlOjpJZ25vcmVEdXJhdGlvbikpIHsKLSAgICAg
ICAgTE9HKE1lZGlhLCAiSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6YWRkR2VuZXJpY0N1ZSBpZ25v
cmluZyBhbHJlYWR5IGFkZGVkIGN1ZTogc3RhcnQ9JXMsIGVuZD0lcywgY29udGVudD1cIiVzXCJc
biIsIHRvU3RyaW5nKGN1ZURhdGEuc3RhcnRUaW1lKCkpLnV0ZjgoKS5kYXRhKCksIHRvU3RyaW5n
KGN1ZURhdGEuZW5kVGltZSgpKS51dGY4KCkuZGF0YSgpLCBjdWVEYXRhLmNvbnRlbnQoKS51dGY4
KCkuZGF0YSgpKTsKKyAgICAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsICJpZ25vcmluZyBh
bHJlYWR5IGFkZGVkIGN1ZTogIiwgY3VlLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIExPRyhNZWRpYSwgIkluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OmFkZEdlbmVyaWNDdWUg
YWRkZWQgY3VlOiBzdGFydD0lLjJmLCBlbmQ9JS4yZiwgY29udGVudD1cIiVzXCJcbiIsIGN1ZURh
dGEuc3RhcnRUaW1lKCkudG9Eb3VibGUoKSwgY3VlRGF0YS5lbmRUaW1lKCkudG9Eb3VibGUoKSwg
Y3VlRGF0YS5jb250ZW50KCkudXRmOCgpLmRhdGEoKSk7CisgICAgREVCVUdfTE9HKExPR0lERU5U
SUZJRVIsICJhZGRlZCBjdWU6ICIsIGN1ZS5nZXQoKSk7CiAKICAgICBpZiAoY3VlRGF0YS5zdGF0
dXMoKSAhPSBHZW5lcmljQ3VlRGF0YTo6Q29tcGxldGUpCiAgICAgICAgIG1fY3VlTWFwLmFkZChj
dWVEYXRhLCBjdWUpOwpAQCAtMTU1LDExICsxNTUsMTEgQEAgdm9pZCBJbmJhbmRHZW5lcmljVGV4
dFRyYWNrOjpyZW1vdmVHZW5lcgogewogICAgIGF1dG8qIGN1ZSA9IG1fY3VlTWFwLmZpbmQoY3Vl
RGF0YSk7CiAgICAgaWYgKGN1ZSkgewotICAgICAgICBMT0coTWVkaWEsICJJbmJhbmRHZW5lcmlj
VGV4dFRyYWNrOjpyZW1vdmVHZW5lcmljQ3VlIHJlbW92aW5nIGN1ZTogc3RhcnQ9JXMsIGVuZD0l
cywgY29udGVudD1cIiVzXCJcbiIsICB0b1N0cmluZyhjdWVEYXRhLnN0YXJ0VGltZSgpKS51dGY4
KCkuZGF0YSgpLCB0b1N0cmluZyhjdWVEYXRhLmVuZFRpbWUoKSkudXRmOCgpLmRhdGEoKSwgY3Vl
RGF0YS5jb250ZW50KCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIERFQlVHX0xPRyhMT0dJREVO
VElGSUVSLCAqY3VlKTsKICAgICAgICAgcmVtb3ZlQ3VlKCpjdWUpOwotICAgIH0gZWxzZSB7Ci0g
ICAgICAgIExPRyhNZWRpYSwgIkluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OnJlbW92ZUdlbmVyaWND
dWUgVU5BQkxFIHRvIGZpbmQgY3VlOiBzdGFydD0lLjJmLCBlbmQ9JS4yZiwgY29udGVudD1cIiVz
XCJcbiIsIGN1ZURhdGEuc3RhcnRUaW1lKCkudG9Eb3VibGUoKSwgY3VlRGF0YS5lbmRUaW1lKCku
dG9Eb3VibGUoKSwgY3VlRGF0YS5jb250ZW50KCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgfQorICAg
IH0gZWxzZQorICAgICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgIlVOQUJMRSB0byBmaW5k
IGN1ZTogIiwgKmN1ZSk7CisKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gSW5iYW5kR2VuZXJpY1Rl
eHRUcmFjazo6cmVtb3ZlQ3VlKFRleHRUcmFja0N1ZSYgY3VlKQpAQCAtMTk2LDkgKzE5NiwxMiBA
QCB2b2lkIEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6Om5ld0N1ZXNQYXJzCiAgICAgICAgIGF1dG8g
dnR0Q3VlID0gVlRUQ3VlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKmN1ZURh
dGEpOwogCiAgICAgICAgIGlmIChoYXNDdWUodnR0Q3VlLnB0cigpLCBUZXh0VHJhY2tDdWU6Okln
bm9yZUR1cmF0aW9uKSkgewotICAgICAgICAgICAgTE9HKE1lZGlhLCAiSW5iYW5kR2VuZXJpY1Rl
eHRUcmFjazo6bmV3Q3Vlc1BhcnNlZCBpZ25vcmluZyBhbHJlYWR5IGFkZGVkIGN1ZTogc3RhcnQ9
JS4yZiwgZW5kPSUuMmYsIGNvbnRlbnQ9XCIlc1wiXG4iLCB2dHRDdWUtPnN0YXJ0VGltZSgpLCB2
dHRDdWUtPmVuZFRpbWUoKSwgdnR0Q3VlLT50ZXh0KCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
ICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgImlnbm9yaW5nIGFscmVhZHkgYWRkZWQgY3Vl
OiAiLCB2dHRDdWUuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisKKyAg
ICAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsIHZ0dEN1ZS5nZXQoKSk7CisKICAgICAgICAg
YWRkQ3VlKFdURk1vdmUodnR0Q3VlKSk7CiAgICAgfQogfQpAQCAtMjE2LDcgKzIxOSw3IEBAIHZv
aWQgSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6bmV3UmVnaW9uc1AKIAogdm9pZCBJbmJhbmRHZW5l
cmljVGV4dFRyYWNrOjpmaWxlRmFpbGVkVG9QYXJzZSgpCiB7Ci0gICAgTE9HKE1lZGlhLCAiRXJy
b3IgcGFyc2luZyBXZWJWVFQgc3RyZWFtLiIpOworICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVS
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmgJKHJldmlzaW9uIDIyMjAw
NykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5o
CSh3b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgbmV3
UmVnaW9uc1BhcnNlZCgpIGZpbmFsOwogICAgIHZvaWQgZmlsZUZhaWxlZFRvUGFyc2UoKSBmaW5h
bDsKIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNz
TmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJJbmJhbmRHZW5lcmljVGV4dFRyYWNrIjsgfQor
I2VuZGlmCisKICAgICBHZW5lcmljVGV4dFRyYWNrQ3VlTWFwIG1fY3VlTWFwOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJWVFRQYXJzZXI+IG1fd2ViVlRUUGFyc2VyOwogfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAJKHJldmlzaW9uIDIy
MjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsOSBAQCBJbmJhbmRUZXh0VHJhY2s6OkluYmFuZFRl
eHRUcmFjayhTY3JpcHRFCiAgICAgOiBUZXh0VHJhY2soJmNvbnRleHQsICZjbGllbnQsIGVtcHR5
QXRvbSgpLCB0cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCksIHRyYWNrUHJp
dmF0ZS5sYW5ndWFnZSgpLCBJbkJhbmQpCiAgICAgLCBtX3ByaXZhdGUodHJhY2tQcml2YXRlKQog
eworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIG1fcHJpdmF0ZS0+c2V0TG9nZ2VyKGxv
Z2dlcigpLCBsb2dJZGVudGlmaWVyKCkpOworI2VuZGlmCiAgICAgbV9wcml2YXRlLT5zZXRDbGll
bnQodGhpcyk7CiAgICAgdXBkYXRlS2luZEZyb21Qcml2YXRlKCk7CiB9CkBAIC0xOTEsNiArMTk0
LDE1IEBAIE1lZGlhVGltZSBJbmJhbmRUZXh0VHJhY2s6OnN0YXJ0VGltZVZhcmkKICAgICByZXR1
cm4gbV9wcml2YXRlLT5zdGFydFRpbWVWYXJpYW5jZSgpOwogfQogCit2b2lkIEluYmFuZFRleHRU
cmFjazo6c2V0TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAg
VHJhY2tCYXNlOjpzZXRNZWRpYUVsZW1lbnQoZWxlbWVudCk7CisjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECisgICAgbV9wcml2YXRlLT5zZXRMb2dnZXIobG9nZ2VyKCksIGxvZ0lkZW50aWZpZXIo
KSk7CisjZW5kaWYKK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oCShyZXZpc2lv
biAyMjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5o
CSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICBBdG9taWNTdHJp
bmcgaW5CYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgdm9pZCBzZXRQcml2YXRlKEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKKyAgICB2b2lkIHNl
dE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kikgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoK
ICAgICBJbmJhbmRUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFRleHRUcmFja0Ns
aWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAJKHJldmlzaW9uIDIy
MjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsOSArNzQsMTIgQEAgdm9pZCBJbmJhbmRXZWJWVFRU
ZXh0VHJhY2s6Om5ld0N1ZXNQYXJzZQogICAgIGZvciAoYXV0byYgY3VlRGF0YSA6IGN1ZXMpIHsK
ICAgICAgICAgYXV0byB2dHRDdWUgPSBWVFRDdWU6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCAqY3VlRGF0YSk7CiAgICAgICAgIGlmIChoYXNDdWUodnR0Q3VlLnB0cigpLCBUZXh0
VHJhY2tDdWU6Oklnbm9yZUR1cmF0aW9uKSkgewotICAgICAgICAgICAgTE9HKE1lZGlhLCAiSW5i
YW5kV2ViVlRUVGV4dFRyYWNrOjpuZXdDdWVzUGFyc2VkIGlnbm9yaW5nIGFscmVhZHkgYWRkZWQg
Y3VlOiBzdGFydD0lLjJmLCBlbmQ9JS4yZiwgY29udGVudD1cIiVzXCJcbiIsIHZ0dEN1ZS0+c3Rh
cnRUaW1lKCksIHZ0dEN1ZS0+ZW5kVGltZSgpLCB2dHRDdWUtPnRleHQoKS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAiaWdub3JpbmcgYWxyZWFk
eSBhZGRlZCBjdWU6ICIsIHZ0dEN1ZS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KKworICAgICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgdnR0Q3VlLmdldCgpKTsK
KwogICAgICAgICBhZGRDdWUoV1RGTW92ZSh2dHRDdWUpKTsKICAgICB9CiB9CkBAIC05Myw3ICs5
Niw3IEBAIHZvaWQgSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpuZXdSZWdpb25zUGEKIAogdm9pZCBJ
bmJhbmRXZWJWVFRUZXh0VHJhY2s6OmZpbGVGYWlsZWRUb1BhcnNlKCkKIHsKLSAgICBMT0coTWVk
aWEsICJFcnJvciBwYXJzaW5nIFdlYlZUVCBzdHJlYW0uIik7CisgICAgRVJST1JfTE9HKExPR0lE
RU5USUZJRVIsICJFcnJvciBwYXJzaW5nIFdlYlZUVCBzdHJlYW0uIik7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2Vi
VlRUVGV4dFRyYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9J
bmJhbmRXZWJWVFRUZXh0VHJhY2suaAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suaAkod29ya2luZyBjb3B5KQpAQCAt
NDksNiArNDksMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIG5ld1JlZ2lvbnNQYXJzZWQoKSBmaW5h
bDsKICAgICB2b2lkIGZpbGVGYWlsZWRUb1BhcnNlKCkgZmluYWw7CiAKKyNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiAiSW5iYW5kV2ViVlRUVGV4dFRyYWNrIjsgfQorI2VuZGlmCisKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViVlRUUGFyc2VyPiBtX3dlYlZUVFBhcnNlcjsKIH07CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwCShyZXZpc2lv
biAyMjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiSFRNTFRy
YWNrRWxlbWVudC5oIgogI2luY2x1ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIKKyNpbmNsdWRlICJW
VFRDdWUuaCIKICNpbmNsdWRlICJWVFRSZWdpb25MaXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTk3LDYgKzk4LDcgQEAgdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6bmV3Q3Vlc0F2YWls
YWJsZQogCiAgICAgZm9yIChhdXRvJiBuZXdDdWUgOiBuZXdDdWVzKSB7CiAgICAgICAgIG5ld0N1
ZS0+c2V0VHJhY2sodGhpcyk7CisgICAgICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAqdG9W
VFRDdWUobmV3Q3VlLmdldCgpKSk7CiAgICAgICAgIG1fY3Vlcy0+YWRkKG5ld0N1ZS5yZWxlYXNl
Tm9uTnVsbCgpKTsKICAgICB9CiAKQEAgLTExMSw2ICsxMTMsOCBAQCB2b2lkIExvYWRhYmxlVGV4
dFRyYWNrOjpjdWVMb2FkaW5nQ29tcGxlCiAgICAgaWYgKCFtX3RyYWNrRWxlbWVudCkKICAgICAg
ICAgcmV0dXJuOwogCisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CisKICAgICBtX3RyYWNr
RWxlbWVudC0+ZGlkQ29tcGxldGVMb2FkKGxvYWRpbmdGYWlsZWQgPyBIVE1MVHJhY2tFbGVtZW50
OjpGYWlsdXJlIDogSFRNTFRyYWNrRWxlbWVudDo6U3VjY2Vzcyk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmgJKHJldmlzaW9uIDIy
MjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaAko
d29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsMTAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbG9h
ZFRpbWVyRmlyZWQoKTsKIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IGNo
YXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJMb2FkYWJsZVRleHRU
cmFjayI7IH0KKyNlbmRpZgorCiAgICAgSFRNTFRyYWNrRWxlbWVudCogbV90cmFja0VsZW1lbnQ7
CiAgICAgVGltZXIgbV9sb2FkVGltZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRleHRUcmFja0xv
YWRlcj4gbV9sb2FkZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2su
Y3BwCShyZXZpc2lvbiAyMjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKIAogI2lmIEVOQUJMRShW
SURFT19UUkFDSykKIAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIK
ICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiU291cmNlQnVmZmVyLmgi
CkBAIC0zMTYsNyArMzE3LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gVGV4dFRyYWNrOjphZGRDdWUo
UmVmPAogICAgIC8vIDIuIEFkZCBjdWUgdG8gdGhlIG1ldGhvZCdzIFRleHRUcmFjayBvYmplY3Qn
cyB0ZXh0IHRyYWNrJ3MgdGV4dCB0cmFjayBsaXN0IG9mIGN1ZXMuCiAgICAgY3VlLT5zZXRUcmFj
ayh0aGlzKTsKICAgICBlbnN1cmVUZXh0VHJhY2tDdWVMaXN0KCkuYWRkKGN1ZS5jb3B5UmVmKCkp
OwotICAgIAorCiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+dGV4dFRyYWNr
QWRkQ3VlKCp0aGlzLCBjdWUpOwogCkBAIC0zMzYsNiArMzM3LDggQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gVGV4dFRyYWNrOjpyZW1vdmVDdWUoVAogICAgIGlmICghbV9jdWVzKQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKIAorICAgIERFQlVHX0xPRyhMT0dJ
REVOVElGSUVSLCBjdWUpOworCiAgICAgLy8gMi4gUmVtb3ZlIGN1ZSBmcm9tIHRoZSBtZXRob2Qn
cyBUZXh0VHJhY2sgb2JqZWN0J3MgdGV4dCB0cmFjaydzIHRleHQgdHJhY2sgbGlzdCBvZiBjdWVz
LgogICAgIG1fY3Vlcy0+cmVtb3ZlKGN1ZSk7CiAgICAgY3VlLnNldElzQWN0aXZlKGZhbHNlKTsK
QEAgLTU0Miw3ICs1NDUsNiBAQCBib29sIFRleHRUcmFjazo6Y29udGFpbnNPbmx5Rm9yY2VkU3Vi
dGl0CiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotCiB2b2lkIFRleHRUcmFjazo6c2V0
TGFuZ3VhZ2UoY29uc3QgQXRvbWljU3RyaW5nJiBsYW5ndWFnZSkKIHsKICAgICAvLyAxMS4xIGxh
bmd1YWdlLCBvbiBzZXR0aW5nOgpAQCAtNTY0LDcgKzU2Niw2IEBAIHZvaWQgVGV4dFRyYWNrOjpz
ZXRMYW5ndWFnZShjb25zdCBBdG9taWMKICAgICBpZiAobWVkaWFFbGVtZW50KCkpCiAgICAgICAg
IG1lZGlhRWxlbWVudCgpLT50ZXh0VHJhY2tzKCkuc2NoZWR1bGVDaGFuZ2VFdmVudCgpOwogfQot
CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RleHRUcmFjay5oCShyZXZpc2lvbiAyMjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNiArMTQ3LDEwIEBA
IHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFRleHRUcmFja0NsaWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYga2luZCwgY29uc3QgQXRv
bWljU3RyaW5nJiBpZCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbWljU3Ry
aW5nJiBsYW5ndWFnZSwgVGV4dFRyYWNrVHlwZSk7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAiVGV4dFRyYWNrIjsgfQorI2VuZGlmCisKICAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4g
bV9jdWVzOwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tDdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrQ3VlLmNwcAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2tDdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYsNiArMjE2LDM1IEBA
IGJvb2wgVGV4dFRyYWNrQ3VlOjpkb2VzRXh0ZW5kQ3VlKGNvbnN0IFQKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAorU3RyaW5nIFRleHRUcmFja0N1ZTo6dG9TdHJpbmcoKSBjb25zdAoreworICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKKworICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgic3RhcnQg
PSAiKTsKKyAgICBidWlsZGVyLmFwcGVuZChtX3N0YXJ0VGltZS50b1N0cmluZygpKTsKKworICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCBlbmQgPSAiKTsKKyAgICBidWlsZGVyLmFwcGVuZCht
X2VuZFRpbWUudG9TdHJpbmcoKSk7CisKKyAgICBjb25zdCBjaGFyKiB0eXBlID0gIkdlbmVyaWMi
OworICAgIHN3aXRjaCAoY3VlVHlwZSgpKSB7CisgICAgY2FzZSBUZXh0VHJhY2tDdWU6OkdlbmVy
aWM6CisgICAgICAgIHR5cGUgPSAiR2VuZXJpYyI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
VGV4dFRyYWNrQ3VlOjpXZWJWVFQ6CisgICAgICAgIHR5cGUgPSAiV2ViVlRUIjsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBUZXh0VHJhY2tDdWU6OkRhdGE6CisgICAgICAgIHR5cGUgPSAiRGF0
YSI7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
LCB0eXBlID0gIik7CisgICAgYnVpbGRlci5hcHBlbmQodHlwZSk7CisKKyAgICByZXR1cm4gYnVp
bGRlci50b1N0cmluZygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCShyZXZpc2lvbiAy
MjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NCw2ICs4NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxDaGFuZ2Uo
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlKCk7CiAKKyAgICB2aXJ0dWFsIFN0cmluZyB0
b1N0cmluZygpIGNvbnN0OworCiAgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOwogICAgIHVzaW5n
IFJlZkNvdW50ZWQ6OmRlcmVmOwogCkBAIC0xMTksNCArMTIxLDIwIEBAIHByaXZhdGU6CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFBBTCB7CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFR5cGU+CitzdHJ1Y3QgTG9nQXJndW1lbnQ7CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgTG9n
QXJndW1lbnQ8V2ViQ29yZTo6VGV4dFRyYWNrQ3VlPiB7CisgICAgc3RhdGljIFN0cmluZyB0b1N0
cmluZyhjb25zdCBXZWJDb3JlOjpUZXh0VHJhY2tDdWUmIGN1ZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBjdWUudG9TdHJpbmcoKTsKKyAgICB9Cit9OworCisKK30KKwogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAJ
KHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
Q3VlR2VuZXJpYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw4ICsxODksNiBAQCB2b2lkIFRl
eHRUcmFja0N1ZUdlbmVyaWM6OnNldEZvbnRTaXplKGluCiAgICAgaWYgKGZvbnRTaXplTXVsdGlw
bGllcigpKQogICAgICAgICBzaXplICo9IGZvbnRTaXplTXVsdGlwbGllcigpIC8gMTAwOwogICAg
IGRpc3BsYXlUcmVlSW50ZXJuYWwoKS5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
Rm9udFNpemUsIGxyb3VuZChzaXplKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7Ci0KLSAg
ICBMT0coTWVkaWEsICJUZXh0VHJhY2tDdWVHZW5lcmljOjpzZXRGb250U2l6ZSAtIHNldHRpbmcg
Y3VlIGZvbnQgc2l6ZSB0byAlbGkiLCBscm91bmQoc2l6ZSkpOwogfQogCiBib29sIFRleHRUcmFj
a0N1ZUdlbmVyaWM6OmN1ZUNvbnRlbnRzTWF0Y2goY29uc3QgVGV4dFRyYWNrQ3VlJiBjdWUpIGNv
bnN0CkBAIC0yNjcsNyArMjY1LDQ2IEBAIGJvb2wgVGV4dFRyYWNrQ3VlR2VuZXJpYzo6aXNQb3Np
dGlvbmVkQWIKICAgICAKICAgICByZXR1cm4gVlRUQ3VlOjppc09yZGVyZWRCZWZvcmUodGhhdCk7
CiB9Ci0gICAgCisKK1N0cmluZyBUZXh0VHJhY2tDdWVHZW5lcmljOjp0b1N0cmluZygpIGNvbnN0
Cit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworCisgICAgYnVpbGRlci5hcHBlbmQoVlRU
Q3VlOjp0b1N0cmluZygpKTsKKworICAgIGlmIChtX2ZvcmVncm91bmRDb2xvci5pc1ZhbGlkKCkp
IHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIGZvcmVncm91bmQgY29sb3IgPSAi
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobV9mb3JlZ3JvdW5kQ29sb3Iuc2VyaWFsaXplZCgp
KTsKKyAgICB9CisKKyAgICBpZiAobV9iYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKSB7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCBiYWNrZ3JvdW5kIGNvbG9yID0gIik7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKG1fYmFja2dyb3VuZENvbG9yLnNlcmlhbGl6ZWQoKSk7CisgICAg
fQorCisgICAgaWYgKG1faGlnaGxpZ2h0Q29sb3IuaXNWYWxpZCgpKSB7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiLCBoaWxpZ2h0IGNvbG9yID0gIik7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKG1faGlnaGxpZ2h0Q29sb3Iuc2VyaWFsaXplZCgpKTsKKyAgICB9CisKKyAgICBpZiAo
bV9iYXNlRm9udFNpemVSZWxhdGl2ZVRvVmlkZW9IZWlnaHQpIHsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIsIGJhc2UgZm9udCBzaXplIHJlbGF0aXZlIHRvIHZpZGVvIGhlaWdodCA9
ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX2Jhc2VGb250U2l6ZVJlbGF0aXZl
VG9WaWRlb0hlaWdodCk7CisgICAgfQorCisgICAgaWYgKG1fZm9udFNpemVNdWx0aXBsaWVyKSB7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCBmb250IHNpemUgbXVsdGlwbGllciA9
ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX2ZvbnRTaXplTXVsdGlwbGllcik7
CisgICAgfQorCisgICAgaWYgKCFtX2ZvbnROYW1lLmlzRW1wdHkoKSkgeworICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIiwgZm9udCA9ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCht
X2ZvbnROYW1lKTsKKyAgICB9CisKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmgJKHJldmlzaW9uIDIyMjAwNykK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Nyw2ICs2Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Rm9udFNp
emUoaW50LCBjb25zdCBJbnRTaXplJiwgYm9vbCBpbXBvcnRhbnQpIGZpbmFsOwogCisgICAgU3Ry
aW5nIHRvU3RyaW5nKCkgY29uc3QgZmluYWw7CisKIHByaXZhdGU6CiAgICAgVGV4dFRyYWNrQ3Vl
R2VuZXJpYyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwg
Y29uc3QgTWVkaWFUaW1lJiBlbmQsIGNvbnN0IFN0cmluZyYpOwogICAgIApAQCAtOTIsNCArOTQs
MTggQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2UgUEFM
IHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KK3N0cnVjdCBMb2dBcmd1bWVudDsKKwordGVt
cGxhdGUgPD4KK3N0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpUZXh0VHJhY2tDdWVHZW5lcmlj
PiB7CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBXZWJDb3JlOjpUZXh0VHJhY2tD
dWVHZW5lcmljJiBjdWUpCisgICAgeworICAgICAgICByZXR1cm4gY3VlLnRvU3RyaW5nKCk7Cisg
ICAgfQorfTsKKworfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Ry
YWNrQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFj
a0Jhc2UuY3BwCShyZXZpc2lvbiAyMjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RyYWNrQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJUcmFja0Jhc2UuaCIKIAorI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CiAKQEAgLTM3LDYgKzM4LDIxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Rh
dGljIGludCBzX3VuaXF1ZUlkID0gMDsKIAorICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyBz
dGF0aWMgY29uc3Qgdm9pZCogbmV4dExvZ0lkZW50aWZpZXIoKQorIHsKKyAgICAgc3RhdGljIHVp
bnQ2NF90IGxvZ0lkZW50aWZpZXIgPSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOwor
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oKytsb2dJZGVudGlmaWVy
KTsKKyB9CisgCisgc3RhdGljIFJlZlB0cjxQQUw6OkxvZ2dlcj4mIG51bGxMb2dnZXIoKQorIHsK
KyAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxQQUw6OkxvZ2dlcj4+IGxvZ2dlcjsK
KyAgICAgcmV0dXJuIGxvZ2dlcjsKKyB9CisgI2VuZGlmCisgCisKIFRyYWNrQmFzZTo6VHJhY2tC
YXNlKFR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgY29uc3QgQXRvbWljU3RyaW5n
JiBsYWJlbCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYW5ndWFnZSkKICAgICA6IG1fdW5pcXVlSWQo
KytzX3VuaXF1ZUlkKQogICAgICwgbV9pZChpZCkKQEAgLTQ2LDEwICs2MiwxNiBAQCBUcmFja0Jh
c2U6OlRyYWNrQmFzZShUeXBlIHR5cGUsIGNvbnN0IEF0CiB7CiAgICAgQVNTRVJUKHR5cGUgIT0g
QmFzZVRyYWNrKTsKICAgICBtX3R5cGUgPSB0eXBlOwotfQogCi1UcmFja0Jhc2U6On5UcmFja0Jh
c2UoKQoteworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGlmICghbnVsbExvZ2dlcigp
LmdldCgpKSB7CisgICAgICAgIG51bGxMb2dnZXIoKSA9IFBBTDo6TG9nZ2VyOjpjcmVhdGUodGhp
cyk7CisgICAgICAgIG51bGxMb2dnZXIoKS0+c2V0RW5hYmxlZCh0aGlzLCBmYWxzZSk7CisgICAg
fQorCisgICAgbV9sb2dnZXIgPSBudWxsTG9nZ2VyKCkuZ2V0KCk7CisgICAgbV9sb2dJZGVudGlm
aWVyID0gbmV4dExvZ0lkZW50aWZpZXIoKTsKKyNlbmRpZgogfQogCiBFbGVtZW50KiBUcmFja0Jh
c2U6OmVsZW1lbnQoKQpAQCAtNTcsNiArNzksMTggQEAgRWxlbWVudCogVHJhY2tCYXNlOjplbGVt
ZW50KCkKICAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQ7CiB9CiAKK3ZvaWQgVHJhY2tCYXNlOjpz
ZXRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBtX21lZGlh
RWxlbWVudCA9IGVsZW1lbnQ7CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBpZiAo
ZWxlbWVudCkgeworICAgICAgICBtX2xvZ2dlciA9ICZlbGVtZW50LT5sb2dnZXIoKTsKKyAgICAg
ICAgbV9sb2dJZGVudGlmaWVyID0gZWxlbWVudC0+bG9nSWRlbnRpZmllcigpOworICAgIH0KKyNl
bmRpZgorfQorCiAvLyBTZWU6IGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9iY3A0NyNzZWN0
aW9uLTIuMQogc3RhdGljIGJvb2wgaXNWYWxpZEJDUDQ3TGFuZ3VhZ2VUYWcoY29uc3QgU3RyaW5n
JiBsYW5ndWFnZVRhZykKIHsKQEAgLTEzNCw2ICsxNjgsMTMgQEAgQXRvbWljU3RyaW5nIFRyYWNr
QmFzZTo6dmFsaWRCQ1A0N0xhbmd1YQogICAgIHJldHVybiBtX3ZhbGlkQkNQNDdMYW5ndWFnZTsK
IH0KIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorV1RGTG9nQ2hhbm5lbCYgVHJhY2tCYXNl
Ojpsb2dDaGFubmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTG9nTWVkaWE7Cit9CisjZW5kaWYK
KwogTWVkaWFUcmFja0Jhc2U6Ok1lZGlhVHJhY2tCYXNlKFR5cGUgdHlwZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBpZCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbWljU3RyaW5n
JiBsYW5ndWFnZSkKICAgICA6IFRyYWNrQmFzZSh0eXBlLCBpZCwgbGFiZWwsIGxhbmd1YWdlKQog
ewpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oCShyZXZpc2lvbiAyMjIw
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw2ICsyNyw4IEBACiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAKKyNpbmNs
dWRlIDxwYWwvTG9nZ2VyLmg+CisjaW5jbHVkZSA8cGFsL0xvZ2dlckhlbHBlci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0z
NSwxNCArMzcsMTkgQEAgY2xhc3MgRWxlbWVudDsKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBj
bGFzcyBTb3VyY2VCdWZmZXI7CiAKLWNsYXNzIFRyYWNrQmFzZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFRyYWNrQmFzZT4geworY2xhc3MgVHJhY2tCYXNlCisgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxU
cmFja0Jhc2U+CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBwcml2YXRlIFBBTDo6
TG9nZ2VySGVscGVyCisjZW5kaWYKK3sKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5UcmFja0Jhc2Uo
KTsKKyAgICB2aXJ0dWFsIH5UcmFja0Jhc2UoKSA9IGRlZmF1bHQ7CiAKICAgICBlbnVtIFR5cGUg
eyBCYXNlVHJhY2ssIFRleHRUcmFjaywgQXVkaW9UcmFjaywgVmlkZW9UcmFjayB9OwogICAgIFR5
cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCi0gICAgdm9pZCBzZXRNZWRpYUVs
ZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkgeyBtX21lZGlhRWxlbWVudCA9IGVsZW1l
bnQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQq
KTsKICAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQoKSB7IHJldHVybiBtX21lZGlh
RWxlbWVudDsgfQogICAgIHZpcnR1YWwgRWxlbWVudCogZWxlbWVudCgpOwogCkBAIC02Nyw2ICs3
NCwxMiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIGNvbnN0ID0gMDsK
IAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IFBBTDo6TG9nZ2VyJiBsb2dn
ZXIoKSBjb25zdCBmaW5hbCB7IEFTU0VSVChtX2xvZ2dlcik7IHJldHVybiAqbV9sb2dnZXIuZ2V0
KCk7IH0KKyAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9sb2dJZGVudGlmaWVyOyB9CisgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNv
bnN0IGZpbmFsOworI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBUcmFja0Jhc2UoVHlwZSwgY29u
c3QgQXRvbWljU3RyaW5nJiBpZCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRv
bWljU3RyaW5nJiBsYW5ndWFnZSk7CiAKQEAgLTgzLDYgKzk2LDEwIEBAIHByaXZhdGU6CiAgICAg
QXRvbWljU3RyaW5nIG1fbGFiZWw7CiAgICAgQXRvbWljU3RyaW5nIG1fbGFuZ3VhZ2U7CiAgICAg
QXRvbWljU3RyaW5nIG1fdmFsaWRCQ1A0N0xhbmd1YWdlOworI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAorICAgIFJlZlB0cjxjb25zdCBQQUw6OkxvZ2dlcj4gbV9sb2dnZXI7CisgICAgY29uc3Qg
dm9pZCogbV9sb2dJZGVudGlmaWVyOworI2VuZGlmCiB9OwogCiBjbGFzcyBNZWRpYVRyYWNrQmFz
ZSA6IHB1YmxpYyBUcmFja0Jhc2UgewpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9W
VFRDdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3Vl
LmNwcAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRD
dWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTU2LDggKzExNTYsNiBAQCB2b2lkIFZUVEN1ZTo6
c2V0Rm9udFNpemUoaW50IGZvbnRTaXplLCBjCiB7CiAgICAgaWYgKCFoYXNEaXNwbGF5VHJlZSgp
IHx8ICFmb250U2l6ZSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIExPRyhNZWRpYSwgIlRl
eHRUcmFja0N1ZTo6c2V0Rm9udFNpemUgLSBzZXR0aW5nIGN1ZSBmb250IHNpemUgdG8gJWkiLCBm
b250U2l6ZSk7CiAKICAgICBtX2Rpc3BsYXlUcmVlU2hvdWxkQ2hhbmdlID0gdHJ1ZTsKICAgICBk
aXNwbGF5VHJlZUludGVybmFsKCkuc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZv
bnRTaXplLCBmb250U2l6ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCwgaW1wb3J0YW50KTsK
QEAgLTExNzQsNiArMTE3MiwxOCBAQCBjb25zdCBWVFRDdWUqIHRvVlRUQ3VlKGNvbnN0IFRleHRU
cmFja0N1CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFZUVEN1ZSo+KGN1ZSk7CiB9CiAK
K1N0cmluZyBWVFRDdWU6OnRvU3RyaW5nKCkgY29uc3QKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7CisKKyAgICBidWlsZGVyLmFwcGVuZChUZXh0VHJhY2tDdWU6OnRvU3RyaW5nKCkpOwor
CisgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIGNvbnRlbnQgPSAiKTsKKyAgICBidWlsZGVy
LmFwcGVuZCh0ZXh0KCkpOworCisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVlRUQ3VlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WVFRDdWUuaAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WVFRDdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2Nyw4IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgZGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAKKyAgICBTdHJpbmcgdG9TdHJpbmcoKSBj
b25zdCBvdmVycmlkZTsKKwogcHJvdGVjdGVkOgogICAgIFZUVEN1ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIGNv
bnN0IFN0cmluZyYgY29udGVudCk7CiAgICAgVlRUQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBjb25zdCBXZWJWVFRDdWVEYXRhJik7CkBAIC0yMjcsNCArMjI5LDE5IEBAIGNvbnN0IFZUVEN1
ZSogdG9WVFRDdWUoY29uc3QgVGV4dFRyYWNrQ3UKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CituYW1lc3BhY2UgUEFMIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KK3N0cnVjdCBMb2dB
cmd1bWVudDsKKwordGVtcGxhdGUgPD4KK3N0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpWVFRD
dWU+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OlZUVEN1ZSYg
Y3VlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGN1ZS50b1N0cmluZygpOworICAgIH0KK307CisK
K30KKwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2su
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5j
cHAJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9U
cmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDEwICs4MiwxMyBAQCBjb25zdCBBdG9taWNT
dHJpbmcmIFZpZGVvVHJhY2s6OmNvbW1lbnRhCiAKIFZpZGVvVHJhY2s6OlZpZGVvVHJhY2soVmlk
ZW9UcmFja0NsaWVudCYgY2xpZW50LCBWaWRlb1RyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQog
ICAgIDogTWVkaWFUcmFja0Jhc2UoTWVkaWFUcmFja0Jhc2U6OlZpZGVvVHJhY2ssIHRyYWNrUHJp
dmF0ZS5pZCgpLCB0cmFja1ByaXZhdGUubGFiZWwoKSwgdHJhY2tQcml2YXRlLmxhbmd1YWdlKCkp
Ci0gICAgLCBtX3NlbGVjdGVkKHRyYWNrUHJpdmF0ZS5zZWxlY3RlZCgpKQogICAgICwgbV9jbGll
bnQoJmNsaWVudCkKICAgICAsIG1fcHJpdmF0ZSh0cmFja1ByaXZhdGUpCisgICAgLCBtX3NlbGVj
dGVkKHRyYWNrUHJpdmF0ZS5zZWxlY3RlZCgpKQogeworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAorICAgIG1fcHJpdmF0ZS0+c2V0TG9nZ2VyKGxvZ2dlcigpLCBsb2dJZGVudGlmaWVyKCkpOwor
I2VuZGlmCiAgICAgbV9wcml2YXRlLT5zZXRDbGllbnQodGhpcyk7CiAgICAgdXBkYXRlS2luZEZy
b21Qcml2YXRlKCk7CiB9CkBAIC0xMDMsNiArMTA2LDkgQEAgdm9pZCBWaWRlb1RyYWNrOjpzZXRQ
cml2YXRlKFZpZGVvVHJhY2tQcgogICAgIG1fcHJpdmF0ZS0+c2V0Q2xpZW50KG51bGxwdHIpOwog
ICAgIG1fcHJpdmF0ZSA9IHRyYWNrUHJpdmF0ZTsKICAgICBtX3ByaXZhdGUtPnNldENsaWVudCh0
aGlzKTsKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBtX3ByaXZhdGUtPnNldExvZ2dl
cihsb2dnZXIoKSwgbG9nSWRlbnRpZmllcigpKTsKKyNlbmRpZgogCiAgICAgbV9wcml2YXRlLT5z
ZXRTZWxlY3RlZChtX3NlbGVjdGVkKTsKICAgICB1cGRhdGVLaW5kRnJvbVByaXZhdGUoKTsKQEAg
LTIzNyw2ICsyNDMsMTQgQEAgdm9pZCBWaWRlb1RyYWNrOjp1cGRhdGVLaW5kRnJvbVByaXZhdGUo
KQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCit2b2lkIFZpZGVvVHJhY2s6OnNldE1l
ZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KQoreworICAgIFRyYWNrQmFzZTo6
c2V0TWVkaWFFbGVtZW50KGVsZW1lbnQpOworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAg
IG1fcHJpdmF0ZS0+c2V0TG9nZ2VyKGxvZ2dlcigpLCBsb2dJZGVudGlmaWVyKCkpOworI2VuZGlm
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzcz
LDcgQEAgcHVibGljOgogICAgIGNvbnN0IE1lZGlhRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKCkg
Y29uc3Q7CiAKICAgICB2b2lkIHNldFByaXZhdGUoVmlkZW9UcmFja1ByaXZhdGUmKTsKKyAgICB2
b2lkIHNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kikgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6CiAgICAgVmlkZW9UcmFjayhWaWRlb1RyYWNrQ2xpZW50JiwgVmlkZW9UcmFja1ByaXZhdGUm
KTsKQEAgLTkyLDEwICs5MywxMyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVLaW5kRnJv
bVByaXZhdGUoKTsKIAotICAgIGJvb2wgbV9zZWxlY3RlZDsKLSAgICBWaWRlb1RyYWNrQ2xpZW50
KiBtX2NsaWVudDsKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBs
b2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiVmlkZW9UcmFjayI7IH0KKyNlbmRp
ZgogCisgICAgVmlkZW9UcmFja0NsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07CiAgICAgUmVm
PFZpZGVvVHJhY2tQcml2YXRlPiBtX3ByaXZhdGU7CisgICAgYm9vbCBtX3NlbGVjdGVkIHsgZmFs
c2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9XZWJDb25zb2xlQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9XZWJDb25zb2xlQWdlbnQuY3BwCShyZXZpc2lvbiAyMjIwMDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ29tbWFuZExpbmVBUElIb3N0LmgiCiAj
aW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlJl
c291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0U3RhdGUuaCIKQEAgLTUxLDYgKzUyLDgwIEBAIHZvaWQgV2ViQ29uc29sZUFnZW50Ojpz
ZXRNb25pdG9yaW5nWEhSRW4KICAgICBtX21vbml0b3JpbmdYSFJFbmFibGVkID0gZW5hYmxlZDsK
IH0KIAordm9pZCBXZWJDb25zb2xlQWdlbnQ6OmdldExvZ2dpbmdDaGFubmVscyhFcnJvclN0cmlu
ZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpDb25zb2xlOjpDaGFubmVsPj4mIGNoYW5uZWxzKQoreworICAgIHN0YXRpYyBjb25zdCBzdHJ1
Y3QgQ2hhbm5lbFRhYmxlIHsKKyAgICAgICAgY29uc3QgY2hhciogbmFtZTsKKyAgICAgICAgSW5z
cGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbFNvdXJjZSBzb3VyY2U7CisgICAgfSBj
aGFubmVsVGFibGVbXSA9IHsKKyAgICAgICAgeyAiV2ViUlRDIiwgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q29uc29sZTo6Q2hhbm5lbFNvdXJjZTo6V2ViUlRDIH0sCisgICAgICAgIHsgIk1lZGlhIiwg
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbFNvdXJjZTo6TWVkaWEgfSwKKyAg
ICB9OworCisgICAgY2hhbm5lbHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsPjo6Y3JlYXRlKCk7CisKKyAgICBzaXplX3Qg
bGVuZ3RoID0gV1RGX0FSUkFZX0xFTkdUSChjaGFubmVsVGFibGUpOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgYXV0byogbG9nQ2hhbm5lbCA9IGdl
dExvZ0NoYW5uZWwoY2hhbm5lbFRhYmxlW2ldLm5hbWUpOworICAgICAgICBpZiAoIWxvZ0NoYW5u
ZWwpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6
Q29uc29sZTo6Q2hhbm5lbExldmVsIGxldmVsOworICAgICAgICBpZiAobG9nQ2hhbm5lbC0+c3Rh
dGUgPT0gV1RGTG9nQ2hhbm5lbE9mZikKKyAgICAgICAgICAgIGxldmVsID0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbExldmVsOjpPZmY7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgc3dpdGNoIChsb2dDaGFubmVsLT5sZXZlbCkgeworICAgICAgICAgICAgY2FzZSBX
VEZMb2dMZXZlbEFsd2F5czoKKyAgICAgICAgICAgICAgICBsZXZlbCA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNvbnNvbGU6OkNoYW5uZWxMZXZlbDo6QWx3YXlzOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBXVEZMb2dMZXZlbEVycm9yOgorICAgICAgICAgICAgICAg
IGxldmVsID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2hhbm5lbExldmVsOjpFcnJv
cjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV1RGTG9nTGV2ZWxX
YXJuaW5nOgorICAgICAgICAgICAgICAgIGxldmVsID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29u
c29sZTo6Q2hhbm5lbExldmVsOjpXYXJuaW5nOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBXVEZMb2dMZXZlbEluZm86CisgICAgICAgICAgICAgICAgbGV2ZWwgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDaGFubmVsTGV2ZWw6OkluZm87CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdURkxvZ0xldmVsRGVidWc6CisgICAg
ICAgICAgICAgICAgbGV2ZWwgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDaGFubmVs
TGV2ZWw6OkRlYnVnOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgYXV0byBjaGFubmVsID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29u
c29sZTo6Q2hhbm5lbDo6Y3JlYXRlKCkKKyAgICAgICAgICAgIC5zZXRTb3VyY2UoY2hhbm5lbFRh
YmxlW2ldLnNvdXJjZSkKKyAgICAgICAgICAgIC5zZXRMZXZlbChsZXZlbCkKKyAgICAgICAgICAg
IC5yZWxlYXNlKCk7CisgICAgICAgIGNoYW5uZWxzLT5hZGRJdGVtKFdURk1vdmUoY2hhbm5lbCkp
OworICAgIH0KK30KKwordm9pZCBXZWJDb25zb2xlQWdlbnQ6OnNldExvZ2dpbmdDaGFubmVsTGV2
ZWwoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNoYW5uZWxOYW1lLCBjb25zdCBTdHJpbmcm
IGNoYW5uZWxMZXZlbCkKK3sKKyAgICBhdXRvKiBjaGFubmVsID0gZ2V0TG9nQ2hhbm5lbChjaGFu
bmVsTmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAoIWNoYW5uZWwpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNoYW5uZWxMZXZlbCwgIm9mZiIp
KQorICAgICAgICBjaGFubmVsLT5zdGF0ZSA9IFdURkxvZ0NoYW5uZWxPZmY7CisgICAgZWxzZSB7
CisgICAgICAgIGNoYW5uZWwtPnN0YXRlID0gV1RGTG9nQ2hhbm5lbE9uOworICAgICAgICBpZiAo
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjaGFubmVsTGV2ZWwsICJsb2ciKSkKKyAgICAgICAgICAg
IGNoYW5uZWwtPmxldmVsID0gV1RGTG9nTGV2ZWxBbHdheXM7CisgICAgICAgIGVsc2UgaWYgKGVx
dWFsSWdub3JpbmdBU0NJSUNhc2UoY2hhbm5lbExldmVsLCAiZXJyb3IiKSkKKyAgICAgICAgICAg
IGNoYW5uZWwtPmxldmVsID0gV1RGTG9nTGV2ZWxFcnJvcjsKKyAgICAgICAgZWxzZSBpZiAoZXF1
YWxJZ25vcmluZ0FTQ0lJQ2FzZShjaGFubmVsTGV2ZWwsICJ3YXJuaW5nIikpCisgICAgICAgICAg
ICBjaGFubmVsLT5sZXZlbCA9IFdURkxvZ0xldmVsV2FybmluZzsKKyAgICAgICAgZWxzZSBpZiAo
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjaGFubmVsTGV2ZWwsICJpbmZvIikpCisgICAgICAgICAg
ICBjaGFubmVsLT5sZXZlbCA9IFdURkxvZ0xldmVsSW5mbzsKKyAgICAgICAgZWxzZSBpZiAoZXF1
YWxJZ25vcmluZ0FTQ0lJQ2FzZShjaGFubmVsTGV2ZWwsICJkZWJ1ZyIpKQorICAgICAgICAgICAg
Y2hhbm5lbC0+bGV2ZWwgPSBXVEZMb2dMZXZlbERlYnVnOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKIHZvaWQgV2ViQ29uc29sZUFn
ZW50OjpmcmFtZVdpbmRvd0Rpc2NhcmRlZChET01XaW5kb3cqIHdpbmRvdykKIHsKICAgICBmb3Ig
KGF1dG8mIG1lc3NhZ2UgOiBtX2NvbnNvbGVNZXNzYWdlcykgewpJbmRleDogU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1dlYkNvbnNvbGVBZ2VudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9XZWJDb25zb2xlQWdlbnQuaAkocmV2aXNpb24gMjIyMDA3KQorKysgU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkNvbnNvbGVBZ2VudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Miw2ICs0Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJDb25zb2xlQWdlbnQoKSB7
IH0KIAogICAgIHZvaWQgc2V0TW9uaXRvcmluZ1hIUkVuYWJsZWQoRXJyb3JTdHJpbmcmLCBib29s
IGVuYWJsZWQpIGZpbmFsOworICAgIHZvaWQgZ2V0TG9nZ2luZ0NoYW5uZWxzKEVycm9yU3RyaW5n
JiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNvbnNvbGU6OkNoYW5uZWw+PiYpIGZpbmFsOworICAgIHZvaWQgc2V0TG9nZ2luZ0NoYW5uZWxM
ZXZlbChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgY2hhbm5lbCwgY29uc3QgU3RyaW5nJiBs
ZXZlbCkgZmluYWw7CiAKICAgICB2b2lkIGZyYW1lV2luZG93RGlzY2FyZGVkKERPTVdpbmRvdyop
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmNwcAkocmV2aXNpb24gMjIyMDA3
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTk1LDYgKzk1LDIxIEBAIHZvaWQgcmVnaXN0ZXJOb3RpZnlDYWxsYmFjayhjb25zdCBTdHJp
bmcKIH0KICNlbmRpZgogCitWZWN0b3I8U3RyaW5nPiBsb2dDaGFubmVsTmFtZXMoKQoreworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8U3RyaW5nPj4gY2hhbm5lbE5hbWVzOworICAg
IGlmIChjaGFubmVsTmFtZXMuZ2V0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIFZlY3RvcjxTdHJp
bmc+JiBuYW1lcyA9IGNoYW5uZWxOYW1lcy5nZXQoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBsb2dDaGFubmVsQ291bnQ7ICsraSkKKyAgICAgICAgICAgIG5hbWVzLmFwcGVuZChs
b2dDaGFubmVsc1tpXS0+bmFtZSk7CisgICAgfQorICAgIHJldHVybiBjaGFubmVsTmFtZXMuZ2V0
KCk7Cit9CisKK1dURkxvZ0NoYW5uZWwqIGdldExvZ0NoYW5uZWwoY29uc3QgU3RyaW5nJiBuYW1l
KQoreworICAgIHJldHVybiBXVEZMb2dDaGFubmVsQnlOYW1lKGxvZ0NoYW5uZWxzLCBsb2dDaGFu
bmVsQ291bnQsIG5hbWUudXRmOCgpLmRhdGEoKSk7Cit9CiAjZW5kaWYgLy8gIUxPR19ESVNBQkxF
RCB8fCAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3
IEBACiAjaW5jbHVkZSAiTG9nTWFjcm9zLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDksNiArMTEwLDkgQEAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRMb2dDaGFubmVsVG9BY2N1bQogdm9pZCByZWdpc3Rlck5vdGlmeUNhbGxiYWNrKGNvbnN0
IFN0cmluZyYgbm90aWZ5SUQsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKTsKICNl
bmRpZgogCitXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBsb2dDaGFubmVsTmFtZXMoKTsK
K1dFQkNPUkVfRVhQT1JUIFdURkxvZ0NoYW5uZWwqIGdldExvZ0NoYW5uZWwoY29uc3QgU3RyaW5n
JiBuYW1lKTsKKwogI2VuZGlmIC8vICFMT0dfRElTQUJMRUQgfHwgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaAkocmV2aXNpb24gMjIy
MDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZh
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsMTAgQEAgcHVibGljOgogICAgIGVudW0g
S2luZCB7IEFsdGVybmF0aXZlLCBEZXNjcmlwdGlvbiwgTWFpbiwgTWFpbkRlc2MsIFRyYW5zbGF0
aW9uLCBDb21tZW50YXJ5LCBOb25lIH07CiAgICAgdmlydHVhbCBLaW5kIGtpbmQoKSBjb25zdCB7
IHJldHVybiBOb25lOyB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBj
aGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiQXVkaW9UcmFja1By
aXZhdGUiOyB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIEF1ZGlvVHJhY2tQcml2YXRlKCkg
PSBkZWZhdWx0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oCShyZXZpc2lvbiAyMjIwMDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCiAKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgiCisjaW5jbHVk
ZSA8cGFsL0xvZ2dlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQyLDggKzQzLDgg
QEAgcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4gY3Jl
YXRlKEN1ZUZvcm1hdCBmb3JtYXQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlKGZvcm1hdCkpOyB9CiAgICAgdmlydHVhbCB+SW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZSgpIHsgfQogCi0gICAgdm9pZCBzZXRDbGllbnQoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVu
dCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAgICAgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUNsaWVudCogY2xpZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jbGllbnQ7IH0K
KyAgICB2b2lkIHNldENsaWVudChJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50KiBjbGllbnQp
IHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KIAogICAgIGVudW0gTW9kZSB7CiAgICAgICAgIERpc2Fi
bGVkLApAQCAtNzgsNiArNzksMTAgQEAgcHVibGljOgogCiAgICAgQ3VlRm9ybWF0IGN1ZUZvcm1h
dCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0OyB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSI7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZShDdWVGb3JtYXQgZm9ybWF0KQogICAgICAgICA6IG1fZm9y
bWF0KGZvcm1hdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFu
ZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgJKHJldmlzaW9u
IDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRU
cmFja1ByaXZhdGVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTMsNiArOTMsOCBAQCBwdWJs
aWM6CiAKICAgICBib29sIGRvZXNFeHRlbmRDdWVEYXRhKGNvbnN0IEdlbmVyaWNDdWVEYXRhJikg
Y29uc3Q7CiAKKyAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBH
ZW5lcmljQ3VlRGF0YSgpID0gZGVmYXVsdDsKIApAQCAtMTEzLDYgKzExNSwxMDIgQEAgcHJpdmF0
ZToKICAgICBTdGF0dXMgbV9zdGF0dXMgeyBVbmluaXRpYWxpemVkIH07CiB9OwogCitpbmxpbmUg
U3RyaW5nIEdlbmVyaWNDdWVEYXRhOjp0b1N0cmluZygpIGNvbnN0Cit7CisgICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOworCisgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJzdGFydCA9ICIpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKG1fc3RhcnRUaW1lLnRvU3RyaW5nKCkpOworCisgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIsIGVuZCA9ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKG1fZW5kVGlt
ZS50b1N0cmluZygpKTsKKworICAgIGNvbnN0IGNoYXIqIHN0YXR1czsKKyAgICBzd2l0Y2ggKG1f
c3RhdHVzKSB7CisgICAgY2FzZSBHZW5lcmljQ3VlRGF0YTo6VW5pbml0aWFsaXplZDoKKyAgICAg
ICAgc3RhdHVzID0gIlVuaW5pdGlhbGl6ZWQiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdl
bmVyaWNDdWVEYXRhOjpQYXJ0aWFsOgorICAgICAgICBzdGF0dXMgPSAiUGFydGlhbCI7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgR2VuZXJpY0N1ZURhdGE6OkNvbXBsZXRlOgorICAgICAgICBz
dGF0dXMgPSAiQ29tcGxldGUiOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIsIHN0YXR1cyA9ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKHN0YXR1cyk7
CisKKyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgaWQgPSAiKTsKKyAgICBidWlsZGVyLmFw
cGVuZChtX2lkKTsKKworICAgIGlmIChtX2xpbmUgPiAwKSB7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiLCBsaW5lID0gIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1f
bGluZSk7CisgICAgfQorCisgICAgaWYgKG1fc2l6ZSA+IDApIHsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIsIHNpemUgPSAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIo
bV9zaXplKTsKKyAgICB9CisKKyAgICBpZiAobV9wb3NpdGlvbiA+IDApIHsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIsIHBvc2l0aW9uID0gIik7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTnVtYmVyKG1fcG9zaXRpb24pOworICAgIH0KKworICAgIGlmIChtX2FsaWduICE9IE5vbmUp
IHsKKyAgICAgICAgY29uc3QgY2hhciogYWxpZ247CisgICAgICAgIHN3aXRjaCAobV9hbGlnbikg
eworICAgICAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpTdGFydDoKKyAgICAgICAgICAgIGFsaWdu
ID0gIlN0YXJ0IjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdlbmVyaWNDdWVE
YXRhOjpNaWRkbGU6CisgICAgICAgICAgICBhbGlnbiA9ICJNaWRkbGUiOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgR2VuZXJpY0N1ZURhdGE6OkVuZDoKKyAgICAgICAgICAgIGFs
aWduID0gIkVuZCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHZW5lcmljQ3Vl
RGF0YTo6Tm9uZToKKyAgICAgICAgICAgIGFsaWduID0gIk5vbmUiOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIGFsaWduID0g
Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFsaWduKTsKKyAgICB9CisKKyAgICBpZiAobV9m
b3JlZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiLCBmb3JlZ3JvdW5kIGNvbG9yID0gIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fZm9y
ZWdyb3VuZENvbG9yLnNlcmlhbGl6ZWQoKSk7CisgICAgfQorCisgICAgaWYgKG1fYmFja2dyb3Vu
ZENvbG9yLmlzVmFsaWQoKSkgeworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgYmFj
a2dyb3VuZCBjb2xvciA9ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChtX2JhY2tncm91bmRD
b2xvci5zZXJpYWxpemVkKCkpOworICAgIH0KKworICAgIGlmIChtX2hpZ2hsaWdodENvbG9yLmlz
VmFsaWQoKSkgeworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgaGlsaWdodCBjb2xv
ciA9ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChtX2hpZ2hsaWdodENvbG9yLnNlcmlhbGl6
ZWQoKSk7CisgICAgfQorCisgICAgaWYgKG1fYmFzZUZvbnRTaXplKSB7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiLCBiYXNlIGZvbnQgc2l6ZSA9ICIpOworICAgICAgICBidWlsZGVy
LmFwcGVuZE51bWJlcihtX2Jhc2VGb250U2l6ZSk7CisgICAgfQorCisgICAgaWYgKG1fcmVsYXRp
dmVGb250U2l6ZSkgeworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgcmVsYXRpdmUg
Zm9udCBzaXplID0gIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fcmVsYXRpdmVG
b250U2l6ZSk7CisgICAgfQorCisgICAgaWYgKCFtX2ZvbnROYW1lLmlzRW1wdHkoKSkgeworICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgZm9udCA9ICIpOworICAgICAgICBidWlsZGVy
LmFwcGVuZChtX2ZvbnROYW1lKTsKKyAgICB9CisKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmlu
ZygpOworfQorCiBpbmxpbmUgYm9vbCBHZW5lcmljQ3VlRGF0YTo6ZG9lc0V4dGVuZEN1ZURhdGEo
Y29uc3QgR2VuZXJpY0N1ZURhdGEmIG90aGVyKSBjb25zdAogewogICAgIGlmIChtX3JlbGF0aXZl
Rm9udFNpemUgIT0gb3RoZXIubV9yZWxhdGl2ZUZvbnRTaXplKQpAQCAtMTY2LDQgKzI2NCwxOSBA
QCBwdWJsaWM6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFBBTCB7CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CitzdHJ1Y3QgTG9nQXJndW1lbnQ7CisKK3RlbXBsYXRl
IDw+CitzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE+IHsKKyAgICBz
dGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhJiBjdWUp
CisgICAgeworICAgICAgICByZXR1cm4gY3VlLnRvU3RyaW5nKCk7CisgICAgfQorfTsKKworfQor
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJp
dmF0ZUJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1RyYWNrUHJpdmF0ZUJhc2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJpdmF0ZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiVHJhY2tQcml2YXRlQmFzZS5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5j
bHVkZSAiTG9nZ2luZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKK3ZvaWQgVHJhY2tQcml2YXRlQmFzZTo6c2V0TG9nZ2VyKGNvbnN0IFBBTDo6
TG9nZ2VyJiBsb2dnZXIsIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIpCit7CisgICAgbV9sb2dn
ZXIgPSAmbG9nZ2VyOworICAgIG1fbG9nSWRlbnRpZmllciA9IGxvZ0lkZW50aWZpZXI7Cit9CisK
K1dURkxvZ0NoYW5uZWwmIFRyYWNrUHJpdmF0ZUJhc2U6OmxvZ0NoYW5uZWwoKSBjb25zdAorewor
ICAgIHJldHVybiBMb2dNZWRpYTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVHJhY2tQ
cml2YXRlQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1RyYWNrUHJpdmF0ZUJhc2UuaAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw2ICsyOSw4IEBACiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAKKyNpbmNsdWRlIDxw
YWwvTG9nZ2VyLmg+CisjaW5jbHVkZSA8cGFsL0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHd0
Zi9NZWRpYVRpbWUuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KQEAgLTQ0LDcgKzQ2LDEyIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlbW92ZSgpID0gMDsKIH07CiAKLWNsYXNzIFRyYWNr
UHJpdmF0ZUJhc2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VHJhY2tQcml2YXRlQmFz
ZT4geworY2xhc3MgVHJhY2tQcml2YXRlQmFzZQorICAgIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFRyYWNrUHJpdmF0ZUJhc2U+CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAg
LCBwcml2YXRlIFBBTDo6TG9nZ2VySGVscGVyCisjZW5kaWYKK3sKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShUcmFja1ByaXZhdGVCYXNlKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKQEAgLTY2LDggKzczLDIwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGNsaWVudC0+
d2lsbFJlbW92ZSgpOwogICAgIH0KIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIHZv
aWQgc2V0TG9nZ2VyKGNvbnN0IFBBTDo6TG9nZ2VyJiwgY29uc3Qgdm9pZCopOworICAgIGNvbnN0
IFBBTDo6TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IEFTU0VSVChtX2xvZ2dlcik7IHJl
dHVybiAqbV9sb2dnZXIuZ2V0KCk7IH0KKyAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CisgICAgV1RGTG9nQ2hhbm5l
bCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZpbmFsOworI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBU
cmFja1ByaXZhdGVCYXNlKCkgPSBkZWZhdWx0OworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CisgICAgUmVmUHRyPGNvbnN0IFBBTDo6TG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBjb25zdCB2b2lk
KiBtX2xvZ0lkZW50aWZpZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9U
cmFja1ByaXZhdGUuaAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiAr
NTQsMTAgQEAgcHVibGljOgogICAgIGVudW0gS2luZCB7IEFsdGVybmF0aXZlLCBDYXB0aW9ucywg
TWFpbiwgU2lnbiwgU3VidGl0bGVzLCBDb21tZW50YXJ5LCBOb25lIH07CiAgICAgdmlydHVhbCBL
aW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBOb25lOyB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biAiVmlkZW9UcmFja1ByaXZhdGUiOyB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIFZpZGVv
VHJhY2tQcml2YXRlKCkgPSBkZWZhdWx0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbQkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZG
T2JqQ0ltcGwubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbXBvcnQgPEFW
Rm91bmRhdGlvbi9BVlBsYXllckl0ZW0uaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXll
ckl0ZW1UcmFjay5oPgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CisjaW1wb3J0IDxwYWwvTG9n
Z2VyLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KIAogQGNsYXNzIEFWTWVkaWFTZWxl
Y3Rpb25PcHRpb247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5k
TWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAkocmV2aXNpb24gMjIyMDA3KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRh
VGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAK
IAogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCIKICNpbmNsdWRlICJM
b2dnaW5nLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlIDxDb3JlTWVkaWEv
Q29yZU1lZGlhLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzYsMTIgKzc3LDEyIEBAIHZvaWQgSW5iYW5kTWV0YWRh
dGFUZXh0VHJhY2tQcml2YXRlQVZGOjoKICAgICBpZiAodGltZSA+PSBtX2N1cnJlbnRDdWVTdGFy
dFRpbWUpIHsKICAgICAgICAgaWYgKGNsaWVudCgpKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8m
IHBhcnRpYWxDdWUgOiBtX2luY29tcGxldGVDdWVzKSB7Ci0gICAgICAgICAgICAgICAgTE9HKE1l
ZGlhLCAiSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjp1cGRhdGVQZW5kaW5nQ3Vl
RW5kVGltZXMoJXApIC0gdXBkYXRpbmcgY3VlOiBzdGFydD0lcywgZW5kPSVzIiwgdGhpcywgdG9T
dHJpbmcocGFydGlhbEN1ZS5zdGFydFRpbWUpLnV0ZjgoKS5kYXRhKCksIHRvU3RyaW5nKHRpbWUp
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIs
ICJ1cGRhdGluZyBjdWU6IHN0YXJ0ID0gIiwgcGFydGlhbEN1ZS5zdGFydFRpbWUsICIsIGVuZCA9
ICIsIHRpbWUpOwogICAgICAgICAgICAgICAgIGNsaWVudCgpLT51cGRhdGVEYXRhQ3VlKHBhcnRp
YWxDdWUuc3RhcnRUaW1lLCB0aW1lLCAqcGFydGlhbEN1ZS5jdWVEYXRhKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0gZWxzZQotICAgICAgICBMT0coTWVkaWEsICJJbmJhbmRNZXRh
ZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6OnVwZGF0ZVBlbmRpbmdDdWVFbmRUaW1lcyBuZWdhdGl2
ZSBsZW5ndGggY3VlKHMpIGlnbm9yZWQ6IHN0YXJ0PSVzLCBlbmQ9JXNcbiIsIHRvU3RyaW5nKG1f
Y3VycmVudEN1ZVN0YXJ0VGltZSkudXRmOCgpLmRhdGEoKSwgdG9TdHJpbmcodGltZSkudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgIFdBUk5JTkdfTE9HKExPR0lERU5USUZJRVIsICJuZWdhdGl2ZSBs
ZW5ndGggY3VlKHMpIGlnbm9yZWQ6IHN0YXJ0ID0gIiwgbV9jdXJyZW50Q3VlU3RhcnRUaW1lLCAi
LCBlbmQgPSAiLCB0aW1lKTsKIAogICAgIG1faW5jb21wbGV0ZUN1ZXMuc2hyaW5rKDApOwogICAg
IG1fY3VycmVudEN1ZVN0YXJ0VGltZSA9IE1lZGlhVGltZTo6emVyb1RpbWUoKTsKQEAgLTkyLDcg
KzkzLDcgQEAgdm9pZCBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6Ogogdm9pZCBJ
bmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6OmZsdXNoUGFydGlhbEN1ZXMoKQogewog
ICAgIGlmIChtX2N1cnJlbnRDdWVTdGFydFRpbWUgJiYgbV9pbmNvbXBsZXRlQ3Vlcy5zaXplKCkp
Ci0gICAgICAgIExPRyhNZWRpYSwgIkluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjo6
cmVzZXRDdWVWYWx1ZXMgZmx1c2hpbmcgaW5jb21wbGV0ZSBkYXRhIGZvciBjdWVzOiBzdGFydD0l
c1xuIiwgdG9TdHJpbmcobV9jdXJyZW50Q3VlU3RhcnRUaW1lKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImZsdXNoaW5nIGluY29tcGxldGUgZGF0YSBm
b3IgY3Vlczogc3RhcnQgPSAiLCBtX2N1cnJlbnRDdWVTdGFydFRpbWUpOwogCiAgICAgaWYgKGNs
aWVudCgpKSB7CiAgICAgICAgIGZvciAoYXV0byYgcGFydGlhbEN1ZSA6IG1faW5jb21wbGV0ZUN1
ZXMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4
dFRyYWNrUHJpdmF0ZUFWRi5oCShyZXZpc2lvbiAyMjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2
YXRlQVZGLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDEwIEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGKEtpbmQsIEN1ZUZvcm1h
dCwgY29uc3QgQXRvbWljU3RyaW5nJik7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAg
ICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiSW5iYW5k
TWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGIjsgfQorI2VuZGlmCisKICAgICBLaW5kIG1fa2lu
ZDsKICAgICBBdG9taWNTdHJpbmcgbV9pZDsKICAgICBBdG9taWNTdHJpbmcgbV9pbkJhbmRNZXRh
ZGF0YVRyYWNrRGlzcGF0Y2hUeXBlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZh
dGVBVkYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMCArMjgsMTAgQEAKIAogI2lmIEVOQUJM
RShWSURFTykgJiYgKFVTRShBVkZPVU5EQVRJT04pIHx8IFBMQVRGT1JNKElPUykpCiAKLSNpbmNs
dWRlICJDb3JlTWVkaWFTb2Z0TGluay5oIgogI2luY2x1ZGUgIklTT1ZUVEN1ZS5oIgogI2luY2x1
ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CisjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJNZWRpYVRpbWVBVkZvdW5kYXRp
b24uaCIKICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVudGlt
ZS9EYXRhVmlldy5oPgpAQCAtNDMsNiArNDMsOCBAQAogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0No
YXJhY3Rlck5hbWVzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAKKyNp
bmNsdWRlICJDb3JlTWVkaWFTb2Z0TGluay5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEFW
RkluYmFuZFRyYWNrUGFyZW50Ojp+QVZGSW5iYW5kVHJhY2tQYXJlbnQoKQpAQCAtMzE1LDExICsz
MTcsMTMgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQwogCiB2b2lk
IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NBdHRyaWJ1dGVkU3RyaW5ncyhDRkFy
cmF5UmVmIGF0dHJpYnV0ZWRTdHJpbmdzLCBjb25zdCBNZWRpYVRpbWUmIHRpbWUpCiB7Ci0gICAg
TE9HKE1lZGlhLCAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZSAtICVsaSBj
dWVzIGF0IHRpbWUgJXNcbiIsIGF0dHJpYnV0ZWRTdHJpbmdzID8gQ0ZBcnJheUdldENvdW50KGF0
dHJpYnV0ZWRTdHJpbmdzKSA6IDAsIHRvU3RyaW5nKHRpbWUpLnV0ZjgoKS5kYXRhKCkpOworICAg
IENGSW5kZXggY291bnQgPSBhdHRyaWJ1dGVkU3RyaW5ncyA/IENGQXJyYXlHZXRDb3VudChhdHRy
aWJ1dGVkU3RyaW5ncykgOiAwOworCisgICAgaWYgKGNvdW50KQorICAgICAgICBERUJVR19MT0co
TE9HSURFTlRJRklFUiwgImFkZGVkICIsIGNvdW50LCBjb3VudCA+IDEgPyAiIGN1ZXMiIDogIiBj
dWUiLCAiIGF0IHRpbWUgIiwgdGltZSk7CiAKICAgICBWZWN0b3I8UmVmPEdlbmVyaWNDdWVEYXRh
Pj4gYXJyaXZpbmdDdWVzOwotICAgIGlmIChhdHRyaWJ1dGVkU3RyaW5ncykgewotICAgICAgICBD
RkluZGV4IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KGF0dHJpYnV0ZWRTdHJpbmdzKTsKKyAgICBp
ZiAoY291bnQpIHsKICAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgY291bnQ7IGkrKykg
ewogICAgICAgICAgICAgQ0ZBdHRyaWJ1dGVkU3RyaW5nUmVmIGF0dHJpYnV0ZWRTdHJpbmcgPSBz
dGF0aWNfY2FzdDxDRkF0dHJpYnV0ZWRTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgo
YXR0cmlidXRlZFN0cmluZ3MsIGkpKTsKIApAQCAtMzM5LDggKzM0Myw2IEBAIHZvaWQgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0EKICAgICAgICAgICAgIGlmIChjdWVEYXRhLT5w
b3NpdGlvbigpID49IDAgJiYgY3VlRGF0YS0+c2l6ZSgpID4gMCkKICAgICAgICAgICAgICAgICBj
dWVEYXRhLT5zZXRQb3NpdGlvbihjdWVEYXRhLT5wb3NpdGlvbigpIC0gY3VlRGF0YS0+c2l6ZSgp
IC8gMik7CiAKLSAgICAgICAgICAgIExPRyhNZWRpYSwgIkluYmFuZFRleHRUcmFja1ByaXZhdGVB
VkY6OnByb2Nlc3NDdWUoJXApIC0gY29uc2lkZXJpbmcgY3VlIChcIiVzXCIpIGZvciB0aW1lID0g
JXMsIHBvc2l0aW9uID0gICUuMmYsIGxpbmUgPSAgJS4yZiIsIHRoaXMsIGN1ZURhdGEtPmNvbnRl
bnQoKS51dGY4KCkuZGF0YSgpLCB0b1N0cmluZyhjdWVEYXRhLT5zdGFydFRpbWUoKSkudXRmOCgp
LmRhdGEoKSwgY3VlRGF0YS0+cG9zaXRpb24oKSwgY3VlRGF0YS0+bGluZSgpKTsKLQogICAgICAg
ICAgICAgY3VlRGF0YS0+c2V0U3RhdHVzKEdlbmVyaWNDdWVEYXRhOjpQYXJ0aWFsKTsKIAogICAg
ICAgICAgICAgYXJyaXZpbmdDdWVzLmFwcGVuZChXVEZNb3ZlKGN1ZURhdGEpKTsKQEAgLTM1OSw3
ICszNjEsNyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NBCiAgICAg
ICAgICAgICAgICAgICAgIGlmICghYXJyaXZpbmdDdWUtPmRvZXNFeHRlbmRDdWVEYXRhKCpjdWVE
YXRhKSkKICAgICAgICAgICAgICAgICAgICAgICAgIG5vbkV4dGVuc2lvbkN1ZXMuYXBwZW5kKFdU
Rk1vdmUoYXJyaXZpbmdDdWUpKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICAgICAgTE9HKE1lZGlhLCAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJv
Y2Vzc0N1ZSglcCkgLSBmb3VuZCBhbiBleHRlbnNpb24gY3VlIChcIiVzXCIpIGZvciB0aW1lID0g
JS4yZiwgZW5kID0gJS4yZiwgcG9zaXRpb24gPSAgJS4yZiwgbGluZSA9ICAlLjJmIiwgdGhpcywg
YXJyaXZpbmdDdWUtPmNvbnRlbnQoKS51dGY4KCkuZGF0YSgpLCBhcnJpdmluZ0N1ZS0+c3RhcnRU
aW1lKCkudG9Eb3VibGUoKSwgYXJyaXZpbmdDdWUtPmVuZFRpbWUoKS50b0RvdWJsZSgpLCBhcnJp
dmluZ0N1ZS0+cG9zaXRpb24oKSwgYXJyaXZpbmdDdWUtPmxpbmUoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgImZvdW5kIGFuIGV4dGVuc2lvbiBj
dWU6ICIsICpjdWVEYXRhKTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBi
b29sIGN1cnJlbnRDdWVJc0V4dGVuZGVkID0gKGFycml2aW5nQ3Vlcy5zaXplKCkgIT0gbm9uRXh0
ZW5zaW9uQ3Vlcy5zaXplKCkpOwpAQCAtMzczLDE2ICszNzUsMTcgQEAgdm9pZCBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQQogICAgICAgICAgICAgICAgICAgICBjdWVEYXRhLT5z
ZXRFbmRUaW1lKG1fY3VycmVudEN1ZUVuZFRpbWUpOwogICAgICAgICAgICAgICAgICAgICBjdWVE
YXRhLT5zZXRTdGF0dXMoR2VuZXJpY0N1ZURhdGE6OkNvbXBsZXRlKTsKIAotICAgICAgICAgICAg
ICAgICAgICBMT0coTWVkaWEsICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQ3Vl
KCVwKSAtIHVwZGF0aW5nIGN1ZSBcIiVzXCI6IHN0YXJ0PSUuMmYsIGVuZD0lLjJmIiwgdGhpcywg
Y3VlRGF0YS0+Y29udGVudCgpLnV0ZjgoKS5kYXRhKCksIGN1ZURhdGEtPnN0YXJ0VGltZSgpLnRv
RG91YmxlKCksIG1fY3VycmVudEN1ZUVuZFRpbWUudG9Eb3VibGUoKSk7CisgICAgICAgICAgICAg
ICAgICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAidXBkYXRpbmcgY3VlIHN0YXJ0ID0gIiwg
Y3VlRGF0YS0+c3RhcnRUaW1lKCksICIsIGVuZCA9ICIsIGN1ZURhdGEtPmVuZFRpbWUoKSwgIiwg
Y29udGVudCA9ICIsIGN1ZURhdGEtPmNvbnRlbnQoKSk7CisKICAgICAgICAgICAgICAgICAgICAg
Y2xpZW50KCktPnVwZGF0ZUdlbmVyaWNDdWUoKmN1ZURhdGEpOwogICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gYXNzdW1lIHRoYXQgdGhl
IGltcGxpY2l0IGR1cmF0aW9uIGlzIGludmFsaWQgZm9yIGN1ZXMgZGVsaXZlcmVkIGR1cmluZyBh
IHNlZWsgYmVjYXVzZSB0aGUgQVZGIGRlY29kZSBwaXBlbGluZSBtYXkgbm90CiAgICAgICAgICAg
ICAgICAgICAgIC8vIHNlZSBldmVyeSBjdWUsIHNvIERPIE5PVCB1cGRhdGUgY3VlIGR1cmF0aW9u
IHdoaWxlIHNlZWtpbmcuCi0gICAgICAgICAgICAgICAgICAgIExPRyhNZWRpYSwgIkluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWUoJXApIC0gaWdub3JpbmcgY3VlIGRlbGl2ZXJl
ZCBkdXJpbmcgc2Vlazogc3RhcnQ9JXMsIGVuZD0lcywgY29udGVudD1cIiVzXCIiLCB0aGlzLCB0
b1N0cmluZyhjdWVEYXRhLT5zdGFydFRpbWUoKSkudXRmOCgpLmRhdGEoKSwgdG9TdHJpbmcobV9j
dXJyZW50Q3VlRW5kVGltZSkudXRmOCgpLmRhdGEoKSwgY3VlRGF0YS0+Y29udGVudCgpLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICAgICAgICAgICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwg
Imlnbm9yaW5nIGN1ZSBkZWxpdmVyZWQgZHVyaW5nIHNlZWs6ICIsICpjdWVEYXRhKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
TE9HKE1lZGlhLCAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZSBuZWdhdGl2
ZSBsZW5ndGggY3VlKHMpIGlnbm9yZWQ6IHN0YXJ0PSVzLCBlbmQ9JXNcbiIsICB0b1N0cmluZyht
X2N1cnJlbnRDdWVTdGFydFRpbWUpLnV0ZjgoKS5kYXRhKCksIHRvU3RyaW5nKG1fY3VycmVudEN1
ZUVuZFRpbWUpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgRVJST1JfTE9HKExPR0lERU5U
SUZJRVIsICJuZWdhdGl2ZSBsZW5ndGggY3VlKHMpOiBzdGFydCA9ICIsIG1fY3VycmVudEN1ZVN0
YXJ0VGltZSwgIiwgZW5kID0gIiwgbV9jdXJyZW50Q3VlRW5kVGltZSk7CiAKICAgICAgICAgcmVt
b3ZlQ29tcGxldGVkQ3VlcygpOwogICAgIH0KQEAgLTM5NCw5ICszOTcsNyBAQCB2b2lkIEluYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NBCiAKICAgICBmb3IgKGF1dG8mIGN1ZURhdGEg
OiBhcnJpdmluZ0N1ZXMpIHsKICAgICAgICAgbV9jdWVzLmFwcGVuZChjdWVEYXRhLnB0cigpKTsK
LSAgICAgICAgCi0gICAgICAgIExPRyhNZWRpYSwgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6
OnByb2Nlc3NDdWUoJXApIC0gYWRkaW5nIGN1ZSBcIiVzXCIgZm9yIHRpbWUgPSAlLjJmLCBlbmQg
PSAlLjJmLCBwb3NpdGlvbiA9ICAlLjJmLCBsaW5lID0gICUuMmYiLCB0aGlzLCBjdWVEYXRhLT5j
b250ZW50KCkudXRmOCgpLmRhdGEoKSwgY3VlRGF0YS0+c3RhcnRUaW1lKCkudG9Eb3VibGUoKSwg
Y3VlRGF0YS0+ZW5kVGltZSgpLnRvRG91YmxlKCksIGN1ZURhdGEtPnBvc2l0aW9uKCksIGN1ZURh
dGEtPmxpbmUoKSk7Ci0KKyAgICAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsICJhZGRpbmcg
Y3VlOiAiLCBjdWVEYXRhLmdldCgpKTsKICAgICAgICAgY2xpZW50KCktPmFkZEdlbmVyaWNDdWUo
Y3VlRGF0YSk7CiAgICAgfQogCkBAIC00MjMsMTAgKzQyNCwxMSBAQCB2b2lkIEluYmFuZFRleHRU
cmFja1ByaXZhdGVBVkY6OnJlbW92ZUNvCiAgICAgaWYgKGNsaWVudCgpKSB7CiAgICAgICAgIGxv
bmcgY3VycmVudEN1ZSA9IG1fY3Vlcy5zaXplKCkgLSAxOwogICAgICAgICBmb3IgKDsgY3VycmVu
dEN1ZSA+PSAwOyAtLWN1cnJlbnRDdWUpIHsKLSAgICAgICAgICAgIGlmIChtX2N1ZXNbY3VycmVu
dEN1ZV0tPnN0YXR1cygpICE9IEdlbmVyaWNDdWVEYXRhOjpDb21wbGV0ZSkKKyAgICAgICAgICAg
IGF1dG8mIGN1ZSA9IG1fY3Vlc1tjdXJyZW50Q3VlXTsKKyAgICAgICAgICAgIGlmIChjdWUtPnN0
YXR1cygpICE9IEdlbmVyaWNDdWVEYXRhOjpDb21wbGV0ZSkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKIAotICAgICAgICAgICAgTE9HKE1lZGlhLCAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Rjo6cmVtb3ZlQ29tcGxldGVkQ3VlcyglcCkgLSByZW1vdmluZyBjdWUgXCIlc1wiOiBzdGFydD0l
LjJmLCBlbmQ9JS4yZiIsIHRoaXMsIG1fY3Vlc1tjdXJyZW50Q3VlXS0+Y29udGVudCgpLnV0Zjgo
KS5kYXRhKCksIG1fY3Vlc1tjdXJyZW50Q3VlXS0+c3RhcnRUaW1lKCkudG9Eb3VibGUoKSwgbV9j
dWVzW2N1cnJlbnRDdWVdLT5lbmRUaW1lKCkudG9Eb3VibGUoKSk7CisgICAgICAgICAgICBERUJV
R19MT0coTE9HSURFTlRJRklFUiwgInJlbW92aW5nIGN1ZTogIiwgKmN1ZSk7CiAKICAgICAgICAg
ICAgIG1fY3Vlcy5yZW1vdmUoY3VycmVudEN1ZSk7CiAgICAgICAgIH0KQEAgLTQ0Miw3ICs0NDQs
NyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnJlbW92ZUNvCiB2b2lkIEluYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkY6OnJlc2V0Q3VlVmFsdWVzKCkKIHsKICAgICBpZiAobV9jdXJy
ZW50Q3VlRW5kVGltZSAmJiBtX2N1ZXMuc2l6ZSgpKQotICAgICAgICBMT0coTWVkaWEsICJJbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGOjpyZXNldEN1ZVZhbHVlcyBmbHVzaGluZyBkYXRhIGZvciBj
dWVzOiBzdGFydD0lc1xuIiwgdG9TdHJpbmcobV9jdXJyZW50Q3VlU3RhcnRUaW1lKS51dGY4KCku
ZGF0YSgpKTsKKyAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImZsdXNoaW5nIGRhdGEg
Zm9yIGN1ZXM6IHN0YXJ0ID0gIiwgbV9jdXJyZW50Q3VlU3RhcnRUaW1lKTsKIAogICAgIGlmIChh
dXRvKiBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkgewogICAgICAgICBmb3IgKGF1dG8mIGN1ZSA6
IG1fY3VlcykKQEAgLTQ3OCw3ICs0ODAsNyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVB
VkY6OnByb2Nlc3NOCiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9H
KE1lZGlhLCAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc05hdGl2ZVNhbXBsZXMg
LSAlbGkgc2FtcGxlIGJ1ZmZlcnMgYXQgdGltZSAlLjJmXG4iLCBjb3VudCwgcHJlc2VudGF0aW9u
VGltZS50b0RvdWJsZSgpKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCBjb3VudCwgIiBz
YW1wbGUgYnVmZmVycyBhdCB0aW1lICIsIHByZXNlbnRhdGlvblRpbWUpOwogCiAgICAgZm9yIChD
RkluZGV4IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewogICAgICAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IGJ1ZmZlcjsKQEAgLTQ5MCwyNiArNDkyLDE0IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWRjo6cHJvY2Vzc04KICAgICAgICAgU3RyaW5nIHR5cGUgPSBJU09Cb3g6OnBlZWtUeXBl
KGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIHNpemVfdCBib3hMZW5ndGggPSBJU09Cb3g6OnBlZWtM
ZW5ndGgoYnVmZmVyLmdldCgpKTsKICAgICAgICAgaWYgKGJveExlbmd0aCA+IGJ1ZmZlci0+Ynl0
ZUxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBMT0coTWVkaWEsICJJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGOjpwcm9jZXNzTmF0aXZlU2FtcGxlcyglcCkgLSBFUlJPUjogY2h1bmsgJyVzJyBzaXpl
ICglenUpIGxhcmdlciB0aGFuIGJ1ZmZlciBsZW5ndGggKCV1KSEhIiwgdGhpcywgdHlwZS51dGY4
KCkuZGF0YSgpLCBib3hMZW5ndGgsIGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgICAg
IEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiY2h1bmsgIHR5cGUgPSAnIiwgdHlwZSwgIicsIHNp
emUgPSAiLCBib3hMZW5ndGgsICIgbGFyZ2VyIHRoYW4gYnVmZmVyIGxlbmd0aCEiKTsKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgTE9HKE1lZGlhLCAiSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc05hdGl2ZVNhbXBsZXMoJXApIC0gY2h1bmsgdHlw
ZSA9ICclcycsIHNpemUgPSAlenUiLCB0aGlzLCB0eXBlLnV0ZjgoKS5kYXRhKCksIGJveExlbmd0
aCk7Ci0KLSAgICAgICAgaWYgKHR5cGUgPT0gSVNPV2ViVlRUQ3VlOjpib3hUeXBlKCkpIHsKLSAg
ICAgICAgICAgIElTT1dlYlZUVEN1ZSBjdWVEYXRhID0gSVNPV2ViVlRUQ3VlKHByZXNlbnRhdGlv
blRpbWUsIGR1cmF0aW9uLCBidWZmZXIuZ2V0KCkpOwotICAgICAgICAgICAgTE9HKE1lZGlhLCAi
ICAgIHNhbXBsZSBwcmVzZW50YXRpb24gdGltZSA9ICUuMmYsIGR1cmF0aW9uID0gJS4yZiIsIGN1
ZURhdGEucHJlc2VudGF0aW9uVGltZSgpLnRvRG91YmxlKCksIGN1ZURhdGEuZHVyYXRpb24oKS50
b0RvdWJsZSgpKTsKLSAgICAgICAgICAgIExPRyhNZWRpYSwgIiAgICBpZCA9IFwiJXNcIiwgc2V0
dGluZ3MgPSBcIiVzXCIsIGN1ZSB0ZXh0ID0gXCIlc1wiIiwgY3VlRGF0YS5pZCgpLnV0ZjgoKS5k
YXRhKCksIGN1ZURhdGEuc2V0dGluZ3MoKS51dGY4KCkuZGF0YSgpLCBjdWVEYXRhLmN1ZVRleHQo
KS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAgIExPRyhNZWRpYSwgIiAgICBzb3VyY2VJRCA9
IFwiJXNcIiwgb3JpZ2luYWxTdGFydFRpbWUgPSBcIiVzXCIiLCBjdWVEYXRhLnNvdXJjZUlEKCku
dXRmOCgpLmRhdGEoKSwgY3VlRGF0YS5vcmlnaW5hbFN0YXJ0VGltZSgpLnV0ZjgoKS5kYXRhKCkp
OwotCi0gICAgICAgICAgICBjbGllbnQoKS0+cGFyc2VXZWJWVFRDdWVEYXRhKGN1ZURhdGEpOwot
ICAgICAgICB9CisgICAgICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAiY2h1bmsgIHR5cGUg
PSAnIiwgdHlwZSwgIicsIHNpemUgPSAiLCBib3hMZW5ndGgpOwogCiAgICAgICAgIGRvIHsKLSAg
ICAgICAgICAgIGlmIChtX2hhdmVSZXBvcnRlZFZUVEhlYWRlcikKLSAgICAgICAgICAgICAgICBi
cmVhazsKLQotICAgICAgICAgICAgaWYgKCFmb3JtYXREZXNjcmlwdGlvbikKKyAgICAgICAgICAg
IGlmIChtX2hhdmVSZXBvcnRlZFZUVEhlYWRlciB8fCAhZm9ybWF0RGVzY3JpcHRpb24pCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIENGRGljdGlvbmFyeVJlZiBleHRlbnNp
b25zID0gQ01Gb3JtYXREZXNjcmlwdGlvbkdldEV4dGVuc2lvbnMoZm9ybWF0RGVzY3JpcHRpb24p
OwpAQCAtNTM0LDExICs1MjQsMTcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpw
cm9jZXNzTgogICAgICAgICAgICAgaGVhZGVyLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0
IHVuc2lnbmVkIGNoYXIqPihDRkRhdGFHZXRCeXRlUHRyKHdlYnZ0dEhlYWRlckRhdGEpKSwgbGVu
Z3RoKTsKICAgICAgICAgICAgIGhlYWRlci5hcHBlbmQoIlxuXG4iKTsKIAotICAgICAgICAgICAg
TE9HKE1lZGlhLCAiICAgIHZ0dCBoZWFkZXIgPSBcbiVzIiwgaGVhZGVyLnRvU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CisgICAgICAgICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgIlZUVCBo
ZWFkZXIgPSAiLCAmaGVhZGVyKTsKICAgICAgICAgICAgIGNsaWVudCgpLT5wYXJzZVdlYlZUVEZp
bGVIZWFkZXIoaGVhZGVyLnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgbV9oYXZlUmVwb3J0ZWRW
VFRIZWFkZXIgPSB0cnVlOwogICAgICAgICB9IHdoaWxlICgwKTsKIAorICAgICAgICBpZiAodHlw
ZSA9PSBJU09XZWJWVFRDdWU6OmJveFR5cGUoKSkgeworICAgICAgICAgICAgSVNPV2ViVlRUQ3Vl
IGN1ZURhdGEgPSBJU09XZWJWVFRDdWUocHJlc2VudGF0aW9uVGltZSwgZHVyYXRpb24sIGJ1ZmZl
ci5nZXQoKSk7CisgICAgICAgICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgInNhbXBsZSBw
cmVzZW50YXRpb24gdGltZSA9ICIsIGN1ZURhdGEucHJlc2VudGF0aW9uVGltZSgpLCAiLCBkdXJh
dGlvbiA9ICIsIGN1ZURhdGEuZHVyYXRpb24oKSwgIiwgaWQgPSAnIiwgY3VlRGF0YS5pZCgpLCAi
Jywgc2V0dGluZ3MgPSAiLCBjdWVEYXRhLnNldHRpbmdzKCksICIsIGN1ZSB0ZXh0ID0gIiwgY3Vl
RGF0YS5jdWVUZXh0KCksICIsIHNvdXJjZUlEID0gIiwgY3VlRGF0YS5zb3VyY2VJRCgpLCAiLCBv
cmlnaW5hbFN0YXJ0VGltZSA9ICIsIGN1ZURhdGEub3JpZ2luYWxTdGFydFRpbWUoKSk7CisgICAg
ICAgICAgICBjbGllbnQoKS0+cGFyc2VXZWJWVFRDdWVEYXRhKGN1ZURhdGEpOworICAgICAgICB9
CisKICAgICAgICAgbV9zYW1wbGVJbnB1dEJ1ZmZlci5yZW1vdmUoMCwgYm94TGVuZ3RoKTsKICAg
ICB9CiB9CkBAIC01NTUsNyArNTUxLDcgQEAgYm9vbCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
OjpyZWFkTmF0aQogICAgIENNU2FtcGxlVGltaW5nSW5mbyB0aW1pbmdJbmZvOwogICAgIE9TU3Rh
dHVzIHN0YXR1cyA9IENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlVGltaW5nSW5mbyhzYW1wbGVCdWZm
ZXIsIGluZGV4LCAmdGltaW5nSW5mbyk7CiAgICAgaWYgKHN0YXR1cykgewotICAgICAgICBMT0co
TWVkaWEsICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpyZWFkTmF0aXZlU2FtcGxlQnVmZmVy
KCVwKSAtIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlVGltaW5nSW5mbyByZXR1cm5lZCBlcnJvciAl
eCBmb3Igc2FtcGxlICVsaSIsIHRoaXMsIHN0YXRpY19jYXN0PGludD4oc3RhdHVzKSwgaW5kZXgp
OworICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIkNNU2FtcGxlQnVmZmVyR2V0U2Ft
cGxlVGltaW5nSW5mbyByZXR1cm5lZCBlcnJvciAiLCBzdGF0dXMsICInIGZvciBzYW1wbGUgIiwg
aW5kZXgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC01NjQsNyArNTYwLDcg
QEAgYm9vbCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpyZWFkTmF0aQogICAgIENNQmxvY2tC
dWZmZXJSZWYgYmxvY2tCdWZmZXIgPSBDTVNhbXBsZUJ1ZmZlckdldERhdGFCdWZmZXIoc2FtcGxl
QnVmZmVyKTsKICAgICBzaXplX3QgYnVmZmVyTGVuZ3RoID0gQ01CbG9ja0J1ZmZlckdldERhdGFM
ZW5ndGgoYmxvY2tCdWZmZXIpOwogICAgIGlmIChidWZmZXJMZW5ndGggPCBJU09Cb3g6OmJveEhl
YWRlclNpemUoKSkgewotICAgICAgICBMT0coTWVkaWEsICJJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGOjpyZWFkTmF0aXZlU2FtcGxlQnVmZmVyKCVwKSAtIEVSUk9SOiBDTVNhbXBsZUJ1ZmZlciBz
aXplIGxlbmd0aCB1bmV4cGVjdGVkbHkgc21hbGwgKCV6dSkhISIsIHRoaXMsIGJ1ZmZlckxlbmd0
aCk7CisgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiQ01TYW1wbGVCdWZmZXIgc2l6
ZSBsZW5ndGggdW5leHBlY3RlZGx5IHNtYWxsOiAiLCBidWZmZXJMZW5ndGgpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZGLmgJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
LmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDExIEBAIHByb3RlY3RlZDoKICAgICB2b2lk
IHByb2Nlc3NOYXRpdmVTYW1wbGVzKENGQXJyYXlSZWYsIGNvbnN0IE1lZGlhVGltZSYpOwogICAg
IHZvaWQgcmVtb3ZlQ29tcGxldGVkQ3VlcygpOwogCitwcml2YXRlOgorI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGIjsgfQorI2VuZGlmCisKICAgICBNZWRp
YVRpbWUgbV9jdXJyZW50Q3VlU3RhcnRUaW1lOwogICAgIE1lZGlhVGltZSBtX2N1cnJlbnRDdWVF
bmRUaW1lOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHJldmlzaW9uIDIyMjAwNykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMz
MzksNiArMzMzOSw3IEBAIC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRoIG8K
IAogICAgIGJvb2wgd2lsbENoYW5nZSA9IFtbY2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFsdWVD
aGFuZ2VOb3RpZmljYXRpb25Jc1ByaW9yS2V5XSBib29sVmFsdWVdOwogICAgIGJvb2wgc2hvdWxk
TG9nVmFsdWUgPSB0cnVlOworICAgIGJvb2wgc2hvdWxkTG9nID0gdHJ1ZTsKICAgICBXVEY6OkZ1
bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uOwogCiAgICAgaWYgKGNvbnRleHQgPT0gTWVkaWFQbGF5
ZXJBVkZvdW5kYXRpb25PYnNlcnZhdGlvbkNvbnRleHRBVlBsYXllckxheWVyKSB7CkBAIC0zMzc1
LDEwICszMzc2LDEwIEBAIC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRoIG8K
ICAgICAgICAgICAgIHNob3VsZExvZ1ZhbHVlID0gZmFsc2U7CiAgICAgICAgIH0gZWxzZSBpZiAo
W2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAibG9hZGVkVGltZVJhbmdlcyJdKSB7CiAgICAgICAg
ICAgICBmdW5jdGlvbiA9IHN0ZDo6YmluZCgmTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6bG9hZGVkVGltZVJhbmdlc0RpZENoYW5nZSwgbV9jYWxsYmFjaywgUmV0YWluUHRyPE5T
QXJyYXk+KG5ld1ZhbHVlKSk7Ci0gICAgICAgICAgICBzaG91bGRMb2dWYWx1ZSA9IGZhbHNlOwor
ICAgICAgICAgICAgc2hvdWxkTG9nID0gZmFsc2U7CiAgICAgICAgIH0gZWxzZSBpZiAoW2tleVBh
dGggaXNFcXVhbFRvU3RyaW5nOkAic2Vla2FibGVUaW1lUmFuZ2VzIl0pIHsKICAgICAgICAgICAg
IGZ1bmN0aW9uID0gc3RkOjpiaW5kKCZNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpzZWVrYWJsZVRpbWVSYW5nZXNEaWRDaGFuZ2UsIG1fY2FsbGJhY2ssIFJldGFpblB0cjxOU0Fy
cmF5PihuZXdWYWx1ZSkpOwotICAgICAgICAgICAgc2hvdWxkTG9nVmFsdWUgPSBmYWxzZTsKKyAg
ICAgICAgICAgIHNob3VsZExvZyA9IGZhbHNlOwogICAgICAgICB9IGVsc2UgaWYgKFtrZXlQYXRo
IGlzRXF1YWxUb1N0cmluZzpAInRyYWNrcyJdKSB7CiAgICAgICAgICAgICBmdW5jdGlvbiA9IHN0
ZDo6YmluZCgmTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dHJhY2tzRGlkQ2hh
bmdlLCBtX2NhbGxiYWNrLCBSZXRhaW5QdHI8TlNBcnJheT4obmV3VmFsdWUpKTsKICAgICAgICAg
ICAgIHNob3VsZExvZ1ZhbHVlID0gZmFsc2U7CkBAIC0zNDE2LDcgKzM0MTcsNyBAQCAtICh2b2lk
KW9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0aCBvCiAgICAgfQogCiAjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECi0gICAgaWYgKG1fY2FsbGJhY2stPmxvZ2dlcigpLndpbGxMb2cobV9jYWxs
YmFjay0+bG9nQ2hhbm5lbCgpLCBXVEZMb2dMZXZlbERlYnVnKSkgeworICAgIGlmIChzaG91bGRM
b2cgJiYgbV9jYWxsYmFjay0+bG9nZ2VyKCkud2lsbExvZyhtX2NhbGxiYWNrLT5sb2dDaGFubmVs
KCksIFdURkxvZ0xldmVsRGVidWcpKSB7CiAKICAgICAgICAgaWYgKHdpbGxDaGFuZ2UpCiAgICAg
ICAgICAgICBtX2NhbGxiYWNrLT5sb2dnZXIoKS5kZWJ1ZyhtX2NhbGxiYWNrLT5sb2dDaGFubmVs
KCksIFBBTDo6TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcigiTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uIiwgIm9ic2VydmVWYWx1ZUZvcktleVBhdGgiLCBtX2NhbGxiYWNrLT5sb2dJZGVu
dGlmaWVyKCkpLCAid2lsbCBjaGFuZ2UgJyIsIFtrZXlQYXRoIFVURjhTdHJpbmddLCAiJyIpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2Nv
YS5jcHAJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCiAjaW5j
bHVkZSAiQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgPHBhbC9Mb2dnZXIuaD4KIAogI2luY2x1ZGUgIkNvcmVNZWRpYVNvZnRMaW5rLmgi
CiAKQEAgLTExNCwxMyArMTE1LDEzIEBAIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2UgQXVkaW9UcmFj
a1ByaXZhdGUKICAgICBBdWRpb0NvbXBvbmVudCBpb0NvbXBvbmVudCA9IEF1ZGlvQ29tcG9uZW50
RmluZE5leHQobnVsbHB0ciwgJmlvVW5pdERlc2NyaXB0aW9uKTsKICAgICBBU1NFUlQoaW9Db21w
b25lbnQpOwogICAgIGlmICghaW9Db21wb25lbnQpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpjcmVhdGVBdWRpb1VuaXQoJXApIHVuYWJs
ZSB0byBmaW5kIHJlbW90ZSBJTyB1bml0IGNvbXBvbmVudCIsIHRoaXMpOworICAgICAgICBFUlJP
Ul9MT0coTE9HSURFTlRJRklFUiwgInVuYWJsZSB0byBmaW5kIHJlbW90ZSBJTyB1bml0IGNvbXBv
bmVudCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBPU1N0YXR1cyBl
cnIgPSBBdWRpb0NvbXBvbmVudEluc3RhbmNlTmV3KGlvQ29tcG9uZW50LCAmcmVtb3RlSU9Vbml0
KTsKICAgICBpZiAoZXJyKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW1Db2NvYTo6Y3JlYXRlQXVkaW9Vbml0KCVwKSB1bmFibGUgdG8gb3BlbiB2cGlv
IHVuaXQsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7Cisg
ICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAidW5hYmxlIHRvIG9wZW4gdnBpbyB1bml0
LCBlcnJvciA9ICIsIGVyciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZlcnIsICIpIik7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMTI4LDcgKzEyOSw3IEBAIEF1ZGlvQ29tcG9u
ZW50SW5zdGFuY2UgQXVkaW9UcmFja1ByaXZhdGUKICAgICBVSW50MzIgcGFyYW0gPSAxOwogICAg
IGVyciA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KHJlbW90ZUlPVW5pdCwga0F1ZGlvT3V0cHV0VW5p
dFByb3BlcnR5X0VuYWJsZUlPLCBrQXVkaW9Vbml0U2NvcGVfT3V0cHV0LCAwLCAmcGFyYW0sIHNp
emVvZihwYXJhbSkpOwogICAgIGlmIChlcnIpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpjcmVhdGVBdWRpb1VuaXQoJXApIHVuYWJsZSB0
byBlbmFibGUgdnBpbyB1bml0IG91dHB1dCwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCll
cnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJ1bmFi
bGUgdG8gZW5hYmxlIHZwaW8gdW5pdCBvdXRwdXQsIGVycm9yID0gIiwgZXJyLCAiICgiLCAoY29u
c3QgY2hhciopJmVyciwgIikiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogI2Vu
ZGlmCkBAIC0xMzYsMTQgKzEzNywxNCBAQCBBdWRpb0NvbXBvbmVudEluc3RhbmNlIEF1ZGlvVHJh
Y2tQcml2YXRlCiAgICAgQVVSZW5kZXJDYWxsYmFja1N0cnVjdCBjYWxsYmFjayA9IHsgaW5wdXRQ
cm9jLCB0aGlzIH07CiAgICAgZXJyID0gQXVkaW9Vbml0U2V0UHJvcGVydHkocmVtb3RlSU9Vbml0
LCBrQXVkaW9Vbml0UHJvcGVydHlfU2V0UmVuZGVyQ2FsbGJhY2ssIGtBdWRpb1VuaXRTY29wZV9H
bG9iYWwsIDAsICZjYWxsYmFjaywgc2l6ZW9mKGNhbGxiYWNrKSk7CiAgICAgaWYgKGVycikgewot
ICAgICAgICBMT0coTWVkaWEsICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OmNy
ZWF0ZUF1ZGlvVW5pdCglcCkgdW5hYmxlIHRvIHNldCB2cGlvIHVuaXQgc3BlYWtlciBwcm9jLCBl
cnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOworICAgICAgICBF
UlJPUl9MT0coTE9HSURFTlRJRklFUiwgInVuYWJsZSB0byBzZXQgdnBpbyB1bml0IHNwZWFrZXIg
cHJvYywgZXJyb3IgPSAiLCBlcnIsICIgKCIsIChjb25zdCBjaGFyKikmZXJyLCAiKSIpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBVSW50MzIgc2l6ZSA9IHNpemVvZihv
dXRwdXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpKTsKICAgICBlcnIgID0gQXVkaW9V
bml0R2V0UHJvcGVydHkocmVtb3RlSU9Vbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9y
bWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICZvdXRwdXREZXNjcmlwdGlvbi5zdHJlYW1E
ZXNjcmlwdGlvbigpLCAmc2l6ZSk7CiAgICAgaWYgKGVycikgewotICAgICAgICBMT0coTWVkaWEs
ICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OmNyZWF0ZUF1ZGlvVW5pdHMoJXAp
IHVuYWJsZSB0byBnZXQgaW5wdXQgc3RyZWFtIGZvcm1hdCwgZXJyb3IgJWQgKCUuNHMpIiwgdGhp
cywgKGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJ
RVIsICJ1bmFibGUgdG8gZ2V0IGlucHV0IHN0cmVhbSBmb3JtYXQsIGVycm9yID0gIiwgZXJyLCAi
ICgiLCAoY29uc3QgY2hhciopJmVyciwgIikiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCkBAIC0xNTEsMTMgKzE1MiwxMyBAQCBBdWRpb0NvbXBvbmVudEluc3RhbmNlIEF1ZGlv
VHJhY2tQcml2YXRlCiAKICAgICBlcnIgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShyZW1vdGVJT1Vu
aXQsIGtBdWRpb1VuaXRQcm9wZXJ0eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29wZV9JbnB1
dCwgMCwgJm91dHB1dERlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0aW9uKCksIHNpemVvZihvdXRw
dXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpKSk7CiAgICAgaWYgKGVycikgewotICAg
ICAgICBMT0coTWVkaWEsICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OmNyZWF0
ZUF1ZGlvVW5pdHMoJXApIHVuYWJsZSB0byBzZXQgaW5wdXQgc3RyZWFtIGZvcm1hdCwgZXJyb3Ig
JWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgRVJST1Jf
TE9HKExPR0lERU5USUZJRVIsICJ1bmFibGUgdG8gc2V0IGlucHV0IHN0cmVhbSBmb3JtYXQsIGVy
cm9yID0gIiwgZXJyLCAiICgiLCAoY29uc3QgY2hhciopJmVyciwgIikiKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgZXJyID0gQXVkaW9Vbml0SW5pdGlhbGl6ZShyZW1v
dGVJT1VuaXQpOwogICAgIGlmIChlcnIpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpjcmVhdGVBdWRpb1VuaXRzKCVwKSBBdWRpb1VuaXRJ
bml0aWFsaXplKCkgZmFpbGVkLCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNo
YXIqKSZlcnIpOworICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIkF1ZGlvVW5pdElu
aXRpYWxpemUoKSBmYWlsZWQsIGVycm9yID0gIiwgZXJyLCAiICgiLCAoY29uc3QgY2hhciopJmVy
ciwgIikiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0
cmVhbUNvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oCShyZXZpc2lvbiAy
MjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcx
LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCB6ZXJvQnVmZmVyTGlzdChBdWRpb0J1ZmZlckxpc3Qm
LCBzaXplX3QpOwogICAgIHZvaWQgcGxheUludGVybmFsKCk7CiAKKyNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hIjsgfQorI2VuZGlmCisKKwog
ICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2UgbV9yZW1vdGVJT1VuaXQgeyBudWxscHRyIH07CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4gbV9pbnB1dERlc2Ny
aXB0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1f
b3V0cHV0RGVzY3JpcHRpb247CkluZGV4OiBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0
aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMJ
KHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25z
L2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMJKHdvcmtpbmcgY29weSkKQEAgLTI2Miw2ICsy
NjIsNyBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJEYXRhYmFzZSJdID0gIkRhdGFiYXNlCiBsb2NhbGl6
ZWRTdHJpbmdzWyJEYXRhYmFzZSBubyBsb25nZXIgaGFzIGV4cGVjdGVkIHZlcnNpb24uIl0gPSAi
RGF0YWJhc2Ugbm8gbG9uZ2VyIGhhcyBleHBlY3RlZCB2ZXJzaW9uLiI7CiBsb2NhbGl6ZWRTdHJp
bmdzWyJEYXRhYmFzZXMiXSA9ICJEYXRhYmFzZXMiOwogbG9jYWxpemVkU3RyaW5nc1siRGF0ZSJd
ID0gIkRhdGUiOworbG9jYWxpemVkU3RyaW5nc1siRGVidWciXSA9ICJEZWJ1ZyI7CiBsb2NhbGl6
ZWRTdHJpbmdzWyJEZWJ1ZzogIl0gPSAiRGVidWc6ICI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJEZWJ1
Z2dlciJdID0gIkRlYnVnZ2VyIjsKIGxvY2FsaXplZFN0cmluZ3NbIkRlYnVnZ2VyIFBhdXNlZCJd
ID0gIkRlYnVnZ2VyIFBhdXNlZCI7CkBAIC00NzMsNiArNDc0LDcgQEAgbG9jYWxpemVkU3RyaW5n
c1siSW5kZW50IHdpZHRoOiJdID0gIkluZAogbG9jYWxpemVkU3RyaW5nc1siSW5kZXgiXSA9ICJJ
bmRleCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJJbmRleCBLZXkgXHUyMDE0ICVzIl0gPSAiSW5kZXgg
S2V5IFx1MjAxNCAlcyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJJbmRleGVkIERhdGFiYXNlcyJdID0g
IkluZGV4ZWQgRGF0YWJhc2VzIjsKK2xvY2FsaXplZFN0cmluZ3NbIkluZm8iXSA9ICJJbmZvIjsK
IGxvY2FsaXplZFN0cmluZ3NbIkluZm86ICJdID0gIkluZm86ICI7CiBsb2NhbGl6ZWRTdHJpbmdz
WyJJbmhlcml0ZWQgRnJvbTogIl0gPSAiSW5oZXJpdGVkIEZyb206ICI7CiBsb2NhbGl6ZWRTdHJp
bmdzWyJJbmhlcml0ZWQgZnJvbSAlcyJdID0gIkluaGVyaXRlZCBmcm9tICVzIjsKQEAgLTUyNSw2
ICs1MjcsNyBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJMb2NhbCBTdG9yYWdlIl0gPSAiTG9jCiBsb2Nh
bGl6ZWRTdHJpbmdzWyJMb2NhbCBWYXJpYWJsZXMiXSA9ICJMb2NhbCBWYXJpYWJsZXMiOwogbG9j
YWxpemVkU3RyaW5nc1siTG9jYXRlZCBhdCAlcyJdID0gIkxvY2F0ZWQgYXQgJXMiOwogbG9jYWxp
emVkU3RyaW5nc1siTG9jYXRpb24iXSA9ICJMb2NhdGlvbiI7Citsb2NhbGl6ZWRTdHJpbmdzWyJM
b2ciXSA9ICJMb2ciOwogbG9jYWxpemVkU3RyaW5nc1siTG9nIENhbnZhcyBDb250ZXh0Il0gPSAi
TG9nIENhbnZhcyBDb250ZXh0IjsKIGxvY2FsaXplZFN0cmluZ3NbIkxvZyBFbGVtZW50Il0gPSAi
TG9nIEVsZW1lbnQiOwogbG9jYWxpemVkU3RyaW5nc1siTG9nIEZyYW1lIFRleHQiXSA9ICJMb2cg
RnJhbWUgVGV4dCI7CkBAIC01NTAsNiArNTUzLDggQEAgbG9jYWxpemVkU3RyaW5nc1siTWF4IENv
bXBhcmlzb24iXSA9ICJNYQogbG9jYWxpemVkU3RyaW5nc1siTWF4aW11bSJdID0gIk1heGltdW0i
OwogbG9jYWxpemVkU3RyaW5nc1siTWF4aW11bSBTaXplOiAlcyJdID0gIk1heGltdW0gU2l6ZTog
JXMiOwogbG9jYWxpemVkU3RyaW5nc1siTWF4aW11bSBtYXhpbXVtIG1lbW9yeSBzaXplIGluIHRo
aXMgcmVjb3JkaW5nIl0gPSAiTWF4aW11bSBtYXhpbXVtIG1lbW9yeSBzaXplIGluIHRoaXMgcmVj
b3JkaW5nIjsKK2xvY2FsaXplZFN0cmluZ3NbIk1lZGlhIl0gPSAiTWVkaWEiOworbG9jYWxpemVk
U3RyaW5nc1siTWVkaWEgTG9nZ2luZzoiXSA9ICJNZWRpYSBMb2dnaW5nOiI7CiBsb2NhbGl6ZWRT
dHJpbmdzWyJNZWRpYTogIl0gPSAiTWVkaWE6ICI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJNZWRpdW0i
XSA9ICJNZWRpdW0iOwogbG9jYWxpemVkU3RyaW5nc1siTWVtb3J5Il0gPSAiTWVtb3J5IjsKQEAg
LTYwNiw2ICs2MTEsNyBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJOdW1iZXIiXSA9ICJOdW1iZXIiOwog
bG9jYWxpemVkU3RyaW5nc1siTnVtZXJpYyJdID0gIk51bWVyaWMiOwogbG9jYWxpemVkU3RyaW5n
c1siT2JqZWN0IEdyYXBoIl0gPSAiT2JqZWN0IEdyYXBoIjsKIGxvY2FsaXplZFN0cmluZ3NbIk9i
amVjdCBTdG9yZSJdID0gIk9iamVjdCBTdG9yZSI7Citsb2NhbGl6ZWRTdHJpbmdzWyJPZmYiXSA9
ICJPZmYiOwogbG9jYWxpemVkU3RyaW5nc1siT2Zmc2V0Il0gPSAiT2Zmc2V0IjsKIGxvY2FsaXpl
ZFN0cmluZ3NbIk9uY2UiXSA9ICJPbmNlIjsKIGxvY2FsaXplZFN0cmluZ3NbIk9ubGluZSJdID0g
Ik9ubGluZSI7CkBAIC05NDIsMTAgKzk0OCwxMyBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJWZXJ0ZXgg
U2hhZGVyIl0gPSAiVmVyCiBsb2NhbGl6ZWRTdHJpbmdzWyJWZXJ0aWNhbCJdID0gIlZlcnRpY2Fs
IjsKIGxvY2FsaXplZFN0cmluZ3NbIlZpZXcgdmFyaWFibGUgdmFsdWUiXSA9ICJWaWV3IHZhcmlh
YmxlIHZhbHVlIjsKIGxvY2FsaXplZFN0cmluZ3NbIlZpc2liaWxpdHkiXSA9ICJWaXNpYmlsaXR5
IjsKK2xvY2FsaXplZFN0cmluZ3NbIldhcm5pbmciXSA9ICJXYXJuaW5nIjsKIGxvY2FsaXplZFN0
cmluZ3NbIldhcm5pbmc6ICJdID0gIldhcm5pbmc6ICI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJXYXJu
aW5ncyJdID0gIldhcm5pbmdzIjsKIGxvY2FsaXplZFN0cmluZ3NbIldhdGNoIEV4cHJlc3Npb25z
Il0gPSAiV2F0Y2ggRXhwcmVzc2lvbnMiOwogbG9jYWxpemVkU3RyaW5nc1siV2ViIEluc3BlY3Rv
ciJdID0gIldlYiBJbnNwZWN0b3IiOworbG9jYWxpemVkU3RyaW5nc1siV2ViUlRDIl0gPSAiV2Vi
UlRDIjsKK2xvY2FsaXplZFN0cmluZ3NbIldlYlJUQyBMb2dnaW5nOiJdID0gIldlYlJUQyBMb2dn
aW5nOiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJXZWJTb2NrZXQgQ29ubmVjdGlvbiBFc3RhYmxpc2hl
ZCJdID0gIldlYlNvY2tldCBDb25uZWN0aW9uIEVzdGFibGlzaGVkIjsKIGxvY2FsaXplZFN0cmlu
Z3NbIldlaWdodCJdID0gIldlaWdodCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJXaGl0ZXNwYWNlIl0g
PSAiV2hpdGVzcGFjZSI7CkluZGV4OiBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9NYWluLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTWFpbi5odG1sCShyZXZpc2lvbiAyMjIwMDcpCisrKyBTb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTM3NSw2ICszNzUs
NyBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvTGF6eVNvdXJjZUNvZGVMb2NhdGlvbi5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9MaW5lV2lkZ2V0LmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0xvZ09iamVjdC5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9Ik1vZGVscy9Mb2dnaW5nQ2hhbm5lbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9Ik1vZGVscy9NZW1vcnlDYXRlZ29yeS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9Ik1vZGVscy9NZW1vcnlJbnN0cnVtZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iTW9kZWxzL01lbW9yeVByZXNzdXJlRXZlbnQuanMiPjwvc2NyaXB0PgpJbmRleDogU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5q
cwkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQmFzZS9TZXR0aW5nLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNiArMTIzLDcgQEAgV0ku
c2V0dGluZ3MgPSB7CiAgICAgc2hvd1Njb3BlQ2hhaW5PblBhdXNlOiBuZXcgV0kuU2V0dGluZygi
c2hvdy1zY29wZS1jaGFpbi1zaWRlYmFyIiwgdHJ1ZSksCiAgICAgc2hvd0ltYWdlR3JpZDogbmV3
IFdJLlNldHRpbmcoInNob3ctaW1hZ2UtZ3JpZCIsIGZhbHNlKSwKICAgICBzaG93Q2FudmFzUGF0
aDogbmV3IFdJLlNldHRpbmcoInNob3ctY2FudmFzLXBhdGgiLCBmYWxzZSksCisgICAgbG9nTGV2
ZWw6IG5ldyBXSS5TZXR0aW5nKCJsb2ctbGV2ZWwiLCB7IHdlYnJ0YzogImRlYnVnIiwgbWVkaWE6
ICJkZWJ1ZyIgfSksCiAKICAgICAvLyBFeHBlcmltZW50YWwKICAgICBleHBlcmltZW50YWxTaG93
Q2FudmFzQ29udGV4dHNJblJlc291cmNlczogbmV3IFdJLlNldHRpbmcoImV4cGVyaW1lbnRhbC1z
aG93LWNhbnZhcy1jb250ZXh0cy1pbi1yZXNvdXJjZXMiLCBmYWxzZSksCkluZGV4OiBTb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Mb2dNYW5hZ2VyLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL0xvZ01hbmFnZXIuanMJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0xvZ01hbmFnZXIuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDEwICszNCwzNyBAQCBXSS5Mb2dNYW5hZ2VyID0gY2xhc3MgTG9nTWFuYWdlciBl
eHRlbmRzCiAgICAgICAgIHRoaXMuX2lzTmV3UGFnZU9yUmVsb2FkID0gZmFsc2U7CiAKICAgICAg
ICAgV0kuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VE
aWRDaGFuZ2UsIHRoaXMuX21haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcyk7CisKKyAgICAgICAg
dGhpcy5fY3VzdG9tTG9nZ2luZ0NoYW5uZWxzID0gW107CisgICAgICAgIHRoaXMuX2xvZ2dpbmdD
aGFubmVsU291cmNlcyA9IFtdOworCisgICAgICAgIGlmIChXSS5Mb2dNYW5hZ2VyLnN1cHBvcnRz
TG9nQ2hhbm5lbHMoKSkgeworICAgICAgICAgICAgdGhpcy5fbG9nZ2luZ0NoYW5uZWxTb3VyY2Vz
ID0gWyBXSS5Db25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLk1lZGlhLCBXSS5Db25zb2xlTWVz
c2FnZS5NZXNzYWdlU291cmNlLldlYlJUQyBdOworICAgICAgICAgICAgQ29uc29sZUFnZW50Lmdl
dExvZ2dpbmdDaGFubmVscygoZXJyb3IsIGNoYW5uZWxzKSA9PiB7CisgICAgICAgICAgICAgICAg
aWYgKGVycm9yKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAg
ICBmb3IgKGxldCBjaGFubmVsIG9mIGNoYW5uZWxzKQorICAgICAgICAgICAgICAgICAgICBjb25z
b2xlLmFzc2VydCh0aGlzLl9sb2dnaW5nQ2hhbm5lbFNvdXJjZXMuaW5jbHVkZXMoY2hhbm5lbC5z
b3VyY2UpKTsKKworICAgICAgICAgICAgICAgIHRoaXMuX2N1c3RvbUxvZ2dpbmdDaGFubmVscyA9
IGNoYW5uZWxzLm1hcChXSS5Mb2dnaW5nQ2hhbm5lbC5mcm9tUGF5bG9hZCk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFN0YXRpYworCisgICAgc3RhdGljIHN1
cHBvcnRzTG9nQ2hhbm5lbHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuICEhQ29uc29sZUFnZW50
LmdldExvZ2dpbmdDaGFubmVsczsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKIAorICAgIGdldCBj
dXN0b21Mb2dnaW5nQ2hhbm5lbHMoKSB7IHJldHVybiB0aGlzLl9jdXN0b21Mb2dnaW5nQ2hhbm5l
bHM7IH0KKworICAgIGdldCBsb2dDaGFubmVsU291cmNlcygpIHsgcmV0dXJuIHRoaXMuX2xvZ2dp
bmdDaGFubmVsU291cmNlczsgfQorCiAgICAgbWVzc2FnZVdhc0FkZGVkKHRhcmdldCwgc291cmNl
LCBsZXZlbCwgdGV4dCwgdHlwZSwgdXJsLCBsaW5lLCBjb2x1bW4sIHJlcGVhdENvdW50LCBwYXJh
bWV0ZXJzLCBzdGFja1RyYWNlLCByZXF1ZXN0SWQpCiAgICAgewogICAgICAgICAvLyBDYWxsZWQg
ZnJvbSBXSS5Db25zb2xlT2JzZXJ2ZXIuCkluZGV4OiBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvQ29uc29sZU1lc3NhZ2UuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NvbnNvbGVNZXNzYWdlLmpzCShy
ZXZpc2lvbiAyMjIwMDcpCisrKyBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvQ29uc29sZU1lc3NhZ2UuanMJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2ICsxMDksOCBA
QCBXSS5Db25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNlID0gewogICAgIENTUzogImNzcyIsCiAg
ICAgU2VjdXJpdHk6ICJzZWN1cml0eSIsCiAgICAgT3RoZXI6ICJvdGhlciIsCisgICAgTWVkaWE6
ICJtZWRpYSIsCisgICAgV2ViUlRDOiAid2VicnRjIiwKIH07CiAKIFdJLkNvbnNvbGVNZXNzYWdl
Lk1lc3NhZ2VUeXBlID0gewpJbmRleDogU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL0lzc3VlTWVzc2FnZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSXNzdWVNZXNzYWdlLmpzCShyZXZpc2lvbiAyMjIw
MDcpCisrKyBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSXNzdWVN
ZXNzYWdlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC02Niw2ICs2Niw4IEBAIFdJLklzc3VlTWVzc2Fn
ZSA9IGNsYXNzIElzc3VlTWVzc2FnZSBleHQKICAgICAgICAgY2FzZSAiYXBwY2FjaGUiOgogICAg
ICAgICBjYXNlICJyZW5kZXJpbmciOgogICAgICAgICBjYXNlICJvdGhlciI6CisgICAgICAgIGNh
c2UgIm1lZGlhIjoKKyAgICAgICAgY2FzZSAid2VicnRjIjoKICAgICAgICAgICAgIHRoaXMuX3R5
cGUgPSBXSS5Jc3N1ZU1lc3NhZ2UuVHlwZS5PdGhlcklzc3VlOwogICAgICAgICAgICAgYnJlYWs7
CiAKSW5kZXg6IFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Mb2dn
aW5nQ2hhbm5lbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvTG9nZ2luZ0NoYW5uZWwuanMJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0xvZ2dpbmdDaGFubmVsLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5Mb2dnaW5nQ2hh
bm5lbCA9IGNsYXNzIExvZ2dpbmdDaGFubmVsCit7CisgICAgY29uc3RydWN0b3Ioc291cmNlLCBs
ZXZlbCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBzb3VyY2UgPT09ICJz
dHJpbmciKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoc291cmNlID09PSBXSS5Db25zb2xlTWVz
c2FnZS5NZXNzYWdlU291cmNlLk1lZGlhIHx8IHNvdXJjZSA9PT0gV0kuQ29uc29sZU1lc3NhZ2Uu
TWVzc2FnZVNvdXJjZS5XZWJSVEMpOworCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBs
ZXZlbCA9PT0gInN0cmluZyIpOworICAgICAgICBjb25zb2xlLmFzc2VydChsZXZlbCA9PT0gV0ku
TG9nZ2luZ0NoYW5uZWwuTGV2ZWwuT2ZmIHx8IGxldmVsID09PSBXSS5Mb2dnaW5nQ2hhbm5lbC5M
ZXZlbC5BbHdheXMgfHwgbGV2ZWwgPT09IFdJLkxvZ2dpbmdDaGFubmVsLkxldmVsLkVycm9yIHx8
IGxldmVsID09PSBXSS5Mb2dnaW5nQ2hhbm5lbC5MZXZlbC5XYXJuaW5nIHx8IGxldmVsID09PSBX
SS5Mb2dnaW5nQ2hhbm5lbC5MZXZlbC5Ob3RpY2UgfHwgbGV2ZWwgPT09IFdJLkxvZ2dpbmdDaGFu
bmVsLkxldmVsLkluZm8gfHwgbGV2ZWwgPT09IFdJLkxvZ2dpbmdDaGFubmVsLkxldmVsLkRlYnVn
KTsKKworICAgICAgICB0aGlzLl9zb3VyY2UgPSBzb3VyY2U7CisgICAgICAgIHRoaXMuX2xldmVs
ID0gbGV2ZWw7CisgICAgfQorCisgICAgLy8gUGF5bG9hZAorICAgIHN0YXRpYyBmcm9tUGF5bG9h
ZChwYXlsb2FkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBXSS5Mb2dnaW5nQ2hhbm5lbChw
YXlsb2FkLnNvdXJjZSwgcGF5bG9hZC5sZXZlbCk7CisgICAgfQorCisgICAgLy8gUHVibGljCisg
ICAgZ2V0IHNvdXJjZSgpIHsgcmV0dXJuIHRoaXMuX3NvdXJjZTsgfQorICAgIGdldCBsZXZlbCgp
IHsgcmV0dXJuIHRoaXMuX2xldmVsOyB9Cit9OworCitXSS5Mb2dnaW5nQ2hhbm5lbC5MZXZlbCA9
IHsKKyAgICBPZmY6ICJvZmYiLAorICAgIExvZzogImxvZyIsCisgICAgRXJyb3I6ICJlcnJvciIs
CisgICAgV2FybmluZzogIndhcm5pbmciLAorICAgIEluZm86ICJpbmZvIiwKKyAgICBEZWJ1Zzog
ImRlYnVnIiwKK307CkluZGV4OiBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Mb2dDb250ZW50Vmlldy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Mb2dDb250ZW50Vmlldy5qcwkocmV2aXNpb24gMjIyMDA3
KQorKysgU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTG9nQ29udGVu
dFZpZXcuanMJKHdvcmtpbmcgY29weSkKQEAgLTc2LDYgKzc2LDE4IEBAIFdJLkxvZ0NvbnRlbnRW
aWV3ID0gY2xhc3MgTG9nQ29udGVudFZpZXcKICAgICAgICAgdGhpcy5fc2NvcGVCYXIgPSBuZXcg
V0kuU2NvcGVCYXIoImxvZy1zY29wZS1iYXIiLCBzY29wZUJhckl0ZW1zLCBzY29wZUJhckl0ZW1z
WzBdKTsKICAgICAgICAgdGhpcy5fc2NvcGVCYXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5TY29wZUJh
ci5FdmVudC5TZWxlY3Rpb25DaGFuZ2VkLCB0aGlzLl9zY29wZUJhclNlbGVjdGlvbkRpZENoYW5n
ZSwgdGhpcyk7CiAKKyAgICAgICAgdGhpcy5faGF2ZUxvZ01lc3NhZ2VzID0gZmFsc2U7CisgICAg
ICAgIGlmIChXSS5Mb2dNYW5hZ2VyLnN1cHBvcnRzTG9nQ2hhbm5lbHMoKSkgeworICAgICAgICAg
ICAgbGV0IG1lc3NhZ2VDaGFubmVsQmFySXRlbXMgPSBbCisgICAgICAgICAgICAgICAgbmV3IFdJ
LlNjb3BlQmFySXRlbShXSS5Mb2dDb250ZW50Vmlldy5TY29wZXMuQWxsQ2hhbm5lbHMsIFdJLlVJ
U3RyaW5nKCJBbGwiKSwgdHJ1ZSksCisgICAgICAgICAgICAgICAgbmV3IFdJLlNjb3BlQmFySXRl
bShXSS5Mb2dDb250ZW50Vmlldy5TY29wZXMuTWVkaWEsIFdJLlVJU3RyaW5nKCJNZWRpYSIpLCBm
YWxzZSwgIm1lZGlhIiksCisgICAgICAgICAgICAgICAgbmV3IFdJLlNjb3BlQmFySXRlbShXSS5M
b2dDb250ZW50Vmlldy5TY29wZXMuV2ViUlRDLCBXSS5VSVN0cmluZygiV2ViUlRDIiksIGZhbHNl
LCAid2VicnRjIikKKyAgICAgICAgICAgIF07CisKKyAgICAgICAgICAgIHRoaXMuX21lc3NhZ2VT
b3VyY2VCYXIgPSBuZXcgV0kuU2NvcGVCYXIoIm1lc3NhZ2UtY2hhbm5lbC1zY29wZS1iYXIiLCBt
ZXNzYWdlQ2hhbm5lbEJhckl0ZW1zLCBtZXNzYWdlQ2hhbm5lbEJhckl0ZW1zWzBdKTsKKyAgICAg
ICAgICAgIHRoaXMuX21lc3NhZ2VTb3VyY2VCYXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5TY29wZUJh
ci5FdmVudC5TZWxlY3Rpb25DaGFuZ2VkLCB0aGlzLl9tZXNzYWdlU291cmNlQmFyU2VsZWN0aW9u
RGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgfQorCiAgICAgICAgIHRoaXMuX2dhcmJhZ2VDb2xs
ZWN0TmF2aWdhdGlvbkl0ZW0gPSBuZXcgV0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0oImNsZWFyLWxv
ZyIsIFdJLlVJU3RyaW5nKCJDb2xsZWN0IGdhcmJhZ2UiKSwgIkltYWdlcy9OYXZpZ2F0aW9uSXRl
bUdhcmJhZ2VDb2xsZWN0LnN2ZyIsIDE2LCAxNik7CiAgICAgICAgIHRoaXMuX2dhcmJhZ2VDb2xs
ZWN0TmF2aWdhdGlvbkl0ZW0udmlzaWJpbGl0eVByaW9yaXR5ID0gV0kuTmF2aWdhdGlvbkl0ZW0u
VmlzaWJpbGl0eVByaW9yaXR5LkxvdzsKICAgICAgICAgdGhpcy5fZ2FyYmFnZUNvbGxlY3ROYXZp
Z2F0aW9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50
LkNsaWNrZWQsIHRoaXMuX2dhcmJhZ2VDb2xsZWN0LCB0aGlzKTsKQEAgLTEwMyw2ICsxMTUsMTAg
QEAgV0kuTG9nQ29udGVudFZpZXcgPSBjbGFzcyBMb2dDb250ZW50VmlldwogICAgIGdldCBuYXZp
Z2F0aW9uSXRlbXMoKQogICAgIHsKICAgICAgICAgbGV0IG5hdmlnYXRpb25JdGVtcyA9IFt0aGlz
Ll9zY29wZUJhcl07CisKKyAgICAgICAgaWYgKHRoaXMuX2hhdmVMb2dNZXNzYWdlcyAmJiB0aGlz
Ll9tZXNzYWdlU291cmNlQmFyKQorICAgICAgICAgICAgbmF2aWdhdGlvbkl0ZW1zLnB1c2godGhp
cy5fbWVzc2FnZVNvdXJjZUJhcik7CisKICAgICAgICAgaWYgKEhlYXBBZ2VudC5nYykKICAgICAg
ICAgICAgIG5hdmlnYXRpb25JdGVtcy5wdXNoKHRoaXMuX2dhcmJhZ2VDb2xsZWN0TmF2aWdhdGlv
bkl0ZW0pOwogCkBAIC0zMzgsNiArMzU0LDIyIEBAIFdJLkxvZ0NvbnRlbnRWaWV3ID0gY2xhc3Mg
TG9nQ29udGVudFZpZXcKICAgICAgICAgdGhpcy5fY2xlYXJQcm92aXNpb25hbFN0YXRlKCk7CiAg
ICAgfQogCisgICAgX3Njb3BlRnJvbU1lc3NhZ2VTb3VyY2Uoc291cmNlKQorICAgIHsKKyAgICAg
ICAgdmFyIG1lc3NhZ2VTb3VyY2U7CisKKyAgICAgICAgc3dpdGNoIChzb3VyY2UpIHsKKyAgICAg
ICAgY2FzZSBXSS5Db25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLk1lZGlhOgorICAgICAgICAg
ICAgbWVzc2FnZVNvdXJjZSA9IFdJLkxvZ0NvbnRlbnRWaWV3LlNjb3Blcy5NZWRpYTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdJLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3Vy
Y2UuV2ViUlRDOgorICAgICAgICAgICAgbWVzc2FnZVNvdXJjZSA9IFdJLkxvZ0NvbnRlbnRWaWV3
LlNjb3Blcy5XZWJSVEM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybiBtZXNzYWdlU291cmNlOworICAgIH0KKwogICAgIF9zY29wZUZyb21NZXNzYWdlTGV2
ZWwobGV2ZWwpCiAgICAgewogICAgICAgICB2YXIgbWVzc2FnZUxldmVsOwpAQCAtMzcyLDEwICs0
MDQsMTYgQEAgV0kuTG9nQ29udGVudFZpZXcgPSBjbGFzcyBMb2dDb250ZW50VmlldwogCiAgICAg
X21lc3NhZ2VBZGRlZChldmVudCkKICAgICB7CisgICAgICAgIGxldCBtZXNzYWdlID0gZXZlbnQu
ZGF0YS5tZXNzYWdlOwogICAgICAgICBpZiAodGhpcy5fc3RhcnRlZFByb3Zpc2lvbmFsTG9hZCkK
LSAgICAgICAgICAgIHRoaXMuX3Byb3Zpc2lvbmFsTWVzc2FnZXMucHVzaChldmVudC5kYXRhLm1l
c3NhZ2UpOworICAgICAgICAgICAgdGhpcy5fcHJvdmlzaW9uYWxNZXNzYWdlcy5wdXNoKG1lc3Nh
Z2UpOworCisgICAgICAgIGlmICghdGhpcy5faGF2ZUxvZ01lc3NhZ2VzICYmIFdJLmxvZ01hbmFn
ZXIubG9nQ2hhbm5lbFNvdXJjZXMuaW5jbHVkZXMobWVzc2FnZS5fc291cmNlKSkgeworICAgICAg
ICAgICAgdGhpcy5faGF2ZUxvZ01lc3NhZ2VzID0gdHJ1ZTsKKyAgICAgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkNvbnRlbnRWaWV3LkV2ZW50Lk5hdmlnYXRpb25JdGVt
c0RpZENoYW5nZSk7CisgICAgICAgIH0KIAotICAgICAgICB0aGlzLl9sb2dWaWV3Q29udHJvbGxl
ci5hcHBlbmRDb25zb2xlTWVzc2FnZShldmVudC5kYXRhLm1lc3NhZ2UpOworICAgICAgICB0aGlz
Ll9sb2dWaWV3Q29udHJvbGxlci5hcHBlbmRDb25zb2xlTWVzc2FnZShtZXNzYWdlKTsKICAgICB9
CiAKICAgICBfcHJldmlvdXNNZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkKGV2ZW50KQpAQCAtNzMy
LDYgKzc3MCwzMSBAQCBXSS5Mb2dDb250ZW50VmlldyA9IGNsYXNzIExvZ0NvbnRlbnRWaWV3CiAg
ICAgICAgIH0KICAgICB9CiAKKyAgICBfbWVzc2FnZVNob3VsZEJlVmlzaWJsZShtZXNzYWdlKQor
ICAgIHsKKyAgICAgICAgbGV0IG1lc3NhZ2VTb3VyY2UgPSB0aGlzLl9tZXNzYWdlU291cmNlQmFy
ICYmIHRoaXMuX3Njb3BlRnJvbU1lc3NhZ2VTb3VyY2UobWVzc2FnZS5fc291cmNlKTsKKyAgICAg
ICAgaWYgKG1lc3NhZ2VTb3VyY2UpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fbWVzc2FnZVNv
dXJjZUJhci5pdGVtKG1lc3NhZ2VTb3VyY2UpLnNlbGVjdGVkOworCisgICAgICAgIGxldCBtZXNz
YWdlTGV2ZWwgPSB0aGlzLl9zY29wZUZyb21NZXNzYWdlTGV2ZWwobWVzc2FnZS5sZXZlbCk7Cisg
ICAgICAgIGlmIChtZXNzYWdlTGV2ZWwpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fc2NvcGVC
YXIuaXRlbShtZXNzYWdlTGV2ZWwpLnNlbGVjdGVkOworCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIF9tZXNzYWdlU291cmNlQmFyU2VsZWN0aW9uRGlkQ2hhbmdlKGV2ZW50KQor
ICAgIHsKKyAgICAgICAgdmFyIGl0ZW0gPSB0aGlzLl9tZXNzYWdlU291cmNlQmFyLnNlbGVjdGVk
SXRlbXNbMF07CisgICAgICAgIGlmIChpdGVtLmlkID09PSBXSS5Mb2dDb250ZW50Vmlldy5TY29w
ZXMuQWxsQ2hhbm5lbHMpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGl0ZW0gb2YgdGhpcy5fbWVz
c2FnZVNvdXJjZUJhci5pdGVtcykKKyAgICAgICAgICAgICAgICBpdGVtLmVsZW1lbnQuY2xhc3NM
aXN0LnJlbW92ZSgidW5yZWFkIik7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgaXRlbS5l
bGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoInVucmVhZCIpOworCisgICAgICAgIHRoaXMuX2ZpbHRl
ck1lc3NhZ2VFbGVtZW50cyh0aGlzLl9hbGxNZXNzYWdlRWxlbWVudHMoKSk7CisgICAgfQorCiAg
ICAgX3Njb3BlQmFyU2VsZWN0aW9uRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFy
IGl0ZW0gPSB0aGlzLl9zY29wZUJhci5zZWxlY3RlZEl0ZW1zWzBdOwpAQCAtNzQ3LDE4ICs4MTAs
MTUgQEAgV0kuTG9nQ29udGVudFZpZXcgPSBjbGFzcyBMb2dDb250ZW50VmlldwogCiAgICAgX2Zp
bHRlck1lc3NhZ2VFbGVtZW50cyhtZXNzYWdlRWxlbWVudHMpCiAgICAgewotICAgICAgICB2YXIg
c2hvd3NBbGwgPSB0aGlzLl9zY29wZUJhci5pdGVtKFdJLkxvZ0NvbnRlbnRWaWV3LlNjb3Blcy5B
bGwpLnNlbGVjdGVkOworICAgICAgICBsZXQgc2hvd0FsbExldmVscyA9IHRoaXMuX3Njb3BlQmFy
Lml0ZW0oV0kuTG9nQ29udGVudFZpZXcuU2NvcGVzLkFsbCkuc2VsZWN0ZWQ7CisgICAgICAgIGxl
dCBzaG93QWxsU291cmNlcyA9IHRoaXMuX21lc3NhZ2VTb3VyY2VCYXIgJiYgdGhpcy5fbWVzc2Fn
ZVNvdXJjZUJhci5pdGVtKFdJLkxvZ0NvbnRlbnRWaWV3LlNjb3Blcy5BbGxDaGFubmVscykuc2Vs
ZWN0ZWQ7CiAKICAgICAgICAgbWVzc2FnZUVsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24obWVzc2Fn
ZUVsZW1lbnQpIHsKLSAgICAgICAgICAgIHZhciB2aXNpYmxlID0gc2hvd3NBbGwgfHwgbWVzc2Fn
ZUVsZW1lbnQuX19jb21tYW5kVmlldyBpbnN0YW5jZW9mIFdJLkNvbnNvbGVDb21tYW5kVmlldyB8
fCBtZXNzYWdlRWxlbWVudC5fX21lc3NhZ2UgaW5zdGFuY2VvZiBXSS5Db25zb2xlQ29tbWFuZFJl
c3VsdE1lc3NhZ2U7Ci0gICAgICAgICAgICBpZiAoIXZpc2libGUpIHsKLSAgICAgICAgICAgICAg
ICB2YXIgbWVzc2FnZUxldmVsID0gdGhpcy5fc2NvcGVGcm9tTWVzc2FnZUxldmVsKG1lc3NhZ2VF
bGVtZW50Ll9fbWVzc2FnZS5sZXZlbCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAobWVzc2FnZUxl
dmVsKQotICAgICAgICAgICAgICAgICAgICB2aXNpYmxlID0gdGhpcy5fc2NvcGVCYXIuaXRlbSht
ZXNzYWdlTGV2ZWwpLnNlbGVjdGVkOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgbGV0IHZp
c2libGUgPSAoc2hvd0FsbExldmVscyAmJiBzaG93QWxsU291cmNlcykgfHwgbWVzc2FnZUVsZW1l
bnQuX19jb21tYW5kVmlldyBpbnN0YW5jZW9mIFdJLkNvbnNvbGVDb21tYW5kVmlldyB8fCBtZXNz
YWdlRWxlbWVudC5fX21lc3NhZ2UgaW5zdGFuY2VvZiBXSS5Db25zb2xlQ29tbWFuZFJlc3VsdE1l
c3NhZ2U7CisgICAgICAgICAgICBpZiAoIXZpc2libGUpCisgICAgICAgICAgICAgICAgdmlzaWJs
ZSA9IHRoaXMuX21lc3NhZ2VTaG91bGRCZVZpc2libGUobWVzc2FnZUVsZW1lbnQuX19tZXNzYWdl
KTsKIAotICAgICAgICAgICAgdmFyIGNsYXNzTGlzdCA9IG1lc3NhZ2VFbGVtZW50LmNsYXNzTGlz
dDsKKyAgICAgICAgICAgIGxldCBjbGFzc0xpc3QgPSBtZXNzYWdlRWxlbWVudC5jbGFzc0xpc3Q7
CiAgICAgICAgICAgICBpZiAodmlzaWJsZSkKICAgICAgICAgICAgICAgICBjbGFzc0xpc3QucmVt
b3ZlKFdJLkxvZ0NvbnRlbnRWaWV3LkZpbHRlcmVkT3V0U3R5bGVDbGFzc05hbWUpOwogICAgICAg
ICAgICAgZWxzZSB7CkBAIC0xMDcyLDcgKzExMzIsMTAgQEAgV0kuTG9nQ29udGVudFZpZXcuU2Nv
cGVzID0gewogICAgIEFsbDogImxvZy1hbGwiLAogICAgIEVycm9yczogImxvZy1lcnJvcnMiLAog
ICAgIFdhcm5pbmdzOiAibG9nLXdhcm5pbmdzIiwKLSAgICBMb2dzOiAibG9nLWxvZ3MiCisgICAg
TG9nczogImxvZy1sb2dzIiwKKyAgICBBbGxDaGFubmVsczogImxvZy1hbGwtY2hhbm5lbHMiLAor
ICAgIE1lZGlhOiAibG9nLW1lZGlhIiwKKyAgICBXZWJSVEM6ICJsb2ctd2VicnRjIgogfTsKIAog
V0kuTG9nQ29udGVudFZpZXcuSXRlbVdyYXBwZXJTdHlsZUNsYXNzTmFtZSA9ICJjb25zb2xlLWl0
ZW0iOwpJbmRleDogU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2V0
dGluZ3NUYWJDb250ZW50Vmlldy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9TZXR0aW5nc1RhYkNvbnRlbnRWaWV3LmpzCShyZXZpc2lv
biAyMjIwMDcpCisrKyBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9T
ZXR0aW5nc1RhYkNvbnRlbnRWaWV3LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yMjksNiArMjI5LDI4
IEBAIFdJLlNldHRpbmdzVGFiQ29udGVudFZpZXcgPSBjbGFzcyBTZXR0aW4KICAgICAgICAgem9v
bUVkaXRvci5hZGRFdmVudExpc3RlbmVyKFdJLlNldHRpbmdFZGl0b3IuRXZlbnQuVmFsdWVEaWRD
aGFuZ2UsICgpID0+IHsgV0kuc2V0Wm9vbUZhY3Rvcih6b29tRWRpdG9yLnZhbHVlKTsgfSk7CiAg
ICAgICAgIFdJLnNldHRpbmdzLnpvb21GYWN0b3IuYWRkRXZlbnRMaXN0ZW5lcihXSS5TZXR0aW5n
LkV2ZW50LkNoYW5nZWQsICgpID0+IHsgem9vbUVkaXRvci52YWx1ZSA9IFdJLmdldFpvb21GYWN0
b3IoKS5tYXhEZWNpbWFscygyKTsgfSk7CiAKKyAgICAgICAgaWYgKFdJLkxvZ01hbmFnZXIuc3Vw
cG9ydHNMb2dDaGFubmVscygpKSB7CisgICAgICAgICAgICBjb25zdCBsb2dMZXZlbHMgPSBbCisg
ICAgICAgICAgICAgICAgWyBXSS5Mb2dnaW5nQ2hhbm5lbC5MZXZlbC5PZmYsIFdJLlVJU3RyaW5n
KCJPZmYiKV0sCisgICAgICAgICAgICAgICAgWyBXSS5Mb2dnaW5nQ2hhbm5lbC5MZXZlbC5Mb2cs
IFdJLlVJU3RyaW5nKCJMb2ciKV0sCisgICAgICAgICAgICAgICAgWyBXSS5Mb2dnaW5nQ2hhbm5l
bC5MZXZlbC5FcnJvciwgV0kuVUlTdHJpbmcoIkVycm9yIildLAorICAgICAgICAgICAgICAgIFsg
V0kuTG9nZ2luZ0NoYW5uZWwuTGV2ZWwuV2FybmluZywgV0kuVUlTdHJpbmcoIldhcm5pbmciKV0s
CisgICAgICAgICAgICAgICAgWyBXSS5Mb2dnaW5nQ2hhbm5lbC5MZXZlbC5JbmZvLCBXSS5VSVN0
cmluZygiSW5mbyIpXSwKKyAgICAgICAgICAgICAgICBbIFdJLkxvZ2dpbmdDaGFubmVsLkxldmVs
LkRlYnVnLCBXSS5VSVN0cmluZygiRGVidWciKV0sCisgICAgICAgICAgICBdOworICAgICAgICAg
ICAgY29uc3QgZWRpdG9yTGFiZWxzID0geworICAgICAgICAgICAgICAgICJtZWRpYSI6IFdJLlVJ
U3RyaW5nKCJNZWRpYSBMb2dnaW5nOiIpLAorICAgICAgICAgICAgICAgICJ3ZWJydGMiOiBXSS5V
SVN0cmluZygiV2ViUlRDIExvZ2dpbmc6IiksCisgICAgICAgICAgICB9OworCisgICAgICAgICAg
ICBsZXQgY2hhbm5lbHMgPSBXSS5sb2dNYW5hZ2VyLmN1c3RvbUxvZ2dpbmdDaGFubmVsczsKKyAg
ICAgICAgICAgIGZvciAobGV0IGNoYW5uZWwgb2YgY2hhbm5lbHMpIHsKKyAgICAgICAgICAgICAg
ICBsZXQgbG9nRWRpdG9yID0gZ2VuZXJhbFNldHRpbmdzVmlldy5hZGRHcm91cFdpdGhDdXN0b21T
ZXR0aW5nKGVkaXRvckxhYmVsc1tjaGFubmVsLnNvdXJjZV0sIFdJLlNldHRpbmdFZGl0b3IuVHlw
ZS5TZWxlY3QsIHt2YWx1ZXM6IGxvZ0xldmVsc30pOworICAgICAgICAgICAgICAgIGxvZ0VkaXRv
ci52YWx1ZSA9IGNoYW5uZWwubGV2ZWw7CisgICAgICAgICAgICAgICAgbG9nRWRpdG9yLmFkZEV2
ZW50TGlzdGVuZXIoV0kuU2V0dGluZ0VkaXRvci5FdmVudC5WYWx1ZURpZENoYW5nZSwgKCkgPT4g
eyBDb25zb2xlQWdlbnQuc2V0TG9nZ2luZ0NoYW5uZWxMZXZlbChjaGFubmVsLnNvdXJjZSwgbG9n
RWRpdG9yLnZhbHVlKTsgfSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAgICAgICB0
aGlzLmFkZFNldHRpbmdzVmlldyhnZW5lcmFsU2V0dGluZ3NWaWV3KTsKICAgICB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQubW0JKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTE2LDYgKzExNiw4IEBAIE5TU3RyaW5nICpXZWJDb25zb2xlTWVzc2FnZUNTU01lc3NhZ2VT
b3UKIE5TU3RyaW5nICpXZWJDb25zb2xlTWVzc2FnZVNlY3VyaXR5TWVzc2FnZVNvdXJjZSA9IEAi
U2VjdXJpdHlNZXNzYWdlU291cmNlIjsKIE5TU3RyaW5nICpXZWJDb25zb2xlTWVzc2FnZUNvbnRl
bnRCbG9ja2VyTWVzc2FnZVNvdXJjZSA9IEAiQ29udGVudEJsb2NrZXJNZXNzYWdlU291cmNlIjsK
IE5TU3RyaW5nICpXZWJDb25zb2xlTWVzc2FnZU90aGVyTWVzc2FnZVNvdXJjZSA9IEAiT3RoZXJN
ZXNzYWdlU291cmNlIjsKK05TU3RyaW5nICpXZWJDb25zb2xlTWVzc2FnZU1lZGlhID0gQCJNZWRp
YU1lc3NhZ2VTb3VyY2UiOworTlNTdHJpbmcgKldlYkNvbnNvbGVNZXNzYWdlV2ViUlRDID0gQCJX
ZWJSVENNZXNzYWdlU291cmNlIjsKIAogTlNTdHJpbmcgKldlYkNvbnNvbGVNZXNzYWdlRGVidWdN
ZXNzYWdlTGV2ZWwgPSBAIkRlYnVnTWVzc2FnZUxldmVsIjsKIE5TU3RyaW5nICpXZWJDb25zb2xl
TWVzc2FnZUxvZ01lc3NhZ2VMZXZlbCA9IEAiTG9nTWVzc2FnZUxldmVsIjsKQEAgLTM5MSw2ICsz
OTMsMTEgQEAgaW5saW5lIHN0YXRpYyBOU1N0cmluZyAqc3RyaW5nRm9yTWVzc2FnZQogICAgICAg
ICByZXR1cm4gV2ViQ29uc29sZU1lc3NhZ2VDb250ZW50QmxvY2tlck1lc3NhZ2VTb3VyY2U7CiAg
ICAgY2FzZSBNZXNzYWdlU291cmNlOjpPdGhlcjoKICAgICAgICAgcmV0dXJuIFdlYkNvbnNvbGVN
ZXNzYWdlT3RoZXJNZXNzYWdlU291cmNlOworICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6TWVkaWE6
CisgICAgICAgIHJldHVybiBXZWJDb25zb2xlTWVzc2FnZUNvbnRlbnRCbG9ja2VyTWVzc2FnZVNv
dXJjZTsKKyAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6OldlYlJUQzoKKyAgICAgICAgcmV0dXJuIFdl
YkNvbnNvbGVNZXNzYWdlQ29udGVudEJsb2NrZXJNZXNzYWdlU291cmNlOworCiAgICAgfQogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBAIiI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320854</attachid>
            <date>2017-09-14 17:39:35 -0700</date>
            <delta_ts>2017-09-14 18:44:42 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>text_track_logging_patch_5.txt</filename>
            <type>text/plain</type>
            <size>77374</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyNyBAQAorMjAxNy0wOS0xNCAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBTd2l0Y2ggdGV4dCB0
cmFja3MgdG8gcmVsZWFzZSBsb2dnaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzY4MDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0Mzk3NjA1
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ug
YWxsIHRyYWNrIG9iamVjdHMgdXNlIHRoZSBzYW1lIGxvZ2dlciBhbmQgbG9nIGlkZW50aWZpZXIg
YXMgdGhlIG1lZGlhIGVsZW1lbnQgdGhleQorICAgICAgICAiYmVsb25nIiB0by4gQ29udmVydCBh
bGwgdHJhY2sgbG9nZ2luZyBmcm9tIGRlYnVnLW9ubHkgdG8gcmVsZWFzZSBsb2dnaW5nLgorCisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6fkRvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpsb2dnZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmRpZExvZ01lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omxv
Z2dlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAg
ICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMpOgorICAgICAgICAqIGh0bWwvSFRN
TE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFjay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvVHJhY2s6OnNldFByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
azo6c2V0TWVkaWFFbGVtZW50KToKKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2suaDoK
KyAgICAgICAgKiBodG1sL3RyYWNrL0RhdGFDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YUN1ZTo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAqIGh0bWwvdHJhY2svRGF0YUN1ZS5oOgor
ICAgICAgICAoUEFMOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpEYXRhQ3VlPjo6dG9TdHJpbmcpOgor
ICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbmJhbmREYXRhVGV4dFRyYWNrOjphZGREYXRhQ3VlKToKKyAgICAgICAgKFdlYkNv
cmU6OkluYmFuZERhdGFUZXh0VHJhY2s6OnVwZGF0ZURhdGFDdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5iYW5kRGF0YVRleHRUcmFjazo6cmVtb3ZlRGF0YUN1ZSk6CisgICAgICAgICogaHRtbC90
cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRH
ZW5lcmljVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNUZXh0
VHJhY2s6OmFkZEdlbmVyaWNDdWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY1Rl
eHRUcmFjazo6cmVtb3ZlR2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5l
cmljVGV4dFRyYWNrOjpuZXdDdWVzUGFyc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdl
bmVyaWNUZXh0VHJhY2s6OmZpbGVGYWlsZWRUb1BhcnNlKToKKyAgICAgICAgKiBodG1sL3RyYWNr
L0luYmFuZEdlbmVyaWNUZXh0VHJhY2suaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZFRl
eHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2s6OkluYmFuZFRl
eHRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2s6OnNldE1lZGlhRWxl
bWVudCk6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaDoKKyAgICAgICAg
KiBodG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbmJhbmRXZWJWVFRUZXh0VHJhY2s6Om5ld0N1ZXNQYXJzZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpmaWxlRmFpbGVkVG9QYXJzZSk6CisgICAgICAgICog
aHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBodG1sL3RyYWNr
L0xvYWRhYmxlVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRy
YWNrOjpuZXdDdWVzQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRy
YWNrOjpjdWVMb2FkaW5nQ29tcGxldGVkKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0xvYWRhYmxl
VGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2suY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFRyYWNrOjphZGRDdWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRy
YWNrOjpyZW1vdmVDdWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpzZXRMYW5ndWFn
ZSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2suaDoKKyAgICAgICAgKiBodG1sL3Ry
YWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OnRv
U3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oOgorICAg
ICAgICAoUEFMOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpUZXh0VHJhY2tDdWU+Ojp0b1N0cmluZyk6
CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFja0N1ZUdlbmVyaWM6OnNldEZvbnRTaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRUcmFja0N1ZUdlbmVyaWM6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuaDoKKyAgICAgICAgKFBBTDo6TG9nQXJndW1l
bnQ8V2ViQ29yZTo6VGV4dFRyYWNrQ3VlR2VuZXJpYz46OnRvU3RyaW5nKToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1RyYWNrQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXh0TG9nSWRlbnRp
Zmllcik6CisgICAgICAgIChXZWJDb3JlOjpudWxsTG9nZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OlRyYWNrQmFzZTo6VHJhY2tCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6c2V0
TWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6bG9nQ2hhbm5lbCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6On5UcmFja0Jhc2UpOiBEZWxldGVk
LgorICAgICAgICAqIGh0bWwvdHJhY2svVHJhY2tCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpU
cmFja0Jhc2U6OnNldE1lZGlhRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC90cmFj
ay9WVFRDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VlRUQ3VlOjpzZXRGb250U2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpWVFRDdWU6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBodG1s
L3RyYWNrL1ZUVEN1ZS5oOgorICAgICAgICAoUEFMOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpWVFRD
dWU+Ojp0b1N0cmluZyk6CisgICAgICAgICogaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OlZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9UcmFjazo6c2V0UHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNr
OjpzZXRNZWRpYUVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFjay5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9XZWJDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQ29uc29sZUFnZW50OjpnZXRMb2dnaW5nQ2hhbm5lbHMpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQ29uc29sZUFnZW50OjpzZXRMb2dnaW5nQ2hhbm5lbExldmVsKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvV2ViQ29uc29sZUFnZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vTG9nZ2luZy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpsb2dDaGFubmVsTmFtZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0TG9nQ2hhbm5lbCk6CisgICAgICAgICogcGxhdGZvcm0vTG9nZ2luZy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAoUEFMOjpMb2dB
cmd1bWVudDxXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YT46OnRvU3RyaW5nKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZhdGVCYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlOjpzZXRMb2dnZXIpOgorICAgICAgICAoV2ViQ29yZTo6
VHJhY2tQcml2YXRlQmFzZTo6bG9nQ2hhbm5lbCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1ZpZGVvVHJhY2tQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwubW06CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6
OnVwZGF0ZVBlbmRpbmdDdWVFbmRUaW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRNZXRh
ZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6OmZsdXNoUGFydGlhbEN1ZXMpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZh
dGVBVkYuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGOjpwcm9jZXNzQXR0cmlidXRlZFN0cmluZ3MpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cmVtb3ZlQ29tcGxldGVkQ3Vlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpyZXNldEN1ZVZhbHVlcyk6
CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzTmF0
aXZlU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
OjpyZWFkTmF0aXZlU2FtcGxlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5t
bToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoLVtXZWJDb3JlQVZGTW92
aWVPYnNlcnZlciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0
Ol0pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU3RyZWFtQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbUNvY29hOjpjcmVhdGVBdWRpb1VuaXQpOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaDoKKwog
MjAxNy0wOS0xMyAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBJbnRyb2R1Y2UgU3RvcmFnZSBBY2Nlc3MgQVBJIChkb2N1bWVudCBwYXJ0cykgYXMgYW4gZXhw
ZXJpbWVudGFsIGZlYXR1cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMjIw
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MzQyNSw2ICszNDI1LDcgQEAgaWYgKEVOQUJMRV9WSURFT19UUkFDSykKICAgICAgICAgbG9hZGVy
L2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKIAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9U
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvVHJh
Y2tQcml2YXRlQmFzZS5jcHAKICAgICApCiBlbmRpZiAoKQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9QQUwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNy0wOS0xNCAgRXJpYyBDYXJsc29uICA8
ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBTd2l0Y2ggdGV4dCB0cmFja3MgdG8g
cmVsZWFzZSBsb2dnaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzY4MDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0Mzk3NjA1PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFsL0xvZ2dlci5o
OgorICAgICAgICAoUEFMOjpMb2dBcmd1bWVudDo6dG9TdHJpbmcpOgorICAgICAgICAoUEFMOjpM
b2dnZXI6OndpbGxMb2cgY29uc3QpOgorCiAyMDE3LTA5LTEzICBBbmR5IEVzdGVzICA8YWVzdGVz
QGFwcGxlLmNvbT4KIAogICAgICAgICBbQ0ZdIFVwc3RyZWFtIENGTmV0d29yay1yZWxhdGVkIFdl
YktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvTG9nZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9Mb2dnZXIu
aAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9Mb2dnZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNDEsMTAgKzQxLDEyIEBAIHN0cnVjdCBMb2dBcmd1bWVudCB7CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX3NhbWU8VSwgaW50Pjo6dmFsdWUsIFN0cmluZz46OnR5cGUgdG9TdHJpbmcoaW50
IGFyZ3VtZW50KSB7IHJldHVybiBTdHJpbmc6Om51bWJlcihhcmd1bWVudCk7IH0KICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6
aXNfc2FtZTxVLCB1bnNpZ25lZD46OnZhbHVlLCBTdHJpbmc+Ojp0eXBlIHRvU3RyaW5nKHVuc2ln
bmVkIGFyZ3VtZW50KSB7IHJldHVybiBTdHJpbmc6Om51bWJlcihhcmd1bWVudCk7IH0KICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0
ZDo6aXNfc2FtZTxVLCB1bnNpZ25lZCBsb25nPjo6dmFsdWUsIFN0cmluZz46OnR5cGUgdG9TdHJp
bmcodW5zaWduZWQgbG9uZyBhcmd1bWVudCkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIoYXJndW1l
bnQpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VSwgbG9uZz46OnZhbHVlLCBTdHJpbmc+Ojp0eXBlIHRv
U3RyaW5nKGxvbmcgYXJndW1lbnQpIHsgcmV0dXJuIFN0cmluZzo6bnVtYmVyKGFyZ3VtZW50KTsg
fQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8c3RkOjppc19zYW1lPFUsIGZsb2F0Pjo6dmFsdWUsIFN0cmluZz46OnR5cGUgdG9TdHJp
bmcoZmxvYXQgYXJndW1lbnQpIHsgcmV0dXJuIFN0cmluZzo6bnVtYmVyKGFyZ3VtZW50KTsgfQog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8c3RkOjppc19zYW1lPFUsIGRvdWJsZT46OnZhbHVlLCBTdHJpbmc+Ojp0eXBlIHRvU3RyaW5n
KGRvdWJsZSBhcmd1bWVudCkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIoYXJndW1lbnQpOyB9CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFU+Ojp0eXBlLCBB
dG9taWNTdHJpbmc+Ojp2YWx1ZSwgU3RyaW5nPjo6dHlwZSB0b1N0cmluZyhBdG9taWNTdHJpbmcg
YXJndW1lbnQpIHsgcmV0dXJuIGFyZ3VtZW50LnN0cmluZygpOyB9CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8
dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFU+Ojp0eXBlLCBTdHJpbmc+Ojp2YWx1ZSwg
U3RyaW5nPjo6dHlwZSB0b1N0cmluZyhTdHJpbmcgYXJndW1lbnQpIHsgcmV0dXJuIGFyZ3VtZW50
OyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFU+Ojp0
eXBlLCBTdHJpbmdCdWlsZGVyKj46OnZhbHVlLCBTdHJpbmc+Ojp0eXBlIHRvU3RyaW5nKFN0cmlu
Z0J1aWxkZXIqIGFyZ3VtZW50KSB7IHJldHVybiBhcmd1bWVudC0+dG9TdHJpbmcoKTsgfQogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
c3RkOjppc19zYW1lPFUsIGNvbnN0IGNoYXIqPjo6dmFsdWUsIFN0cmluZz46OnR5cGUgdG9TdHJp
bmcoY29uc3QgY2hhciogYXJndW1lbnQpIHsgcmV0dXJuIFN0cmluZyhhcmd1bWVudCk7IH0KICAg
ICB0ZW1wbGF0ZTxzaXplX3QgbGVuZ3RoPiBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IGNo
YXIgKCZhcmd1bWVudClbbGVuZ3RoXSkgeyByZXR1cm4gU3RyaW5nKGFyZ3VtZW50KTsgfQogfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDYgKzE0Niw3IEBACiAJ
CTA3M0I4NzY3MUU0Mzg1QUMwMDcxQzBFQyAvKiBBdWRpb1NhbXBsZUJ1ZmZlckxpc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0I4NzYzMUU0Mzg1
OUQwMDcxQzBFQyAvKiBBdWRpb1NhbXBsZUJ1ZmZlckxpc3QuaCAqLzsgfTsKIAkJMDczQjg3Njgx
RTQzODVBQzAwNzFDMEVDIC8qIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0I4NzY0MUU0Mzg1OUQwMDcxQzBF
QyAvKiBBdWRpb1NhbXBsZURhdGFTb3VyY2UubW0gKi87IH07CiAJCTA3M0I4NzY5MUU0Mzg1QUMw
MDcxQzBFQyAvKiBBdWRpb1NhbXBsZURhdGFTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0I4NzY1MUU0Mzg1OUQwMDcxQzBFQyAvKiBBdWRp
b1NhbXBsZURhdGFTb3VyY2UuaCAqLzsgfTsKKwkJMDczQkRDMDUxRjY4NDM2MTAwRUUzNEVEIC8q
IFRyYWNrUHJpdmF0ZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDc2RTExQkUxRjY4M0UwRDAwMTc3Mzk1IC8qIFRyYWNrUHJpdmF0ZUJhc2Uu
Y3BwICovOyB9OwogCQkwNzNCRTM0MDE3RDE3RTAxMDAyQkQ0MzEgLyogSlNOYXZpZ2F0b3JVc2Vy
TWVkaWEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDczQkUzM0UxN0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhLmNwcCAqLzsg
fTsKIAkJMDczQkUzNDExN0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNCRTMzRjE3
RDE3RTAxMDAyQkQ0MzEgLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWEuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzNCRTM0RTE3RDE4MEIyMDAyQkQ0
MzEgLyogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzIyMUJBQjE3Q0YwQUQ0MDA4NDhFNTEg
LyogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5jcHAgKi87IH07CkBAIC03NzE5LDYg
Kzc3MjAsNyBAQAogCQkwNzYzOEE5ODE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFu
YWdlcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlh
U2Vzc2lvbk1hbmFnZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3Njk3
MDg0MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRUcmFja0xpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwNzY5NzA4NTE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0VHJhY2tMaXN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3NkUxMUJFMUY2ODNFMEQwMDE3NzM5NSAvKiBUcmFj
a1ByaXZhdGVCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRy
YWNrUHJpdmF0ZUJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZFQzEz
MjFFNDRGMkNCMDBFNUQ4MTMgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW1Db2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NkYw
RDA5MTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RjBEMEEx
MkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzOTE4LDYgKzIzOTIwLDcgQEAK
IAkJCQlDRDFFNzM0NjE2N0JDNzhFMDA5QTg4NUQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb24u
Y3BwICovLAogCQkJCUNERDFFNTI1MTY3QkE1NjQwMENFODIwQiAvKiBUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbi5oICovLAogCQkJCTFBRjg5QTQxMTUxOEZERUEwMEU1NDdCNSAvKiBUaWxlZEJhY2tp
bmcuaCAqLywKKwkJCQkwNzZFMTFCRTFGNjgzRTBEMDAxNzczOTUgLyogVHJhY2tQcml2YXRlQmFz
ZS5jcHAgKi8sCiAJCQkJQkU5MTNEN0YxODFFRjhFNTAwRENCMDlFIC8qIFRyYWNrUHJpdmF0ZUJh
c2UuaCAqLywKIAkJCQlFNEFGQ0ZBNDBEQUYyOUEzMDBGNUY1NUMgLyogVW5pdEJlemllci5oICov
LAogCQkJCUJFRjI5RUVBMTcxNUREMDkwMEM0QjRDOSAvKiBWaWRlb1RyYWNrUHJpdmF0ZS5oICov
LApAQCAtMzIxMDgsNiArMzIxMTEsNyBAQAogCQkJCUUxMkRFNzE3MUU0Qjc0OUMwMEY5QUNDRiAv
KiBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE0QzI1
RDcxRTlFRkVERTAwQkVFMTQxIC8qIEgyNjRWaWRlb1Rvb2xCb3hFbmNvZGVyLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRjU1QjNEQkYxMjUxRjEyRDAwM0VGMjY5IC8qIEhpZGRlbklucHV0VHlwZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzNCREMwNTFGNjg0MzYxMDBFRTM0RUQgLyogVHJhY2tQ
cml2YXRlQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTVCRTE5QjFENTRGNkMxMDBERDdD
NjggLyogSElER2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTVCRTE5RDFENTRGNkMx
MDBERDdDNjggLyogSElER2FtZXBhZFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
OTREMTUzMEMyNzVDOEIwMDZCQzYxNyAvKiBIaXN0b3J5LmNwcCBpbiBTb3VyY2VzICovLApJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMjIw
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjYwLDggKzE2NjAsNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0
ZUFjdGl2ZVRleHRUCiAgICAgaWYgKGlnbm9yZVRyYWNrRGlzcGxheVVwZGF0ZVJlcXVlc3RzKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSKTsKLQogICAg
IC8vIDEgLSBMZXQgY3VycmVudCBjdWVzIGJlIGEgbGlzdCBvZiBjdWVzLCBpbml0aWFsaXplZCB0
byBjb250YWluIGFsbCB0aGUKICAgICAvLyBjdWVzIG9mIGFsbCB0aGUgaGlkZGVuLCBzaG93aW5n
LCBvciBzaG93aW5nIGJ5IGRlZmF1bHQgdGV4dCB0cmFja3Mgb2YgdGhlCiAgICAgLy8gbWVkaWEg
ZWxlbWVudCAobm90IHRoZSBkaXNhYmxlZCBvbmVzKSB3aG9zZSBzdGFydCB0aW1lcyBhcmUgbGVz
cyB0aGFuIG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2
aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJNZWRpYUNhblN0YXJ0
TGlzdGVuZXIuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCIKICNpbmNs
dWRlICJNZWRpYUVsZW1lbnRTZXNzaW9uLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNp
bmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCiAjaW5jbHVkZSAiVmlzaWJpbGl0eUNoYW5nZUNsaWVu
dC5oIgogI2luY2x1ZGUgPHBhbC9Mb2dnZXJIZWxwZXIuaD4KQEAgLTg3LDcgKzg4LDYgQEAgY2xh
c3MgTWVkaWFDb250cm9sc0hvc3Q7CiBjbGFzcyBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU7
CiBjbGFzcyBNZWRpYUVycm9yOwogY2xhc3MgTWVkaWFLZXlzOwotY2xhc3MgTWVkaWFQbGF5ZXI7
CiBjbGFzcyBNZWRpYVJlc291cmNlTG9hZGVyOwogY2xhc3MgTWVkaWFTZXNzaW9uOwogY2xhc3Mg
TWVkaWFTb3VyY2U7CkBAIC0xNDEsNyArMTQxLDcgQEAgY2xhc3MgSFRNTE1lZGlhRWxlbWVudAog
ICAgICwgcHJpdmF0ZSBDRE1DbGllbnQKICNlbmRpZgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAotICAgICwgcHJpdmF0ZSBQQUw6OkxvZ2dlckhlbHBlcgorICAgICwgcHVibGljIFBBTDo6TG9n
Z2VySGVscGVyCiAjZW5kaWYKIHsKIHB1YmxpYzoKQEAgLTUzOCw2ICs1MzgsMTEgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBzdXBwb3J0c1NlZWtpbmcoKSBjb25zdCBvdmVycmlkZTsKIAorI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IFBBTDo6TG9nZ2VyJiBsb2dnZXIoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAqbV9sb2dnZXIuZ2V0KCk7IH0KKyAgICBjb25zdCB2b2lkKiBsb2dJ
ZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2
b2lkKj4obV9sb2dJZGVudGlmaWVyKTsgfQorI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBIVE1M
TWVkaWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIGJvb2wgY3JlYXRl
ZEJ5UGFyc2VyKTsKICAgICB2aXJ0dWFsIH5IVE1MTWVkaWFFbGVtZW50KCk7CkBAIC04OTUsOSAr
OTAwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlZWtUb1BsYXliYWNrUG9zaXRpb25FbmRlZFRp
bWVyRmlyZWQoKTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIGNvbnN0IFBBTDo6
TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiAqbV9sb2dnZXIuZ2V0KCk7IH0K
ICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiSFRN
TE1lZGlhRWxlbWVudCI7IH0KLSAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4obV9sb2dJZGVudGlm
aWVyKTsgfQogICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKIAog
ICAgIGNvbnN0IHZvaWQqIG1lZGlhUGxheWVyTG9nSWRlbnRpZmllcigpIGZpbmFsIHsgcmV0dXJu
IGxvZ0lkZW50aWZpZXIoKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRp
b1RyYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlv
VHJhY2suY3BwCShyZXZpc2lvbiAyMjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0F1ZGlvVHJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NywxMSArNzcsMTQgQEAgY29uc3Qg
QXRvbWljU3RyaW5nJiBBdWRpb1RyYWNrOjpjb21tZW50YQogCiBBdWRpb1RyYWNrOjpBdWRpb1Ry
YWNrKEF1ZGlvVHJhY2tDbGllbnQmIGNsaWVudCwgQXVkaW9UcmFja1ByaXZhdGUmIHRyYWNrUHJp
dmF0ZSkKICAgICA6IE1lZGlhVHJhY2tCYXNlKE1lZGlhVHJhY2tCYXNlOjpBdWRpb1RyYWNrLCB0
cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCksIHRyYWNrUHJpdmF0ZS5sYW5n
dWFnZSgpKQotICAgICwgbV9lbmFibGVkKHRyYWNrUHJpdmF0ZS5lbmFibGVkKCkpCiAgICAgLCBt
X2NsaWVudCgmY2xpZW50KQogICAgICwgbV9wcml2YXRlKHRyYWNrUHJpdmF0ZSkKKyAgICAsIG1f
ZW5hYmxlZCh0cmFja1ByaXZhdGUuZW5hYmxlZCgpKQogewogICAgIG1fcHJpdmF0ZS0+c2V0Q2xp
ZW50KHRoaXMpOworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIG1fcHJpdmF0ZS0+c2V0
TG9nZ2VyKGxvZ2dlcigpLCBsb2dJZGVudGlmaWVyKCkpOworI2VuZGlmCiAgICAgdXBkYXRlS2lu
ZEZyb21Qcml2YXRlKCk7CiB9CiAKQEAgLTk5LDYgKzEwMiw5IEBAIHZvaWQgQXVkaW9UcmFjazo6
c2V0UHJpdmF0ZShBdWRpb1RyYWNrUHIKICAgICBtX3ByaXZhdGUgPSB0cmFja1ByaXZhdGU7CiAg
ICAgbV9wcml2YXRlLT5zZXRFbmFibGVkKG1fZW5hYmxlZCk7CiAgICAgbV9wcml2YXRlLT5zZXRD
bGllbnQodGhpcyk7CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgbV9wcml2YXRlLT5z
ZXRMb2dnZXIobG9nZ2VyKCksIGxvZ0lkZW50aWZpZXIoKSk7CisjZW5kaWYKIAogICAgIHVwZGF0
ZUtpbmRGcm9tUHJpdmF0ZSgpOwogfQpAQCAtMTg3LDYgKzE5MywxNCBAQCB2b2lkIEF1ZGlvVHJh
Y2s6OnVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSgpCiAgICAgfQogfQogCit2b2lkIEF1ZGlvVHJhY2s6
OnNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KQoreworICAgIFRyYWNr
QmFzZTo6c2V0TWVkaWFFbGVtZW50KGVsZW1lbnQpOworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAorICAgIG1fcHJpdmF0ZS0+c2V0TG9nZ2VyKGxvZ2dlcigpLCBsb2dJZGVudGlmaWVyKCkpOwor
I2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaAkocmV2aXNpb24gMjIyMDA3KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1
LDYgKzY1LDcgQEAgcHVibGljOgogICAgIHNpemVfdCBpbmJhbmRUcmFja0luZGV4KCkgY29uc3Q7
CiAKICAgICB2b2lkIHNldFByaXZhdGUoQXVkaW9UcmFja1ByaXZhdGUmKTsKKyAgICB2b2lkIHNl
dE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAg
ICAgQXVkaW9UcmFjayhBdWRpb1RyYWNrQ2xpZW50JiwgQXVkaW9UcmFja1ByaXZhdGUmKTsKQEAg
LTgyLDEwICs4MywxMyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVLaW5kRnJvbVByaXZh
dGUoKTsKIAotICAgIGJvb2wgbV9lbmFibGVkOwotICAgIEF1ZGlvVHJhY2tDbGllbnQqIG1fY2xp
ZW50OworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNz
TmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJBdWRpb1RyYWNrIjsgfQorI2VuZGlmCiAKKyAg
ICBBdWRpb1RyYWNrQ2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKICAgICBSZWY8QXVkaW9U
cmFja1ByaXZhdGU+IG1fcHJpdmF0ZTsKKyAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNlIH07CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0RhdGFDdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
RGF0YUN1ZS5jcHAJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svRGF0YUN1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OCw2ICsxODgsMTggQEAgSlNWYWx1
ZSBEYXRhQ3VlOjp2YWx1ZU9yTnVsbCgpIGNvbnN0CiAgICAgcmV0dXJuIGpzTnVsbCgpOwogfQog
CitTdHJpbmcgRGF0YUN1ZTo6dG9TdHJpbmcoKSBjb25zdAoreworICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKKworICAgIGJ1aWxkZXIuYXBwZW5kKFRleHRUcmFja0N1ZTo6dG9TdHJpbmcoKSk7
CisKKyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgdHlwZSA9ICIpOworICAgIGJ1aWxkZXIu
YXBwZW5kKG1fdHlwZSk7CisKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9EYXRhQ3VlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9EYXRhQ3VlLmgJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svRGF0YUN1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw2ICs4Nyw4IEBAIHB1YmxpYzoKICAg
ICBib29sIGN1ZUNvbnRlbnRzTWF0Y2goY29uc3QgVGV4dFRyYWNrQ3VlJikgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBkb2VzRXh0ZW5kQ3VlKGNvbnN0IFRleHRUcmFja0N1ZSYpIGNvbnN0IG92
ZXJyaWRlOwogCisgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisKIHByaXZh
dGU6CiAgICAgRGF0YUN1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgTWVkaWFUaW1l
JiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIEFycmF5QnVmZmVyJiwgY29uc3QgU3RyaW5n
Jik7CiAgICAgRGF0YUN1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgTWVkaWFUaW1l
JiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIGNvbnN0IHZvaWQqLCB1bnNpZ25lZCk7CkBA
IC0xMDYsNCArMTA4LDE5IEBAIGNvbnN0IERhdGFDdWUqIHRvRGF0YUN1ZShjb25zdCBUZXh0VHJh
Y2sKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2UgUEFMIHsKKwordGVtcGxh
dGU8dHlwZW5hbWUgVHlwZT4KK3N0cnVjdCBMb2dBcmd1bWVudDsKKwordGVtcGxhdGUgPD4KK3N0
cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpEYXRhQ3VlPiB7CisgICAgc3RhdGljIFN0cmluZyB0
b1N0cmluZyhjb25zdCBXZWJDb3JlOjpEYXRhQ3VlJiBjdWUpCisgICAgeworICAgICAgICByZXR1
cm4gY3VlLnRvU3RyaW5nKCk7CisgICAgfQorfTsKKworfQorCiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmNwcAkocmV2
aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmREYXRhVGV4
dFRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkRh
dGFDdWUuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZS5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC02NCw3ICs2Myw3IEBAIHZvaWQgSW5iYW5kRGF0YVRleHRUcmFjazo6YWRk
RGF0YUN1ZShjb24KIAogICAgIGF1dG8gY3VlID0gRGF0YUN1ZTo6Y3JlYXRlKCpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIHN0YXJ0LCBlbmQsIHBsYXRmb3JtVmFsdWUuY29weVJlZigpLCB0eXBl
KTsKICAgICBpZiAoaGFzQ3VlKGN1ZS5wdHIoKSwgVGV4dFRyYWNrQ3VlOjpJZ25vcmVEdXJhdGlv
bikpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiSW5iYW5kRGF0YVRleHRUcmFjazo6YWRkRGF0YUN1
ZSBpZ25vcmluZyBhbHJlYWR5IGFkZGVkIGN1ZTogc3RhcnQ9JXMsIGVuZD0lc1xuIiwgdG9TdHJp
bmcoY3VlLT5zdGFydFRpbWUoKSkudXRmOCgpLmRhdGEoKSwgdG9TdHJpbmcoY3VlLT5lbmRUaW1l
KCkpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiaWdu
b3JpbmcgYWxyZWFkeSBhZGRlZCBjdWU6ICIsIGN1ZS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTczLDYgKzcyLDggQEAgdm9pZCBJbmJhbmREYXRhVGV4dFRyYWNrOjphZGRE
YXRhQ3VlKGNvbgogICAgICAgICBtX2luY29tcGxldGVDdWVNYXAuYWRkKFdURk1vdmUocGxhdGZv
cm1WYWx1ZSksIGN1ZS5jb3B5UmVmKCkpOwogICAgIH0KIAorICAgIElORk9fTE9HKExPR0lERU5U
SUZJRVIsIGN1ZS5nZXQoKSk7CisKICAgICBhZGRDdWUoV1RGTW92ZShjdWUpKTsKIH0KIApAQCAt
OTAsNyArOTEsNyBAQCB2b2lkIEluYmFuZERhdGFUZXh0VHJhY2s6OnVwZGF0ZURhdGFDdWUoCiAg
ICAgZWxzZQogICAgICAgICBtX2luY29tcGxldGVDdWVNYXAucmVtb3ZlKCZwbGF0Zm9ybVZhbHVl
KTsKIAotICAgIExPRyhNZWRpYSwgIkluYmFuZERhdGFUZXh0VHJhY2s6OnVwZGF0ZURhdGFDdWU6
IHdhcyBzdGFydD0lcywgZW5kPSVzLCB3aWxsIGJlIHN0YXJ0PSVzLCBlbmQ9JXNcbiIsIHRvU3Ry
aW5nKGN1ZS0+c3RhcnRUaW1lKCkpLnV0ZjgoKS5kYXRhKCksIHRvU3RyaW5nKGN1ZS0+ZW5kVGlt
ZSgpKS51dGY4KCkuZGF0YSgpLCB0b1N0cmluZyhzdGFydCkudXRmOCgpLmRhdGEoKSwgdG9TdHJp
bmcoZW5kKS51dGY4KCkuZGF0YSgpKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAid2Fz
IHN0YXJ0ID0gIiwgY3VlLT5zdGFydE1lZGlhVGltZSgpLCAiLCBlbmQgPSAiLCBjdWUtPmVuZE1l
ZGlhVGltZSgpLCAiLCB3aWxsIGJlIHN0YXJ0ID0gIiwgc3RhcnQsICIsIGVuZCA9ICIsIGVuZCk7
CiAKICAgICBjdWUtPnNldFN0YXJ0VGltZShzdGFydCk7CiAgICAgY3VlLT5zZXRFbmRUaW1lKGVu
ZCk7CkBAIC0xMDEsNyArMTAyLDcgQEAgdm9pZCBJbmJhbmREYXRhVGV4dFRyYWNrOjp1cGRhdGVE
YXRhQ3VlKAogdm9pZCBJbmJhbmREYXRhVGV4dFRyYWNrOjpyZW1vdmVEYXRhQ3VlKGNvbnN0IE1l
ZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYsIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0
aW9uJiBwbGF0Zm9ybVZhbHVlKQogewogICAgIGlmIChhdXRvIGN1ZSA9IG1faW5jb21wbGV0ZUN1
ZU1hcC50YWtlKCZwbGF0Zm9ybVZhbHVlKSkgewotICAgICAgICBMT0coTWVkaWEsICJJbmJhbmRE
YXRhVGV4dFRyYWNrOjpyZW1vdmVEYXRhQ3VlIHJlbW92aW5nIGN1ZTogc3RhcnQ9JXMsIGVuZD0l
c1xuIiwgdG9TdHJpbmcoY3VlLT5zdGFydFRpbWUoKSkudXRmOCgpLmRhdGEoKSwgdG9TdHJpbmco
Y3VlLT5lbmRUaW1lKCkpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBJTkZPX0xPRyhMT0dJREVO
VElGSUVSLCAicmVtb3Zpbmc6ICIsICpjdWUpOwogICAgICAgICBJbmJhbmRUZXh0VHJhY2s6OnJl
bW92ZUN1ZSgqY3VlKTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0luYmFuZERhdGFUZXh0VHJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suaAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDYgKzQ0LDEwIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGFkZERhdGFDdWUoY29uc3Qg
TWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIGNvbnN0IHZvaWQqLCB1bnNp
Z25lZCkgZmluYWw7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFy
KiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiRGF0YUN1ZSI7IH0KKyNlbmRp
ZgorCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCiAgICAgdm9pZCBhZGREYXRhQ3VlKGNvbnN0
IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBSZWY8U2VyaWFsaXplZFBs
YXRmb3JtUmVwcmVzZW50YXRpb24+JiYsIGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQg
dXBkYXRlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVu
ZCwgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24mKSBmaW5hbDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNw
cAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRH
ZW5lcmljVGV4dFRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDExICsxMjcsMTEgQEAg
dm9pZCBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjphZGRHZW5lcmljQwogICAgIGF1dG8gY3VlID0g
VGV4dFRyYWNrQ3VlR2VuZXJpYzo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGN1
ZURhdGEuc3RhcnRUaW1lKCksIGN1ZURhdGEuZW5kVGltZSgpLCBjdWVEYXRhLmNvbnRlbnQoKSk7
CiAgICAgdXBkYXRlQ3VlRnJvbUN1ZURhdGEoY3VlLmdldCgpLCBjdWVEYXRhKTsKICAgICBpZiAo
aGFzQ3VlKGN1ZS5wdHIoKSwgVGV4dFRyYWNrQ3VlOjpJZ25vcmVEdXJhdGlvbikpIHsKLSAgICAg
ICAgTE9HKE1lZGlhLCAiSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6YWRkR2VuZXJpY0N1ZSBpZ25v
cmluZyBhbHJlYWR5IGFkZGVkIGN1ZTogc3RhcnQ9JXMsIGVuZD0lcywgY29udGVudD1cIiVzXCJc
biIsIHRvU3RyaW5nKGN1ZURhdGEuc3RhcnRUaW1lKCkpLnV0ZjgoKS5kYXRhKCksIHRvU3RyaW5n
KGN1ZURhdGEuZW5kVGltZSgpKS51dGY4KCkuZGF0YSgpLCBjdWVEYXRhLmNvbnRlbnQoKS51dGY4
KCkuZGF0YSgpKTsKKyAgICAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsICJpZ25vcmluZyBh
bHJlYWR5IGFkZGVkIGN1ZTogIiwgY3VlLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIExPRyhNZWRpYSwgIkluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OmFkZEdlbmVyaWNDdWUg
YWRkZWQgY3VlOiBzdGFydD0lLjJmLCBlbmQ9JS4yZiwgY29udGVudD1cIiVzXCJcbiIsIGN1ZURh
dGEuc3RhcnRUaW1lKCkudG9Eb3VibGUoKSwgY3VlRGF0YS5lbmRUaW1lKCkudG9Eb3VibGUoKSwg
Y3VlRGF0YS5jb250ZW50KCkudXRmOCgpLmRhdGEoKSk7CisgICAgREVCVUdfTE9HKExPR0lERU5U
SUZJRVIsICJhZGRlZCBjdWU6ICIsIGN1ZS5nZXQoKSk7CiAKICAgICBpZiAoY3VlRGF0YS5zdGF0
dXMoKSAhPSBHZW5lcmljQ3VlRGF0YTo6Q29tcGxldGUpCiAgICAgICAgIG1fY3VlTWFwLmFkZChj
dWVEYXRhLCBjdWUpOwpAQCAtMTU1LDExICsxNTUsMTEgQEAgdm9pZCBJbmJhbmRHZW5lcmljVGV4
dFRyYWNrOjpyZW1vdmVHZW5lcgogewogICAgIGF1dG8qIGN1ZSA9IG1fY3VlTWFwLmZpbmQoY3Vl
RGF0YSk7CiAgICAgaWYgKGN1ZSkgewotICAgICAgICBMT0coTWVkaWEsICJJbmJhbmRHZW5lcmlj
VGV4dFRyYWNrOjpyZW1vdmVHZW5lcmljQ3VlIHJlbW92aW5nIGN1ZTogc3RhcnQ9JXMsIGVuZD0l
cywgY29udGVudD1cIiVzXCJcbiIsICB0b1N0cmluZyhjdWVEYXRhLnN0YXJ0VGltZSgpKS51dGY4
KCkuZGF0YSgpLCB0b1N0cmluZyhjdWVEYXRhLmVuZFRpbWUoKSkudXRmOCgpLmRhdGEoKSwgY3Vl
RGF0YS5jb250ZW50KCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIERFQlVHX0xPRyhMT0dJREVO
VElGSUVSLCAqY3VlKTsKICAgICAgICAgcmVtb3ZlQ3VlKCpjdWUpOwotICAgIH0gZWxzZSB7Ci0g
ICAgICAgIExPRyhNZWRpYSwgIkluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OnJlbW92ZUdlbmVyaWND
dWUgVU5BQkxFIHRvIGZpbmQgY3VlOiBzdGFydD0lLjJmLCBlbmQ9JS4yZiwgY29udGVudD1cIiVz
XCJcbiIsIGN1ZURhdGEuc3RhcnRUaW1lKCkudG9Eb3VibGUoKSwgY3VlRGF0YS5lbmRUaW1lKCku
dG9Eb3VibGUoKSwgY3VlRGF0YS5jb250ZW50KCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgfQorICAg
IH0gZWxzZQorICAgICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgIlVOQUJMRSB0byBmaW5k
IGN1ZTogIiwgKmN1ZSk7CisKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gSW5iYW5kR2VuZXJpY1Rl
eHRUcmFjazo6cmVtb3ZlQ3VlKFRleHRUcmFja0N1ZSYgY3VlKQpAQCAtMTk2LDkgKzE5NiwxMiBA
QCB2b2lkIEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6Om5ld0N1ZXNQYXJzCiAgICAgICAgIGF1dG8g
dnR0Q3VlID0gVlRUQ3VlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKmN1ZURh
dGEpOwogCiAgICAgICAgIGlmIChoYXNDdWUodnR0Q3VlLnB0cigpLCBUZXh0VHJhY2tDdWU6Okln
bm9yZUR1cmF0aW9uKSkgewotICAgICAgICAgICAgTE9HKE1lZGlhLCAiSW5iYW5kR2VuZXJpY1Rl
eHRUcmFjazo6bmV3Q3Vlc1BhcnNlZCBpZ25vcmluZyBhbHJlYWR5IGFkZGVkIGN1ZTogc3RhcnQ9
JS4yZiwgZW5kPSUuMmYsIGNvbnRlbnQ9XCIlc1wiXG4iLCB2dHRDdWUtPnN0YXJ0VGltZSgpLCB2
dHRDdWUtPmVuZFRpbWUoKSwgdnR0Q3VlLT50ZXh0KCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
ICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgImlnbm9yaW5nIGFscmVhZHkgYWRkZWQgY3Vl
OiAiLCB2dHRDdWUuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisKKyAg
ICAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsIHZ0dEN1ZS5nZXQoKSk7CisKICAgICAgICAg
YWRkQ3VlKFdURk1vdmUodnR0Q3VlKSk7CiAgICAgfQogfQpAQCAtMjE2LDcgKzIxOSw3IEBAIHZv
aWQgSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6bmV3UmVnaW9uc1AKIAogdm9pZCBJbmJhbmRHZW5l
cmljVGV4dFRyYWNrOjpmaWxlRmFpbGVkVG9QYXJzZSgpCiB7Ci0gICAgTE9HKE1lZGlhLCAiRXJy
b3IgcGFyc2luZyBXZWJWVFQgc3RyZWFtLiIpOworICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVS
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmgJKHJldmlzaW9uIDIyMjAw
NykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5o
CSh3b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgbmV3
UmVnaW9uc1BhcnNlZCgpIGZpbmFsOwogICAgIHZvaWQgZmlsZUZhaWxlZFRvUGFyc2UoKSBmaW5h
bDsKIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNz
TmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJJbmJhbmRHZW5lcmljVGV4dFRyYWNrIjsgfQor
I2VuZGlmCisKICAgICBHZW5lcmljVGV4dFRyYWNrQ3VlTWFwIG1fY3VlTWFwOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJWVFRQYXJzZXI+IG1fd2ViVlRUUGFyc2VyOwogfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAJKHJldmlzaW9uIDIy
MjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsOSBAQCBJbmJhbmRUZXh0VHJhY2s6OkluYmFuZFRl
eHRUcmFjayhTY3JpcHRFCiAgICAgOiBUZXh0VHJhY2soJmNvbnRleHQsICZjbGllbnQsIGVtcHR5
QXRvbSgpLCB0cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCksIHRyYWNrUHJp
dmF0ZS5sYW5ndWFnZSgpLCBJbkJhbmQpCiAgICAgLCBtX3ByaXZhdGUodHJhY2tQcml2YXRlKQog
eworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIG1fcHJpdmF0ZS0+c2V0TG9nZ2VyKGxv
Z2dlcigpLCBsb2dJZGVudGlmaWVyKCkpOworI2VuZGlmCiAgICAgbV9wcml2YXRlLT5zZXRDbGll
bnQodGhpcyk7CiAgICAgdXBkYXRlS2luZEZyb21Qcml2YXRlKCk7CiB9CkBAIC0xOTEsNiArMTk0
LDE1IEBAIE1lZGlhVGltZSBJbmJhbmRUZXh0VHJhY2s6OnN0YXJ0VGltZVZhcmkKICAgICByZXR1
cm4gbV9wcml2YXRlLT5zdGFydFRpbWVWYXJpYW5jZSgpOwogfQogCit2b2lkIEluYmFuZFRleHRU
cmFjazo6c2V0TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAg
VHJhY2tCYXNlOjpzZXRNZWRpYUVsZW1lbnQoZWxlbWVudCk7CisjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECisgICAgbV9wcml2YXRlLT5zZXRMb2dnZXIobG9nZ2VyKCksIGxvZ0lkZW50aWZpZXIo
KSk7CisjZW5kaWYKK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oCShyZXZpc2lv
biAyMjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5o
CSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICBBdG9taWNTdHJp
bmcgaW5CYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgdm9pZCBzZXRQcml2YXRlKEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKKyAgICB2b2lkIHNl
dE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kikgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoK
ICAgICBJbmJhbmRUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFRleHRUcmFja0Ns
aWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAJKHJldmlzaW9uIDIy
MjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsOSArNzQsMTIgQEAgdm9pZCBJbmJhbmRXZWJWVFRU
ZXh0VHJhY2s6Om5ld0N1ZXNQYXJzZQogICAgIGZvciAoYXV0byYgY3VlRGF0YSA6IGN1ZXMpIHsK
ICAgICAgICAgYXV0byB2dHRDdWUgPSBWVFRDdWU6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCAqY3VlRGF0YSk7CiAgICAgICAgIGlmIChoYXNDdWUodnR0Q3VlLnB0cigpLCBUZXh0
VHJhY2tDdWU6Oklnbm9yZUR1cmF0aW9uKSkgewotICAgICAgICAgICAgTE9HKE1lZGlhLCAiSW5i
YW5kV2ViVlRUVGV4dFRyYWNrOjpuZXdDdWVzUGFyc2VkIGlnbm9yaW5nIGFscmVhZHkgYWRkZWQg
Y3VlOiBzdGFydD0lLjJmLCBlbmQ9JS4yZiwgY29udGVudD1cIiVzXCJcbiIsIHZ0dEN1ZS0+c3Rh
cnRUaW1lKCksIHZ0dEN1ZS0+ZW5kVGltZSgpLCB2dHRDdWUtPnRleHQoKS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAiaWdub3JpbmcgYWxyZWFk
eSBhZGRlZCBjdWU6ICIsIHZ0dEN1ZS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KKworICAgICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgdnR0Q3VlLmdldCgpKTsK
KwogICAgICAgICBhZGRDdWUoV1RGTW92ZSh2dHRDdWUpKTsKICAgICB9CiB9CkBAIC05Myw3ICs5
Niw3IEBAIHZvaWQgSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpuZXdSZWdpb25zUGEKIAogdm9pZCBJ
bmJhbmRXZWJWVFRUZXh0VHJhY2s6OmZpbGVGYWlsZWRUb1BhcnNlKCkKIHsKLSAgICBMT0coTWVk
aWEsICJFcnJvciBwYXJzaW5nIFdlYlZUVCBzdHJlYW0uIik7CisgICAgRVJST1JfTE9HKExPR0lE
RU5USUZJRVIsICJFcnJvciBwYXJzaW5nIFdlYlZUVCBzdHJlYW0uIik7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2Vi
VlRUVGV4dFRyYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9J
bmJhbmRXZWJWVFRUZXh0VHJhY2suaAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suaAkod29ya2luZyBjb3B5KQpAQCAt
NDksNiArNDksMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIG5ld1JlZ2lvbnNQYXJzZWQoKSBmaW5h
bDsKICAgICB2b2lkIGZpbGVGYWlsZWRUb1BhcnNlKCkgZmluYWw7CiAKKyNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiAiSW5iYW5kV2ViVlRUVGV4dFRyYWNrIjsgfQorI2VuZGlmCisKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViVlRUUGFyc2VyPiBtX3dlYlZUVFBhcnNlcjsKIH07CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwCShyZXZpc2lv
biAyMjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiSFRNTFRy
YWNrRWxlbWVudC5oIgogI2luY2x1ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIKKyNpbmNsdWRlICJW
VFRDdWUuaCIKICNpbmNsdWRlICJWVFRSZWdpb25MaXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTk3LDYgKzk4LDcgQEAgdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6bmV3Q3Vlc0F2YWls
YWJsZQogCiAgICAgZm9yIChhdXRvJiBuZXdDdWUgOiBuZXdDdWVzKSB7CiAgICAgICAgIG5ld0N1
ZS0+c2V0VHJhY2sodGhpcyk7CisgICAgICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAqdG9W
VFRDdWUobmV3Q3VlLmdldCgpKSk7CiAgICAgICAgIG1fY3Vlcy0+YWRkKG5ld0N1ZS5yZWxlYXNl
Tm9uTnVsbCgpKTsKICAgICB9CiAKQEAgLTExMSw2ICsxMTMsOCBAQCB2b2lkIExvYWRhYmxlVGV4
dFRyYWNrOjpjdWVMb2FkaW5nQ29tcGxlCiAgICAgaWYgKCFtX3RyYWNrRWxlbWVudCkKICAgICAg
ICAgcmV0dXJuOwogCisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CisKICAgICBtX3RyYWNr
RWxlbWVudC0+ZGlkQ29tcGxldGVMb2FkKGxvYWRpbmdGYWlsZWQgPyBIVE1MVHJhY2tFbGVtZW50
OjpGYWlsdXJlIDogSFRNTFRyYWNrRWxlbWVudDo6U3VjY2Vzcyk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmgJKHJldmlzaW9uIDIy
MjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaAko
d29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsMTAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbG9h
ZFRpbWVyRmlyZWQoKTsKIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IGNo
YXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJMb2FkYWJsZVRleHRU
cmFjayI7IH0KKyNlbmRpZgorCiAgICAgSFRNTFRyYWNrRWxlbWVudCogbV90cmFja0VsZW1lbnQ7
CiAgICAgVGltZXIgbV9sb2FkVGltZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRleHRUcmFja0xv
YWRlcj4gbV9sb2FkZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2su
Y3BwCShyZXZpc2lvbiAyMjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKIAogI2lmIEVOQUJMRShW
SURFT19UUkFDSykKIAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIK
ICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiU291cmNlQnVmZmVyLmgi
CkBAIC0zMTYsNyArMzE3LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gVGV4dFRyYWNrOjphZGRDdWUo
UmVmPAogICAgIC8vIDIuIEFkZCBjdWUgdG8gdGhlIG1ldGhvZCdzIFRleHRUcmFjayBvYmplY3Qn
cyB0ZXh0IHRyYWNrJ3MgdGV4dCB0cmFjayBsaXN0IG9mIGN1ZXMuCiAgICAgY3VlLT5zZXRUcmFj
ayh0aGlzKTsKICAgICBlbnN1cmVUZXh0VHJhY2tDdWVMaXN0KCkuYWRkKGN1ZS5jb3B5UmVmKCkp
OwotICAgIAorCiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+dGV4dFRyYWNr
QWRkQ3VlKCp0aGlzLCBjdWUpOwogCkBAIC0zMzYsNiArMzM3LDggQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gVGV4dFRyYWNrOjpyZW1vdmVDdWUoVAogICAgIGlmICghbV9jdWVzKQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKIAorICAgIERFQlVHX0xPRyhMT0dJ
REVOVElGSUVSLCBjdWUpOworCiAgICAgLy8gMi4gUmVtb3ZlIGN1ZSBmcm9tIHRoZSBtZXRob2Qn
cyBUZXh0VHJhY2sgb2JqZWN0J3MgdGV4dCB0cmFjaydzIHRleHQgdHJhY2sgbGlzdCBvZiBjdWVz
LgogICAgIG1fY3Vlcy0+cmVtb3ZlKGN1ZSk7CiAgICAgY3VlLnNldElzQWN0aXZlKGZhbHNlKTsK
QEAgLTU0Miw3ICs1NDUsNiBAQCBib29sIFRleHRUcmFjazo6Y29udGFpbnNPbmx5Rm9yY2VkU3Vi
dGl0CiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotCiB2b2lkIFRleHRUcmFjazo6c2V0
TGFuZ3VhZ2UoY29uc3QgQXRvbWljU3RyaW5nJiBsYW5ndWFnZSkKIHsKICAgICAvLyAxMS4xIGxh
bmd1YWdlLCBvbiBzZXR0aW5nOgpAQCAtNTY0LDcgKzU2Niw2IEBAIHZvaWQgVGV4dFRyYWNrOjpz
ZXRMYW5ndWFnZShjb25zdCBBdG9taWMKICAgICBpZiAobWVkaWFFbGVtZW50KCkpCiAgICAgICAg
IG1lZGlhRWxlbWVudCgpLT50ZXh0VHJhY2tzKCkuc2NoZWR1bGVDaGFuZ2VFdmVudCgpOwogfQot
CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RleHRUcmFjay5oCShyZXZpc2lvbiAyMjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNiArMTQ3LDEwIEBA
IHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFRleHRUcmFja0NsaWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYga2luZCwgY29uc3QgQXRv
bWljU3RyaW5nJiBpZCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbWljU3Ry
aW5nJiBsYW5ndWFnZSwgVGV4dFRyYWNrVHlwZSk7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAiVGV4dFRyYWNrIjsgfQorI2VuZGlmCisKICAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4g
bV9jdWVzOwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tDdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrQ3VlLmNwcAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2tDdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYsNiArMjE2LDM1IEBA
IGJvb2wgVGV4dFRyYWNrQ3VlOjpkb2VzRXh0ZW5kQ3VlKGNvbnN0IFQKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAorU3RyaW5nIFRleHRUcmFja0N1ZTo6dG9TdHJpbmcoKSBjb25zdAoreworICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKKworICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgic3RhcnQg
PSAiKTsKKyAgICBidWlsZGVyLmFwcGVuZChtX3N0YXJ0VGltZS50b1N0cmluZygpKTsKKworICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCBlbmQgPSAiKTsKKyAgICBidWlsZGVyLmFwcGVuZCht
X2VuZFRpbWUudG9TdHJpbmcoKSk7CisKKyAgICBjb25zdCBjaGFyKiB0eXBlID0gIkdlbmVyaWMi
OworICAgIHN3aXRjaCAoY3VlVHlwZSgpKSB7CisgICAgY2FzZSBUZXh0VHJhY2tDdWU6OkdlbmVy
aWM6CisgICAgICAgIHR5cGUgPSAiR2VuZXJpYyI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
VGV4dFRyYWNrQ3VlOjpXZWJWVFQ6CisgICAgICAgIHR5cGUgPSAiV2ViVlRUIjsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBUZXh0VHJhY2tDdWU6OkRhdGE6CisgICAgICAgIHR5cGUgPSAiRGF0
YSI7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
LCB0eXBlID0gIik7CisgICAgYnVpbGRlci5hcHBlbmQodHlwZSk7CisKKyAgICByZXR1cm4gYnVp
bGRlci50b1N0cmluZygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCShyZXZpc2lvbiAy
MjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NCw2ICs4NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxDaGFuZ2Uo
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlKCk7CiAKKyAgICB2aXJ0dWFsIFN0cmluZyB0
b1N0cmluZygpIGNvbnN0OworCiAgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOwogICAgIHVzaW5n
IFJlZkNvdW50ZWQ6OmRlcmVmOwogCkBAIC0xMTksNCArMTIxLDIwIEBAIHByaXZhdGU6CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFBBTCB7CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFR5cGU+CitzdHJ1Y3QgTG9nQXJndW1lbnQ7CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgTG9n
QXJndW1lbnQ8V2ViQ29yZTo6VGV4dFRyYWNrQ3VlPiB7CisgICAgc3RhdGljIFN0cmluZyB0b1N0
cmluZyhjb25zdCBXZWJDb3JlOjpUZXh0VHJhY2tDdWUmIGN1ZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBjdWUudG9TdHJpbmcoKTsKKyAgICB9Cit9OworCisKK30KKwogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAJ
KHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
Q3VlR2VuZXJpYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw4ICsxODksNiBAQCB2b2lkIFRl
eHRUcmFja0N1ZUdlbmVyaWM6OnNldEZvbnRTaXplKGluCiAgICAgaWYgKGZvbnRTaXplTXVsdGlw
bGllcigpKQogICAgICAgICBzaXplICo9IGZvbnRTaXplTXVsdGlwbGllcigpIC8gMTAwOwogICAg
IGRpc3BsYXlUcmVlSW50ZXJuYWwoKS5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
Rm9udFNpemUsIGxyb3VuZChzaXplKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7Ci0KLSAg
ICBMT0coTWVkaWEsICJUZXh0VHJhY2tDdWVHZW5lcmljOjpzZXRGb250U2l6ZSAtIHNldHRpbmcg
Y3VlIGZvbnQgc2l6ZSB0byAlbGkiLCBscm91bmQoc2l6ZSkpOwogfQogCiBib29sIFRleHRUcmFj
a0N1ZUdlbmVyaWM6OmN1ZUNvbnRlbnRzTWF0Y2goY29uc3QgVGV4dFRyYWNrQ3VlJiBjdWUpIGNv
bnN0CkBAIC0yNjcsNyArMjY1LDQ2IEBAIGJvb2wgVGV4dFRyYWNrQ3VlR2VuZXJpYzo6aXNQb3Np
dGlvbmVkQWIKICAgICAKICAgICByZXR1cm4gVlRUQ3VlOjppc09yZGVyZWRCZWZvcmUodGhhdCk7
CiB9Ci0gICAgCisKK1N0cmluZyBUZXh0VHJhY2tDdWVHZW5lcmljOjp0b1N0cmluZygpIGNvbnN0
Cit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworCisgICAgYnVpbGRlci5hcHBlbmQoVlRU
Q3VlOjp0b1N0cmluZygpKTsKKworICAgIGlmIChtX2ZvcmVncm91bmRDb2xvci5pc1ZhbGlkKCkp
IHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIGZvcmVncm91bmQgY29sb3IgPSAi
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobV9mb3JlZ3JvdW5kQ29sb3Iuc2VyaWFsaXplZCgp
KTsKKyAgICB9CisKKyAgICBpZiAobV9iYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKSB7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCBiYWNrZ3JvdW5kIGNvbG9yID0gIik7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKG1fYmFja2dyb3VuZENvbG9yLnNlcmlhbGl6ZWQoKSk7CisgICAg
fQorCisgICAgaWYgKG1faGlnaGxpZ2h0Q29sb3IuaXNWYWxpZCgpKSB7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiLCBoaWxpZ2h0IGNvbG9yID0gIik7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKG1faGlnaGxpZ2h0Q29sb3Iuc2VyaWFsaXplZCgpKTsKKyAgICB9CisKKyAgICBpZiAo
bV9iYXNlRm9udFNpemVSZWxhdGl2ZVRvVmlkZW9IZWlnaHQpIHsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIsIGJhc2UgZm9udCBzaXplIHJlbGF0aXZlIHRvIHZpZGVvIGhlaWdodCA9
ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX2Jhc2VGb250U2l6ZVJlbGF0aXZl
VG9WaWRlb0hlaWdodCk7CisgICAgfQorCisgICAgaWYgKG1fZm9udFNpemVNdWx0aXBsaWVyKSB7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCBmb250IHNpemUgbXVsdGlwbGllciA9
ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX2ZvbnRTaXplTXVsdGlwbGllcik7
CisgICAgfQorCisgICAgaWYgKCFtX2ZvbnROYW1lLmlzRW1wdHkoKSkgeworICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIiwgZm9udCA9ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCht
X2ZvbnROYW1lKTsKKyAgICB9CisKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmgJKHJldmlzaW9uIDIyMjAwNykK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Nyw2ICs2Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Rm9udFNp
emUoaW50LCBjb25zdCBJbnRTaXplJiwgYm9vbCBpbXBvcnRhbnQpIGZpbmFsOwogCisgICAgU3Ry
aW5nIHRvU3RyaW5nKCkgY29uc3QgZmluYWw7CisKIHByaXZhdGU6CiAgICAgVGV4dFRyYWNrQ3Vl
R2VuZXJpYyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwg
Y29uc3QgTWVkaWFUaW1lJiBlbmQsIGNvbnN0IFN0cmluZyYpOwogICAgIApAQCAtOTIsNCArOTQs
MTggQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2UgUEFM
IHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KK3N0cnVjdCBMb2dBcmd1bWVudDsKKwordGVt
cGxhdGUgPD4KK3N0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpUZXh0VHJhY2tDdWVHZW5lcmlj
PiB7CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBXZWJDb3JlOjpUZXh0VHJhY2tD
dWVHZW5lcmljJiBjdWUpCisgICAgeworICAgICAgICByZXR1cm4gY3VlLnRvU3RyaW5nKCk7Cisg
ICAgfQorfTsKKworfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Ry
YWNrQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFj
a0Jhc2UuY3BwCShyZXZpc2lvbiAyMjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RyYWNrQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJUcmFja0Jhc2UuaCIKIAorI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CiAKQEAgLTM3LDYgKzM4LDIxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Rh
dGljIGludCBzX3VuaXF1ZUlkID0gMDsKIAorICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyBz
dGF0aWMgY29uc3Qgdm9pZCogbmV4dExvZ0lkZW50aWZpZXIoKQorIHsKKyAgICAgc3RhdGljIHVp
bnQ2NF90IGxvZ0lkZW50aWZpZXIgPSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOwor
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oKytsb2dJZGVudGlmaWVy
KTsKKyB9CisgCisgc3RhdGljIFJlZlB0cjxQQUw6OkxvZ2dlcj4mIG51bGxMb2dnZXIoKQorIHsK
KyAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxQQUw6OkxvZ2dlcj4+IGxvZ2dlcjsK
KyAgICAgcmV0dXJuIGxvZ2dlcjsKKyB9CisgI2VuZGlmCisgCisKIFRyYWNrQmFzZTo6VHJhY2tC
YXNlKFR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgY29uc3QgQXRvbWljU3RyaW5n
JiBsYWJlbCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYW5ndWFnZSkKICAgICA6IG1fdW5pcXVlSWQo
KytzX3VuaXF1ZUlkKQogICAgICwgbV9pZChpZCkKQEAgLTQ2LDEwICs2MiwxNiBAQCBUcmFja0Jh
c2U6OlRyYWNrQmFzZShUeXBlIHR5cGUsIGNvbnN0IEF0CiB7CiAgICAgQVNTRVJUKHR5cGUgIT0g
QmFzZVRyYWNrKTsKICAgICBtX3R5cGUgPSB0eXBlOwotfQogCi1UcmFja0Jhc2U6On5UcmFja0Jh
c2UoKQoteworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGlmICghbnVsbExvZ2dlcigp
LmdldCgpKSB7CisgICAgICAgIG51bGxMb2dnZXIoKSA9IFBBTDo6TG9nZ2VyOjpjcmVhdGUodGhp
cyk7CisgICAgICAgIG51bGxMb2dnZXIoKS0+c2V0RW5hYmxlZCh0aGlzLCBmYWxzZSk7CisgICAg
fQorCisgICAgbV9sb2dnZXIgPSBudWxsTG9nZ2VyKCkuZ2V0KCk7CisgICAgbV9sb2dJZGVudGlm
aWVyID0gbmV4dExvZ0lkZW50aWZpZXIoKTsKKyNlbmRpZgogfQogCiBFbGVtZW50KiBUcmFja0Jh
c2U6OmVsZW1lbnQoKQpAQCAtNTcsNiArNzksMTggQEAgRWxlbWVudCogVHJhY2tCYXNlOjplbGVt
ZW50KCkKICAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQ7CiB9CiAKK3ZvaWQgVHJhY2tCYXNlOjpz
ZXRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBtX21lZGlh
RWxlbWVudCA9IGVsZW1lbnQ7CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBpZiAo
ZWxlbWVudCkgeworICAgICAgICBtX2xvZ2dlciA9ICZlbGVtZW50LT5sb2dnZXIoKTsKKyAgICAg
ICAgbV9sb2dJZGVudGlmaWVyID0gZWxlbWVudC0+bG9nSWRlbnRpZmllcigpOworICAgIH0KKyNl
bmRpZgorfQorCiAvLyBTZWU6IGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9iY3A0NyNzZWN0
aW9uLTIuMQogc3RhdGljIGJvb2wgaXNWYWxpZEJDUDQ3TGFuZ3VhZ2VUYWcoY29uc3QgU3RyaW5n
JiBsYW5ndWFnZVRhZykKIHsKQEAgLTEzNCw2ICsxNjgsMTMgQEAgQXRvbWljU3RyaW5nIFRyYWNr
QmFzZTo6dmFsaWRCQ1A0N0xhbmd1YQogICAgIHJldHVybiBtX3ZhbGlkQkNQNDdMYW5ndWFnZTsK
IH0KIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorV1RGTG9nQ2hhbm5lbCYgVHJhY2tCYXNl
Ojpsb2dDaGFubmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTG9nTWVkaWE7Cit9CisjZW5kaWYK
KwogTWVkaWFUcmFja0Jhc2U6Ok1lZGlhVHJhY2tCYXNlKFR5cGUgdHlwZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBpZCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbWljU3RyaW5n
JiBsYW5ndWFnZSkKICAgICA6IFRyYWNrQmFzZSh0eXBlLCBpZCwgbGFiZWwsIGxhbmd1YWdlKQog
ewpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oCShyZXZpc2lvbiAyMjIw
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw2ICsyNyw4IEBACiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAKKyNpbmNs
dWRlIDxwYWwvTG9nZ2VyLmg+CisjaW5jbHVkZSA8cGFsL0xvZ2dlckhlbHBlci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0z
NSwxNCArMzcsMTkgQEAgY2xhc3MgRWxlbWVudDsKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBj
bGFzcyBTb3VyY2VCdWZmZXI7CiAKLWNsYXNzIFRyYWNrQmFzZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFRyYWNrQmFzZT4geworY2xhc3MgVHJhY2tCYXNlCisgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxU
cmFja0Jhc2U+CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBwcml2YXRlIFBBTDo6
TG9nZ2VySGVscGVyCisjZW5kaWYKK3sKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5UcmFja0Jhc2Uo
KTsKKyAgICB2aXJ0dWFsIH5UcmFja0Jhc2UoKSA9IGRlZmF1bHQ7CiAKICAgICBlbnVtIFR5cGUg
eyBCYXNlVHJhY2ssIFRleHRUcmFjaywgQXVkaW9UcmFjaywgVmlkZW9UcmFjayB9OwogICAgIFR5
cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCi0gICAgdm9pZCBzZXRNZWRpYUVs
ZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkgeyBtX21lZGlhRWxlbWVudCA9IGVsZW1l
bnQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQq
KTsKICAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQoKSB7IHJldHVybiBtX21lZGlh
RWxlbWVudDsgfQogICAgIHZpcnR1YWwgRWxlbWVudCogZWxlbWVudCgpOwogCkBAIC02Nyw2ICs3
NCwxMiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIGNvbnN0ID0gMDsK
IAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IFBBTDo6TG9nZ2VyJiBsb2dn
ZXIoKSBjb25zdCBmaW5hbCB7IEFTU0VSVChtX2xvZ2dlcik7IHJldHVybiAqbV9sb2dnZXIuZ2V0
KCk7IH0KKyAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9sb2dJZGVudGlmaWVyOyB9CisgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNv
bnN0IGZpbmFsOworI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBUcmFja0Jhc2UoVHlwZSwgY29u
c3QgQXRvbWljU3RyaW5nJiBpZCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRv
bWljU3RyaW5nJiBsYW5ndWFnZSk7CiAKQEAgLTgzLDYgKzk2LDEwIEBAIHByaXZhdGU6CiAgICAg
QXRvbWljU3RyaW5nIG1fbGFiZWw7CiAgICAgQXRvbWljU3RyaW5nIG1fbGFuZ3VhZ2U7CiAgICAg
QXRvbWljU3RyaW5nIG1fdmFsaWRCQ1A0N0xhbmd1YWdlOworI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAorICAgIFJlZlB0cjxjb25zdCBQQUw6OkxvZ2dlcj4gbV9sb2dnZXI7CisgICAgY29uc3Qg
dm9pZCogbV9sb2dJZGVudGlmaWVyOworI2VuZGlmCiB9OwogCiBjbGFzcyBNZWRpYVRyYWNrQmFz
ZSA6IHB1YmxpYyBUcmFja0Jhc2UgewpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9W
VFRDdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3Vl
LmNwcAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRD
dWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTU2LDggKzExNTYsNiBAQCB2b2lkIFZUVEN1ZTo6
c2V0Rm9udFNpemUoaW50IGZvbnRTaXplLCBjCiB7CiAgICAgaWYgKCFoYXNEaXNwbGF5VHJlZSgp
IHx8ICFmb250U2l6ZSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIExPRyhNZWRpYSwgIlRl
eHRUcmFja0N1ZTo6c2V0Rm9udFNpemUgLSBzZXR0aW5nIGN1ZSBmb250IHNpemUgdG8gJWkiLCBm
b250U2l6ZSk7CiAKICAgICBtX2Rpc3BsYXlUcmVlU2hvdWxkQ2hhbmdlID0gdHJ1ZTsKICAgICBk
aXNwbGF5VHJlZUludGVybmFsKCkuc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZv
bnRTaXplLCBmb250U2l6ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCwgaW1wb3J0YW50KTsK
QEAgLTExNzQsNiArMTE3MiwxOCBAQCBjb25zdCBWVFRDdWUqIHRvVlRUQ3VlKGNvbnN0IFRleHRU
cmFja0N1CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFZUVEN1ZSo+KGN1ZSk7CiB9CiAK
K1N0cmluZyBWVFRDdWU6OnRvU3RyaW5nKCkgY29uc3QKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7CisKKyAgICBidWlsZGVyLmFwcGVuZChUZXh0VHJhY2tDdWU6OnRvU3RyaW5nKCkpOwor
CisgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIGNvbnRlbnQgPSAiKTsKKyAgICBidWlsZGVy
LmFwcGVuZCh0ZXh0KCkpOworCisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVlRUQ3VlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WVFRDdWUuaAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WVFRDdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2Nyw4IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgZGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAKKyAgICBTdHJpbmcgdG9TdHJpbmcoKSBj
b25zdCBvdmVycmlkZTsKKwogcHJvdGVjdGVkOgogICAgIFZUVEN1ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIGNv
bnN0IFN0cmluZyYgY29udGVudCk7CiAgICAgVlRUQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBjb25zdCBXZWJWVFRDdWVEYXRhJik7CkBAIC0yMjcsNCArMjI5LDE5IEBAIGNvbnN0IFZUVEN1
ZSogdG9WVFRDdWUoY29uc3QgVGV4dFRyYWNrQ3UKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CituYW1lc3BhY2UgUEFMIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KK3N0cnVjdCBMb2dB
cmd1bWVudDsKKwordGVtcGxhdGUgPD4KK3N0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpWVFRD
dWU+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OlZUVEN1ZSYg
Y3VlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGN1ZS50b1N0cmluZygpOworICAgIH0KK307CisK
K30KKwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2su
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5j
cHAJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9U
cmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDEwICs4MiwxMyBAQCBjb25zdCBBdG9taWNT
dHJpbmcmIFZpZGVvVHJhY2s6OmNvbW1lbnRhCiAKIFZpZGVvVHJhY2s6OlZpZGVvVHJhY2soVmlk
ZW9UcmFja0NsaWVudCYgY2xpZW50LCBWaWRlb1RyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQog
ICAgIDogTWVkaWFUcmFja0Jhc2UoTWVkaWFUcmFja0Jhc2U6OlZpZGVvVHJhY2ssIHRyYWNrUHJp
dmF0ZS5pZCgpLCB0cmFja1ByaXZhdGUubGFiZWwoKSwgdHJhY2tQcml2YXRlLmxhbmd1YWdlKCkp
Ci0gICAgLCBtX3NlbGVjdGVkKHRyYWNrUHJpdmF0ZS5zZWxlY3RlZCgpKQogICAgICwgbV9jbGll
bnQoJmNsaWVudCkKICAgICAsIG1fcHJpdmF0ZSh0cmFja1ByaXZhdGUpCisgICAgLCBtX3NlbGVj
dGVkKHRyYWNrUHJpdmF0ZS5zZWxlY3RlZCgpKQogeworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAorICAgIG1fcHJpdmF0ZS0+c2V0TG9nZ2VyKGxvZ2dlcigpLCBsb2dJZGVudGlmaWVyKCkpOwor
I2VuZGlmCiAgICAgbV9wcml2YXRlLT5zZXRDbGllbnQodGhpcyk7CiAgICAgdXBkYXRlS2luZEZy
b21Qcml2YXRlKCk7CiB9CkBAIC0xMDMsNiArMTA2LDkgQEAgdm9pZCBWaWRlb1RyYWNrOjpzZXRQ
cml2YXRlKFZpZGVvVHJhY2tQcgogICAgIG1fcHJpdmF0ZS0+c2V0Q2xpZW50KG51bGxwdHIpOwog
ICAgIG1fcHJpdmF0ZSA9IHRyYWNrUHJpdmF0ZTsKICAgICBtX3ByaXZhdGUtPnNldENsaWVudCh0
aGlzKTsKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBtX3ByaXZhdGUtPnNldExvZ2dl
cihsb2dnZXIoKSwgbG9nSWRlbnRpZmllcigpKTsKKyNlbmRpZgogCiAgICAgbV9wcml2YXRlLT5z
ZXRTZWxlY3RlZChtX3NlbGVjdGVkKTsKICAgICB1cGRhdGVLaW5kRnJvbVByaXZhdGUoKTsKQEAg
LTIzNyw2ICsyNDMsMTQgQEAgdm9pZCBWaWRlb1RyYWNrOjp1cGRhdGVLaW5kRnJvbVByaXZhdGUo
KQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCit2b2lkIFZpZGVvVHJhY2s6OnNldE1l
ZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KQoreworICAgIFRyYWNrQmFzZTo6
c2V0TWVkaWFFbGVtZW50KGVsZW1lbnQpOworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAg
IG1fcHJpdmF0ZS0+c2V0TG9nZ2VyKGxvZ2dlcigpLCBsb2dJZGVudGlmaWVyKCkpOworI2VuZGlm
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzcz
LDcgQEAgcHVibGljOgogICAgIGNvbnN0IE1lZGlhRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKCkg
Y29uc3Q7CiAKICAgICB2b2lkIHNldFByaXZhdGUoVmlkZW9UcmFja1ByaXZhdGUmKTsKKyAgICB2
b2lkIHNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kikgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6CiAgICAgVmlkZW9UcmFjayhWaWRlb1RyYWNrQ2xpZW50JiwgVmlkZW9UcmFja1ByaXZhdGUm
KTsKQEAgLTkyLDEwICs5MywxMyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVLaW5kRnJv
bVByaXZhdGUoKTsKIAotICAgIGJvb2wgbV9zZWxlY3RlZDsKLSAgICBWaWRlb1RyYWNrQ2xpZW50
KiBtX2NsaWVudDsKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBs
b2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiVmlkZW9UcmFjayI7IH0KKyNlbmRp
ZgogCisgICAgVmlkZW9UcmFja0NsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07CiAgICAgUmVm
PFZpZGVvVHJhY2tQcml2YXRlPiBtX3ByaXZhdGU7CisgICAgYm9vbCBtX3NlbGVjdGVkIHsgZmFs
c2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaAkocmV2aXNp
b24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFj
a1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsMTAgQEAgcHVibGljOgogICAg
IGVudW0gS2luZCB7IEFsdGVybmF0aXZlLCBEZXNjcmlwdGlvbiwgTWFpbiwgTWFpbkRlc2MsIFRy
YW5zbGF0aW9uLCBDb21tZW50YXJ5LCBOb25lIH07CiAgICAgdmlydHVhbCBLaW5kIGtpbmQoKSBj
b25zdCB7IHJldHVybiBOb25lOyB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBj
b25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiQXVkaW9U
cmFja1ByaXZhdGUiOyB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIEF1ZGlvVHJhY2tQcml2
YXRlKCkgPSBkZWZhdWx0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oCShyZXZpc2lvbiAyMjIw
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCiAKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgiCisj
aW5jbHVkZSA8cGFsL0xvZ2dlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQyLDgg
KzQzLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZT4gY3JlYXRlKEN1ZUZvcm1hdCBmb3JtYXQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlKGZvcm1hdCkpOyB9CiAgICAgdmlydHVhbCB+SW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZSgpIHsgfQogCi0gICAgdm9pZCBzZXRDbGllbnQoSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUNsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAgICAgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUNsaWVudCogY2xpZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jbGll
bnQ7IH0KKyAgICB2b2lkIHNldENsaWVudChJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50KiBj
bGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KIAogICAgIGVudW0gTW9kZSB7CiAgICAgICAg
IERpc2FibGVkLApAQCAtNzgsNiArNzksMTAgQEAgcHVibGljOgogCiAgICAgQ3VlRm9ybWF0IGN1
ZUZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0OyB9CiAKKyNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSI7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6
CiAgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZShDdWVGb3JtYXQgZm9ybWF0KQogICAgICAgICA6
IG1fZm9ybWF0KGZvcm1hdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgJKHJl
dmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFu
ZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTMsNiArOTMsOCBA
QCBwdWJsaWM6CiAKICAgICBib29sIGRvZXNFeHRlbmRDdWVEYXRhKGNvbnN0IEdlbmVyaWNDdWVE
YXRhJikgY29uc3Q7CiAKKyAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKKwogcHJpdmF0ZToK
ICAgICBHZW5lcmljQ3VlRGF0YSgpID0gZGVmYXVsdDsKIApAQCAtMTEzLDYgKzExNSwxMDIgQEAg
cHJpdmF0ZToKICAgICBTdGF0dXMgbV9zdGF0dXMgeyBVbmluaXRpYWxpemVkIH07CiB9OwogCitp
bmxpbmUgU3RyaW5nIEdlbmVyaWNDdWVEYXRhOjp0b1N0cmluZygpIGNvbnN0Cit7CisgICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyOworCisgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJzdGFydCA9
ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKG1fc3RhcnRUaW1lLnRvU3RyaW5nKCkpOworCisgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIGVuZCA9ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKG1f
ZW5kVGltZS50b1N0cmluZygpKTsKKworICAgIGNvbnN0IGNoYXIqIHN0YXR1czsKKyAgICBzd2l0
Y2ggKG1fc3RhdHVzKSB7CisgICAgY2FzZSBHZW5lcmljQ3VlRGF0YTo6VW5pbml0aWFsaXplZDoK
KyAgICAgICAgc3RhdHVzID0gIlVuaW5pdGlhbGl6ZWQiOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEdlbmVyaWNDdWVEYXRhOjpQYXJ0aWFsOgorICAgICAgICBzdGF0dXMgPSAiUGFydGlhbCI7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR2VuZXJpY0N1ZURhdGE6OkNvbXBsZXRlOgorICAg
ICAgICBzdGF0dXMgPSAiQ29tcGxldGUiOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIsIHN0YXR1cyA9ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKHN0
YXR1cyk7CisKKyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgaWQgPSAiKTsKKyAgICBidWls
ZGVyLmFwcGVuZChtX2lkKTsKKworICAgIGlmIChtX2xpbmUgPiAwKSB7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiLCBsaW5lID0gIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVt
YmVyKG1fbGluZSk7CisgICAgfQorCisgICAgaWYgKG1fc2l6ZSA+IDApIHsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIsIHNpemUgPSAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRO
dW1iZXIobV9zaXplKTsKKyAgICB9CisKKyAgICBpZiAobV9wb3NpdGlvbiA+IDApIHsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIHBvc2l0aW9uID0gIik7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTnVtYmVyKG1fcG9zaXRpb24pOworICAgIH0KKworICAgIGlmIChtX2FsaWduICE9
IE5vbmUpIHsKKyAgICAgICAgY29uc3QgY2hhciogYWxpZ247CisgICAgICAgIHN3aXRjaCAobV9h
bGlnbikgeworICAgICAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpTdGFydDoKKyAgICAgICAgICAg
IGFsaWduID0gIlN0YXJ0IjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdlbmVy
aWNDdWVEYXRhOjpNaWRkbGU6CisgICAgICAgICAgICBhbGlnbiA9ICJNaWRkbGUiOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2VuZXJpY0N1ZURhdGE6OkVuZDoKKyAgICAgICAg
ICAgIGFsaWduID0gIkVuZCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHZW5l
cmljQ3VlRGF0YTo6Tm9uZToKKyAgICAgICAgICAgIGFsaWduID0gIk5vbmUiOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIGFs
aWduID0gIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFsaWduKTsKKyAgICB9CisKKyAgICBp
ZiAobV9mb3JlZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiLCBmb3JlZ3JvdW5kIGNvbG9yID0gIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KG1fZm9yZWdyb3VuZENvbG9yLnNlcmlhbGl6ZWQoKSk7CisgICAgfQorCisgICAgaWYgKG1fYmFj
a2dyb3VuZENvbG9yLmlzVmFsaWQoKSkgeworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IiwgYmFja2dyb3VuZCBjb2xvciA9ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChtX2JhY2tn
cm91bmRDb2xvci5zZXJpYWxpemVkKCkpOworICAgIH0KKworICAgIGlmIChtX2hpZ2hsaWdodENv
bG9yLmlzVmFsaWQoKSkgeworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgaGlsaWdo
dCBjb2xvciA9ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChtX2hpZ2hsaWdodENvbG9yLnNl
cmlhbGl6ZWQoKSk7CisgICAgfQorCisgICAgaWYgKG1fYmFzZUZvbnRTaXplKSB7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCBiYXNlIGZvbnQgc2l6ZSA9ICIpOworICAgICAgICBi
dWlsZGVyLmFwcGVuZE51bWJlcihtX2Jhc2VGb250U2l6ZSk7CisgICAgfQorCisgICAgaWYgKG1f
cmVsYXRpdmVGb250U2l6ZSkgeworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgcmVs
YXRpdmUgZm9udCBzaXplID0gIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fcmVs
YXRpdmVGb250U2l6ZSk7CisgICAgfQorCisgICAgaWYgKCFtX2ZvbnROYW1lLmlzRW1wdHkoKSkg
eworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgZm9udCA9ICIpOworICAgICAgICBi
dWlsZGVyLmFwcGVuZChtX2ZvbnROYW1lKTsKKyAgICB9CisKKyAgICByZXR1cm4gYnVpbGRlci50
b1N0cmluZygpOworfQorCiBpbmxpbmUgYm9vbCBHZW5lcmljQ3VlRGF0YTo6ZG9lc0V4dGVuZEN1
ZURhdGEoY29uc3QgR2VuZXJpY0N1ZURhdGEmIG90aGVyKSBjb25zdAogewogICAgIGlmIChtX3Jl
bGF0aXZlRm9udFNpemUgIT0gb3RoZXIubV9yZWxhdGl2ZUZvbnRTaXplKQpAQCAtMTY2LDQgKzI2
NCwxOSBAQCBwdWJsaWM6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFBB
TCB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CitzdHJ1Y3QgTG9nQXJndW1lbnQ7CisKK3Rl
bXBsYXRlIDw+CitzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE+IHsK
KyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRh
JiBjdWUpCisgICAgeworICAgICAgICByZXR1cm4gY3VlLnRvU3RyaW5nKCk7CisgICAgfQorfTsK
KworfQorCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Ry
YWNrUHJpdmF0ZUJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1RyYWNrUHJpdmF0ZUJhc2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJpdmF0ZUJhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiVHJhY2tQcml2YXRlQmFzZS5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQor
CisjaW5jbHVkZSAiTG9nZ2luZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKK3ZvaWQgVHJhY2tQcml2YXRlQmFzZTo6c2V0TG9nZ2VyKGNvbnN0
IFBBTDo6TG9nZ2VyJiBsb2dnZXIsIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIpCit7CisgICAg
bV9sb2dnZXIgPSAmbG9nZ2VyOworICAgIG1fbG9nSWRlbnRpZmllciA9IGxvZ0lkZW50aWZpZXI7
Cit9CisKK1dURkxvZ0NoYW5uZWwmIFRyYWNrUHJpdmF0ZUJhc2U6OmxvZ0NoYW5uZWwoKSBjb25z
dAoreworICAgIHJldHVybiBMb2dNZWRpYTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VHJhY2tQcml2YXRlQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1RyYWNrUHJpdmF0ZUJhc2UuaAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw2ICsyOSw4IEBACiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAKKyNpbmNs
dWRlIDxwYWwvTG9nZ2VyLmg+CisjaW5jbHVkZSA8cGFsL0xvZ2dlckhlbHBlci5oPgogI2luY2x1
ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KQEAgLTQ0LDcgKzQ2LDEyIEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlbW92ZSgpID0gMDsKIH07CiAKLWNsYXNz
IFRyYWNrUHJpdmF0ZUJhc2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VHJhY2tQcml2
YXRlQmFzZT4geworY2xhc3MgVHJhY2tQcml2YXRlQmFzZQorICAgIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFRyYWNrUHJpdmF0ZUJhc2U+CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CisgICAgLCBwcml2YXRlIFBBTDo6TG9nZ2VySGVscGVyCisjZW5kaWYKK3sKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShUcmFja1ByaXZhdGVCYXNlKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKQEAgLTY2LDggKzczLDIwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGNs
aWVudC0+d2lsbFJlbW92ZSgpOwogICAgIH0KIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAor
ICAgIHZvaWQgc2V0TG9nZ2VyKGNvbnN0IFBBTDo6TG9nZ2VyJiwgY29uc3Qgdm9pZCopOworICAg
IGNvbnN0IFBBTDo6TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IEFTU0VSVChtX2xvZ2dl
cik7IHJldHVybiAqbV9sb2dnZXIuZ2V0KCk7IH0KKyAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlm
aWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CisgICAgV1RGTG9n
Q2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZpbmFsOworI2VuZGlmCisKIHByb3RlY3RlZDoK
ICAgICBUcmFja1ByaXZhdGVCYXNlKCkgPSBkZWZhdWx0OworCisjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECisgICAgUmVmUHRyPGNvbnN0IFBBTDo6TG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBjb25z
dCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQ
cml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VmlkZW9UcmFja1ByaXZhdGUuaAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NTQsNiArNTQsMTAgQEAgcHVibGljOgogICAgIGVudW0gS2luZCB7IEFsdGVybmF0aXZlLCBDYXB0
aW9ucywgTWFpbiwgU2lnbiwgU3VidGl0bGVzLCBDb21tZW50YXJ5LCBOb25lIH07CiAgICAgdmly
dHVhbCBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBOb25lOyB9CiAKKyNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiAiVmlkZW9UcmFja1ByaXZhdGUiOyB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAg
IFZpZGVvVHJhY2tQcml2YXRlKCkgPSBkZWZhdWx0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbQkocmV2aXNpb24gMjIyMDA3KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2
YXRlQVZGT2JqQ0ltcGwubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbXBv
cnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckl0ZW0uaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9B
VlBsYXllckl0ZW1UcmFjay5oPgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CisjaW1wb3J0IDxw
YWwvTG9nZ2VyLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KIAogQGNsYXNzIEFWTWVk
aWFTZWxlY3Rpb25PcHRpb247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAkocmV2aXNpb24gMjIyMDA3KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZE1l
dGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMw
LDcgQEAKIAogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCIKICNpbmNs
dWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlIDxDb3Jl
TWVkaWEvQ29yZU1lZGlhLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzYsMTIgKzc3LDEyIEBAIHZvaWQgSW5iYW5k
TWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjoKICAgICBpZiAodGltZSA+PSBtX2N1cnJlbnRD
dWVTdGFydFRpbWUpIHsKICAgICAgICAgaWYgKGNsaWVudCgpKSB7CiAgICAgICAgICAgICBmb3Ig
KGF1dG8mIHBhcnRpYWxDdWUgOiBtX2luY29tcGxldGVDdWVzKSB7Ci0gICAgICAgICAgICAgICAg
TE9HKE1lZGlhLCAiSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjp1cGRhdGVQZW5k
aW5nQ3VlRW5kVGltZXMoJXApIC0gdXBkYXRpbmcgY3VlOiBzdGFydD0lcywgZW5kPSVzIiwgdGhp
cywgdG9TdHJpbmcocGFydGlhbEN1ZS5zdGFydFRpbWUpLnV0ZjgoKS5kYXRhKCksIHRvU3RyaW5n
KHRpbWUpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgICAgIElORk9fTE9HKExPR0lERU5U
SUZJRVIsICJ1cGRhdGluZyBjdWU6IHN0YXJ0ID0gIiwgcGFydGlhbEN1ZS5zdGFydFRpbWUsICIs
IGVuZCA9ICIsIHRpbWUpOwogICAgICAgICAgICAgICAgIGNsaWVudCgpLT51cGRhdGVEYXRhQ3Vl
KHBhcnRpYWxDdWUuc3RhcnRUaW1lLCB0aW1lLCAqcGFydGlhbEN1ZS5jdWVEYXRhKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZQotICAgICAgICBMT0coTWVkaWEsICJJbmJh
bmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6OnVwZGF0ZVBlbmRpbmdDdWVFbmRUaW1lcyBu
ZWdhdGl2ZSBsZW5ndGggY3VlKHMpIGlnbm9yZWQ6IHN0YXJ0PSVzLCBlbmQ9JXNcbiIsIHRvU3Ry
aW5nKG1fY3VycmVudEN1ZVN0YXJ0VGltZSkudXRmOCgpLmRhdGEoKSwgdG9TdHJpbmcodGltZSku
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgIFdBUk5JTkdfTE9HKExPR0lERU5USUZJRVIsICJuZWdh
dGl2ZSBsZW5ndGggY3VlKHMpIGlnbm9yZWQ6IHN0YXJ0ID0gIiwgbV9jdXJyZW50Q3VlU3RhcnRU
aW1lLCAiLCBlbmQgPSAiLCB0aW1lKTsKIAogICAgIG1faW5jb21wbGV0ZUN1ZXMuc2hyaW5rKDAp
OwogICAgIG1fY3VycmVudEN1ZVN0YXJ0VGltZSA9IE1lZGlhVGltZTo6emVyb1RpbWUoKTsKQEAg
LTkyLDcgKzkzLDcgQEAgdm9pZCBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6Ogog
dm9pZCBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6OmZsdXNoUGFydGlhbEN1ZXMo
KQogewogICAgIGlmIChtX2N1cnJlbnRDdWVTdGFydFRpbWUgJiYgbV9pbmNvbXBsZXRlQ3Vlcy5z
aXplKCkpCi0gICAgICAgIExPRyhNZWRpYSwgIkluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0
ZUFWRjo6cmVzZXRDdWVWYWx1ZXMgZmx1c2hpbmcgaW5jb21wbGV0ZSBkYXRhIGZvciBjdWVzOiBz
dGFydD0lc1xuIiwgdG9TdHJpbmcobV9jdXJyZW50Q3VlU3RhcnRUaW1lKS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImZsdXNoaW5nIGluY29tcGxldGUg
ZGF0YSBmb3IgY3Vlczogc3RhcnQgPSAiLCBtX2N1cnJlbnRDdWVTdGFydFRpbWUpOwogCiAgICAg
aWYgKGNsaWVudCgpKSB7CiAgICAgICAgIGZvciAoYXV0byYgcGFydGlhbEN1ZSA6IG1faW5jb21w
bGV0ZUN1ZXMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFk
YXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCShyZXZpc2lvbiAyMjIwMDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJh
Y2tQcml2YXRlQVZGLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDEwIEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGKEtpbmQsIEN1
ZUZvcm1hdCwgY29uc3QgQXRvbWljU3RyaW5nJik7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAi
SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGIjsgfQorI2VuZGlmCisKICAgICBLaW5k
IG1fa2luZDsKICAgICBBdG9taWNTdHJpbmcgbV9pZDsKICAgICBBdG9taWNTdHJpbmcgbV9pbkJh
bmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAkocmV2aXNpb24gMjIyMDA3KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMCArMjgsMTAgQEAKIAogI2lm
IEVOQUJMRShWSURFTykgJiYgKFVTRShBVkZPVU5EQVRJT04pIHx8IFBMQVRGT1JNKElPUykpCiAK
LSNpbmNsdWRlICJDb3JlTWVkaWFTb2Z0TGluay5oIgogI2luY2x1ZGUgIklTT1ZUVEN1ZS5oIgog
I2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJNZWRpYVRpbWVBVkZv
dW5kYXRpb24uaCIKICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8
cnVudGltZS9EYXRhVmlldy5oPgpAQCAtNDMsNiArNDMsOCBAQAogI2luY2x1ZGUgPHd0Zi91bmlj
b2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+
CiAKKyNpbmNsdWRlICJDb3JlTWVkaWFTb2Z0TGluay5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIEFWRkluYmFuZFRyYWNrUGFyZW50Ojp+QVZGSW5iYW5kVHJhY2tQYXJlbnQoKQpAQCAtMzE1
LDExICszMTcsMTMgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQwog
CiB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NBdHRyaWJ1dGVkU3RyaW5n
cyhDRkFycmF5UmVmIGF0dHJpYnV0ZWRTdHJpbmdzLCBjb25zdCBNZWRpYVRpbWUmIHRpbWUpCiB7
Ci0gICAgTE9HKE1lZGlhLCAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZSAt
ICVsaSBjdWVzIGF0IHRpbWUgJXNcbiIsIGF0dHJpYnV0ZWRTdHJpbmdzID8gQ0ZBcnJheUdldENv
dW50KGF0dHJpYnV0ZWRTdHJpbmdzKSA6IDAsIHRvU3RyaW5nKHRpbWUpLnV0ZjgoKS5kYXRhKCkp
OworICAgIENGSW5kZXggY291bnQgPSBhdHRyaWJ1dGVkU3RyaW5ncyA/IENGQXJyYXlHZXRDb3Vu
dChhdHRyaWJ1dGVkU3RyaW5ncykgOiAwOworCisgICAgaWYgKGNvdW50KQorICAgICAgICBERUJV
R19MT0coTE9HSURFTlRJRklFUiwgImFkZGVkICIsIGNvdW50LCBjb3VudCA+IDEgPyAiIGN1ZXMi
IDogIiBjdWUiLCAiIGF0IHRpbWUgIiwgdGltZSk7CiAKICAgICBWZWN0b3I8UmVmPEdlbmVyaWND
dWVEYXRhPj4gYXJyaXZpbmdDdWVzOwotICAgIGlmIChhdHRyaWJ1dGVkU3RyaW5ncykgewotICAg
ICAgICBDRkluZGV4IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KGF0dHJpYnV0ZWRTdHJpbmdzKTsK
KyAgICBpZiAoY291bnQpIHsKICAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgY291bnQ7
IGkrKykgewogICAgICAgICAgICAgQ0ZBdHRyaWJ1dGVkU3RyaW5nUmVmIGF0dHJpYnV0ZWRTdHJp
bmcgPSBzdGF0aWNfY2FzdDxDRkF0dHJpYnV0ZWRTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0
SW5kZXgoYXR0cmlidXRlZFN0cmluZ3MsIGkpKTsKIApAQCAtMzM5LDggKzM0Myw2IEBAIHZvaWQg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0EKICAgICAgICAgICAgIGlmIChjdWVE
YXRhLT5wb3NpdGlvbigpID49IDAgJiYgY3VlRGF0YS0+c2l6ZSgpID4gMCkKICAgICAgICAgICAg
ICAgICBjdWVEYXRhLT5zZXRQb3NpdGlvbihjdWVEYXRhLT5wb3NpdGlvbigpIC0gY3VlRGF0YS0+
c2l6ZSgpIC8gMik7CiAKLSAgICAgICAgICAgIExPRyhNZWRpYSwgIkluYmFuZFRleHRUcmFja1By
aXZhdGVBVkY6OnByb2Nlc3NDdWUoJXApIC0gY29uc2lkZXJpbmcgY3VlIChcIiVzXCIpIGZvciB0
aW1lID0gJXMsIHBvc2l0aW9uID0gICUuMmYsIGxpbmUgPSAgJS4yZiIsIHRoaXMsIGN1ZURhdGEt
PmNvbnRlbnQoKS51dGY4KCkuZGF0YSgpLCB0b1N0cmluZyhjdWVEYXRhLT5zdGFydFRpbWUoKSku
dXRmOCgpLmRhdGEoKSwgY3VlRGF0YS0+cG9zaXRpb24oKSwgY3VlRGF0YS0+bGluZSgpKTsKLQog
ICAgICAgICAgICAgY3VlRGF0YS0+c2V0U3RhdHVzKEdlbmVyaWNDdWVEYXRhOjpQYXJ0aWFsKTsK
IAogICAgICAgICAgICAgYXJyaXZpbmdDdWVzLmFwcGVuZChXVEZNb3ZlKGN1ZURhdGEpKTsKQEAg
LTM1OSw3ICszNjEsNyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NB
CiAgICAgICAgICAgICAgICAgICAgIGlmICghYXJyaXZpbmdDdWUtPmRvZXNFeHRlbmRDdWVEYXRh
KCpjdWVEYXRhKSkKICAgICAgICAgICAgICAgICAgICAgICAgIG5vbkV4dGVuc2lvbkN1ZXMuYXBw
ZW5kKFdURk1vdmUoYXJyaXZpbmdDdWUpKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICAgICAgTE9HKE1lZGlhLCAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Rjo6cHJvY2Vzc0N1ZSglcCkgLSBmb3VuZCBhbiBleHRlbnNpb24gY3VlIChcIiVzXCIpIGZvciB0
aW1lID0gJS4yZiwgZW5kID0gJS4yZiwgcG9zaXRpb24gPSAgJS4yZiwgbGluZSA9ICAlLjJmIiwg
dGhpcywgYXJyaXZpbmdDdWUtPmNvbnRlbnQoKS51dGY4KCkuZGF0YSgpLCBhcnJpdmluZ0N1ZS0+
c3RhcnRUaW1lKCkudG9Eb3VibGUoKSwgYXJyaXZpbmdDdWUtPmVuZFRpbWUoKS50b0RvdWJsZSgp
LCBhcnJpdmluZ0N1ZS0+cG9zaXRpb24oKSwgYXJyaXZpbmdDdWUtPmxpbmUoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgImZvdW5kIGFuIGV4dGVu
c2lvbiBjdWU6ICIsICpjdWVEYXRhKTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
ICAgICBib29sIGN1cnJlbnRDdWVJc0V4dGVuZGVkID0gKGFycml2aW5nQ3Vlcy5zaXplKCkgIT0g
bm9uRXh0ZW5zaW9uQ3Vlcy5zaXplKCkpOwpAQCAtMzczLDE2ICszNzUsMTcgQEAgdm9pZCBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQQogICAgICAgICAgICAgICAgICAgICBjdWVE
YXRhLT5zZXRFbmRUaW1lKG1fY3VycmVudEN1ZUVuZFRpbWUpOwogICAgICAgICAgICAgICAgICAg
ICBjdWVEYXRhLT5zZXRTdGF0dXMoR2VuZXJpY0N1ZURhdGE6OkNvbXBsZXRlKTsKIAotICAgICAg
ICAgICAgICAgICAgICBMT0coTWVkaWEsICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9j
ZXNzQ3VlKCVwKSAtIHVwZGF0aW5nIGN1ZSBcIiVzXCI6IHN0YXJ0PSUuMmYsIGVuZD0lLjJmIiwg
dGhpcywgY3VlRGF0YS0+Y29udGVudCgpLnV0ZjgoKS5kYXRhKCksIGN1ZURhdGEtPnN0YXJ0VGlt
ZSgpLnRvRG91YmxlKCksIG1fY3VycmVudEN1ZUVuZFRpbWUudG9Eb3VibGUoKSk7CisgICAgICAg
ICAgICAgICAgICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAidXBkYXRpbmcgY3VlIHN0YXJ0
ID0gIiwgY3VlRGF0YS0+c3RhcnRUaW1lKCksICIsIGVuZCA9ICIsIGN1ZURhdGEtPmVuZFRpbWUo
KSwgIiwgY29udGVudCA9ICIsIGN1ZURhdGEtPmNvbnRlbnQoKSk7CisKICAgICAgICAgICAgICAg
ICAgICAgY2xpZW50KCktPnVwZGF0ZUdlbmVyaWNDdWUoKmN1ZURhdGEpOwogICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gYXNzdW1lIHRo
YXQgdGhlIGltcGxpY2l0IGR1cmF0aW9uIGlzIGludmFsaWQgZm9yIGN1ZXMgZGVsaXZlcmVkIGR1
cmluZyBhIHNlZWsgYmVjYXVzZSB0aGUgQVZGIGRlY29kZSBwaXBlbGluZSBtYXkgbm90CiAgICAg
ICAgICAgICAgICAgICAgIC8vIHNlZSBldmVyeSBjdWUsIHNvIERPIE5PVCB1cGRhdGUgY3VlIGR1
cmF0aW9uIHdoaWxlIHNlZWtpbmcuCi0gICAgICAgICAgICAgICAgICAgIExPRyhNZWRpYSwgIklu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWUoJXApIC0gaWdub3JpbmcgY3VlIGRl
bGl2ZXJlZCBkdXJpbmcgc2Vlazogc3RhcnQ9JXMsIGVuZD0lcywgY29udGVudD1cIiVzXCIiLCB0
aGlzLCB0b1N0cmluZyhjdWVEYXRhLT5zdGFydFRpbWUoKSkudXRmOCgpLmRhdGEoKSwgdG9TdHJp
bmcobV9jdXJyZW50Q3VlRW5kVGltZSkudXRmOCgpLmRhdGEoKSwgY3VlRGF0YS0+Y29udGVudCgp
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgICAgICAgICBERUJVR19MT0coTE9HSURFTlRJ
RklFUiwgImlnbm9yaW5nIGN1ZSBkZWxpdmVyZWQgZHVyaW5nIHNlZWs6ICIsICpjdWVEYXRhKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgTE9HKE1lZGlhLCAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZSBu
ZWdhdGl2ZSBsZW5ndGggY3VlKHMpIGlnbm9yZWQ6IHN0YXJ0PSVzLCBlbmQ9JXNcbiIsICB0b1N0
cmluZyhtX2N1cnJlbnRDdWVTdGFydFRpbWUpLnV0ZjgoKS5kYXRhKCksIHRvU3RyaW5nKG1fY3Vy
cmVudEN1ZUVuZFRpbWUpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgRVJST1JfTE9HKExP
R0lERU5USUZJRVIsICJuZWdhdGl2ZSBsZW5ndGggY3VlKHMpOiBzdGFydCA9ICIsIG1fY3VycmVu
dEN1ZVN0YXJ0VGltZSwgIiwgZW5kID0gIiwgbV9jdXJyZW50Q3VlRW5kVGltZSk7CiAKICAgICAg
ICAgcmVtb3ZlQ29tcGxldGVkQ3VlcygpOwogICAgIH0KQEAgLTM5NCw5ICszOTcsNyBAQCB2b2lk
IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NBCiAKICAgICBmb3IgKGF1dG8mIGN1
ZURhdGEgOiBhcnJpdmluZ0N1ZXMpIHsKICAgICAgICAgbV9jdWVzLmFwcGVuZChjdWVEYXRhLnB0
cigpKTsKLSAgICAgICAgCi0gICAgICAgIExPRyhNZWRpYSwgIkluYmFuZFRleHRUcmFja1ByaXZh
dGVBVkY6OnByb2Nlc3NDdWUoJXApIC0gYWRkaW5nIGN1ZSBcIiVzXCIgZm9yIHRpbWUgPSAlLjJm
LCBlbmQgPSAlLjJmLCBwb3NpdGlvbiA9ICAlLjJmLCBsaW5lID0gICUuMmYiLCB0aGlzLCBjdWVE
YXRhLT5jb250ZW50KCkudXRmOCgpLmRhdGEoKSwgY3VlRGF0YS0+c3RhcnRUaW1lKCkudG9Eb3Vi
bGUoKSwgY3VlRGF0YS0+ZW5kVGltZSgpLnRvRG91YmxlKCksIGN1ZURhdGEtPnBvc2l0aW9uKCks
IGN1ZURhdGEtPmxpbmUoKSk7Ci0KKyAgICAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsICJh
ZGRpbmcgY3VlOiAiLCBjdWVEYXRhLmdldCgpKTsKICAgICAgICAgY2xpZW50KCktPmFkZEdlbmVy
aWNDdWUoY3VlRGF0YSk7CiAgICAgfQogCkBAIC00MjMsMTAgKzQyNCwxMSBAQCB2b2lkIEluYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkY6OnJlbW92ZUNvCiAgICAgaWYgKGNsaWVudCgpKSB7CiAgICAg
ICAgIGxvbmcgY3VycmVudEN1ZSA9IG1fY3Vlcy5zaXplKCkgLSAxOwogICAgICAgICBmb3IgKDsg
Y3VycmVudEN1ZSA+PSAwOyAtLWN1cnJlbnRDdWUpIHsKLSAgICAgICAgICAgIGlmIChtX2N1ZXNb
Y3VycmVudEN1ZV0tPnN0YXR1cygpICE9IEdlbmVyaWNDdWVEYXRhOjpDb21wbGV0ZSkKKyAgICAg
ICAgICAgIGF1dG8mIGN1ZSA9IG1fY3Vlc1tjdXJyZW50Q3VlXTsKKyAgICAgICAgICAgIGlmIChj
dWUtPnN0YXR1cygpICE9IEdlbmVyaWNDdWVEYXRhOjpDb21wbGV0ZSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICAgICAgTE9HKE1lZGlhLCAiSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWRjo6cmVtb3ZlQ29tcGxldGVkQ3VlcyglcCkgLSByZW1vdmluZyBjdWUgXCIlc1wiOiBz
dGFydD0lLjJmLCBlbmQ9JS4yZiIsIHRoaXMsIG1fY3Vlc1tjdXJyZW50Q3VlXS0+Y29udGVudCgp
LnV0ZjgoKS5kYXRhKCksIG1fY3Vlc1tjdXJyZW50Q3VlXS0+c3RhcnRUaW1lKCkudG9Eb3VibGUo
KSwgbV9jdWVzW2N1cnJlbnRDdWVdLT5lbmRUaW1lKCkudG9Eb3VibGUoKSk7CisgICAgICAgICAg
ICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgInJlbW92aW5nIGN1ZTogIiwgKmN1ZSk7CiAKICAg
ICAgICAgICAgIG1fY3Vlcy5yZW1vdmUoY3VycmVudEN1ZSk7CiAgICAgICAgIH0KQEAgLTQ0Miw3
ICs0NDQsNyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnJlbW92ZUNvCiB2b2lk
IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnJlc2V0Q3VlVmFsdWVzKCkKIHsKICAgICBpZiAo
bV9jdXJyZW50Q3VlRW5kVGltZSAmJiBtX2N1ZXMuc2l6ZSgpKQotICAgICAgICBMT0coTWVkaWEs
ICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpyZXNldEN1ZVZhbHVlcyBmbHVzaGluZyBkYXRh
IGZvciBjdWVzOiBzdGFydD0lc1xuIiwgdG9TdHJpbmcobV9jdXJyZW50Q3VlU3RhcnRUaW1lKS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImZsdXNoaW5n
IGRhdGEgZm9yIGN1ZXM6IHN0YXJ0ID0gIiwgbV9jdXJyZW50Q3VlU3RhcnRUaW1lKTsKIAogICAg
IGlmIChhdXRvKiBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkgewogICAgICAgICBmb3IgKGF1dG8m
IGN1ZSA6IG1fY3VlcykKQEAgLTQ3OCw3ICs0ODAsNyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1By
aXZhdGVBVkY6OnByb2Nlc3NOCiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgTE9HKE1lZGlhLCAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc05hdGl2ZVNh
bXBsZXMgLSAlbGkgc2FtcGxlIGJ1ZmZlcnMgYXQgdGltZSAlLjJmXG4iLCBjb3VudCwgcHJlc2Vu
dGF0aW9uVGltZS50b0RvdWJsZSgpKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCBjb3Vu
dCwgIiBzYW1wbGUgYnVmZmVycyBhdCB0aW1lICIsIHByZXNlbnRhdGlvblRpbWUpOwogCiAgICAg
Zm9yIChDRkluZGV4IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewogICAgICAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IGJ1ZmZlcjsKQEAgLTQ5MCwyNiArNDkyLDE0IEBAIHZvaWQgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc04KICAgICAgICAgU3RyaW5nIHR5cGUgPSBJU09Cb3g6OnBl
ZWtUeXBlKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIHNpemVfdCBib3hMZW5ndGggPSBJU09Cb3g6
OnBlZWtMZW5ndGgoYnVmZmVyLmdldCgpKTsKICAgICAgICAgaWYgKGJveExlbmd0aCA+IGJ1ZmZl
ci0+Ynl0ZUxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBMT0coTWVkaWEsICJJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGOjpwcm9jZXNzTmF0aXZlU2FtcGxlcyglcCkgLSBFUlJPUjogY2h1bmsgJyVz
JyBzaXplICglenUpIGxhcmdlciB0aGFuIGJ1ZmZlciBsZW5ndGggKCV1KSEhIiwgdGhpcywgdHlw
ZS51dGY4KCkuZGF0YSgpLCBib3hMZW5ndGgsIGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAg
ICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiY2h1bmsgIHR5cGUgPSAnIiwgdHlwZSwg
IicsIHNpemUgPSAiLCBib3hMZW5ndGgsICIgbGFyZ2VyIHRoYW4gYnVmZmVyIGxlbmd0aCEiKTsK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgTE9HKE1lZGlhLCAi
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc05hdGl2ZVNhbXBsZXMoJXApIC0gY2h1
bmsgdHlwZSA9ICclcycsIHNpemUgPSAlenUiLCB0aGlzLCB0eXBlLnV0ZjgoKS5kYXRhKCksIGJv
eExlbmd0aCk7Ci0KLSAgICAgICAgaWYgKHR5cGUgPT0gSVNPV2ViVlRUQ3VlOjpib3hUeXBlKCkp
IHsKLSAgICAgICAgICAgIElTT1dlYlZUVEN1ZSBjdWVEYXRhID0gSVNPV2ViVlRUQ3VlKHByZXNl
bnRhdGlvblRpbWUsIGR1cmF0aW9uLCBidWZmZXIuZ2V0KCkpOwotICAgICAgICAgICAgTE9HKE1l
ZGlhLCAiICAgIHNhbXBsZSBwcmVzZW50YXRpb24gdGltZSA9ICUuMmYsIGR1cmF0aW9uID0gJS4y
ZiIsIGN1ZURhdGEucHJlc2VudGF0aW9uVGltZSgpLnRvRG91YmxlKCksIGN1ZURhdGEuZHVyYXRp
b24oKS50b0RvdWJsZSgpKTsKLSAgICAgICAgICAgIExPRyhNZWRpYSwgIiAgICBpZCA9IFwiJXNc
Iiwgc2V0dGluZ3MgPSBcIiVzXCIsIGN1ZSB0ZXh0ID0gXCIlc1wiIiwgY3VlRGF0YS5pZCgpLnV0
ZjgoKS5kYXRhKCksIGN1ZURhdGEuc2V0dGluZ3MoKS51dGY4KCkuZGF0YSgpLCBjdWVEYXRhLmN1
ZVRleHQoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAgIExPRyhNZWRpYSwgIiAgICBzb3Vy
Y2VJRCA9IFwiJXNcIiwgb3JpZ2luYWxTdGFydFRpbWUgPSBcIiVzXCIiLCBjdWVEYXRhLnNvdXJj
ZUlEKCkudXRmOCgpLmRhdGEoKSwgY3VlRGF0YS5vcmlnaW5hbFN0YXJ0VGltZSgpLnV0ZjgoKS5k
YXRhKCkpOwotCi0gICAgICAgICAgICBjbGllbnQoKS0+cGFyc2VXZWJWVFRDdWVEYXRhKGN1ZURh
dGEpOwotICAgICAgICB9CisgICAgICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAiY2h1bmsg
IHR5cGUgPSAnIiwgdHlwZSwgIicsIHNpemUgPSAiLCBib3hMZW5ndGgpOwogCiAgICAgICAgIGRv
IHsKLSAgICAgICAgICAgIGlmIChtX2hhdmVSZXBvcnRlZFZUVEhlYWRlcikKLSAgICAgICAgICAg
ICAgICBicmVhazsKLQotICAgICAgICAgICAgaWYgKCFmb3JtYXREZXNjcmlwdGlvbikKKyAgICAg
ICAgICAgIGlmIChtX2hhdmVSZXBvcnRlZFZUVEhlYWRlciB8fCAhZm9ybWF0RGVzY3JpcHRpb24p
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIENGRGljdGlvbmFyeVJlZiBl
eHRlbnNpb25zID0gQ01Gb3JtYXREZXNjcmlwdGlvbkdldEV4dGVuc2lvbnMoZm9ybWF0RGVzY3Jp
cHRpb24pOwpAQCAtNTM0LDExICs1MjQsMTcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGOjpwcm9jZXNzTgogICAgICAgICAgICAgaGVhZGVyLmFwcGVuZChyZWludGVycHJldF9jYXN0
PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihDRkRhdGFHZXRCeXRlUHRyKHdlYnZ0dEhlYWRlckRhdGEp
KSwgbGVuZ3RoKTsKICAgICAgICAgICAgIGhlYWRlci5hcHBlbmQoIlxuXG4iKTsKIAotICAgICAg
ICAgICAgTE9HKE1lZGlhLCAiICAgIHZ0dCBoZWFkZXIgPSBcbiVzIiwgaGVhZGVyLnRvU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwg
IlZUVCBoZWFkZXIgPSAiLCAmaGVhZGVyKTsKICAgICAgICAgICAgIGNsaWVudCgpLT5wYXJzZVdl
YlZUVEZpbGVIZWFkZXIoaGVhZGVyLnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgbV9oYXZlUmVw
b3J0ZWRWVFRIZWFkZXIgPSB0cnVlOwogICAgICAgICB9IHdoaWxlICgwKTsKIAorICAgICAgICBp
ZiAodHlwZSA9PSBJU09XZWJWVFRDdWU6OmJveFR5cGUoKSkgeworICAgICAgICAgICAgSVNPV2Vi
VlRUQ3VlIGN1ZURhdGEgPSBJU09XZWJWVFRDdWUocHJlc2VudGF0aW9uVGltZSwgZHVyYXRpb24s
IGJ1ZmZlci5nZXQoKSk7CisgICAgICAgICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgInNh
bXBsZSBwcmVzZW50YXRpb24gdGltZSA9ICIsIGN1ZURhdGEucHJlc2VudGF0aW9uVGltZSgpLCAi
LCBkdXJhdGlvbiA9ICIsIGN1ZURhdGEuZHVyYXRpb24oKSwgIiwgaWQgPSAnIiwgY3VlRGF0YS5p
ZCgpLCAiJywgc2V0dGluZ3MgPSAiLCBjdWVEYXRhLnNldHRpbmdzKCksICIsIGN1ZSB0ZXh0ID0g
IiwgY3VlRGF0YS5jdWVUZXh0KCksICIsIHNvdXJjZUlEID0gIiwgY3VlRGF0YS5zb3VyY2VJRCgp
LCAiLCBvcmlnaW5hbFN0YXJ0VGltZSA9ICIsIGN1ZURhdGEub3JpZ2luYWxTdGFydFRpbWUoKSk7
CisgICAgICAgICAgICBjbGllbnQoKS0+cGFyc2VXZWJWVFRDdWVEYXRhKGN1ZURhdGEpOworICAg
ICAgICB9CisKICAgICAgICAgbV9zYW1wbGVJbnB1dEJ1ZmZlci5yZW1vdmUoMCwgYm94TGVuZ3Ro
KTsKICAgICB9CiB9CkBAIC01NTUsNyArNTUxLDcgQEAgYm9vbCBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGOjpyZWFkTmF0aQogICAgIENNU2FtcGxlVGltaW5nSW5mbyB0aW1pbmdJbmZvOwogICAg
IE9TU3RhdHVzIHN0YXR1cyA9IENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlVGltaW5nSW5mbyhzYW1w
bGVCdWZmZXIsIGluZGV4LCAmdGltaW5nSW5mbyk7CiAgICAgaWYgKHN0YXR1cykgewotICAgICAg
ICBMT0coTWVkaWEsICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpyZWFkTmF0aXZlU2FtcGxl
QnVmZmVyKCVwKSAtIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlVGltaW5nSW5mbyByZXR1cm5lZCBl
cnJvciAleCBmb3Igc2FtcGxlICVsaSIsIHRoaXMsIHN0YXRpY19jYXN0PGludD4oc3RhdHVzKSwg
aW5kZXgpOworICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIkNNU2FtcGxlQnVmZmVy
R2V0U2FtcGxlVGltaW5nSW5mbyByZXR1cm5lZCBlcnJvciAiLCBzdGF0dXMsICInIGZvciBzYW1w
bGUgIiwgaW5kZXgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC01NjQsNyAr
NTYwLDcgQEAgYm9vbCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpyZWFkTmF0aQogICAgIENN
QmxvY2tCdWZmZXJSZWYgYmxvY2tCdWZmZXIgPSBDTVNhbXBsZUJ1ZmZlckdldERhdGFCdWZmZXIo
c2FtcGxlQnVmZmVyKTsKICAgICBzaXplX3QgYnVmZmVyTGVuZ3RoID0gQ01CbG9ja0J1ZmZlckdl
dERhdGFMZW5ndGgoYmxvY2tCdWZmZXIpOwogICAgIGlmIChidWZmZXJMZW5ndGggPCBJU09Cb3g6
OmJveEhlYWRlclNpemUoKSkgewotICAgICAgICBMT0coTWVkaWEsICJJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGOjpyZWFkTmF0aXZlU2FtcGxlQnVmZmVyKCVwKSAtIEVSUk9SOiBDTVNhbXBsZUJ1
ZmZlciBzaXplIGxlbmd0aCB1bmV4cGVjdGVkbHkgc21hbGwgKCV6dSkhISIsIHRoaXMsIGJ1ZmZl
ckxlbmd0aCk7CisgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiQ01TYW1wbGVCdWZm
ZXIgc2l6ZSBsZW5ndGggdW5leHBlY3RlZGx5IHNtYWxsOiAiLCBidWZmZXJMZW5ndGgpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDExIEBAIHByb3RlY3RlZDoKICAg
ICB2b2lkIHByb2Nlc3NOYXRpdmVTYW1wbGVzKENGQXJyYXlSZWYsIGNvbnN0IE1lZGlhVGltZSYp
OwogICAgIHZvaWQgcmVtb3ZlQ29tcGxldGVkQ3VlcygpOwogCitwcml2YXRlOgorI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGIjsgfQorI2VuZGlmCisKICAg
ICBNZWRpYVRpbWUgbV9jdXJyZW50Q3VlU3RhcnRUaW1lOwogICAgIE1lZGlhVGltZSBtX2N1cnJl
bnRDdWVFbmRUaW1lOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHJldmlzaW9uIDIy
MjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTMzMzksNiArMzMzOSw3IEBAIC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQ
YXRoIG8KIAogICAgIGJvb2wgd2lsbENoYW5nZSA9IFtbY2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5
VmFsdWVDaGFuZ2VOb3RpZmljYXRpb25Jc1ByaW9yS2V5XSBib29sVmFsdWVdOwogICAgIGJvb2wg
c2hvdWxkTG9nVmFsdWUgPSB0cnVlOworICAgIGJvb2wgc2hvdWxkTG9nID0gdHJ1ZTsKICAgICBX
VEY6OkZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uOwogCiAgICAgaWYgKGNvbnRleHQgPT0gTWVk
aWFQbGF5ZXJBVkZvdW5kYXRpb25PYnNlcnZhdGlvbkNvbnRleHRBVlBsYXllckxheWVyKSB7CkBA
IC0zMzc1LDEwICszMzc2LDEwIEBAIC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQ
YXRoIG8KICAgICAgICAgICAgIHNob3VsZExvZ1ZhbHVlID0gZmFsc2U7CiAgICAgICAgIH0gZWxz
ZSBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAibG9hZGVkVGltZVJhbmdlcyJdKSB7CiAg
ICAgICAgICAgICBmdW5jdGlvbiA9IHN0ZDo6YmluZCgmTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6bG9hZGVkVGltZVJhbmdlc0RpZENoYW5nZSwgbV9jYWxsYmFjaywgUmV0YWlu
UHRyPE5TQXJyYXk+KG5ld1ZhbHVlKSk7Ci0gICAgICAgICAgICBzaG91bGRMb2dWYWx1ZSA9IGZh
bHNlOworICAgICAgICAgICAgc2hvdWxkTG9nID0gZmFsc2U7CiAgICAgICAgIH0gZWxzZSBpZiAo
W2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAic2Vla2FibGVUaW1lUmFuZ2VzIl0pIHsKICAgICAg
ICAgICAgIGZ1bmN0aW9uID0gc3RkOjpiaW5kKCZNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpzZWVrYWJsZVRpbWVSYW5nZXNEaWRDaGFuZ2UsIG1fY2FsbGJhY2ssIFJldGFpblB0
cjxOU0FycmF5PihuZXdWYWx1ZSkpOwotICAgICAgICAgICAgc2hvdWxkTG9nVmFsdWUgPSBmYWxz
ZTsKKyAgICAgICAgICAgIHNob3VsZExvZyA9IGZhbHNlOwogICAgICAgICB9IGVsc2UgaWYgKFtr
ZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInRyYWNrcyJdKSB7CiAgICAgICAgICAgICBmdW5jdGlv
biA9IHN0ZDo6YmluZCgmTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dHJhY2tz
RGlkQ2hhbmdlLCBtX2NhbGxiYWNrLCBSZXRhaW5QdHI8TlNBcnJheT4obmV3VmFsdWUpKTsKICAg
ICAgICAgICAgIHNob3VsZExvZ1ZhbHVlID0gZmFsc2U7CkBAIC0zNDE2LDcgKzM0MTcsNyBAQCAt
ICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0aCBvCiAgICAgfQogCiAjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECi0gICAgaWYgKG1fY2FsbGJhY2stPmxvZ2dlcigpLndpbGxMb2co
bV9jYWxsYmFjay0+bG9nQ2hhbm5lbCgpLCBXVEZMb2dMZXZlbERlYnVnKSkgeworICAgIGlmIChz
aG91bGRMb2cgJiYgbV9jYWxsYmFjay0+bG9nZ2VyKCkud2lsbExvZyhtX2NhbGxiYWNrLT5sb2dD
aGFubmVsKCksIFdURkxvZ0xldmVsRGVidWcpKSB7CiAKICAgICAgICAgaWYgKHdpbGxDaGFuZ2Up
CiAgICAgICAgICAgICBtX2NhbGxiYWNrLT5sb2dnZXIoKS5kZWJ1ZyhtX2NhbGxiYWNrLT5sb2dD
aGFubmVsKCksIFBBTDo6TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcigiTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uIiwgIm9ic2VydmVWYWx1ZUZvcktleVBhdGgiLCBtX2NhbGxiYWNrLT5s
b2dJZGVudGlmaWVyKCkpLCAid2lsbCBjaGFuZ2UgJyIsIFtrZXlQYXRoIFVURjhTdHJpbmddLCAi
JyIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJl
YW1Db2NvYS5jcHAJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgi
CiAjaW5jbHVkZSAiQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorI2luY2x1ZGUgPHBhbC9Mb2dnZXIuaD4KIAogI2luY2x1ZGUgIkNvcmVNZWRpYVNvZnRM
aW5rLmgiCiAKQEAgLTExNCwxMyArMTE1LDEzIEBAIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2UgQXVk
aW9UcmFja1ByaXZhdGUKICAgICBBdWRpb0NvbXBvbmVudCBpb0NvbXBvbmVudCA9IEF1ZGlvQ29t
cG9uZW50RmluZE5leHQobnVsbHB0ciwgJmlvVW5pdERlc2NyaXB0aW9uKTsKICAgICBBU1NFUlQo
aW9Db21wb25lbnQpOwogICAgIGlmICghaW9Db21wb25lbnQpIHsKLSAgICAgICAgTE9HKE1lZGlh
LCAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpjcmVhdGVBdWRpb1VuaXQoJXAp
IHVuYWJsZSB0byBmaW5kIHJlbW90ZSBJTyB1bml0IGNvbXBvbmVudCIsIHRoaXMpOworICAgICAg
ICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgInVuYWJsZSB0byBmaW5kIHJlbW90ZSBJTyB1bml0
IGNvbXBvbmVudCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBPU1N0
YXR1cyBlcnIgPSBBdWRpb0NvbXBvbmVudEluc3RhbmNlTmV3KGlvQ29tcG9uZW50LCAmcmVtb3Rl
SU9Vbml0KTsKICAgICBpZiAoZXJyKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6Y3JlYXRlQXVkaW9Vbml0KCVwKSB1bmFibGUgdG8gb3Bl
biB2cGlvIHVuaXQsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVy
cik7CisgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAidW5hYmxlIHRvIG9wZW4gdnBp
byB1bml0LCBlcnJvciA9ICIsIGVyciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZlcnIsICIpIik7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMTI4LDcgKzEyOSw3IEBAIEF1ZGlv
Q29tcG9uZW50SW5zdGFuY2UgQXVkaW9UcmFja1ByaXZhdGUKICAgICBVSW50MzIgcGFyYW0gPSAx
OwogICAgIGVyciA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KHJlbW90ZUlPVW5pdCwga0F1ZGlvT3V0
cHV0VW5pdFByb3BlcnR5X0VuYWJsZUlPLCBrQXVkaW9Vbml0U2NvcGVfT3V0cHV0LCAwLCAmcGFy
YW0sIHNpemVvZihwYXJhbSkpOwogICAgIGlmIChlcnIpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAi
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpjcmVhdGVBdWRpb1VuaXQoJXApIHVu
YWJsZSB0byBlbmFibGUgdnBpbyB1bml0IG91dHB1dCwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywg
KGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIs
ICJ1bmFibGUgdG8gZW5hYmxlIHZwaW8gdW5pdCBvdXRwdXQsIGVycm9yID0gIiwgZXJyLCAiICgi
LCAoY29uc3QgY2hhciopJmVyciwgIikiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogI2VuZGlmCkBAIC0xMzYsMTQgKzEzNywxNCBAQCBBdWRpb0NvbXBvbmVudEluc3RhbmNlIEF1
ZGlvVHJhY2tQcml2YXRlCiAgICAgQVVSZW5kZXJDYWxsYmFja1N0cnVjdCBjYWxsYmFjayA9IHsg
aW5wdXRQcm9jLCB0aGlzIH07CiAgICAgZXJyID0gQXVkaW9Vbml0U2V0UHJvcGVydHkocmVtb3Rl
SU9Vbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU2V0UmVuZGVyQ2FsbGJhY2ssIGtBdWRpb1VuaXRT
Y29wZV9HbG9iYWwsIDAsICZjYWxsYmFjaywgc2l6ZW9mKGNhbGxiYWNrKSk7CiAgICAgaWYgKGVy
cikgewotICAgICAgICBMT0coTWVkaWEsICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29j
b2E6OmNyZWF0ZUF1ZGlvVW5pdCglcCkgdW5hYmxlIHRvIHNldCB2cGlvIHVuaXQgc3BlYWtlciBw
cm9jLCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOworICAg
ICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgInVuYWJsZSB0byBzZXQgdnBpbyB1bml0IHNw
ZWFrZXIgcHJvYywgZXJyb3IgPSAiLCBlcnIsICIgKCIsIChjb25zdCBjaGFyKikmZXJyLCAiKSIp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBVSW50MzIgc2l6ZSA9IHNp
emVvZihvdXRwdXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpKTsKICAgICBlcnIgID0g
QXVkaW9Vbml0R2V0UHJvcGVydHkocmVtb3RlSU9Vbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU3Ry
ZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICZvdXRwdXREZXNjcmlwdGlvbi5z
dHJlYW1EZXNjcmlwdGlvbigpLCAmc2l6ZSk7CiAgICAgaWYgKGVycikgewotICAgICAgICBMT0co
TWVkaWEsICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OmNyZWF0ZUF1ZGlvVW5p
dHMoJXApIHVuYWJsZSB0byBnZXQgaW5wdXQgc3RyZWFtIGZvcm1hdCwgZXJyb3IgJWQgKCUuNHMp
IiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgRVJST1JfTE9HKExPR0lE
RU5USUZJRVIsICJ1bmFibGUgdG8gZ2V0IGlucHV0IHN0cmVhbSBmb3JtYXQsIGVycm9yID0gIiwg
ZXJyLCAiICgiLCAoY29uc3QgY2hhciopJmVyciwgIikiKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCkBAIC0xNTEsMTMgKzE1MiwxMyBAQCBBdWRpb0NvbXBvbmVudEluc3RhbmNl
IEF1ZGlvVHJhY2tQcml2YXRlCiAKICAgICBlcnIgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShyZW1v
dGVJT1VuaXQsIGtBdWRpb1VuaXRQcm9wZXJ0eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29w
ZV9JbnB1dCwgMCwgJm91dHB1dERlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0aW9uKCksIHNpemVv
ZihvdXRwdXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpKSk7CiAgICAgaWYgKGVycikg
ewotICAgICAgICBMT0coTWVkaWEsICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6
OmNyZWF0ZUF1ZGlvVW5pdHMoJXApIHVuYWJsZSB0byBzZXQgaW5wdXQgc3RyZWFtIGZvcm1hdCwg
ZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAg
RVJST1JfTE9HKExPR0lERU5USUZJRVIsICJ1bmFibGUgdG8gc2V0IGlucHV0IHN0cmVhbSBmb3Jt
YXQsIGVycm9yID0gIiwgZXJyLCAiICgiLCAoY29uc3QgY2hhciopJmVyciwgIikiKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgZXJyID0gQXVkaW9Vbml0SW5pdGlhbGl6
ZShyZW1vdGVJT1VuaXQpOwogICAgIGlmIChlcnIpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpjcmVhdGVBdWRpb1VuaXRzKCVwKSBBdWRp
b1VuaXRJbml0aWFsaXplKCkgZmFpbGVkLCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVy
ciwgKGNoYXIqKSZlcnIpOworICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIkF1ZGlv
VW5pdEluaXRpYWxpemUoKSBmYWlsZWQsIGVycm9yID0gIiwgZXJyLCAiICgiLCAoY29uc3QgY2hh
ciopJmVyciwgIikiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbUNvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oCShyZXZp
c2lvbiAyMjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTcx
LDYgKzcxLDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCB6ZXJvQnVmZmVyTGlzdChBdWRpb0J1ZmZl
ckxpc3QmLCBzaXplX3QpOwogICAgIHZvaWQgcGxheUludGVybmFsKCk7CiAKKyNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hIjsgfQorI2VuZGlm
CisKKwogICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2UgbV9yZW1vdGVJT1VuaXQgeyBudWxscHRy
IH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4gbV9pbnB1
dERlc2NyaXB0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24+IG1fb3V0cHV0RGVzY3JpcHRpb247Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320860</attachid>
            <date>2017-09-14 18:44:42 -0700</date>
            <delta_ts>2017-09-14 18:54:22 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>text_track_logging_patch_5.txt</filename>
            <type>text/plain</type>
            <size>76805</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMyBAQAorMjAxNy0wOS0xNCAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBTd2l0Y2ggdGV4dCB0
cmFja3MgdG8gcmVsZWFzZSBsb2dnaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzY4MDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0Mzk3NjA1
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ug
YWxsIHRyYWNrIG9iamVjdHMgdXNlIHRoZSBzYW1lIGxvZ2dlciBhbmQgbG9nIGlkZW50aWZpZXIg
YXMgdGhlIG1lZGlhIGVsZW1lbnQgdGhleQorICAgICAgICAiYmVsb25nIiB0by4gQ29udmVydCBh
bGwgdHJhY2sgbG9nZ2luZyBmcm9tIGRlYnVnLW9ubHkgdG8gcmVsZWFzZSBsb2dnaW5nLgorCisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRp
YUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6QXVkaW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrOjpzZXRQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OnNl
dE1lZGlhRWxlbWVudCk6CisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrLmg6CisgICAg
ICAgICogaHRtbC90cmFjay9EYXRhQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFDdWU6
OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBodG1sL3RyYWNrL0RhdGFDdWUuaDoKKyAgICAg
ICAgKFBBTDo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6RGF0YUN1ZT46OnRvU3RyaW5nKToKKyAgICAg
ICAgKiBodG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5iYW5kRGF0YVRleHRUcmFjazo6YWRkRGF0YUN1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bmJhbmREYXRhVGV4dFRyYWNrOjp1cGRhdGVEYXRhQ3VlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
YmFuZERhdGFUZXh0VHJhY2s6OnJlbW92ZURhdGFDdWUpOgorICAgICAgICAqIGh0bWwvdHJhY2sv
SW5iYW5kRGF0YVRleHRUcmFjay5oOgorICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kR2VuZXJp
Y1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmljVGV4dFRyYWNr
OjphZGRHZW5lcmljQ3VlKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNUZXh0VHJh
Y2s6OnJlbW92ZUdlbmVyaWNDdWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY1Rl
eHRUcmFjazo6bmV3Q3Vlc1BhcnNlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmlj
VGV4dFRyYWNrOjpmaWxlRmFpbGVkVG9QYXJzZSk6CisgICAgICAgICogaHRtbC90cmFjay9JbmJh
bmRHZW5lcmljVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRUZXh0VHJh
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrOjpJbmJhbmRUZXh0VHJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrOjpzZXRNZWRpYUVsZW1lbnQp
OgorICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRt
bC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5i
YW5kV2ViVlRUVGV4dFRyYWNrOjpuZXdDdWVzUGFyc2VkKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
YmFuZFdlYlZUVFRleHRUcmFjazo6ZmlsZUZhaWxlZFRvUGFyc2UpOgorICAgICAgICAqIGh0bWwv
dHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9Mb2Fk
YWJsZVRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6
bmV3Q3Vlc0F2YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6
Y3VlTG9hZGluZ0NvbXBsZXRlZCk6CisgICAgICAgICogaHRtbC90cmFjay9Mb2FkYWJsZVRleHRU
cmFjay5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRUcmFjazo6YWRkQ3VlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6
cmVtb3ZlQ3VlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6c2V0TGFuZ3VhZ2UpOgor
ICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9U
ZXh0VHJhY2tDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjp0b1N0cmlu
ZyBjb25zdCk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaDoKKyAgICAgICAg
KFBBTDo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6VGV4dFRyYWNrQ3VlPjo6dG9TdHJpbmcpOgorICAg
ICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0VHJhY2tDdWVHZW5lcmljOjpzZXRGb250U2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0VHJhY2tDdWVHZW5lcmljOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgICogaHRtbC90
cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmg6CisgICAgICAgIChQQUw6OkxvZ0FyZ3VtZW50PFdl
YkNvcmU6OlRleHRUcmFja0N1ZUdlbmVyaWM+Ojp0b1N0cmluZyk6CisgICAgICAgICogaHRtbC90
cmFjay9UcmFja0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bmV4dExvZ0lkZW50aWZpZXIp
OgorICAgICAgICAoV2ViQ29yZTo6bnVsbExvZ2dlcik6CisgICAgICAgIChXZWJDb3JlOjpUcmFj
a0Jhc2U6OlRyYWNrQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OnNldE1lZGlh
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OmxvZ0NoYW5uZWwgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tCYXNlOjp+VHJhY2tCYXNlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBodG1sL3RyYWNrL1RyYWNrQmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tC
YXNlOjpzZXRNZWRpYUVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvdHJhY2svVlRU
Q3VlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZUVEN1ZTo6c2V0Rm9udFNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6VlRUQ3VlOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgICogaHRtbC90cmFj
ay9WVFRDdWUuaDoKKyAgICAgICAgKFBBTDo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6VlRUQ3VlPjo6
dG9TdHJpbmcpOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFjay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb1RyYWNrOjpWaWRlb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlZp
ZGVvVHJhY2s6OnNldFByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6c2V0
TWVkaWFFbGVtZW50KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGU6OnNldENsaWVudCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6R2VuZXJpY0N1ZURhdGE6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFBBTDo6TG9n
QXJndW1lbnQ8V2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE+Ojp0b1N0cmluZyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6VHJhY2tQcml2YXRlQmFzZTo6c2V0TG9nZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OlRyYWNrUHJpdmF0ZUJhc2U6OmxvZ0NoYW5uZWwgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1RyYWNrUHJpdmF0ZUJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9WaWRlb1RyYWNrUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9BVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLm1tOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZG
Ojp1cGRhdGVQZW5kaW5nQ3VlRW5kVGltZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kTWV0
YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjpmbHVzaFBhcnRpYWxDdWVzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2
YXRlQVZGLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0F0dHJpYnV0ZWRTdHJpbmdzKToKKyAgICAgICAgKFdlYkNv
cmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnJlbW92ZUNvbXBsZXRlZEN1ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cmVzZXRDdWVWYWx1ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc05h
dGl2ZVNhbXBsZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Rjo6cmVhZE5hdGl2ZVNhbXBsZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMu
bW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKC1bV2ViQ29yZUFWRk1v
dmllT2JzZXJ2ZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4
dDpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbUNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2
YXRlTWVkaWFTdHJlYW1Db2NvYTo6Y3JlYXRlQXVkaW9Vbml0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmg6CisK
IDIwMTctMDktMTMgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgSW50cm9kdWNlIFN0b3JhZ2UgQWNjZXNzIEFQSSAoZG9jdW1lbnQgcGFydHMpIGFzIGFuIGV4
cGVyaW1lbnRhbCBmZWF0dXJlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjIy
MDA3KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTM0MjUsNiArMzQyNSw3IEBAIGlmIChFTkFCTEVfVklERU9fVFJBQ0spCiAgICAgICAgIGxvYWRl
ci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCiAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
VGV4dFRyYWNrUmVwcmVzZW50YXRpb24uY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Ry
YWNrUHJpdmF0ZUJhc2UuY3BwCiAgICAgKQogZW5kaWYgKCkKIApJbmRleDogU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMDktMTQgIEVyaWMgQ2FybHNvbiAg
PGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3dpdGNoIHRleHQgdHJhY2tzIHRv
IHJlbGVhc2UgbG9nZ2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc2ODA5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDM5NzYwNT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9Mb2dnZXIu
aDoKKyAgICAgICAgKFBBTDo6TG9nQXJndW1lbnQ6OnRvU3RyaW5nKToKKyAgICAgICAgKFBBTDo6
TG9nZ2VyOjp3aWxsTG9nIGNvbnN0KToKKwogMjAxNy0wOS0xMyAgQW5keSBFc3RlcyAgPGFlc3Rl
c0BhcHBsZS5jb20+CiAKICAgICAgICAgW0NGXSBVcHN0cmVhbSBDRk5ldHdvcmstcmVsYXRlZCBX
ZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL0xvZ2dlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvTG9nZ2Vy
LmgJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvTG9nZ2VyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQxLDEwICs0MSwxMiBAQCBzdHJ1Y3QgTG9nQXJndW1lbnQgewog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8c3RkOjppc19zYW1lPFUsIGludD46OnZhbHVlLCBTdHJpbmc+Ojp0eXBlIHRvU3RyaW5nKGlu
dCBhcmd1bWVudCkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIoYXJndW1lbnQpOyB9CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6
OmlzX3NhbWU8VSwgdW5zaWduZWQ+Ojp2YWx1ZSwgU3RyaW5nPjo6dHlwZSB0b1N0cmluZyh1bnNp
Z25lZCBhcmd1bWVudCkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIoYXJndW1lbnQpOyB9CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxz
dGQ6OmlzX3NhbWU8VSwgdW5zaWduZWQgbG9uZz46OnZhbHVlLCBTdHJpbmc+Ojp0eXBlIHRvU3Ry
aW5nKHVuc2lnbmVkIGxvbmcgYXJndW1lbnQpIHsgcmV0dXJuIFN0cmluZzo6bnVtYmVyKGFyZ3Vt
ZW50KTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19zYW1lPFUsIGxvbmc+Ojp2YWx1ZSwgU3RyaW5nPjo6dHlwZSB0
b1N0cmluZyhsb25nIGFyZ3VtZW50KSB7IHJldHVybiBTdHJpbmc6Om51bWJlcihhcmd1bWVudCk7
IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPHN0ZDo6aXNfc2FtZTxVLCBmbG9hdD46OnZhbHVlLCBTdHJpbmc+Ojp0eXBlIHRvU3Ry
aW5nKGZsb2F0IGFyZ3VtZW50KSB7IHJldHVybiBTdHJpbmc6Om51bWJlcihhcmd1bWVudCk7IH0K
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPHN0ZDo6aXNfc2FtZTxVLCBkb3VibGU+Ojp2YWx1ZSwgU3RyaW5nPjo6dHlwZSB0b1N0cmlu
Zyhkb3VibGUgYXJndW1lbnQpIHsgcmV0dXJuIFN0cmluZzo6bnVtYmVyKGFyZ3VtZW50KTsgfQog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8c3RkOjppc19zYW1lPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxVPjo6dHlwZSwg
QXRvbWljU3RyaW5nPjo6dmFsdWUsIFN0cmluZz46OnR5cGUgdG9TdHJpbmcoQXRvbWljU3RyaW5n
IGFyZ3VtZW50KSB7IHJldHVybiBhcmd1bWVudC5zdHJpbmcoKTsgfQogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1l
PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxVPjo6dHlwZSwgU3RyaW5nPjo6dmFsdWUs
IFN0cmluZz46OnR5cGUgdG9TdHJpbmcoU3RyaW5nIGFyZ3VtZW50KSB7IHJldHVybiBhcmd1bWVu
dDsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8c3RkOjppc19zYW1lPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxVPjo6
dHlwZSwgU3RyaW5nQnVpbGRlcio+Ojp2YWx1ZSwgU3RyaW5nPjo6dHlwZSB0b1N0cmluZyhTdHJp
bmdCdWlsZGVyKiBhcmd1bWVudCkgeyByZXR1cm4gYXJndW1lbnQtPnRvU3RyaW5nKCk7IH0KICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PHN0ZDo6aXNfc2FtZTxVLCBjb25zdCBjaGFyKj46OnZhbHVlLCBTdHJpbmc+Ojp0eXBlIHRvU3Ry
aW5nKGNvbnN0IGNoYXIqIGFyZ3VtZW50KSB7IHJldHVybiBTdHJpbmcoYXJndW1lbnQpOyB9CiAg
ICAgdGVtcGxhdGU8c2l6ZV90IGxlbmd0aD4gc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBj
aGFyICgmYXJndW1lbnQpW2xlbmd0aF0pIHsgcmV0dXJuIFN0cmluZyhhcmd1bWVudCk7IH0KIH07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAyMjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw2ICsxNDYsNyBAQAog
CQkwNzNCODc2NzFFNDM4NUFDMDA3MUMwRUMgLyogQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNCODc2MzFFNDM4
NTlEMDA3MUMwRUMgLyogQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmggKi87IH07CiAJCTA3M0I4NzY4
MUU0Mzg1QUMwMDcxQzBFQyAvKiBBdWRpb1NhbXBsZURhdGFTb3VyY2UubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNCODc2NDFFNDM4NTlEMDA3MUMw
RUMgLyogQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tICovOyB9OwogCQkwNzNCODc2OTFFNDM4NUFD
MDA3MUMwRUMgLyogQXVkaW9TYW1wbGVEYXRhU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNCODc2NTFFNDM4NTlEMDA3MUMwRUMgLyogQXVk
aW9TYW1wbGVEYXRhU291cmNlLmggKi87IH07CisJCTA3M0JEQzA1MUY2ODQzNjEwMEVFMzRFRCAv
KiBUcmFja1ByaXZhdGVCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3NkUxMUJFMUY2ODNFMEQwMDE3NzM5NSAvKiBUcmFja1ByaXZhdGVCYXNl
LmNwcCAqLzsgfTsKIAkJMDczQkUzNDAxN0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yVXNl
ck1lZGlhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3M0JFMzNFMTdEMTdFMDEwMDJCRDQzMSAvKiBKU05hdmlnYXRvclVzZXJNZWRpYS5jcHAgKi87
IH07CiAJCTA3M0JFMzQxMTdEMTdFMDEwMDJCRDQzMSAvKiBKU05hdmlnYXRvclVzZXJNZWRpYS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczQkUzM0Yx
N0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDczQkUzNEUxN0QxODBCMjAwMkJE
NDMxIC8qIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyMjFCQUIxN0NGMEFENDAwODQ4RTUx
IC8qIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3BwICovOyB9OwpAQCAtNzcxOSw2
ICs3NzIwLDcgQEAKIAkJMDc2MzhBOTgxODg0NDg3MjAwRTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1h
bmFnZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRp
YVNlc3Npb25NYW5hZ2VySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzY5
NzA4NDE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0VHJhY2tMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDc2OTcwODUxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFRyYWNrTGlzdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzZFMTFCRTFGNjgzRTBEMDAxNzczOTUgLyogVHJh
Y2tQcml2YXRlQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBU
cmFja1ByaXZhdGVCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RUMx
MzIxRTQ0RjJDQjAwRTVEODEzIC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU3RyZWFtQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZG
MEQwOTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NkYwRDBB
MTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzkxOCw2ICsyMzkyMCw3IEBA
CiAJCQkJQ0QxRTczNDYxNjdCQzc4RTAwOUE4ODVEIC8qIFRleHRUcmFja1JlcHJlc2VudGF0aW9u
LmNwcCAqLywKIAkJCQlDREQxRTUyNTE2N0JBNTY0MDBDRTgyMEIgLyogVGV4dFRyYWNrUmVwcmVz
ZW50YXRpb24uaCAqLywKIAkJCQkxQUY4OUE0MTE1MThGREVBMDBFNTQ3QjUgLyogVGlsZWRCYWNr
aW5nLmggKi8sCisJCQkJMDc2RTExQkUxRjY4M0UwRDAwMTc3Mzk1IC8qIFRyYWNrUHJpdmF0ZUJh
c2UuY3BwICovLAogCQkJCUJFOTEzRDdGMTgxRUY4RTUwMERDQjA5RSAvKiBUcmFja1ByaXZhdGVC
YXNlLmggKi8sCiAJCQkJRTRBRkNGQTQwREFGMjlBMzAwRjVGNTVDIC8qIFVuaXRCZXppZXIuaCAq
LywKIAkJCQlCRUYyOUVFQTE3MTVERDA5MDBDNEI0QzkgLyogVmlkZW9UcmFja1ByaXZhdGUuaCAq
LywKQEAgLTMyMTA4LDYgKzMyMTExLDcgQEAKIAkJCQlFMTJERTcxNzFFNEI3NDlDMDBGOUFDQ0Yg
LyogR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxNEMy
NUQ3MUU5RUZFREUwMEJFRTE0MSAvKiBIMjY0VmlkZW9Ub29sQm94RW5jb2Rlci5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUY1NUIzREJGMTI1MUYxMkQwMDNFRjI2OSAvKiBIaWRkZW5JbnB1dFR5cGUu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDczQkRDMDUxRjY4NDM2MTAwRUUzNEVEIC8qIFRyYWNr
UHJpdmF0ZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE1QkUxOUIxRDU0RjZDMTAwREQ3
QzY4IC8qIEhJREdhbWVwYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE1QkUxOUQxRDU0RjZD
MTAwREQ3QzY4IC8qIEhJREdhbWVwYWRQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
Qzk0RDE1MzBDMjc1QzhCMDA2QkM2MTcgLyogSGlzdG9yeS5jcHAgaW4gU291cmNlcyAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMjIy
MDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTY2MCw4ICsxNjYwLDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVBY3RpdmVUZXh0VAogICAgIGlmIChpZ25vcmVUcmFja0Rpc3BsYXlVcGRhdGVSZXF1ZXN0cygp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBERUJVR19MT0coTE9HSURFTlRJRklFUik7Ci0KICAg
ICAvLyAxIC0gTGV0IGN1cnJlbnQgY3VlcyBiZSBhIGxpc3Qgb2YgY3VlcywgaW5pdGlhbGl6ZWQg
dG8gY29udGFpbiBhbGwgdGhlCiAgICAgLy8gY3VlcyBvZiBhbGwgdGhlIGhpZGRlbiwgc2hvd2lu
Zywgb3Igc2hvd2luZyBieSBkZWZhdWx0IHRleHQgdHJhY2tzIG9mIHRoZQogICAgIC8vIG1lZGlh
IGVsZW1lbnQgKG5vdCB0aGUgZGlzYWJsZWQgb25lcykgd2hvc2Ugc3RhcnQgdGltZXMgYXJlIGxl
c3MgdGhhbiBvcgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHJl
dmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiTWVkaWFDYW5TdGFy
dExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmgiCiAjaW5j
bHVkZSAiTWVkaWFFbGVtZW50U2Vzc2lvbi5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAj
aW5jbHVkZSAiTWVkaWFQcm9kdWNlci5oIgogI2luY2x1ZGUgIlZpc2liaWxpdHlDaGFuZ2VDbGll
bnQuaCIKICNpbmNsdWRlIDxwYWwvTG9nZ2VySGVscGVyLmg+CkBAIC04Nyw3ICs4OCw2IEBAIGNs
YXNzIE1lZGlhQ29udHJvbHNIb3N0OwogY2xhc3MgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2Rl
OwogY2xhc3MgTWVkaWFFcnJvcjsKIGNsYXNzIE1lZGlhS2V5czsKLWNsYXNzIE1lZGlhUGxheWVy
OwogY2xhc3MgTWVkaWFSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIE1lZGlhU2Vzc2lvbjsKIGNsYXNz
IE1lZGlhU291cmNlOwpAQCAtMTQxLDcgKzE0MSw3IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQK
ICAgICAsIHByaXZhdGUgQ0RNQ2xpZW50CiAjZW5kaWYKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKLSAgICAsIHByaXZhdGUgUEFMOjpMb2dnZXJIZWxwZXIKKyAgICAsIHB1YmxpYyBQQUw6Okxv
Z2dlckhlbHBlcgogI2VuZGlmCiB7CiBwdWJsaWM6CkBAIC01MzgsNiArNTM4LDExIEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgc3VwcG9ydHNTZWVraW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBQQUw6OkxvZ2dlciYgbG9nZ2VyKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gKm1fbG9nZ2VyLmdldCgpOyB9CisgICAgY29uc3Qgdm9pZCogbG9n
SWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dm9pZCo+KG1fbG9nSWRlbnRpZmllcik7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgSFRN
TE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBib29sIGNyZWF0
ZWRCeVBhcnNlcik7CiAgICAgdmlydHVhbCB+SFRNTE1lZGlhRWxlbWVudCgpOwpAQCAtODk1LDkg
KzkwMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZWVrVG9QbGF5YmFja1Bvc2l0aW9uRW5kZWRU
aW1lckZpcmVkKCk7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBjb25zdCBQQUw6
OkxvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gKm1fbG9nZ2VyLmdldCgpOyB9
CiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkhU
TUxNZWRpYUVsZW1lbnQiOyB9Ci0gICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KG1fbG9nSWRlbnRp
Zmllcik7IH0KICAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7CiAK
ICAgICBjb25zdCB2b2lkKiBtZWRpYVBsYXllckxvZ0lkZW50aWZpZXIoKSBmaW5hbCB7IHJldHVy
biBsb2dJZGVudGlmaWVyKCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVk
aW9UcmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRp
b1RyYWNrLmNwcAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9BdWRpb1RyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsMTEgKzc3LDE0IEBAIGNvbnN0
IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6Y29tbWVudGEKIAogQXVkaW9UcmFjazo6QXVkaW9U
cmFjayhBdWRpb1RyYWNrQ2xpZW50JiBjbGllbnQsIEF1ZGlvVHJhY2tQcml2YXRlJiB0cmFja1By
aXZhdGUpCiAgICAgOiBNZWRpYVRyYWNrQmFzZShNZWRpYVRyYWNrQmFzZTo6QXVkaW9UcmFjaywg
dHJhY2tQcml2YXRlLmlkKCksIHRyYWNrUHJpdmF0ZS5sYWJlbCgpLCB0cmFja1ByaXZhdGUubGFu
Z3VhZ2UoKSkKLSAgICAsIG1fZW5hYmxlZCh0cmFja1ByaXZhdGUuZW5hYmxlZCgpKQogICAgICwg
bV9jbGllbnQoJmNsaWVudCkKICAgICAsIG1fcHJpdmF0ZSh0cmFja1ByaXZhdGUpCisgICAgLCBt
X2VuYWJsZWQodHJhY2tQcml2YXRlLmVuYWJsZWQoKSkKIHsKICAgICBtX3ByaXZhdGUtPnNldENs
aWVudCh0aGlzKTsKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBtX3ByaXZhdGUtPnNl
dExvZ2dlcihsb2dnZXIoKSwgbG9nSWRlbnRpZmllcigpKTsKKyNlbmRpZgogICAgIHVwZGF0ZUtp
bmRGcm9tUHJpdmF0ZSgpOwogfQogCkBAIC05OSw2ICsxMDIsOSBAQCB2b2lkIEF1ZGlvVHJhY2s6
OnNldFByaXZhdGUoQXVkaW9UcmFja1ByCiAgICAgbV9wcml2YXRlID0gdHJhY2tQcml2YXRlOwog
ICAgIG1fcHJpdmF0ZS0+c2V0RW5hYmxlZChtX2VuYWJsZWQpOwogICAgIG1fcHJpdmF0ZS0+c2V0
Q2xpZW50KHRoaXMpOworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIG1fcHJpdmF0ZS0+
c2V0TG9nZ2VyKGxvZ2dlcigpLCBsb2dJZGVudGlmaWVyKCkpOworI2VuZGlmCiAKICAgICB1cGRh
dGVLaW5kRnJvbVByaXZhdGUoKTsKIH0KQEAgLTE4Nyw2ICsxOTMsMTQgQEAgdm9pZCBBdWRpb1Ry
YWNrOjp1cGRhdGVLaW5kRnJvbVByaXZhdGUoKQogICAgIH0KIH0KIAordm9pZCBBdWRpb1RyYWNr
OjpzZXRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBUcmFj
a0Jhc2U6OnNldE1lZGlhRWxlbWVudChlbGVtZW50KTsKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKKyAgICBtX3ByaXZhdGUtPnNldExvZ2dlcihsb2dnZXIoKSwgbG9nSWRlbnRpZmllcigpKTsK
KyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmgJKHJldmlzaW9uIDIyMjAwNykKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC02
NSw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzaXplX3QgaW5iYW5kVHJhY2tJbmRleCgpIGNvbnN0
OwogCiAgICAgdm9pZCBzZXRQcml2YXRlKEF1ZGlvVHJhY2tQcml2YXRlJik7CisgICAgdm9pZCBz
ZXRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopIG92ZXJyaWRlOwogCiBwcml2YXRlOgog
ICAgIEF1ZGlvVHJhY2soQXVkaW9UcmFja0NsaWVudCYsIEF1ZGlvVHJhY2tQcml2YXRlJik7CkBA
IC04MiwxMCArODMsMTMgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdXBkYXRlS2luZEZyb21Qcml2
YXRlKCk7CiAKLSAgICBib29sIG1fZW5hYmxlZDsKLSAgICBBdWRpb1RyYWNrQ2xpZW50KiBtX2Ns
aWVudDsKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFz
c05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiQXVkaW9UcmFjayI7IH0KKyNlbmRpZgogCisg
ICAgQXVkaW9UcmFja0NsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07CiAgICAgUmVmPEF1ZGlv
VHJhY2tQcml2YXRlPiBtX3ByaXZhdGU7CisgICAgYm9vbCBtX2VuYWJsZWQgeyBmYWxzZSB9Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9EYXRhQ3VlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0RhdGFDdWUuY3BwCShyZXZpc2lvbiAyMjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0RhdGFDdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODgsNiArMTg4LDE4IEBAIEpTVmFs
dWUgRGF0YUN1ZTo6dmFsdWVPck51bGwoKSBjb25zdAogICAgIHJldHVybiBqc051bGwoKTsKIH0K
IAorU3RyaW5nIERhdGFDdWU6OnRvU3RyaW5nKCkgY29uc3QKK3sKKyAgICBTdHJpbmdCdWlsZGVy
IGJ1aWxkZXI7CisKKyAgICBidWlsZGVyLmFwcGVuZChUZXh0VHJhY2tDdWU6OnRvU3RyaW5nKCkp
OworCisgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIHR5cGUgPSAiKTsKKyAgICBidWlsZGVy
LmFwcGVuZChtX3R5cGUpOworCisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svRGF0YUN1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svRGF0YUN1ZS5oCShyZXZpc2lvbiAyMjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0RhdGFDdWUuaAkod29ya2luZyBjb3B5KQpAQCAtODcsNiArODcsOCBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBjdWVDb250ZW50c01hdGNoKGNvbnN0IFRleHRUcmFja0N1ZSYpIGNvbnN0IG92ZXJy
aWRlOwogICAgIGJvb2wgZG9lc0V4dGVuZEN1ZShjb25zdCBUZXh0VHJhY2tDdWUmKSBjb25zdCBv
dmVycmlkZTsKIAorICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IG92ZXJyaWRlOworCiBwcml2
YXRlOgogICAgIERhdGFDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IE1lZGlhVGlt
ZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBBcnJheUJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYpOwogICAgIERhdGFDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IE1lZGlhVGlt
ZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBjb25zdCB2b2lkKiwgdW5zaWduZWQpOwpA
QCAtMTA2LDQgKzEwOCwxOSBAQCBjb25zdCBEYXRhQ3VlKiB0b0RhdGFDdWUoY29uc3QgVGV4dFRy
YWNrCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFBBTCB7CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFR5cGU+CitzdHJ1Y3QgTG9nQXJndW1lbnQ7CisKK3RlbXBsYXRlIDw+Citz
dHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6RGF0YUN1ZT4geworICAgIHN0YXRpYyBTdHJpbmcg
dG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6RGF0YUN1ZSYgY3VlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGN1ZS50b1N0cmluZygpOworICAgIH0KK307CisKK30KKwogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5jcHAJKHJl
dmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRl
eHRUcmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJE
YXRhQ3VlLmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIkluYmFu
ZFRleHRUcmFja1ByaXZhdGUuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNjQsNyArNjMsNyBAQCB2b2lkIEluYmFuZERhdGFUZXh0VHJhY2s6OmFk
ZERhdGFDdWUoY29uCiAKICAgICBhdXRvIGN1ZSA9IERhdGFDdWU6OmNyZWF0ZSgqc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBzdGFydCwgZW5kLCBwbGF0Zm9ybVZhbHVlLmNvcHlSZWYoKSwgdHlw
ZSk7CiAgICAgaWYgKGhhc0N1ZShjdWUucHRyKCksIFRleHRUcmFja0N1ZTo6SWdub3JlRHVyYXRp
b24pKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIkluYmFuZERhdGFUZXh0VHJhY2s6OmFkZERhdGFD
dWUgaWdub3JpbmcgYWxyZWFkeSBhZGRlZCBjdWU6IHN0YXJ0PSVzLCBlbmQ9JXNcbiIsIHRvU3Ry
aW5nKGN1ZS0+c3RhcnRUaW1lKCkpLnV0ZjgoKS5kYXRhKCksIHRvU3RyaW5nKGN1ZS0+ZW5kVGlt
ZSgpKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImln
bm9yaW5nIGFscmVhZHkgYWRkZWQgY3VlOiAiLCBjdWUuZ2V0KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC03Myw2ICs3Miw4IEBAIHZvaWQgSW5iYW5kRGF0YVRleHRUcmFjazo6YWRk
RGF0YUN1ZShjb24KICAgICAgICAgbV9pbmNvbXBsZXRlQ3VlTWFwLmFkZChXVEZNb3ZlKHBsYXRm
b3JtVmFsdWUpLCBjdWUuY29weVJlZigpKTsKICAgICB9CiAKKyAgICBJTkZPX0xPRyhMT0dJREVO
VElGSUVSLCBjdWUuZ2V0KCkpOworCiAgICAgYWRkQ3VlKFdURk1vdmUoY3VlKSk7CiB9CiAKQEAg
LTkwLDcgKzkxLDcgQEAgdm9pZCBJbmJhbmREYXRhVGV4dFRyYWNrOjp1cGRhdGVEYXRhQ3VlKAog
ICAgIGVsc2UKICAgICAgICAgbV9pbmNvbXBsZXRlQ3VlTWFwLnJlbW92ZSgmcGxhdGZvcm1WYWx1
ZSk7CiAKLSAgICBMT0coTWVkaWEsICJJbmJhbmREYXRhVGV4dFRyYWNrOjp1cGRhdGVEYXRhQ3Vl
OiB3YXMgc3RhcnQ9JXMsIGVuZD0lcywgd2lsbCBiZSBzdGFydD0lcywgZW5kPSVzXG4iLCB0b1N0
cmluZyhjdWUtPnN0YXJ0VGltZSgpKS51dGY4KCkuZGF0YSgpLCB0b1N0cmluZyhjdWUtPmVuZFRp
bWUoKSkudXRmOCgpLmRhdGEoKSwgdG9TdHJpbmcoc3RhcnQpLnV0ZjgoKS5kYXRhKCksIHRvU3Ry
aW5nKGVuZCkudXRmOCgpLmRhdGEoKSk7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgIndh
cyBzdGFydCA9ICIsIGN1ZS0+c3RhcnRNZWRpYVRpbWUoKSwgIiwgZW5kID0gIiwgY3VlLT5lbmRN
ZWRpYVRpbWUoKSwgIiwgd2lsbCBiZSBzdGFydCA9ICIsIHN0YXJ0LCAiLCBlbmQgPSAiLCBlbmQp
OwogCiAgICAgY3VlLT5zZXRTdGFydFRpbWUoc3RhcnQpOwogICAgIGN1ZS0+c2V0RW5kVGltZShl
bmQpOwpAQCAtMTAxLDcgKzEwMiw3IEBAIHZvaWQgSW5iYW5kRGF0YVRleHRUcmFjazo6dXBkYXRl
RGF0YUN1ZSgKIHZvaWQgSW5iYW5kRGF0YVRleHRUcmFjazo6cmVtb3ZlRGF0YUN1ZShjb25zdCBN
ZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmLCBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRh
dGlvbiYgcGxhdGZvcm1WYWx1ZSkKIHsKICAgICBpZiAoYXV0byBjdWUgPSBtX2luY29tcGxldGVD
dWVNYXAudGFrZSgmcGxhdGZvcm1WYWx1ZSkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiSW5iYW5k
RGF0YVRleHRUcmFjazo6cmVtb3ZlRGF0YUN1ZSByZW1vdmluZyBjdWU6IHN0YXJ0PSVzLCBlbmQ9
JXNcbiIsIHRvU3RyaW5nKGN1ZS0+c3RhcnRUaW1lKCkpLnV0ZjgoKS5kYXRhKCksIHRvU3RyaW5n
KGN1ZS0+ZW5kVGltZSgpKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgSU5GT19MT0coTE9HSURF
TlRJRklFUiwgInJlbW92aW5nOiAiLCAqY3VlKTsKICAgICAgICAgSW5iYW5kVGV4dFRyYWNrOjpy
ZW1vdmVDdWUoKmN1ZSk7CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9JbmJhbmREYXRhVGV4dFRyYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmgJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NCw2ICs0NCwxMCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBhZGREYXRhQ3VlKGNvbnN0
IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBjb25zdCB2b2lkKiwgdW5z
aWduZWQpIGZpbmFsOwogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29uc3QgY2hh
ciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkRhdGFDdWUiOyB9CisjZW5k
aWYKKwogI2lmIEVOQUJMRShEQVRBQ1VFX1ZBTFVFKQogICAgIHZvaWQgYWRkRGF0YUN1ZShjb25z
dCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmPFNlcmlhbGl6ZWRQ
bGF0Zm9ybVJlcHJlc2VudGF0aW9uPiYmLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lk
IHVwZGF0ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBl
bmQsIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uJikgZmluYWw7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5j
cHAJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5k
R2VuZXJpY1RleHRUcmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNywxMSArMTI3LDExIEBA
IHZvaWQgSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6YWRkR2VuZXJpY0MKICAgICBhdXRvIGN1ZSA9
IFRleHRUcmFja0N1ZUdlbmVyaWM6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBj
dWVEYXRhLnN0YXJ0VGltZSgpLCBjdWVEYXRhLmVuZFRpbWUoKSwgY3VlRGF0YS5jb250ZW50KCkp
OwogICAgIHVwZGF0ZUN1ZUZyb21DdWVEYXRhKGN1ZS5nZXQoKSwgY3VlRGF0YSk7CiAgICAgaWYg
KGhhc0N1ZShjdWUucHRyKCksIFRleHRUcmFja0N1ZTo6SWdub3JlRHVyYXRpb24pKSB7Ci0gICAg
ICAgIExPRyhNZWRpYSwgIkluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OmFkZEdlbmVyaWNDdWUgaWdu
b3JpbmcgYWxyZWFkeSBhZGRlZCBjdWU6IHN0YXJ0PSVzLCBlbmQ9JXMsIGNvbnRlbnQ9XCIlc1wi
XG4iLCB0b1N0cmluZyhjdWVEYXRhLnN0YXJ0VGltZSgpKS51dGY4KCkuZGF0YSgpLCB0b1N0cmlu
ZyhjdWVEYXRhLmVuZFRpbWUoKSkudXRmOCgpLmRhdGEoKSwgY3VlRGF0YS5jb250ZW50KCkudXRm
OCgpLmRhdGEoKSk7CisgICAgICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAiaWdub3Jpbmcg
YWxyZWFkeSBhZGRlZCBjdWU6ICIsIGN1ZS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBMT0coTWVkaWEsICJJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjphZGRHZW5lcmljQ3Vl
IGFkZGVkIGN1ZTogc3RhcnQ9JS4yZiwgZW5kPSUuMmYsIGNvbnRlbnQ9XCIlc1wiXG4iLCBjdWVE
YXRhLnN0YXJ0VGltZSgpLnRvRG91YmxlKCksIGN1ZURhdGEuZW5kVGltZSgpLnRvRG91YmxlKCks
IGN1ZURhdGEuY29udGVudCgpLnV0ZjgoKS5kYXRhKCkpOworICAgIERFQlVHX0xPRyhMT0dJREVO
VElGSUVSLCAiYWRkZWQgY3VlOiAiLCBjdWUuZ2V0KCkpOwogCiAgICAgaWYgKGN1ZURhdGEuc3Rh
dHVzKCkgIT0gR2VuZXJpY0N1ZURhdGE6OkNvbXBsZXRlKQogICAgICAgICBtX2N1ZU1hcC5hZGQo
Y3VlRGF0YSwgY3VlKTsKQEAgLTE1NSwxMSArMTU1LDExIEBAIHZvaWQgSW5iYW5kR2VuZXJpY1Rl
eHRUcmFjazo6cmVtb3ZlR2VuZXIKIHsKICAgICBhdXRvKiBjdWUgPSBtX2N1ZU1hcC5maW5kKGN1
ZURhdGEpOwogICAgIGlmIChjdWUpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiSW5iYW5kR2VuZXJp
Y1RleHRUcmFjazo6cmVtb3ZlR2VuZXJpY0N1ZSByZW1vdmluZyBjdWU6IHN0YXJ0PSVzLCBlbmQ9
JXMsIGNvbnRlbnQ9XCIlc1wiXG4iLCAgdG9TdHJpbmcoY3VlRGF0YS5zdGFydFRpbWUoKSkudXRm
OCgpLmRhdGEoKSwgdG9TdHJpbmcoY3VlRGF0YS5lbmRUaW1lKCkpLnV0ZjgoKS5kYXRhKCksIGN1
ZURhdGEuY29udGVudCgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBERUJVR19MT0coTE9HSURF
TlRJRklFUiwgKmN1ZSk7CiAgICAgICAgIHJlbW92ZUN1ZSgqY3VlKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBMT0coTWVkaWEsICJJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpyZW1vdmVHZW5lcmlj
Q3VlIFVOQUJMRSB0byBmaW5kIGN1ZTogc3RhcnQ9JS4yZiwgZW5kPSUuMmYsIGNvbnRlbnQ9XCIl
c1wiXG4iLCBjdWVEYXRhLnN0YXJ0VGltZSgpLnRvRG91YmxlKCksIGN1ZURhdGEuZW5kVGltZSgp
LnRvRG91YmxlKCksIGN1ZURhdGEuY29udGVudCgpLnV0ZjgoKS5kYXRhKCkpOwotICAgIH0KKyAg
ICB9IGVsc2UKKyAgICAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsICJVTkFCTEUgdG8gZmlu
ZCBjdWU6ICIsICpjdWUpOworCiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IEluYmFuZEdlbmVyaWNU
ZXh0VHJhY2s6OnJlbW92ZUN1ZShUZXh0VHJhY2tDdWUmIGN1ZSkKQEAgLTE5Niw5ICsxOTYsMTIg
QEAgdm9pZCBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpuZXdDdWVzUGFycwogICAgICAgICBhdXRv
IHZ0dEN1ZSA9IFZUVEN1ZTo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICpjdWVE
YXRhKTsKIAogICAgICAgICBpZiAoaGFzQ3VlKHZ0dEN1ZS5wdHIoKSwgVGV4dFRyYWNrQ3VlOjpJ
Z25vcmVEdXJhdGlvbikpIHsKLSAgICAgICAgICAgIExPRyhNZWRpYSwgIkluYmFuZEdlbmVyaWNU
ZXh0VHJhY2s6Om5ld0N1ZXNQYXJzZWQgaWdub3JpbmcgYWxyZWFkeSBhZGRlZCBjdWU6IHN0YXJ0
PSUuMmYsIGVuZD0lLjJmLCBjb250ZW50PVwiJXNcIlxuIiwgdnR0Q3VlLT5zdGFydFRpbWUoKSwg
dnR0Q3VlLT5lbmRUaW1lKCksIHZ0dEN1ZS0+dGV4dCgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAg
ICAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsICJpZ25vcmluZyBhbHJlYWR5IGFkZGVkIGN1
ZTogIiwgdnR0Q3VlLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorCisg
ICAgICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCB2dHRDdWUuZ2V0KCkpOworCiAgICAgICAg
IGFkZEN1ZShXVEZNb3ZlKHZ0dEN1ZSkpOwogICAgIH0KIH0KQEAgLTIxNiw3ICsyMTksNyBAQCB2
b2lkIEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6Om5ld1JlZ2lvbnNQCiAKIHZvaWQgSW5iYW5kR2Vu
ZXJpY1RleHRUcmFjazo6ZmlsZUZhaWxlZFRvUGFyc2UoKQogewotICAgIExPRyhNZWRpYSwgIkVy
cm9yIHBhcnNpbmcgV2ViVlRUIHN0cmVhbS4iKTsKKyAgICBFUlJPUl9MT0coTE9HSURFTlRJRklF
Uik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oCShyZXZpc2lvbiAyMjIw
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2su
aAkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIG5l
d1JlZ2lvbnNQYXJzZWQoKSBmaW5hbDsKICAgICB2b2lkIGZpbGVGYWlsZWRUb1BhcnNlKCkgZmlu
YWw7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFz
c05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiSW5iYW5kR2VuZXJpY1RleHRUcmFjayI7IH0K
KyNlbmRpZgorCiAgICAgR2VuZXJpY1RleHRUcmFja0N1ZU1hcCBtX2N1ZU1hcDsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViVlRUUGFyc2VyPiBtX3dlYlZUVFBhcnNlcjsKIH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwCShyZXZpc2lvbiAy
MjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDkgQEAgSW5iYW5kVGV4dFRyYWNrOjpJbmJhbmRU
ZXh0VHJhY2soU2NyaXB0RQogICAgIDogVGV4dFRyYWNrKCZjb250ZXh0LCAmY2xpZW50LCBlbXB0
eUF0b20oKSwgdHJhY2tQcml2YXRlLmlkKCksIHRyYWNrUHJpdmF0ZS5sYWJlbCgpLCB0cmFja1By
aXZhdGUubGFuZ3VhZ2UoKSwgSW5CYW5kKQogICAgICwgbV9wcml2YXRlKHRyYWNrUHJpdmF0ZSkK
IHsKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBtX3ByaXZhdGUtPnNldExvZ2dlcihs
b2dnZXIoKSwgbG9nSWRlbnRpZmllcigpKTsKKyNlbmRpZgogICAgIG1fcHJpdmF0ZS0+c2V0Q2xp
ZW50KHRoaXMpOwogICAgIHVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSgpOwogfQpAQCAtMTkxLDYgKzE5
NCwxNSBAQCBNZWRpYVRpbWUgSW5iYW5kVGV4dFRyYWNrOjpzdGFydFRpbWVWYXJpCiAgICAgcmV0
dXJuIG1fcHJpdmF0ZS0+c3RhcnRUaW1lVmFyaWFuY2UoKTsKIH0KIAordm9pZCBJbmJhbmRUZXh0
VHJhY2s6OnNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KQoreworICAg
IFRyYWNrQmFzZTo6c2V0TWVkaWFFbGVtZW50KGVsZW1lbnQpOworI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAorICAgIG1fcHJpdmF0ZS0+c2V0TG9nZ2VyKGxvZ2dlcigpLCBsb2dJZGVudGlmaWVy
KCkpOworI2VuZGlmCit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaAkocmV2aXNp
b24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2su
aAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6CiAgICAgQXRvbWljU3Ry
aW5nIGluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUoKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIHZvaWQgc2V0UHJpdmF0ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7CisgICAgdm9pZCBz
ZXRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6
CiAgICAgSW5iYW5kVGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBUZXh0VHJhY2tD
bGllbnQmLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwCShyZXZpc2lvbiAy
MjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFj
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDkgKzc0LDEyIEBAIHZvaWQgSW5iYW5kV2ViVlRU
VGV4dFRyYWNrOjpuZXdDdWVzUGFyc2UKICAgICBmb3IgKGF1dG8mIGN1ZURhdGEgOiBjdWVzKSB7
CiAgICAgICAgIGF1dG8gdnR0Q3VlID0gVlRUQ3VlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgKmN1ZURhdGEpOwogICAgICAgICBpZiAoaGFzQ3VlKHZ0dEN1ZS5wdHIoKSwgVGV4
dFRyYWNrQ3VlOjpJZ25vcmVEdXJhdGlvbikpIHsKLSAgICAgICAgICAgIExPRyhNZWRpYSwgIklu
YmFuZFdlYlZUVFRleHRUcmFjazo6bmV3Q3Vlc1BhcnNlZCBpZ25vcmluZyBhbHJlYWR5IGFkZGVk
IGN1ZTogc3RhcnQ9JS4yZiwgZW5kPSUuMmYsIGNvbnRlbnQ9XCIlc1wiXG4iLCB2dHRDdWUtPnN0
YXJ0VGltZSgpLCB2dHRDdWUtPmVuZFRpbWUoKSwgdnR0Q3VlLT50ZXh0KCkudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgImlnbm9yaW5nIGFscmVh
ZHkgYWRkZWQgY3VlOiAiLCB2dHRDdWUuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CisKKyAgICAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsIHZ0dEN1ZS5nZXQoKSk7
CisKICAgICAgICAgYWRkQ3VlKFdURk1vdmUodnR0Q3VlKSk7CiAgICAgfQogfQpAQCAtOTMsNyAr
OTYsNyBAQCB2b2lkIEluYmFuZFdlYlZUVFRleHRUcmFjazo6bmV3UmVnaW9uc1BhCiAKIHZvaWQg
SW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpmaWxlRmFpbGVkVG9QYXJzZSgpCiB7Ci0gICAgTE9HKE1l
ZGlhLCAiRXJyb3IgcGFyc2luZyBXZWJWVFQgc3RyZWFtLiIpOworICAgIEVSUk9SX0xPRyhMT0dJ
REVOVElGSUVSLCAiRXJyb3IgcGFyc2luZyBXZWJWVFQgc3RyZWFtLiIpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdl
YlZUVFRleHRUcmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
SW5iYW5kV2ViVlRUVGV4dFRyYWNrLmgJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ5LDYgKzQ5LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBuZXdSZWdpb25zUGFyc2VkKCkgZmlu
YWw7CiAgICAgdm9pZCBmaWxlRmFpbGVkVG9QYXJzZSgpIGZpbmFsOwogCisjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gIkluYmFuZFdlYlZUVFRleHRUcmFjayI7IH0KKyNlbmRpZgorCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYlZUVFBhcnNlcj4gbV93ZWJWVFRQYXJzZXI7CiB9OwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAkocmV2aXNp
b24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFj
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkhUTUxU
cmFja0VsZW1lbnQuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWVMaXN0LmgiCisjaW5jbHVkZSAi
VlRUQ3VlLmgiCiAjaW5jbHVkZSAiVlRUUmVnaW9uTGlzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC05Nyw2ICs5OCw3IEBAIHZvaWQgTG9hZGFibGVUZXh0VHJhY2s6Om5ld0N1ZXNBdmFp
bGFibGUKIAogICAgIGZvciAoYXV0byYgbmV3Q3VlIDogbmV3Q3VlcykgewogICAgICAgICBuZXdD
dWUtPnNldFRyYWNrKHRoaXMpOworICAgICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgKnRv
VlRUQ3VlKG5ld0N1ZS5nZXQoKSkpOwogICAgICAgICBtX2N1ZXMtPmFkZChuZXdDdWUucmVsZWFz
ZU5vbk51bGwoKSk7CiAgICAgfQogCkBAIC0xMTEsNiArMTEzLDggQEAgdm9pZCBMb2FkYWJsZVRl
eHRUcmFjazo6Y3VlTG9hZGluZ0NvbXBsZQogICAgIGlmICghbV90cmFja0VsZW1lbnQpCiAgICAg
ICAgIHJldHVybjsKIAorICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOworCiAgICAgbV90cmFj
a0VsZW1lbnQtPmRpZENvbXBsZXRlTG9hZChsb2FkaW5nRmFpbGVkID8gSFRNTFRyYWNrRWxlbWVu
dDo6RmFpbHVyZSA6IEhUTUxUcmFja0VsZW1lbnQ6OlN1Y2Nlc3MpOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5oCShyZXZpc2lvbiAy
MjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDEwIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGxv
YWRUaW1lckZpcmVkKCk7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBj
aGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiTG9hZGFibGVUZXh0
VHJhY2siOyB9CisjZW5kaWYKKwogICAgIEhUTUxUcmFja0VsZW1lbnQqIG1fdHJhY2tFbGVtZW50
OwogICAgIFRpbWVyIG1fbG9hZFRpbWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0VHJhY2tM
b2FkZXI+IG1fbG9hZGVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
LmNwcAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAKICNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCiAKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlci5o
IgpAQCAtMzE2LDcgKzMxNyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFRleHRUcmFjazo6YWRkQ3Vl
KFJlZjwKICAgICAvLyAyLiBBZGQgY3VlIHRvIHRoZSBtZXRob2QncyBUZXh0VHJhY2sgb2JqZWN0
J3MgdGV4dCB0cmFjaydzIHRleHQgdHJhY2sgbGlzdCBvZiBjdWVzLgogICAgIGN1ZS0+c2V0VHJh
Y2sodGhpcyk7CiAgICAgZW5zdXJlVGV4dFRyYWNrQ3VlTGlzdCgpLmFkZChjdWUuY29weVJlZigp
KTsKLSAgICAKKwogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPnRleHRUcmFj
a0FkZEN1ZSgqdGhpcywgY3VlKTsKIApAQCAtMzM2LDYgKzMzNyw4IEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IFRleHRUcmFjazo6cmVtb3ZlQ3VlKFQKICAgICBpZiAoIW1fY3VlcykKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAKKyAgICBERUJVR19MT0coTE9H
SURFTlRJRklFUiwgY3VlKTsKKwogICAgIC8vIDIuIFJlbW92ZSBjdWUgZnJvbSB0aGUgbWV0aG9k
J3MgVGV4dFRyYWNrIG9iamVjdCdzIHRleHQgdHJhY2sncyB0ZXh0IHRyYWNrIGxpc3Qgb2YgY3Vl
cy4KICAgICBtX2N1ZXMtPnJlbW92ZShjdWUpOwogICAgIGN1ZS5zZXRJc0FjdGl2ZShmYWxzZSk7
CkBAIC01NDIsNyArNTQ1LDYgQEAgYm9vbCBUZXh0VHJhY2s6OmNvbnRhaW5zT25seUZvcmNlZFN1
YnRpdAogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLQogdm9pZCBUZXh0VHJhY2s6OnNl
dExhbmd1YWdlKGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2UpCiB7CiAgICAgLy8gMTEuMSBs
YW5ndWFnZSwgb24gc2V0dGluZzoKQEAgLTU2NCw3ICs1NjYsNiBAQCB2b2lkIFRleHRUcmFjazo6
c2V0TGFuZ3VhZ2UoY29uc3QgQXRvbWljCiAgICAgaWYgKG1lZGlhRWxlbWVudCgpKQogICAgICAg
ICBtZWRpYUVsZW1lbnQoKS0+dGV4dFRyYWNrcygpLnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKIH0K
LQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2suaAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDYgKzE0NywxMCBA
QCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgVGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBUZXh0VHJhY2tDbGllbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIGtpbmQsIGNvbnN0IEF0
b21pY1N0cmluZyYgaWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21pY1N0
cmluZyYgbGFuZ3VhZ2UsIFRleHRUcmFja1R5cGUpOwogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gIlRleHRUcmFjayI7IH0KKyNlbmRpZgorCiAgICAgUmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+
IG1fY3VlczsKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrQ3VlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZS5jcHAJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrQ3VlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE2LDYgKzIxNiwzNSBA
QCBib29sIFRleHRUcmFja0N1ZTo6ZG9lc0V4dGVuZEN1ZShjb25zdCBUCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK1N0cmluZyBUZXh0VHJhY2tDdWU6OnRvU3RyaW5nKCkgY29uc3QKK3sKKyAgICBT
dHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisKKyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoInN0YXJ0
ID0gIik7CisgICAgYnVpbGRlci5hcHBlbmQobV9zdGFydFRpbWUudG9TdHJpbmcoKSk7CisKKyAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgZW5kID0gIik7CisgICAgYnVpbGRlci5hcHBlbmQo
bV9lbmRUaW1lLnRvU3RyaW5nKCkpOworCisgICAgY29uc3QgY2hhciogdHlwZSA9ICJHZW5lcmlj
IjsKKyAgICBzd2l0Y2ggKGN1ZVR5cGUoKSkgeworICAgIGNhc2UgVGV4dFRyYWNrQ3VlOjpHZW5l
cmljOgorICAgICAgICB0eXBlID0gIkdlbmVyaWMiOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFRleHRUcmFja0N1ZTo6V2ViVlRUOgorICAgICAgICB0eXBlID0gIldlYlZUVCI7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgVGV4dFRyYWNrQ3VlOjpEYXRhOgorICAgICAgICB0eXBlID0gIkRh
dGEiOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IiwgdHlwZSA9ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKHR5cGUpOworCisgICAgcmV0dXJuIGJ1
aWxkZXIudG9TdHJpbmcoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAkocmV2aXNpb24g
MjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAkod29y
a2luZyBjb3B5KQpAQCAtODQsNiArODQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsQ2hhbmdl
KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZSgpOwogCisgICAgdmlydHVhbCBTdHJpbmcg
dG9TdHJpbmcoKSBjb25zdDsKKwogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKICAgICB1c2lu
ZyBSZWZDb3VudGVkOjpkZXJlZjsKIApAQCAtMTE5LDQgKzEyMSwyMCBAQCBwcml2YXRlOgogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBQQUwgeworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUeXBlPgorc3RydWN0IExvZ0FyZ3VtZW50OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IExv
Z0FyZ3VtZW50PFdlYkNvcmU6OlRleHRUcmFja0N1ZT4geworICAgIHN0YXRpYyBTdHJpbmcgdG9T
dHJpbmcoY29uc3QgV2ViQ29yZTo6VGV4dFRyYWNrQ3VlJiBjdWUpCisgICAgeworICAgICAgICBy
ZXR1cm4gY3VlLnRvU3RyaW5nKCk7CisgICAgfQorfTsKKworCit9CisKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuY3Bw
CShyZXZpc2lvbiAyMjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZUdlbmVyaWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODksOCArMTg5LDYgQEAgdm9pZCBU
ZXh0VHJhY2tDdWVHZW5lcmljOjpzZXRGb250U2l6ZShpbgogICAgIGlmIChmb250U2l6ZU11bHRp
cGxpZXIoKSkKICAgICAgICAgc2l6ZSAqPSBmb250U2l6ZU11bHRpcGxpZXIoKSAvIDEwMDsKICAg
ICBkaXNwbGF5VHJlZUludGVybmFsKCkuc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eUZvbnRTaXplLCBscm91bmQoc2l6ZSksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwotCi0g
ICAgTE9HKE1lZGlhLCAiVGV4dFRyYWNrQ3VlR2VuZXJpYzo6c2V0Rm9udFNpemUgLSBzZXR0aW5n
IGN1ZSBmb250IHNpemUgdG8gJWxpIiwgbHJvdW5kKHNpemUpKTsKIH0KIAogYm9vbCBUZXh0VHJh
Y2tDdWVHZW5lcmljOjpjdWVDb250ZW50c01hdGNoKGNvbnN0IFRleHRUcmFja0N1ZSYgY3VlKSBj
b25zdApAQCAtMjY3LDcgKzI2NSw0NiBAQCBib29sIFRleHRUcmFja0N1ZUdlbmVyaWM6OmlzUG9z
aXRpb25lZEFiCiAgICAgCiAgICAgcmV0dXJuIFZUVEN1ZTo6aXNPcmRlcmVkQmVmb3JlKHRoYXQp
OwogfQotICAgIAorCitTdHJpbmcgVGV4dFRyYWNrQ3VlR2VuZXJpYzo6dG9TdHJpbmcoKSBjb25z
dAoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKworICAgIGJ1aWxkZXIuYXBwZW5kKFZU
VEN1ZTo6dG9TdHJpbmcoKSk7CisKKyAgICBpZiAobV9mb3JlZ3JvdW5kQ29sb3IuaXNWYWxpZCgp
KSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCBmb3JlZ3JvdW5kIGNvbG9yID0g
Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fZm9yZWdyb3VuZENvbG9yLnNlcmlhbGl6ZWQo
KSk7CisgICAgfQorCisgICAgaWYgKG1fYmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSkgeworICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgYmFja2dyb3VuZCBjb2xvciA9ICIpOworICAg
ICAgICBidWlsZGVyLmFwcGVuZChtX2JhY2tncm91bmRDb2xvci5zZXJpYWxpemVkKCkpOworICAg
IH0KKworICAgIGlmIChtX2hpZ2hsaWdodENvbG9yLmlzVmFsaWQoKSkgeworICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIiwgaGlsaWdodCBjb2xvciA9ICIpOworICAgICAgICBidWlsZGVy
LmFwcGVuZChtX2hpZ2hsaWdodENvbG9yLnNlcmlhbGl6ZWQoKSk7CisgICAgfQorCisgICAgaWYg
KG1fYmFzZUZvbnRTaXplUmVsYXRpdmVUb1ZpZGVvSGVpZ2h0KSB7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiLCBiYXNlIGZvbnQgc2l6ZSByZWxhdGl2ZSB0byB2aWRlbyBoZWlnaHQg
PSAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9iYXNlRm9udFNpemVSZWxhdGl2
ZVRvVmlkZW9IZWlnaHQpOworICAgIH0KKworICAgIGlmIChtX2ZvbnRTaXplTXVsdGlwbGllcikg
eworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgZm9udCBzaXplIG11bHRpcGxpZXIg
PSAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9mb250U2l6ZU11bHRpcGxpZXIp
OworICAgIH0KKworICAgIGlmICghbV9mb250TmFtZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIsIGZvbnQgPSAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
bV9mb250TmFtZSk7CisgICAgfQorCisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5oCShyZXZpc2lvbiAyMjIwMDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuaAkod29y
a2luZyBjb3B5KQpAQCAtNjcsNiArNjcsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEZvbnRT
aXplKGludCwgY29uc3QgSW50U2l6ZSYsIGJvb2wgaW1wb3J0YW50KSBmaW5hbDsKIAorICAgIFN0
cmluZyB0b1N0cmluZygpIGNvbnN0IGZpbmFsOworCiBwcml2YXRlOgogICAgIFRleHRUcmFja0N1
ZUdlbmVyaWMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQs
IGNvbnN0IE1lZGlhVGltZSYgZW5kLCBjb25zdCBTdHJpbmcmKTsKICAgICAKQEAgLTkyLDQgKzk0
LDE4IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFBB
TCB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CitzdHJ1Y3QgTG9nQXJndW1lbnQ7CisKK3Rl
bXBsYXRlIDw+CitzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6VGV4dFRyYWNrQ3VlR2VuZXJp
Yz4geworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6VGV4dFRyYWNr
Q3VlR2VuZXJpYyYgY3VlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGN1ZS50b1N0cmluZygpOwor
ICAgIH0KK307CisKK30KICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
cmFja0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJh
Y2tCYXNlLmNwcAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UcmFja0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVHJhY2tCYXNlLmgiCiAKKyNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgogCkBAIC0zNyw2ICszOCwyMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
YXRpYyBpbnQgc191bmlxdWVJZCA9IDA7CiAKKyAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisg
c3RhdGljIGNvbnN0IHZvaWQqIG5leHRMb2dJZGVudGlmaWVyKCkKKyB7CisgICAgIHN0YXRpYyB1
aW50NjRfdCBsb2dJZGVudGlmaWVyID0gY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKTsK
KyAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KCsrbG9nSWRlbnRpZmll
cik7CisgfQorIAorIHN0YXRpYyBSZWZQdHI8UEFMOjpMb2dnZXI+JiBudWxsTG9nZ2VyKCkKKyB7
CisgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWZQdHI8UEFMOjpMb2dnZXI+PiBsb2dnZXI7
CisgICAgIHJldHVybiBsb2dnZXI7CisgfQorICNlbmRpZgorIAorCiBUcmFja0Jhc2U6OlRyYWNr
QmFzZShUeXBlIHR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbGFiZWwsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2UpCiAgICAgOiBtX3VuaXF1ZUlk
KCsrc191bmlxdWVJZCkKICAgICAsIG1faWQoaWQpCkBAIC00NiwxMCArNjIsMTYgQEAgVHJhY2tC
YXNlOjpUcmFja0Jhc2UoVHlwZSB0eXBlLCBjb25zdCBBdAogewogICAgIEFTU0VSVCh0eXBlICE9
IEJhc2VUcmFjayk7CiAgICAgbV90eXBlID0gdHlwZTsKLX0KIAotVHJhY2tCYXNlOjp+VHJhY2tC
YXNlKCkKLXsKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBpZiAoIW51bGxMb2dnZXIo
KS5nZXQoKSkgeworICAgICAgICBudWxsTG9nZ2VyKCkgPSBQQUw6OkxvZ2dlcjo6Y3JlYXRlKHRo
aXMpOworICAgICAgICBudWxsTG9nZ2VyKCktPnNldEVuYWJsZWQodGhpcywgZmFsc2UpOworICAg
IH0KKworICAgIG1fbG9nZ2VyID0gbnVsbExvZ2dlcigpLmdldCgpOworICAgIG1fbG9nSWRlbnRp
ZmllciA9IG5leHRMb2dJZGVudGlmaWVyKCk7CisjZW5kaWYKIH0KIAogRWxlbWVudCogVHJhY2tC
YXNlOjplbGVtZW50KCkKQEAgLTU3LDYgKzc5LDE4IEBAIEVsZW1lbnQqIFRyYWNrQmFzZTo6ZWxl
bWVudCgpCiAgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50OwogfQogCit2b2lkIFRyYWNrQmFzZTo6
c2V0TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgbV9tZWRp
YUVsZW1lbnQgPSBlbGVtZW50OworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgaWYg
KGVsZW1lbnQpIHsKKyAgICAgICAgbV9sb2dnZXIgPSAmZWxlbWVudC0+bG9nZ2VyKCk7CisgICAg
ICAgIG1fbG9nSWRlbnRpZmllciA9IGVsZW1lbnQtPmxvZ0lkZW50aWZpZXIoKTsKKyAgICB9Cisj
ZW5kaWYKK30KKwogLy8gU2VlOiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvYmNwNDcjc2Vj
dGlvbi0yLjEKIHN0YXRpYyBib29sIGlzVmFsaWRCQ1A0N0xhbmd1YWdlVGFnKGNvbnN0IFN0cmlu
ZyYgbGFuZ3VhZ2VUYWcpCiB7CkBAIC0xMzQsNiArMTY4LDEzIEBAIEF0b21pY1N0cmluZyBUcmFj
a0Jhc2U6OnZhbGlkQkNQNDdMYW5ndWEKICAgICByZXR1cm4gbV92YWxpZEJDUDQ3TGFuZ3VhZ2U7
CiB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK1dURkxvZ0NoYW5uZWwmIFRyYWNrQmFz
ZTo6bG9nQ2hhbm5lbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExvZ01lZGlhOworfQorI2VuZGlm
CisKIE1lZGlhVHJhY2tCYXNlOjpNZWRpYVRyYWNrQmFzZShUeXBlIHR5cGUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgaWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbGFuZ3VhZ2UpCiAgICAgOiBUcmFja0Jhc2UodHlwZSwgaWQsIGxhYmVsLCBsYW5ndWFnZSkK
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaAkocmV2aXNpb24gMjIy
MDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMjcsNiArMjcsOCBAQAogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogCisjaW5j
bHVkZSA8cGFsL0xvZ2dlci5oPgorI2luY2x1ZGUgPHBhbC9Mb2dnZXJIZWxwZXIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MzUsMTQgKzM3LDE5IEBAIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50Owog
Y2xhc3MgU291cmNlQnVmZmVyOwogCi1jbGFzcyBUcmFja0Jhc2UgOiBwdWJsaWMgUmVmQ291bnRl
ZDxUcmFja0Jhc2U+IHsKK2NsYXNzIFRyYWNrQmFzZQorICAgIDogcHVibGljIFJlZkNvdW50ZWQ8
VHJhY2tCYXNlPgorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgcHJpdmF0ZSBQQUw6
OkxvZ2dlckhlbHBlcgorI2VuZGlmCit7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+VHJhY2tCYXNl
KCk7CisgICAgdmlydHVhbCB+VHJhY2tCYXNlKCkgPSBkZWZhdWx0OwogCiAgICAgZW51bSBUeXBl
IHsgQmFzZVRyYWNrLCBUZXh0VHJhY2ssIEF1ZGlvVHJhY2ssIFZpZGVvVHJhY2sgfTsKICAgICBU
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAotICAgIHZvaWQgc2V0TWVkaWFF
bGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQpIHsgbV9tZWRpYUVsZW1lbnQgPSBlbGVt
ZW50OyB9CisgICAgdmlydHVhbCB2b2lkIHNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50
Kik7CiAgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KCkgeyByZXR1cm4gbV9tZWRp
YUVsZW1lbnQ7IH0KICAgICB2aXJ0dWFsIEVsZW1lbnQqIGVsZW1lbnQoKTsKIApAQCAtNjcsNiAr
NzQsMTIgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGVuYWJsZWQoKSBjb25zdCA9IDA7
CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBQQUw6OkxvZ2dlciYgbG9n
Z2VyKCkgY29uc3QgZmluYWwgeyBBU1NFUlQobV9sb2dnZXIpOyByZXR1cm4gKm1fbG9nZ2VyLmdl
dCgpOyB9CisgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fbG9nSWRlbnRpZmllcjsgfQorICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBj
b25zdCBmaW5hbDsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgVHJhY2tCYXNlKFR5cGUsIGNv
bnN0IEF0b21pY1N0cmluZyYgaWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwsIGNvbnN0IEF0
b21pY1N0cmluZyYgbGFuZ3VhZ2UpOwogCkBAIC04Myw2ICs5NiwxMCBAQCBwcml2YXRlOgogICAg
IEF0b21pY1N0cmluZyBtX2xhYmVsOwogICAgIEF0b21pY1N0cmluZyBtX2xhbmd1YWdlOwogICAg
IEF0b21pY1N0cmluZyBtX3ZhbGlkQkNQNDdMYW5ndWFnZTsKKyNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKKyAgICBSZWZQdHI8Y29uc3QgUEFMOjpMb2dnZXI+IG1fbG9nZ2VyOworICAgIGNvbnN0
IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKKyNlbmRpZgogfTsKIAogY2xhc3MgTWVkaWFUcmFja0Jh
c2UgOiBwdWJsaWMgVHJhY2tCYXNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VlRUQ3VlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1
ZS5jcHAJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRU
Q3VlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1Niw4ICsxMTU2LDYgQEAgdm9pZCBWVFRDdWU6
OnNldEZvbnRTaXplKGludCBmb250U2l6ZSwgYwogewogICAgIGlmICghaGFzRGlzcGxheVRyZWUo
KSB8fCAhZm9udFNpemUpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBMT0coTWVkaWEsICJU
ZXh0VHJhY2tDdWU6OnNldEZvbnRTaXplIC0gc2V0dGluZyBjdWUgZm9udCBzaXplIHRvICVpIiwg
Zm9udFNpemUpOwogCiAgICAgbV9kaXNwbGF5VHJlZVNob3VsZENoYW5nZSA9IHRydWU7CiAgICAg
ZGlzcGxheVRyZWVJbnRlcm5hbCgpLnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlG
b250U2l6ZSwgZm9udFNpemUsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgsIGltcG9ydGFudCk7
CkBAIC0xMTc0LDYgKzExNzIsMTggQEAgY29uc3QgVlRUQ3VlKiB0b1ZUVEN1ZShjb25zdCBUZXh0
VHJhY2tDdQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBWVFRDdWUqPihjdWUpOwogfQog
CitTdHJpbmcgVlRUQ3VlOjp0b1N0cmluZygpIGNvbnN0Cit7CisgICAgU3RyaW5nQnVpbGRlciBi
dWlsZGVyOworCisgICAgYnVpbGRlci5hcHBlbmQoVGV4dFRyYWNrQ3VlOjp0b1N0cmluZygpKTsK
KworICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCBjb250ZW50ID0gIik7CisgICAgYnVpbGRl
ci5hcHBlbmQodGV4dCgpKTsKKworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZUVEN1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVlRUQ3VlLmgJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVlRUQ3VlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Nyw2ICsxNjcsOCBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGRpZENoYW5nZSgpIG92ZXJyaWRlOwogCisgICAgU3RyaW5nIHRvU3RyaW5nKCkg
Y29uc3Qgb3ZlcnJpZGU7CisKIHByb3RlY3RlZDoKICAgICBWVFRDdWUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnQpOwogICAgIFZUVEN1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgY29uc3QgV2ViVlRUQ3VlRGF0YSYpOwpAQCAtMjI3LDQgKzIyOSwxOSBAQCBjb25zdCBWVFRD
dWUqIHRvVlRUQ3VlKGNvbnN0IFRleHRUcmFja0N1CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAorbmFtZXNwYWNlIFBBTCB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CitzdHJ1Y3QgTG9n
QXJndW1lbnQ7CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6VlRU
Q3VlPiB7CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBXZWJDb3JlOjpWVFRDdWUm
IGN1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBjdWUudG9TdHJpbmcoKTsKKyAgICB9Cit9Owor
Cit9CisKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2su
Y3BwCShyZXZpc2lvbiAyMjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVv
VHJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MiwxMCArODIsMTMgQEAgY29uc3QgQXRvbWlj
U3RyaW5nJiBWaWRlb1RyYWNrOjpjb21tZW50YQogCiBWaWRlb1RyYWNrOjpWaWRlb1RyYWNrKFZp
ZGVvVHJhY2tDbGllbnQmIGNsaWVudCwgVmlkZW9UcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkK
ICAgICA6IE1lZGlhVHJhY2tCYXNlKE1lZGlhVHJhY2tCYXNlOjpWaWRlb1RyYWNrLCB0cmFja1By
aXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCksIHRyYWNrUHJpdmF0ZS5sYW5ndWFnZSgp
KQotICAgICwgbV9zZWxlY3RlZCh0cmFja1ByaXZhdGUuc2VsZWN0ZWQoKSkKICAgICAsIG1fY2xp
ZW50KCZjbGllbnQpCiAgICAgLCBtX3ByaXZhdGUodHJhY2tQcml2YXRlKQorICAgICwgbV9zZWxl
Y3RlZCh0cmFja1ByaXZhdGUuc2VsZWN0ZWQoKSkKIHsKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKKyAgICBtX3ByaXZhdGUtPnNldExvZ2dlcihsb2dnZXIoKSwgbG9nSWRlbnRpZmllcigpKTsK
KyNlbmRpZgogICAgIG1fcHJpdmF0ZS0+c2V0Q2xpZW50KHRoaXMpOwogICAgIHVwZGF0ZUtpbmRG
cm9tUHJpdmF0ZSgpOwogfQpAQCAtMTAzLDYgKzEwNiw5IEBAIHZvaWQgVmlkZW9UcmFjazo6c2V0
UHJpdmF0ZShWaWRlb1RyYWNrUHIKICAgICBtX3ByaXZhdGUtPnNldENsaWVudChudWxscHRyKTsK
ICAgICBtX3ByaXZhdGUgPSB0cmFja1ByaXZhdGU7CiAgICAgbV9wcml2YXRlLT5zZXRDbGllbnQo
dGhpcyk7CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgbV9wcml2YXRlLT5zZXRMb2dn
ZXIobG9nZ2VyKCksIGxvZ0lkZW50aWZpZXIoKSk7CisjZW5kaWYKIAogICAgIG1fcHJpdmF0ZS0+
c2V0U2VsZWN0ZWQobV9zZWxlY3RlZCk7CiAgICAgdXBkYXRlS2luZEZyb21Qcml2YXRlKCk7CkBA
IC0yMzcsNiArMjQzLDE0IEBAIHZvaWQgVmlkZW9UcmFjazo6dXBkYXRlS2luZEZyb21Qcml2YXRl
KCkKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAordm9pZCBWaWRlb1RyYWNrOjpzZXRN
ZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBUcmFja0Jhc2U6
OnNldE1lZGlhRWxlbWVudChlbGVtZW50KTsKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAg
ICBtX3ByaXZhdGUtPnNldExvZ2dlcihsb2dnZXIoKSwgbG9nSWRlbnRpZmllcigpKTsKKyNlbmRp
ZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmgJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3
Myw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBNZWRpYURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbigp
IGNvbnN0OwogCiAgICAgdm9pZCBzZXRQcml2YXRlKFZpZGVvVHJhY2tQcml2YXRlJik7CisgICAg
dm9pZCBzZXRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopIG92ZXJyaWRlOwogCiBwcml2
YXRlOgogICAgIFZpZGVvVHJhY2soVmlkZW9UcmFja0NsaWVudCYsIFZpZGVvVHJhY2tQcml2YXRl
Jik7CkBAIC05MiwxMCArOTMsMTMgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdXBkYXRlS2luZEZy
b21Qcml2YXRlKCk7CiAKLSAgICBib29sIG1fc2VsZWN0ZWQ7Ci0gICAgVmlkZW9UcmFja0NsaWVu
dCogbV9jbGllbnQ7CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29uc3QgY2hhciog
bG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlZpZGVvVHJhY2siOyB9CisjZW5k
aWYKIAorICAgIFZpZGVvVHJhY2tDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OwogICAgIFJl
ZjxWaWRlb1RyYWNrUHJpdmF0ZT4gbV9wcml2YXRlOworICAgIGJvb2wgbV9zZWxlY3RlZCB7IGZh
bHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmgJKHJldmlz
aW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJh
Y2tQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDEwIEBAIHB1YmxpYzoKICAg
ICBlbnVtIEtpbmQgeyBBbHRlcm5hdGl2ZSwgRGVzY3JpcHRpb24sIE1haW4sIE1haW5EZXNjLCBU
cmFuc2xhdGlvbiwgQ29tbWVudGFyeSwgTm9uZSB9OwogICAgIHZpcnR1YWwgS2luZCBraW5kKCkg
Y29uc3QgeyByZXR1cm4gTm9uZTsgfQogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAg
Y29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkF1ZGlv
VHJhY2tQcml2YXRlIjsgfQorI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBBdWRpb1RyYWNrUHJp
dmF0ZSgpID0gZGVmYXVsdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaAkocmV2aXNpb24gMjIy
MDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQogCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oIgor
I2luY2x1ZGUgPHBhbC9Mb2dnZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Miw4
ICs0Myw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZh
dGU+IGNyZWF0ZShDdWVGb3JtYXQgZm9ybWF0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZShmb3JtYXQpKTsgfQogICAgIHZpcnR1YWwgfkluYmFuZFRleHRUcmFj
a1ByaXZhdGUoKSB7IH0KIAotICAgIHZvaWQgc2V0Q2xpZW50KEluYmFuZFRleHRUcmFja1ByaXZh
dGVDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQogICAgIEluYmFuZFRleHRU
cmFja1ByaXZhdGVDbGllbnQqIGNsaWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY2xp
ZW50OyB9CisgICAgdm9pZCBzZXRDbGllbnQoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudCog
Y2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAKICAgICBlbnVtIE1vZGUgewogICAgICAg
ICBEaXNhYmxlZCwKQEAgLTc4LDYgKzc5LDEwIEBAIHB1YmxpYzoKIAogICAgIEN1ZUZvcm1hdCBj
dWVGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdDsgfQogCisjaWYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gIkluYmFuZFRleHRUcmFja1ByaXZhdGUiOyB9CisjZW5kaWYKKwogcHJvdGVjdGVk
OgogICAgIEluYmFuZFRleHRUcmFja1ByaXZhdGUoQ3VlRm9ybWF0IGZvcm1hdCkKICAgICAgICAg
OiBtX2Zvcm1hdChmb3JtYXQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oCShy
ZXZpc2lvbiAyMjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDgg
QEAgcHVibGljOgogCiAgICAgYm9vbCBkb2VzRXh0ZW5kQ3VlRGF0YShjb25zdCBHZW5lcmljQ3Vl
RGF0YSYpIGNvbnN0OwogCisgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CisKIHByaXZhdGU6
CiAgICAgR2VuZXJpY0N1ZURhdGEoKSA9IGRlZmF1bHQ7CiAKQEAgLTExMyw2ICsxMTUsMTAyIEBA
IHByaXZhdGU6CiAgICAgU3RhdHVzIG1fc3RhdHVzIHsgVW5pbml0aWFsaXplZCB9OwogfTsKIAor
aW5saW5lIFN0cmluZyBHZW5lcmljQ3VlRGF0YTo6dG9TdHJpbmcoKSBjb25zdAoreworICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKKworICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgic3RhcnQg
PSAiKTsKKyAgICBidWlsZGVyLmFwcGVuZChtX3N0YXJ0VGltZS50b1N0cmluZygpKTsKKworICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCBlbmQgPSAiKTsKKyAgICBidWlsZGVyLmFwcGVuZCht
X2VuZFRpbWUudG9TdHJpbmcoKSk7CisKKyAgICBjb25zdCBjaGFyKiBzdGF0dXM7CisgICAgc3dp
dGNoIChtX3N0YXR1cykgeworICAgIGNhc2UgR2VuZXJpY0N1ZURhdGE6OlVuaW5pdGlhbGl6ZWQ6
CisgICAgICAgIHN0YXR1cyA9ICJVbmluaXRpYWxpemVkIjsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBHZW5lcmljQ3VlRGF0YTo6UGFydGlhbDoKKyAgICAgICAgc3RhdHVzID0gIlBhcnRpYWwi
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpDb21wbGV0ZToKKyAg
ICAgICAgc3RhdHVzID0gIkNvbXBsZXRlIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCBzdGF0dXMgPSAiKTsKKyAgICBidWlsZGVyLmFwcGVuZChz
dGF0dXMpOworCisgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIGlkID0gIik7CisgICAgYnVp
bGRlci5hcHBlbmQobV9pZCk7CisKKyAgICBpZiAobV9saW5lID4gMCkgeworICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIiwgbGluZSA9ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZE51
bWJlcihtX2xpbmUpOworICAgIH0KKworICAgIGlmIChtX3NpemUgPiAwKSB7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCBzaXplID0gIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5k
TnVtYmVyKG1fc2l6ZSk7CisgICAgfQorCisgICAgaWYgKG1fcG9zaXRpb24gPiAwKSB7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCBwb3NpdGlvbiA9ICIpOworICAgICAgICBidWls
ZGVyLmFwcGVuZE51bWJlcihtX3Bvc2l0aW9uKTsKKyAgICB9CisKKyAgICBpZiAobV9hbGlnbiAh
PSBOb25lKSB7CisgICAgICAgIGNvbnN0IGNoYXIqIGFsaWduOworICAgICAgICBzd2l0Y2ggKG1f
YWxpZ24pIHsKKyAgICAgICAgY2FzZSBHZW5lcmljQ3VlRGF0YTo6U3RhcnQ6CisgICAgICAgICAg
ICBhbGlnbiA9ICJTdGFydCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHZW5l
cmljQ3VlRGF0YTo6TWlkZGxlOgorICAgICAgICAgICAgYWxpZ24gPSAiTWlkZGxlIjsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpFbmQ6CisgICAgICAg
ICAgICBhbGlnbiA9ICJFbmQiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2Vu
ZXJpY0N1ZURhdGE6Ok5vbmU6CisgICAgICAgICAgICBhbGlnbiA9ICJOb25lIjsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCBh
bGlnbiA9ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChhbGlnbik7CisgICAgfQorCisgICAg
aWYgKG1fZm9yZWdyb3VuZENvbG9yLmlzVmFsaWQoKSkgeworICAgICAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiwgZm9yZWdyb3VuZCBjb2xvciA9ICIpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZChtX2ZvcmVncm91bmRDb2xvci5zZXJpYWxpemVkKCkpOworICAgIH0KKworICAgIGlmIChtX2Jh
Y2tncm91bmRDb2xvci5pc1ZhbGlkKCkpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIsIGJhY2tncm91bmQgY29sb3IgPSAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobV9iYWNr
Z3JvdW5kQ29sb3Iuc2VyaWFsaXplZCgpKTsKKyAgICB9CisKKyAgICBpZiAobV9oaWdobGlnaHRD
b2xvci5pc1ZhbGlkKCkpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIGhpbGln
aHQgY29sb3IgPSAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobV9oaWdobGlnaHRDb2xvci5z
ZXJpYWxpemVkKCkpOworICAgIH0KKworICAgIGlmIChtX2Jhc2VGb250U2l6ZSkgeworICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgYmFzZSBmb250IHNpemUgPSAiKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmROdW1iZXIobV9iYXNlRm9udFNpemUpOworICAgIH0KKworICAgIGlmICht
X3JlbGF0aXZlRm9udFNpemUpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIHJl
bGF0aXZlIGZvbnQgc2l6ZSA9ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX3Jl
bGF0aXZlRm9udFNpemUpOworICAgIH0KKworICAgIGlmICghbV9mb250TmFtZS5pc0VtcHR5KCkp
IHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIGZvbnQgPSAiKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQobV9mb250TmFtZSk7CisgICAgfQorCisgICAgcmV0dXJuIGJ1aWxkZXIu
dG9TdHJpbmcoKTsKK30KKwogaW5saW5lIGJvb2wgR2VuZXJpY0N1ZURhdGE6OmRvZXNFeHRlbmRD
dWVEYXRhKGNvbnN0IEdlbmVyaWNDdWVEYXRhJiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAobV9y
ZWxhdGl2ZUZvbnRTaXplICE9IG90aGVyLm1fcmVsYXRpdmVGb250U2l6ZSkKQEAgLTE2Niw0ICsy
NjQsMTkgQEAgcHVibGljOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBQ
QUwgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgorc3RydWN0IExvZ0FyZ3VtZW50OworCit0
ZW1wbGF0ZSA8Pgorc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhPiB7
CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBXZWJDb3JlOjpHZW5lcmljQ3VlRGF0
YSYgY3VlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGN1ZS50b1N0cmluZygpOworICAgIH0KK307
CisKK30KKwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9U
cmFja1ByaXZhdGVCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9UcmFja1ByaXZhdGVCYXNlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZhdGVCYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlRyYWNrUHJpdmF0ZUJhc2UuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykK
KworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECit2b2lkIFRyYWNrUHJpdmF0ZUJhc2U6OnNldExvZ2dlcihjb25z
dCBQQUw6OkxvZ2dlciYgbG9nZ2VyLCBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKQoreworICAg
IG1fbG9nZ2VyID0gJmxvZ2dlcjsKKyAgICBtX2xvZ0lkZW50aWZpZXIgPSBsb2dJZGVudGlmaWVy
OworfQorCitXVEZMb2dDaGFubmVsJiBUcmFja1ByaXZhdGVCYXNlOjpsb2dDaGFubmVsKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gTG9nTWVkaWE7Cit9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1RyYWNrUHJpdmF0ZUJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9UcmFja1ByaXZhdGVCYXNlLmgJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJpdmF0ZUJhc2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMjksNiArMjksOCBAQAogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogCisjaW5j
bHVkZSA8cGFsL0xvZ2dlci5oPgorI2luY2x1ZGUgPHBhbC9Mb2dnZXJIZWxwZXIuaD4KICNpbmNs
dWRlIDx3dGYvTWVkaWFUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CkBAIC00NCw3ICs0NiwxMiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmUoKSA9IDA7CiB9OwogCi1jbGFz
cyBUcmFja1ByaXZhdGVCYXNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRyYWNrUHJp
dmF0ZUJhc2U+IHsKK2NsYXNzIFRyYWNrUHJpdmF0ZUJhc2UKKyAgICA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxUcmFja1ByaXZhdGVCYXNlPgorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAorICAgICwgcHJpdmF0ZSBQQUw6OkxvZ2dlckhlbHBlcgorI2VuZGlmCit7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoVHJhY2tQcml2YXRlQmFzZSk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CkBAIC02Niw4ICs3MywyMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBj
bGllbnQtPndpbGxSZW1vdmUoKTsKICAgICB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
KyAgICB2b2lkIHNldExvZ2dlcihjb25zdCBQQUw6OkxvZ2dlciYsIGNvbnN0IHZvaWQqKTsKKyAg
ICBjb25zdCBQQUw6OkxvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyBBU1NFUlQobV9sb2dn
ZXIpOyByZXR1cm4gKm1fbG9nZ2VyLmdldCgpOyB9CisgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRp
ZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQorICAgIFdURkxv
Z0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6
CiAgICAgVHJhY2tQcml2YXRlQmFzZSgpID0gZGVmYXVsdDsKKworI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAorICAgIFJlZlB0cjxjb25zdCBQQUw6OkxvZ2dlcj4gbV9sb2dnZXI7CisgICAgY29u
c3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNr
UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1ZpZGVvVHJhY2tQcml2YXRlLmgJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU0LDYgKzU0LDEwIEBAIHB1YmxpYzoKICAgICBlbnVtIEtpbmQgeyBBbHRlcm5hdGl2ZSwgQ2Fw
dGlvbnMsIE1haW4sIFNpZ24sIFN1YnRpdGxlcywgQ29tbWVudGFyeSwgTm9uZSB9OwogICAgIHZp
cnR1YWwgS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gTm9uZTsgfQogCisjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gIlZpZGVvVHJhY2tQcml2YXRlIjsgfQorI2VuZGlmCisKIHByb3RlY3RlZDoKICAg
ICBWaWRlb1RyYWNrUHJpdmF0ZSgpID0gZGVmYXVsdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwubW0JKHJldmlzaW9uIDIyMjAwNykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BVlRyYWNrUHJp
dmF0ZUFWRk9iakNJbXBsLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW1w
b3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJJdGVtLmg+CiAjaW1wb3J0IDxBVkZvdW5kYXRpb24v
QVZQbGF5ZXJJdGVtVHJhY2suaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8
cGFsL0xvZ2dlci5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAKIEBjbGFzcyBBVk1l
ZGlhU2VsZWN0aW9uT3B0aW9uOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAJKHJldmlzaW9uIDIyMjAwNykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRN
ZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICsz
MCw3IEBACiAKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSA8Q29y
ZU1lZGlhL0NvcmVNZWRpYS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTc2LDEyICs3NywxMiBAQCB2b2lkIEluYmFu
ZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjo6CiAgICAgaWYgKHRpbWUgPj0gbV9jdXJyZW50
Q3VlU3RhcnRUaW1lKSB7CiAgICAgICAgIGlmIChjbGllbnQoKSkgewogICAgICAgICAgICAgZm9y
IChhdXRvJiBwYXJ0aWFsQ3VlIDogbV9pbmNvbXBsZXRlQ3VlcykgewotICAgICAgICAgICAgICAg
IExPRyhNZWRpYSwgIkluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjo6dXBkYXRlUGVu
ZGluZ0N1ZUVuZFRpbWVzKCVwKSAtIHVwZGF0aW5nIGN1ZTogc3RhcnQ9JXMsIGVuZD0lcyIsIHRo
aXMsIHRvU3RyaW5nKHBhcnRpYWxDdWUuc3RhcnRUaW1lKS51dGY4KCkuZGF0YSgpLCB0b1N0cmlu
Zyh0aW1lKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICBJTkZPX0xPRyhMT0dJREVO
VElGSUVSLCAidXBkYXRpbmcgY3VlOiBzdGFydCA9ICIsIHBhcnRpYWxDdWUuc3RhcnRUaW1lLCAi
LCBlbmQgPSAiLCB0aW1lKTsKICAgICAgICAgICAgICAgICBjbGllbnQoKS0+dXBkYXRlRGF0YUN1
ZShwYXJ0aWFsQ3VlLnN0YXJ0VGltZSwgdGltZSwgKnBhcnRpYWxDdWUuY3VlRGF0YSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UKLSAgICAgICAgTE9HKE1lZGlhLCAiSW5i
YW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjp1cGRhdGVQZW5kaW5nQ3VlRW5kVGltZXMg
bmVnYXRpdmUgbGVuZ3RoIGN1ZShzKSBpZ25vcmVkOiBzdGFydD0lcywgZW5kPSVzXG4iLCB0b1N0
cmluZyhtX2N1cnJlbnRDdWVTdGFydFRpbWUpLnV0ZjgoKS5kYXRhKCksIHRvU3RyaW5nKHRpbWUp
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBXQVJOSU5HX0xPRyhMT0dJREVOVElGSUVSLCAibmVn
YXRpdmUgbGVuZ3RoIGN1ZShzKSBpZ25vcmVkOiBzdGFydCA9ICIsIG1fY3VycmVudEN1ZVN0YXJ0
VGltZSwgIiwgZW5kID0gIiwgdGltZSk7CiAKICAgICBtX2luY29tcGxldGVDdWVzLnNocmluaygw
KTsKICAgICBtX2N1cnJlbnRDdWVTdGFydFRpbWUgPSBNZWRpYVRpbWU6Onplcm9UaW1lKCk7CkBA
IC05Miw3ICs5Myw3IEBAIHZvaWQgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjoK
IHZvaWQgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjpmbHVzaFBhcnRpYWxDdWVz
KCkKIHsKICAgICBpZiAobV9jdXJyZW50Q3VlU3RhcnRUaW1lICYmIG1faW5jb21wbGV0ZUN1ZXMu
c2l6ZSgpKQotICAgICAgICBMT0coTWVkaWEsICJJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZh
dGVBVkY6OnJlc2V0Q3VlVmFsdWVzIGZsdXNoaW5nIGluY29tcGxldGUgZGF0YSBmb3IgY3Vlczog
c3RhcnQ9JXNcbiIsIHRvU3RyaW5nKG1fY3VycmVudEN1ZVN0YXJ0VGltZSkudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJmbHVzaGluZyBpbmNvbXBsZXRl
IGRhdGEgZm9yIGN1ZXM6IHN0YXJ0ID0gIiwgbV9jdXJyZW50Q3VlU3RhcnRUaW1lKTsKIAogICAg
IGlmIChjbGllbnQoKSkgewogICAgICAgICBmb3IgKGF1dG8mIHBhcnRpYWxDdWUgOiBtX2luY29t
cGxldGVDdWVzKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRh
ZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4dFRy
YWNrUHJpdmF0ZUFWRi5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCwxMCBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRihLaW5kLCBD
dWVGb3JtYXQsIGNvbnN0IEF0b21pY1N0cmluZyYpOwogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
IkluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRiI7IH0KKyNlbmRpZgorCiAgICAgS2lu
ZCBtX2tpbmQ7CiAgICAgQXRvbWljU3RyaW5nIG1faWQ7CiAgICAgQXRvbWljU3RyaW5nIG1faW5C
YW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAJKHJldmlzaW9uIDIyMjAwNykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTAgKzI4LDEwIEBACiAKICNp
ZiBFTkFCTEUoVklERU8pICYmIChVU0UoQVZGT1VOREFUSU9OKSB8fCBQTEFURk9STShJT1MpKQog
Ci0jaW5jbHVkZSAiQ29yZU1lZGlhU29mdExpbmsuaCIKICNpbmNsdWRlICJJU09WVFRDdWUuaCIK
ICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiTWVkaWFUaW1lQVZG
b3VuZGF0aW9uLmgiCiAjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUg
PHJ1bnRpbWUvRGF0YVZpZXcuaD4KQEAgLTQzLDYgKzQzLDggQEAKICNpbmNsdWRlIDx3dGYvdW5p
Y29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5o
PgogCisjaW5jbHVkZSAiQ29yZU1lZGlhU29mdExpbmsuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBBVkZJbmJhbmRUcmFja1BhcmVudDo6fkFWRkluYmFuZFRyYWNrUGFyZW50KCkKQEAgLTMx
NSwxMSArMzE3LDEzIEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0MK
IAogdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQXR0cmlidXRlZFN0cmlu
Z3MoQ0ZBcnJheVJlZiBhdHRyaWJ1dGVkU3RyaW5ncywgY29uc3QgTWVkaWFUaW1lJiB0aW1lKQog
ewotICAgIExPRyhNZWRpYSwgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWUg
LSAlbGkgY3VlcyBhdCB0aW1lICVzXG4iLCBhdHRyaWJ1dGVkU3RyaW5ncyA/IENGQXJyYXlHZXRD
b3VudChhdHRyaWJ1dGVkU3RyaW5ncykgOiAwLCB0b1N0cmluZyh0aW1lKS51dGY4KCkuZGF0YSgp
KTsKKyAgICBDRkluZGV4IGNvdW50ID0gYXR0cmlidXRlZFN0cmluZ3MgPyBDRkFycmF5R2V0Q291
bnQoYXR0cmlidXRlZFN0cmluZ3MpIDogMDsKKworICAgIGlmIChjb3VudCkKKyAgICAgICAgREVC
VUdfTE9HKExPR0lERU5USUZJRVIsICJhZGRlZCAiLCBjb3VudCwgY291bnQgPiAxID8gIiBjdWVz
IiA6ICIgY3VlIiwgIiBhdCB0aW1lICIsIHRpbWUpOwogCiAgICAgVmVjdG9yPFJlZjxHZW5lcmlj
Q3VlRGF0YT4+IGFycml2aW5nQ3VlczsKLSAgICBpZiAoYXR0cmlidXRlZFN0cmluZ3MpIHsKLSAg
ICAgICAgQ0ZJbmRleCBjb3VudCA9IENGQXJyYXlHZXRDb3VudChhdHRyaWJ1dGVkU3RyaW5ncyk7
CisgICAgaWYgKGNvdW50KSB7CiAgICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGNvdW50
OyBpKyspIHsKICAgICAgICAgICAgIENGQXR0cmlidXRlZFN0cmluZ1JlZiBhdHRyaWJ1dGVkU3Ry
aW5nID0gc3RhdGljX2Nhc3Q8Q0ZBdHRyaWJ1dGVkU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVB
dEluZGV4KGF0dHJpYnV0ZWRTdHJpbmdzLCBpKSk7CiAKQEAgLTMzOSw4ICszNDMsNiBAQCB2b2lk
IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NBCiAgICAgICAgICAgICBpZiAoY3Vl
RGF0YS0+cG9zaXRpb24oKSA+PSAwICYmIGN1ZURhdGEtPnNpemUoKSA+IDApCiAgICAgICAgICAg
ICAgICAgY3VlRGF0YS0+c2V0UG9zaXRpb24oY3VlRGF0YS0+cG9zaXRpb24oKSAtIGN1ZURhdGEt
PnNpemUoKSAvIDIpOwogCi0gICAgICAgICAgICBMT0coTWVkaWEsICJJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGOjpwcm9jZXNzQ3VlKCVwKSAtIGNvbnNpZGVyaW5nIGN1ZSAoXCIlc1wiKSBmb3Ig
dGltZSA9ICVzLCBwb3NpdGlvbiA9ICAlLjJmLCBsaW5lID0gICUuMmYiLCB0aGlzLCBjdWVEYXRh
LT5jb250ZW50KCkudXRmOCgpLmRhdGEoKSwgdG9TdHJpbmcoY3VlRGF0YS0+c3RhcnRUaW1lKCkp
LnV0ZjgoKS5kYXRhKCksIGN1ZURhdGEtPnBvc2l0aW9uKCksIGN1ZURhdGEtPmxpbmUoKSk7Ci0K
ICAgICAgICAgICAgIGN1ZURhdGEtPnNldFN0YXR1cyhHZW5lcmljQ3VlRGF0YTo6UGFydGlhbCk7
CiAKICAgICAgICAgICAgIGFycml2aW5nQ3Vlcy5hcHBlbmQoV1RGTW92ZShjdWVEYXRhKSk7CkBA
IC0zNTksNyArMzYxLDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNz
QQogICAgICAgICAgICAgICAgICAgICBpZiAoIWFycml2aW5nQ3VlLT5kb2VzRXh0ZW5kQ3VlRGF0
YSgqY3VlRGF0YSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBub25FeHRlbnNpb25DdWVzLmFw
cGVuZChXVEZNb3ZlKGFycml2aW5nQ3VlKSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgICAgIExPRyhNZWRpYSwgIkluYmFuZFRleHRUcmFja1ByaXZhdGVB
VkY6OnByb2Nlc3NDdWUoJXApIC0gZm91bmQgYW4gZXh0ZW5zaW9uIGN1ZSAoXCIlc1wiKSBmb3Ig
dGltZSA9ICUuMmYsIGVuZCA9ICUuMmYsIHBvc2l0aW9uID0gICUuMmYsIGxpbmUgPSAgJS4yZiIs
IHRoaXMsIGFycml2aW5nQ3VlLT5jb250ZW50KCkudXRmOCgpLmRhdGEoKSwgYXJyaXZpbmdDdWUt
PnN0YXJ0VGltZSgpLnRvRG91YmxlKCksIGFycml2aW5nQ3VlLT5lbmRUaW1lKCkudG9Eb3VibGUo
KSwgYXJyaXZpbmdDdWUtPnBvc2l0aW9uKCksIGFycml2aW5nQ3VlLT5saW5lKCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsICJmb3VuZCBhbiBleHRl
bnNpb24gY3VlOiAiLCAqY3VlRGF0YSk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICAgICAgYm9vbCBjdXJyZW50Q3VlSXNFeHRlbmRlZCA9IChhcnJpdmluZ0N1ZXMuc2l6ZSgpICE9
IG5vbkV4dGVuc2lvbkN1ZXMuc2l6ZSgpKTsKQEAgLTM3MywxNiArMzc1LDE3IEBAIHZvaWQgSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0EKICAgICAgICAgICAgICAgICAgICAgY3Vl
RGF0YS0+c2V0RW5kVGltZShtX2N1cnJlbnRDdWVFbmRUaW1lKTsKICAgICAgICAgICAgICAgICAg
ICAgY3VlRGF0YS0+c2V0U3RhdHVzKEdlbmVyaWNDdWVEYXRhOjpDb21wbGV0ZSk7CiAKLSAgICAg
ICAgICAgICAgICAgICAgTE9HKE1lZGlhLCAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJv
Y2Vzc0N1ZSglcCkgLSB1cGRhdGluZyBjdWUgXCIlc1wiOiBzdGFydD0lLjJmLCBlbmQ9JS4yZiIs
IHRoaXMsIGN1ZURhdGEtPmNvbnRlbnQoKS51dGY4KCkuZGF0YSgpLCBjdWVEYXRhLT5zdGFydFRp
bWUoKS50b0RvdWJsZSgpLCBtX2N1cnJlbnRDdWVFbmRUaW1lLnRvRG91YmxlKCkpOworICAgICAg
ICAgICAgICAgICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgInVwZGF0aW5nIGN1ZSBzdGFy
dCA9ICIsIGN1ZURhdGEtPnN0YXJ0VGltZSgpLCAiLCBlbmQgPSAiLCBjdWVEYXRhLT5lbmRUaW1l
KCksICIsIGNvbnRlbnQgPSAiLCBjdWVEYXRhLT5jb250ZW50KCkpOworCiAgICAgICAgICAgICAg
ICAgICAgIGNsaWVudCgpLT51cGRhdGVHZW5lcmljQ3VlKCpjdWVEYXRhKTsKICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGFzc3VtZSB0
aGF0IHRoZSBpbXBsaWNpdCBkdXJhdGlvbiBpcyBpbnZhbGlkIGZvciBjdWVzIGRlbGl2ZXJlZCBk
dXJpbmcgYSBzZWVrIGJlY2F1c2UgdGhlIEFWRiBkZWNvZGUgcGlwZWxpbmUgbWF5IG5vdAogICAg
ICAgICAgICAgICAgICAgICAvLyBzZWUgZXZlcnkgY3VlLCBzbyBETyBOT1QgdXBkYXRlIGN1ZSBk
dXJhdGlvbiB3aGlsZSBzZWVraW5nLgotICAgICAgICAgICAgICAgICAgICBMT0coTWVkaWEsICJJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQ3VlKCVwKSAtIGlnbm9yaW5nIGN1ZSBk
ZWxpdmVyZWQgZHVyaW5nIHNlZWs6IHN0YXJ0PSVzLCBlbmQ9JXMsIGNvbnRlbnQ9XCIlc1wiIiwg
dGhpcywgdG9TdHJpbmcoY3VlRGF0YS0+c3RhcnRUaW1lKCkpLnV0ZjgoKS5kYXRhKCksIHRvU3Ry
aW5nKG1fY3VycmVudEN1ZUVuZFRpbWUpLnV0ZjgoKS5kYXRhKCksIGN1ZURhdGEtPmNvbnRlbnQo
KS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICAgICAgREVCVUdfTE9HKExPR0lERU5U
SUZJRVIsICJpZ25vcmluZyBjdWUgZGVsaXZlcmVkIGR1cmluZyBzZWVrOiAiLCAqY3VlRGF0YSk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgIExPRyhNZWRpYSwgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWUg
bmVnYXRpdmUgbGVuZ3RoIGN1ZShzKSBpZ25vcmVkOiBzdGFydD0lcywgZW5kPSVzXG4iLCAgdG9T
dHJpbmcobV9jdXJyZW50Q3VlU3RhcnRUaW1lKS51dGY4KCkuZGF0YSgpLCB0b1N0cmluZyhtX2N1
cnJlbnRDdWVFbmRUaW1lKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIEVSUk9SX0xPRyhM
T0dJREVOVElGSUVSLCAibmVnYXRpdmUgbGVuZ3RoIGN1ZShzKTogc3RhcnQgPSAiLCBtX2N1cnJl
bnRDdWVTdGFydFRpbWUsICIsIGVuZCA9ICIsIG1fY3VycmVudEN1ZUVuZFRpbWUpOwogCiAgICAg
ICAgIHJlbW92ZUNvbXBsZXRlZEN1ZXMoKTsKICAgICB9CkBAIC0zOTQsOSArMzk3LDcgQEAgdm9p
ZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQQogCiAgICAgZm9yIChhdXRvJiBj
dWVEYXRhIDogYXJyaXZpbmdDdWVzKSB7CiAgICAgICAgIG1fY3Vlcy5hcHBlbmQoY3VlRGF0YS5w
dHIoKSk7Ci0gICAgICAgIAotICAgICAgICBMT0coTWVkaWEsICJJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGOjpwcm9jZXNzQ3VlKCVwKSAtIGFkZGluZyBjdWUgXCIlc1wiIGZvciB0aW1lID0gJS4y
ZiwgZW5kID0gJS4yZiwgcG9zaXRpb24gPSAgJS4yZiwgbGluZSA9ICAlLjJmIiwgdGhpcywgY3Vl
RGF0YS0+Y29udGVudCgpLnV0ZjgoKS5kYXRhKCksIGN1ZURhdGEtPnN0YXJ0VGltZSgpLnRvRG91
YmxlKCksIGN1ZURhdGEtPmVuZFRpbWUoKS50b0RvdWJsZSgpLCBjdWVEYXRhLT5wb3NpdGlvbigp
LCBjdWVEYXRhLT5saW5lKCkpOwotCisgICAgICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAi
YWRkaW5nIGN1ZTogIiwgY3VlRGF0YS5nZXQoKSk7CiAgICAgICAgIGNsaWVudCgpLT5hZGRHZW5l
cmljQ3VlKGN1ZURhdGEpOwogICAgIH0KIApAQCAtNDIzLDEwICs0MjQsMTEgQEAgdm9pZCBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGOjpyZW1vdmVDbwogICAgIGlmIChjbGllbnQoKSkgewogICAg
ICAgICBsb25nIGN1cnJlbnRDdWUgPSBtX2N1ZXMuc2l6ZSgpIC0gMTsKICAgICAgICAgZm9yICg7
IGN1cnJlbnRDdWUgPj0gMDsgLS1jdXJyZW50Q3VlKSB7Ci0gICAgICAgICAgICBpZiAobV9jdWVz
W2N1cnJlbnRDdWVdLT5zdGF0dXMoKSAhPSBHZW5lcmljQ3VlRGF0YTo6Q29tcGxldGUpCisgICAg
ICAgICAgICBhdXRvJiBjdWUgPSBtX2N1ZXNbY3VycmVudEN1ZV07CisgICAgICAgICAgICBpZiAo
Y3VlLT5zdGF0dXMoKSAhPSBHZW5lcmljQ3VlRGF0YTo6Q29tcGxldGUpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAKLSAgICAgICAgICAgIExPRyhNZWRpYSwgIkluYmFuZFRleHRUcmFja1By
aXZhdGVBVkY6OnJlbW92ZUNvbXBsZXRlZEN1ZXMoJXApIC0gcmVtb3ZpbmcgY3VlIFwiJXNcIjog
c3RhcnQ9JS4yZiwgZW5kPSUuMmYiLCB0aGlzLCBtX2N1ZXNbY3VycmVudEN1ZV0tPmNvbnRlbnQo
KS51dGY4KCkuZGF0YSgpLCBtX2N1ZXNbY3VycmVudEN1ZV0tPnN0YXJ0VGltZSgpLnRvRG91Ymxl
KCksIG1fY3Vlc1tjdXJyZW50Q3VlXS0+ZW5kVGltZSgpLnRvRG91YmxlKCkpOworICAgICAgICAg
ICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsICJyZW1vdmluZyBjdWU6ICIsICpjdWUpOwogCiAg
ICAgICAgICAgICBtX2N1ZXMucmVtb3ZlKGN1cnJlbnRDdWUpOwogICAgICAgICB9CkBAIC00NDIs
NyArNDQ0LDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpyZW1vdmVDbwogdm9p
ZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpyZXNldEN1ZVZhbHVlcygpCiB7CiAgICAgaWYg
KG1fY3VycmVudEN1ZUVuZFRpbWUgJiYgbV9jdWVzLnNpemUoKSkKLSAgICAgICAgTE9HKE1lZGlh
LCAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cmVzZXRDdWVWYWx1ZXMgZmx1c2hpbmcgZGF0
YSBmb3IgY3Vlczogc3RhcnQ9JXNcbiIsIHRvU3RyaW5nKG1fY3VycmVudEN1ZVN0YXJ0VGltZSku
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJmbHVzaGlu
ZyBkYXRhIGZvciBjdWVzOiBzdGFydCA9ICIsIG1fY3VycmVudEN1ZVN0YXJ0VGltZSk7CiAKICAg
ICBpZiAoYXV0byogY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpIHsKICAgICAgICAgZm9yIChhdXRv
JiBjdWUgOiBtX2N1ZXMpCkBAIC00NzgsNyArNDgwLDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGOjpwcm9jZXNzTgogICAgIGlmICghY291bnQpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIExPRyhNZWRpYSwgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NOYXRpdmVT
YW1wbGVzIC0gJWxpIHNhbXBsZSBidWZmZXJzIGF0IHRpbWUgJS4yZlxuIiwgY291bnQsIHByZXNl
bnRhdGlvblRpbWUudG9Eb3VibGUoKSk7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgY291
bnQsICIgc2FtcGxlIGJ1ZmZlcnMgYXQgdGltZSAiLCBwcmVzZW50YXRpb25UaW1lKTsKIAogICAg
IGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgICAgUmVmUHRyPEFy
cmF5QnVmZmVyPiBidWZmZXI7CkBAIC00OTAsMjYgKzQ5MiwxNCBAQCB2b2lkIEluYmFuZFRleHRU
cmFja1ByaXZhdGVBVkY6OnByb2Nlc3NOCiAgICAgICAgIFN0cmluZyB0eXBlID0gSVNPQm94Ojpw
ZWVrVHlwZShidWZmZXIuZ2V0KCkpOwogICAgICAgICBzaXplX3QgYm94TGVuZ3RoID0gSVNPQm94
OjpwZWVrTGVuZ3RoKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGlmIChib3hMZW5ndGggPiBidWZm
ZXItPmJ5dGVMZW5ndGgoKSkgewotICAgICAgICAgICAgTE9HKE1lZGlhLCAiSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc05hdGl2ZVNhbXBsZXMoJXApIC0gRVJST1I6IGNodW5rICcl
cycgc2l6ZSAoJXp1KSBsYXJnZXIgdGhhbiBidWZmZXIgbGVuZ3RoICgldSkhISIsIHRoaXMsIHR5
cGUudXRmOCgpLmRhdGEoKSwgYm94TGVuZ3RoLCBidWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAg
ICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgImNodW5rICB0eXBlID0gJyIsIHR5cGUs
ICInLCBzaXplID0gIiwgYm94TGVuZ3RoLCAiIGxhcmdlciB0aGFuIGJ1ZmZlciBsZW5ndGghIik7
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIExPRyhNZWRpYSwg
IkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NOYXRpdmVTYW1wbGVzKCVwKSAtIGNo
dW5rIHR5cGUgPSAnJXMnLCBzaXplID0gJXp1IiwgdGhpcywgdHlwZS51dGY4KCkuZGF0YSgpLCBi
b3hMZW5ndGgpOwotCi0gICAgICAgIGlmICh0eXBlID09IElTT1dlYlZUVEN1ZTo6Ym94VHlwZSgp
KSB7Ci0gICAgICAgICAgICBJU09XZWJWVFRDdWUgY3VlRGF0YSA9IElTT1dlYlZUVEN1ZShwcmVz
ZW50YXRpb25UaW1lLCBkdXJhdGlvbiwgYnVmZmVyLmdldCgpKTsKLSAgICAgICAgICAgIExPRyhN
ZWRpYSwgIiAgICBzYW1wbGUgcHJlc2VudGF0aW9uIHRpbWUgPSAlLjJmLCBkdXJhdGlvbiA9ICUu
MmYiLCBjdWVEYXRhLnByZXNlbnRhdGlvblRpbWUoKS50b0RvdWJsZSgpLCBjdWVEYXRhLmR1cmF0
aW9uKCkudG9Eb3VibGUoKSk7Ci0gICAgICAgICAgICBMT0coTWVkaWEsICIgICAgaWQgPSBcIiVz
XCIsIHNldHRpbmdzID0gXCIlc1wiLCBjdWUgdGV4dCA9IFwiJXNcIiIsIGN1ZURhdGEuaWQoKS51
dGY4KCkuZGF0YSgpLCBjdWVEYXRhLnNldHRpbmdzKCkudXRmOCgpLmRhdGEoKSwgY3VlRGF0YS5j
dWVUZXh0KCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBMT0coTWVkaWEsICIgICAgc291
cmNlSUQgPSBcIiVzXCIsIG9yaWdpbmFsU3RhcnRUaW1lID0gXCIlc1wiIiwgY3VlRGF0YS5zb3Vy
Y2VJRCgpLnV0ZjgoKS5kYXRhKCksIGN1ZURhdGEub3JpZ2luYWxTdGFydFRpbWUoKS51dGY4KCku
ZGF0YSgpKTsKLQotICAgICAgICAgICAgY2xpZW50KCktPnBhcnNlV2ViVlRUQ3VlRGF0YShjdWVE
YXRhKTsKLSAgICAgICAgfQorICAgICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgImNodW5r
ICB0eXBlID0gJyIsIHR5cGUsICInLCBzaXplID0gIiwgYm94TGVuZ3RoKTsKIAogICAgICAgICBk
byB7Ci0gICAgICAgICAgICBpZiAobV9oYXZlUmVwb3J0ZWRWVFRIZWFkZXIpCi0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIGlmICghZm9ybWF0RGVzY3JpcHRpb24pCisgICAg
ICAgICAgICBpZiAobV9oYXZlUmVwb3J0ZWRWVFRIZWFkZXIgfHwgIWZvcm1hdERlc2NyaXB0aW9u
KQogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBDRkRpY3Rpb25hcnlSZWYg
ZXh0ZW5zaW9ucyA9IENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNpb25zKGZvcm1hdERlc2Ny
aXB0aW9uKTsKQEAgLTUzNCwxMSArNTI0LDE3IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRjo6cHJvY2Vzc04KICAgICAgICAgICAgIGhlYWRlci5hcHBlbmQocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oQ0ZEYXRhR2V0Qnl0ZVB0cih3ZWJ2dHRIZWFkZXJEYXRh
KSksIGxlbmd0aCk7CiAgICAgICAgICAgICBoZWFkZXIuYXBwZW5kKCJcblxuIik7CiAKLSAgICAg
ICAgICAgIExPRyhNZWRpYSwgIiAgICB2dHQgaGVhZGVyID0gXG4lcyIsIGhlYWRlci50b1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIs
ICJWVFQgaGVhZGVyID0gIiwgJmhlYWRlcik7CiAgICAgICAgICAgICBjbGllbnQoKS0+cGFyc2VX
ZWJWVFRGaWxlSGVhZGVyKGhlYWRlci50b1N0cmluZygpKTsKICAgICAgICAgICAgIG1faGF2ZVJl
cG9ydGVkVlRUSGVhZGVyID0gdHJ1ZTsKICAgICAgICAgfSB3aGlsZSAoMCk7CiAKKyAgICAgICAg
aWYgKHR5cGUgPT0gSVNPV2ViVlRUQ3VlOjpib3hUeXBlKCkpIHsKKyAgICAgICAgICAgIElTT1dl
YlZUVEN1ZSBjdWVEYXRhID0gSVNPV2ViVlRUQ3VlKHByZXNlbnRhdGlvblRpbWUsIGR1cmF0aW9u
LCBidWZmZXIuZ2V0KCkpOworICAgICAgICAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsICJz
YW1wbGUgcHJlc2VudGF0aW9uIHRpbWUgPSAiLCBjdWVEYXRhLnByZXNlbnRhdGlvblRpbWUoKSwg
IiwgZHVyYXRpb24gPSAiLCBjdWVEYXRhLmR1cmF0aW9uKCksICIsIGlkID0gJyIsIGN1ZURhdGEu
aWQoKSwgIicsIHNldHRpbmdzID0gIiwgY3VlRGF0YS5zZXR0aW5ncygpLCAiLCBjdWUgdGV4dCA9
ICIsIGN1ZURhdGEuY3VlVGV4dCgpLCAiLCBzb3VyY2VJRCA9ICIsIGN1ZURhdGEuc291cmNlSUQo
KSwgIiwgb3JpZ2luYWxTdGFydFRpbWUgPSAiLCBjdWVEYXRhLm9yaWdpbmFsU3RhcnRUaW1lKCkp
OworICAgICAgICAgICAgY2xpZW50KCktPnBhcnNlV2ViVlRUQ3VlRGF0YShjdWVEYXRhKTsKKyAg
ICAgICAgfQorCiAgICAgICAgIG1fc2FtcGxlSW5wdXRCdWZmZXIucmVtb3ZlKDAsIGJveExlbmd0
aCk7CiAgICAgfQogfQpAQCAtNTU1LDcgKzU1MSw3IEBAIGJvb2wgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWRjo6cmVhZE5hdGkKICAgICBDTVNhbXBsZVRpbWluZ0luZm8gdGltaW5nSW5mbzsKICAg
ICBPU1N0YXR1cyBzdGF0dXMgPSBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm8oc2Ft
cGxlQnVmZmVyLCBpbmRleCwgJnRpbWluZ0luZm8pOwogICAgIGlmIChzdGF0dXMpIHsKLSAgICAg
ICAgTE9HKE1lZGlhLCAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cmVhZE5hdGl2ZVNhbXBs
ZUJ1ZmZlciglcCkgLSBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm8gcmV0dXJuZWQg
ZXJyb3IgJXggZm9yIHNhbXBsZSAlbGkiLCB0aGlzLCBzdGF0aWNfY2FzdDxpbnQ+KHN0YXR1cyks
IGluZGV4KTsKKyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJDTVNhbXBsZUJ1ZmZl
ckdldFNhbXBsZVRpbWluZ0luZm8gcmV0dXJuZWQgZXJyb3IgIiwgc3RhdHVzLCAiJyBmb3Igc2Ft
cGxlICIsIGluZGV4KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNTY0LDcg
KzU2MCw3IEBAIGJvb2wgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cmVhZE5hdGkKICAgICBD
TUJsb2NrQnVmZmVyUmVmIGJsb2NrQnVmZmVyID0gQ01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVy
KHNhbXBsZUJ1ZmZlcik7CiAgICAgc2l6ZV90IGJ1ZmZlckxlbmd0aCA9IENNQmxvY2tCdWZmZXJH
ZXREYXRhTGVuZ3RoKGJsb2NrQnVmZmVyKTsKICAgICBpZiAoYnVmZmVyTGVuZ3RoIDwgSVNPQm94
Ojpib3hIZWFkZXJTaXplKCkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRjo6cmVhZE5hdGl2ZVNhbXBsZUJ1ZmZlciglcCkgLSBFUlJPUjogQ01TYW1wbGVC
dWZmZXIgc2l6ZSBsZW5ndGggdW5leHBlY3RlZGx5IHNtYWxsICglenUpISEiLCB0aGlzLCBidWZm
ZXJMZW5ndGgpOworICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIkNNU2FtcGxlQnVm
ZmVyIHNpemUgbGVuZ3RoIHVuZXhwZWN0ZWRseSBzbWFsbDogIiwgYnVmZmVyTGVuZ3RoKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCShyZXZpc2lvbiAyMjIwMDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWRi5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4NiwxMSBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBwcm9jZXNzTmF0aXZlU2FtcGxlcyhDRkFycmF5UmVmLCBjb25zdCBNZWRpYVRpbWUm
KTsKICAgICB2b2lkIHJlbW92ZUNvbXBsZXRlZEN1ZXMoKTsKIAorcHJpdmF0ZToKKyNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRiI7IH0KKyNlbmRpZgorCiAg
ICAgTWVkaWFUaW1lIG1fY3VycmVudEN1ZVN0YXJ0VGltZTsKICAgICBNZWRpYVRpbWUgbV9jdXJy
ZW50Q3VlRW5kVGltZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCShyZXZpc2lvbiAy
MjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zMzM5LDYgKzMzMzksNyBAQCAtICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5
UGF0aCBvCiAKICAgICBib29sIHdpbGxDaGFuZ2UgPSBbW2NoYW5nZSB2YWx1ZUZvcktleTpOU0tl
eVZhbHVlQ2hhbmdlTm90aWZpY2F0aW9uSXNQcmlvcktleV0gYm9vbFZhbHVlXTsKICAgICBib29s
IHNob3VsZExvZ1ZhbHVlID0gdHJ1ZTsKKyAgICBib29sIHNob3VsZExvZyA9IHRydWU7CiAgICAg
V1RGOjpGdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbjsKIAogICAgIGlmIChjb250ZXh0ID09IE1l
ZGlhUGxheWVyQVZGb3VuZGF0aW9uT2JzZXJ2YXRpb25Db250ZXh0QVZQbGF5ZXJMYXllcikgewpA
QCAtMzM3NSwxMCArMzM3NiwxMCBAQCAtICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5
UGF0aCBvCiAgICAgICAgICAgICBzaG91bGRMb2dWYWx1ZSA9IGZhbHNlOwogICAgICAgICB9IGVs
c2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImxvYWRlZFRpbWVSYW5nZXMiXSkgewog
ICAgICAgICAgICAgZnVuY3Rpb24gPSBzdGQ6OmJpbmQoJk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OmxvYWRlZFRpbWVSYW5nZXNEaWRDaGFuZ2UsIG1fY2FsbGJhY2ssIFJldGFp
blB0cjxOU0FycmF5PihuZXdWYWx1ZSkpOwotICAgICAgICAgICAgc2hvdWxkTG9nVmFsdWUgPSBm
YWxzZTsKKyAgICAgICAgICAgIHNob3VsZExvZyA9IGZhbHNlOwogICAgICAgICB9IGVsc2UgaWYg
KFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInNlZWthYmxlVGltZVJhbmdlcyJdKSB7CiAgICAg
ICAgICAgICBmdW5jdGlvbiA9IHN0ZDo6YmluZCgmTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6c2Vla2FibGVUaW1lUmFuZ2VzRGlkQ2hhbmdlLCBtX2NhbGxiYWNrLCBSZXRhaW5Q
dHI8TlNBcnJheT4obmV3VmFsdWUpKTsKLSAgICAgICAgICAgIHNob3VsZExvZ1ZhbHVlID0gZmFs
c2U7CisgICAgICAgICAgICBzaG91bGRMb2cgPSBmYWxzZTsKICAgICAgICAgfSBlbHNlIGlmIChb
a2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJ0cmFja3MiXSkgewogICAgICAgICAgICAgZnVuY3Rp
b24gPSBzdGQ6OmJpbmQoJk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnRyYWNr
c0RpZENoYW5nZSwgbV9jYWxsYmFjaywgUmV0YWluUHRyPE5TQXJyYXk+KG5ld1ZhbHVlKSk7CiAg
ICAgICAgICAgICBzaG91bGRMb2dWYWx1ZSA9IGZhbHNlOwpAQCAtMzQxNiw3ICszNDE3LDcgQEAg
LSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtleVBhdGggbwogICAgIH0KIAogI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAotICAgIGlmIChtX2NhbGxiYWNrLT5sb2dnZXIoKS53aWxsTG9n
KG1fY2FsbGJhY2stPmxvZ0NoYW5uZWwoKSwgV1RGTG9nTGV2ZWxEZWJ1ZykpIHsKKyAgICBpZiAo
c2hvdWxkTG9nICYmIG1fY2FsbGJhY2stPmxvZ2dlcigpLndpbGxMb2cobV9jYWxsYmFjay0+bG9n
Q2hhbm5lbCgpLCBXVEZMb2dMZXZlbERlYnVnKSkgewogCiAgICAgICAgIGlmICh3aWxsQ2hhbmdl
KQogICAgICAgICAgICAgbV9jYWxsYmFjay0+bG9nZ2VyKCkuZGVidWcobV9jYWxsYmFjay0+bG9n
Q2hhbm5lbCgpLCBQQUw6OkxvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXIoIk1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbiIsICJvYnNlcnZlVmFsdWVGb3JLZXlQYXRoIiwgbV9jYWxsYmFjay0+
bG9nSWRlbnRpZmllcigpKSwgIndpbGwgY2hhbmdlICciLCBba2V5UGF0aCBVVEY4U3RyaW5nXSwg
IiciKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtQ29jb2EuY3BwCShyZXZpc2lvbiAyMjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbi5o
IgogI2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKKyNpbmNsdWRlIDxwYWwvTG9nZ2VyLmg+CiAKICNpbmNsdWRlICJDb3JlTWVkaWFTb2Z0
TGluay5oIgogCkBAIC0xMTQsMTMgKzExNSwxMyBAQCBBdWRpb0NvbXBvbmVudEluc3RhbmNlIEF1
ZGlvVHJhY2tQcml2YXRlCiAgICAgQXVkaW9Db21wb25lbnQgaW9Db21wb25lbnQgPSBBdWRpb0Nv
bXBvbmVudEZpbmROZXh0KG51bGxwdHIsICZpb1VuaXREZXNjcmlwdGlvbik7CiAgICAgQVNTRVJU
KGlvQ29tcG9uZW50KTsKICAgICBpZiAoIWlvQ29tcG9uZW50KSB7Ci0gICAgICAgIExPRyhNZWRp
YSwgIkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6Y3JlYXRlQXVkaW9Vbml0KCVw
KSB1bmFibGUgdG8gZmluZCByZW1vdGUgSU8gdW5pdCBjb21wb25lbnQiLCB0aGlzKTsKKyAgICAg
ICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJ1bmFibGUgdG8gZmluZCByZW1vdGUgSU8gdW5p
dCBjb21wb25lbnQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgT1NT
dGF0dXMgZXJyID0gQXVkaW9Db21wb25lbnRJbnN0YW5jZU5ldyhpb0NvbXBvbmVudCwgJnJlbW90
ZUlPVW5pdCk7CiAgICAgaWYgKGVycikgewotICAgICAgICBMT0coTWVkaWEsICJBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OmNyZWF0ZUF1ZGlvVW5pdCglcCkgdW5hYmxlIHRvIG9w
ZW4gdnBpbyB1bml0LCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZl
cnIpOworICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgInVuYWJsZSB0byBvcGVuIHZw
aW8gdW5pdCwgZXJyb3IgPSAiLCBlcnIsICIgKCIsIChjb25zdCBjaGFyKikmZXJyLCAiKSIpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTEyOCw3ICsxMjksNyBAQCBBdWRp
b0NvbXBvbmVudEluc3RhbmNlIEF1ZGlvVHJhY2tQcml2YXRlCiAgICAgVUludDMyIHBhcmFtID0g
MTsKICAgICBlcnIgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShyZW1vdGVJT1VuaXQsIGtBdWRpb091
dHB1dFVuaXRQcm9wZXJ0eV9FbmFibGVJTywga0F1ZGlvVW5pdFNjb3BlX091dHB1dCwgMCwgJnBh
cmFtLCBzaXplb2YocGFyYW0pKTsKICAgICBpZiAoZXJyKSB7Ci0gICAgICAgIExPRyhNZWRpYSwg
IkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6Y3JlYXRlQXVkaW9Vbml0KCVwKSB1
bmFibGUgdG8gZW5hYmxlIHZwaW8gdW5pdCBvdXRwdXQsIGVycm9yICVkICglLjRzKSIsIHRoaXMs
IChpbnQpZXJyLCAoY2hhciopJmVycik7CisgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVS
LCAidW5hYmxlIHRvIGVuYWJsZSB2cGlvIHVuaXQgb3V0cHV0LCBlcnJvciA9ICIsIGVyciwgIiAo
IiwgKGNvbnN0IGNoYXIqKSZlcnIsICIpIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KICNlbmRpZgpAQCAtMTM2LDE0ICsxMzcsMTQgQEAgQXVkaW9Db21wb25lbnRJbnN0YW5jZSBB
dWRpb1RyYWNrUHJpdmF0ZQogICAgIEFVUmVuZGVyQ2FsbGJhY2tTdHJ1Y3QgY2FsbGJhY2sgPSB7
IGlucHV0UHJvYywgdGhpcyB9OwogICAgIGVyciA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KHJlbW90
ZUlPVW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5X1NldFJlbmRlckNhbGxiYWNrLCBrQXVkaW9Vbml0
U2NvcGVfR2xvYmFsLCAwLCAmY2FsbGJhY2ssIHNpemVvZihjYWxsYmFjaykpOwogICAgIGlmIChl
cnIpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNv
Y29hOjpjcmVhdGVBdWRpb1VuaXQoJXApIHVuYWJsZSB0byBzZXQgdnBpbyB1bml0IHNwZWFrZXIg
cHJvYywgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKKyAg
ICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJ1bmFibGUgdG8gc2V0IHZwaW8gdW5pdCBz
cGVha2VyIHByb2MsIGVycm9yID0gIiwgZXJyLCAiICgiLCAoY29uc3QgY2hhciopJmVyciwgIiki
KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgVUludDMyIHNpemUgPSBz
aXplb2Yob3V0cHV0RGVzY3JpcHRpb24uc3RyZWFtRGVzY3JpcHRpb24oKSk7CiAgICAgZXJyICA9
IEF1ZGlvVW5pdEdldFByb3BlcnR5KHJlbW90ZUlPVW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5X1N0
cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAmb3V0cHV0RGVzY3JpcHRpb24u
c3RyZWFtRGVzY3JpcHRpb24oKSwgJnNpemUpOwogICAgIGlmIChlcnIpIHsKLSAgICAgICAgTE9H
KE1lZGlhLCAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpjcmVhdGVBdWRpb1Vu
aXRzKCVwKSB1bmFibGUgdG8gZ2V0IGlucHV0IHN0cmVhbSBmb3JtYXQsIGVycm9yICVkICglLjRz
KSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CisgICAgICAgIEVSUk9SX0xPRyhMT0dJ
REVOVElGSUVSLCAidW5hYmxlIHRvIGdldCBpbnB1dCBzdHJlYW0gZm9ybWF0LCBlcnJvciA9ICIs
IGVyciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZlcnIsICIpIik7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIApAQCAtMTUxLDEzICsxNTIsMTMgQEAgQXVkaW9Db21wb25lbnRJbnN0YW5j
ZSBBdWRpb1RyYWNrUHJpdmF0ZQogCiAgICAgZXJyID0gQXVkaW9Vbml0U2V0UHJvcGVydHkocmVt
b3RlSU9Vbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2Nv
cGVfSW5wdXQsIDAsICZvdXRwdXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpLCBzaXpl
b2Yob3V0cHV0RGVzY3JpcHRpb24uc3RyZWFtRGVzY3JpcHRpb24oKSkpOwogICAgIGlmIChlcnIp
IHsKLSAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29h
OjpjcmVhdGVBdWRpb1VuaXRzKCVwKSB1bmFibGUgdG8gc2V0IGlucHV0IHN0cmVhbSBmb3JtYXQs
IGVycm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CisgICAgICAg
IEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAidW5hYmxlIHRvIHNldCBpbnB1dCBzdHJlYW0gZm9y
bWF0LCBlcnJvciA9ICIsIGVyciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZlcnIsICIpIik7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIGVyciA9IEF1ZGlvVW5pdEluaXRpYWxp
emUocmVtb3RlSU9Vbml0KTsKICAgICBpZiAoZXJyKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIkF1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6Y3JlYXRlQXVkaW9Vbml0cyglcCkgQXVk
aW9Vbml0SW5pdGlhbGl6ZSgpIGZhaWxlZCwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCll
cnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJBdWRp
b1VuaXRJbml0aWFsaXplKCkgZmFpbGVkLCBlcnJvciA9ICIsIGVyciwgIiAoIiwgKGNvbnN0IGNo
YXIqKSZlcnIsICIpIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW1Db2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaAkocmV2
aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC03
MSw2ICs3MSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgemVyb0J1ZmZlckxpc3QoQXVkaW9CdWZm
ZXJMaXN0Jiwgc2l6ZV90KTsKICAgICB2b2lkIHBsYXlJbnRlcm5hbCgpOwogCisjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gIkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYSI7IH0KKyNlbmRp
ZgorCisKICAgICBBdWRpb0NvbXBvbmVudEluc3RhbmNlIG1fcmVtb3RlSU9Vbml0IHsgbnVsbHB0
ciB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1faW5w
dXREZXNjcmlwdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0FBdWRpb1N0cmVhbURlc2NyaXB0
aW9uPiBtX291dHB1dERlc2NyaXB0aW9uOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320862</attachid>
            <date>2017-09-14 18:54:22 -0700</date>
            <delta_ts>2017-09-15 09:20:11 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>text_track_logging_patch_5.txt</filename>
            <type>text/plain</type>
            <size>76789</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMyBAQAorMjAxNy0wOS0xNCAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBTd2l0Y2ggdGV4dCB0
cmFja3MgdG8gcmVsZWFzZSBsb2dnaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzY4MDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0Mzk3NjA1
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ug
YWxsIHRyYWNrIG9iamVjdHMgdXNlIHRoZSBzYW1lIGxvZ2dlciBhbmQgbG9nIGlkZW50aWZpZXIg
YXMgdGhlIG1lZGlhIGVsZW1lbnQgdGhleQorICAgICAgICAiYmVsb25nIiB0by4gQ29udmVydCBh
bGwgdHJhY2sgbG9nZ2luZyBmcm9tIGRlYnVnLW9ubHkgdG8gcmVsZWFzZSBsb2dnaW5nLgorCisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRp
YUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6QXVkaW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrOjpzZXRQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OnNl
dE1lZGlhRWxlbWVudCk6CisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrLmg6CisgICAg
ICAgICogaHRtbC90cmFjay9EYXRhQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFDdWU6
OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBodG1sL3RyYWNrL0RhdGFDdWUuaDoKKyAgICAg
ICAgKFBBTDo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6RGF0YUN1ZT46OnRvU3RyaW5nKToKKyAgICAg
ICAgKiBodG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5iYW5kRGF0YVRleHRUcmFjazo6YWRkRGF0YUN1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bmJhbmREYXRhVGV4dFRyYWNrOjp1cGRhdGVEYXRhQ3VlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
YmFuZERhdGFUZXh0VHJhY2s6OnJlbW92ZURhdGFDdWUpOgorICAgICAgICAqIGh0bWwvdHJhY2sv
SW5iYW5kRGF0YVRleHRUcmFjay5oOgorICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kR2VuZXJp
Y1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmljVGV4dFRyYWNr
OjphZGRHZW5lcmljQ3VlKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNUZXh0VHJh
Y2s6OnJlbW92ZUdlbmVyaWNDdWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY1Rl
eHRUcmFjazo6bmV3Q3Vlc1BhcnNlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmlj
VGV4dFRyYWNrOjpmaWxlRmFpbGVkVG9QYXJzZSk6CisgICAgICAgICogaHRtbC90cmFjay9JbmJh
bmRHZW5lcmljVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRUZXh0VHJh
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrOjpJbmJhbmRUZXh0VHJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrOjpzZXRNZWRpYUVsZW1lbnQp
OgorICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRt
bC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5i
YW5kV2ViVlRUVGV4dFRyYWNrOjpuZXdDdWVzUGFyc2VkKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
YmFuZFdlYlZUVFRleHRUcmFjazo6ZmlsZUZhaWxlZFRvUGFyc2UpOgorICAgICAgICAqIGh0bWwv
dHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9Mb2Fk
YWJsZVRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6
bmV3Q3Vlc0F2YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6
Y3VlTG9hZGluZ0NvbXBsZXRlZCk6CisgICAgICAgICogaHRtbC90cmFjay9Mb2FkYWJsZVRleHRU
cmFjay5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRUcmFjazo6YWRkQ3VlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6
cmVtb3ZlQ3VlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6c2V0TGFuZ3VhZ2UpOgor
ICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9U
ZXh0VHJhY2tDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjp0b1N0cmlu
ZyBjb25zdCk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaDoKKyAgICAgICAg
KFBBTDo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6VGV4dFRyYWNrQ3VlPjo6dG9TdHJpbmcpOgorICAg
ICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0VHJhY2tDdWVHZW5lcmljOjpzZXRGb250U2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0VHJhY2tDdWVHZW5lcmljOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgICogaHRtbC90
cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmg6CisgICAgICAgIChQQUw6OkxvZ0FyZ3VtZW50PFdl
YkNvcmU6OlRleHRUcmFja0N1ZUdlbmVyaWM+Ojp0b1N0cmluZyk6CisgICAgICAgICogaHRtbC90
cmFjay9UcmFja0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bmV4dExvZ0lkZW50aWZpZXIp
OgorICAgICAgICAoV2ViQ29yZTo6bnVsbExvZ2dlcik6CisgICAgICAgIChXZWJDb3JlOjpUcmFj
a0Jhc2U6OlRyYWNrQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OnNldE1lZGlh
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OmxvZ0NoYW5uZWwgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tCYXNlOjp+VHJhY2tCYXNlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBodG1sL3RyYWNrL1RyYWNrQmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tC
YXNlOjpzZXRNZWRpYUVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvdHJhY2svVlRU
Q3VlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZUVEN1ZTo6c2V0Rm9udFNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6VlRUQ3VlOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgICogaHRtbC90cmFj
ay9WVFRDdWUuaDoKKyAgICAgICAgKFBBTDo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6VlRUQ3VlPjo6
dG9TdHJpbmcpOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFjay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb1RyYWNrOjpWaWRlb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlZp
ZGVvVHJhY2s6OnNldFByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6c2V0
TWVkaWFFbGVtZW50KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2suaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGU6OnNldENsaWVudCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6R2VuZXJpY0N1ZURhdGE6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFBBTDo6TG9n
QXJndW1lbnQ8V2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE+Ojp0b1N0cmluZyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6VHJhY2tQcml2YXRlQmFzZTo6c2V0TG9nZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OlRyYWNrUHJpdmF0ZUJhc2U6OmxvZ0NoYW5uZWwgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1RyYWNrUHJpdmF0ZUJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9WaWRlb1RyYWNrUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9BVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLm1tOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZG
Ojp1cGRhdGVQZW5kaW5nQ3VlRW5kVGltZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kTWV0
YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjpmbHVzaFBhcnRpYWxDdWVzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2
YXRlQVZGLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0F0dHJpYnV0ZWRTdHJpbmdzKToKKyAgICAgICAgKFdlYkNv
cmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnJlbW92ZUNvbXBsZXRlZEN1ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cmVzZXRDdWVWYWx1ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc05h
dGl2ZVNhbXBsZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Rjo6cmVhZE5hdGl2ZVNhbXBsZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMu
bW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKC1bV2ViQ29yZUFWRk1v
dmllT2JzZXJ2ZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4
dDpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbUNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2
YXRlTWVkaWFTdHJlYW1Db2NvYTo6Y3JlYXRlQXVkaW9Vbml0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmg6CisK
IDIwMTctMDktMTMgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgSW50cm9kdWNlIFN0b3JhZ2UgQWNjZXNzIEFQSSAoZG9jdW1lbnQgcGFydHMpIGFzIGFuIGV4
cGVyaW1lbnRhbCBmZWF0dXJlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjIy
MDA3KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTM0MjUsNiArMzQyNSw3IEBAIGlmIChFTkFCTEVfVklERU9fVFJBQ0spCiAgICAgICAgIGxvYWRl
ci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCiAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
VGV4dFRyYWNrUmVwcmVzZW50YXRpb24uY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Ry
YWNrUHJpdmF0ZUJhc2UuY3BwCiAgICAgKQogZW5kaWYgKCkKIApJbmRleDogU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMDktMTQgIEVyaWMgQ2FybHNvbiAg
PGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3dpdGNoIHRleHQgdHJhY2tzIHRv
IHJlbGVhc2UgbG9nZ2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc2ODA5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDM5NzYwNT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9Mb2dnZXIu
aDoKKyAgICAgICAgKFBBTDo6TG9nQXJndW1lbnQ6OnRvU3RyaW5nKToKKyAgICAgICAgKFBBTDo6
TG9nZ2VyOjp3aWxsTG9nIGNvbnN0KToKKwogMjAxNy0wOS0xMyAgQW5keSBFc3RlcyAgPGFlc3Rl
c0BhcHBsZS5jb20+CiAKICAgICAgICAgW0NGXSBVcHN0cmVhbSBDRk5ldHdvcmstcmVsYXRlZCBX
ZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL0xvZ2dlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvTG9nZ2Vy
LmgJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvTG9nZ2VyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQxLDEwICs0MSwxMiBAQCBzdHJ1Y3QgTG9nQXJndW1lbnQgewog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8c3RkOjppc19zYW1lPFUsIGludD46OnZhbHVlLCBTdHJpbmc+Ojp0eXBlIHRvU3RyaW5nKGlu
dCBhcmd1bWVudCkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIoYXJndW1lbnQpOyB9CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6
OmlzX3NhbWU8VSwgdW5zaWduZWQ+Ojp2YWx1ZSwgU3RyaW5nPjo6dHlwZSB0b1N0cmluZyh1bnNp
Z25lZCBhcmd1bWVudCkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIoYXJndW1lbnQpOyB9CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxz
dGQ6OmlzX3NhbWU8VSwgdW5zaWduZWQgbG9uZz46OnZhbHVlLCBTdHJpbmc+Ojp0eXBlIHRvU3Ry
aW5nKHVuc2lnbmVkIGxvbmcgYXJndW1lbnQpIHsgcmV0dXJuIFN0cmluZzo6bnVtYmVyKGFyZ3Vt
ZW50KTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19zYW1lPFUsIGxvbmc+Ojp2YWx1ZSwgU3RyaW5nPjo6dHlwZSB0
b1N0cmluZyhsb25nIGFyZ3VtZW50KSB7IHJldHVybiBTdHJpbmc6Om51bWJlcihhcmd1bWVudCk7
IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPHN0ZDo6aXNfc2FtZTxVLCBmbG9hdD46OnZhbHVlLCBTdHJpbmc+Ojp0eXBlIHRvU3Ry
aW5nKGZsb2F0IGFyZ3VtZW50KSB7IHJldHVybiBTdHJpbmc6Om51bWJlcihhcmd1bWVudCk7IH0K
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPHN0ZDo6aXNfc2FtZTxVLCBkb3VibGU+Ojp2YWx1ZSwgU3RyaW5nPjo6dHlwZSB0b1N0cmlu
Zyhkb3VibGUgYXJndW1lbnQpIHsgcmV0dXJuIFN0cmluZzo6bnVtYmVyKGFyZ3VtZW50KTsgfQog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8c3RkOjppc19zYW1lPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxVPjo6dHlwZSwg
QXRvbWljU3RyaW5nPjo6dmFsdWUsIFN0cmluZz46OnR5cGUgdG9TdHJpbmcoQXRvbWljU3RyaW5n
IGFyZ3VtZW50KSB7IHJldHVybiBhcmd1bWVudC5zdHJpbmcoKTsgfQogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1l
PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxVPjo6dHlwZSwgU3RyaW5nPjo6dmFsdWUs
IFN0cmluZz46OnR5cGUgdG9TdHJpbmcoU3RyaW5nIGFyZ3VtZW50KSB7IHJldHVybiBhcmd1bWVu
dDsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8c3RkOjppc19zYW1lPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxVPjo6
dHlwZSwgU3RyaW5nQnVpbGRlcio+Ojp2YWx1ZSwgU3RyaW5nPjo6dHlwZSB0b1N0cmluZyhTdHJp
bmdCdWlsZGVyKiBhcmd1bWVudCkgeyByZXR1cm4gYXJndW1lbnQtPnRvU3RyaW5nKCk7IH0KICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PHN0ZDo6aXNfc2FtZTxVLCBjb25zdCBjaGFyKj46OnZhbHVlLCBTdHJpbmc+Ojp0eXBlIHRvU3Ry
aW5nKGNvbnN0IGNoYXIqIGFyZ3VtZW50KSB7IHJldHVybiBTdHJpbmcoYXJndW1lbnQpOyB9CiAg
ICAgdGVtcGxhdGU8c2l6ZV90IGxlbmd0aD4gc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBj
aGFyICgmYXJndW1lbnQpW2xlbmd0aF0pIHsgcmV0dXJuIFN0cmluZyhhcmd1bWVudCk7IH0KIH07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAyMjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw2ICsxNDYsNyBAQAog
CQkwNzNCODc2NzFFNDM4NUFDMDA3MUMwRUMgLyogQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNCODc2MzFFNDM4
NTlEMDA3MUMwRUMgLyogQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmggKi87IH07CiAJCTA3M0I4NzY4
MUU0Mzg1QUMwMDcxQzBFQyAvKiBBdWRpb1NhbXBsZURhdGFTb3VyY2UubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNCODc2NDFFNDM4NTlEMDA3MUMw
RUMgLyogQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tICovOyB9OwogCQkwNzNCODc2OTFFNDM4NUFD
MDA3MUMwRUMgLyogQXVkaW9TYW1wbGVEYXRhU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNCODc2NTFFNDM4NTlEMDA3MUMwRUMgLyogQXVk
aW9TYW1wbGVEYXRhU291cmNlLmggKi87IH07CisJCTA3M0JEQzA1MUY2ODQzNjEwMEVFMzRFRCAv
KiBUcmFja1ByaXZhdGVCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3NkUxMUJFMUY2ODNFMEQwMDE3NzM5NSAvKiBUcmFja1ByaXZhdGVCYXNl
LmNwcCAqLzsgfTsKIAkJMDczQkUzNDAxN0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yVXNl
ck1lZGlhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3M0JFMzNFMTdEMTdFMDEwMDJCRDQzMSAvKiBKU05hdmlnYXRvclVzZXJNZWRpYS5jcHAgKi87
IH07CiAJCTA3M0JFMzQxMTdEMTdFMDEwMDJCRDQzMSAvKiBKU05hdmlnYXRvclVzZXJNZWRpYS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczQkUzM0Yx
N0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDczQkUzNEUxN0QxODBCMjAwMkJE
NDMxIC8qIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyMjFCQUIxN0NGMEFENDAwODQ4RTUx
IC8qIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3BwICovOyB9OwpAQCAtNzcxOSw2
ICs3NzIwLDcgQEAKIAkJMDc2MzhBOTgxODg0NDg3MjAwRTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1h
bmFnZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRp
YVNlc3Npb25NYW5hZ2VySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzY5
NzA4NDE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0VHJhY2tMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDc2OTcwODUxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFRyYWNrTGlzdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzZFMTFCRTFGNjgzRTBEMDAxNzczOTUgLyogVHJh
Y2tQcml2YXRlQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBU
cmFja1ByaXZhdGVCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RUMx
MzIxRTQ0RjJDQjAwRTVEODEzIC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU3RyZWFtQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZG
MEQwOTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NkYwRDBB
MTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzkxOCw2ICsyMzkyMCw3IEBA
CiAJCQkJQ0QxRTczNDYxNjdCQzc4RTAwOUE4ODVEIC8qIFRleHRUcmFja1JlcHJlc2VudGF0aW9u
LmNwcCAqLywKIAkJCQlDREQxRTUyNTE2N0JBNTY0MDBDRTgyMEIgLyogVGV4dFRyYWNrUmVwcmVz
ZW50YXRpb24uaCAqLywKIAkJCQkxQUY4OUE0MTE1MThGREVBMDBFNTQ3QjUgLyogVGlsZWRCYWNr
aW5nLmggKi8sCisJCQkJMDc2RTExQkUxRjY4M0UwRDAwMTc3Mzk1IC8qIFRyYWNrUHJpdmF0ZUJh
c2UuY3BwICovLAogCQkJCUJFOTEzRDdGMTgxRUY4RTUwMERDQjA5RSAvKiBUcmFja1ByaXZhdGVC
YXNlLmggKi8sCiAJCQkJRTRBRkNGQTQwREFGMjlBMzAwRjVGNTVDIC8qIFVuaXRCZXppZXIuaCAq
LywKIAkJCQlCRUYyOUVFQTE3MTVERDA5MDBDNEI0QzkgLyogVmlkZW9UcmFja1ByaXZhdGUuaCAq
LywKQEAgLTMyMTA4LDYgKzMyMTExLDcgQEAKIAkJCQlFMTJERTcxNzFFNEI3NDlDMDBGOUFDQ0Yg
LyogR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxNEMy
NUQ3MUU5RUZFREUwMEJFRTE0MSAvKiBIMjY0VmlkZW9Ub29sQm94RW5jb2Rlci5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUY1NUIzREJGMTI1MUYxMkQwMDNFRjI2OSAvKiBIaWRkZW5JbnB1dFR5cGUu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDczQkRDMDUxRjY4NDM2MTAwRUUzNEVEIC8qIFRyYWNr
UHJpdmF0ZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE1QkUxOUIxRDU0RjZDMTAwREQ3
QzY4IC8qIEhJREdhbWVwYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE1QkUxOUQxRDU0RjZD
MTAwREQ3QzY4IC8qIEhJREdhbWVwYWRQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
Qzk0RDE1MzBDMjc1QzhCMDA2QkM2MTcgLyogSGlzdG9yeS5jcHAgaW4gU291cmNlcyAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMjIy
MDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTY2MCw4ICsxNjYwLDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVBY3RpdmVUZXh0VAogICAgIGlmIChpZ25vcmVUcmFja0Rpc3BsYXlVcGRhdGVSZXF1ZXN0cygp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBERUJVR19MT0coTE9HSURFTlRJRklFUik7Ci0KICAg
ICAvLyAxIC0gTGV0IGN1cnJlbnQgY3VlcyBiZSBhIGxpc3Qgb2YgY3VlcywgaW5pdGlhbGl6ZWQg
dG8gY29udGFpbiBhbGwgdGhlCiAgICAgLy8gY3VlcyBvZiBhbGwgdGhlIGhpZGRlbiwgc2hvd2lu
Zywgb3Igc2hvd2luZyBieSBkZWZhdWx0IHRleHQgdHJhY2tzIG9mIHRoZQogICAgIC8vIG1lZGlh
IGVsZW1lbnQgKG5vdCB0aGUgZGlzYWJsZWQgb25lcykgd2hvc2Ugc3RhcnQgdGltZXMgYXJlIGxl
c3MgdGhhbiBvcgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHJl
dmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiTWVkaWFDYW5TdGFy
dExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmgiCiAjaW5j
bHVkZSAiTWVkaWFFbGVtZW50U2Vzc2lvbi5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAj
aW5jbHVkZSAiTWVkaWFQcm9kdWNlci5oIgogI2luY2x1ZGUgIlZpc2liaWxpdHlDaGFuZ2VDbGll
bnQuaCIKICNpbmNsdWRlIDxwYWwvTG9nZ2VySGVscGVyLmg+CkBAIC04Nyw3ICs4OCw2IEBAIGNs
YXNzIE1lZGlhQ29udHJvbHNIb3N0OwogY2xhc3MgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2Rl
OwogY2xhc3MgTWVkaWFFcnJvcjsKIGNsYXNzIE1lZGlhS2V5czsKLWNsYXNzIE1lZGlhUGxheWVy
OwogY2xhc3MgTWVkaWFSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIE1lZGlhU2Vzc2lvbjsKIGNsYXNz
IE1lZGlhU291cmNlOwpAQCAtMTQxLDcgKzE0MSw3IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQK
ICAgICAsIHByaXZhdGUgQ0RNQ2xpZW50CiAjZW5kaWYKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKLSAgICAsIHByaXZhdGUgUEFMOjpMb2dnZXJIZWxwZXIKKyAgICAsIHB1YmxpYyBQQUw6Okxv
Z2dlckhlbHBlcgogI2VuZGlmCiB7CiBwdWJsaWM6CkBAIC01MzgsNiArNTM4LDExIEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgc3VwcG9ydHNTZWVraW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBQQUw6OkxvZ2dlciYgbG9nZ2VyKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gKm1fbG9nZ2VyLmdldCgpOyB9CisgICAgY29uc3Qgdm9pZCogbG9n
SWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dm9pZCo+KG1fbG9nSWRlbnRpZmllcik7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgSFRN
TE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBib29sIGNyZWF0
ZWRCeVBhcnNlcik7CiAgICAgdmlydHVhbCB+SFRNTE1lZGlhRWxlbWVudCgpOwpAQCAtODk1LDkg
KzkwMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZWVrVG9QbGF5YmFja1Bvc2l0aW9uRW5kZWRU
aW1lckZpcmVkKCk7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBjb25zdCBQQUw6
OkxvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gKm1fbG9nZ2VyLmdldCgpOyB9
CiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkhU
TUxNZWRpYUVsZW1lbnQiOyB9Ci0gICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KG1fbG9nSWRlbnRp
Zmllcik7IH0KICAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7CiAK
ICAgICBjb25zdCB2b2lkKiBtZWRpYVBsYXllckxvZ0lkZW50aWZpZXIoKSBmaW5hbCB7IHJldHVy
biBsb2dJZGVudGlmaWVyKCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVk
aW9UcmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRp
b1RyYWNrLmNwcAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9BdWRpb1RyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsMTEgKzc3LDE0IEBAIGNvbnN0
IEF0b21pY1N0cmluZyYgQXVkaW9UcmFjazo6Y29tbWVudGEKIAogQXVkaW9UcmFjazo6QXVkaW9U
cmFjayhBdWRpb1RyYWNrQ2xpZW50JiBjbGllbnQsIEF1ZGlvVHJhY2tQcml2YXRlJiB0cmFja1By
aXZhdGUpCiAgICAgOiBNZWRpYVRyYWNrQmFzZShNZWRpYVRyYWNrQmFzZTo6QXVkaW9UcmFjaywg
dHJhY2tQcml2YXRlLmlkKCksIHRyYWNrUHJpdmF0ZS5sYWJlbCgpLCB0cmFja1ByaXZhdGUubGFu
Z3VhZ2UoKSkKLSAgICAsIG1fZW5hYmxlZCh0cmFja1ByaXZhdGUuZW5hYmxlZCgpKQogICAgICwg
bV9jbGllbnQoJmNsaWVudCkKICAgICAsIG1fcHJpdmF0ZSh0cmFja1ByaXZhdGUpCisgICAgLCBt
X2VuYWJsZWQodHJhY2tQcml2YXRlLmVuYWJsZWQoKSkKIHsKICAgICBtX3ByaXZhdGUtPnNldENs
aWVudCh0aGlzKTsKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBtX3ByaXZhdGUtPnNl
dExvZ2dlcihsb2dnZXIoKSwgbG9nSWRlbnRpZmllcigpKTsKKyNlbmRpZgogICAgIHVwZGF0ZUtp
bmRGcm9tUHJpdmF0ZSgpOwogfQogCkBAIC05OSw2ICsxMDIsOSBAQCB2b2lkIEF1ZGlvVHJhY2s6
OnNldFByaXZhdGUoQXVkaW9UcmFja1ByCiAgICAgbV9wcml2YXRlID0gdHJhY2tQcml2YXRlOwog
ICAgIG1fcHJpdmF0ZS0+c2V0RW5hYmxlZChtX2VuYWJsZWQpOwogICAgIG1fcHJpdmF0ZS0+c2V0
Q2xpZW50KHRoaXMpOworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIG1fcHJpdmF0ZS0+
c2V0TG9nZ2VyKGxvZ2dlcigpLCBsb2dJZGVudGlmaWVyKCkpOworI2VuZGlmCiAKICAgICB1cGRh
dGVLaW5kRnJvbVByaXZhdGUoKTsKIH0KQEAgLTE4Nyw2ICsxOTMsMTQgQEAgdm9pZCBBdWRpb1Ry
YWNrOjp1cGRhdGVLaW5kRnJvbVByaXZhdGUoKQogICAgIH0KIH0KIAordm9pZCBBdWRpb1RyYWNr
OjpzZXRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBUcmFj
a0Jhc2U6OnNldE1lZGlhRWxlbWVudChlbGVtZW50KTsKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKKyAgICBtX3ByaXZhdGUtPnNldExvZ2dlcihsb2dnZXIoKSwgbG9nSWRlbnRpZmllcigpKTsK
KyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmgJKHJldmlzaW9uIDIyMjAwNykKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC02
NSw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzaXplX3QgaW5iYW5kVHJhY2tJbmRleCgpIGNvbnN0
OwogCiAgICAgdm9pZCBzZXRQcml2YXRlKEF1ZGlvVHJhY2tQcml2YXRlJik7CisgICAgdm9pZCBz
ZXRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopIG92ZXJyaWRlOwogCiBwcml2YXRlOgog
ICAgIEF1ZGlvVHJhY2soQXVkaW9UcmFja0NsaWVudCYsIEF1ZGlvVHJhY2tQcml2YXRlJik7CkBA
IC04MiwxMCArODMsMTMgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdXBkYXRlS2luZEZyb21Qcml2
YXRlKCk7CiAKLSAgICBib29sIG1fZW5hYmxlZDsKLSAgICBBdWRpb1RyYWNrQ2xpZW50KiBtX2Ns
aWVudDsKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFz
c05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiQXVkaW9UcmFjayI7IH0KKyNlbmRpZgogCisg
ICAgQXVkaW9UcmFja0NsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07CiAgICAgUmVmPEF1ZGlv
VHJhY2tQcml2YXRlPiBtX3ByaXZhdGU7CisgICAgYm9vbCBtX2VuYWJsZWQgeyBmYWxzZSB9Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9EYXRhQ3VlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0RhdGFDdWUuY3BwCShyZXZpc2lvbiAyMjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0RhdGFDdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODgsNiArMTg4LDE4IEBAIEpTVmFs
dWUgRGF0YUN1ZTo6dmFsdWVPck51bGwoKSBjb25zdAogICAgIHJldHVybiBqc051bGwoKTsKIH0K
IAorU3RyaW5nIERhdGFDdWU6OnRvU3RyaW5nKCkgY29uc3QKK3sKKyAgICBTdHJpbmdCdWlsZGVy
IGJ1aWxkZXI7CisKKyAgICBidWlsZGVyLmFwcGVuZChUZXh0VHJhY2tDdWU6OnRvU3RyaW5nKCkp
OworCisgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIHR5cGUgPSAiKTsKKyAgICBidWlsZGVy
LmFwcGVuZChtX3R5cGUpOworCisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svRGF0YUN1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svRGF0YUN1ZS5oCShyZXZpc2lvbiAyMjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0RhdGFDdWUuaAkod29ya2luZyBjb3B5KQpAQCAtODcsNiArODcsOCBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBjdWVDb250ZW50c01hdGNoKGNvbnN0IFRleHRUcmFja0N1ZSYpIGNvbnN0IG92ZXJy
aWRlOwogICAgIGJvb2wgZG9lc0V4dGVuZEN1ZShjb25zdCBUZXh0VHJhY2tDdWUmKSBjb25zdCBv
dmVycmlkZTsKIAorICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IG92ZXJyaWRlOworCiBwcml2
YXRlOgogICAgIERhdGFDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IE1lZGlhVGlt
ZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBBcnJheUJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYpOwogICAgIERhdGFDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IE1lZGlhVGlt
ZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBjb25zdCB2b2lkKiwgdW5zaWduZWQpOwpA
QCAtMTA2LDQgKzEwOCwxOSBAQCBjb25zdCBEYXRhQ3VlKiB0b0RhdGFDdWUoY29uc3QgVGV4dFRy
YWNrCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFBBTCB7CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFR5cGU+CitzdHJ1Y3QgTG9nQXJndW1lbnQ7CisKK3RlbXBsYXRlIDw+Citz
dHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6RGF0YUN1ZT4geworICAgIHN0YXRpYyBTdHJpbmcg
dG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6RGF0YUN1ZSYgY3VlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGN1ZS50b1N0cmluZygpOworICAgIH0KK307CisKK30KKwogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5jcHAJKHJl
dmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRl
eHRUcmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJE
YXRhQ3VlLmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIkluYmFu
ZFRleHRUcmFja1ByaXZhdGUuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNjQsNyArNjMsNyBAQCB2b2lkIEluYmFuZERhdGFUZXh0VHJhY2s6OmFk
ZERhdGFDdWUoY29uCiAKICAgICBhdXRvIGN1ZSA9IERhdGFDdWU6OmNyZWF0ZSgqc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBzdGFydCwgZW5kLCBwbGF0Zm9ybVZhbHVlLmNvcHlSZWYoKSwgdHlw
ZSk7CiAgICAgaWYgKGhhc0N1ZShjdWUucHRyKCksIFRleHRUcmFja0N1ZTo6SWdub3JlRHVyYXRp
b24pKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIkluYmFuZERhdGFUZXh0VHJhY2s6OmFkZERhdGFD
dWUgaWdub3JpbmcgYWxyZWFkeSBhZGRlZCBjdWU6IHN0YXJ0PSVzLCBlbmQ9JXNcbiIsIHRvU3Ry
aW5nKGN1ZS0+c3RhcnRUaW1lKCkpLnV0ZjgoKS5kYXRhKCksIHRvU3RyaW5nKGN1ZS0+ZW5kVGlt
ZSgpKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImln
bm9yaW5nIGFscmVhZHkgYWRkZWQgY3VlOiAiLCBjdWUuZ2V0KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC03Myw2ICs3Miw4IEBAIHZvaWQgSW5iYW5kRGF0YVRleHRUcmFjazo6YWRk
RGF0YUN1ZShjb24KICAgICAgICAgbV9pbmNvbXBsZXRlQ3VlTWFwLmFkZChXVEZNb3ZlKHBsYXRm
b3JtVmFsdWUpLCBjdWUuY29weVJlZigpKTsKICAgICB9CiAKKyAgICBJTkZPX0xPRyhMT0dJREVO
VElGSUVSLCBjdWUuZ2V0KCkpOworCiAgICAgYWRkQ3VlKFdURk1vdmUoY3VlKSk7CiB9CiAKQEAg
LTkwLDcgKzkxLDcgQEAgdm9pZCBJbmJhbmREYXRhVGV4dFRyYWNrOjp1cGRhdGVEYXRhQ3VlKAog
ICAgIGVsc2UKICAgICAgICAgbV9pbmNvbXBsZXRlQ3VlTWFwLnJlbW92ZSgmcGxhdGZvcm1WYWx1
ZSk7CiAKLSAgICBMT0coTWVkaWEsICJJbmJhbmREYXRhVGV4dFRyYWNrOjp1cGRhdGVEYXRhQ3Vl
OiB3YXMgc3RhcnQ9JXMsIGVuZD0lcywgd2lsbCBiZSBzdGFydD0lcywgZW5kPSVzXG4iLCB0b1N0
cmluZyhjdWUtPnN0YXJ0VGltZSgpKS51dGY4KCkuZGF0YSgpLCB0b1N0cmluZyhjdWUtPmVuZFRp
bWUoKSkudXRmOCgpLmRhdGEoKSwgdG9TdHJpbmcoc3RhcnQpLnV0ZjgoKS5kYXRhKCksIHRvU3Ry
aW5nKGVuZCkudXRmOCgpLmRhdGEoKSk7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgIndh
cyBzdGFydCA9ICIsIGN1ZS0+c3RhcnRNZWRpYVRpbWUoKSwgIiwgZW5kID0gIiwgY3VlLT5lbmRN
ZWRpYVRpbWUoKSwgIiwgd2lsbCBiZSBzdGFydCA9ICIsIHN0YXJ0LCAiLCBlbmQgPSAiLCBlbmQp
OwogCiAgICAgY3VlLT5zZXRTdGFydFRpbWUoc3RhcnQpOwogICAgIGN1ZS0+c2V0RW5kVGltZShl
bmQpOwpAQCAtMTAxLDcgKzEwMiw3IEBAIHZvaWQgSW5iYW5kRGF0YVRleHRUcmFjazo6dXBkYXRl
RGF0YUN1ZSgKIHZvaWQgSW5iYW5kRGF0YVRleHRUcmFjazo6cmVtb3ZlRGF0YUN1ZShjb25zdCBN
ZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmLCBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRh
dGlvbiYgcGxhdGZvcm1WYWx1ZSkKIHsKICAgICBpZiAoYXV0byBjdWUgPSBtX2luY29tcGxldGVD
dWVNYXAudGFrZSgmcGxhdGZvcm1WYWx1ZSkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiSW5iYW5k
RGF0YVRleHRUcmFjazo6cmVtb3ZlRGF0YUN1ZSByZW1vdmluZyBjdWU6IHN0YXJ0PSVzLCBlbmQ9
JXNcbiIsIHRvU3RyaW5nKGN1ZS0+c3RhcnRUaW1lKCkpLnV0ZjgoKS5kYXRhKCksIHRvU3RyaW5n
KGN1ZS0+ZW5kVGltZSgpKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgSU5GT19MT0coTE9HSURF
TlRJRklFUiwgInJlbW92aW5nOiAiLCAqY3VlKTsKICAgICAgICAgSW5iYW5kVGV4dFRyYWNrOjpy
ZW1vdmVDdWUoKmN1ZSk7CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9JbmJhbmREYXRhVGV4dFRyYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmgJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NCw2ICs0NCwxMCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBhZGREYXRhQ3VlKGNvbnN0
IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBjb25zdCB2b2lkKiwgdW5z
aWduZWQpIGZpbmFsOwogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29uc3QgY2hh
ciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkRhdGFDdWUiOyB9CisjZW5k
aWYKKwogI2lmIEVOQUJMRShEQVRBQ1VFX1ZBTFVFKQogICAgIHZvaWQgYWRkRGF0YUN1ZShjb25z
dCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmPFNlcmlhbGl6ZWRQ
bGF0Zm9ybVJlcHJlc2VudGF0aW9uPiYmLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lk
IHVwZGF0ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBl
bmQsIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uJikgZmluYWw7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5j
cHAJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5k
R2VuZXJpY1RleHRUcmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNywxMSArMTI3LDExIEBA
IHZvaWQgSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6YWRkR2VuZXJpY0MKICAgICBhdXRvIGN1ZSA9
IFRleHRUcmFja0N1ZUdlbmVyaWM6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBj
dWVEYXRhLnN0YXJ0VGltZSgpLCBjdWVEYXRhLmVuZFRpbWUoKSwgY3VlRGF0YS5jb250ZW50KCkp
OwogICAgIHVwZGF0ZUN1ZUZyb21DdWVEYXRhKGN1ZS5nZXQoKSwgY3VlRGF0YSk7CiAgICAgaWYg
KGhhc0N1ZShjdWUucHRyKCksIFRleHRUcmFja0N1ZTo6SWdub3JlRHVyYXRpb24pKSB7Ci0gICAg
ICAgIExPRyhNZWRpYSwgIkluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OmFkZEdlbmVyaWNDdWUgaWdu
b3JpbmcgYWxyZWFkeSBhZGRlZCBjdWU6IHN0YXJ0PSVzLCBlbmQ9JXMsIGNvbnRlbnQ9XCIlc1wi
XG4iLCB0b1N0cmluZyhjdWVEYXRhLnN0YXJ0VGltZSgpKS51dGY4KCkuZGF0YSgpLCB0b1N0cmlu
ZyhjdWVEYXRhLmVuZFRpbWUoKSkudXRmOCgpLmRhdGEoKSwgY3VlRGF0YS5jb250ZW50KCkudXRm
OCgpLmRhdGEoKSk7CisgICAgICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAiaWdub3Jpbmcg
YWxyZWFkeSBhZGRlZCBjdWU6ICIsIGN1ZS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBMT0coTWVkaWEsICJJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjphZGRHZW5lcmljQ3Vl
IGFkZGVkIGN1ZTogc3RhcnQ9JS4yZiwgZW5kPSUuMmYsIGNvbnRlbnQ9XCIlc1wiXG4iLCBjdWVE
YXRhLnN0YXJ0VGltZSgpLnRvRG91YmxlKCksIGN1ZURhdGEuZW5kVGltZSgpLnRvRG91YmxlKCks
IGN1ZURhdGEuY29udGVudCgpLnV0ZjgoKS5kYXRhKCkpOworICAgIERFQlVHX0xPRyhMT0dJREVO
VElGSUVSLCAiYWRkZWQgY3VlOiAiLCBjdWUuZ2V0KCkpOwogCiAgICAgaWYgKGN1ZURhdGEuc3Rh
dHVzKCkgIT0gR2VuZXJpY0N1ZURhdGE6OkNvbXBsZXRlKQogICAgICAgICBtX2N1ZU1hcC5hZGQo
Y3VlRGF0YSwgY3VlKTsKQEAgLTE1NSwxMSArMTU1LDExIEBAIHZvaWQgSW5iYW5kR2VuZXJpY1Rl
eHRUcmFjazo6cmVtb3ZlR2VuZXIKIHsKICAgICBhdXRvKiBjdWUgPSBtX2N1ZU1hcC5maW5kKGN1
ZURhdGEpOwogICAgIGlmIChjdWUpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiSW5iYW5kR2VuZXJp
Y1RleHRUcmFjazo6cmVtb3ZlR2VuZXJpY0N1ZSByZW1vdmluZyBjdWU6IHN0YXJ0PSVzLCBlbmQ9
JXMsIGNvbnRlbnQ9XCIlc1wiXG4iLCAgdG9TdHJpbmcoY3VlRGF0YS5zdGFydFRpbWUoKSkudXRm
OCgpLmRhdGEoKSwgdG9TdHJpbmcoY3VlRGF0YS5lbmRUaW1lKCkpLnV0ZjgoKS5kYXRhKCksIGN1
ZURhdGEuY29udGVudCgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBERUJVR19MT0coTE9HSURF
TlRJRklFUiwgKmN1ZSk7CiAgICAgICAgIHJlbW92ZUN1ZSgqY3VlKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBMT0coTWVkaWEsICJJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpyZW1vdmVHZW5lcmlj
Q3VlIFVOQUJMRSB0byBmaW5kIGN1ZTogc3RhcnQ9JS4yZiwgZW5kPSUuMmYsIGNvbnRlbnQ9XCIl
c1wiXG4iLCBjdWVEYXRhLnN0YXJ0VGltZSgpLnRvRG91YmxlKCksIGN1ZURhdGEuZW5kVGltZSgp
LnRvRG91YmxlKCksIGN1ZURhdGEuY29udGVudCgpLnV0ZjgoKS5kYXRhKCkpOwotICAgIH0KKyAg
ICB9IGVsc2UKKyAgICAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsICJVTkFCTEUgdG8gZmlu
ZCBjdWU6ICIsICpjdWUpOworCiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IEluYmFuZEdlbmVyaWNU
ZXh0VHJhY2s6OnJlbW92ZUN1ZShUZXh0VHJhY2tDdWUmIGN1ZSkKQEAgLTE5Niw5ICsxOTYsMTIg
QEAgdm9pZCBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpuZXdDdWVzUGFycwogICAgICAgICBhdXRv
IHZ0dEN1ZSA9IFZUVEN1ZTo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICpjdWVE
YXRhKTsKIAogICAgICAgICBpZiAoaGFzQ3VlKHZ0dEN1ZS5wdHIoKSwgVGV4dFRyYWNrQ3VlOjpJ
Z25vcmVEdXJhdGlvbikpIHsKLSAgICAgICAgICAgIExPRyhNZWRpYSwgIkluYmFuZEdlbmVyaWNU
ZXh0VHJhY2s6Om5ld0N1ZXNQYXJzZWQgaWdub3JpbmcgYWxyZWFkeSBhZGRlZCBjdWU6IHN0YXJ0
PSUuMmYsIGVuZD0lLjJmLCBjb250ZW50PVwiJXNcIlxuIiwgdnR0Q3VlLT5zdGFydFRpbWUoKSwg
dnR0Q3VlLT5lbmRUaW1lKCksIHZ0dEN1ZS0+dGV4dCgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAg
ICAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsICJpZ25vcmluZyBhbHJlYWR5IGFkZGVkIGN1
ZTogIiwgdnR0Q3VlLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorCisg
ICAgICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCB2dHRDdWUuZ2V0KCkpOworCiAgICAgICAg
IGFkZEN1ZShXVEZNb3ZlKHZ0dEN1ZSkpOwogICAgIH0KIH0KQEAgLTIxNiw3ICsyMTksNyBAQCB2
b2lkIEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6Om5ld1JlZ2lvbnNQCiAKIHZvaWQgSW5iYW5kR2Vu
ZXJpY1RleHRUcmFjazo6ZmlsZUZhaWxlZFRvUGFyc2UoKQogewotICAgIExPRyhNZWRpYSwgIkVy
cm9yIHBhcnNpbmcgV2ViVlRUIHN0cmVhbS4iKTsKKyAgICBFUlJPUl9MT0coTE9HSURFTlRJRklF
Uik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oCShyZXZpc2lvbiAyMjIw
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2su
aAkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIG5l
d1JlZ2lvbnNQYXJzZWQoKSBmaW5hbDsKICAgICB2b2lkIGZpbGVGYWlsZWRUb1BhcnNlKCkgZmlu
YWw7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFz
c05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiSW5iYW5kR2VuZXJpY1RleHRUcmFjayI7IH0K
KyNlbmRpZgorCiAgICAgR2VuZXJpY1RleHRUcmFja0N1ZU1hcCBtX2N1ZU1hcDsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViVlRUUGFyc2VyPiBtX3dlYlZUVFBhcnNlcjsKIH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwCShyZXZpc2lvbiAy
MjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDkgQEAgSW5iYW5kVGV4dFRyYWNrOjpJbmJhbmRU
ZXh0VHJhY2soU2NyaXB0RQogICAgIDogVGV4dFRyYWNrKCZjb250ZXh0LCAmY2xpZW50LCBlbXB0
eUF0b20oKSwgdHJhY2tQcml2YXRlLmlkKCksIHRyYWNrUHJpdmF0ZS5sYWJlbCgpLCB0cmFja1By
aXZhdGUubGFuZ3VhZ2UoKSwgSW5CYW5kKQogICAgICwgbV9wcml2YXRlKHRyYWNrUHJpdmF0ZSkK
IHsKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBtX3ByaXZhdGUtPnNldExvZ2dlcihs
b2dnZXIoKSwgbG9nSWRlbnRpZmllcigpKTsKKyNlbmRpZgogICAgIG1fcHJpdmF0ZS0+c2V0Q2xp
ZW50KHRoaXMpOwogICAgIHVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSgpOwogfQpAQCAtMTkxLDYgKzE5
NCwxNSBAQCBNZWRpYVRpbWUgSW5iYW5kVGV4dFRyYWNrOjpzdGFydFRpbWVWYXJpCiAgICAgcmV0
dXJuIG1fcHJpdmF0ZS0+c3RhcnRUaW1lVmFyaWFuY2UoKTsKIH0KIAordm9pZCBJbmJhbmRUZXh0
VHJhY2s6OnNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KQoreworICAg
IFRyYWNrQmFzZTo6c2V0TWVkaWFFbGVtZW50KGVsZW1lbnQpOworI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAorICAgIG1fcHJpdmF0ZS0+c2V0TG9nZ2VyKGxvZ2dlcigpLCBsb2dJZGVudGlmaWVy
KCkpOworI2VuZGlmCit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaAkocmV2aXNp
b24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2su
aAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6CiAgICAgQXRvbWljU3Ry
aW5nIGluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUoKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIHZvaWQgc2V0UHJpdmF0ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7CisgICAgdm9pZCBz
ZXRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6
CiAgICAgSW5iYW5kVGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBUZXh0VHJhY2tD
bGllbnQmLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwCShyZXZpc2lvbiAy
MjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFj
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDkgKzc0LDEyIEBAIHZvaWQgSW5iYW5kV2ViVlRU
VGV4dFRyYWNrOjpuZXdDdWVzUGFyc2UKICAgICBmb3IgKGF1dG8mIGN1ZURhdGEgOiBjdWVzKSB7
CiAgICAgICAgIGF1dG8gdnR0Q3VlID0gVlRUQ3VlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgKmN1ZURhdGEpOwogICAgICAgICBpZiAoaGFzQ3VlKHZ0dEN1ZS5wdHIoKSwgVGV4
dFRyYWNrQ3VlOjpJZ25vcmVEdXJhdGlvbikpIHsKLSAgICAgICAgICAgIExPRyhNZWRpYSwgIklu
YmFuZFdlYlZUVFRleHRUcmFjazo6bmV3Q3Vlc1BhcnNlZCBpZ25vcmluZyBhbHJlYWR5IGFkZGVk
IGN1ZTogc3RhcnQ9JS4yZiwgZW5kPSUuMmYsIGNvbnRlbnQ9XCIlc1wiXG4iLCB2dHRDdWUtPnN0
YXJ0VGltZSgpLCB2dHRDdWUtPmVuZFRpbWUoKSwgdnR0Q3VlLT50ZXh0KCkudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgImlnbm9yaW5nIGFscmVh
ZHkgYWRkZWQgY3VlOiAiLCB2dHRDdWUuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CisKKyAgICAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsIHZ0dEN1ZS5nZXQoKSk7
CisKICAgICAgICAgYWRkQ3VlKFdURk1vdmUodnR0Q3VlKSk7CiAgICAgfQogfQpAQCAtOTMsNyAr
OTYsNyBAQCB2b2lkIEluYmFuZFdlYlZUVFRleHRUcmFjazo6bmV3UmVnaW9uc1BhCiAKIHZvaWQg
SW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpmaWxlRmFpbGVkVG9QYXJzZSgpCiB7Ci0gICAgTE9HKE1l
ZGlhLCAiRXJyb3IgcGFyc2luZyBXZWJWVFQgc3RyZWFtLiIpOworICAgIEVSUk9SX0xPRyhMT0dJ
REVOVElGSUVSLCAiRXJyb3IgcGFyc2luZyBXZWJWVFQgc3RyZWFtLiIpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdl
YlZUVFRleHRUcmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
SW5iYW5kV2ViVlRUVGV4dFRyYWNrLmgJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ5LDYgKzQ5LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBuZXdSZWdpb25zUGFyc2VkKCkgZmlu
YWw7CiAgICAgdm9pZCBmaWxlRmFpbGVkVG9QYXJzZSgpIGZpbmFsOwogCisjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gIkluYmFuZFdlYlZUVFRleHRUcmFjayI7IH0KKyNlbmRpZgorCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYlZUVFBhcnNlcj4gbV93ZWJWVFRQYXJzZXI7CiB9OwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAkocmV2aXNp
b24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFj
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkhUTUxU
cmFja0VsZW1lbnQuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWVMaXN0LmgiCisjaW5jbHVkZSAi
VlRUQ3VlLmgiCiAjaW5jbHVkZSAiVlRUUmVnaW9uTGlzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC05Nyw2ICs5OCw3IEBAIHZvaWQgTG9hZGFibGVUZXh0VHJhY2s6Om5ld0N1ZXNBdmFp
bGFibGUKIAogICAgIGZvciAoYXV0byYgbmV3Q3VlIDogbmV3Q3VlcykgewogICAgICAgICBuZXdD
dWUtPnNldFRyYWNrKHRoaXMpOworICAgICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgKnRv
VlRUQ3VlKG5ld0N1ZS5nZXQoKSkpOwogICAgICAgICBtX2N1ZXMtPmFkZChuZXdDdWUucmVsZWFz
ZU5vbk51bGwoKSk7CiAgICAgfQogCkBAIC0xMTEsNiArMTEzLDggQEAgdm9pZCBMb2FkYWJsZVRl
eHRUcmFjazo6Y3VlTG9hZGluZ0NvbXBsZQogICAgIGlmICghbV90cmFja0VsZW1lbnQpCiAgICAg
ICAgIHJldHVybjsKIAorICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOworCiAgICAgbV90cmFj
a0VsZW1lbnQtPmRpZENvbXBsZXRlTG9hZChsb2FkaW5nRmFpbGVkID8gSFRNTFRyYWNrRWxlbWVu
dDo6RmFpbHVyZSA6IEhUTUxUcmFja0VsZW1lbnQ6OlN1Y2Nlc3MpOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5oCShyZXZpc2lvbiAy
MjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDEwIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGxv
YWRUaW1lckZpcmVkKCk7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBj
aGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiTG9hZGFibGVUZXh0
VHJhY2siOyB9CisjZW5kaWYKKwogICAgIEhUTUxUcmFja0VsZW1lbnQqIG1fdHJhY2tFbGVtZW50
OwogICAgIFRpbWVyIG1fbG9hZFRpbWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0VHJhY2tM
b2FkZXI+IG1fbG9hZGVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
LmNwcAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAKICNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCiAKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlci5o
IgpAQCAtMzE2LDcgKzMxNyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFRleHRUcmFjazo6YWRkQ3Vl
KFJlZjwKICAgICAvLyAyLiBBZGQgY3VlIHRvIHRoZSBtZXRob2QncyBUZXh0VHJhY2sgb2JqZWN0
J3MgdGV4dCB0cmFjaydzIHRleHQgdHJhY2sgbGlzdCBvZiBjdWVzLgogICAgIGN1ZS0+c2V0VHJh
Y2sodGhpcyk7CiAgICAgZW5zdXJlVGV4dFRyYWNrQ3VlTGlzdCgpLmFkZChjdWUuY29weVJlZigp
KTsKLSAgICAKKwogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPnRleHRUcmFj
a0FkZEN1ZSgqdGhpcywgY3VlKTsKIApAQCAtMzM2LDYgKzMzNyw4IEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IFRleHRUcmFjazo6cmVtb3ZlQ3VlKFQKICAgICBpZiAoIW1fY3VlcykKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAKKyAgICBERUJVR19MT0coTE9H
SURFTlRJRklFUiwgY3VlKTsKKwogICAgIC8vIDIuIFJlbW92ZSBjdWUgZnJvbSB0aGUgbWV0aG9k
J3MgVGV4dFRyYWNrIG9iamVjdCdzIHRleHQgdHJhY2sncyB0ZXh0IHRyYWNrIGxpc3Qgb2YgY3Vl
cy4KICAgICBtX2N1ZXMtPnJlbW92ZShjdWUpOwogICAgIGN1ZS5zZXRJc0FjdGl2ZShmYWxzZSk7
CkBAIC01NDIsNyArNTQ1LDYgQEAgYm9vbCBUZXh0VHJhY2s6OmNvbnRhaW5zT25seUZvcmNlZFN1
YnRpdAogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLQogdm9pZCBUZXh0VHJhY2s6OnNl
dExhbmd1YWdlKGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2UpCiB7CiAgICAgLy8gMTEuMSBs
YW5ndWFnZSwgb24gc2V0dGluZzoKQEAgLTU2NCw3ICs1NjYsNiBAQCB2b2lkIFRleHRUcmFjazo6
c2V0TGFuZ3VhZ2UoY29uc3QgQXRvbWljCiAgICAgaWYgKG1lZGlhRWxlbWVudCgpKQogICAgICAg
ICBtZWRpYUVsZW1lbnQoKS0+dGV4dFRyYWNrcygpLnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKIH0K
LQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2suaAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDYgKzE0NywxMCBA
QCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgVGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBUZXh0VHJhY2tDbGllbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIGtpbmQsIGNvbnN0IEF0
b21pY1N0cmluZyYgaWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21pY1N0
cmluZyYgbGFuZ3VhZ2UsIFRleHRUcmFja1R5cGUpOwogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gIlRleHRUcmFjayI7IH0KKyNlbmRpZgorCiAgICAgUmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+
IG1fY3VlczsKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrQ3VlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZS5jcHAJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrQ3VlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE2LDYgKzIxNiwzNSBA
QCBib29sIFRleHRUcmFja0N1ZTo6ZG9lc0V4dGVuZEN1ZShjb25zdCBUCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK1N0cmluZyBUZXh0VHJhY2tDdWU6OnRvU3RyaW5nKCkgY29uc3QKK3sKKyAgICBT
dHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisKKyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoInN0YXJ0
ID0gIik7CisgICAgYnVpbGRlci5hcHBlbmQobV9zdGFydFRpbWUudG9TdHJpbmcoKSk7CisKKyAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgZW5kID0gIik7CisgICAgYnVpbGRlci5hcHBlbmQo
bV9lbmRUaW1lLnRvU3RyaW5nKCkpOworCisgICAgY29uc3QgY2hhciogdHlwZSA9ICJHZW5lcmlj
IjsKKyAgICBzd2l0Y2ggKGN1ZVR5cGUoKSkgeworICAgIGNhc2UgVGV4dFRyYWNrQ3VlOjpHZW5l
cmljOgorICAgICAgICB0eXBlID0gIkdlbmVyaWMiOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFRleHRUcmFja0N1ZTo6V2ViVlRUOgorICAgICAgICB0eXBlID0gIldlYlZUVCI7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgVGV4dFRyYWNrQ3VlOjpEYXRhOgorICAgICAgICB0eXBlID0gIkRh
dGEiOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IiwgdHlwZSA9ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKHR5cGUpOworCisgICAgcmV0dXJuIGJ1
aWxkZXIudG9TdHJpbmcoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAkocmV2aXNpb24g
MjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAkod29y
a2luZyBjb3B5KQpAQCAtODQsNiArODQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsQ2hhbmdl
KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZSgpOwogCisgICAgdmlydHVhbCBTdHJpbmcg
dG9TdHJpbmcoKSBjb25zdDsKKwogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKICAgICB1c2lu
ZyBSZWZDb3VudGVkOjpkZXJlZjsKIApAQCAtMTE5LDQgKzEyMSwyMCBAQCBwcml2YXRlOgogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBQQUwgeworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUeXBlPgorc3RydWN0IExvZ0FyZ3VtZW50OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IExv
Z0FyZ3VtZW50PFdlYkNvcmU6OlRleHRUcmFja0N1ZT4geworICAgIHN0YXRpYyBTdHJpbmcgdG9T
dHJpbmcoY29uc3QgV2ViQ29yZTo6VGV4dFRyYWNrQ3VlJiBjdWUpCisgICAgeworICAgICAgICBy
ZXR1cm4gY3VlLnRvU3RyaW5nKCk7CisgICAgfQorfTsKKworCit9CisKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuY3Bw
CShyZXZpc2lvbiAyMjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZUdlbmVyaWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODksOCArMTg5LDYgQEAgdm9pZCBU
ZXh0VHJhY2tDdWVHZW5lcmljOjpzZXRGb250U2l6ZShpbgogICAgIGlmIChmb250U2l6ZU11bHRp
cGxpZXIoKSkKICAgICAgICAgc2l6ZSAqPSBmb250U2l6ZU11bHRpcGxpZXIoKSAvIDEwMDsKICAg
ICBkaXNwbGF5VHJlZUludGVybmFsKCkuc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eUZvbnRTaXplLCBscm91bmQoc2l6ZSksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwotCi0g
ICAgTE9HKE1lZGlhLCAiVGV4dFRyYWNrQ3VlR2VuZXJpYzo6c2V0Rm9udFNpemUgLSBzZXR0aW5n
IGN1ZSBmb250IHNpemUgdG8gJWxpIiwgbHJvdW5kKHNpemUpKTsKIH0KIAogYm9vbCBUZXh0VHJh
Y2tDdWVHZW5lcmljOjpjdWVDb250ZW50c01hdGNoKGNvbnN0IFRleHRUcmFja0N1ZSYgY3VlKSBj
b25zdApAQCAtMjY3LDcgKzI2NSw0NiBAQCBib29sIFRleHRUcmFja0N1ZUdlbmVyaWM6OmlzUG9z
aXRpb25lZEFiCiAgICAgCiAgICAgcmV0dXJuIFZUVEN1ZTo6aXNPcmRlcmVkQmVmb3JlKHRoYXQp
OwogfQotICAgIAorCitTdHJpbmcgVGV4dFRyYWNrQ3VlR2VuZXJpYzo6dG9TdHJpbmcoKSBjb25z
dAoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKworICAgIGJ1aWxkZXIuYXBwZW5kKFZU
VEN1ZTo6dG9TdHJpbmcoKSk7CisKKyAgICBpZiAobV9mb3JlZ3JvdW5kQ29sb3IuaXNWYWxpZCgp
KSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCBmb3JlZ3JvdW5kIGNvbG9yID0g
Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fZm9yZWdyb3VuZENvbG9yLnNlcmlhbGl6ZWQo
KSk7CisgICAgfQorCisgICAgaWYgKG1fYmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSkgeworICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgYmFja2dyb3VuZCBjb2xvciA9ICIpOworICAg
ICAgICBidWlsZGVyLmFwcGVuZChtX2JhY2tncm91bmRDb2xvci5zZXJpYWxpemVkKCkpOworICAg
IH0KKworICAgIGlmIChtX2hpZ2hsaWdodENvbG9yLmlzVmFsaWQoKSkgeworICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIiwgaGlsaWdodCBjb2xvciA9ICIpOworICAgICAgICBidWlsZGVy
LmFwcGVuZChtX2hpZ2hsaWdodENvbG9yLnNlcmlhbGl6ZWQoKSk7CisgICAgfQorCisgICAgaWYg
KG1fYmFzZUZvbnRTaXplUmVsYXRpdmVUb1ZpZGVvSGVpZ2h0KSB7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiLCBiYXNlIGZvbnQgc2l6ZSByZWxhdGl2ZSB0byB2aWRlbyBoZWlnaHQg
PSAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9iYXNlRm9udFNpemVSZWxhdGl2
ZVRvVmlkZW9IZWlnaHQpOworICAgIH0KKworICAgIGlmIChtX2ZvbnRTaXplTXVsdGlwbGllcikg
eworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgZm9udCBzaXplIG11bHRpcGxpZXIg
PSAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9mb250U2l6ZU11bHRpcGxpZXIp
OworICAgIH0KKworICAgIGlmICghbV9mb250TmFtZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIsIGZvbnQgPSAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
bV9mb250TmFtZSk7CisgICAgfQorCisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5oCShyZXZpc2lvbiAyMjIwMDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuaAkod29y
a2luZyBjb3B5KQpAQCAtNjcsNiArNjcsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEZvbnRT
aXplKGludCwgY29uc3QgSW50U2l6ZSYsIGJvb2wgaW1wb3J0YW50KSBmaW5hbDsKIAorICAgIFN0
cmluZyB0b1N0cmluZygpIGNvbnN0IGZpbmFsOworCiBwcml2YXRlOgogICAgIFRleHRUcmFja0N1
ZUdlbmVyaWMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQs
IGNvbnN0IE1lZGlhVGltZSYgZW5kLCBjb25zdCBTdHJpbmcmKTsKICAgICAKQEAgLTkyLDQgKzk0
LDE4IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFBB
TCB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CitzdHJ1Y3QgTG9nQXJndW1lbnQ7CisKK3Rl
bXBsYXRlIDw+CitzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6VGV4dFRyYWNrQ3VlR2VuZXJp
Yz4geworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6VGV4dFRyYWNr
Q3VlR2VuZXJpYyYgY3VlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGN1ZS50b1N0cmluZygpOwor
ICAgIH0KK307CisKK30KICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
cmFja0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJh
Y2tCYXNlLmNwcAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UcmFja0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVHJhY2tCYXNlLmgiCiAKKyNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgogCkBAIC0zNyw2ICszOCwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
YXRpYyBpbnQgc191bmlxdWVJZCA9IDA7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK3N0
YXRpYyBjb25zdCB2b2lkKiBuZXh0TG9nSWRlbnRpZmllcigpCit7CisgICAgc3RhdGljIHVpbnQ2
NF90IGxvZ0lkZW50aWZpZXIgPSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOworICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPigrK2xvZ0lkZW50aWZpZXIpOwor
fQorCitzdGF0aWMgUmVmUHRyPFBBTDo6TG9nZ2VyPiYgbnVsbExvZ2dlcigpCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxQQUw6OkxvZ2dlcj4+IGxvZ2dlcjsKKyAgICByZXR1
cm4gbG9nZ2VyOworfQorI2VuZGlmCisKIFRyYWNrQmFzZTo6VHJhY2tCYXNlKFR5cGUgdHlwZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiBpZCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBsYW5ndWFnZSkKICAgICA6IG1fdW5pcXVlSWQoKytzX3VuaXF1ZUlkKQog
ICAgICwgbV9pZChpZCkKQEAgLTQ2LDEwICs2MSwxNiBAQCBUcmFja0Jhc2U6OlRyYWNrQmFzZShU
eXBlIHR5cGUsIGNvbnN0IEF0CiB7CiAgICAgQVNTRVJUKHR5cGUgIT0gQmFzZVRyYWNrKTsKICAg
ICBtX3R5cGUgPSB0eXBlOwotfQogCi1UcmFja0Jhc2U6On5UcmFja0Jhc2UoKQoteworI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGlmICghbnVsbExvZ2dlcigpLmdldCgpKSB7CisgICAg
ICAgIG51bGxMb2dnZXIoKSA9IFBBTDo6TG9nZ2VyOjpjcmVhdGUodGhpcyk7CisgICAgICAgIG51
bGxMb2dnZXIoKS0+c2V0RW5hYmxlZCh0aGlzLCBmYWxzZSk7CisgICAgfQorCisgICAgbV9sb2dn
ZXIgPSBudWxsTG9nZ2VyKCkuZ2V0KCk7CisgICAgbV9sb2dJZGVudGlmaWVyID0gbmV4dExvZ0lk
ZW50aWZpZXIoKTsKKyNlbmRpZgogfQogCiBFbGVtZW50KiBUcmFja0Jhc2U6OmVsZW1lbnQoKQpA
QCAtNTcsNiArNzgsMTggQEAgRWxlbWVudCogVHJhY2tCYXNlOjplbGVtZW50KCkKICAgICByZXR1
cm4gbV9tZWRpYUVsZW1lbnQ7CiB9CiAKK3ZvaWQgVHJhY2tCYXNlOjpzZXRNZWRpYUVsZW1lbnQo
SFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBtX21lZGlhRWxlbWVudCA9IGVsZW1l
bnQ7CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBpZiAoZWxlbWVudCkgeworICAg
ICAgICBtX2xvZ2dlciA9ICZlbGVtZW50LT5sb2dnZXIoKTsKKyAgICAgICAgbV9sb2dJZGVudGlm
aWVyID0gZWxlbWVudC0+bG9nSWRlbnRpZmllcigpOworICAgIH0KKyNlbmRpZgorfQorCiAvLyBT
ZWU6IGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9iY3A0NyNzZWN0aW9uLTIuMQogc3RhdGlj
IGJvb2wgaXNWYWxpZEJDUDQ3TGFuZ3VhZ2VUYWcoY29uc3QgU3RyaW5nJiBsYW5ndWFnZVRhZykK
IHsKQEAgLTEzNCw2ICsxNjcsMTMgQEAgQXRvbWljU3RyaW5nIFRyYWNrQmFzZTo6dmFsaWRCQ1A0
N0xhbmd1YQogICAgIHJldHVybiBtX3ZhbGlkQkNQNDdMYW5ndWFnZTsKIH0KIAorI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAorV1RGTG9nQ2hhbm5lbCYgVHJhY2tCYXNlOjpsb2dDaGFubmVsKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gTG9nTWVkaWE7Cit9CisjZW5kaWYKKwogTWVkaWFUcmFja0Jh
c2U6Ok1lZGlhVHJhY2tCYXNlKFR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgY29u
c3QgQXRvbWljU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYW5ndWFnZSkKICAg
ICA6IFRyYWNrQmFzZSh0eXBlLCBpZCwgbGFiZWwsIGxhbmd1YWdlKQogewpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oCShyZXZpc2lvbiAyMjIwMDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsy
Nyw4IEBACiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAKKyNpbmNsdWRlIDxwYWwvTG9nZ2Vy
Lmg+CisjaW5jbHVkZSA8cGFsL0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0
b21pY1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNSwxNCArMzcsMTkgQEAg
Y2xhc3MgRWxlbWVudDsKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBTb3VyY2VCdWZm
ZXI7CiAKLWNsYXNzIFRyYWNrQmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPFRyYWNrQmFzZT4gewor
Y2xhc3MgVHJhY2tCYXNlCisgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxUcmFja0Jhc2U+CisjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBwcml2YXRlIFBBTDo6TG9nZ2VySGVscGVyCisj
ZW5kaWYKK3sKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5UcmFja0Jhc2UoKTsKKyAgICB2aXJ0dWFs
IH5UcmFja0Jhc2UoKSA9IGRlZmF1bHQ7CiAKICAgICBlbnVtIFR5cGUgeyBCYXNlVHJhY2ssIFRl
eHRUcmFjaywgQXVkaW9UcmFjaywgVmlkZW9UcmFjayB9OwogICAgIFR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZTsgfQogCi0gICAgdm9pZCBzZXRNZWRpYUVsZW1lbnQoSFRNTE1lZGlh
RWxlbWVudCogZWxlbWVudCkgeyBtX21lZGlhRWxlbWVudCA9IGVsZW1lbnQ7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgc2V0TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKICAgICBIVE1MTWVk
aWFFbGVtZW50KiBtZWRpYUVsZW1lbnQoKSB7IHJldHVybiBtX21lZGlhRWxlbWVudDsgfQogICAg
IHZpcnR1YWwgRWxlbWVudCogZWxlbWVudCgpOwogCkBAIC02Nyw2ICs3NCwxMiBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIGNvbnN0ID0gMDsKIAorI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAorICAgIGNvbnN0IFBBTDo6TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5h
bCB7IEFTU0VSVChtX2xvZ2dlcik7IHJldHVybiAqbV9sb2dnZXIuZ2V0KCk7IH0KKyAgICBjb25z
dCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dJZGVudGlm
aWVyOyB9CisgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZpbmFsOworI2Vu
ZGlmCisKIHByb3RlY3RlZDoKICAgICBUcmFja0Jhc2UoVHlwZSwgY29uc3QgQXRvbWljU3RyaW5n
JiBpZCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYW5n
dWFnZSk7CiAKQEAgLTgzLDYgKzk2LDEwIEBAIHByaXZhdGU6CiAgICAgQXRvbWljU3RyaW5nIG1f
bGFiZWw7CiAgICAgQXRvbWljU3RyaW5nIG1fbGFuZ3VhZ2U7CiAgICAgQXRvbWljU3RyaW5nIG1f
dmFsaWRCQ1A0N0xhbmd1YWdlOworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIFJlZlB0
cjxjb25zdCBQQUw6OkxvZ2dlcj4gbV9sb2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVu
dGlmaWVyOworI2VuZGlmCiB9OwogCiBjbGFzcyBNZWRpYVRyYWNrQmFzZSA6IHB1YmxpYyBUcmFj
a0Jhc2UgewpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAkocmV2aXNpb24g
MjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTU2LDggKzExNTYsNiBAQCB2b2lkIFZUVEN1ZTo6c2V0Rm9udFNpemUoaW50
IGZvbnRTaXplLCBjCiB7CiAgICAgaWYgKCFoYXNEaXNwbGF5VHJlZSgpIHx8ICFmb250U2l6ZSkK
ICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIExPRyhNZWRpYSwgIlRleHRUcmFja0N1ZTo6c2V0
Rm9udFNpemUgLSBzZXR0aW5nIGN1ZSBmb250IHNpemUgdG8gJWkiLCBmb250U2l6ZSk7CiAKICAg
ICBtX2Rpc3BsYXlUcmVlU2hvdWxkQ2hhbmdlID0gdHJ1ZTsKICAgICBkaXNwbGF5VHJlZUludGVy
bmFsKCkuc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBmb250U2l6
ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCwgaW1wb3J0YW50KTsKQEAgLTExNzQsNiArMTE3
MiwxOCBAQCBjb25zdCBWVFRDdWUqIHRvVlRUQ3VlKGNvbnN0IFRleHRUcmFja0N1CiAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IFZUVEN1ZSo+KGN1ZSk7CiB9CiAKK1N0cmluZyBWVFRDdWU6
OnRvU3RyaW5nKCkgY29uc3QKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisKKyAgICBi
dWlsZGVyLmFwcGVuZChUZXh0VHJhY2tDdWU6OnRvU3RyaW5nKCkpOworCisgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIsIGNvbnRlbnQgPSAiKTsKKyAgICBidWlsZGVyLmFwcGVuZCh0ZXh0KCkp
OworCisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3Vl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuaAkocmV2
aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuaAkod29y
a2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkQ2hh
bmdlKCkgb3ZlcnJpZGU7CiAKKyAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCBvdmVycmlkZTsK
KwogcHJvdGVjdGVkOgogICAgIFZUVEN1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3Qg
TWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIGNvbnN0IFN0cmluZyYgY29u
dGVudCk7CiAgICAgVlRUQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBXZWJWVFRD
dWVEYXRhJik7CkBAIC0yMjcsNCArMjI5LDE5IEBAIGNvbnN0IFZUVEN1ZSogdG9WVFRDdWUoY29u
c3QgVGV4dFRyYWNrQ3UKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2UgUEFM
IHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KK3N0cnVjdCBMb2dBcmd1bWVudDsKKwordGVt
cGxhdGUgPD4KK3N0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpWVFRDdWU+IHsKKyAgICBzdGF0
aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OlZUVEN1ZSYgY3VlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGN1ZS50b1N0cmluZygpOworICAgIH0KK307CisKK30KKwogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAJKHJldmlzaW9uIDIy
MjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTgyLDEwICs4MiwxMyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFZpZGVvVHJh
Y2s6OmNvbW1lbnRhCiAKIFZpZGVvVHJhY2s6OlZpZGVvVHJhY2soVmlkZW9UcmFja0NsaWVudCYg
Y2xpZW50LCBWaWRlb1RyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQogICAgIDogTWVkaWFUcmFj
a0Jhc2UoTWVkaWFUcmFja0Jhc2U6OlZpZGVvVHJhY2ssIHRyYWNrUHJpdmF0ZS5pZCgpLCB0cmFj
a1ByaXZhdGUubGFiZWwoKSwgdHJhY2tQcml2YXRlLmxhbmd1YWdlKCkpCi0gICAgLCBtX3NlbGVj
dGVkKHRyYWNrUHJpdmF0ZS5zZWxlY3RlZCgpKQogICAgICwgbV9jbGllbnQoJmNsaWVudCkKICAg
ICAsIG1fcHJpdmF0ZSh0cmFja1ByaXZhdGUpCisgICAgLCBtX3NlbGVjdGVkKHRyYWNrUHJpdmF0
ZS5zZWxlY3RlZCgpKQogeworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIG1fcHJpdmF0
ZS0+c2V0TG9nZ2VyKGxvZ2dlcigpLCBsb2dJZGVudGlmaWVyKCkpOworI2VuZGlmCiAgICAgbV9w
cml2YXRlLT5zZXRDbGllbnQodGhpcyk7CiAgICAgdXBkYXRlS2luZEZyb21Qcml2YXRlKCk7CiB9
CkBAIC0xMDMsNiArMTA2LDkgQEAgdm9pZCBWaWRlb1RyYWNrOjpzZXRQcml2YXRlKFZpZGVvVHJh
Y2tQcgogICAgIG1fcHJpdmF0ZS0+c2V0Q2xpZW50KG51bGxwdHIpOwogICAgIG1fcHJpdmF0ZSA9
IHRyYWNrUHJpdmF0ZTsKICAgICBtX3ByaXZhdGUtPnNldENsaWVudCh0aGlzKTsKKyNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKKyAgICBtX3ByaXZhdGUtPnNldExvZ2dlcihsb2dnZXIoKSwgbG9n
SWRlbnRpZmllcigpKTsKKyNlbmRpZgogCiAgICAgbV9wcml2YXRlLT5zZXRTZWxlY3RlZChtX3Nl
bGVjdGVkKTsKICAgICB1cGRhdGVLaW5kRnJvbVByaXZhdGUoKTsKQEAgLTIzNyw2ICsyNDMsMTQg
QEAgdm9pZCBWaWRlb1RyYWNrOjp1cGRhdGVLaW5kRnJvbVByaXZhdGUoKQogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQogCit2b2lkIFZpZGVvVHJhY2s6OnNldE1lZGlhRWxlbWVudChIVE1M
TWVkaWFFbGVtZW50KiBlbGVtZW50KQoreworICAgIFRyYWNrQmFzZTo6c2V0TWVkaWFFbGVtZW50
KGVsZW1lbnQpOworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIG1fcHJpdmF0ZS0+c2V0
TG9nZ2VyKGxvZ2dlcigpLCBsb2dJZGVudGlmaWVyKCkpOworI2VuZGlmCit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1ZpZGVvVHJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Zp
ZGVvVHJhY2suaAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WaWRlb1RyYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzczLDcgQEAgcHVibGljOgog
ICAgIGNvbnN0IE1lZGlhRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKCkgY29uc3Q7CiAKICAgICB2
b2lkIHNldFByaXZhdGUoVmlkZW9UcmFja1ByaXZhdGUmKTsKKyAgICB2b2lkIHNldE1lZGlhRWxl
bWVudChIVE1MTWVkaWFFbGVtZW50Kikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgVmlkZW9U
cmFjayhWaWRlb1RyYWNrQ2xpZW50JiwgVmlkZW9UcmFja1ByaXZhdGUmKTsKQEAgLTkyLDEwICs5
MywxMyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVLaW5kRnJvbVByaXZhdGUoKTsKIAot
ICAgIGJvb2wgbV9zZWxlY3RlZDsKLSAgICBWaWRlb1RyYWNrQ2xpZW50KiBtX2NsaWVudDsKKyNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiAiVmlkZW9UcmFjayI7IH0KKyNlbmRpZgogCisgICAgVmlkZW9U
cmFja0NsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07CiAgICAgUmVmPFZpZGVvVHJhY2tQcml2
YXRlPiBtX3ByaXZhdGU7CisgICAgYm9vbCBtX3NlbGVjdGVkIHsgZmFsc2UgfTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0F1ZGlvVHJhY2tQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaAkocmV2aXNpb24gMjIyMDA3KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaAkod29y
a2luZyBjb3B5KQpAQCAtNjIsNiArNjIsMTAgQEAgcHVibGljOgogICAgIGVudW0gS2luZCB7IEFs
dGVybmF0aXZlLCBEZXNjcmlwdGlvbiwgTWFpbiwgTWFpbkRlc2MsIFRyYW5zbGF0aW9uLCBDb21t
ZW50YXJ5LCBOb25lIH07CiAgICAgdmlydHVhbCBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBO
b25lOyB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBsb2dD
bGFzc05hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiQXVkaW9UcmFja1ByaXZhdGUiOyB9
CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIEF1ZGlvVHJhY2tQcml2YXRlKCkgPSBkZWZhdWx0
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oCShyZXZpc2lvbiAyMjIwMDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAKICNp
bmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgiCisjaW5jbHVkZSA8cGFsL0xv
Z2dlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQyLDggKzQzLDggQEAgcHVibGlj
OgogICAgIHN0YXRpYyBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4gY3JlYXRlKEN1ZUZv
cm1hdCBmb3JtYXQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
KGZvcm1hdCkpOyB9CiAgICAgdmlydHVhbCB+SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSgpIHsgfQog
Ci0gICAgdm9pZCBzZXRDbGllbnQoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudCogY2xpZW50
KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVu
dCogY2xpZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jbGllbnQ7IH0KKyAgICB2b2lk
IHNldENsaWVudChJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50KiBjbGllbnQpIHsgbV9jbGll
bnQgPSBjbGllbnQ7IH0KIAogICAgIGVudW0gTW9kZSB7CiAgICAgICAgIERpc2FibGVkLApAQCAt
NzgsNiArNzksMTAgQEAgcHVibGljOgogCiAgICAgQ3VlRm9ybWF0IGN1ZUZvcm1hdCgpIGNvbnN0
IHsgcmV0dXJuIG1fZm9ybWF0OyB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBj
b25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZSI7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZShDdWVGb3JtYXQgZm9ybWF0KQogICAgICAgICA6IG1fZm9ybWF0KGZvcm1h
dCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFj
a1ByaXZhdGVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgJKHJldmlzaW9uIDIyMjAwNykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZh
dGVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTMsNiArOTMsOCBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGRvZXNFeHRlbmRDdWVEYXRhKGNvbnN0IEdlbmVyaWNDdWVEYXRhJikgY29uc3Q7CiAK
KyAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBHZW5lcmljQ3Vl
RGF0YSgpID0gZGVmYXVsdDsKIApAQCAtMTEzLDYgKzExNSwxMDIgQEAgcHJpdmF0ZToKICAgICBT
dGF0dXMgbV9zdGF0dXMgeyBVbmluaXRpYWxpemVkIH07CiB9OwogCitpbmxpbmUgU3RyaW5nIEdl
bmVyaWNDdWVEYXRhOjp0b1N0cmluZygpIGNvbnN0Cit7CisgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOworCisgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJzdGFydCA9ICIpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKG1fc3RhcnRUaW1lLnRvU3RyaW5nKCkpOworCisgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCIsIGVuZCA9ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKG1fZW5kVGltZS50b1N0cmlu
ZygpKTsKKworICAgIGNvbnN0IGNoYXIqIHN0YXR1czsKKyAgICBzd2l0Y2ggKG1fc3RhdHVzKSB7
CisgICAgY2FzZSBHZW5lcmljQ3VlRGF0YTo6VW5pbml0aWFsaXplZDoKKyAgICAgICAgc3RhdHVz
ID0gIlVuaW5pdGlhbGl6ZWQiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdlbmVyaWNDdWVE
YXRhOjpQYXJ0aWFsOgorICAgICAgICBzdGF0dXMgPSAiUGFydGlhbCI7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgR2VuZXJpY0N1ZURhdGE6OkNvbXBsZXRlOgorICAgICAgICBzdGF0dXMgPSAi
Q29tcGxldGUiOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCIsIHN0YXR1cyA9ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKHN0YXR1cyk7CisKKyAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgaWQgPSAiKTsKKyAgICBidWlsZGVyLmFwcGVuZChtX2lk
KTsKKworICAgIGlmIChtX2xpbmUgPiAwKSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiLCBsaW5lID0gIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fbGluZSk7Cisg
ICAgfQorCisgICAgaWYgKG1fc2l6ZSA+IDApIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCIsIHNpemUgPSAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9zaXplKTsK
KyAgICB9CisKKyAgICBpZiAobV9wb3NpdGlvbiA+IDApIHsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIsIHBvc2l0aW9uID0gIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVy
KG1fcG9zaXRpb24pOworICAgIH0KKworICAgIGlmIChtX2FsaWduICE9IE5vbmUpIHsKKyAgICAg
ICAgY29uc3QgY2hhciogYWxpZ247CisgICAgICAgIHN3aXRjaCAobV9hbGlnbikgeworICAgICAg
ICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpTdGFydDoKKyAgICAgICAgICAgIGFsaWduID0gIlN0YXJ0
IjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdlbmVyaWNDdWVEYXRhOjpNaWRk
bGU6CisgICAgICAgICAgICBhbGlnbiA9ICJNaWRkbGUiOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgR2VuZXJpY0N1ZURhdGE6OkVuZDoKKyAgICAgICAgICAgIGFsaWduID0gIkVu
ZCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHZW5lcmljQ3VlRGF0YTo6Tm9u
ZToKKyAgICAgICAgICAgIGFsaWduID0gIk5vbmUiOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIGFsaWduID0gIik7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKGFsaWduKTsKKyAgICB9CisKKyAgICBpZiAobV9mb3JlZ3JvdW5k
Q29sb3IuaXNWYWxpZCgpKSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCBmb3Jl
Z3JvdW5kIGNvbG9yID0gIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fZm9yZWdyb3VuZENv
bG9yLnNlcmlhbGl6ZWQoKSk7CisgICAgfQorCisgICAgaWYgKG1fYmFja2dyb3VuZENvbG9yLmlz
VmFsaWQoKSkgeworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgYmFja2dyb3VuZCBj
b2xvciA9ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChtX2JhY2tncm91bmRDb2xvci5zZXJp
YWxpemVkKCkpOworICAgIH0KKworICAgIGlmIChtX2hpZ2hsaWdodENvbG9yLmlzVmFsaWQoKSkg
eworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgaGlsaWdodCBjb2xvciA9ICIpOwor
ICAgICAgICBidWlsZGVyLmFwcGVuZChtX2hpZ2hsaWdodENvbG9yLnNlcmlhbGl6ZWQoKSk7Cisg
ICAgfQorCisgICAgaWYgKG1fYmFzZUZvbnRTaXplKSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiLCBiYXNlIGZvbnQgc2l6ZSA9ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZE51
bWJlcihtX2Jhc2VGb250U2l6ZSk7CisgICAgfQorCisgICAgaWYgKG1fcmVsYXRpdmVGb250U2l6
ZSkgeworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgcmVsYXRpdmUgZm9udCBzaXpl
ID0gIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fcmVsYXRpdmVGb250U2l6ZSk7
CisgICAgfQorCisgICAgaWYgKCFtX2ZvbnROYW1lLmlzRW1wdHkoKSkgeworICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIiwgZm9udCA9ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCht
X2ZvbnROYW1lKTsKKyAgICB9CisKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQor
CiBpbmxpbmUgYm9vbCBHZW5lcmljQ3VlRGF0YTo6ZG9lc0V4dGVuZEN1ZURhdGEoY29uc3QgR2Vu
ZXJpY0N1ZURhdGEmIG90aGVyKSBjb25zdAogewogICAgIGlmIChtX3JlbGF0aXZlRm9udFNpemUg
IT0gb3RoZXIubV9yZWxhdGl2ZUZvbnRTaXplKQpAQCAtMTY2LDQgKzI2NCwxOSBAQCBwdWJsaWM6
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFBBTCB7CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFR5cGU+CitzdHJ1Y3QgTG9nQXJndW1lbnQ7CisKK3RlbXBsYXRlIDw+CitzdHJ1
Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE+IHsKKyAgICBzdGF0aWMgU3Ry
aW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhJiBjdWUpCisgICAgewor
ICAgICAgICByZXR1cm4gY3VlLnRvU3RyaW5nKCk7CisgICAgfQorfTsKKworfQorCiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJpdmF0ZUJhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNr
UHJpdmF0ZUJhc2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1RyYWNrUHJpdmF0ZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVHJhY2tQ
cml2YXRlQmFzZS5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiTG9n
Z2luZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKK3ZvaWQgVHJhY2tQcml2YXRlQmFzZTo6c2V0TG9nZ2VyKGNvbnN0IFBBTDo6TG9nZ2VyJiBs
b2dnZXIsIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIpCit7CisgICAgbV9sb2dnZXIgPSAmbG9n
Z2VyOworICAgIG1fbG9nSWRlbnRpZmllciA9IGxvZ0lkZW50aWZpZXI7Cit9CisKK1dURkxvZ0No
YW5uZWwmIFRyYWNrUHJpdmF0ZUJhc2U6OmxvZ0NoYW5uZWwoKSBjb25zdAoreworICAgIHJldHVy
biBMb2dNZWRpYTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVHJhY2tQcml2YXRlQmFz
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNr
UHJpdmF0ZUJhc2UuaAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsy
OSw4IEBACiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAKKyNpbmNsdWRlIDxwYWwvTG9nZ2Vy
Lmg+CisjaW5jbHVkZSA8cGFsL0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRp
bWUuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KQEAgLTQ0LDcgKzQ2LDEyIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgd2lsbFJlbW92ZSgpID0gMDsKIH07CiAKLWNsYXNzIFRyYWNrUHJpdmF0ZUJh
c2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VHJhY2tQcml2YXRlQmFzZT4geworY2xh
c3MgVHJhY2tQcml2YXRlQmFzZQorICAgIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRy
YWNrUHJpdmF0ZUJhc2U+CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBwcml2YXRl
IFBBTDo6TG9nZ2VySGVscGVyCisjZW5kaWYKK3sKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShU
cmFja1ByaXZhdGVCYXNlKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
QEAgLTY2LDggKzczLDIwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGNsaWVudC0+d2lsbFJlbW92
ZSgpOwogICAgIH0KIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIHZvaWQgc2V0TG9n
Z2VyKGNvbnN0IFBBTDo6TG9nZ2VyJiwgY29uc3Qgdm9pZCopOworICAgIGNvbnN0IFBBTDo6TG9n
Z2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IEFTU0VSVChtX2xvZ2dlcik7IHJldHVybiAqbV9s
b2dnZXIuZ2V0KCk7IH0KKyAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CisgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hh
bm5lbCgpIGNvbnN0IGZpbmFsOworI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBUcmFja1ByaXZh
dGVCYXNlKCkgPSBkZWZhdWx0OworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgUmVm
UHRyPGNvbnN0IFBBTDo6TG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lk
ZW50aWZpZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZh
dGUuaAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvVmlkZW9UcmFja1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsMTAgQEAg
cHVibGljOgogICAgIGVudW0gS2luZCB7IEFsdGVybmF0aXZlLCBDYXB0aW9ucywgTWFpbiwgU2ln
biwgU3VidGl0bGVzLCBDb21tZW50YXJ5LCBOb25lIH07CiAgICAgdmlydHVhbCBLaW5kIGtpbmQo
KSBjb25zdCB7IHJldHVybiBOb25lOyB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAg
ICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiVmlkZW9U
cmFja1ByaXZhdGUiOyB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIFZpZGVvVHJhY2tQcml2
YXRlKCkgPSBkZWZhdWx0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1By
aXZhdGVBVkZPYmpDSW1wbC5tbQkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbXBvcnQgPEFWRm91bmRhdGlv
bi9BVlBsYXllckl0ZW0uaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckl0ZW1UcmFj
ay5oPgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CisjaW1wb3J0IDxwYWwvTG9nZ2VyLmg+CiAj
aW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KIAogQGNsYXNzIEFWTWVkaWFTZWxlY3Rpb25PcHRp
b247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFU
ZXh0VHJhY2tQcml2YXRlQVZGLmNwcAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNr
UHJpdmF0ZUFWRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1
ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CisjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlIDxDb3JlTWVkaWEvQ29yZU1lZGlh
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgpAQCAtNzYsMTIgKzc3LDEyIEBAIHZvaWQgSW5iYW5kTWV0YWRhdGFUZXh0VHJh
Y2tQcml2YXRlQVZGOjoKICAgICBpZiAodGltZSA+PSBtX2N1cnJlbnRDdWVTdGFydFRpbWUpIHsK
ICAgICAgICAgaWYgKGNsaWVudCgpKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHBhcnRpYWxD
dWUgOiBtX2luY29tcGxldGVDdWVzKSB7Ci0gICAgICAgICAgICAgICAgTE9HKE1lZGlhLCAiSW5i
YW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjp1cGRhdGVQZW5kaW5nQ3VlRW5kVGltZXMo
JXApIC0gdXBkYXRpbmcgY3VlOiBzdGFydD0lcywgZW5kPSVzIiwgdGhpcywgdG9TdHJpbmcocGFy
dGlhbEN1ZS5zdGFydFRpbWUpLnV0ZjgoKS5kYXRhKCksIHRvU3RyaW5nKHRpbWUpLnV0ZjgoKS5k
YXRhKCkpOworICAgICAgICAgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJ1cGRhdGlu
ZyBjdWU6IHN0YXJ0ID0gIiwgcGFydGlhbEN1ZS5zdGFydFRpbWUsICIsIGVuZCA9ICIsIHRpbWUp
OwogICAgICAgICAgICAgICAgIGNsaWVudCgpLT51cGRhdGVEYXRhQ3VlKHBhcnRpYWxDdWUuc3Rh
cnRUaW1lLCB0aW1lLCAqcGFydGlhbEN1ZS5jdWVEYXRhKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0gZWxzZQotICAgICAgICBMT0coTWVkaWEsICJJbmJhbmRNZXRhZGF0YVRleHRU
cmFja1ByaXZhdGVBVkY6OnVwZGF0ZVBlbmRpbmdDdWVFbmRUaW1lcyBuZWdhdGl2ZSBsZW5ndGgg
Y3VlKHMpIGlnbm9yZWQ6IHN0YXJ0PSVzLCBlbmQ9JXNcbiIsIHRvU3RyaW5nKG1fY3VycmVudEN1
ZVN0YXJ0VGltZSkudXRmOCgpLmRhdGEoKSwgdG9TdHJpbmcodGltZSkudXRmOCgpLmRhdGEoKSk7
CisgICAgICAgIFdBUk5JTkdfTE9HKExPR0lERU5USUZJRVIsICJuZWdhdGl2ZSBsZW5ndGggY3Vl
KHMpIGlnbm9yZWQ6IHN0YXJ0ID0gIiwgbV9jdXJyZW50Q3VlU3RhcnRUaW1lLCAiLCBlbmQgPSAi
LCB0aW1lKTsKIAogICAgIG1faW5jb21wbGV0ZUN1ZXMuc2hyaW5rKDApOwogICAgIG1fY3VycmVu
dEN1ZVN0YXJ0VGltZSA9IE1lZGlhVGltZTo6emVyb1RpbWUoKTsKQEAgLTkyLDcgKzkzLDcgQEAg
dm9pZCBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6Ogogdm9pZCBJbmJhbmRNZXRh
ZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6OmZsdXNoUGFydGlhbEN1ZXMoKQogewogICAgIGlmICht
X2N1cnJlbnRDdWVTdGFydFRpbWUgJiYgbV9pbmNvbXBsZXRlQ3Vlcy5zaXplKCkpCi0gICAgICAg
IExPRyhNZWRpYSwgIkluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cmVzZXRDdWVW
YWx1ZXMgZmx1c2hpbmcgaW5jb21wbGV0ZSBkYXRhIGZvciBjdWVzOiBzdGFydD0lc1xuIiwgdG9T
dHJpbmcobV9jdXJyZW50Q3VlU3RhcnRUaW1lKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgSU5G
T19MT0coTE9HSURFTlRJRklFUiwgImZsdXNoaW5nIGluY29tcGxldGUgZGF0YSBmb3IgY3Vlczog
c3RhcnQgPSAiLCBtX2N1cnJlbnRDdWVTdGFydFRpbWUpOwogCiAgICAgaWYgKGNsaWVudCgpKSB7
CiAgICAgICAgIGZvciAoYXV0byYgcGFydGlhbEN1ZSA6IG1faW5jb21wbGV0ZUN1ZXMpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0
YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJp
dmF0ZUFWRi5oCShyZXZpc2lvbiAyMjIwMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGKEtpbmQsIEN1ZUZvcm1hdCwgY29uc3Qg
QXRvbWljU3RyaW5nJik7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBj
aGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiSW5iYW5kTWV0YWRhdGFU
ZXh0VHJhY2tQcml2YXRlQVZGIjsgfQorI2VuZGlmCisKICAgICBLaW5kIG1fa2luZDsKICAgICBB
dG9taWNTdHJpbmcgbV9pZDsKICAgICBBdG9taWNTdHJpbmcgbV9pbkJhbmRNZXRhZGF0YVRyYWNr
RGlzcGF0Y2hUeXBlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGLmNwcAkocmV2aXNpb24gMjIyMDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMCArMjgsMTAgQEAKIAogI2lmIEVOQUJMRShWSURFTykg
JiYgKFVTRShBVkZPVU5EQVRJT04pIHx8IFBMQVRGT1JNKElPUykpCiAKLSNpbmNsdWRlICJDb3Jl
TWVkaWFTb2Z0TGluay5oIgogI2luY2x1ZGUgIklTT1ZUVEN1ZS5oIgogI2luY2x1ZGUgIkluYmFu
ZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVk
ZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJNZWRpYVRpbWVBVkZvdW5kYXRpb24uaCIKICNp
bmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9EYXRhVmll
dy5oPgpAQCAtNDMsNiArNDMsOCBAQAogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5h
bWVzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAKKyNpbmNsdWRlICJD
b3JlTWVkaWFTb2Z0TGluay5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEFWRkluYmFuZFRy
YWNrUGFyZW50Ojp+QVZGSW5iYW5kVHJhY2tQYXJlbnQoKQpAQCAtMzE1LDExICszMTcsMTMgQEAg
dm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQwogCiB2b2lkIEluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NBdHRyaWJ1dGVkU3RyaW5ncyhDRkFycmF5UmVmIGF0
dHJpYnV0ZWRTdHJpbmdzLCBjb25zdCBNZWRpYVRpbWUmIHRpbWUpCiB7Ci0gICAgTE9HKE1lZGlh
LCAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZSAtICVsaSBjdWVzIGF0IHRp
bWUgJXNcbiIsIGF0dHJpYnV0ZWRTdHJpbmdzID8gQ0ZBcnJheUdldENvdW50KGF0dHJpYnV0ZWRT
dHJpbmdzKSA6IDAsIHRvU3RyaW5nKHRpbWUpLnV0ZjgoKS5kYXRhKCkpOworICAgIENGSW5kZXgg
Y291bnQgPSBhdHRyaWJ1dGVkU3RyaW5ncyA/IENGQXJyYXlHZXRDb3VudChhdHRyaWJ1dGVkU3Ry
aW5ncykgOiAwOworCisgICAgaWYgKGNvdW50KQorICAgICAgICBERUJVR19MT0coTE9HSURFTlRJ
RklFUiwgImFkZGVkICIsIGNvdW50LCBjb3VudCA+IDEgPyAiIGN1ZXMiIDogIiBjdWUiLCAiIGF0
IHRpbWUgIiwgdGltZSk7CiAKICAgICBWZWN0b3I8UmVmPEdlbmVyaWNDdWVEYXRhPj4gYXJyaXZp
bmdDdWVzOwotICAgIGlmIChhdHRyaWJ1dGVkU3RyaW5ncykgewotICAgICAgICBDRkluZGV4IGNv
dW50ID0gQ0ZBcnJheUdldENvdW50KGF0dHJpYnV0ZWRTdHJpbmdzKTsKKyAgICBpZiAoY291bnQp
IHsKICAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewogICAgICAg
ICAgICAgQ0ZBdHRyaWJ1dGVkU3RyaW5nUmVmIGF0dHJpYnV0ZWRTdHJpbmcgPSBzdGF0aWNfY2Fz
dDxDRkF0dHJpYnV0ZWRTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoYXR0cmlidXRl
ZFN0cmluZ3MsIGkpKTsKIApAQCAtMzM5LDggKzM0Myw2IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRjo6cHJvY2Vzc0EKICAgICAgICAgICAgIGlmIChjdWVEYXRhLT5wb3NpdGlvbigp
ID49IDAgJiYgY3VlRGF0YS0+c2l6ZSgpID4gMCkKICAgICAgICAgICAgICAgICBjdWVEYXRhLT5z
ZXRQb3NpdGlvbihjdWVEYXRhLT5wb3NpdGlvbigpIC0gY3VlRGF0YS0+c2l6ZSgpIC8gMik7CiAK
LSAgICAgICAgICAgIExPRyhNZWRpYSwgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nl
c3NDdWUoJXApIC0gY29uc2lkZXJpbmcgY3VlIChcIiVzXCIpIGZvciB0aW1lID0gJXMsIHBvc2l0
aW9uID0gICUuMmYsIGxpbmUgPSAgJS4yZiIsIHRoaXMsIGN1ZURhdGEtPmNvbnRlbnQoKS51dGY4
KCkuZGF0YSgpLCB0b1N0cmluZyhjdWVEYXRhLT5zdGFydFRpbWUoKSkudXRmOCgpLmRhdGEoKSwg
Y3VlRGF0YS0+cG9zaXRpb24oKSwgY3VlRGF0YS0+bGluZSgpKTsKLQogICAgICAgICAgICAgY3Vl
RGF0YS0+c2V0U3RhdHVzKEdlbmVyaWNDdWVEYXRhOjpQYXJ0aWFsKTsKIAogICAgICAgICAgICAg
YXJyaXZpbmdDdWVzLmFwcGVuZChXVEZNb3ZlKGN1ZURhdGEpKTsKQEAgLTM1OSw3ICszNjEsNyBA
QCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NBCiAgICAgICAgICAgICAg
ICAgICAgIGlmICghYXJyaXZpbmdDdWUtPmRvZXNFeHRlbmRDdWVEYXRhKCpjdWVEYXRhKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIG5vbkV4dGVuc2lvbkN1ZXMuYXBwZW5kKFdURk1vdmUoYXJy
aXZpbmdDdWUpKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAg
ICAgICAgTE9HKE1lZGlhLCAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZSgl
cCkgLSBmb3VuZCBhbiBleHRlbnNpb24gY3VlIChcIiVzXCIpIGZvciB0aW1lID0gJS4yZiwgZW5k
ID0gJS4yZiwgcG9zaXRpb24gPSAgJS4yZiwgbGluZSA9ICAlLjJmIiwgdGhpcywgYXJyaXZpbmdD
dWUtPmNvbnRlbnQoKS51dGY4KCkuZGF0YSgpLCBhcnJpdmluZ0N1ZS0+c3RhcnRUaW1lKCkudG9E
b3VibGUoKSwgYXJyaXZpbmdDdWUtPmVuZFRpbWUoKS50b0RvdWJsZSgpLCBhcnJpdmluZ0N1ZS0+
cG9zaXRpb24oKSwgYXJyaXZpbmdDdWUtPmxpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgImZvdW5kIGFuIGV4dGVuc2lvbiBjdWU6ICIsICpj
dWVEYXRhKTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBib29sIGN1cnJl
bnRDdWVJc0V4dGVuZGVkID0gKGFycml2aW5nQ3Vlcy5zaXplKCkgIT0gbm9uRXh0ZW5zaW9uQ3Vl
cy5zaXplKCkpOwpAQCAtMzczLDE2ICszNzUsMTcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGOjpwcm9jZXNzQQogICAgICAgICAgICAgICAgICAgICBjdWVEYXRhLT5zZXRFbmRUaW1l
KG1fY3VycmVudEN1ZUVuZFRpbWUpOwogICAgICAgICAgICAgICAgICAgICBjdWVEYXRhLT5zZXRT
dGF0dXMoR2VuZXJpY0N1ZURhdGE6OkNvbXBsZXRlKTsKIAotICAgICAgICAgICAgICAgICAgICBM
T0coTWVkaWEsICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQ3VlKCVwKSAtIHVw
ZGF0aW5nIGN1ZSBcIiVzXCI6IHN0YXJ0PSUuMmYsIGVuZD0lLjJmIiwgdGhpcywgY3VlRGF0YS0+
Y29udGVudCgpLnV0ZjgoKS5kYXRhKCksIGN1ZURhdGEtPnN0YXJ0VGltZSgpLnRvRG91YmxlKCks
IG1fY3VycmVudEN1ZUVuZFRpbWUudG9Eb3VibGUoKSk7CisgICAgICAgICAgICAgICAgICAgIERF
QlVHX0xPRyhMT0dJREVOVElGSUVSLCAidXBkYXRpbmcgY3VlIHN0YXJ0ID0gIiwgY3VlRGF0YS0+
c3RhcnRUaW1lKCksICIsIGVuZCA9ICIsIGN1ZURhdGEtPmVuZFRpbWUoKSwgIiwgY29udGVudCA9
ICIsIGN1ZURhdGEtPmNvbnRlbnQoKSk7CisKICAgICAgICAgICAgICAgICAgICAgY2xpZW50KCkt
PnVwZGF0ZUdlbmVyaWNDdWUoKmN1ZURhdGEpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gYXNzdW1lIHRoYXQgdGhlIGltcGxpY2l0
IGR1cmF0aW9uIGlzIGludmFsaWQgZm9yIGN1ZXMgZGVsaXZlcmVkIGR1cmluZyBhIHNlZWsgYmVj
YXVzZSB0aGUgQVZGIGRlY29kZSBwaXBlbGluZSBtYXkgbm90CiAgICAgICAgICAgICAgICAgICAg
IC8vIHNlZSBldmVyeSBjdWUsIHNvIERPIE5PVCB1cGRhdGUgY3VlIGR1cmF0aW9uIHdoaWxlIHNl
ZWtpbmcuCi0gICAgICAgICAgICAgICAgICAgIExPRyhNZWRpYSwgIkluYmFuZFRleHRUcmFja1By
aXZhdGVBVkY6OnByb2Nlc3NDdWUoJXApIC0gaWdub3JpbmcgY3VlIGRlbGl2ZXJlZCBkdXJpbmcg
c2Vlazogc3RhcnQ9JXMsIGVuZD0lcywgY29udGVudD1cIiVzXCIiLCB0aGlzLCB0b1N0cmluZyhj
dWVEYXRhLT5zdGFydFRpbWUoKSkudXRmOCgpLmRhdGEoKSwgdG9TdHJpbmcobV9jdXJyZW50Q3Vl
RW5kVGltZSkudXRmOCgpLmRhdGEoKSwgY3VlRGF0YS0+Y29udGVudCgpLnV0ZjgoKS5kYXRhKCkp
OworICAgICAgICAgICAgICAgICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgImlnbm9yaW5n
IGN1ZSBkZWxpdmVyZWQgZHVyaW5nIHNlZWs6ICIsICpjdWVEYXRhKTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgTE9HKE1lZGlh
LCAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZSBuZWdhdGl2ZSBsZW5ndGgg
Y3VlKHMpIGlnbm9yZWQ6IHN0YXJ0PSVzLCBlbmQ9JXNcbiIsICB0b1N0cmluZyhtX2N1cnJlbnRD
dWVTdGFydFRpbWUpLnV0ZjgoKS5kYXRhKCksIHRvU3RyaW5nKG1fY3VycmVudEN1ZUVuZFRpbWUp
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJu
ZWdhdGl2ZSBsZW5ndGggY3VlKHMpOiBzdGFydCA9ICIsIG1fY3VycmVudEN1ZVN0YXJ0VGltZSwg
IiwgZW5kID0gIiwgbV9jdXJyZW50Q3VlRW5kVGltZSk7CiAKICAgICAgICAgcmVtb3ZlQ29tcGxl
dGVkQ3VlcygpOwogICAgIH0KQEAgLTM5NCw5ICszOTcsNyBAQCB2b2lkIEluYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkY6OnByb2Nlc3NBCiAKICAgICBmb3IgKGF1dG8mIGN1ZURhdGEgOiBhcnJpdmlu
Z0N1ZXMpIHsKICAgICAgICAgbV9jdWVzLmFwcGVuZChjdWVEYXRhLnB0cigpKTsKLSAgICAgICAg
Ci0gICAgICAgIExPRyhNZWRpYSwgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3ND
dWUoJXApIC0gYWRkaW5nIGN1ZSBcIiVzXCIgZm9yIHRpbWUgPSAlLjJmLCBlbmQgPSAlLjJmLCBw
b3NpdGlvbiA9ICAlLjJmLCBsaW5lID0gICUuMmYiLCB0aGlzLCBjdWVEYXRhLT5jb250ZW50KCku
dXRmOCgpLmRhdGEoKSwgY3VlRGF0YS0+c3RhcnRUaW1lKCkudG9Eb3VibGUoKSwgY3VlRGF0YS0+
ZW5kVGltZSgpLnRvRG91YmxlKCksIGN1ZURhdGEtPnBvc2l0aW9uKCksIGN1ZURhdGEtPmxpbmUo
KSk7Ci0KKyAgICAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsICJhZGRpbmcgY3VlOiAiLCBj
dWVEYXRhLmdldCgpKTsKICAgICAgICAgY2xpZW50KCktPmFkZEdlbmVyaWNDdWUoY3VlRGF0YSk7
CiAgICAgfQogCkBAIC00MjMsMTAgKzQyNCwxMSBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZh
dGVBVkY6OnJlbW92ZUNvCiAgICAgaWYgKGNsaWVudCgpKSB7CiAgICAgICAgIGxvbmcgY3VycmVu
dEN1ZSA9IG1fY3Vlcy5zaXplKCkgLSAxOwogICAgICAgICBmb3IgKDsgY3VycmVudEN1ZSA+PSAw
OyAtLWN1cnJlbnRDdWUpIHsKLSAgICAgICAgICAgIGlmIChtX2N1ZXNbY3VycmVudEN1ZV0tPnN0
YXR1cygpICE9IEdlbmVyaWNDdWVEYXRhOjpDb21wbGV0ZSkKKyAgICAgICAgICAgIGF1dG8mIGN1
ZSA9IG1fY3Vlc1tjdXJyZW50Q3VlXTsKKyAgICAgICAgICAgIGlmIChjdWUtPnN0YXR1cygpICE9
IEdlbmVyaWNDdWVEYXRhOjpDb21wbGV0ZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgICAgICAgICAgTE9HKE1lZGlhLCAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cmVtb3Zl
Q29tcGxldGVkQ3VlcyglcCkgLSByZW1vdmluZyBjdWUgXCIlc1wiOiBzdGFydD0lLjJmLCBlbmQ9
JS4yZiIsIHRoaXMsIG1fY3Vlc1tjdXJyZW50Q3VlXS0+Y29udGVudCgpLnV0ZjgoKS5kYXRhKCks
IG1fY3Vlc1tjdXJyZW50Q3VlXS0+c3RhcnRUaW1lKCkudG9Eb3VibGUoKSwgbV9jdWVzW2N1cnJl
bnRDdWVdLT5lbmRUaW1lKCkudG9Eb3VibGUoKSk7CisgICAgICAgICAgICBERUJVR19MT0coTE9H
SURFTlRJRklFUiwgInJlbW92aW5nIGN1ZTogIiwgKmN1ZSk7CiAKICAgICAgICAgICAgIG1fY3Vl
cy5yZW1vdmUoY3VycmVudEN1ZSk7CiAgICAgICAgIH0KQEAgLTQ0Miw3ICs0NDQsNyBAQCB2b2lk
IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnJlbW92ZUNvCiB2b2lkIEluYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkY6OnJlc2V0Q3VlVmFsdWVzKCkKIHsKICAgICBpZiAobV9jdXJyZW50Q3VlRW5k
VGltZSAmJiBtX2N1ZXMuc2l6ZSgpKQotICAgICAgICBMT0coTWVkaWEsICJJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGOjpyZXNldEN1ZVZhbHVlcyBmbHVzaGluZyBkYXRhIGZvciBjdWVzOiBzdGFy
dD0lc1xuIiwgdG9TdHJpbmcobV9jdXJyZW50Q3VlU3RhcnRUaW1lKS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImZsdXNoaW5nIGRhdGEgZm9yIGN1ZXM6
IHN0YXJ0ID0gIiwgbV9jdXJyZW50Q3VlU3RhcnRUaW1lKTsKIAogICAgIGlmIChhdXRvKiBjbGll
bnQgPSB0aGlzLT5jbGllbnQoKSkgewogICAgICAgICBmb3IgKGF1dG8mIGN1ZSA6IG1fY3VlcykK
QEAgLTQ3OCw3ICs0ODAsNyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nl
c3NOCiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9HKE1lZGlhLCAi
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc05hdGl2ZVNhbXBsZXMgLSAlbGkgc2Ft
cGxlIGJ1ZmZlcnMgYXQgdGltZSAlLjJmXG4iLCBjb3VudCwgcHJlc2VudGF0aW9uVGltZS50b0Rv
dWJsZSgpKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCBjb3VudCwgIiBzYW1wbGUgYnVm
ZmVycyBhdCB0aW1lICIsIHByZXNlbnRhdGlvblRpbWUpOwogCiAgICAgZm9yIChDRkluZGV4IGkg
PSAwOyBpIDwgY291bnQ7IGkrKykgewogICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZl
cjsKQEAgLTQ5MCwyNiArNDkyLDE0IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6
cHJvY2Vzc04KICAgICAgICAgU3RyaW5nIHR5cGUgPSBJU09Cb3g6OnBlZWtUeXBlKGJ1ZmZlci5n
ZXQoKSk7CiAgICAgICAgIHNpemVfdCBib3hMZW5ndGggPSBJU09Cb3g6OnBlZWtMZW5ndGgoYnVm
ZmVyLmdldCgpKTsKICAgICAgICAgaWYgKGJveExlbmd0aCA+IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgp
KSB7Ci0gICAgICAgICAgICBMT0coTWVkaWEsICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpw
cm9jZXNzTmF0aXZlU2FtcGxlcyglcCkgLSBFUlJPUjogY2h1bmsgJyVzJyBzaXplICglenUpIGxh
cmdlciB0aGFuIGJ1ZmZlciBsZW5ndGggKCV1KSEhIiwgdGhpcywgdHlwZS51dGY4KCkuZGF0YSgp
LCBib3hMZW5ndGgsIGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgICAgIEVSUk9SX0xP
RyhMT0dJREVOVElGSUVSLCAiY2h1bmsgIHR5cGUgPSAnIiwgdHlwZSwgIicsIHNpemUgPSAiLCBi
b3hMZW5ndGgsICIgbGFyZ2VyIHRoYW4gYnVmZmVyIGxlbmd0aCEiKTsKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgTE9HKE1lZGlhLCAiSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRjo6cHJvY2Vzc05hdGl2ZVNhbXBsZXMoJXApIC0gY2h1bmsgdHlwZSA9ICclcycs
IHNpemUgPSAlenUiLCB0aGlzLCB0eXBlLnV0ZjgoKS5kYXRhKCksIGJveExlbmd0aCk7Ci0KLSAg
ICAgICAgaWYgKHR5cGUgPT0gSVNPV2ViVlRUQ3VlOjpib3hUeXBlKCkpIHsKLSAgICAgICAgICAg
IElTT1dlYlZUVEN1ZSBjdWVEYXRhID0gSVNPV2ViVlRUQ3VlKHByZXNlbnRhdGlvblRpbWUsIGR1
cmF0aW9uLCBidWZmZXIuZ2V0KCkpOwotICAgICAgICAgICAgTE9HKE1lZGlhLCAiICAgIHNhbXBs
ZSBwcmVzZW50YXRpb24gdGltZSA9ICUuMmYsIGR1cmF0aW9uID0gJS4yZiIsIGN1ZURhdGEucHJl
c2VudGF0aW9uVGltZSgpLnRvRG91YmxlKCksIGN1ZURhdGEuZHVyYXRpb24oKS50b0RvdWJsZSgp
KTsKLSAgICAgICAgICAgIExPRyhNZWRpYSwgIiAgICBpZCA9IFwiJXNcIiwgc2V0dGluZ3MgPSBc
IiVzXCIsIGN1ZSB0ZXh0ID0gXCIlc1wiIiwgY3VlRGF0YS5pZCgpLnV0ZjgoKS5kYXRhKCksIGN1
ZURhdGEuc2V0dGluZ3MoKS51dGY4KCkuZGF0YSgpLCBjdWVEYXRhLmN1ZVRleHQoKS51dGY4KCku
ZGF0YSgpKTsKLSAgICAgICAgICAgIExPRyhNZWRpYSwgIiAgICBzb3VyY2VJRCA9IFwiJXNcIiwg
b3JpZ2luYWxTdGFydFRpbWUgPSBcIiVzXCIiLCBjdWVEYXRhLnNvdXJjZUlEKCkudXRmOCgpLmRh
dGEoKSwgY3VlRGF0YS5vcmlnaW5hbFN0YXJ0VGltZSgpLnV0ZjgoKS5kYXRhKCkpOwotCi0gICAg
ICAgICAgICBjbGllbnQoKS0+cGFyc2VXZWJWVFRDdWVEYXRhKGN1ZURhdGEpOwotICAgICAgICB9
CisgICAgICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAiY2h1bmsgIHR5cGUgPSAnIiwgdHlw
ZSwgIicsIHNpemUgPSAiLCBib3hMZW5ndGgpOwogCiAgICAgICAgIGRvIHsKLSAgICAgICAgICAg
IGlmIChtX2hhdmVSZXBvcnRlZFZUVEhlYWRlcikKLSAgICAgICAgICAgICAgICBicmVhazsKLQot
ICAgICAgICAgICAgaWYgKCFmb3JtYXREZXNjcmlwdGlvbikKKyAgICAgICAgICAgIGlmIChtX2hh
dmVSZXBvcnRlZFZUVEhlYWRlciB8fCAhZm9ybWF0RGVzY3JpcHRpb24pCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAKICAgICAgICAgICAgIENGRGljdGlvbmFyeVJlZiBleHRlbnNpb25zID0gQ01G
b3JtYXREZXNjcmlwdGlvbkdldEV4dGVuc2lvbnMoZm9ybWF0RGVzY3JpcHRpb24pOwpAQCAtNTM0
LDExICs1MjQsMTcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzTgog
ICAgICAgICAgICAgaGVhZGVyLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVk
IGNoYXIqPihDRkRhdGFHZXRCeXRlUHRyKHdlYnZ0dEhlYWRlckRhdGEpKSwgbGVuZ3RoKTsKICAg
ICAgICAgICAgIGhlYWRlci5hcHBlbmQoIlxuXG4iKTsKIAotICAgICAgICAgICAgTE9HKE1lZGlh
LCAiICAgIHZ0dCBoZWFkZXIgPSBcbiVzIiwgaGVhZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgIlZUVCBoZWFkZXIgPSAi
LCAmaGVhZGVyKTsKICAgICAgICAgICAgIGNsaWVudCgpLT5wYXJzZVdlYlZUVEZpbGVIZWFkZXIo
aGVhZGVyLnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgbV9oYXZlUmVwb3J0ZWRWVFRIZWFkZXIg
PSB0cnVlOwogICAgICAgICB9IHdoaWxlICgwKTsKIAorICAgICAgICBpZiAodHlwZSA9PSBJU09X
ZWJWVFRDdWU6OmJveFR5cGUoKSkgeworICAgICAgICAgICAgSVNPV2ViVlRUQ3VlIGN1ZURhdGEg
PSBJU09XZWJWVFRDdWUocHJlc2VudGF0aW9uVGltZSwgZHVyYXRpb24sIGJ1ZmZlci5nZXQoKSk7
CisgICAgICAgICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgInNhbXBsZSBwcmVzZW50YXRp
b24gdGltZSA9ICIsIGN1ZURhdGEucHJlc2VudGF0aW9uVGltZSgpLCAiLCBkdXJhdGlvbiA9ICIs
IGN1ZURhdGEuZHVyYXRpb24oKSwgIiwgaWQgPSAnIiwgY3VlRGF0YS5pZCgpLCAiJywgc2V0dGlu
Z3MgPSAiLCBjdWVEYXRhLnNldHRpbmdzKCksICIsIGN1ZSB0ZXh0ID0gIiwgY3VlRGF0YS5jdWVU
ZXh0KCksICIsIHNvdXJjZUlEID0gIiwgY3VlRGF0YS5zb3VyY2VJRCgpLCAiLCBvcmlnaW5hbFN0
YXJ0VGltZSA9ICIsIGN1ZURhdGEub3JpZ2luYWxTdGFydFRpbWUoKSk7CisgICAgICAgICAgICBj
bGllbnQoKS0+cGFyc2VXZWJWVFRDdWVEYXRhKGN1ZURhdGEpOworICAgICAgICB9CisKICAgICAg
ICAgbV9zYW1wbGVJbnB1dEJ1ZmZlci5yZW1vdmUoMCwgYm94TGVuZ3RoKTsKICAgICB9CiB9CkBA
IC01NTUsNyArNTUxLDcgQEAgYm9vbCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpyZWFkTmF0
aQogICAgIENNU2FtcGxlVGltaW5nSW5mbyB0aW1pbmdJbmZvOwogICAgIE9TU3RhdHVzIHN0YXR1
cyA9IENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlVGltaW5nSW5mbyhzYW1wbGVCdWZmZXIsIGluZGV4
LCAmdGltaW5nSW5mbyk7CiAgICAgaWYgKHN0YXR1cykgewotICAgICAgICBMT0coTWVkaWEsICJJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpyZWFkTmF0aXZlU2FtcGxlQnVmZmVyKCVwKSAtIENN
U2FtcGxlQnVmZmVyR2V0U2FtcGxlVGltaW5nSW5mbyByZXR1cm5lZCBlcnJvciAleCBmb3Igc2Ft
cGxlICVsaSIsIHRoaXMsIHN0YXRpY19jYXN0PGludD4oc3RhdHVzKSwgaW5kZXgpOworICAgICAg
ICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIkNNU2FtcGxlQnVmZmVyR2V0U2FtcGxlVGltaW5n
SW5mbyByZXR1cm5lZCBlcnJvciAiLCBzdGF0dXMsICInIGZvciBzYW1wbGUgIiwgaW5kZXgpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC01NjQsNyArNTYwLDcgQEAgYm9vbCBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpyZWFkTmF0aQogICAgIENNQmxvY2tCdWZmZXJSZWYg
YmxvY2tCdWZmZXIgPSBDTVNhbXBsZUJ1ZmZlckdldERhdGFCdWZmZXIoc2FtcGxlQnVmZmVyKTsK
ICAgICBzaXplX3QgYnVmZmVyTGVuZ3RoID0gQ01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgoYmxv
Y2tCdWZmZXIpOwogICAgIGlmIChidWZmZXJMZW5ndGggPCBJU09Cb3g6OmJveEhlYWRlclNpemUo
KSkgewotICAgICAgICBMT0coTWVkaWEsICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpyZWFk
TmF0aXZlU2FtcGxlQnVmZmVyKCVwKSAtIEVSUk9SOiBDTVNhbXBsZUJ1ZmZlciBzaXplIGxlbmd0
aCB1bmV4cGVjdGVkbHkgc21hbGwgKCV6dSkhISIsIHRoaXMsIGJ1ZmZlckxlbmd0aCk7CisgICAg
ICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiQ01TYW1wbGVCdWZmZXIgc2l6ZSBsZW5ndGgg
dW5leHBlY3RlZGx5IHNtYWxsOiAiLCBidWZmZXJMZW5ndGgpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGLmgJKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgJKHdvcmtp
bmcgY29weSkKQEAgLTg2LDYgKzg2LDExIEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHByb2Nlc3NO
YXRpdmVTYW1wbGVzKENGQXJyYXlSZWYsIGNvbnN0IE1lZGlhVGltZSYpOwogICAgIHZvaWQgcmVt
b3ZlQ29tcGxldGVkQ3VlcygpOwogCitwcml2YXRlOgorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGIjsgfQorI2VuZGlmCisKICAgICBNZWRpYVRpbWUgbV9j
dXJyZW50Q3VlU3RhcnRUaW1lOwogICAgIE1lZGlhVGltZSBtX2N1cnJlbnRDdWVFbmRUaW1lOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHJldmlzaW9uIDIyMjAwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzMzksNiArMzMz
OSw3IEBAIC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRoIG8KIAogICAgIGJv
b2wgd2lsbENoYW5nZSA9IFtbY2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VOb3Rp
ZmljYXRpb25Jc1ByaW9yS2V5XSBib29sVmFsdWVdOwogICAgIGJvb2wgc2hvdWxkTG9nVmFsdWUg
PSB0cnVlOworICAgIGJvb2wgc2hvdWxkTG9nID0gdHJ1ZTsKICAgICBXVEY6OkZ1bmN0aW9uPHZv
aWQgKCk+IGZ1bmN0aW9uOwogCiAgICAgaWYgKGNvbnRleHQgPT0gTWVkaWFQbGF5ZXJBVkZvdW5k
YXRpb25PYnNlcnZhdGlvbkNvbnRleHRBVlBsYXllckxheWVyKSB7CkBAIC0zMzc1LDEwICszMzc2
LDEwIEBAIC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRoIG8KICAgICAgICAg
ICAgIHNob3VsZExvZ1ZhbHVlID0gZmFsc2U7CiAgICAgICAgIH0gZWxzZSBpZiAoW2tleVBhdGgg
aXNFcXVhbFRvU3RyaW5nOkAibG9hZGVkVGltZVJhbmdlcyJdKSB7CiAgICAgICAgICAgICBmdW5j
dGlvbiA9IHN0ZDo6YmluZCgmTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bG9h
ZGVkVGltZVJhbmdlc0RpZENoYW5nZSwgbV9jYWxsYmFjaywgUmV0YWluUHRyPE5TQXJyYXk+KG5l
d1ZhbHVlKSk7Ci0gICAgICAgICAgICBzaG91bGRMb2dWYWx1ZSA9IGZhbHNlOworICAgICAgICAg
ICAgc2hvdWxkTG9nID0gZmFsc2U7CiAgICAgICAgIH0gZWxzZSBpZiAoW2tleVBhdGggaXNFcXVh
bFRvU3RyaW5nOkAic2Vla2FibGVUaW1lUmFuZ2VzIl0pIHsKICAgICAgICAgICAgIGZ1bmN0aW9u
ID0gc3RkOjpiaW5kKCZNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZWVrYWJs
ZVRpbWVSYW5nZXNEaWRDaGFuZ2UsIG1fY2FsbGJhY2ssIFJldGFpblB0cjxOU0FycmF5PihuZXdW
YWx1ZSkpOwotICAgICAgICAgICAgc2hvdWxkTG9nVmFsdWUgPSBmYWxzZTsKKyAgICAgICAgICAg
IHNob3VsZExvZyA9IGZhbHNlOwogICAgICAgICB9IGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxU
b1N0cmluZzpAInRyYWNrcyJdKSB7CiAgICAgICAgICAgICBmdW5jdGlvbiA9IHN0ZDo6YmluZCgm
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dHJhY2tzRGlkQ2hhbmdlLCBtX2Nh
bGxiYWNrLCBSZXRhaW5QdHI8TlNBcnJheT4obmV3VmFsdWUpKTsKICAgICAgICAgICAgIHNob3Vs
ZExvZ1ZhbHVlID0gZmFsc2U7CkBAIC0zNDE2LDcgKzM0MTcsNyBAQCAtICh2b2lkKW9ic2VydmVW
YWx1ZUZvcktleVBhdGg6a2V5UGF0aCBvCiAgICAgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECi0gICAgaWYgKG1fY2FsbGJhY2stPmxvZ2dlcigpLndpbGxMb2cobV9jYWxsYmFjay0+bG9n
Q2hhbm5lbCgpLCBXVEZMb2dMZXZlbERlYnVnKSkgeworICAgIGlmIChzaG91bGRMb2cgJiYgbV9j
YWxsYmFjay0+bG9nZ2VyKCkud2lsbExvZyhtX2NhbGxiYWNrLT5sb2dDaGFubmVsKCksIFdURkxv
Z0xldmVsRGVidWcpKSB7CiAKICAgICAgICAgaWYgKHdpbGxDaGFuZ2UpCiAgICAgICAgICAgICBt
X2NhbGxiYWNrLT5sb2dnZXIoKS5kZWJ1ZyhtX2NhbGxiYWNrLT5sb2dDaGFubmVsKCksIFBBTDo6
TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcigiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
IiwgIm9ic2VydmVWYWx1ZUZvcktleVBhdGgiLCBtX2NhbGxiYWNrLT5sb2dJZGVudGlmaWVyKCkp
LCAid2lsbCBjaGFuZ2UgJyIsIFtrZXlQYXRoIFVURjhTdHJpbmddLCAiJyIpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTdHJlYW1Db2NvYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAJKHJl
dmlzaW9uIDIyMjAwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCiAjaW5jbHVkZSAiQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUg
PHBhbC9Mb2dnZXIuaD4KIAogI2luY2x1ZGUgIkNvcmVNZWRpYVNvZnRMaW5rLmgiCiAKQEAgLTEx
NCwxMyArMTE1LDEzIEBAIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2UgQXVkaW9UcmFja1ByaXZhdGUK
ICAgICBBdWRpb0NvbXBvbmVudCBpb0NvbXBvbmVudCA9IEF1ZGlvQ29tcG9uZW50RmluZE5leHQo
bnVsbHB0ciwgJmlvVW5pdERlc2NyaXB0aW9uKTsKICAgICBBU1NFUlQoaW9Db21wb25lbnQpOwog
ICAgIGlmICghaW9Db21wb25lbnQpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbUNvY29hOjpjcmVhdGVBdWRpb1VuaXQoJXApIHVuYWJsZSB0byBmaW5k
IHJlbW90ZSBJTyB1bml0IGNvbXBvbmVudCIsIHRoaXMpOworICAgICAgICBFUlJPUl9MT0coTE9H
SURFTlRJRklFUiwgInVuYWJsZSB0byBmaW5kIHJlbW90ZSBJTyB1bml0IGNvbXBvbmVudCIpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBPU1N0YXR1cyBlcnIgPSBBdWRp
b0NvbXBvbmVudEluc3RhbmNlTmV3KGlvQ29tcG9uZW50LCAmcmVtb3RlSU9Vbml0KTsKICAgICBp
ZiAoZXJyKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJl
YW1Db2NvYTo6Y3JlYXRlQXVkaW9Vbml0KCVwKSB1bmFibGUgdG8gb3BlbiB2cGlvIHVuaXQsIGVy
cm9yICVkICglLjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CisgICAgICAgIEVS
Uk9SX0xPRyhMT0dJREVOVElGSUVSLCAidW5hYmxlIHRvIG9wZW4gdnBpbyB1bml0LCBlcnJvciA9
ICIsIGVyciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZlcnIsICIpIik7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIApAQCAtMTI4LDcgKzEyOSw3IEBAIEF1ZGlvQ29tcG9uZW50SW5zdGFu
Y2UgQXVkaW9UcmFja1ByaXZhdGUKICAgICBVSW50MzIgcGFyYW0gPSAxOwogICAgIGVyciA9IEF1
ZGlvVW5pdFNldFByb3BlcnR5KHJlbW90ZUlPVW5pdCwga0F1ZGlvT3V0cHV0VW5pdFByb3BlcnR5
X0VuYWJsZUlPLCBrQXVkaW9Vbml0U2NvcGVfT3V0cHV0LCAwLCAmcGFyYW0sIHNpemVvZihwYXJh
bSkpOwogICAgIGlmIChlcnIpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbUNvY29hOjpjcmVhdGVBdWRpb1VuaXQoJXApIHVuYWJsZSB0byBlbmFibGUg
dnBpbyB1bml0IG91dHB1dCwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFy
KikmZXJyKTsKKyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJ1bmFibGUgdG8gZW5h
YmxlIHZwaW8gdW5pdCBvdXRwdXQsIGVycm9yID0gIiwgZXJyLCAiICgiLCAoY29uc3QgY2hhciop
JmVyciwgIikiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogI2VuZGlmCkBAIC0x
MzYsMTQgKzEzNywxNCBAQCBBdWRpb0NvbXBvbmVudEluc3RhbmNlIEF1ZGlvVHJhY2tQcml2YXRl
CiAgICAgQVVSZW5kZXJDYWxsYmFja1N0cnVjdCBjYWxsYmFjayA9IHsgaW5wdXRQcm9jLCB0aGlz
IH07CiAgICAgZXJyID0gQXVkaW9Vbml0U2V0UHJvcGVydHkocmVtb3RlSU9Vbml0LCBrQXVkaW9V
bml0UHJvcGVydHlfU2V0UmVuZGVyQ2FsbGJhY2ssIGtBdWRpb1VuaXRTY29wZV9HbG9iYWwsIDAs
ICZjYWxsYmFjaywgc2l6ZW9mKGNhbGxiYWNrKSk7CiAgICAgaWYgKGVycikgewotICAgICAgICBM
T0coTWVkaWEsICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OmNyZWF0ZUF1ZGlv
VW5pdCglcCkgdW5hYmxlIHRvIHNldCB2cGlvIHVuaXQgc3BlYWtlciBwcm9jLCBlcnJvciAlZCAo
JS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOworICAgICAgICBFUlJPUl9MT0co
TE9HSURFTlRJRklFUiwgInVuYWJsZSB0byBzZXQgdnBpbyB1bml0IHNwZWFrZXIgcHJvYywgZXJy
b3IgPSAiLCBlcnIsICIgKCIsIChjb25zdCBjaGFyKikmZXJyLCAiKSIpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBVSW50MzIgc2l6ZSA9IHNpemVvZihvdXRwdXREZXNj
cmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpKTsKICAgICBlcnIgID0gQXVkaW9Vbml0R2V0UHJv
cGVydHkocmVtb3RlSU9Vbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVk
aW9Vbml0U2NvcGVfSW5wdXQsIDAsICZvdXRwdXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlv
bigpLCAmc2l6ZSk7CiAgICAgaWYgKGVycikgewotICAgICAgICBMT0coTWVkaWEsICJBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OmNyZWF0ZUF1ZGlvVW5pdHMoJXApIHVuYWJsZSB0
byBnZXQgaW5wdXQgc3RyZWFtIGZvcm1hdCwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCll
cnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJ1bmFi
bGUgdG8gZ2V0IGlucHV0IHN0cmVhbSBmb3JtYXQsIGVycm9yID0gIiwgZXJyLCAiICgiLCAoY29u
c3QgY2hhciopJmVyciwgIikiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBA
IC0xNTEsMTMgKzE1MiwxMyBAQCBBdWRpb0NvbXBvbmVudEluc3RhbmNlIEF1ZGlvVHJhY2tQcml2
YXRlCiAKICAgICBlcnIgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShyZW1vdGVJT1VuaXQsIGtBdWRp
b1VuaXRQcm9wZXJ0eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29wZV9JbnB1dCwgMCwgJm91
dHB1dERlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0aW9uKCksIHNpemVvZihvdXRwdXREZXNjcmlw
dGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpKSk7CiAgICAgaWYgKGVycikgewotICAgICAgICBMT0co
TWVkaWEsICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OmNyZWF0ZUF1ZGlvVW5p
dHMoJXApIHVuYWJsZSB0byBzZXQgaW5wdXQgc3RyZWFtIGZvcm1hdCwgZXJyb3IgJWQgKCUuNHMp
IiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgRVJST1JfTE9HKExPR0lE
RU5USUZJRVIsICJ1bmFibGUgdG8gc2V0IGlucHV0IHN0cmVhbSBmb3JtYXQsIGVycm9yID0gIiwg
ZXJyLCAiICgiLCAoY29uc3QgY2hhciopJmVyciwgIikiKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCiAgICAgZXJyID0gQXVkaW9Vbml0SW5pdGlhbGl6ZShyZW1vdGVJT1VuaXQp
OwogICAgIGlmIChlcnIpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbUNvY29hOjpjcmVhdGVBdWRpb1VuaXRzKCVwKSBBdWRpb1VuaXRJbml0aWFsaXpl
KCkgZmFpbGVkLCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIp
OworICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIkF1ZGlvVW5pdEluaXRpYWxpemUo
KSBmYWlsZWQsIGVycm9yID0gIiwgZXJyLCAiICgiLCAoY29uc3QgY2hhciopJmVyciwgIikiKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29h
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oCShyZXZpc2lvbiAyMjIwMDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbUNvY29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDExIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCB6ZXJvQnVmZmVyTGlzdChBdWRpb0J1ZmZlckxpc3QmLCBzaXplX3Qp
OwogICAgIHZvaWQgcGxheUludGVybmFsKCk7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
KyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hIjsgfQorI2VuZGlmCisKKwogICAgIEF1ZGlv
Q29tcG9uZW50SW5zdGFuY2UgbV9yZW1vdGVJT1VuaXQgeyBudWxscHRyIH07CiAgICAgc3RkOjp1
bmlxdWVfcHRyPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4gbV9pbnB1dERlc2NyaXB0aW9uOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1fb3V0cHV0RGVz
Y3JpcHRpb247Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>